Browse Source

Merge branch 'openssl' of https://github.com/PurpleI2P/i2pd into openssl

pull/468/head
orignal 8 years ago
parent
commit
1c507a47d2
  1. 14
      Destination.cpp
  2. 1
      Destination.h
  3. 22
      HTTPServer.cpp
  4. 20
      I2PControl.cpp
  5. 2
      I2PControl.h
  6. 21
      RouterInfo.cpp
  7. 2
      RouterInfo.h
  8. 6
      debian/copyright
  9. 87
      debian/i2pd.1
  10. 19
      debian/i2pd.conf
  11. 2
      debian/i2pd.install
  12. 4
      docs/configuration.md
  13. 4
      docs/i2pd.conf

14
Destination.cpp

@ -780,5 +780,19 @@ namespace client
} }
LogPrint(eLogError, "Destinations: Can't save keys to ", path); LogPrint(eLogError, "Destinations: Can't save keys to ", path);
} }
std::vector<std::shared_ptr<const i2p::stream::Stream> > ClientDestination::GetAllStreams () const
{
std::vector<std::shared_ptr<const i2p::stream::Stream> > ret;
if (m_StreamingDestination)
{
for (auto& it: m_StreamingDestination->GetStreams ())
ret.push_back (it.second);
}
for (auto& it: m_StreamingDestinationsByPorts)
for (auto& it1: it.second->GetStreams ())
ret.push_back (it1.second);
return ret;
}
} }
} }

1
Destination.h

@ -159,6 +159,7 @@ namespace client
// for HTTP only // for HTTP only
int GetNumRemoteLeaseSets () const { return m_RemoteLeaseSets.size (); }; int GetNumRemoteLeaseSets () const { return m_RemoteLeaseSets.size (); };
std::vector<std::shared_ptr<const i2p::stream::Stream> > GetAllStreams () const;
}; };
} }
} }

22
HTTPServer.cpp

@ -609,19 +609,19 @@ namespace util
s << "<th>Status</th>"; s << "<th>Status</th>";
s << "</tr>"; s << "</tr>";
for (auto it: dest->GetStreamingDestination ()->GetStreams ()) for (auto it: dest->GetAllStreams ())
{ {
s << "<tr>"; s << "<tr>";
s << "<td>" << it.first << "</td>"; s << "<td>" << it->GetSendStreamID () << "</td>";
s << "<td>" << i2p::client::context.GetAddressBook ().ToAddress(it.second->GetRemoteIdentity ()) << "</td>"; s << "<td>" << i2p::client::context.GetAddressBook ().ToAddress(it->GetRemoteIdentity ()) << "</td>";
s << "<td>" << it.second->GetNumSentBytes () << "</td>"; s << "<td>" << it->GetNumSentBytes () << "</td>";
s << "<td>" << it.second->GetNumReceivedBytes () << "</td>"; s << "<td>" << it->GetNumReceivedBytes () << "</td>";
s << "<td>" << it.second->GetSendQueueSize () << "</td>"; s << "<td>" << it->GetSendQueueSize () << "</td>";
s << "<td>" << it.second->GetReceiveQueueSize () << "</td>"; s << "<td>" << it->GetReceiveQueueSize () << "</td>";
s << "<td>" << it.second->GetSendBufferSize () << "</td>"; s << "<td>" << it->GetSendBufferSize () << "</td>";
s << "<td>" << it.second->GetRTT () << "</td>"; s << "<td>" << it->GetRTT () << "</td>";
s << "<td>" << it.second->GetWindowSize () << "</td>"; s << "<td>" << it->GetWindowSize () << "</td>";
s << "<td>" << (int)it.second->GetStatus () << "</td>"; s << "<td>" << (int)it->GetStatus () << "</td>";
s << "</tr><br>\r\n" << std::endl; s << "</tr><br>\r\n" << std::endl;
} }
} }

20
I2PControl.cpp

