l-n-s
8 years ago
commit
a0c7248b68
18 changed files with 1795 additions and 0 deletions
@ -0,0 +1,60 @@ |
|||||||
|
i2pd |
||||||
|
==== |
||||||
|
|
||||||
|
i2pd (I2P Daemon) это полнофункциональная реализация I2P клиента на языке C++. |
||||||
|
|
||||||
|
I2P (Невидимый Интернет Протокол) это универсальный анонимный сетевой |
||||||
|
уровень. Все соединения через I2P анонимны и используют сквозное (end-to-end) |
||||||
|
шифрование, участники не раскрывают свои настоящие IP адреса. |
||||||
|
|
||||||
|
I2P клиент это программа для построения и использования анонимных I2P |
||||||
|
сетей. Подобные сети обычно используются для анонимных peer-to-peer приложений |
||||||
|
(файлообмен, криптовалюты) и для анонимных клиент-серверных приложений |
||||||
|
(вебсайты, мессенджеры, чат-серверы). |
||||||
|
|
||||||
|
I2P позволяет людям со всего мира общаться и делиться информацией без |
||||||
|
ограничений. |
||||||
|
|
||||||
|
* [Сайт](http://i2pd.website) |
||||||
|
* [Документация](https://i2pd.readthedocs.io/ru/latest/) |
||||||
|
* [Вики](https://github.com/PurpleI2P/i2pd/wiki) |
||||||
|
* [Багтрекер](https://github.com/PurpleI2P/i2pd/issues) |
||||||
|
* [Спецификация](https://geti2p.net/spec) |
||||||
|
* [Twitter](https://twitter.com/hashtag/i2pd) |
||||||
|
|
||||||
|
Установка |
||||||
|
--------- |
||||||
|
|
||||||
|
Самый простой способ установить i2pd это использование |
||||||
|
[бинарных файлов](https://github.com/PurpleI2P/i2pd/releases/latest). |
||||||
|
Инструкции по сборке из исходников для вашей ОС смотрите |
||||||
|
в [документации](https://i2pd.readthedocs.io/en/latest/) |
||||||
|
|
||||||
|
**Поддерживаемые системы:** |
||||||
|
|
||||||
|
* Linux x86/x64 - [![Build Status](https://travis-ci.org/PurpleI2P/i2pd.svg?branch=openssl)](https://travis-ci.org/PurpleI2P/i2pd) |
||||||
|
* Windows - [![Build status](https://ci.appveyor.com/api/projects/status/1908qe4p48ff1x23?svg=true)](https://ci.appveyor.com/project/PurpleI2P/i2pd) |
||||||
|
* Mac OS X |
||||||
|
* FreeBSD |
||||||
|
* Android |
||||||
|
|
||||||
|
Использование |
||||||
|
------------- |
||||||
|
|
||||||
|
Смотрите в [документацию](https://i2pd.readthedocs.io/en/latest/) и |
||||||
|
[документированный конфигурационный файл](https://github.com/PurpleI2P/i2pd/blob/openssl/docs/i2pd.conf). |
||||||
|
|
||||||
|
Помощь монетками |
||||||
|
---------------- |
||||||
|
|
||||||
|
BTC: 1K7Ds6KUeR8ya287UC4rYTjvC96vXyZbDY |
||||||
|
DASH: Xw8YUrQpYzP9tZBmbjqxS3M97Q7v3vJKUF |
||||||
|
LTC: LKQirrYrDeTuAPnpYq5y7LVKtywfkkHi59 |
||||||
|
ANC: AQJYweYYUqM1nVfLqfoSMpUMfzxvS4Xd7z |
||||||
|
DOGE: DNXLQKziRPAsD9H3DFNjk4fLQrdaSX893Y |
||||||
|
|
||||||
|
Лицензия |
||||||
|
-------- |
||||||
|
|
||||||
|
Исходный код распространяется под лицензией BSD, полный текст |
||||||
|
лицензии в файле LICENSE. |
@ -0,0 +1,259 @@ |
|||||||
|
DOXYFILE_ENCODING = UTF-8 |
||||||
|
PROJECT_NAME = "i2pd" |
||||||
|
PROJECT_NUMBER = |
||||||
|
PROJECT_BRIEF = "load-balanced unspoofable packet switching network" |
||||||
|
PROJECT_LOGO = |
||||||
|
OUTPUT_DIRECTORY = docs/generated |
||||||
|
CREATE_SUBDIRS = NO |
||||||
|
ALLOW_UNICODE_NAMES = NO |
||||||
|
OUTPUT_LANGUAGE = English |
||||||
|
BRIEF_MEMBER_DESC = YES |
||||||
|
REPEAT_BRIEF = YES |
||||||
|
ABBREVIATE_BRIEF = |
||||||
|
ALWAYS_DETAILED_SEC = NO |
||||||
|
INLINE_INHERITED_MEMB = NO |
||||||
|
FULL_PATH_NAMES = YES |
||||||
|
STRIP_FROM_PATH = |
||||||
|
STRIP_FROM_INC_PATH = |
||||||
|
SHORT_NAMES = NO |
||||||
|
JAVADOC_AUTOBRIEF = NO |
||||||
|
QT_AUTOBRIEF = NO |
||||||
|
MULTILINE_CPP_IS_BRIEF = NO |
||||||
|
INHERIT_DOCS = YES |
||||||
|
SEPARATE_MEMBER_PAGES = NO |
||||||
|
TAB_SIZE = 4 |
||||||
|
ALIASES = |
||||||
|
TCL_SUBST = |
||||||
|
OPTIMIZE_OUTPUT_FOR_C = NO |
||||||
|
OPTIMIZE_OUTPUT_JAVA = NO |
||||||
|
OPTIMIZE_FOR_FORTRAN = NO |
||||||
|
OPTIMIZE_OUTPUT_VHDL = NO |
||||||
|
EXTENSION_MAPPING = |
||||||
|
MARKDOWN_SUPPORT = YES |
||||||
|
AUTOLINK_SUPPORT = YES |
||||||
|
BUILTIN_STL_SUPPORT = NO |
||||||
|
CPP_CLI_SUPPORT = NO |
||||||
|
SIP_SUPPORT = NO |
||||||
|
IDL_PROPERTY_SUPPORT = YES |
||||||
|
DISTRIBUTE_GROUP_DOC = NO |
||||||
|
SUBGROUPING = YES |
||||||
|
INLINE_GROUPED_CLASSES = NO |
||||||
|
INLINE_SIMPLE_STRUCTS = NO |
||||||
|
TYPEDEF_HIDES_STRUCT = NO |
||||||
|
LOOKUP_CACHE_SIZE = 0 |
||||||
|
EXTRACT_ALL = NO |
||||||
|
EXTRACT_PRIVATE = NO |
||||||
|
EXTRACT_PACKAGE = NO |
||||||
|
EXTRACT_STATIC = NO |
||||||
|
EXTRACT_LOCAL_CLASSES = YES |
||||||
|
EXTRACT_LOCAL_METHODS = NO |
||||||
|
EXTRACT_ANON_NSPACES = NO |
||||||
|
HIDE_UNDOC_MEMBERS = NO |
||||||
|
HIDE_UNDOC_CLASSES = NO |
||||||
|
HIDE_FRIEND_COMPOUNDS = NO |
||||||
|
HIDE_IN_BODY_DOCS = NO |
||||||
|
INTERNAL_DOCS = NO |
||||||
|
CASE_SENSE_NAMES = YES |
||||||
|
HIDE_SCOPE_NAMES = NO |
||||||
|
SHOW_INCLUDE_FILES = YES |
||||||
|
SHOW_GROUPED_MEMB_INC = NO |
||||||
|
FORCE_LOCAL_INCLUDES = NO |
||||||
|
INLINE_INFO = YES |
||||||
|
SORT_MEMBER_DOCS = YES |
||||||
|
SORT_BRIEF_DOCS = NO |
||||||
|
SORT_MEMBERS_CTORS_1ST = NO |
||||||
|
SORT_GROUP_NAMES = NO |
||||||
|
SORT_BY_SCOPE_NAME = NO |
||||||
|
STRICT_PROTO_MATCHING = NO |
||||||
|
GENERATE_TODOLIST = YES |
||||||
|
GENERATE_TESTLIST = YES |
||||||
|
GENERATE_BUGLIST = YES |
||||||
|
GENERATE_DEPRECATEDLIST= YES |
||||||
|
ENABLED_SECTIONS = |
||||||
|
MAX_INITIALIZER_LINES = 30 |
||||||
|
SHOW_USED_FILES = YES |
||||||
|
SHOW_FILES = YES |
||||||
|
SHOW_NAMESPACES = YES |
||||||
|
FILE_VERSION_FILTER = |
||||||
|
LAYOUT_FILE = |
||||||
|
CITE_BIB_FILES = |
||||||
|
QUIET = YES |
||||||
|
WARNINGS = YES |
||||||
|
WARN_IF_UNDOCUMENTED = NO |
||||||
|
WARN_IF_DOC_ERROR = YES |
||||||
|
WARN_NO_PARAMDOC = NO |
||||||
|
WARN_FORMAT = "$file:$line: $text" |
||||||
|
WARN_LOGFILE = |
||||||
|
INPUT = |
||||||
|
INPUT_ENCODING = UTF-8 |
||||||
|
FILE_PATTERNS = *.cpp *.h |
||||||
|
RECURSIVE = NO |
||||||
|
EXCLUDE = |
||||||
|
EXCLUDE_SYMLINKS = NO |
||||||
|
EXCLUDE_PATTERNS = |
||||||
|
EXCLUDE_SYMBOLS = |
||||||
|
EXAMPLE_PATH = |
||||||
|
EXAMPLE_PATTERNS = |
||||||
|
EXAMPLE_RECURSIVE = NO |
||||||
|
IMAGE_PATH = |
||||||
|
INPUT_FILTER = |
||||||
|
FILTER_PATTERNS = |
||||||
|
FILTER_SOURCE_FILES = NO |
||||||
|
FILTER_SOURCE_PATTERNS = |
||||||
|
USE_MDFILE_AS_MAINPAGE = |
||||||
|
SOURCE_BROWSER = NO |
||||||
|
INLINE_SOURCES = NO |
||||||
|
STRIP_CODE_COMMENTS = YES |
||||||
|
REFERENCED_BY_RELATION = NO |
||||||
|
REFERENCES_RELATION = NO |
||||||
|
REFERENCES_LINK_SOURCE = YES |
||||||
|
SOURCE_TOOLTIPS = YES |
||||||
|
USE_HTAGS = NO |
||||||
|
VERBATIM_HEADERS = NO |
||||||
|
CLANG_ASSISTED_PARSING = NO |
||||||
|
CLANG_OPTIONS = |
||||||
|
ALPHABETICAL_INDEX = YES |
||||||
|
COLS_IN_ALPHA_INDEX = 5 |
||||||
|
IGNORE_PREFIX = |
||||||
|
GENERATE_HTML = YES |
||||||
|
HTML_OUTPUT = html |
||||||
|
HTML_FILE_EXTENSION = .html |
||||||
|
HTML_HEADER = |
||||||
|
HTML_FOOTER = |
||||||
|
HTML_STYLESHEET = |
||||||
|
HTML_EXTRA_STYLESHEET = |
||||||
|
HTML_EXTRA_FILES = |
||||||
|
HTML_COLORSTYLE_HUE = 220 |
||||||
|
HTML_COLORSTYLE_SAT = 100 |
||||||
|
HTML_COLORSTYLE_GAMMA = 80 |
||||||
|
HTML_TIMESTAMP = YES |
||||||
|
HTML_DYNAMIC_SECTIONS = NO |
||||||
|
HTML_INDEX_NUM_ENTRIES = 100 |
||||||
|
GENERATE_DOCSET = NO |
||||||
|
DOCSET_FEEDNAME = "Doxygen generated docs" |
||||||
|
DOCSET_BUNDLE_ID = org.doxygen.Project |
||||||
|
DOCSET_PUBLISHER_ID = org.doxygen.Publisher |
||||||
|
DOCSET_PUBLISHER_NAME = Publisher |
||||||
|
GENERATE_HTMLHELP = NO |
||||||
|
CHM_FILE = |
||||||
|
HHC_LOCATION = |
||||||
|
GENERATE_CHI = NO |
||||||
|
CHM_INDEX_ENCODING = |
||||||
|
BINARY_TOC = NO |
||||||
|
TOC_EXPAND = NO |
||||||
|
GENERATE_QHP = NO |
||||||
|
QCH_FILE = |
||||||
|
QHP_NAMESPACE = org.doxygen.Project |
||||||
|
QHP_VIRTUAL_FOLDER = doc |
||||||
|
QHP_CUST_FILTER_NAME = |
||||||
|
QHP_CUST_FILTER_ATTRS = |
||||||
|
QHP_SECT_FILTER_ATTRS = |
||||||
|
QHG_LOCATION = |
||||||
|
GENERATE_ECLIPSEHELP = NO |
||||||
|
ECLIPSE_DOC_ID = org.doxygen.Project |
||||||
|
DISABLE_INDEX = NO |
||||||
|
GENERATE_TREEVIEW = NO |
||||||
|
ENUM_VALUES_PER_LINE = 4 |
||||||
|
TREEVIEW_WIDTH = 250 |
||||||
|
EXT_LINKS_IN_WINDOW = NO |
||||||
|
FORMULA_FONTSIZE = 10 |
||||||
|
FORMULA_TRANSPARENT = YES |
||||||
|
USE_MATHJAX = NO |
||||||
|
MATHJAX_FORMAT = HTML-CSS |
||||||
|
MATHJAX_RELPATH = http://cdn.mathjax.org/mathjax/latest |
||||||
|
MATHJAX_EXTENSIONS = |
||||||
|
MATHJAX_CODEFILE = |
||||||
|
SEARCHENGINE = YES |
||||||
|
SERVER_BASED_SEARCH = NO |
||||||
|
EXTERNAL_SEARCH = NO |
||||||
|
SEARCHENGINE_URL = |
||||||
|
SEARCHDATA_FILE = searchdata.xml |
||||||
|
EXTERNAL_SEARCH_ID = |
||||||
|
EXTRA_SEARCH_MAPPINGS = |
||||||
|
GENERATE_LATEX = NO |
||||||
|
LATEX_OUTPUT = latex |
||||||
|
LATEX_CMD_NAME = latex |
||||||
|
MAKEINDEX_CMD_NAME = makeindex |
||||||
|
COMPACT_LATEX = NO |
||||||
|
PAPER_TYPE = a4 |
||||||
|
EXTRA_PACKAGES = |
||||||
|
LATEX_HEADER = |
||||||
|
LATEX_FOOTER = |
||||||
|
LATEX_EXTRA_FILES = |
||||||
|
PDF_HYPERLINKS = YES |
||||||
|
USE_PDFLATEX = YES |
||||||
|
LATEX_BATCHMODE = NO |
||||||
|
LATEX_HIDE_INDICES = NO |
||||||
|
LATEX_SOURCE_CODE = NO |
||||||
|
LATEX_BIB_STYLE = plain |
||||||
|
GENERATE_RTF = NO |
||||||
|
RTF_OUTPUT = rtf |
||||||
|
COMPACT_RTF = NO |
||||||
|
RTF_HYPERLINKS = NO |
||||||
|
RTF_STYLESHEET_FILE = |
||||||
|
RTF_EXTENSIONS_FILE = |
||||||
|
GENERATE_MAN = NO |
||||||
|
MAN_OUTPUT = man |
||||||
|
MAN_EXTENSION = .3 |
||||||
|
MAN_SUBDIR = |
||||||
|
MAN_LINKS = NO |
||||||
|
GENERATE_XML = NO |
||||||
|
XML_OUTPUT = xml |
||||||
|
XML_PROGRAMLISTING = YES |
||||||
|
GENERATE_DOCBOOK = NO |
||||||
|
DOCBOOK_OUTPUT = docbook |
||||||
|
DOCBOOK_PROGRAMLISTING = NO |
||||||
|
GENERATE_AUTOGEN_DEF = NO |
||||||
|
GENERATE_PERLMOD = NO |
||||||
|
PERLMOD_LATEX = NO |
||||||
|
PERLMOD_PRETTY = YES |
||||||
|
PERLMOD_MAKEVAR_PREFIX = |
||||||
|
ENABLE_PREPROCESSING = YES |
||||||
|
MACRO_EXPANSION = NO |
||||||
|
EXPAND_ONLY_PREDEF = NO |
||||||
|
SEARCH_INCLUDES = YES |
||||||
|
INCLUDE_PATH = |
||||||
|
INCLUDE_FILE_PATTERNS = |
||||||
|
PREDEFINED = |
||||||
|
EXPAND_AS_DEFINED = |
||||||
|
SKIP_FUNCTION_MACROS = YES |
||||||
|
TAGFILES = |
||||||
|
GENERATE_TAGFILE = |
||||||
|
ALLEXTERNALS = NO |
||||||
|
EXTERNAL_GROUPS = YES |
||||||
|
EXTERNAL_PAGES = YES |
||||||
|
PERL_PATH = /usr/bin/perl |
||||||
|
CLASS_DIAGRAMS = YES |
||||||
|
MSCGEN_PATH = |
||||||
|
DIA_PATH = |
||||||
|
HIDE_UNDOC_RELATIONS = YES |
||||||
|
HAVE_DOT = NO |
||||||
|
DOT_NUM_THREADS = 0 |
||||||
|
DOT_FONTNAME = Helvetica |
||||||
|
DOT_FONTSIZE = 10 |
||||||
|
DOT_FONTPATH = |
||||||
|
CLASS_GRAPH = YES |
||||||
|
COLLABORATION_GRAPH = YES |
||||||
|
GROUP_GRAPHS = YES |
||||||
|
UML_LOOK = NO |
||||||
|
UML_LIMIT_NUM_FIELDS = 10 |
||||||
|
TEMPLATE_RELATIONS = NO |
||||||
|
INCLUDE_GRAPH = YES |
||||||
|
INCLUDED_BY_GRAPH = YES |
||||||
|
CALL_GRAPH = NO |
||||||
|
CALLER_GRAPH = NO |
||||||
|
GRAPHICAL_HIERARCHY = YES |
||||||
|
DIRECTORY_GRAPH = YES |
||||||
|
DOT_IMAGE_FORMAT = png |
||||||
|
INTERACTIVE_SVG = NO |
||||||
|
DOT_PATH = |
||||||
|
DOTFILE_DIRS = |
||||||
|
MSCFILE_DIRS = |
||||||
|
DIAFILE_DIRS = |
||||||
|
PLANTUML_JAR_PATH = |
||||||
|
DOT_GRAPH_MAX_NODES = 50 |
||||||
|
MAX_DOT_GRAPH_DEPTH = 0 |
||||||
|
DOT_TRANSPARENT = NO |
||||||
|
DOT_MULTI_TARGETS = NO |
||||||
|
GENERATE_LEGEND = YES |
||||||
|
DOT_CLEANUP = YES |
@ -0,0 +1,57 @@ |
|||||||
|
Сборка для Android |
||||||
|
================== |
||||||
|
|
||||||
|
There are two versions: with QT and without QT. |
||||||
|
|
||||||
|
Pre-requesties |
||||||
|
-------------- |
||||||
|
|
||||||
|
You need to install Android SDK, NDK and QT with android support. |
||||||
|
|
||||||
|
- [SDK](https://developer.android.com/studio/index.html) (choose command line tools only) |
||||||
|
- [NDK](https://developer.android.com/ndk/downloads/index.html) |
||||||
|
- [QT](https://www.qt.io/download-open-source/)(for QT only). Choose one for your platform for android. For example QT 5.6 under Linux would be [this file](http://download.qt.io/official_releases/qt/5.6/5.6.1-1/qt-opensource-linux-x64-android-5.6.1-1.run ) |
||||||
|
|
||||||
|
You also need Java JDK and Ant. |
||||||
|
|
||||||
|
QT-Creator (for QT only) |
||||||
|
------------------------ |
||||||
|
Open QT-creator that should be installed with QT. |
||||||
|
Go to Settings/Anndroid and specify correct paths to SDK and NDK. |
||||||
|
If everything is correct you will see two set avaiable: |
||||||
|
Android for armeabi-v7a (gcc, qt) and Android for x86 (gcc, qt). |
||||||
|
|
||||||
|
Dependencies |
||||||
|
-------------- |
||||||
|
Take following pre-compiled binaries from PurpleI2P's repositories. |
||||||
|
```bash |
||||||
|
git clone https://github.com/PurpleI2P/Boost-for-Android-Prebuilt.git |
||||||
|
git clone https://github.com/PurpleI2P/OpenSSL-for-Android-Prebuilt.git |
||||||
|
git clone https://github.com/PurpleI2P/MiniUPnP-for-Android-Prebuilt.git |
||||||
|
git clone https://github.com/PurpleI2P/android-ifaddrs.git |
||||||
|
``` |
||||||
|
|
||||||
|
|
||||||
|
Building the app with QT |
||||||
|
------------------------ |
||||||
|
- Open qt/i2pd_qt/i2pd_qt.pro in the QT-creator |
||||||
|
- Change line MAIN_PATH = /path/to/libraries to an actual path where you put the dependancies to |
||||||
|
- Select appropriate project (usually armeabi-v7a) and build |
||||||
|
- You will find an .apk file in android-build/bin folder |
||||||
|
|
||||||
|
Building the app without QT |
||||||
|
--------------------------- |
||||||
|
- Change line I2PD_LIBS_PATH in android/jni/Application.mk to an actual path where you put the dependancies to |
||||||
|
- Run 'ndk-build -j4' from andorid folder |
||||||
|
- Create or edit file 'local.properties'. Place 'sdk.dir=<path to SDK>' and 'ndk.dir=<path to NDK>' |
||||||
|
- Run 'ant clean debug' |
||||||
|
|
||||||
|
Creating release .apk |
||||||
|
---------------------- |
||||||
|
In order to create release .apk you must obtain a Java keystore file(.jks). Either you have in already, or you can generate it yourself using keytool, or from one of you existing well-know ceritificates. For example, i2pd release are signed with this [certificate](https://github.com/PurpleI2P/i2pd/blob/openssl/contrib/certificates/router/orignal_at_mail.i2p.crt). |
||||||
|
Create file 'ant.propeties' |
||||||
|
key.store='path to keystore file' |
||||||
|
key.alias='alias name' |
||||||
|
key.store.password='keystore password' |
||||||
|
key.alias.password='alias password' |
||||||
|
Run 'ant clean release' |
@ -0,0 +1,75 @@ |
|||||||
|
Кросс-компиляция |
||||||
|
================ |
||||||
|
|
||||||
|
Static 64 bit windows binary on Ubuntu 15.10 (Wily Werewolf) |
||||||
|
--------------------------------------------------------------------- |
||||||
|
|
||||||
|
Install cross compiler and friends |
||||||
|
```sh |
||||||
|
sudo apt-get install g++-mingw-w64-x86-64 |
||||||
|
``` |
||||||
|
Default is to use Win32 threading model which lacks std::mutex and such. So we change defaults |
||||||
|
```sh |
||||||
|
sudo update-alternatives --set x86_64-w64-mingw32-g++ /usr/bin/x86_64-w64-mingw32-g++-posix |
||||||
|
``` |
||||||
|
From now on we assume we have everything in `~/dev/`. Get Boost sources unpacked into `~/dev/boost_1_60_0/` |
||||||
|
and change directory to it. |
||||||
|
Now add out cross compiler configuration. Warning: the following will wipe out whatever you had in there. |
||||||
|
```sh |
||||||
|
echo "using gcc : mingw : x86_64-w64-mingw32-g++ ;" > ~/user-config.jam |
||||||
|
``` |
||||||
|
Proceed with building Boost normal way, but let's define dedicated staging directory |
||||||
|
```sh |
||||||
|
./bootstrap.sh |
||||||
|
./b2 toolset=gcc-mingw target-os=windows variant=release link=static runtime-link=static address-model=64 \ |
||||||
|
--build-type=minimal --with-filesystem --with-program_options --with-date_time \ |
||||||
|
--stagedir=stage-mingw-64 |
||||||
|
cd .. |
||||||
|
``` |
||||||
|
Now we get & build OpenSSL |
||||||
|
```sh |
||||||
|
git clone https://github.com/openssl/openssl |
||||||
|
cd openssl |
||||||
|
git checkout OpenSSL_1_0_2g |
||||||
|
./Configure mingw64 no-rc2 no-rc4 no-rc5 no-idea no-bf no-cast no-whirlpool no-md2 no-md4 no-ripemd no-mdc2 \ |
||||||
|
no-camellia no-seed no-comp no-krb5 no-gmp no-rfc3779 no-ec2m no-ssl2 no-jpake no-srp no-sctp no-srtp \ |
||||||
|
--prefix=~/dev/stage --cross-compile-prefix=x86_64-w64-mingw32- |
||||||
|
make depend |
||||||
|
make |
||||||
|
make install |
||||||
|
cd .. |
||||||
|
``` |
||||||
|
and Zlib |
||||||
|
```sh |
||||||
|
git clone https://github.com/madler/zlib |
||||||
|
cd zlib |
||||||
|
git checkout v1.2.8 |
||||||
|
CC=x86_64-w64-mingw32-gcc CFLAGS=-O3 ./configure --static --64 --prefix=~/dev/stage |
||||||
|
make |
||||||
|
make install |
||||||
|
cd .. |
||||||
|
``` |
||||||
|
Now we prepare cross toolchain hint file for CMake, let's name it `~/dev/toolchain-mingw.cmake` |
||||||
|
```cmake |
||||||
|
SET(CMAKE_SYSTEM_NAME Windows) |
||||||
|
SET(CMAKE_C_COMPILER x86_64-w64-mingw32-gcc) |
||||||
|
SET(CMAKE_CXX_COMPILER x86_64-w64-mingw32-g++) |
||||||
|
SET(CMAKE_RC_COMPILER x86_64-w64-mingw32-windres) |
||||||
|
SET(CMAKE_FIND_ROOT_PATH /usr/x86_64-w64-mingw32) |
||||||
|
set(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER) |
||||||
|
``` |
||||||
|
Download miniupnpc, unpack, and symlink it into `~/dev/miniupnpc/`. |
||||||
|
Finally, we can build i2pd with all that goodness |
||||||
|
```sh |
||||||
|
git clone https://github.com/PurpleI2P/i2pd |
||||||
|
mkdir i2pd-mingw-64-build |
||||||
|
cd i2pd-mingw-64-build |
||||||
|
BOOST_ROOT=~/dev/boost_1_60_0 cmake -G 'Unix Makefiles' ~/dev/i2pd/build -DBUILD_TYPE=Release \ |
||||||
|
-DCMAKE_TOOLCHAIN_FILE=~/dev/toolchain-mingw.cmake -DWITH_AESNI=ON -DWITH_UPNP=ON -DWITH_STATIC=ON \ |
||||||
|
-DWITH_HARDENING=ON -DCMAKE_INSTALL_PREFIX:PATH=~/dev/i2pd-mingw-64-static \ |
||||||
|
-DZLIB_ROOT=~/dev/stage -DBOOST_LIBRARYDIR:PATH=~/dev/boost_1_60_0/stage-mingw-64/lib \ |
||||||
|
-DOPENSSL_ROOT_DIR:PATH=~/dev/stage |
||||||
|
make |
||||||
|
x86_64-w64-mingw32-strip i2pd.exe |
||||||
|
``` |
||||||
|
By now, you should have a release build with stripped symbols. |
@ -0,0 +1,85 @@ |
|||||||
|
Сборка для iOS |
||||||
|
============== |
||||||
|
|
||||||
|
How to build i2pd for iOS 9 and iOS Simulator 386/x64 |
||||||
|
|
||||||
|
Prerequisites |
||||||
|
-------------- |
||||||
|
|
||||||
|
XCode7+, cmake 3.2+ |
||||||
|
|
||||||
|
Dependencies |
||||||
|
-------------- |
||||||
|
- precompiled openssl |
||||||
|
- precompiled boost with modules `filesystem`, `program_options`, `date_time` and `system` |
||||||
|
- ios-cmake toolchain from https://github.com/vovasty/ios-cmake.git |
||||||
|
|
||||||
|
Building |
||||||
|
------------------------ |
||||||
|
Assume you have folder structure |
||||||
|
|
||||||
|
``` |
||||||
|
lib |
||||||
|
libboost_date_time.a |
||||||
|
libboost_filesystem.a |
||||||
|
libboost_program_options.a |
||||||
|
libboost_system.a |
||||||
|
libboost.a |
||||||
|
libcrypto.a |
||||||
|
libssl.a |
||||||
|
include |
||||||
|
boost |
||||||
|
openssl |
||||||
|
ios-cmake |
||||||
|
i2pd |
||||||
|
``` |
||||||
|
|
||||||
|
|
||||||
|
```bash |
||||||
|
mkdir -p build/simulator/lib build/ios/lib include/i2pd |
||||||
|
|
||||||
|
pushd build/simulator && \ |
||||||
|
cmake -DIOS_PLATFORM=SIMULATOR \ |
||||||
|
-DPATCH=/usr/bin/patch \ |
||||||
|
-DCMAKE_BUILD_TYPE=Release \ |
||||||
|
-DCMAKE_TOOLCHAIN_FILE=../../ios-cmake/toolchain/iOS.cmake \ |
||||||
|
-DWITH_STATIC=yes \ |
||||||
|
-DWITH_BINARY=no \ |
||||||
|
-DBoost_INCLUDE_DIR=../../include \ |
||||||
|
-DOPENSSL_INCLUDE_DIR=../../include \ |
||||||
|
-DBoost_LIBRARY_DIR=../../lib \ |
||||||
|
-DOPENSSL_SSL_LIBRARY=../../lib/libssl.a \ |
||||||
|
-DOPENSSL_CRYPTO_LIBRARY=../../lib/libcrypto.a \ |
||||||
|
../../i2pd/build && \ |
||||||
|
make -j16 VERBOSE=1 && \ |
||||||
|
popd |
||||||
|
|
||||||
|
pushd build/ios |
||||||
|
cmake -DIOS_PLATFORM=OS \ |
||||||
|
-DPATCH=/usr/bin/patch \ |
||||||
|
-DCMAKE_BUILD_TYPE=Release \ |
||||||
|
-DCMAKE_TOOLCHAIN_FILE=../../ios-cmake/toolchain/iOS.cmake \ |
||||||
|
-DWITH_STATIC=yes \ |
||||||
|
-DWITH_BINARY=no \ |
||||||
|
-DBoost_INCLUDE_DIR=../../include \ |
||||||
|
-DOPENSSL_INCLUDE_DIR=../../include \ |
||||||
|
-DBoost_LIBRARY_DIR=../../lib \ |
||||||
|
-DOPENSSL_SSL_LIBRARY=../../lib/libssl.a \ |
||||||
|
-DOPENSSL_CRYPTO_LIBRARY=../../lib/libcrypto.a \ |
||||||
|
../../i2pd/build && \ |
||||||
|
make -j16 VERBOSE=1 && \ |
||||||
|
popd |
||||||
|
|
||||||
|
libtool -static -o lib/libi2pdclient.a build/*/libi2pdclient.a |
||||||
|
libtool -static -o lib/libi2pd.a build/*/libi2pd.a |
||||||
|
|
||||||
|
cp i2pd/*.h include/i2pd |
||||||
|
``` |
||||||
|
|
||||||
|
Include into project |
||||||
|
--------------------------- |
||||||
|
1. add all libraries in `lib` folder to `Project linked frameworks`. |
||||||
|
2. add `libc++` and `libz` libraries from system libraries to `Project linked frameworks`. |
||||||
|
3. add path to i2p headers to your `Headers search paths` |
||||||
|
|
||||||
|
Alternatively you may use swift wrapper https://github.com/vovasty/SwiftyI2P.git |
@ -0,0 +1,147 @@ |
|||||||
|
Сборка на Unix системах |
||||||
|
======================= |
||||||
|
|
||||||
|
First of all we need to make sure that all dependencies are satisfied. |
||||||
|
|
||||||
|
This doc is trying to cover: |
||||||
|
* [Debian/Ubuntu](#debianubuntu) (contains packaging instructions) |
||||||
|
* [Fedora/Centos](#fedoracentos) |
||||||
|
* [FreeBSD](#freebsd) |
||||||
|
|
||||||
|
Make sure you have all required dependencies for your system successfully installed. |
||||||
|
|
||||||
|
If so then we are ready to go! |
||||||
|
Let's clone the repository and start building the i2pd: |
||||||
|
```bash |
||||||
|
git clone https://github.com/PurpleI2P/i2pd.git |
||||||
|
cd i2pd/build |
||||||
|
cmake -DCMAKE_BUILD_TYPE=Release # more options could be passed, see "CMake Options" |
||||||
|
make # you may add VERBOSE=1 to cmdline for debugging |
||||||
|
``` |
||||||
|
|
||||||
|
After successfull build i2pd could be installed with: |
||||||
|
```bash |
||||||
|
make install |
||||||
|
``` |
||||||
|
or you can just use 'make' once you have all dependencies (boost and openssl) installed |
||||||
|
|
||||||
|
```bash |
||||||
|
git clone https://github.com/PurpleI2P/i2pd.git |
||||||
|
cd i2pd |
||||||
|
make |
||||||
|
``` |
||||||
|
|
||||||
|
Debian/Ubuntu |
||||||
|
------------- |
||||||
|
|
||||||
|
You will need a compiler and other tools that could be installed with `build-essential` package: |
||||||
|
```bash |
||||||
|
sudo apt-get install build-essential |
||||||
|
``` |
||||||
|
|
||||||
|
Also you will need a bunch of development libraries: |
||||||
|
```bash |
||||||
|
sudo apt-get install \ |
||||||
|
libboost-chrono-dev \ |
||||||
|
libboost-date-time-dev \ |
||||||
|
libboost-filesystem-dev \ |
||||||
|
libboost-program-options-dev \ |
||||||
|
libboost-system-dev \ |
||||||
|
libboost-thread-dev \ |
||||||
|
libssl-dev |
||||||
|
``` |
||||||
|
|
||||||
|
If you need UPnP support (don't forget to run CMake with `WITH_UPNP=ON`) miniupnpc development library should be installed: |
||||||
|
```bash |
||||||
|
sudo apt-get install libminiupnpc-dev |
||||||
|
``` |
||||||
|
|
||||||
|
You may also build deb-package with the following: |
||||||
|
```bash |
||||||
|
sudo apt-get install fakeroot devscripts |
||||||
|
cd i2pd |
||||||
|
debuild --no-tgz-check |
||||||
|
``` |
||||||
|
|
||||||
|
Fedora/Centos |
||||||
|
------------- |
||||||
|
|
||||||
|
You will need a compiler and other tools to perform a build: |
||||||
|
```bash |
||||||
|
sudo yum install make cmake gcc gcc-c++ |
||||||
|
``` |
||||||
|
|
||||||
|
*Latest Fedora system using [DNF](https://en.wikipedia.org/wiki/DNF_(software)) instead of YUM by default, you may prefer to use DNF, but YUM should be ok* |
||||||
|
|
||||||
|
> *Centos 7 has CMake 2.8.11 in the official repositories that too old to build i2pd, CMake >=2.8.12 is required* |
||||||
|
> You could build CMake for Centos manualy(WARNING there are a lot of build dependencies!): |
||||||
|
> ```bash |
||||||
|
> wget https://kojipkgs.fedoraproject.org/packages/cmake/2.8.12/3.fc21/src/cmake-2.8.12-3.fc21.src.rpm |
||||||
|
> yum-builddep cmake-2.8.12-3.fc21.src.rpm |
||||||
|
> rpmbuild --rebuild cmake-2.8.12-3.fc21.src.rpm |
||||||
|
> yum install ~/rpmbuild/RPMS/x86_64/cmake-2.8.12-3.el7.centos.x86_64.rpm |
||||||
|
> ``` |
||||||
|
|
||||||
|
Also you will need a bunch of development libraries |
||||||
|
```bash |
||||||
|
sudo yum install boost-devel openssl-devel |
||||||
|
``` |
||||||
|
|
||||||
|
If you need UPnP support (don't forget to run CMake with `WITH_UPNP=ON`) miniupnpc development library should be installed: |
||||||
|
```bash |
||||||
|
miniupnpc-devel |
||||||
|
``` |
||||||
|
|
||||||
|
MAC OS X |
||||||
|
-------- |
||||||
|
|
||||||
|
Requires homebrew |
||||||
|
|
||||||
|
```bash |
||||||
|
brew install libressl boost |
||||||
|
``` |
||||||
|
|
||||||
|
Then build: |
||||||
|
```bash |
||||||
|
make HOMEBREW=1 |
||||||
|
``` |
||||||
|
|
||||||
|
|
||||||
|
FreeBSD |
||||||
|
------- |
||||||
|
|
||||||
|
For 10.X use clang. You would also need boost and openssl ports. |
||||||
|
Type gmake, it invokes Makefile.bsd, make necessary changes there is required. |
||||||
|
|
||||||
|
Branch 9.X has gcc v4.2, that knows nothing about required c++11 standart. |
||||||
|
|
||||||
|
Required ports: |
||||||
|
|
||||||
|
* `devel/cmake` |
||||||
|
* `devel/boost-libs` |
||||||
|
* `lang/gcc47`(or later version) |
||||||
|
|
||||||
|
To use newer compiler you should set these variables(replace "47" with your actual gcc version): |
||||||
|
```bash |
||||||
|
export CC=/usr/local/bin/gcc47 |
||||||
|
export CXX=/usr/local/bin/g++47 |
||||||
|
``` |
||||||
|
|
||||||
|
CMake Options |
||||||
|
------------- |
||||||
|
|
||||||
|
Available CMake options(each option has a form of `<key>=<value>`, for more information see `man 1 cmake`): |
||||||
|
|
||||||
|
* `CMAKE_BUILD_TYPE` build profile (Debug/Release) |
||||||
|
* `WITH_BINARY` build i2pd itself |
||||||
|
* `WITH_LIBRARY` build libi2pd |
||||||
|
* `WITH_STATIC` build static versions of library and i2pd binary |
||||||
|
* `WITH_UPNP` build with UPnP support (requires libupnp) |
||||||
|
* `WITH_AESNI` build with AES-NI support (ON/OFF) |
||||||
|
* `WITH_HARDENING` enable hardening features (ON/OFF) (gcc only) |
||||||
|
* `WITH_PCH` use pre-compiled header (experimental, speeds up build) |
||||||
|
|
||||||
|
Also there is `-L` flag for CMake that could be used to list current cached options: |
||||||
|
```bash |
||||||
|
cmake -L |
||||||
|
``` |
@ -0,0 +1,197 @@ |
|||||||
|
Сборка на Windows |
||||||
|
================= |
||||||
|
|
||||||
|
There are two approaches available to build i2pd on Windows. The best |
||||||
|
one depends on your needs and personal preferences. One is to use |
||||||
|
msys2 and [unix alike infrastructure](build_notes_unix.md). Another |
||||||
|
one is to use Visual Studio. While there might be no difference for |
||||||
|
end users of i2pd daemon, developers, however, shall be wary of |
||||||
|
differences in C++ name mangling between the two compilers when making |
||||||
|
a choice to be able to link their software against libi2pd. |
||||||
|
|
||||||
|
If you are a stranger to C++ with no development tools installed on |
||||||
|
your system and your only goal is to have i2pd up and running from the |
||||||
|
most recent source, consider using msys2. Although it relies on |
||||||
|
command line operations, it should be straight forward. |
||||||
|
|
||||||
|
In this guide, we will use CMake for both approaches and we will |
||||||
|
assume that you typically have your projects in C:\dev\ as your |
||||||
|
development location for the sake of convenience. Adjust paths |
||||||
|
accordingly if it is not the case. Note that msys uses unix-alike |
||||||
|
paths like /c/dev/ for C:\dev\. |
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
msys2 |
||||||
|
----- |
||||||
|
|
||||||
|
### x86 (32-bit architecture) |
||||||
|
|
||||||
|
Get install file msys2-i686-*.exe from https://msys2.github.io. |
||||||
|
open MSYS2 Shell (from Start menu). |
||||||
|
Install all prerequisites and download i2pd source: |
||||||
|
|
||||||
|
```bash |
||||||
|
pacman -S mingw-w64-i686-boost mingw-w64-i686-openssl mingw-w64-i686-gcc git make |
||||||
|
mkdir -p /c/dev/i2pd |
||||||
|
cd /c/dev/i2pd |
||||||
|
git clone https://github.com/PurpleI2P/i2pd.git |
||||||
|
cd i2pd |
||||||
|
export PATH=/mingw32/bin:/usr/bin # we need compiler on PATH which is usually heavily cluttered on Windows |
||||||
|
make |
||||||
|
``` |
||||||
|
|
||||||
|
|
||||||
|
### x64 (64-bit architecture) |
||||||
|
|
||||||
|
Get install file msys2-x86_64-*.exe from https://msys2.github.io. |
||||||
|
open MSYS2 Shell (from Start menu). |
||||||
|
Install all prerequisites and download i2pd source: |
||||||
|
|
||||||
|
```bash |
||||||
|
pacman -S mingw-w64-x86_64-boost mingw-w64-x86_64-openssl mingw-w64-x86_64-gcc git make |
||||||
|
mkdir -p /c/dev/i2pd |
||||||
|
cd /c/dev/i2pd |
||||||
|
git clone https://github.com/PurpleI2P/i2pd.git |
||||||
|
cd i2pd |
||||||
|
export PATH=/mingw64/bin:/usr/bin # we need compiler on PATH which is usually heavily cluttered on Windows |
||||||
|
make |
||||||
|
``` |
||||||
|
|
||||||
|
|
||||||
|
### Caveats |
||||||
|
|
||||||
|
It is important to restrict PATH as described above. If you have |
||||||
|
Strawberry Perl and/or Mercurial installed, it will pick up gcc & |
||||||
|
openssl from the wrong places. |
||||||
|
|
||||||
|
If you do use precompiled headers to speed up compilation |
||||||
|
(recommended), things can go wrong if compiler options have changed |
||||||
|
for whatever reason. Just delete `stdafx.h.gch` found in your build |
||||||
|
folder, note the file extension. |
||||||
|
|
||||||
|
If you are an Arch Linux user, refrain from updating system with |
||||||
|
`pacman -Syu`. Always update runtime separately as described on the |
||||||
|
home page, otherwise you might end up with DLLs incompatibility |
||||||
|
problems. |
||||||
|
|
||||||
|
|
||||||
|
### AES-NI |
||||||
|
|
||||||
|
If your processor has |
||||||
|
[AES instruction set](https://en.wikipedia.org/wiki/AES_instruction_set), |
||||||
|
you use `make USE_AESNI=1`. No check is done however, it |
||||||
|
will compile, but it might crash with `Illegal instruction` if not supported. |
||||||
|
|
||||||
|
You should be able to run ./i2pd . If you need to start from the new |
||||||
|
shell, consider starting *MinGW-w64 Win32 Shell* instead of *MSYS2 Shell* as |
||||||
|
it adds`/minw32/bin` to the PATH. |
||||||
|
|
||||||
|
### UPnP |
||||||
|
You can install it through the MSYS2 |
||||||
|
and build with USE_UPNP key. |
||||||
|
|
||||||
|
```bash |
||||||
|
pacman -S mingw-w64-i686-miniupnpc |
||||||
|
make USE_UPNP=yes |
||||||
|
``` |
||||||
|
or |
||||||
|
```bash |
||||||
|
pacman -S mingw-w64-x86_64-miniupnpc |
||||||
|
make USE_UPNP=yes |
||||||
|
``` |
||||||
|
|
||||||
|
Using Visual Studio |
||||||
|
------------------- |
||||||
|
|
||||||
|
Requirements for building: |
||||||
|
|
||||||
|
* [CMake](https://cmake.org/) (tested with 3.1.3) |
||||||
|
* [Visual Studio Community Edition](https://www.visualstudio.com/en-us/products/visual-studio-community-vs.aspx) (tested with VS2013 Update 4) |
||||||
|
* [Boost](http://www.boost.org/) (tested with 1.59) |
||||||
|
* Optionally [MiniUPnP](http://miniupnp.free.fr) (tested with 1.9), we need only few client headers |
||||||
|
* OpenSSL (tested with 1.0.1p and 1.0.2e), if building from sources (recommended), you'll need as well |
||||||
|
* [Netwide assembler](http://www.nasm.us/) |
||||||
|
* Strawberry Perl or ActiveState Perl, do NOT try msys2 perl, it won't work |
||||||
|
|
||||||
|
|
||||||
|
### Building Boost |
||||||
|
|
||||||
|
Open a Command Prompt (there is no need to start Visual Studio command |
||||||
|
prompt to build Boost) and run the following: |
||||||
|
|
||||||
|
cd C:\dev\boost |
||||||
|
bootstrap |
||||||
|
b2 toolset=msvc-12.0 --build-type=complete --with-filesystem --with-program_options --with-date_time |
||||||
|
|
||||||
|
If you are on 64-bit Windows and you want to build 64-bit version as well |
||||||
|
|
||||||
|
b2 toolset=msvc-12.0 --build-type=complete --stagedir=stage64 address-model=64 --with-filesystem --with-program_options --with-date_time |
||||||
|
|
||||||
|
After Boost is compiled, set the environment variable `BOOST_ROOT` to |
||||||
|
the directory Boost was unpacked to, e.g., C:\dev\boost. |
||||||
|
|
||||||
|
If you are planning on building only particular variant, e.g. Debug |
||||||
|
only and static linking, and/or you are out of space/time, you might |
||||||
|
consider `--build-type=minimal`. Take a look at |
||||||
|
[appveyor.yml](../appveyor.yml) for details on how test builds are done. |
||||||
|
|
||||||
|
|
||||||
|
### Building OpenSSL |
||||||
|
|
||||||
|
Download OpenSSL, e.g. with git |
||||||
|
|
||||||
|
git clone https://github.com/openssl/openssl.git |
||||||
|
cd openssl |
||||||
|
git checkout OpenSSL_1_0_1p |
||||||
|
|
||||||
|
Now open Visual Studio command prompt and change directory to that with OpenSSL |
||||||
|
|
||||||
|
set "PATH=%PATH%;C:\Program Files (x86)\nasm" |
||||||
|
perl Configure VC-WIN32 --prefix=c:\OpenSSL-Win32 |
||||||
|
ms\do_nasm |
||||||
|
nmake -f ms\ntdll.mak |
||||||
|
nmake -f ms\ntdll.mak install |
||||||
|
|
||||||
|
You should have it installed into C:\OpenSSL-Win32 by now. |
||||||
|
|
||||||
|
Note that you might consider providing `-DOPENSSL_ROOT_DIR` to CMake |
||||||
|
and/or create a symlink (with mklink /J) to C:\OpenSSL if you plan on |
||||||
|
maintaining multiple versions, e.g. 64 bit and/or |
||||||
|
static/shared. Consult `C:\Program Files |
||||||
|
(x86)\CMake\share\cmake-3.3\Modules\FindOpenSSL.cmake` for details. |
||||||
|
|
||||||
|
|
||||||
|
### Get miniupnpc |
||||||
|
|
||||||
|
If you are behind a UPnP enabled router and don't feel like manually |
||||||
|
configuring port forwarding, you should consider using |
||||||
|
[MiniUPnP](http://miniupnp.free.fr) client. I2pd can be built capable |
||||||
|
of using miniupnpc shared library (DLL) to open up necessary |
||||||
|
port. You'd want to have include headers around to build i2pd with |
||||||
|
support for this. Unpack client source code in a sibling folder, |
||||||
|
e.g. C:\dev\miniupnpc . You may want to remove version number from |
||||||
|
folder name included in downloaded archive. |
||||||
|
|
||||||
|
### Creating Visual Studio project |
||||||
|
|
||||||
|
Start CMake GUI, navigate to i2pd directory, choose building directory, e.g. ./out, and configure options. |
||||||
|
|
||||||
|
Alternatively, if you feel adventurous, try that from the command line |
||||||
|
|
||||||
|
``` |
||||||
|
cd <i2pd_dir> |
||||||
|
mkdir out |
||||||
|
cd out |
||||||
|
cmake ..\build -G "Visual Studio 12 2013" -DWITH_UPNP=ON -DWITH_PCH=ON -DCMAKE_INSTALL_PREFIX:PATH=C:\dev\Debug_Win32_stage |
||||||
|
``` |
||||||
|
|
||||||
|
WITH_UPNP will stay off, if necessary files are not found. |
||||||
|
|
||||||
|
|
||||||
|
### Building i2pd |
||||||
|
|
||||||
|
You can open generated solution/project with Visual Studio and build |
||||||
|
from there, alternatively you can use `cmake --build . --config Release --target install` or |
||||||
|
[MSBuild tool](https://msdn.microsoft.com/en-us/library/dd293626.aspx) |
||||||
|
`msbuild i2pd.sln /p:Configuration=Release`. |
@ -0,0 +1,15 @@ |
|||||||
|
Требования для сборки из исходников |
||||||
|
=================================== |
||||||
|
|
||||||
|
Linux/FreeBSD/OSX |
||||||
|
----------------- |
||||||
|
|
||||||
|
GCC 4.7 or newer, Boost 1.49 or newer, openssl, zlib. Clang can be used instead of GCC. |
||||||
|
|
||||||
|
Windows |
||||||
|
------- |
||||||
|
|
||||||
|
VS2013 (known to work with 12.0.21005.1 or newer), Boost 1.46 or newer, |
||||||
|
crypto++ 5.62. See Win32/README-Build.txt for instructions on how to build i2pd |
||||||
|
and its dependencies. |
||||||
|
|
@ -0,0 +1,300 @@ |
|||||||
|
# -*- coding: utf-8 -*- |
||||||
|
# |
||||||
|
# i2pd documentation build configuration file, created by |
||||||
|
# sphinx-quickstart on Tue Jan 12 06:26:12 2016. |
||||||
|
# |
||||||
|
# This file is execfile()d with the current directory set to its |
||||||
|
# containing dir. |
||||||
|
# |
||||||
|
# Note that not all possible configuration values are present in this |
||||||
|
# autogenerated file. |
||||||
|
# |
||||||
|
# All configuration values have a default; values that are commented out |
||||||
|
# serve to show the default. |
||||||
|
|
||||||
|
import sys |
||||||
|
import os |
||||||
|
import shlex |
||||||
|
from recommonmark.parser import CommonMarkParser |
||||||
|
|
||||||
|
source_parsers = { |
||||||
|
'.md': CommonMarkParser, |
||||||
|
} |
||||||
|
|
||||||
|
# Check if on RTD |
||||||
|
on_rtd = os.environ.get('READTHEDOCS', None) == 'True' |
||||||
|
|
||||||
|
# If extensions (or modules to document with autodoc) are in another directory, |
||||||
|
# add these directories to sys.path here. If the directory is relative to the |
||||||
|
# documentation root, use os.path.abspath to make it absolute, like shown here. |
||||||
|
#sys.path.insert(0, os.path.abspath('.')) |
||||||
|
|
||||||
|
# -- General configuration ------------------------------------------------ |
||||||
|
|
||||||
|
# If your documentation needs a minimal Sphinx version, state it here. |
||||||
|
#needs_sphinx = '1.0' |
||||||
|
|
||||||
|
# Add any Sphinx extension module names here, as strings. They can be |
||||||
|
# extensions coming with Sphinx (named 'sphinx.ext.*') or your custom |
||||||
|
# ones. |
||||||
|
extensions = [] |
||||||
|
|
||||||
|
# Add any paths that contain templates here, relative to this directory. |
||||||
|
#templates_path = ['_templates'] |
||||||
|
|
||||||
|
# The suffix(es) of source filenames. |
||||||
|
# You can specify multiple suffix as a list of string: |
||||||
|
# source_suffix = ['.rst', '.md'] |
||||||
|
source_suffix = ['.rst', '.md'] |
||||||
|
|
||||||
|
# The encoding of source files. |
||||||
|
#source_encoding = 'utf-8-sig' |
||||||
|
|
||||||
|
# The master toctree document. |
||||||
|
master_doc = 'index' |
||||||
|
|
||||||
|
# General information about the project. |
||||||
|
project = u'i2pd' |
||||||
|
copyright = u'2016, PurpleI2P team' |
||||||
|
author = u'PurpleI2P team' |
||||||
|
|
||||||
|
# The version info for the project you're documenting, acts as replacement for |
||||||
|
# |version| and |release|, also used in various other places throughout the |
||||||
|
# built documents. |
||||||
|
# |
||||||
|
# The short X.Y version. |
||||||
|
version = u'2.2.0' |
||||||
|
# The full version, including alpha/beta/rc tags. |
||||||
|
release = u'2.2.0' |
||||||
|
|
||||||
|
# The language for content autogenerated by Sphinx. Refer to documentation |
||||||
|
# for a list of supported languages. |
||||||
|
# |
||||||
|
# This is also used if you do content translation via gettext catalogs. |
||||||
|
# Usually you set "language" from the command line for these cases. |
||||||
|
language = None |
||||||
|
|
||||||
|
# There are two options for replacing |today|: either, you set today to some |
||||||
|
# non-false value, then it is used: |
||||||
|
#today = '' |
||||||
|
# Else, today_fmt is used as the format for a strftime call. |
||||||
|
#today_fmt = '%B %d, %Y' |
||||||
|
|
||||||
|
# List of patterns, relative to source directory, that match files and |
||||||
|
# directories to ignore when looking for source files. |
||||||
|
exclude_patterns = ['_build'] |
||||||
|
|
||||||
|
# The reST default role (used for this markup: `text`) to use for all |
||||||
|
# documents. |
||||||
|
#default_role = None |
||||||
|
|
||||||
|
# If true, '()' will be appended to :func: etc. cross-reference text. |
||||||
|
#add_function_parentheses = True |
||||||
|
|
||||||
|
# If true, the current module name will be prepended to all description |
||||||
|
# unit titles (such as .. function::). |
||||||
|
#add_module_names = True |
||||||
|
|
||||||
|
# If true, sectionauthor and moduleauthor directives will be shown in the |
||||||
|
# output. They are ignored by default. |
||||||
|
#show_authors = False |
||||||
|
|
||||||
|
# The name of the Pygments (syntax highlighting) style to use. |
||||||
|
pygments_style = 'sphinx' |
||||||
|
|
||||||
|
# A list of ignored prefixes for module index sorting. |
||||||
|
#modindex_common_prefix = [] |
||||||
|
|
||||||
|
# If true, keep warnings as "system message" paragraphs in the built documents. |
||||||
|
#keep_warnings = False |
||||||
|
|
||||||
|
# If true, `todo` and `todoList` produce output, else they produce nothing. |
||||||
|
todo_include_todos = False |
||||||
|
|
||||||
|
|
||||||
|
# -- Options for HTML output ---------------------------------------------- |
||||||
|
|
||||||
|
# The theme to use for HTML and HTML Help pages. See the documentation for |
||||||
|
# a list of builtin themes. |
||||||
|
html_theme = 'default' |
||||||
|
|
||||||
|
if not on_rtd: |
||||||
|
try: |
||||||
|
import sphinx_rtd_theme |
||||||
|
html_theme = 'sphinx_rtd_theme' |
||||||
|
html_theme_path = [sphinx_rtd_theme.get_html_theme_path()] |
||||||
|
except ImportError: |
||||||
|
pass |
||||||
|
|
||||||
|
# Theme options are theme-specific and customize the look and feel of a theme |
||||||
|
# further. For a list of options available for each theme, see the |
||||||
|
# documentation. |
||||||
|
#html_theme_options = {} |
||||||
|
|
||||||
|
# Add any paths that contain custom themes here, relative to this directory. |
||||||
|
#html_theme_path = [] |
||||||
|
|
||||||
|
# The name for this set of Sphinx documents. If None, it defaults to |
||||||
|
# "<project> v<release> documentation". |
||||||
|
#html_title = None |
||||||
|
|
||||||
|
# A shorter title for the navigation bar. Default is the same as html_title. |
||||||
|
#html_short_title = None |
||||||
|
|
||||||
|
# The name of an image file (relative to this directory) to place at the top |
||||||
|
# of the sidebar. |
||||||
|
#html_logo = None |
||||||
|
|
||||||
|
# The name of an image file (within the static path) to use as favicon of the |
||||||
|
# docs. This file should be a Windows icon file (.ico) being 16x16 or 32x32 |
||||||
|
# pixels large. |
||||||
|
#html_favicon = None |
||||||
|
|
||||||
|
# Add any paths that contain custom static files (such as style sheets) here, |
||||||
|
# relative to this directory. They are copied after the builtin static files, |
||||||
|
# so a file named "default.css" will overwrite the builtin "default.css". |
||||||
|
#html_static_path = ['_static'] |
||||||
|
|
||||||
|
# Add any extra paths that contain custom files (such as robots.txt or |
||||||
|
# .htaccess) here, relative to this directory. These files are copied |
||||||
|
# directly to the root of the documentation. |
||||||
|
#html_extra_path = [] |
||||||
|
|
||||||
|
# If not '', a 'Last updated on:' timestamp is inserted at every page bottom, |
||||||
|
# using the given strftime format. |
||||||
|
#html_last_updated_fmt = '%b %d, %Y' |
||||||
|
|
||||||
|
# If true, SmartyPants will be used to convert quotes and dashes to |
||||||
|
# typographically correct entities. |
||||||
|
#html_use_smartypants = True |
||||||
|
|
||||||
|
# Custom sidebar templates, maps document names to template names. |
||||||
|
#html_sidebars = {} |
||||||
|
|
||||||
|
# Additional templates that should be rendered to pages, maps page names to |
||||||
|
# template names. |
||||||
|
#html_additional_pages = {} |
||||||
|
|
||||||
|
# If false, no module index is generated. |
||||||
|
#html_domain_indices = True |
||||||
|
|
||||||
|
# If false, no index is generated. |
||||||
|
#html_use_index = True |
||||||
|
|
||||||
|
# If true, the index is split into individual pages for each letter. |
||||||
|
#html_split_index = False |
||||||
|
|
||||||
|
# If true, links to the reST sources are added to the pages. |
||||||
|
#html_show_sourcelink = True |
||||||
|
|
||||||
|
# If true, "Created using Sphinx" is shown in the HTML footer. Default is True. |
||||||
|
#html_show_sphinx = True |
||||||
|
|
||||||
|
# If true, "(C) Copyright ..." is shown in the HTML footer. Default is True. |
||||||
|
#html_show_copyright = True |
||||||
|
|
||||||
|
# If true, an OpenSearch description file will be output, and all pages will |
||||||
|
# contain a <link> tag referring to it. The value of this option must be the |
||||||
|
# base URL from which the finished HTML is served. |
||||||
|
#html_use_opensearch = '' |
||||||
|
|
||||||
|
# This is the file name suffix for HTML files (e.g. ".xhtml"). |
||||||
|
#html_file_suffix = None |
||||||
|
|
||||||
|
# Language to be used for generating the HTML full-text search index. |
||||||
|
# Sphinx supports the following languages: |
||||||
|
# 'da', 'de', 'en', 'es', 'fi', 'fr', 'hu', 'it', 'ja' |
||||||
|
# 'nl', 'no', 'pt', 'ro', 'ru', 'sv', 'tr' |
||||||
|
#html_search_language = 'en' |
||||||
|
|
||||||
|
# A dictionary with options for the search language support, empty by default. |
||||||
|
# Now only 'ja' uses this config value |
||||||
|
#html_search_options = {'type': 'default'} |
||||||
|
|
||||||
|
# The name of a javascript file (relative to the configuration directory) that |
||||||
|
# implements a search results scorer. If empty, the default will be used. |
||||||
|
#html_search_scorer = 'scorer.js' |
||||||
|
|
||||||
|
# Output file base name for HTML help builder. |
||||||
|
htmlhelp_basename = 'i2pddoc' |
||||||
|
|
||||||
|
# -- Options for LaTeX output --------------------------------------------- |
||||||
|
|
||||||
|
latex_elements = { |
||||||
|
# The paper size ('letterpaper' or 'a4paper'). |
||||||
|
#'papersize': 'letterpaper', |
||||||
|
|
||||||
|
# The font size ('10pt', '11pt' or '12pt'). |
||||||
|
#'pointsize': '10pt', |
||||||
|
|
||||||
|
# Additional stuff for the LaTeX preamble. |
||||||
|
#'preamble': '', |
||||||
|
|
||||||
|
# Latex figure (float) alignment |
||||||
|
#'figure_align': 'htbp', |
||||||
|
} |
||||||
|
|
||||||
|
# Grouping the document tree into LaTeX files. List of tuples |
||||||
|
# (source start file, target name, title, |
||||||
|
# author, documentclass [howto, manual, or own class]). |
||||||
|
latex_documents = [ |
||||||
|
(master_doc, 'i2pd.tex', u'i2pd Documentation', |
||||||
|
u'PurpleI2P team', 'manual'), |
||||||
|
] |
||||||
|
|
||||||
|
# The name of an image file (relative to this directory) to place at the top of |
||||||
|
# the title page. |
||||||
|
#latex_logo = None |
||||||
|
|
||||||
|
# For "manual" documents, if this is true, then toplevel headings are parts, |
||||||
|
# not chapters. |
||||||
|
#latex_use_parts = False |
||||||
|
|
||||||
|
# If true, show page references after internal links. |
||||||
|
#latex_show_pagerefs = False |
||||||
|
|
||||||
|
# If true, show URL addresses after external links. |
||||||
|
#latex_show_urls = False |
||||||
|
|
||||||
|
# Documents to append as an appendix to all manuals. |
||||||
|
#latex_appendices = [] |
||||||
|
|
||||||
|
# If false, no module index is generated. |
||||||
|
#latex_domain_indices = True |
||||||
|
|
||||||
|
|
||||||
|
# -- Options for manual page output --------------------------------------- |
||||||
|
|
||||||
|
# One entry per manual page. List of tuples |
||||||
|
# (source start file, name, description, authors, manual section). |
||||||
|
man_pages = [ |
||||||
|
(master_doc, 'i2pd', u'i2pd Documentation', |
||||||
|
[author], 1) |
||||||
|
] |
||||||
|
|
||||||
|
# If true, show URL addresses after external links. |
||||||
|
#man_show_urls = False |
||||||
|
|
||||||
|
|
||||||
|
# -- Options for Texinfo output ------------------------------------------- |
||||||
|
|
||||||
|
# Grouping the document tree into Texinfo files. List of tuples |
||||||
|
# (source start file, target name, title, author, |
||||||
|
# dir menu entry, description, category) |
||||||
|
texinfo_documents = [ |
||||||
|
(master_doc, 'i2pd', u'i2pd Documentation', |
||||||
|
author, 'i2pd', 'One line description of project.', |
||||||
|
'Miscellaneous'), |
||||||
|
] |
||||||
|
|
||||||
|
# Documents to append as an appendix to all manuals. |
||||||
|
#texinfo_appendices = [] |
||||||
|
|
||||||
|
# If false, no module index is generated. |
||||||
|
#texinfo_domain_indices = True |
||||||
|
|
||||||
|
# How to display URL addresses: 'footnote', 'no', or 'inline'. |
||||||
|
#texinfo_show_urls = 'footnote' |
||||||
|
|
||||||
|
# If true, do not generate a @detailmenu in the "Top" node's menu. |
||||||
|
#texinfo_no_detailmenu = False |
@ -0,0 +1,43 @@ |
|||||||
|
Изменения обработки параметров в релизах > 2.3.0 |
||||||
|
------------------------------------------------ |
||||||
|
|
||||||
|
Система параметров отличается от того, что было ранее и достаточно сильно: |
||||||
|
|
||||||
|
* изменения имён и стиля параметров |
||||||
|
|
||||||
|
Все параметры теперь в виде --help (gnu-style), у некоторых есть шорткаты в виде -h (unix-style). |
||||||
|
Это касается всех систем, в том числе винды. |
||||||
|
|
||||||
|
--daemon=1 и подобное -> просто --daemon, без параметра. Нет опции - false, есть - true |
||||||
|
--notransit=1 -> --notransit, то же что и выше: есть опция - false, нет - true |
||||||
|
--v6 -> --ipv6 (первое было похоже на версию какого-то своего протокола, типа socksproxy --v5) |
||||||
|
--tunnelscfg -> --tunconf (имя параметра было слишком длинным, cfg переделан на conf - единообразно с --conf) |
||||||
|
--sockskeys -> разделён на два, для socks и httpproxy по-отдельности |
||||||
|
|
||||||
|
* поддержка секций в основном конфиге |
||||||
|
|
||||||
|
Выглядит это так: |
||||||
|
|
||||||
|
# основные опции |
||||||
|
pidfile = /var/run/i2pd.pid |
||||||
|
# |
||||||
|
# настройки конкретного модуля |
||||||
|
[httproxy] |
||||||
|
address = 1.2.3.4 |
||||||
|
port = 4446 |
||||||
|
keys = httproxy-keys.dat |
||||||
|
# и так далее |
||||||
|
[sam] |
||||||
|
enabled = no |
||||||
|
addresss = 127.0.0.2 |
||||||
|
# ^^ переопределяется только адрес, остальное берётся из дефолта |
||||||
|
|
||||||
|
Точно так же сейчас работает конфиг туннелей: секция до точки - имя, после - параметр |
||||||
|
|
||||||
|
* поддержка выключения отдельных сервисов "на корню" см sam.enabled и подобное |
||||||
|
|
||||||
|
Это позволило задать дефолт для номера порта и не писать его руками для включения. |
||||||
|
|
||||||
|
* добавлен --help (см #110) |
||||||
|
|
||||||
|
* присутствует некая валидация параметров, --port=abcd - не прокатит, --port=100500 - тоже |
@ -0,0 +1,148 @@ |
|||||||
|
Настройка i2pd |
||||||
|
============== |
||||||
|
|
||||||
|
Command line options |
||||||
|
-------------------- |
||||||
|
|
||||||
|
Options specified on the command line take precedence over those in the config file. |
||||||
|
If you are upgrading your very old router (< 2.3.0) see also [this](config_opts_after_2.3.0.md) page. |
||||||
|
|
||||||
|
* --help - Show builtin help message (default value of option will be shown in braces) |
||||||
|
* --conf= - Config file (default: ~/.i2pd/i2pd.conf or /var/lib/i2pd/i2pd.conf) |
||||||
|
This parameter will be silently ignored if the specified config file does not exist. |
||||||
|
* --tunconf= - Tunnels config file (default: ~/.i2pd/tunnels.conf or /var/lib/i2pd/tunnels.conf) |
||||||
|
* --pidfile= - Where to write pidfile (dont write by default) |
||||||
|
* --log= - Logs destination: stdout, file (stdout if not set, file - otherwise, for compatibility) |
||||||
|
* --logfile= - Path to logfile (default - autodetect) |
||||||
|
* --loglevel= - Log messages above this level (debug, info, warn, error) |
||||||
|
* --datadir= - Path to storage of i2pd data (RI, keys, peer profiles, ...) |
||||||
|
* --host= - Router external IP for incoming connections |
||||||
|
* --port= - Port to listen for incoming connections (default: auto) |
||||||
|
* --daemon - Router will go to background after start |
||||||
|
* --service - Router will use system folders like '/var/lib/i2pd' |
||||||
|
* --ipv6 - Enable communication through ipv6. false by default |
||||||
|
* --notransit - Router will not accept transit tunnels at startup. false by default |
||||||
|
* --floodfill - Router will be floodfill. false by default |
||||||
|
* --bandwidth= - Bandwidth limit: integer in KBps or letters: L (32), O (256), P (2048), X (>9000) |
||||||
|
* --family= - Name of a family, router belongs to |
||||||
|
|
||||||
|
Windows-specific options: |
||||||
|
|
||||||
|
* --svcctl= - Windows service management (--svcctl="install" or --svcctl="remove") |
||||||
|
* --insomnia - Prevent system from sleeping |
||||||
|
* --close= - Action on close: minimize, exit, ask |
||||||
|
|
||||||
|
All options below still possible in cmdline, but better write it in config file: |
||||||
|
|
||||||
|
* --http.address= - The address to listen on (HTTP server) |
||||||
|
* --http.port= - The port to listen on (HTTP server) |
||||||
|
* --http.auth - Enable basic HTTP auth for webconsole |
||||||
|
* --http.user= - Username for basic auth (default: i2pd) |
||||||
|
* --http.pass= - Password for basic auth (default: random, see logs) |
||||||
|
|
||||||
|
* --httpproxy.address= - The address to listen on (HTTP Proxy) |
||||||
|
* --httpproxy.port= - The port to listen on (HTTP Proxy) 4444 by default |
||||||
|
* --httpproxy.keys= - optional keys file for proxy local destination (both HTTP and SOCKS) |
||||||
|
* --httpproxy.enabled= - If HTTP proxy is enabled. true by default |
||||||
|
|
||||||
|
* --socksproxy.address= - The address to listen on (SOCKS Proxy) |
||||||
|
* --socksproxy.port= - The port to listen on (SOCKS Proxy). 4447 by default |
||||||
|
* --socksproxy.keys= - optional keys file for proxy local destination (both HTTP and SOCKS) |
||||||
|
* --socksproxy.enabled= - If SOCKS proxy is enabled. true by default |
||||||
|
* --socksproxy.outproxy= - Address of outproxy. requests outside i2p will go there |
||||||
|
* --socksproxy.outproxyport= - Outproxy remote port |
||||||
|
|
||||||
|
* --sam.address= - The address to listen on (SAM bridge) |
||||||
|
* --sam.port= - Port of SAM bridge. Usually 7656. SAM is off if not specified |
||||||
|
* --sam.enabled= - If SAM is enabled. false by default |
||||||
|
|
||||||
|
* --bob.address= - The address to listen on (BOB command channel) |
||||||
|
* --bob.port= - Port of BOB command channel. Usually 2827. BOB is off if not specified |
||||||
|
* --bob.enabled= - If BOB is enabled. false by default |
||||||
|
|
||||||
|
* --i2cp.address= - The address to listen on or an abstract address for Android LocalSocket |
||||||
|
* --i2cp.port= - Port of I2CP server. Usually 7654. Ignored for Andorid |
||||||
|
* --i2cp.enabled= - If I2CP is enabled. false by default. Other services don't require I2CP |
||||||
|
|
||||||
|
* --i2pcontrol.address= - The address to listen on (I2P control service) |
||||||
|
* --i2pcontrol.port= - Port of I2P control service. Usually 7650. I2PControl is off if not specified |
||||||
|
* --i2pcontrol.enabled= - If I2P control is enabled. false by default |
||||||
|
|
||||||
|
* --upnp.enabled= - Enable or disable UPnP, false by default for CLI and true for GUI (Windows, Android) |
||||||
|
* --upnp.name= - Name i2pd appears in UPnP forwardings list. I2Pd by default |
||||||
|
|
||||||
|
* --precomputation.elgamal= - Use ElGamal precomputated tables. false for x64 and true for other platforms by default |
||||||
|
* --reseed.verify= - Request SU3 signature verification |
||||||
|
* --reseed.file= - Full path to SU3 file to reseed from |
||||||
|
* --reseed.urls= - Reseed URLs, separated by comma |
||||||
|
* --addressbook.defaulturl= - AddressBook subscription URL for initial setup |
||||||
|
* --addressbook.subscriptions= - AddressBook subscriptions URLs, separated by comma |
||||||
|
|
||||||
|
* --limits.transittunnels= - Override maximum number of transit tunnels. 2500 by default |
||||||
|
|
||||||
|
Config files |
||||||
|
------------ |
||||||
|
|
||||||
|
INI-like, syntax is the following : <key> = <value>. |
||||||
|
Comments are "#", not ";" as you may expect. See [boost ticket](https://svn.boost.org/trac/boost/ticket/808) |
||||||
|
All command-line parameters are allowed as keys, but note for those which contains dot (.). |
||||||
|
|
||||||
|
For example: |
||||||
|
|
||||||
|
i2pd.conf: |
||||||
|
|
||||||
|
# comment |
||||||
|
log = true |
||||||
|
ipv6 = true |
||||||
|
# settings for specific module |
||||||
|
[httpproxy] |
||||||
|
port = 4444 |
||||||
|
# ^^ this will be --httproxy.port= in cmdline |
||||||
|
# another comment |
||||||
|
[sam] |
||||||
|
enabled = true |
||||||
|
|
||||||
|
See also commented config with examples of all options in ``docs/i2pd.conf``. |
||||||
|
|
||||||
|
tunnels.conf: |
||||||
|
|
||||||
|
# outgoing tunnel sample, to remote service |
||||||
|
# mandatory parameters: |
||||||
|
# * type -- always "client" |
||||||
|
# * port -- local port to listen to |
||||||
|
# * destination -- i2p hostname |
||||||
|
# optional parameters (may be omitted) |
||||||
|
# * keys -- our identity, if unset, will be generated on every startup, |
||||||
|
# if set and file missing, keys will be generated and placed to this file |
||||||
|
# * address -- local interface to bind |
||||||
|
# * signaturetype -- signature type for new destination. 0 (DSA/SHA1), 1 (EcDSA/SHA256) or 7 (EdDSA/SHA512) |
||||||
|
[IRC] |
||||||
|
type = client |
||||||
|
address = 127.0.0.1 |
||||||
|
port = 6668 |
||||||
|
destination = irc.postman.i2p |
||||||
|
keys = irc-keys.dat |
||||||
|
# |
||||||
|
# incoming tunnel sample, for local service |
||||||
|
# mandatory parameters: |
||||||
|
# * type -- "server" or "http" |
||||||
|
# * host -- ip address of our service |
||||||
|
# * port -- port of our service |
||||||
|
# * keys -- file with LeaseSet of address in i2p |
||||||
|
# optional parameters (may be omitted) |
||||||
|
# * inport -- optional, i2p service port, if unset - the same as 'port' |
||||||
|
# * accesslist -- comma-separated list of i2p addresses, allowed to connect |
||||||
|
# every address is b32 without '.b32.i2p' part |
||||||
|
[LOCALSITE] |
||||||
|
type = http |
||||||
|
host = 127.0.0.1 |
||||||
|
port = 80 |
||||||
|
keys = site-keys.dat |
||||||
|
# |
||||||
|
[IRC-SERVER] |
||||||
|
type = server |
||||||
|
host = 127.0.0.1 |
||||||
|
port = 6667 |
||||||
|
keys = irc.dat |
||||||
|
|
||||||
|
Also see [this page](https://github.com/PurpleI2P/i2pd/wiki/tunnels.cfg) for more tunnel examples. |
@ -0,0 +1,36 @@ |
|||||||
|
Настройка Family |
||||||
|
================ |
||||||
|
|
||||||
|
Your might want to specify a family, your router belongs to. |
||||||
|
There are two possibilities: create new family or joing to existing. |
||||||
|
|
||||||
|
New family |
||||||
|
----------- |
||||||
|
|
||||||
|
You must create family self-signed certificate and key. |
||||||
|
The only key type supposted is prime256v1. |
||||||
|
Use the following list of commands: |
||||||
|
|
||||||
|
openssl ecparam -name prime256v1 -genkey -out <your family name>.key |
||||||
|
openssl req -new -key <your family name>.key -out <your family name>.csr |
||||||
|
touch v3.ext |
||||||
|
openssl x509 -req -days 3650 -in <your family name>.csr -signkey <your family name>.key -out <your family name>.crt -extfile v3.ext |
||||||
|
|
||||||
|
Specify <your family name>.family.i2p.net for CN (Common Name) when requested. |
||||||
|
|
||||||
|
Once you are done with it place <your-family-name>.key and <your-family-name>.crt to <ip2d data>/family folder (for exmple ~/.i2pd/family). |
||||||
|
You should provide these two files to other members joining your family. |
||||||
|
If you want to register you family and let I2P network recorgnize it, create pull request for you .crt file into contrib/certificate/family. |
||||||
|
It will appear in i2pd and I2P next releases packages. Dont place .key file, it must be shared between you family members only. |
||||||
|
|
||||||
|
How to join existing family |
||||||
|
--------------------------- |
||||||
|
|
||||||
|
Once you and that family agree to do it, they must give you .key and .crt file and you must place in <i2pd datadir>/certificates/family/ folder. |
||||||
|
|
||||||
|
Publish your family |
||||||
|
------------------- |
||||||
|
|
||||||
|
Run i2pd with parameter 'family=<your-family-name>', make sure you have <your-family-name>.key and <your-family-name>.crt in your 'family' folder. |
||||||
|
If everything is set properly, you router.info will contain two new fields: 'family' and 'family.sig'. |
||||||
|
Otherwise your router will complain on startup with log messages starting with "Family:" prefix and severity 'warn' or 'error'. |
@ -0,0 +1,164 @@ |
|||||||
|
## Configuration file for a typical i2pd user |
||||||
|
## See https://i2pd.readthedocs.org/en/latest/configuration.html |
||||||
|
## for more options you can use in this file. |
||||||
|
|
||||||
|
## Lines that begin with "## " try to explain what's going on. Lines |
||||||
|
## that begin with just "#" are disabled commands: you can enable them |
||||||
|
## by removing the "#" symbol. |
||||||
|
|
||||||
|
## Tunnels config file |
||||||
|
## Default: ~/.i2pd/tunnels.conf or /var/lib/i2pd/tunnels.conf |
||||||
|
# tunconf = /var/lib/i2pd/tunnels.conf |
||||||
|
|
||||||
|
## Where to write pidfile (don't write by default) |
||||||
|
# pidfile = /var/run/i2pd.pid |
||||||
|
|
||||||
|
## Logging configuration section |
||||||
|
## By default logs go to stdout with level 'info' and higher |
||||||
|
## |
||||||
|
## Logs destination (valid values: stdout, file, syslog) |
||||||
|
## * stdout - print log entries to stdout |
||||||
|
## * file - log entries to a file |
||||||
|
## * syslog - use syslog, see man 3 syslog |
||||||
|
# log = file |
||||||
|
## Path to logfile (default - autodetect) |
||||||
|
# logfile = /var/log/i2pd.log |
||||||
|
## Log messages above this level (debug, *info, warn, error) |
||||||
|
# loglevel = info |
||||||
|
|
||||||
|
## Path to storage of i2pd data (RI, keys, peer profiles, ...) |
||||||
|
## Default: ~/.i2pd or /var/lib/i2pd |
||||||
|
# datadir = /var/lib/i2pd |
||||||
|
|
||||||
|
## Daemon mode. Router will go to background after start |
||||||
|
# daemon = true |
||||||
|
## Run as a service. Router will use system folders like ‘/var/lib/i2pd’ |
||||||
|
# service = true |
||||||
|
|
||||||
|
## Specify a family, router belongs to (default - none) |
||||||
|
# family = |
||||||
|
|
||||||
|
## External IP address to listen for connections |
||||||
|
## By default i2pd sets IP automatically |
||||||
|
# host = 1.2.3.4 |
||||||
|
|
||||||
|
## Port to listen for connections |
||||||
|
## By default i2pd picks random port. You MUST pick a random number too, |
||||||
|
## don't just uncomment this |
||||||
|
# port = 4567 |
||||||
|
|
||||||
|
## Enable communication through ipv4 |
||||||
|
ipv4 = true |
||||||
|
## Enable communication through ipv6 |
||||||
|
ipv6 = false |
||||||
|
|
||||||
|
## Network interface to bind to |
||||||
|
# ifname = |
||||||
|
|
||||||
|
## Enable NTCP transport (default = true) |
||||||
|
# ntcp = true |
||||||
|
## Enable SSU transport (default = true) |
||||||
|
# ssu = true |
||||||
|
|
||||||
|
## Should we assume we are behind NAT? (false only in MeshNet) |
||||||
|
# nat = true |
||||||
|
|
||||||
|
## Bandwidth configuration |
||||||
|
## L limit bandwidth to 32Kbs/sec, O - to 256Kbs/sec, P - to 2048Kbs/sec, |
||||||
|
## X - unlimited |
||||||
|
## Default is X for floodfill, L for regular node |
||||||
|
# bandwidth = L |
||||||
|
|
||||||
|
## Router will not accept transit tunnels at startup |
||||||
|
# notransit = true |
||||||
|
|
||||||
|
## Router will be floodfill |
||||||
|
# floodfill = true |
||||||
|
|
||||||
|
[limits] |
||||||
|
## Maximum active transit sessions (default:2500) |
||||||
|
# transittunnels = 2500 |
||||||
|
|
||||||
|
[precomputation] |
||||||
|
## Enable or disable elgamal precomputation table |
||||||
|
## By default, enabled on i386 hosts |
||||||
|
# elgamal = true |
||||||
|
|
||||||
|
[upnp] |
||||||
|
## Enable or disable UPnP: automatic port forwarding (enabled by default in WINDOWS, ANDROID) |
||||||
|
# enabled = false |
||||||
|
|
||||||
|
## Name i2pd appears in UPnP forwardings list (default = I2Pd) |
||||||
|
# name = I2Pd |
||||||
|
|
||||||
|
[reseed] |
||||||
|
## URLs to request reseed data from, separated by comma |
||||||
|
## Default: "mainline" I2P Network reseeds |
||||||
|
# urls = https://reseed.i2p-projekt.de/,https://i2p.mooo.com/netDb/,https://netdb.i2p2.no/ |
||||||
|
## Path to reseed data file (.su3) for manual reseeding |
||||||
|
# file = /path/to/i2pseeds.su3 |
||||||
|
|
||||||
|
[addressbook] |
||||||
|
## AddressBook subscription URL for initial setup |
||||||
|
## Default: inr.i2p at "mainline" I2P Network |
||||||
|
# defaulturl = http://joajgazyztfssty4w2on5oaqksz6tqoxbduy553y34mf4byv6gpq.b32.i2p/export/alive-hosts.txt |
||||||
|
## Optional subscriptions URLs, separated by comma |
||||||
|
# subscriptions = http://inr.i2p/export/alive-hosts.txt,http://stats.i2p/cgi-bin/newhosts.txt,http://rus.i2p/hosts.txt |
||||||
|
|
||||||
|
[http] |
||||||
|
## Uncomment and set to 'false' to disable Web Console |
||||||
|
# enabled = true |
||||||
|
## Address and port service will listen on |
||||||
|
address = 127.0.0.1 |
||||||
|
port = 7070 |
||||||
|
|
||||||
|
[httpproxy] |
||||||
|
## Uncomment and set to 'false' to disable HTTP Proxy |
||||||
|
# enabled = true |
||||||
|
## Address and port service will listen on |
||||||
|
address = 127.0.0.1 |
||||||
|
port = 4444 |
||||||
|
## Optional keys file for proxy local destination |
||||||
|
# keys = http-proxy-keys.dat |
||||||
|
|
||||||
|
[socksproxy] |
||||||
|
## Uncomment and set to 'false' to disable SOCKS Proxy |
||||||
|
# enabled = true |
||||||
|
## Address and port service will listen on |
||||||
|
address = 127.0.0.1 |
||||||
|
port = 4447 |
||||||
|
## Optional keys file for proxy local destination |
||||||
|
# keys = socks-proxy-keys.dat |
||||||
|
|
||||||
|
## Socks outproxy. Example below is set to use Tor for all connections except i2p |
||||||
|
## Address and port of outproxy |
||||||
|
# outproxy = 127.0.0.1 |
||||||
|
# outproxyport = 9050 |
||||||
|
|
||||||
|
[sam] |
||||||
|
## Uncomment and set to 'true' to enable SAM Bridge |
||||||
|
# enabled = false |
||||||
|
## Address and port service will listen on |
||||||
|
# address = 127.0.0.1 |
||||||
|
# port = 7656 |
||||||
|
|
||||||
|
[bob] |
||||||
|
## Uncomment and set to 'true' to enable BOB command channel |
||||||
|
# enabled = false |
||||||
|
## Address and port service will listen on |
||||||
|
# address = 127.0.0.1 |
||||||
|
# port = 2827 |
||||||
|
|
||||||
|
[i2cp] |
||||||
|
## Uncomment and set to 'true' to enable I2CP protocol |
||||||
|
# enabled = false |
||||||
|
## Address and port service will listen on |
||||||
|
# address = 127.0.0.1 |
||||||
|
# port = 7654 |
||||||
|
|
||||||
|
[i2pcontrol] |
||||||
|
## Uncomment and set to 'true' to enable I2PControl protocol |
||||||
|
# enabled = false |
||||||
|
## Address and port service will listen on |
||||||
|
# address = 127.0.0.1 |
||||||
|
# port = 7650 |
@ -0,0 +1,42 @@ |
|||||||
|
i2pd |
||||||
|
==== |
||||||
|
|
||||||
|
i2pd (I2P Daemon) это полнофункциональная реализация I2P клиента на языке C++. |
||||||
|
|
||||||
|
* `Сайт <http://i2pd.website>`_ |
||||||
|
* `GitHub <https://github.com/PurpleI2P/i2pd>`_ |
||||||
|
* `Вики <https://github.com/PurpleI2P/i2pd/wiki>`_ |
||||||
|
* `Багтрекер <https://github.com/PurpleI2P/i2pd/issues>`_ |
||||||
|
* `Twitter <https://twitter.com/i2porignal>`_ |
||||||
|
|
||||||
|
Установка |
||||||
|
--------- |
||||||
|
|
||||||
|
Самый простой способ установить i2pd это использование |
||||||
|
`бинарных файлов <https://github.com/PurpleI2P/i2pd/releases/latest>`_. |
||||||
|
Инструкции по сборке из исходников для вашей ОС смотрите |
||||||
|
в документации. |
||||||
|
|
||||||
|
Использование |
||||||
|
------------- |
||||||
|
|
||||||
|
Смотрите в документацию и |
||||||
|
`документированный конфигурационный файл <https://github.com/PurpleI2P/i2pd/blob/openssl/docs/i2pd.conf>`_. |
||||||
|
|
||||||
|
Содержание: |
||||||
|
----------- |
||||||
|
|
||||||
|
.. toctree:: |
||||||
|
:maxdepth: 2 |
||||||
|
|
||||||
|
build_requirements |
||||||
|
build_notes_unix |
||||||
|
build_notes_windows |
||||||
|
build_notes_cross |
||||||
|
build_notes_android |
||||||
|
build_notes_ios |
||||||
|
configuration |
||||||
|
family |
||||||
|
usage |
||||||
|
|
||||||
|
|
After Width: | Height: | Size: 8.5 KiB |
@ -0,0 +1,3 @@ |
|||||||
|
http://inr.i2p/export/alive-hosts.txt |
||||||
|
http://stats.i2p/cgi-bin/newhosts.txt |
||||||
|
http://i2p-projekt.i2p/hosts.txt |
@ -0,0 +1,33 @@ |
|||||||
|
[IRC] |
||||||
|
type = client |
||||||
|
address = 127.0.0.1 |
||||||
|
port = 6668 |
||||||
|
destination = irc.postman.i2p |
||||||
|
destinationport = 6667 |
||||||
|
keys = irc-keys.dat |
||||||
|
|
||||||
|
#[SMTP] |
||||||
|
#type = client |
||||||
|
#address = 127.0.0.1 |
||||||
|
#port = 7659 |
||||||
|
#destination = smtp.postman.i2p |
||||||
|
#destinationport = 25 |
||||||
|
#keys = smtp-keys.dat |
||||||
|
|
||||||
|
#[POP3] |
||||||
|
#type = client |
||||||
|
#address = 127.0.0.1 |
||||||
|
#port = 7660 |
||||||
|
#destination = pop.postman.i2p |
||||||
|
#destinationport = 110 |
||||||
|
#keys = pop3-keys.dat |
||||||
|
|
||||||
|
#[MTN] |
||||||
|
#type = client |
||||||
|
#address = 127.0.0.1 |
||||||
|
#port = 8998 |
||||||
|
#destination = mtn.i2p-projekt.i2p |
||||||
|
#destinationport = 4691 |
||||||
|
#keys = mtn-keys.dat |
||||||
|
|
||||||
|
# see more examples in /usr/share/doc/i2pd/configuration.md.gz |
@ -0,0 +1,131 @@ |
|||||||
|
Примеры использования |
||||||
|
===================== |
||||||
|
|
||||||
|
|
||||||
|
i2pd может быть использован для: |
||||||
|
|
||||||
|
* [анонимных веб-сайтов](#browsing-and-hosting-websites) |
||||||
|
* [анонимных чатов](#using-and-hosting-chat-servers) |
||||||
|
* [анонимного файлообмена](#file-sharing) |
||||||
|
|
||||||
|
и для много чего еще. |
||||||
|
|
||||||
|
## Посещение и создание веб-сайтов |
||||||
|
|
||||||
|
### Посещение анонимных веб-сайтов |
||||||
|
|
||||||
|
Чтобы посещать анонимные веб-сайты внутри Невидимого Интернета, настрой свой веб-браузер на использование HTTP прокси 127.0.0.1:4444 (включено по-умолчанию в i2pd). |
||||||
|
|
||||||
|
В Firefox: Настройки -> Дополнительные -> Сеть -> Соединение -> Настроить -> выберите Ручная настройка сервиса прокси, введите HTTP прокси 127.0.0.1, Порт 4444. |
||||||
|
|
||||||
|
В Chromium: запустите chromium с ключом |
||||||
|
|
||||||
|
chromium --proxy-server="http://127.0.0.1:4444" |
||||||
|
|
||||||
|
Если вы хотите остаться анонимным при посещении веб-сайтов, вам необходимо так же настроить свой веб-браузер для защиты от деанонимизации. Как именно это делается можно найти в интернете, например [здесь](https://habrahabr.ru/post/203680/). |
||||||
|
|
||||||
|
Большой список сайтов Невидимого Интернета на сайте [identiguy.i2p](http://identiguy.i2p). |
||||||
|
|
||||||
|
### Создание анонимных веб-сайтов |
||||||
|
|
||||||
|
|
||||||
|
Если вы хотите запустить свой сайт в Невидимом Интернете, следуйте данной инструкции: |
||||||
|
|
||||||
|
1) Запустите веб-сервер и узнайте, какой хост:порт он использует (например, 127.0.0.1:8080). |
||||||
|
|
||||||
|
2) Настройте i2pd для создания серверного HTTP туннеля. В файл ~/.i2pd/tunnels.conf добавьте: |
||||||
|
|
||||||
|
[anon-website] |
||||||
|
type = http |
||||||
|
host = 127.0.0.1 |
||||||
|
port = 8080 |
||||||
|
keys = anon-website.dat |
||||||
|
|
||||||
|
3) Перезапустите i2pd. |
||||||
|
|
||||||
|
4) Найдите b32 destination вашего вебсайта. |
||||||
|
|
||||||
|
Зайдите в веб-консоль -> [страница I2P tunnels](http://127.0.0.1:7070/?page=i2p_tunnels). Ищите Sever tunnels и увидете адрес \<длинная строка\>.b32.i2p рядом с anon-website. |
||||||
|
|
||||||
|
Теперь веб-сайт доступен в Невидимом Интернете по этому адресу. |
||||||
|
|
||||||
|
5) (Опционально) Зарегистрируйте короткий и запоминающийся .i2p домен на [inr.i2p](http://inr.i2p). |
||||||
|
|
||||||
|
|
||||||
|
## Использование и создание чат-серверов |
||||||
|
|
||||||
|
### Запуск анонимного IRC сервера |
||||||
|
|
||||||
|
1) Запустите свой IRC сервер и узнайте, какой хост:порт он использует (например, 127.0.0.1:5555). |
||||||
|
|
||||||
|
Для малых приватных IRC серверов вы можете использовать [miniircd](https://github.com/jrosdahl/miniircd), для больших публичных [UnreadIRCd](https://www.unrealircd.org/). |
||||||
|
|
||||||
|
|
||||||
|
2) Настройте i2pd для создания серверного IRC туннеля. |
||||||
|
|
||||||
|
В самом простом случае, если ваш сервер не поддерживает WebIRC, добавьте следующее в ~/.i2pd/tunnels.conf: |
||||||
|
|
||||||
|
[anon-chatserver] |
||||||
|
type = irc |
||||||
|
host = 127.0.0.1 |
||||||
|
port = 5555 |
||||||
|
keys = chatserver-key.dat |
||||||
|
|
||||||
|
И этого достаточно. |
||||||
|
|
||||||
|
В случае, если ваш IRC сервер поддерживает WebIRC, например, это UnrealIRCd, добавьте следущее в конфиг UnrealIRCd: |
||||||
|
|
||||||
|
webirc { |
||||||
|
mask 127.0.0.1; |
||||||
|
password your_password; |
||||||
|
}; |
||||||
|
|
||||||
|
Также измените строку: |
||||||
|
|
||||||
|
modes-on-connect "+ixw"; |
||||||
|
|
||||||
|
на |
||||||
|
|
||||||
|
modes-on-connect "+iw"; |
||||||
|
|
||||||
|
И добавьте это в ~/.i2pd/tunnels.conf: |
||||||
|
|
||||||
|
[anon-chatserver] |
||||||
|
type = irc |
||||||
|
host = 127.0.0.1 |
||||||
|
port = 5555 |
||||||
|
keys = chatserver-key.dat |
||||||
|
webircpassword = your_password |
||||||
|
|
||||||
|
3) Перезапустите i2pd. |
||||||
|
|
||||||
|
4) Найдите b32 destination вашего анонимного IRC сервера. |
||||||
|
|
||||||
|
Зайдите в веб-консоль -> [страница I2P tunnels](http://127.0.0.1:7070/?page=i2p_tunnels). Ищите Sever tunnels и увидете адрес \<длинная строка\>.b32.i2p рядом с anon-chatserver. |
||||||
|
|
||||||
|
Пользователи будут использовать этот адрес для анонимного подключения к вашему серверу. |
||||||
|
|
||||||
|
### Connect to anonymous IRC server |
||||||
|
|
||||||
|
Чтобы подключиться к IRC серверу по адресу *walker.i2p*, добавьте следущее в ~/.i2pd/tunnels.conf: |
||||||
|
|
||||||
|
[IRC2] |
||||||
|
type = client |
||||||
|
address = 127.0.0.1 |
||||||
|
port = 6669 |
||||||
|
destination = walker.i2p |
||||||
|
#keys = walker-keys.dat |
||||||
|
|
||||||
|
Перезапустите i2pd, после чего подключайтесь к irc://127.0.0.1:6669 в вашем IRC клиенте. |
||||||
|
|
||||||
|
## Файлообмен |
||||||
|
|
||||||
|
Вы можете качать и раздавать торренты клиентом [Transmission-I2P](https://github.com/l-n-s/transmission-i2p). |
||||||
|
|
||||||
|
Другие торрент-клиенты [Robert](http://en.wikipedia.org/wiki/Robert_%28P2P_Software%29) и [Vuze](https://en.wikipedia.org/wiki/Vuze). |
||||||
|
|
||||||
|
Robert использует протокол BOB, i2pd должен быть запущен с настройкой --bob.enabled=true. |
||||||
|
|
||||||
|
Vuze использует протокол I2CP, i2pd должен быть запущен с настройкой --i2cp.enabled=true. |
||||||
|
|
||||||
|
Используйте [трекер postman](http://tracker2.postman.i2p). |
Loading…
Reference in new issue