Forum for I2P-related discussions, feel free to create issues.
Форум для обсуждения различных тем, связанных с I2P.
i2pd documentation
Home Page: https://i2pd.readthedocs.io/
License: BSD 3-Clause "New" or "Revised" License
git clone https://github.com/PurpleI2P/i2pd.git
cd i2pd/qt/i2pd_qt
Release: qmake
Debug: qmake i2pd_qt.pro "CONFIG += debug"
Debian:
sudo apt-get install build-essential g++ make libcrypto++-dev libssl-dev libboost-all-dev libminiupnpc-dev libwebsocketpp-dev libqt5gui5 libqt5widgets5 git zlib1g-dev qt5-qmake qtbase5-dev
URL: https://i2pd.readthedocs.io/en/latest/devs/building/qt-desktop-gui/
In documentation about Server/generic tunnels in this file:
https://github.com/PurpleI2P/i2pd_docs_en/blob/master/docs/user-guide/tunnels.md
"The file in keys must be present" phrase exists.
From what I learned ([18:06:47] i2porignal: если его нету то сделается), if user do not put file at specified location, it will be automatically created, which makes me doubt about what "must be present" actually mean.
It it will be not present, then nothing wrong happens.
Most important, need to document libi2pd and libi2pdclient usage.
Instructions from here:
$ wget -q -O - https://repo.i2pd.xyz/r4sas.gpg | sudo apt-key add -
Warning: apt-key is deprecated. Manage keyring files in trusted.gpg.d instead (see apt-key(8)).
OK
It works but i now get a warning everytime i run sudo apt update
.
https://i2pd.readthedocs.io/en/latest/devs/building/android/ reads: «You also need Java JDK (prefer Oracle Java 8)»
I heard that one needs to pay for Oracle Java. The free JDK is openjdk, I heard one doesn't need to pay for it.
TODO
Currently, "Qt 5 is necessary (because Qt 4 lacks QtWidgets folder)."
That's not correct.
Need to replace the above wording with simply:
Qt 5
URL: https://i2pd.readthedocs.io/en/latest/devs/building/qt-desktop-gui/
<Hypnosis> orignal_, а этой опции же в коде нету!
<Hypnosis> explicitPeers -- list of comma-separated b64 addresses of peers to use, default: unset
<Hypnosis> http://i2pd.readthedocs.io/en/latest/user-guide/tunnels/#i2cp-parameters
<Hypnosis> вот код https://github.com/PurpleI2P/i2pd/blob/c010c83654e5c7baabf492f82aa43999eacaf44a/ClientContext.cpp#L371
<orignal_> есть
<orignal_> а че?
<Hypnosis> где?
<Hypnosis> ща загуглю
<orignal_> а TunnelPool используется насколько я помню
<Hypnosis> orignal_, видимо это не доделано
<Hypnosis> https://github.com/PurpleI2P/i2pd/search?utf8=%E2%9C%93&q=I2CP_PARAM_EXPLICIT_PEERS&type=Code
<Hypnosis> ссылка на строку explicitPeers только в Destination[.h, .cpp]
<Hypnosis> в 2 файлах
<Hypnosis> а зачитывается значение этого параметра тут:
<Hypnosis> https://github.com/PurpleI2P/i2pd/blob/c010c83654e5c7baabf492f82aa43999eacaf44a/ClientContext.cpp#L371
<orignal_> вроде работало
<Hypnosis> и оно НЕ зачитывается из конфига
<orignal_> if (explicitPeers)
<orignal_> m_Pool->SetExplicitPeers (explicitPeers);
<Hypnosis> ну не считывается оно из файла
<Hypnosis> в мапу
<orignal_> из конфига виждимо не читается
<orignal_> но например может быть прислано по I2CP или сэмук
<Hypnosis> не думаб
<Hypnosis> не думаю
<Hypnosis> там в параметрах std::map<std::string, std::string> * params
<Hypnosis> и эта мапа считывается из тунконфа
<Hypnosis> тут https://github.com/PurpleI2P/i2pd/blob/c010c83654e5c7baabf492f82aa43999eacaf44a/ClientContext.cpp#L371
<Hypnosis> а про i2cp sam я хз
<orignal_> значит не сделано
<orignal_> можно добавить
Please mention here that FreeBSD already has a separate port - security/i2pd
<orignal_> https://geti2p.net/spec/common-structures#certificate
<orignal_> все коды перечислены
<Hypnosis> orignal_, это таблица "The defined Signing Public Key types are:" ?
<orignal_> да
see also : Identity.h line 55
https://github.com/PurpleI2P/i2pd/blob/f46d96c4c650c7104ba42ed66ddddb1acb2fd8d2/ClientContext.h
const char I2P_TUNNELS_SECTION_TYPE_CLIENT[] = "client";
const char I2P_TUNNELS_SECTION_TYPE_SERVER[] = "server";
const char I2P_TUNNELS_SECTION_TYPE_HTTP[] = "http";
const char I2P_TUNNELS_SECTION_TYPE_IRC[] = "irc";
const char I2P_TUNNELS_SECTION_TYPE_UDPCLIENT[] = "udpclient";
const char I2P_TUNNELS_SECTION_TYPE_UDPSERVER[] = "udpserver";
const char I2P_TUNNELS_SECTION_TYPE_SOCKS[] = "socks";
const char I2P_TUNNELS_SECTION_TYPE_WEBSOCKS[] = "websocks";
const char I2P_TUNNELS_SECTION_TYPE_HTTPPROXY[] = "httpproxy";
@hugbubby thanks again for your contributions. Just some clarifications here.
Basic statement we have on our website and in docs is:
i2pd (I2P Daemon) is a full-featured C++ implementation of I2P client.
I2P (Invisible Internet Protocol) is a universal anonymous network layer.
All communications over I2P are anonymous and end-to-end encrypted, participants don't reveal their real IP addresses.I2P client is a software used for building and using anonymous I2P networks. Such networks are commonly used for anonymous peer-to-peer applications (filesharing, cryptocurrencies) and anonymous client-server applications (websites, instant messengers, chat-servers).
I2P allows people from all around the world to communicate and share information without restrictions.
If there are no errors, we'd prefer it to be as clear and short as possible. If there is a better idea how to communicate I2P/i2pd values, you are welcome to discuss it here, just try not to complicate stuff 😉
inport: optional; non-TCP non-UDP I2P local destination port to listen to; an unsigned 16-bit integer. What port at local destination server tunnel listens to. Same as port by default
port: non-I2P TCP listening port on IP host that the listening local destination gets connected to
template<typename Section>
void ClientContext::ReadI2CPOptions (const Section& section, std::map<std::string, std::string>& options) const
{
options[I2CP_PARAM_INBOUND_TUNNEL_LENGTH] = GetI2CPOption (section, I2CP_PARAM_INBOUND_TUNNEL_LENGTH, DEFAULT_INBOUND_TUNNEL_LENGTH);
options[I2CP_PARAM_OUTBOUND_TUNNEL_LENGTH] = GetI2CPOption (section, I2CP_PARAM_OUTBOUND_TUNNEL_LENGTH, DEFAULT_OUTBOUND_TUNNEL_LENGTH);
options[I2CP_PARAM_INBOUND_TUNNELS_QUANTITY] = GetI2CPOption (section, I2CP_PARAM_INBOUND_TUNNELS_QUANTITY, DEFAULT_INBOUND_TUNNELS_QUANTITY);
options[I2CP_PARAM_OUTBOUND_TUNNELS_QUANTITY] = GetI2CPOption (section, I2CP_PARAM_OUTBOUND_TUNNELS_QUANTITY, DEFAULT_OUTBOUND_TUNNELS_QUANTITY);
options[I2CP_PARAM_TAGS_TO_SEND] = GetI2CPOption (section, I2CP_PARAM_TAGS_TO_SEND, DEFAULT_TAGS_TO_SEND);
options[I2CP_PARAM_MIN_TUNNEL_LATENCY] = GetI2CPOption(section, I2CP_PARAM_MIN_TUNNEL_LATENCY, DEFAULT_MIN_TUNNEL_LATENCY);
options[I2CP_PARAM_MAX_TUNNEL_LATENCY] = GetI2CPOption(section, I2CP_PARAM_MAX_TUNNEL_LATENCY, DEFAULT_MAX_TUNNEL_LATENCY);
}
https://github.com/PurpleI2P/i2pd_docs_en/blob/master/docs/user-guide/configuration.md
Verify .su3 signature. fase by default -> false
Is --reseed.floodfill
flag still valid? It is shown on --help
but not in the document?
client:
# optional parameters (may be omitted)
std::string keys = section.second.get (I2P_CLIENT_TUNNEL_KEYS, "");
std::string address = section.second.get (I2P_CLIENT_TUNNEL_ADDRESS, "127.0.0.1");
int destinationPort = section.second.get (I2P_CLIENT_TUNNEL_DESTINATION_PORT, 0);
i2p::data::SigningKeyType sigType = section.second.get (I2P_CLIENT_TUNNEL_SIGNATURE_TYPE, i2p::data::SIGNING_KEY_TYPE_ECDSA_SHA256_P256);
server:
# optional parameters (may be omitted)
int inPort = section.second.get (I2P_SERVER_TUNNEL_INPORT, 0);
std::string accessList = section.second.get (I2P_SERVER_TUNNEL_ACCESS_LIST, "");
std::string hostOverride = section.second.get (I2P_SERVER_TUNNEL_HOST_OVERRIDE, "");
std::string webircpass = section.second.get<std::string> (I2P_SERVER_TUNNEL_WEBIRC_PASSWORD, "");
bool gzip = section.second.get (I2P_SERVER_TUNNEL_GZIP, true);
i2p::data::SigningKeyType sigType = section.second.get (I2P_SERVER_TUNNEL_SIGNATURE_TYPE, i2p::data::SIGNING_KEY_TYPE_ECDSA_SHA256_P256);
uint32_t maxConns = section.second.get(i2p::stream::I2CP_PARAM_STREAMING_MAX_CONNS_PER_MIN, i2p::stream::DEFAULT_MAX_CONNS_PER_MIN);
std::string address = section.second.get<std::string> (I2P_SERVER_TUNNEL_ADDRESS, "127.0.0.1");
bool isUniqueLocal = section.second.get(I2P_SERVER_TUNNEL_ENABLE_UNIQUE_LOCAL, true);
As stated in install.md i2pd package for Arch Linux is available in AUR, but actually i2pd package is available in community repository, and i2pd-git still in AUR, so i2pd package link is broken
At http://i2pd.readthedocs.io/en/latest/user-guide/configuration/ , --log
does not document syslog
option value. Need to document it.
i2pd --help
tells:
--log arg Logs destination: stdout, file, syslog (stdout if not set)
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.