@ -83,6 +83,10 @@ namespace client
m_RouterManagerHandlers["Reseed"] = &I2PControlService::ReseedHandler; m_RouterManagerHandlers["Reseed"] = &I2PControlService::ReseedHandler;
m_RouterManagerHandlers["Shutdown"] = &I2PControlService::ShutdownHandler; m_RouterManagerHandlers["Shutdown"] = &I2PControlService::ShutdownHandler;
m_RouterManagerHandlers["ShutdownGraceful"] = &I2PControlService::ShutdownGracefulHandler; m_RouterManagerHandlers["ShutdownGraceful"] = &I2PControlService::ShutdownGracefulHandler;
// NetworkSetting
m_NetworkSettingHandlers["i2p.router.net.bw.in"] = &I2PControlService::InboundBandwidthLimit;
m_NetworkSettingHandlers["i2p.router.net.bw.out"] = &I2PControlService::OutboundBandwidthLimit;
} }
I2PControlService::~I2PControlService () I2PControlService::~I2PControlService ()
@ -496,6 +500,22 @@ namespace client
} }
} }
void I2PControlService::InboundBandwidthLimit (const std::string& value, std::ostringstream& results)
{
if (value != "null")
i2p::context.SetBandwidth (std::atoi(value.c_str()));
int bw = i2p::context.GetBandwidthLimit();
InsertParam (results, "i2p.router.net.bw.in", bw);
}
void I2PControlService::OutboundBandwidthLimit (const std::string& value, std::ostringstream& results)
{
if (value != "null")
i2p::context.SetBandwidth (std::atoi(value.c_str()));
int bw = i2p::context.GetBandwidthLimit();
InsertParam (results, "i2p.router.net.bw.out", bw);
}
// certificate // certificate
void I2PControlService::CreateCertificate (const char *crt_path, const char *key_path) void I2PControlService::CreateCertificate (const char *crt_path, const char *key_path)
{ {

2
I2PControl.h

@ -94,6 +94,8 @@ namespace client
// NetworkSetting // NetworkSetting
typedef void (I2PControlService::*NetworkSettingRequestHandler)(const std::string& value, std::ostringstream& results); typedef void (I2PControlService::*NetworkSettingRequestHandler)(const std::string& value, std::ostringstream& results);
void InboundBandwidthLimit (const std::string& value, std::ostringstream& results);
void OutboundBandwidthLimit (const std::string& value, std::ostringstream& results);
private: private:

21
RouterInfo.cpp

@ -516,19 +516,20 @@ namespace data
m_BufferLen += privateKeys.GetPublic ()->GetSignatureLen (); m_BufferLen += privateKeys.GetPublic ()->GetSignatureLen ();
} }
void RouterInfo::SaveToFile (const std::string& fullPath) bool RouterInfo::SaveToFile (const std::string& fullPath)
{ {
m_FullPath = fullPath; m_FullPath = fullPath;
if (m_Buffer) if (!m_Buffer) {
{
std::ofstream f (fullPath, std::ofstream::binary | std::ofstream::out);
if (f.is_open ())
f.write ((char *)m_Buffer, m_BufferLen);
else
LogPrint(eLogError, "RouterInfo: Can't save to ", fullPath);
}
else
LogPrint (eLogError, "RouterInfo: Can't save, m_Buffer == NULL"); LogPrint (eLogError, "RouterInfo: Can't save, m_Buffer == NULL");
return false;
}
std::ofstream f (fullPath, std::ofstream::binary | std::ofstream::out);
if (!f.is_open ()) {
LogPrint(eLogError, "RouterInfo: Can't save to ", fullPath);
return false;
}
f.write ((char *)m_Buffer, m_BufferLen);
return true;
} }
size_t RouterInfo::ReadString (char * str, std::istream& s) size_t RouterInfo::ReadString (char * str, std::istream& s)

2
RouterInfo.h

@ -161,7 +161,7 @@ namespace data
bool IsUpdated () const { return m_IsUpdated; }; bool IsUpdated () const { return m_IsUpdated; };
void SetUpdated (bool updated) { m_IsUpdated = updated; }; void SetUpdated (bool updated) { m_IsUpdated = updated; };
void SaveToFile (const std::string& fullPath); bool SaveToFile (const std::string& fullPath);
std::shared_ptr<RouterProfile> GetProfile () const; std::shared_ptr<RouterProfile> GetProfile () const;
void SaveProfile () { if (m_Profile) m_Profile->Save (); }; void SaveProfile () { if (m_Profile) m_Profile->Save (); };

6
debian/copyright vendored

@ -3,9 +3,9 @@ Upstream-Name: i2pd
Source: https://github.com/PurpleI2P Source: https://github.com/PurpleI2P
Files: * Files: *
Copyright: 2013-2015 PurpleI2P Copyright: 2013-2016 PurpleI2P
License: BSD-3-clause License: BSD-3-clause
Copyright (c) 2013-2015, The PurpleI2P Project Copyright (c) 2013-2016, The PurpleI2P Project
. .
All rights reserved. All rights reserved.
. .
@ -34,7 +34,7 @@ License: BSD-3-clause
SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
Files: debian/* Files: debian/*
Copyright: 2014-2015 hagen <hagen@i2pmail.org> Copyright: 2014-2016 hagen <hagen@i2pmail.org>
2013-2015 Kill Your TV <killyourtv@i2pmail.org> 2013-2015 Kill Your TV <killyourtv@i2pmail.org>
License: GPL-2.0+ License: GPL-2.0+
This package is free software; you can redistribute it and/or modify This package is free software; you can redistribute it and/or modify

87
debian/i2pd.1 vendored

@ -5,7 +5,7 @@ i2pd \- Load-balanced unspoofable packet switching network
.SH SYNOPSIS .SH SYNOPSIS
.B i2pd .B i2pd
[\fIOPTION1\fR) [\fIOPTION2\fR]... [\fIOPTION1\fR] [\fIOPTION2\fR]...
.SH DESCRIPTION .SH DESCRIPTION
i2pd i2pd
@ -18,59 +18,58 @@ network is both distributed and dynamic, with no trusted parties.
Any of the configuration options below can be used in the \fBDAEMON_ARGS\fR variable in \fI/etc/default/i2pd\fR. Any of the configuration options below can be used in the \fBDAEMON_ARGS\fR variable in \fI/etc/default/i2pd\fR.
.BR .BR
.TP .TP
\fB\-\-host=\fR \fB\-\-help\fR
The external IP (deprecated) Show available options.
.TP
\fB\-\-port=\fR
The external port to listen on
.TP .TP
\fB\-\-httpport=\fR \fB\-\-conf=\fR
The HTTP port to listen on Config file (default: \fI~/.i2pd/i2pd.conf\fR or \fI/var/lib/i2pd/i2pd.conf\fR)
.BR
This parameter will be silently ignored if the specified config file does not exist.
Options specified on the command line take precedence over those in the config file.
.TP .TP
\fB\-\-log=\fR[\fI1\fR|\fI0\fR] \fB\-\-tunconf=\fR
.br Tunnels config file (default: \fI~/.i2pd/tunnels.conf\fR or \fI/var/lib/i2pd/tunnels.conf\fR)
Enable of disable logging to a file. \fI1\fR for yes, \fI0\fR for no. (default: \fI0\fR, off)
.TP .TP
\fB\-\-daemon=\fR[\fI1\fR|\fI0\fR] \fB\-\-pidfile=\fR
Enable or disable daemon mode. Daemon mode is enabled with \fI1\fR and disabled with \fI0\fR. (default: \fI0\fR, off) Where to write pidfile (don\'t write by default)
.TP .TP
\fB\-\-service=\fR[\fI1\fR|\fI0\fR] \fB\-\-log=\fR
If enabled, system folders (\fB/var/run/i2pd.pid\fR, \fB/var/log/i2pd.log\fR, \fB/var/lib/i2pd\fR) will be used. If off, \fB$HOME/.i2pd\fR will be used instead. (default: \fI0\fR, off). Logs destination: \fIstdout\fR, \fIfile\fR, \fIsyslog\fR (\fIstdout\fR if not set, \fIfile\fR - otherwise, for compatibility)
.TP .TP
\fB\-\-unreachable=\fR[\fI1\fR|\fI0\fR] \fB\-\-loglevel=\fR
\fI1\fR if router is declared as unreachable and works through introducers. (default: \fI0\fR, off) Log messages above this level (\fIdebug\fR, \fBinfo\fR, \fIwarn\fR, \fIerror\fR)
.TP .TP
\fB\-\-v6=\fR[\fI1\fR|\fI0\fR] \fB\-\-datadir=\fR
\fI1\fR if \fBi2pd\fR should communicate via IPv6. (default: \fI0\fR, off) Path to storage of i2pd data (RI, keys, peer profiles, ...)
.TP .TP
\fB\-\-floodfill=\fR[\fI1\fR|\fI0\fR] \fB\-\-host=\fR
\fI1\fR if \fBi2pd\fR should become a floodfill. (default: \fI0\fR, off) The external IP address
.TP .TP
\fB\-\-bandwidth=\fR[\fI1\fR|\fI0\fR] \fB\-\-port=\fR
\fIL\fR if \fBi2pd\fR should be limited to 32KiB/s. Enabling floodfill will automatically set this to \fI0\fR (default: \fI0\fR, no limit) The port to listen on for incoming connections
.TP .TP
\fB\-\-httpproxyport=\fR \fB\-\-daemon\fR
The local port for the HTTP Proxy to listen on (default: \fI4446\fR) Router will go to background after start
.TP .TP
\fB\-\-socksproxyport=\fR \fB\-\-service\fR
The local port for the SOCKS proxy to listen on (default: \fI4447\fR) Router will use system folders like \fI/var/lib/i2pd\fR
.TP .TP
\fB\-\-proxykeys=\fR \fB\-\-ipv6\fR
An optional keys file for tunnel local destination (both HTTP and SOCKS) Enable communication through ipv6. false by default
.TP .TP
\fB\-\-samport=\fR \fB\-\-notransit\fR
Port of SAM bridge. Usually \fI7656\fR. SAM will not be enabled if this is not set. (default: unset) Router will not accept transit tunnels at startup
.TP .TP
\fB\-\-bobport=\fR \fB\-\-floodfill\fR
Port of BOB command channel. Usually \fI2827\fR. BOB will not be enabled if this is not set. (default: unset) Router will be floodfill
.TP .TP
\fB\-\-i2pcontrolport=\fR \fB\-\-bandwidth=\fR
Port of I2P control service. Usually \fI7650\fR. I2PControl will not be enabled if this is not set. (default: unset) Bandwidth limit: integer in KBps or letter aliases: \fIL (32KBps)\fR, O (256), P (2048), X (>9000)
.TP .TP
\fB\-\-conf=\fR \fB\-\-family=\fR
Config file (default: \fI~/.i2pd/i2pd.conf\fR or \fI/var/lib/i2pd/i2pd.conf\fR) Name of a family, router belongs to.
This parameter will be silently ignored if the specified config file does not exist. .PP
Options specified on the command line take precedence over those in the config file. See service-specific parameters in page \fIdocs/configuration.md\fR or in example config file \fIdocs/i2pd.conf\fR
.SH FILES .SH FILES
.PP .PP
@ -82,10 +81,10 @@ i2pd configuration files (when running as a system service)
.PP .PP
/var/lib/i2pd/ /var/lib/i2pd/
.RS 4 .RS 4
i2pd profile directory (when running as a system service, see \fB\-\-service=\fR above) i2pd profile directory (when running as a system service, see \fB\-\-service\fR above)
.RE .RE
.PP .PP
$HOME/.i2pd $HOME/.i2pd/
.RS 4 .RS 4
i2pd profile directory (when running as a normal user) i2pd profile directory (when running as a normal user)
.RE .RE
@ -95,7 +94,9 @@ i2pd profile directory (when running as a normal user)
default I2P hosts file default I2P hosts file
.SH AUTHOR .SH AUTHOR
This manual page was written by kytv <killyourtv@i2pmail.org> for the Debian system (but may be used by others). This manual page was written by kytv <killyourtv@i2pmail.org> for the Debian system (but may be used by others).
.BR .PP
Updated by hagen <hagen@i2pmail.org> in 2016.
.PP
Permission is granted to copy, distribute and/or modify this document under the terms of the GNU General Public License, Version 2 or any later version published by the Free Software Foundation Permission is granted to copy, distribute and/or modify this document under the terms of the GNU General Public License, Version 2 or any later version published by the Free Software Foundation
.BR .BR
On Debian systems, the complete text of the GNU General Public License can be found in /usr/share/common-licenses/GPL On Debian systems, the complete text of the GNU General Public License can be found in \fI/usr/share/common-licenses/GPL\fR

19
debian/i2pd.conf vendored

@ -1,19 +0,0 @@
ipv6
[httpproxy]
address = 127.0.0.1
port = 4444
# other services (disabled by default)
#
#[sam]
#address = 127.0.0.1
#port = 7656
#
#[bob]
#address = 127.0.0.1
#port = 2827
#
#[i2pcontrol]
#address = 127.0.0.1
#port = 7650

2
debian/i2pd.install vendored

@ -1,5 +1,5 @@
i2pd usr/sbin/ i2pd usr/sbin/
debian/i2pd.conf etc/i2pd/ docs/i2pd.conf etc/i2pd/
debian/tunnels.conf etc/i2pd/ debian/tunnels.conf etc/i2pd/
debian/subscriptions.txt etc/i2pd/ debian/subscriptions.txt etc/i2pd/
contrib/certificates/ usr/share/i2pd/ contrib/certificates/ usr/share/i2pd/

4
docs/configuration.md

@ -16,8 +16,8 @@ If you are upgrading your very old router (< 2.3.0) see also [this](config_opts_
* --logfile= - Path to logfile (default - autodetect) * --logfile= - Path to logfile (default - autodetect)
* --loglevel= - Log messages above this level (debug, *info, warn, error) * --loglevel= - Log messages above this level (debug, *info, warn, error)
* --datadir= - Path to storage of i2pd data (RI, keys, peer profiles, ...) * --datadir= - Path to storage of i2pd data (RI, keys, peer profiles, ...)
* --host= - The external IP * --host= - Router external IP for incoming connections
* --port= - The port to listen on * --port= - Port to listen for incoming connections (default: auto)
* --daemon - Router will go to background after start * --daemon - Router will go to background after start
* --service - Router will use system folders like '/var/lib/i2pd' * --service - Router will use system folders like '/var/lib/i2pd'
* --ipv6 - Enable communication through ipv6. false by default * --ipv6 - Enable communication through ipv6. false by default

4
docs/i2pd.conf

@ -69,8 +69,8 @@ port = 7070
## Uncomment and set to 'false' to disable HTTP Proxy ## Uncomment and set to 'false' to disable HTTP Proxy
# enabled = true # enabled = true
## Address and port service will listen on ## Address and port service will listen on
# address = 127.0.0.1 address = 127.0.0.1
# port = 4444 port = 4444
## Optional keys file for proxy local destination ## Optional keys file for proxy local destination
# keys = http-proxy-keys.dat # keys = http-proxy-keys.dat

Loading…
Cancel
Save