DM Cyber Security
1 year ago
committed by
GitHub
9 changed files with 1443 additions and 0 deletions
@ -0,0 +1,953 @@ |
|||||||
|
# for this file format description, |
||||||
|
# see https://github.com/olivierlacan/keep-a-changelog |
||||||
|
|
||||||
|
## [2.47.0] - 2023-03-11 |
||||||
|
### Added |
||||||
|
- Congestion caps |
||||||
|
- SAM UDP port parameter |
||||||
|
- Support domain addresses for yggdrasil reseeds |
||||||
|
### Changed |
||||||
|
- DHT for floodfills instead plain list |
||||||
|
- Process router's messages in separate thread |
||||||
|
- Don't publish non-reachable router |
||||||
|
- Send and check target destination in first streaming SYN packet |
||||||
|
- Reseeds list |
||||||
|
### Fixed |
||||||
|
- Memory leak in windows network state detection |
||||||
|
- Reseed attempts from invalid address |
||||||
|
|
||||||
|
## [2.46.1] - 2023-02-20 |
||||||
|
### Fixed |
||||||
|
- Race condition while getting router's peer profile |
||||||
|
- Creation of new router.info |
||||||
|
- Displaying LeaseSets in the webconsole |
||||||
|
- Crash when processing ACK request |
||||||
|
|
||||||
|
## [2.46.0] - 2023-02-15 |
||||||
|
### Added |
||||||
|
- Limit number of acked SSU2 packets to 511 |
||||||
|
- Localization to Swedish, Portuguese, Turkish, Polish |
||||||
|
- Periodically send Datetime block in NTCP2 and SSU2 |
||||||
|
- Don't select random port from reserved |
||||||
|
- In memory table for peer profiles |
||||||
|
- Store if router was unreachable in it's peer profile |
||||||
|
- Show IPv6 addresses in square brackets in webconsole |
||||||
|
- Check referer when processing Addresshelper |
||||||
|
### Changed |
||||||
|
- Algorithm for tunnel creation success rate calculation |
||||||
|
- Drop incoming NTCP2 and SSU2 connection if published IP doesn't match actual endpoint |
||||||
|
- Exclude actually unreachable router from netdb for 2 hours |
||||||
|
- Select first hop from high bandwidth peers for client tunnels |
||||||
|
- Drop too long or too short LeaseSet |
||||||
|
- Delete router from netdb if became invalid after update |
||||||
|
- Terminate existing session if clock skew detected |
||||||
|
- Close previous UDP socket if open before reopening |
||||||
|
- Minimal version for floodfill is 0.9.51 |
||||||
|
- Sort transports by endpoints in webconsole |
||||||
|
### Fixed |
||||||
|
- Deadlock during processing I2NP block with Garlic in ECIES encrypted message to router |
||||||
|
- Race condition with encrypted LeaseSets |
||||||
|
- HTTP query detection |
||||||
|
- Connection attempts to IPs from invalid ranges |
||||||
|
- Publish "0.0.0.0" in RouterInfo |
||||||
|
- Crash upon receiving PeerTest 7 |
||||||
|
- Tunnels for closed SAM session socket |
||||||
|
- Missing NTCP2 address in RouterInfo if enabled back |
||||||
|
|
||||||
|
## [2.45.1] - 2023-01-11 |
||||||
|
### Added |
||||||
|
- Full Cone NAT status error |
||||||
|
### Changed |
||||||
|
- Drop duplicated I2NP messages in SSU2 |
||||||
|
- Set rejection code 30 if tunnel with id already exists |
||||||
|
- Network status is always OK if peer test msg 5 received |
||||||
|
### Fixed |
||||||
|
- UPnP crash if SSU2 or NTCP2 is disabled |
||||||
|
- Crash on termination for some platforms |
||||||
|
|
||||||
|
## [2.45.0] - 2023-01-03 |
||||||
|
### Added |
||||||
|
- Test for Symmetric NAT with peer test msgs 6 and 7 |
||||||
|
- Webconsole "No Descriptors" router error state |
||||||
|
- 1 and 15 seconds bandwidth calculation for i2pcontrol |
||||||
|
- Show non-zero send queue size for transports in web console |
||||||
|
- Compressible padding for I2P addresses |
||||||
|
- Localization to Czech |
||||||
|
- Don't accept incoming session from invalid/reserved addresses for NTCP2 and SSU2 |
||||||
|
- Limit simultaneous tunnel build requests by 4 per pool |
||||||
|
### Changed |
||||||
|
- Removed SSU support |
||||||
|
- Reduced bandwidth calculation interval from 60 to 15 seconds |
||||||
|
- Increased default max transit tunnels number from 2500 to 5000 or 10000 for floodfill |
||||||
|
- Transit tunnels limit is doubled if floodfill mode is enabled |
||||||
|
- NTCP2 and SSU2 timestamps are rounded to seconds |
||||||
|
- Drop RouterInfos and LeaseSets with timestamp from future |
||||||
|
- Don't delete unreachable routers if tunnel creation success rate is too low |
||||||
|
- Refuse duplicated incoming pending NTCP2 session from same IP |
||||||
|
- Don't send SSU2 termination again if termination received block received |
||||||
|
- Handle standard network error for SSU2 without throwing an exception |
||||||
|
- Don't select overloaded peer for next tunnel |
||||||
|
- Remove "X-Requested-With" in HTTP Proxy for non-AJAX requests |
||||||
|
### Fixed |
||||||
|
- File descriptors leak |
||||||
|
- Random crash on AddressBook update |
||||||
|
- Crash if incorrect LeaseSet size |
||||||
|
- Spamming to log if no descriptors |
||||||
|
- ::1 address in RouterInfo |
||||||
|
- SSU2 network error handling (especially for Windows) |
||||||
|
- Race condition with pending outgoing SSU2 sessions |
||||||
|
- RTT self-reduction for long-live streams |
||||||
|
|
||||||
|
## [2.44.0] - 2022-11-20 |
||||||
|
### Added |
||||||
|
- SSL connection for server I2P tunnels |
||||||
|
- Localization to Italian and Spanish |
||||||
|
- SSU2 through SOCKS5 UDP proxy |
||||||
|
- Reload tunnels through web console |
||||||
|
- SSU2 send immediate ack request flag |
||||||
|
- SSU2 send and verify path challenge |
||||||
|
- Configurable ssu2.mtu4 and ssu2.mtu6 |
||||||
|
### Changed |
||||||
|
- SSU2 is enabled and SSU is disabled by default |
||||||
|
- Separate network status and error |
||||||
|
- Random selection between NTCP2 and SSU2 priority |
||||||
|
- Added notbob.i2p to jump services |
||||||
|
- Remove DoNotTrack flag from HTTP Request header |
||||||
|
- Skip addresshelper page if destination was not changed |
||||||
|
- SSU2 allow different ports from RelayReponse and HolePunch |
||||||
|
- SSU2 resend PeerTest msg 1 and msg 2 |
||||||
|
- SSU2 Send Retry instead SessionCreated if clock skew detected |
||||||
|
### Fixed |
||||||
|
- Long HTTP headers for HTTP proxy and HTTP server tunnel |
||||||
|
- SSU2 resends and resend limits |
||||||
|
- Crash at startup if addressbook is disabled |
||||||
|
- NTCP2 ipv6 connection through SOCKS5 proxy |
||||||
|
- SSU2 SessionRequest with zero token |
||||||
|
- SSU2 MTU less than 1280 |
||||||
|
- SSU2 port=1 |
||||||
|
- Incorrect addresses from network interfaces |
||||||
|
- Definitions for Darwin PPC; do not use pthread_setname_np |
||||||
|
|
||||||
|
## [2.43.0] - 2022-08-22 |
||||||
|
### Added |
||||||
|
- Complete SSU2 implementation |
||||||
|
- Localization to Chinese |
||||||
|
- Send RouterInfo update for long live sessions |
||||||
|
- Explicit ipv6 ranges of known tunnel brokers for MTU detection |
||||||
|
- Always send "Connection: close" and strip out Keep-Alive for server HTTP tunnel |
||||||
|
- Show ports for all transports in web console |
||||||
|
- Translation of webconsole site title |
||||||
|
- Support for Windows ProgramData path when running as service |
||||||
|
- Ability to turn off address book |
||||||
|
- Handle signals TSTP and CONT to stop and resume network |
||||||
|
### Changed |
||||||
|
- Case insensitive headers for server HTTP tunnel |
||||||
|
- Do not show 'Address registration' line if LeaseSet is encrypted |
||||||
|
- SSU2 transports have higher priority than SSU |
||||||
|
- Disable ElGamal precalculated table if no SSU |
||||||
|
- Deprecate limits.ntcpsoft, limits.ntcphard and limits.ntcpthreads config options |
||||||
|
- SSU2 is enabled and SSU is disabled by default for new installations |
||||||
|
### Fixed |
||||||
|
- Typo with Referer header name in HTTP proxy |
||||||
|
- Can't handle garlic message from an exploratory tunnel |
||||||
|
- Incorrect encryption key for exploratory lookup reply |
||||||
|
- Bound checks issues in LeaseSets code |
||||||
|
- MTU detection on Windows |
||||||
|
- Crash on stop of active server tunnel |
||||||
|
- Send datagram to wrong destination in SAM |
||||||
|
- Incorrect static key in RouterInfo if the keys were regenerated |
||||||
|
- Duplicated sessions in BOB |
||||||
|
|
||||||
|
## [2.42.1] - 2022-05-24 |
||||||
|
### Fixed |
||||||
|
- Incorrect jump link in HTTP Proxy |
||||||
|
|
||||||
|
## [2.42.0] - 2022-05-22 |
||||||
|
### Added |
||||||
|
- Preliminary SSU2 implementation |
||||||
|
- Tunnel length variance |
||||||
|
- Localization to French |
||||||
|
- Daily cleanup of obsolete peer profiles |
||||||
|
- Ordered jump services list in HTTP proxy |
||||||
|
- Win32 service |
||||||
|
- Show port for local non-published SSU addresses in web console |
||||||
|
### Changed |
||||||
|
- Maximum RouterInfo length increased to 3K |
||||||
|
- Skip unknown addresses in RouterInfo |
||||||
|
- Don't pick own router for peer test |
||||||
|
- Reseeds list |
||||||
|
- Internal numeric id for families |
||||||
|
- Use ipv6 preference only when netinet headers not used |
||||||
|
- Close stream if delete requested |
||||||
|
- Remove version from title in web console |
||||||
|
- Drop MESHNET build option |
||||||
|
- Set data path before initialization |
||||||
|
- Don't show registration block in web console if token is not provided |
||||||
|
### Fixed |
||||||
|
- Encrypted LeaseSet for EdDSA signature |
||||||
|
- Clients tunnels are not built if clock is not synced on start |
||||||
|
- Incorrect processing of i2cp.dontPublishLeaseSet param |
||||||
|
- UDP tunnels reload |
||||||
|
- Build for LibreSSL 3.5.2 |
||||||
|
- Race condition in short tunnel build message |
||||||
|
- Race condition in local RouterInfo buffer allocation |
||||||
|
|
||||||
|
## [2.41.0] - 2022-02-20 |
||||||
|
### Added |
||||||
|
- Clock syncronization through SSU |
||||||
|
- Drop routers older than 6 months on start |
||||||
|
- Localization to German |
||||||
|
- Don't send streaming ack too frequently |
||||||
|
- Select compatible outbound tunnel for I2CP messages |
||||||
|
- Restart webconsole's acceptor in case of exception |
||||||
|
### Changed |
||||||
|
- Use builtin bitswap for endian on windows |
||||||
|
- Send SessionCreated before connection close if clock skew |
||||||
|
- Try another floodfill for publishing if no compatible tunnels found |
||||||
|
- Reduce memory usage for RouterInfo structures |
||||||
|
- Avoid duplicated addresses in RouterInfo. Check presence of netId and version |
||||||
|
- Use TCP/IP sockets for I2CP on Android instead local sockets |
||||||
|
- Return uptime as integer in I2PControl |
||||||
|
- Reseed servers list/cerificates |
||||||
|
- Webconsole's dark style colors |
||||||
|
### Fixed |
||||||
|
- Attempt to use Yggdrasil on start on Android |
||||||
|
- Attempts to send peer tests to itself |
||||||
|
- Severe packets drop in SSU |
||||||
|
- Crash on tunnel tests |
||||||
|
- Loading addressbook subscriptions from config |
||||||
|
- Multiple I2CP session to the same destination |
||||||
|
- Build on Apple Silicon |
||||||
|
|
||||||
|
## [2.40.0] - 2021-11-29 |
||||||
|
### Added |
||||||
|
- Keep alive parameter for client tunnels |
||||||
|
- Support openssl 3.0.0 |
||||||
|
- Localization to Armenian |
||||||
|
- Show git commit info in version |
||||||
|
- Windows menu item for opening datadir |
||||||
|
- Reseed if too few floodfills |
||||||
|
- Don't publish old and replacing tunnel in LeaseSet |
||||||
|
- Webconsole light/dark theme depending on system settings (via CSS) |
||||||
|
### Changed |
||||||
|
- Set gzip compression to false by default |
||||||
|
- Build tunnel through ECIES routers only |
||||||
|
- Removed ElGamal support for tunnels |
||||||
|
- Moved webconsole resources to separate file |
||||||
|
- Pick tunnels with compatible transport with another tunnel of floodfill |
||||||
|
- Use common cleanup timer for all SSU sessions |
||||||
|
- Reduced memory usage |
||||||
|
- Reseed servers list |
||||||
|
- i18n code called from ClientContext |
||||||
|
### Fixed |
||||||
|
- Tunnels reload |
||||||
|
- Some typos in log messages |
||||||
|
- Cleanup relay requests table |
||||||
|
- Server tunnel is not published |
||||||
|
- Build on GNU/Hurd. Disable pthread_setname_np |
||||||
|
- Crash when incorrect sigtype used with blinding |
||||||
|
|
||||||
|
## [2.39.0] - 2021-08-23 |
||||||
|
### Added |
||||||
|
- Short tunnel build messages |
||||||
|
- Localization. To: Russian, Ukrainian, Turkmen, Uzbek and Afrikaans |
||||||
|
- Custom CSS styles for webconsole |
||||||
|
- Avoid slow tunnels with more than 250 ms per hop |
||||||
|
- Process DELAY_REQUESTED streaming option |
||||||
|
- "certsdir" options for certificates location |
||||||
|
- Keep own RouterInfo in NetBb |
||||||
|
- Pick ECIES routers only for tunnels on non-x64 |
||||||
|
- NTP sync through ipv6 |
||||||
|
- Allow ipv6 addresses for UDP server tunnels |
||||||
|
### Changed |
||||||
|
- Rekey of all routers to ECIES |
||||||
|
- Better distribution for random tunnel's peer selection |
||||||
|
- Yggdrasil reseed for v0.4, added two more |
||||||
|
- Encryption type 0,4 by default for server tunnels |
||||||
|
- Handle i2cp.dontPublishLeaseSet param for all destinations |
||||||
|
- reg.i2p for subscriptions |
||||||
|
- LeaseSet type 3 by default |
||||||
|
- Don't allocate payload buffer for every single ECIESx25519 message |
||||||
|
- Prefer public ipv6 instead rfc4941 |
||||||
|
- Optimal padding for one-time ECIESx25519 message |
||||||
|
- Don't send datetime block for one-time ECIESx25519 message with one-time key |
||||||
|
- Router with expired introducer is still valid |
||||||
|
- Don't disable floodfill if still reachable by ipv6 |
||||||
|
- Set minimal version for floodfill to 0.9.38 |
||||||
|
- Eliminate extra lookups for sequential fragments on tunnel endpoint |
||||||
|
- Consistent path for explicit peers |
||||||
|
- Always create new tunnel from exploratory pool |
||||||
|
- Don't try to connect to a router not reachable from us |
||||||
|
- Mark additional ipv6 addresses/nets as reserved (#1679) |
||||||
|
### Fixed |
||||||
|
- Zero-hop tunnels |
||||||
|
- Crash upon SAM session termination |
||||||
|
- Build with boost < 1.55.0 |
||||||
|
- Address type for NTCP2 acceptors |
||||||
|
- Check of ipv4/ipv6 address |
||||||
|
- Request router to send to if not in NetDb |
||||||
|
- Count outbound traffic for zero-hop tunnels |
||||||
|
- URLdecode domain for registration string generator in webconsole |
||||||
|
|
||||||
|
## [2.38.0] - 2021-05-17 |
||||||
|
### Added |
||||||
|
- Publish ipv6 introducers |
||||||
|
- Bind ipv6 or yggdrasil NTCP2 acceptor to specified address |
||||||
|
- Support .b32.i2p addresses and hostnames for SAM STREAM CREATE |
||||||
|
- ipv6 peer tests |
||||||
|
- Publish iexp param for introducers |
||||||
|
- Show ipv6 network status on the webconsole |
||||||
|
- EdDSA signing keys can also be blinded |
||||||
|
- Show router version on the webconsole |
||||||
|
### Changed |
||||||
|
- Rekey of all routers but floodfills to ECIES |
||||||
|
- Increased number of precalculated x25519 keys to 15 |
||||||
|
- Don't publish LeaseSet without inbound tunnels |
||||||
|
- Reseed from compatible address(ipv4 or ipv6) |
||||||
|
- Recongnize v4 and v6 SSU addresses without host |
||||||
|
- Inbound tunnel gateway must be ipv4 compatible |
||||||
|
- Don't select next introducers from existing sessions |
||||||
|
- Set X bandwidth for floodfill by default |
||||||
|
### Fixed |
||||||
|
- Incoming ECIES-x25519 session doesn't send updated LeaseSet |
||||||
|
- Unique local address for server tunnels |
||||||
|
- Race condition for LeaseSet creation in I2CP |
||||||
|
- Relay tag for ipv6 introducer |
||||||
|
- Already expired introducers |
||||||
|
- Find connected router for first peer in tunnel |
||||||
|
- Failed outgoing ECIES-x25519 session's tagset stays forever |
||||||
|
- Yggdrasil address disappears if router becomes unreachable through ipv6 |
||||||
|
- Ignore SSU address/introducers if port is not specified |
||||||
|
- Check identity and signature length for SSU SessionConfirmed |
||||||
|
|
||||||
|
## [2.37.0] - 2021-03-15 |
||||||
|
### Added |
||||||
|
- Address registration line for reg.i2p and stats.i2p through the web console |
||||||
|
- "4" and "6" caps for addresses without published IP address |
||||||
|
- Mesh and Proxy network statuses |
||||||
|
- Symmetric NAT network status error |
||||||
|
- Bind server tunnel connection to specified address |
||||||
|
- lookuplocal BOB extended command |
||||||
|
- address4 and address6 parameters to bind outgoing connections to |
||||||
|
- Rekey of low-bandwidth routers to ECIES |
||||||
|
- Popup notification windows when unable to parse config for Windows |
||||||
|
### Changed |
||||||
|
- Floodfills with "U" cap are not ignored anymore |
||||||
|
- Check transports reachability between tunnel peers and between router and floodfill |
||||||
|
- NTCP2 and reseed HTTP proxy support authorization now |
||||||
|
- Show actual IP addresses for proxy connections |
||||||
|
- Publish and handle SSU addreses without host |
||||||
|
- Outbound tunnel endpoint must be ipv4 compatible |
||||||
|
- Logging optimization |
||||||
|
- Removed Windows service |
||||||
|
### Fixed |
||||||
|
- Incoming SSU session terminates after 5 seconds |
||||||
|
- Outgoing NTCP2 ipv4 session even if ipv4 is disabled |
||||||
|
- No incoming Yggdrasil connection if connected through NTCP2 proxy |
||||||
|
- Race condition between tunnel build and floodfill requests decryption for ECIES routers |
||||||
|
- Numeric bandwidth limitation |
||||||
|
- Yggdrasil for Android |
||||||
|
|
||||||
|
## [2.36.0] - 2021-02-15 |
||||||
|
### Added |
||||||
|
- Encrypted lookup and publications to ECIES-x25519 floodfiils |
||||||
|
- Yggdrasil transports and reseeds |
||||||
|
- Dump addressbook in hosts.txt format |
||||||
|
- Request RouterInfo through exploratory tunnels if direct connection to fllodfill is not possible |
||||||
|
- Threads naming |
||||||
|
- Check if public x25519 key is valid |
||||||
|
- ECIES-X25519-AEAD-Ratchet for shared local destination |
||||||
|
- LeaseSet creation timeout for I2CP session |
||||||
|
- Resend RouterInfo after some interval for longer NTCP2 sessions |
||||||
|
- Select reachable router of inbound tunnel gateway |
||||||
|
- Reseed if no compatible routers in netdb |
||||||
|
- Refresh on swipe in Android webconsole |
||||||
|
### Changed |
||||||
|
- reg.i2p for default addressbook instead inr.i2p |
||||||
|
- ECIES-x25519 (crypto type 4) for new routers |
||||||
|
- Try to connect to all compatible addresses from peer's RouterInfo |
||||||
|
- Replace LeaseSet completely if store type changes |
||||||
|
- Try ECIES-X25519-AEAD-Ratchet tag before ElGamal |
||||||
|
- Don't detach ECIES-X25519-AEAD-Ratchet session from destination immediately |
||||||
|
- Viewport and styles on error in HTTP proxy |
||||||
|
- Don't create notification when Windows taskbar restarted |
||||||
|
- Cumulative SSU ACK bitfields |
||||||
|
- limit tunnel length to 8 hops |
||||||
|
- Limit tunnels quantity to 16 |
||||||
|
### Fixed |
||||||
|
- Handling chunked HTTP response in addressbook |
||||||
|
- Missing ECIES-X25519-AEAD-Ratchet tags for multiple streams with the same destination |
||||||
|
- Correct NAME for NAMING REPLY in SAM |
||||||
|
- SSU crash on termination |
||||||
|
- Offline signature length for stream close packet |
||||||
|
- Don't send updated LeaseSet through a terminated session |
||||||
|
- Decryption of follow-on ECIES-X25519-AEAD-Ratchet NSR messages |
||||||
|
- Non-confirmed LeaseSet is resent too late for ECIES-X25519-AEAD-Ratchet session |
||||||
|
|
||||||
|
## [2.35.0] - 2020-11-30 |
||||||
|
### Added |
||||||
|
- ECIES-x25519 routers |
||||||
|
- Random intro keys for SSU |
||||||
|
- Graceful shutdown timer for windows |
||||||
|
- Send queue for I2CP messages |
||||||
|
- Update DSA router keys to EdDSA |
||||||
|
- TCP_QUICKACK for NTCP2 sockets on Linux |
||||||
|
### Changed |
||||||
|
- Exclude floodfills with DSA signatures and < 0.9.28 |
||||||
|
- Random intervals between tunnel tests and manage for tunnel pools |
||||||
|
- Don't replace an addressbook record by one with DSA signature |
||||||
|
- Publish RouterInfo after update |
||||||
|
- Create paired inbound tunnels if no inbound tunnels yet |
||||||
|
- Reseed servers list |
||||||
|
### Fixed |
||||||
|
- Transient signature length, if different from identity |
||||||
|
- Terminate I2CP session if destroyed |
||||||
|
- RouterInfo publishing confirmation |
||||||
|
- Check if ECIES-X25519-AEAD-Ratchet session expired before generating more tags |
||||||
|
- Correct block size for delivery type local for ECIES-X25519-AEAD-Ratchet |
||||||
|
|
||||||
|
## [2.34.0] - 2020-10-27 |
||||||
|
### Added |
||||||
|
- Ping responses for streaming |
||||||
|
- STREAM FORWARD for SAM |
||||||
|
- Tunnels through ECIES-x25519 routers |
||||||
|
- Single thread for I2CP |
||||||
|
- Shared transient destination between proxies |
||||||
|
- Database lookups from ECIES destinations with ratchets response |
||||||
|
- Handle WebDAV HTTP methods |
||||||
|
- Don't try to connect or build tunnels if offline |
||||||
|
- Validate IP when trying connect to remote peer |
||||||
|
- Handle ICMP responses and WinAPI errors for SSU |
||||||
|
### Changed |
||||||
|
- Removed NTCP |
||||||
|
- Dropped gcc 4.7 support |
||||||
|
- Encyption type 0,4 by default for client tunnels |
||||||
|
- Stripped out some HTTP header for HTTP server response |
||||||
|
- HTTP 1.1 addressbook requests |
||||||
|
- Set LeaseSet type to 3 for ratchets if not specified |
||||||
|
- Handle SSU v4 and v6 messages in one thread |
||||||
|
- Eliminate DH keys thread |
||||||
|
### Fixed |
||||||
|
- Random crashes on I2CP session disconnect |
||||||
|
- Stream through racthets hangs if first SYN was not acked |
||||||
|
- Check "Last-Modified" instead "If-Modified-Since" for addressbook reponse |
||||||
|
- Trim behind ECIESx25519 tags |
||||||
|
- Few bugs with Android main activity |
||||||
|
- QT visual and layout issues |
||||||
|
|
||||||
|
## [2.33.0] - 2020-08-24 |
||||||
|
### Added |
||||||
|
- Shared transient addresses |
||||||
|
- crypto.ratchet.inboundTags paramater |
||||||
|
- Multiple encryption keys through I2CP |
||||||
|
- Pre-calculated x25519 ephemeral keys |
||||||
|
- Change datagram routing path if nothing comes back in 10 seconds |
||||||
|
- Shared routing path for datagram session |
||||||
|
### Changed |
||||||
|
- UDP tunnels send mix of repliable and raw datagrams in bulk |
||||||
|
- Encrypt SSU packet again upon resend |
||||||
|
- Start new tunnel message if remaining buffer is too small |
||||||
|
- Use LeaseSet2 for ECIES-X25519-AEAD-Ratchet automatically |
||||||
|
- Save new ECIES-X25519-AEAD-Ratchet session with NSR tagset |
||||||
|
- Generate random padding lengths for ECIES-X25519-AEAD-Ratchet in bulk |
||||||
|
- Webconsole layout |
||||||
|
- Reseed servers list |
||||||
|
### Fixed |
||||||
|
- Don't connect through terminated SAM destination |
||||||
|
- Differentiate UDP server sessions by port |
||||||
|
- ECIES-X25519-AEAD-Ratchet through I2CP |
||||||
|
- Don't save invalid address to AddressBook |
||||||
|
- ECDSA signatures names in SAM |
||||||
|
- AppArmor profile |
||||||
|
|
||||||
|
## [2.32.1] - 2020-06-02 |
||||||
|
### Added |
||||||
|
- Read explicit peers in tunnels config |
||||||
|
### Fixed |
||||||
|
- Generation of tags for detached sessions |
||||||
|
- Non-updating LeaseSet1 |
||||||
|
- Start when deprecated websocket options present in i2pd.conf |
||||||
|
|
||||||
|
## [2.32.0] - 2020-05-25 |
||||||
|
### Added |
||||||
|
- Multiple encryption types for local destinations |
||||||
|
- Next key and tagset for ECIES-X25519-AEAD-Ratchet |
||||||
|
- NTCP2 through SOCKS proxy |
||||||
|
- Throw error message if any port to bind is occupied |
||||||
|
- gzip parameter for UDP tunnels |
||||||
|
- Show ECIES-X25519-AEAD-Ratchet sessions and tags on the web console |
||||||
|
- Simplified implementation of gzip for no compression mode |
||||||
|
- Allow ECIES-X25519-AEAD-Ratchet session restart after 2 minutes |
||||||
|
- Added logrotate config for rpm package |
||||||
|
### Changed |
||||||
|
- Select peers for client tunnels among routers >= 0.9.36 |
||||||
|
- Check ECIES flag for encrypted lookup reply |
||||||
|
- Streaming MTU size 1812 for ECIES-X25519-AEAD-Ratchet |
||||||
|
- Don't calculate checksum for Data message send through ECIES-X25519-AEAD-Ratchet |
||||||
|
- Catch network connectivity status for Windows |
||||||
|
- Stop as soon as no more transit tunnels during graceful shutdown for Android |
||||||
|
- RouterInfo gzip compression level depends on size |
||||||
|
- Send response to received datagram from ECIES-X25519-AEAD-Ratchet session |
||||||
|
- Update webconsole functional |
||||||
|
- Increased max transit tunnels limit |
||||||
|
- Reseeds list |
||||||
|
- Dropped windows support in cmake |
||||||
|
### Fixed |
||||||
|
- Correct timestamp check for LeaseSet2 |
||||||
|
- Encrypted leaseset without authentication |
||||||
|
- Change SOCKS proxy connection response for clients without socks5h support (#1336) |
||||||
|
|
||||||
|
## [2.31.0] - 2020-04-10 |
||||||
|
### Added |
||||||
|
- NTCP2 through HTTP proxy |
||||||
|
- Publish LeaseSet2 for I2CP destinations |
||||||
|
- Show status page on main activity for android |
||||||
|
- Handle ECIESFlag in DatabaseLookup at floodfill |
||||||
|
- C++17 features for eligible compilers |
||||||
|
### Changed |
||||||
|
- Droped Websockets and Lua support |
||||||
|
- Send DeliveryStatusMsg for LeaseSet for ECIES-X25519-AEAD-Ratchet |
||||||
|
- Keep sending new session reply until established for ECIES-X25519-AEAD-Ratchet |
||||||
|
- Updated SSU log messages |
||||||
|
- Reopen SSU socket on exception |
||||||
|
- Security hardening headers in web console |
||||||
|
- Various web console changes |
||||||
|
- Various QT changes |
||||||
|
### Fixed |
||||||
|
- NTCP2 socket descriptors leak |
||||||
|
- Race condition with router's identity in transport sessions |
||||||
|
- Not terminated streams remain forever |
||||||
|
|
||||||
|
## [2.30.0] - 2020-02-25 |
||||||
|
### Added |
||||||
|
- Single threaded SAM |
||||||
|
- Experimental support of ECIES-X25519-AEAD-Ratchet crypto type |
||||||
|
### Changed |
||||||
|
- Minimal MTU size is 1280 for ipv6 |
||||||
|
- Use unordered_map instead map for destination's sessions and tags list |
||||||
|
- Use std::shuffle instead std::random_shuffle |
||||||
|
- SAM is single threaded by default |
||||||
|
- Reseeds list |
||||||
|
### Fixed |
||||||
|
- Correct termination of streaming destination |
||||||
|
- Extra ',' in RouterInfo response in I2PControl |
||||||
|
- SAM crash on session termination |
||||||
|
- Storage for Android 10 |
||||||
|
|
||||||
|
## [2.29.0] - 2019-10-21 |
||||||
|
### Added |
||||||
|
- Client auth flag for b33 address |
||||||
|
### Changed |
||||||
|
- Remove incoming NTCP2 session from pending list when established |
||||||
|
- Handle errors for NTCP2 SessionConfrimed send |
||||||
|
### Fixed |
||||||
|
- Failure to start on Windows XP |
||||||
|
- SAM crash if invalid lookup address |
||||||
|
- Possible crash when UPnP enabled on shutdown |
||||||
|
|
||||||
|
## [2.28.0] - 2019-08-27 |
||||||
|
### Added |
||||||
|
- RAW datagrams in SAM |
||||||
|
- Publishing encrypted LeaseSet2 with DH or PSH authentication |
||||||
|
- Ability to disable battery optimization for Android |
||||||
|
- Transport Network ID Check |
||||||
|
### Changed |
||||||
|
- Set and handle published encrypted flag for LeaseSet2 |
||||||
|
### Fixed |
||||||
|
- ReceiveID changes in the same stream |
||||||
|
- "\r\n" command terminator in SAM |
||||||
|
- Addressbook lines with signatures |
||||||
|
|
||||||
|
## [2.27.0] - 2019-07-03 |
||||||
|
### Added |
||||||
|
- Support of PSK and DH authentication for encrypted LeaseSet2 |
||||||
|
### Changed |
||||||
|
- Uptime is based on monotonic timer |
||||||
|
### Fixed |
||||||
|
- BOB status command response |
||||||
|
- Correct NTCP2 port if NTCP is disabled |
||||||
|
- Flood encrypted LeaseSet2 with store hash |
||||||
|
|
||||||
|
## [2.26.0] - 2019-06-07 |
||||||
|
### Added |
||||||
|
- HTTP method "PROPFIND" |
||||||
|
- Detection of external ipv6 address through the SSU |
||||||
|
- NTCP2 publishing depends on network status |
||||||
|
### Changed |
||||||
|
- ntcp is disabled by default, ntcp2 is published by default |
||||||
|
- Response to BOB's "list" command |
||||||
|
- ipv6 address is not longer NTCP's local endpoint's address |
||||||
|
- Reseeds list |
||||||
|
- HTTP_REFERER stripping in httpproxy (#823) |
||||||
|
### Fixed |
||||||
|
- Check and handle incorrect BOB input |
||||||
|
- Ignore introducers for NTCP or NTCP2 addresses |
||||||
|
- RouterInfo check from NTCP2 |
||||||
|
|
||||||
|
## [2.25.0] - 2019-05-09 |
||||||
|
### Added |
||||||
|
- Create, publish and handle encrypted LeaseSet2 |
||||||
|
- Support of b33 addresses |
||||||
|
- RedDSA key blinding |
||||||
|
- .b32.i2p addresses in jump links |
||||||
|
- ntcp2.addressv6 parameter |
||||||
|
### Changed |
||||||
|
- Allow HTTP headers without value |
||||||
|
- Set data directory from external storage path for Android |
||||||
|
- addresshelper support is configurable per tunnel |
||||||
|
- gradlew script for android build |
||||||
|
### Fixed |
||||||
|
- Deletion of expired encrypted LeaseSet2 on floodfills |
||||||
|
- ipv6 fallback address |
||||||
|
- SSU incoming packets routing |
||||||
|
|
||||||
|
## [2.24.0] - 2019-03-21 |
||||||
|
### Added |
||||||
|
- Support of transient keys for LeaseSet2 |
||||||
|
- Support of encrypted LeaseSet2 |
||||||
|
- Recognize signature type 11 (RedDSA) |
||||||
|
- Support websocket connections over HTTP proxy |
||||||
|
- Ability to disable full addressbook persist |
||||||
|
### Changed |
||||||
|
- Don't load peer profiles if non-persistant |
||||||
|
- REUSE_ADDR for ipv6 acceptors |
||||||
|
- Reset eTags if addressbook can't be loaded |
||||||
|
### Fixed |
||||||
|
- Build with boost 1.70 |
||||||
|
- Filter out unspecified addresses from RouterInfo |
||||||
|
- Check floodfill status change |
||||||
|
- Correct SAM response for invalid key |
||||||
|
- SAM crash on termination for Windows |
||||||
|
- Race condition for publishing |
||||||
|
|
||||||
|
## [2.23.0] - 2019-01-21 |
||||||
|
### Added |
||||||
|
- Standard LeaseSet2 support |
||||||
|
- Ability to adjust timestamps through the NTP |
||||||
|
- Ability to disable peer profile persist |
||||||
|
- Request permission for android >= 6 |
||||||
|
- Initial addressbook to android assets |
||||||
|
- Cancel graceful shutdown for android |
||||||
|
- Russian translation for android |
||||||
|
### Changed |
||||||
|
- Chacha20 and Poly1305 implementation |
||||||
|
- Eliminate extra copy of NTCP2 send buffers |
||||||
|
- Extract content of tunnel.d from assets on android |
||||||
|
- Removed name resolvers from transports |
||||||
|
- Update reseed certificates |
||||||
|
### Fixed |
||||||
|
- LeaseSet published content verification |
||||||
|
- Exclude invalid LeaseSets from the list on a floodfill |
||||||
|
- Build for OpenWrt with openssl 1.1.1 |
||||||
|
|
||||||
|
## [2.22.0] - 2018-11-09 |
||||||
|
### Added |
||||||
|
- Multiple tunnel config files from tunnels.d folder |
||||||
|
### Changed |
||||||
|
- Fetch own RouterInfo upon SessionRequest for NTCP2 |
||||||
|
- Faster XOR between AES blocks for non AVX capable CPUs |
||||||
|
### Fixed |
||||||
|
- Fixed NTCP2 termination send |
||||||
|
|
||||||
|
## [2.21.1] - 2018-10-22 |
||||||
|
### Changed |
||||||
|
- cost=13 for unpublished NTCP2 address |
||||||
|
### Fixed |
||||||
|
- Handle I2NP messages longer than 32K |
||||||
|
|
||||||
|
## [2.21.0] - 2018-10-04 |
||||||
|
### Added |
||||||
|
- EdDSA, x25519 and SipHash from openssl 1.1.1 |
||||||
|
- NTCP2 ipv6 incoming connections |
||||||
|
- Show total number of destination's outgoing tags in the web console |
||||||
|
### Changed |
||||||
|
- Android build with openssl 1.1.1/boost 1.64 |
||||||
|
- Bandwidth classes 'P' and 'X' don't add 'O' anymore |
||||||
|
### Fixed |
||||||
|
- Update own RouterInfo if no SSU |
||||||
|
- Recognize 'P' and 'X' routers as high bandwidth without 'O' |
||||||
|
- NTCP address doesn't disappear if NTCP2 enabled |
||||||
|
- Android with api 26+ |
||||||
|
|
||||||
|
## [2.20.0] - 2018-08-23 |
||||||
|
### Added |
||||||
|
- Full implementation of NTCP2 |
||||||
|
- Assets for android |
||||||
|
### Changed |
||||||
|
- armeabi-v7a and x86 in one apk for android |
||||||
|
- NTCP2 is enabled by default |
||||||
|
- Show lease's expiration time in readable format in the web console |
||||||
|
### Fixed |
||||||
|
- Correct names for transports in the web console |
||||||
|
|
||||||
|
## [2.19.0] - 2018-06-26 |
||||||
|
### Added |
||||||
|
- ECIES support for RouterInfo |
||||||
|
- HTTP outproxy authorization |
||||||
|
- AVX/AESNI runtime detection |
||||||
|
- Initial implementation of NTCP2 |
||||||
|
- I2CP session reconfigure |
||||||
|
- I2CP method ClientServicesInfo |
||||||
|
- Datagrams to websocks |
||||||
|
### Changed |
||||||
|
- RouterInfo uses EdDSA signature by default |
||||||
|
- Remove stream bans |
||||||
|
- Android build system changed to gradle |
||||||
|
- Multiple changes in QT GUI |
||||||
|
- Dockerfile |
||||||
|
### Fixed |
||||||
|
- zero tunnelID issue |
||||||
|
- tunnels reload |
||||||
|
- headers in webconsole |
||||||
|
- XSS in webconsole from SAM session name |
||||||
|
- build for gcc 8 |
||||||
|
- cmake build scripts |
||||||
|
- systemd service files |
||||||
|
- some netbsd issues |
||||||
|
|
||||||
|
## [2.18.0] - 2018-01-30 |
||||||
|
### Added |
||||||
|
- Show tunnel nicknames for I2CP destination in WebUI |
||||||
|
- Re-create HTTP and SOCKS proxy by tunnel reload |
||||||
|
- Graceful shutdown as soon as no more transit tunnels |
||||||
|
### Changed |
||||||
|
- Regenerate shared local destination by tunnel reload |
||||||
|
- Use transient local destination by default if not specified |
||||||
|
- Return correct code if pid file can't be created |
||||||
|
- Timing and number of attempts for adressbook requests |
||||||
|
- Certificates list |
||||||
|
### Fixed |
||||||
|
- Malformed addressbook subsctiption request |
||||||
|
- Build with boost 1.66 |
||||||
|
- Few race conditions for SAM |
||||||
|
- Check LeaseSet's signature before update |
||||||
|
|
||||||
|
## [2.17.0] - 2017-12-04 |
||||||
|
### Added |
||||||
|
- Reseed through HTTP and SOCKS proxy |
||||||
|
- Show status of client services through web console |
||||||
|
- Change log level through web connsole |
||||||
|
- transient keys for tunnels |
||||||
|
- i2p.streaming.initialAckDelay parameter |
||||||
|
- CRYPTO_TYPE for SAM destination |
||||||
|
- signature and crypto type for newkeys BOB command |
||||||
|
### Changed |
||||||
|
- Correct publication of ECIES destinations |
||||||
|
- Disable RSA signatures completely |
||||||
|
### Fixed |
||||||
|
- CVE-2017-17066 |
||||||
|
- Possible buffer overflow for RSA-4096 |
||||||
|
- Shutdown from web console for Windows |
||||||
|
- Web console page layout |
||||||
|
## [2.16.0] - 2017-11-13 |
||||||
|
### Added |
||||||
|
- https and "Connect" method for HTTP proxy |
||||||
|
- outproxy for HTTP proxy |
||||||
|
- initial support of ECIES crypto |
||||||
|
- NTCP soft and hard descriptors limits |
||||||
|
- Support full timestamps in logs |
||||||
|
### Changed |
||||||
|
- Faster implementation of GOST R 34.11 hash |
||||||
|
- Reject routers with RSA signtures |
||||||
|
- Reload config and shudown from Windows GUI |
||||||
|
- Update tunnels address(destination) without restart |
||||||
|
### Fixed |
||||||
|
- BOB crashes if destination is not set |
||||||
|
- Correct SAM tunnel name |
||||||
|
- QT GUI issues |
||||||
|
|
||||||
|
## [2.15.0] - 2017-08-17 |
||||||
|
### Added |
||||||
|
- QT GUI |
||||||
|
- Ability to add and remove I2P tunnels without restart |
||||||
|
- Ability to disable SOCKS outproxy option |
||||||
|
### Changed |
||||||
|
- Strip-out Accept-* hedaers in HTTP proxy |
||||||
|
- Don't run peer test if nat=false |
||||||
|
- Separate output of NTCP and SSU sessions in Transports tab |
||||||
|
### Fixed |
||||||
|
- Handle lines with comments in hosts.txt file for address book |
||||||
|
- Run router with empty netdb for testnet |
||||||
|
- Skip expired introducers by iexp |
||||||
|
|
||||||
|
## [2.14.0] - 2017-06-01 |
||||||
|
### Added |
||||||
|
- Transit traffic bandwidth limitation |
||||||
|
- NTCP connections through HTTP and SOCKS proxies |
||||||
|
- Ability to disable address helper for HTTP proxy |
||||||
|
### Changed |
||||||
|
- Reseed servers list |
||||||
|
- Minimal required version is 4.0 for Android |
||||||
|
### Fixed |
||||||
|
- Ignore comments in addressbook feed |
||||||
|
|
||||||
|
## [2.13.0] - 2017-04-06 |
||||||
|
### Added |
||||||
|
- Persist local destination's tags |
||||||
|
- GOST signature types 9 and 10 |
||||||
|
- Exploratory tunnels configuration |
||||||
|
### Changed |
||||||
|
- Reseed servers list |
||||||
|
- Inactive NTCP sockets get closed faster |
||||||
|
- Some EdDSA speed up |
||||||
|
### Fixed |
||||||
|
- Multiple acceptors for SAM |
||||||
|
- Follow on data after STREAM CREATE for SAM |
||||||
|
- Memory leaks |
||||||
|
|
||||||
|
## [2.12.0] - 2017-02-14 |
||||||
|
### Added |
||||||
|
- Additional HTTP and SOCKS proxy tunnels |
||||||
|
- Reseed from ZIP archive |
||||||
|
- Some stats in a main window for Windows version |
||||||
|
### Changed |
||||||
|
- Reseed servers list |
||||||
|
- MTU of 1488 for ipv6 |
||||||
|
- Android and Mac OS X versions use OpenSSL 1.1 |
||||||
|
- New logo for Android |
||||||
|
### Fixed |
||||||
|
- Multiple memory leaks |
||||||
|
- Incomptibility of some EdDSA private keys with Java |
||||||
|
- Clock skew for Windows XP |
||||||
|
- Occasional crashes with I2PSnark |
||||||
|
|
||||||
|
## [2.11.0] - 2016-12-18 |
||||||
|
### Added |
||||||
|
- Websockets support |
||||||
|
- Reseed through a floodfill |
||||||
|
- Tunnel configuration for HTTP and SOCKS proxy |
||||||
|
- Zero-hops tunnels for destinations |
||||||
|
- Multiple acceptors for SAM |
||||||
|
### Changed |
||||||
|
- Reseed servers list |
||||||
|
- DHT uses AVX if applicable |
||||||
|
- New logo |
||||||
|
- LeaseSet lookups |
||||||
|
### Fixed |
||||||
|
- HTTP Proxy connection reset for Windows |
||||||
|
- Crash upon SAM session termination |
||||||
|
- Can't connect to a destination for a longer time after restart |
||||||
|
- Mass packet loss for UDP tunnels |
||||||
|
|
||||||
|
## [2.10.2] - 2016-12-04 |
||||||
|
### Fixed |
||||||
|
- Fixes UPnP discovery bug, producing excessive CPU usage |
||||||
|
- Fixes sudden SSU thread stop for Windows. |
||||||
|
|
||||||
|
## [2.10.1] - 2016-11-07 |
||||||
|
### Fixed |
||||||
|
- Fixed some performance issues for Windows and Android |
||||||
|
|
||||||
|
## [2.10.0] - 2016-10-17 |
||||||
|
### Added |
||||||
|
- Datagram i2p tunnels |
||||||
|
- Unique local addresses for server tunnels |
||||||
|
- Configurable list of reseed servers and initial addressbook |
||||||
|
- Configurable netid |
||||||
|
- Initial iOS support |
||||||
|
|
||||||
|
### Changed |
||||||
|
- Reduced file descriptors usage |
||||||
|
- Strict reseed checks enabled by default |
||||||
|
|
||||||
|
## Fixed |
||||||
|
- Multiple fixes in I2CP and BOB implementations |
||||||
|
|
||||||
|
## [2.9.0] - 2016-08-12 |
||||||
|
### Changed |
||||||
|
- Proxy refactoring & speedup |
||||||
|
- Transmission-I2P support |
||||||
|
- Graceful shutdown for Windows |
||||||
|
- Android without QT |
||||||
|
- Reduced number of timers in SSU |
||||||
|
- ipv6 peer test support |
||||||
|
- Reseed from SU3 file |
||||||
|
|
||||||
|
## [2.8.0] - 2016-06-20 |
||||||
|
### Added |
||||||
|
- Basic Android support |
||||||
|
- I2CP implementation |
||||||
|
- 'doxygen' target |
||||||
|
|
||||||
|
### Changed |
||||||
|
- I2PControl refactoring & fixes (proper jsonrpc responses on errors) |
||||||
|
- boost::regex no more needed |
||||||
|
|
||||||
|
### Fixed |
||||||
|
- initscripts: added openrc one, in sysv-ish make I2PD_PORT optional |
||||||
|
- properly close NTCP sessions (memleak) |
||||||
|
|
||||||
|
## [2.7.0] - 2016-05-18 |
||||||
|
### Added |
||||||
|
- Precomputed El-Gamal/DH tables |
||||||
|
- Configurable limit of transit tunnels |
||||||
|
|
||||||
|
### Changed |
||||||
|
- Speed-up of asymmetric crypto for non-x64 platforms |
||||||
|
- Refactoring of web-console |
||||||
|
|
||||||
|
## [2.6.0] - 2016-03-31 |
||||||
|
### Added |
||||||
|
- Graceful shutdown on SIGINT |
||||||
|
- Numeric bandwidth limits (was: by router class) |
||||||
|
- Jumpservices in web-console |
||||||
|
- Logging to syslog |
||||||
|
- Tray icon for windows application |
||||||
|
|
||||||
|
### Changed |
||||||
|
- Logs refactoring |
||||||
|
- Improved statistics in web-console |
||||||
|
|
||||||
|
### Deprecated: |
||||||
|
- Renamed main/tunnels config files (will use old, if found, but emits warning) |
||||||
|
|
||||||
|
## [2.5.1] - 2016-03-10 |
||||||
|
### Fixed |
||||||
|
- Doesn't create ~/.i2pd dir if missing |
||||||
|
|
||||||
|
## [2.5.0] - 2016-03-04 |
||||||
|
### Added |
||||||
|
- IRC server tunnels |
||||||
|
- SOCKS outproxy support |
||||||
|
- Support for gzipped addressbook updates |
||||||
|
- Support for router families |
||||||
|
|
||||||
|
### Changed |
||||||
|
- Shared RTT/RTO between streams |
||||||
|
- Filesystem work refactoring |
||||||
|
|
||||||
|
## [2.4.0] - 2016-02-03 |
||||||
|
### Added |
||||||
|
- X-I2P-* headers for server http-tunnels |
||||||
|
- I2CP options for I2P tunnels |
||||||
|
- Show I2P tunnels in webconsole |
||||||
|
|
||||||
|
### Changed |
||||||
|
- Refactoring of cmdline/config parsing |
||||||
|
|
||||||
|
## [2.3.0] - 2016-01-12 |
||||||
|
### Added |
||||||
|
- Support for new router bandwidth class codes (P and X) |
||||||
|
- I2PControl supports external webui |
||||||
|
- Added --pidfile and --notransit parameters |
||||||
|
- Ability to specify signature type for i2p tunnel |
||||||
|
|
||||||
|
### Changed |
||||||
|
- Fixed multiple floodfill-related bugs |
||||||
|
- New webconsole layout |
||||||
|
|
||||||
|
## [2.2.0] - 2015-12-22 |
||||||
|
### Added |
||||||
|
- Ability to connect to router without ip via introducer |
||||||
|
|
||||||
|
### Changed |
||||||
|
- Persist temporary encryption keys for local destinations |
||||||
|
- Performance improvements for EdDSA |
||||||
|
- New addressbook structure |
||||||
|
|
||||||
|
## [2.1.0] - 2015-11-12 |
||||||
|
### Added |
||||||
|
- Implementation of EdDSA |
||||||
|
|
||||||
|
### Changed |
||||||
|
- EdDSA is default signature type for new RouterInfos |
@ -0,0 +1,27 @@ |
|||||||
|
Copyright (c) 2013-2020, The PurpleI2P Project |
||||||
|
|
||||||
|
All rights reserved. |
||||||
|
|
||||||
|
Redistribution and use in source and binary forms, with or without modification, are |
||||||
|
permitted provided that the following conditions are met: |
||||||
|
|
||||||
|
1. Redistributions of source code must retain the above copyright notice, this list of |
||||||
|
conditions and the following disclaimer. |
||||||
|
|
||||||
|
2. Redistributions in binary form must reproduce the above copyright notice, this list of |
||||||
|
conditions and the following disclaimer in the documentation and/or other materials |
||||||
|
provided with the distribution. |
||||||
|
|
||||||
|
3. Neither the name of the copyright holder nor the names of its contributors may be used |
||||||
|
to endorse or promote products derived from this software without specific prior written |
||||||
|
permission. |
||||||
|
|
||||||
|
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY |
||||||
|
EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF |
||||||
|
MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE |
||||||
|
COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, |
||||||
|
EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF |
||||||
|
SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) |
||||||
|
HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR |
||||||
|
TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS |
||||||
|
SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. |
@ -0,0 +1,187 @@ |
|||||||
|
.DEFAULT_GOAL := all |
||||||
|
|
||||||
|
SYS := $(shell $(CXX) -dumpmachine) |
||||||
|
|
||||||
|
ifneq (, $(findstring darwin, $(SYS))) |
||||||
|
SHARED_SUFFIX = dylib |
||||||
|
else ifneq (, $(findstring mingw, $(SYS))$(findstring windows-gnu, $(SYS))$(findstring cygwin, $(SYS))) |
||||||
|
SHARED_SUFFIX = dll |
||||||
|
else |
||||||
|
SHARED_SUFFIX = so |
||||||
|
endif |
||||||
|
|
||||||
|
SHLIB := libi2pd.$(SHARED_SUFFIX) |
||||||
|
ARLIB := libi2pd.a |
||||||
|
SHLIB_LANG := libi2pdlang.$(SHARED_SUFFIX) |
||||||
|
ARLIB_LANG := libi2pdlang.a |
||||||
|
SHLIB_CLIENT := libi2pdclient.$(SHARED_SUFFIX) |
||||||
|
ARLIB_CLIENT := libi2pdclient.a |
||||||
|
SHLIB_WRAP := libi2pdwrapper.$(SHARED_SUFFIX) |
||||||
|
ARLIB_WRAP := libi2pdwrapper.a |
||||||
|
I2PD := i2pd |
||||||
|
|
||||||
|
LIB_SRC_DIR := libi2pd |
||||||
|
LIB_CLIENT_SRC_DIR := libi2pd_client |
||||||
|
WRAP_SRC_DIR := libi2pd_wrapper |
||||||
|
LANG_SRC_DIR := i18n |
||||||
|
DAEMON_SRC_DIR := daemon |
||||||
|
|
||||||
|
# import source files lists
|
||||||
|
include filelist.mk |
||||||
|
|
||||||
|
USE_AESNI := $(or $(USE_AESNI),yes) |
||||||
|
USE_STATIC := $(or $(USE_STATIC),no) |
||||||
|
USE_UPNP := $(or $(USE_UPNP),no) |
||||||
|
DEBUG := $(or $(DEBUG),yes) |
||||||
|
|
||||||
|
# for debugging purposes only, when commit hash needed in trunk builds in i2pd version string
|
||||||
|
USE_GIT_VERSION := $(or $(USE_GIT_VERSION),no) |
||||||
|
|
||||||
|
# for MacOS only, waiting for "1", not "yes"
|
||||||
|
HOMEBREW := $(or $(HOMEBREW),0) |
||||||
|
|
||||||
|
ifeq ($(DEBUG),yes) |
||||||
|
CXX_DEBUG = -g |
||||||
|
else |
||||||
|
CXX_DEBUG = -Os |
||||||
|
LD_DEBUG = -s |
||||||
|
endif |
||||||
|
|
||||||
|
ifneq (, $(DESTDIR)) |
||||||
|
PREFIX = $(DESTDIR) |
||||||
|
endif |
||||||
|
|
||||||
|
ifneq (, $(findstring darwin, $(SYS))) |
||||||
|
DAEMON_SRC += $(DAEMON_SRC_DIR)/UnixDaemon.cpp |
||||||
|
ifeq ($(HOMEBREW),1) |
||||||
|
include Makefile.homebrew |
||||||
|
else |
||||||
|
include Makefile.osx |
||||||
|
endif |
||||||
|
else ifneq (, $(findstring mingw, $(SYS))$(findstring windows-gnu, $(SYS))$(findstring cygwin, $(SYS))) |
||||||
|
DAEMON_SRC += Win32/DaemonWin32.cpp Win32/Win32App.cpp Win32/Win32Service.cpp Win32/Win32NetState.cpp |
||||||
|
include Makefile.mingw |
||||||
|
else ifneq (, $(findstring linux, $(SYS))$(findstring gnu, $(SYS))) |
||||||
|
DAEMON_SRC += $(DAEMON_SRC_DIR)/UnixDaemon.cpp |
||||||
|
include Makefile.linux |
||||||
|
else ifneq (, $(findstring freebsd, $(SYS))$(findstring openbsd, $(SYS))) |
||||||
|
DAEMON_SRC += $(DAEMON_SRC_DIR)/UnixDaemon.cpp |
||||||
|
include Makefile.bsd |
||||||
|
else # not supported
|
||||||
|
$(error Not supported platform) |
||||||
|
endif |
||||||
|
|
||||||
|
INCFLAGS += -I$(LIB_SRC_DIR) -I$(LIB_CLIENT_SRC_DIR) -I$(LANG_SRC_DIR) |
||||||
|
DEFINES += -DOPENSSL_SUPPRESS_DEPRECATED |
||||||
|
NEEDED_CXXFLAGS += -MMD -MP |
||||||
|
|
||||||
|
ifeq ($(USE_GIT_VERSION),yes) |
||||||
|
GIT_VERSION := $(shell git describe --tags) |
||||||
|
DEFINES += -DGITVER=$(GIT_VERSION) |
||||||
|
endif |
||||||
|
|
||||||
|
LIB_OBJS += $(patsubst %.cpp,obj/%.o,$(LIB_SRC)) |
||||||
|
LIB_CLIENT_OBJS += $(patsubst %.cpp,obj/%.o,$(LIB_CLIENT_SRC)) |
||||||
|
LANG_OBJS += $(patsubst %.cpp,obj/%.o,$(LANG_SRC)) |
||||||
|
DAEMON_OBJS += $(patsubst %.cpp,obj/%.o,$(DAEMON_SRC)) |
||||||
|
WRAP_LIB_OBJS += $(patsubst %.cpp,obj/%.o,$(WRAP_LIB_SRC)) |
||||||
|
DEPS += $(LIB_OBJS:.o=.d) $(LIB_CLIENT_OBJS:.o=.d) $(LANG_OBJS:.o=.d) $(DAEMON_OBJS:.o=.d) $(WRAP_LIB_OBJS:.o=.d) |
||||||
|
|
||||||
|
## Build all code (libi2pd, libi2pdclient, libi2pdlang), link it to .a and build binary
|
||||||
|
all: $(ARLIB) $(ARLIB_CLIENT) $(ARLIB_LANG) $(I2PD) |
||||||
|
|
||||||
|
mk_obj_dir: |
||||||
|
@mkdir -p obj/$(LIB_SRC_DIR) |
||||||
|
@mkdir -p obj/$(LIB_CLIENT_SRC_DIR) |
||||||
|
@mkdir -p obj/$(LANG_SRC_DIR) |
||||||
|
@mkdir -p obj/$(DAEMON_SRC_DIR) |
||||||
|
@mkdir -p obj/$(WRAP_SRC_DIR) |
||||||
|
@mkdir -p obj/Win32 |
||||||
|
|
||||||
|
api: $(SHLIB) $(ARLIB) |
||||||
|
client: $(SHLIB_CLIENT) $(ARLIB_CLIENT) |
||||||
|
lang: $(SHLIB_LANG) $(ARLIB_LANG) |
||||||
|
api_client: api client lang |
||||||
|
wrapper: api_client $(SHLIB_WRAP) $(ARLIB_WRAP) |
||||||
|
|
||||||
|
## NOTE: The NEEDED_CXXFLAGS are here so that CXXFLAGS can be specified at build time
|
||||||
|
## **without** overwriting the CXXFLAGS which we need in order to build.
|
||||||
|
## For example, when adding 'hardening flags' to the build
|
||||||
|
## (e.g. -fstack-protector-strong -Wformat -Werror=format-security), we do not want to remove
|
||||||
|
## -std=c++11. If you want to remove this variable please do so in a way that allows setting
|
||||||
|
## custom FLAGS to work at build-time.
|
||||||
|
|
||||||
|
obj/%.o: %.cpp | mk_obj_dir |
||||||
|
$(CXX) $(CXXFLAGS) $(NEEDED_CXXFLAGS) $(DEFINES) $(INCFLAGS) -c -o $@ $< |
||||||
|
|
||||||
|
# '-' is 'ignore if missing' on first run
|
||||||
|
-include $(DEPS) |
||||||
|
|
||||||
|
$(I2PD): $(DAEMON_OBJS) $(ARLIB) $(ARLIB_CLIENT) $(ARLIB_LANG) |
||||||
|
$(CXX) -o $@ $(DEFINES) $(LDFLAGS) $^ $(LDLIBS) |
||||||
|
|
||||||
|
$(SHLIB): $(LIB_OBJS) |
||||||
|
ifneq ($(USE_STATIC),yes) |
||||||
|
$(CXX) $(LDFLAGS) -shared -o $@ $^ $(LDLIBS) |
||||||
|
endif |
||||||
|
|
||||||
|
$(SHLIB_CLIENT): $(LIB_CLIENT_OBJS) $(SHLIB) $(SHLIB_LANG) |
||||||
|
ifneq ($(USE_STATIC),yes) |
||||||
|
$(CXX) $(LDFLAGS) -shared -o $@ $^ $(LDLIBS) $(SHLIB) $(SHLIB_LANG) |
||||||
|
endif |
||||||
|
|
||||||
|
$(SHLIB_WRAP): $(WRAP_LIB_OBJS) |
||||||
|
ifneq ($(USE_STATIC),yes) |
||||||
|
$(CXX) $(LDFLAGS) -shared -o $@ $^ $(LDLIBS) |
||||||
|
endif |
||||||
|
|
||||||
|
$(SHLIB_LANG): $(LANG_OBJS) |
||||||
|
ifneq ($(USE_STATIC),yes) |
||||||
|
$(CXX) $(LDFLAGS) -shared -o $@ $^ $(LDLIBS) |
||||||
|
endif |
||||||
|
|
||||||
|
$(ARLIB): $(LIB_OBJS) |
||||||
|
$(AR) -r $@ $^ |
||||||
|
|
||||||
|
$(ARLIB_CLIENT): $(LIB_CLIENT_OBJS) |
||||||
|
$(AR) -r $@ $^ |
||||||
|
|
||||||
|
$(ARLIB_WRAP): $(WRAP_LIB_OBJS) |
||||||
|
$(AR) -r $@ $^ |
||||||
|
|
||||||
|
$(ARLIB_LANG): $(LANG_OBJS) |
||||||
|
$(AR) -r $@ $^ |
||||||
|
|
||||||
|
clean: |
||||||
|
$(RM) -r obj |
||||||
|
$(RM) -r docs/generated |
||||||
|
$(RM) $(I2PD) $(SHLIB) $(ARLIB) $(SHLIB_CLIENT) $(ARLIB_CLIENT) $(SHLIB_LANG) $(ARLIB_LANG) $(SHLIB_WRAP) $(ARLIB_WRAP) |
||||||
|
|
||||||
|
strip: $(I2PD) $(SHLIB) $(SHLIB_CLIENT) $(SHLIB_LANG) |
||||||
|
strip $^ |
||||||
|
|
||||||
|
LATEST_TAG=$(shell git describe --tags --abbrev=0 openssl) |
||||||
|
BRANCH=$(shell git rev-parse --abbrev-ref HEAD) |
||||||
|
dist: |
||||||
|
git archive --format=tar.gz -9 --worktree-attributes \
|
||||||
|
--prefix=i2pd_$(LATEST_TAG)/ $(LATEST_TAG) -o i2pd_$(LATEST_TAG).tar.gz |
||||||
|
|
||||||
|
last-dist: |
||||||
|
git archive --format=tar.gz -9 --worktree-attributes \
|
||||||
|
--prefix=i2pd_$(LATEST_TAG)/ $(BRANCH) -o ../i2pd_$(LATEST_TAG).orig.tar.gz |
||||||
|
|
||||||
|
doxygen: |
||||||
|
doxygen -s docs/Doxyfile |
||||||
|
|
||||||
|
.PHONY: all |
||||||
|
.PHONY: clean |
||||||
|
.PHONY: doxygen |
||||||
|
.PHONY: dist |
||||||
|
.PHONY: last-dist |
||||||
|
.PHONY: api |
||||||
|
.PHONY: api_client |
||||||
|
.PHONY: client |
||||||
|
.PHONY: lang |
||||||
|
.PHONY: mk_obj_dir |
||||||
|
.PHONY: install |
||||||
|
.PHONY: strip |
@ -0,0 +1,13 @@ |
|||||||
|
CXX = clang++ |
||||||
|
CXXFLAGS ?= ${CXX_DEBUG} -Wall -Wextra -Wno-unused-parameter -pedantic -Wno-misleading-indentation |
||||||
|
## NOTE: NEEDED_CXXFLAGS is here so that custom CXXFLAGS can be specified at build time
|
||||||
|
## **without** overwriting the CXXFLAGS which we need in order to build.
|
||||||
|
## For example, when adding 'hardening flags' to the build
|
||||||
|
## (e.g. -fstack-protector-strong -Wformat -Werror=format-security), we do not want to remove
|
||||||
|
## -std=c++11. If you want to remove this variable please do so in a way that allows setting
|
||||||
|
## custom FLAGS to work at build-time.
|
||||||
|
NEEDED_CXXFLAGS = -std=c++11 |
||||||
|
DEFINES = -D_GLIBCXX_USE_NANOSLEEP=1 |
||||||
|
INCFLAGS = -I/usr/include/ -I/usr/local/include/ |
||||||
|
LDFLAGS = ${LD_DEBUG} -Wl,-rpath,/usr/local/lib -L/usr/local/lib |
||||||
|
LDLIBS = -lcrypto -lssl -lz -lboost_system -lboost_date_time -lboost_filesystem -lboost_program_options -lpthread |
@ -0,0 +1,57 @@ |
|||||||
|
# root directory holding homebrew
|
||||||
|
BREWROOT = /usr/local |
||||||
|
BOOSTROOT = ${BREWROOT}/opt/boost |
||||||
|
SSLROOT = ${BREWROOT}/opt/openssl@1.1 |
||||||
|
UPNPROOT = ${BREWROOT}/opt/miniupnpc |
||||||
|
CXXFLAGS = ${CXX_DEBUG} -Wall -std=c++11 -DMAC_OSX -Wno-overloaded-virtual |
||||||
|
INCFLAGS = -I${SSLROOT}/include -I${BOOSTROOT}/include |
||||||
|
LDFLAGS = ${LD_DEBUG} |
||||||
|
|
||||||
|
ifndef TRAVIS |
||||||
|
CXX = clang++ |
||||||
|
endif |
||||||
|
|
||||||
|
ifeq ($(USE_STATIC),yes) |
||||||
|
LDLIBS = -lz ${SSLROOT}/lib/libcrypto.a ${SSLROOT}/lib/libssl.a ${BOOSTROOT}/lib/libboost_system.a ${BOOSTROOT}/lib/libboost_date_time.a ${BOOSTROOT}/lib/libboost_filesystem.a ${BOOSTROOT}/lib/libboost_program_options.a -lpthread |
||||||
|
else |
||||||
|
LDFLAGS += -L${SSLROOT}/lib -L${BOOSTROOT}/lib |
||||||
|
LDLIBS = -lz -lcrypto -lssl -lboost_system -lboost_date_time -lboost_filesystem -lboost_program_options -lpthread |
||||||
|
endif |
||||||
|
|
||||||
|
ifeq ($(USE_UPNP),yes) |
||||||
|
LDFLAGS += -ldl |
||||||
|
CXXFLAGS += -DUSE_UPNP |
||||||
|
INCFLAGS += -I${UPNPROOT}/include |
||||||
|
ifeq ($(USE_STATIC),yes) |
||||||
|
LDLIBS += ${UPNPROOT}/lib/libminiupnpc.a |
||||||
|
else |
||||||
|
LDFLAGS += -L${UPNPROOT}/lib |
||||||
|
LDLIBS += -lminiupnpc |
||||||
|
endif |
||||||
|
endif |
||||||
|
|
||||||
|
# OSX Notes
|
||||||
|
# http://www.hutsby.net/2011/08/macs-with-aes-ni.html
|
||||||
|
# Seems like all recent Mac's have AES-NI, after firmware upgrade 2.2
|
||||||
|
# Found no good way to detect it from command line. TODO: Might be some osx sysinfo magic
|
||||||
|
ifeq ($(USE_AESNI),yes) |
||||||
|
CXXFLAGS += -D__AES__ -maes |
||||||
|
endif |
||||||
|
|
||||||
|
install: all |
||||||
|
install -d ${PREFIX}/bin |
||||||
|
install -m 755 ${I2PD} ${PREFIX}/bin |
||||||
|
install -d ${PREFIX}/etc ${PREFIX}/etc/i2pd ${PREFIX}/etc/i2pd/tunnels.conf.d |
||||||
|
install -m 644 contrib/i2pd.conf contrib/subscriptions.txt contrib/tunnels.conf ${PREFIX}/etc/i2pd |
||||||
|
install -d ${PREFIX}/share ${PREFIX}/share/doc ${PREFIX}/share/doc/i2pd |
||||||
|
install -m 644 ChangeLog LICENSE README.md contrib/i2pd.conf contrib/subscriptions.txt contrib/tunnels.conf ${PREFIX}/share/doc/i2pd |
||||||
|
install -d ${PREFIX}/share/i2pd |
||||||
|
@cp -R contrib/certificates ${PREFIX}/share/i2pd/ |
||||||
|
install -d ${PREFIX}/share/man ${PREFIX}/share/man/man1 |
||||||
|
@gzip -kf debian/i2pd.1 && install debian/i2pd.1.gz ${PREFIX}/share/man/man1 |
||||||
|
install -d ${PREFIX}/var ${PREFIX}/var/lib ${PREFIX}/var/lib/i2pd |
||||||
|
@ln -sf ${PREFIX}/share/i2pd/certificates ${PREFIX}/var/lib/i2pd/certificates |
||||||
|
@ln -sf ${PREFIX}/etc/i2pd/tunnels.conf.d ${PREFIX}/var/lib/i2pd/tunnels.d |
||||||
|
@ln -sf ${PREFIX}/etc/i2pd/i2pd.conf ${PREFIX}/var/lib/i2pd/i2pd.conf |
||||||
|
@ln -sf ${PREFIX}/etc/i2pd/subscriptions.txt ${PREFIX}/var/lib/i2pd/subscriptions.txt |
||||||
|
@ln -sf ${PREFIX}/etc/i2pd/tunnels.conf ${PREFIX}/var/lib/i2pd/tunnels.conf |
@ -0,0 +1,87 @@ |
|||||||
|
# set defaults instead redefine
|
||||||
|
CXXFLAGS ?= ${CXX_DEBUG} -Wall -Wextra -Wno-unused-parameter -pedantic -Wno-psabi |
||||||
|
LDFLAGS ?= ${LD_DEBUG} |
||||||
|
|
||||||
|
## NOTE: The NEEDED_CXXFLAGS are here so that custom CXXFLAGS can be specified at build time
|
||||||
|
## **without** overwriting the CXXFLAGS which we need in order to build.
|
||||||
|
## For example, when adding 'hardening flags' to the build
|
||||||
|
## (e.g. -fstack-protector-strong -Wformat -Werror=format-security), we do not want to remove
|
||||||
|
## -std=c++11. If you want to remove this variable please do so in a way that allows setting
|
||||||
|
## custom FDLAGS to work at build-time.
|
||||||
|
|
||||||
|
# detect proper flag for c++11 support by compilers
|
||||||
|
CXXVER := $(shell $(CXX) -dumpversion) |
||||||
|
ifeq ($(shell expr match $(CXX) 'clang'),5) |
||||||
|
NEEDED_CXXFLAGS += -std=c++11 |
||||||
|
else ifeq ($(shell expr match ${CXXVER} "4\.[0-9][0-9]"),4) # gcc >= 4.10
|
||||||
|
NEEDED_CXXFLAGS += -std=c++11 |
||||||
|
else ifeq ($(shell expr match ${CXXVER} "4\.[8-9]"),3) # gcc 4.8 - 4.9
|
||||||
|
NEEDED_CXXFLAGS += -std=c++11 -D_GLIBCXX_USE_NANOSLEEP=1 |
||||||
|
else ifeq ($(shell expr match ${CXXVER} "[5-6]"),1) # gcc 5 - 6
|
||||||
|
NEEDED_CXXFLAGS += -std=c++11 |
||||||
|
LDLIBS = -latomic |
||||||
|
else ifeq ($(shell expr match ${CXXVER} "[7-9]"),1) # gcc 7 - 9
|
||||||
|
NEEDED_CXXFLAGS += -std=c++17 |
||||||
|
LDLIBS = -latomic |
||||||
|
else ifeq ($(shell expr match ${CXXVER} "1[0-9]"),2) # gcc 10+
|
||||||
|
# NEEDED_CXXFLAGS += -std=c++20
|
||||||
|
NEEDED_CXXFLAGS += -std=c++17 |
||||||
|
LDLIBS = -latomic |
||||||
|
else # not supported
|
||||||
|
$(error Compiler too old) |
||||||
|
endif |
||||||
|
|
||||||
|
NEEDED_CXXFLAGS += -fPIC |
||||||
|
|
||||||
|
ifeq ($(USE_STATIC),yes) |
||||||
|
# NOTE: on glibc you will get this warning:
|
||||||
|
# Using 'getaddrinfo' in statically linked applications requires at runtime
|
||||||
|
# the shared libraries from the glibc version used for linking
|
||||||
|
LIBDIR := /usr/lib/$(SYS) |
||||||
|
LDLIBS += $(LIBDIR)/libboost_system.a |
||||||
|
LDLIBS += $(LIBDIR)/libboost_date_time.a |
||||||
|
LDLIBS += $(LIBDIR)/libboost_filesystem.a |
||||||
|
LDLIBS += $(LIBDIR)/libboost_program_options.a |
||||||
|
LDLIBS += $(LIBDIR)/libssl.a |
||||||
|
LDLIBS += $(LIBDIR)/libcrypto.a |
||||||
|
LDLIBS += $(LIBDIR)/libz.a |
||||||
|
ifeq ($(USE_UPNP),yes) |
||||||
|
LDLIBS += $(LIBDIR)/libminiupnpc.a |
||||||
|
endif |
||||||
|
LDLIBS += -lpthread -ldl |
||||||
|
else |
||||||
|
LDLIBS += -lcrypto -lssl -lz -lboost_system -lboost_date_time -lboost_filesystem -lboost_program_options -lpthread |
||||||
|
ifeq ($(USE_UPNP),yes) |
||||||
|
LDLIBS += -lminiupnpc |
||||||
|
endif |
||||||
|
endif |
||||||
|
|
||||||
|
# UPNP Support (miniupnpc 1.5 and higher)
|
||||||
|
ifeq ($(USE_UPNP),yes) |
||||||
|
DEFINES += -DUSE_UPNP |
||||||
|
endif |
||||||
|
|
||||||
|
ifeq ($(USE_AESNI),yes) |
||||||
|
ifneq (, $(findstring i386, $(SYS))$(findstring i686, $(SYS))$(findstring x86_64, $(SYS))) # only x86-based CPU supports that
|
||||||
|
NEEDED_CXXFLAGS += -maes |
||||||
|
DEFINES += -D__AES__ |
||||||
|
endif |
||||||
|
endif |
||||||
|
|
||||||
|
install: all |
||||||
|
install -d ${PREFIX}/bin |
||||||
|
install -m 755 ${I2PD} ${PREFIX}/bin |
||||||
|
install -d ${PREFIX}/etc ${PREFIX}/etc/i2pd ${PREFIX}/etc/i2pd/tunnels.conf.d |
||||||
|
install -m 644 contrib/i2pd.conf contrib/subscriptions.txt contrib/tunnels.conf ${PREFIX}/etc/i2pd |
||||||
|
install -d ${PREFIX}/share ${PREFIX}/share/doc ${PREFIX}/share/doc/i2pd |
||||||
|
install -m 644 ChangeLog LICENSE README.md contrib/i2pd.conf contrib/subscriptions.txt contrib/tunnels.conf ${PREFIX}/share/doc/i2pd |
||||||
|
install -d ${PREFIX}/share/i2pd |
||||||
|
@cp -R contrib/certificates ${PREFIX}/share/i2pd/ |
||||||
|
install -d ${PREFIX}/share/man ${PREFIX}/share/man/man1 |
||||||
|
@gzip -kf debian/i2pd.1 && install debian/i2pd.1.gz ${PREFIX}/share/man/man1 |
||||||
|
install -d ${PREFIX}/var ${PREFIX}/var/lib ${PREFIX}/var/lib/i2pd |
||||||
|
@ln -sf ${PREFIX}/share/i2pd/certificates ${PREFIX}/var/lib/i2pd/certificates |
||||||
|
@ln -sf ${PREFIX}/etc/i2pd/tunnels.conf.d ${PREFIX}/var/lib/i2pd/tunnels.d |
||||||
|
@ln -sf ${PREFIX}/etc/i2pd/i2pd.conf ${PREFIX}/var/lib/i2pd/i2pd.conf |
||||||
|
@ln -sf ${PREFIX}/etc/i2pd/subscriptions.txt ${PREFIX}/var/lib/i2pd/subscriptions.txt |
||||||
|
@ln -sf ${PREFIX}/etc/i2pd/tunnels.conf ${PREFIX}/var/lib/i2pd/tunnels.conf |
@ -0,0 +1,59 @@ |
|||||||
|
# Build application with GUI (tray, main window)
|
||||||
|
USE_WIN32_APP := yes |
||||||
|
|
||||||
|
WINDRES = windres |
||||||
|
|
||||||
|
CXXFLAGS := $(CXX_DEBUG) -fPIC -msse |
||||||
|
INCFLAGS := -I$(DAEMON_SRC_DIR) -IWin32 |
||||||
|
LDFLAGS := ${LD_DEBUG} -static |
||||||
|
|
||||||
|
NEEDED_CXXFLAGS += -std=c++17 |
||||||
|
DEFINES += -DWIN32_LEAN_AND_MEAN |
||||||
|
|
||||||
|
# Boost libraries suffix
|
||||||
|
BOOST_SUFFIX = -mt |
||||||
|
|
||||||
|
# UPNP Support
|
||||||
|
ifeq ($(USE_UPNP),yes) |
||||||
|
DEFINES += -DUSE_UPNP -DMINIUPNP_STATICLIB |
||||||
|
LDLIBS = -lminiupnpc |
||||||
|
endif |
||||||
|
|
||||||
|
LDLIBS += \
|
||||||
|
-lboost_system$(BOOST_SUFFIX) \
|
||||||
|
-lboost_date_time$(BOOST_SUFFIX) \
|
||||||
|
-lboost_filesystem$(BOOST_SUFFIX) \
|
||||||
|
-lboost_program_options$(BOOST_SUFFIX) \
|
||||||
|
-lssl \
|
||||||
|
-lcrypto \
|
||||||
|
-lz \
|
||||||
|
-lwsock32 \
|
||||||
|
-lws2_32 \
|
||||||
|
-lgdi32 \
|
||||||
|
-liphlpapi \
|
||||||
|
-lole32 \
|
||||||
|
-luuid \
|
||||||
|
-lpthread |
||||||
|
|
||||||
|
ifeq ($(USE_WIN32_APP), yes) |
||||||
|
DEFINES += -DWIN32_APP |
||||||
|
LDFLAGS += -mwindows |
||||||
|
DAEMON_RC += Win32/Resource.rc |
||||||
|
DAEMON_OBJS += $(patsubst %.rc,obj/%.o,$(DAEMON_RC)) |
||||||
|
endif |
||||||
|
|
||||||
|
ifeq ($(USE_WINXP_FLAGS), yes) |
||||||
|
DEFINES += -DWINVER=0x0501 -D_WIN32_WINNT=0x0501 |
||||||
|
endif |
||||||
|
|
||||||
|
ifeq ($(USE_AESNI),yes) |
||||||
|
NEEDED_CXXFLAGS += -maes |
||||||
|
DEFINES += -D__AES__ |
||||||
|
endif |
||||||
|
|
||||||
|
ifeq ($(USE_ASLR),yes) |
||||||
|
LDFLAGS += -Wl,--nxcompat -Wl,--high-entropy-va -Wl,--dynamicbase,--export-all-symbols |
||||||
|
endif |
||||||
|
|
||||||
|
obj/%.o : %.rc | mk_obj_dir |
||||||
|
$(WINDRES) $(DEFINES) $(INCFLAGS) --preprocessor-arg=-MMD --preprocessor-arg=-MP --preprocessor-arg=-MF$@.d -i $< -o $@ |
@ -0,0 +1,34 @@ |
|||||||
|
CXX = clang++ |
||||||
|
CXXFLAGS := ${CXX_DEBUG} -Wall -std=c++11 |
||||||
|
INCFLAGS = -I/usr/local/include |
||||||
|
DEFINES := -DMAC_OSX |
||||||
|
LDFLAGS := -Wl,-rpath,/usr/local/lib -L/usr/local/lib |
||||||
|
LDFLAGS += -Wl,-dead_strip |
||||||
|
LDFLAGS += -Wl,-dead_strip_dylibs |
||||||
|
LDFLAGS += -Wl,-bind_at_load |
||||||
|
|
||||||
|
ifeq ($(USE_STATIC),yes) |
||||||
|
LDLIBS = -lz /usr/local/lib/libcrypto.a /usr/local/lib/libssl.a /usr/local/lib/libboost_system.a /usr/local/lib/libboost_date_time.a /usr/local/lib/libboost_filesystem.a /usr/local/lib/libboost_program_options.a -lpthread |
||||||
|
else |
||||||
|
LDLIBS = -lz -lcrypto -lssl -lboost_system -lboost_date_time -lboost_filesystem -lboost_program_options -lpthread |
||||||
|
endif |
||||||
|
|
||||||
|
ifeq ($(USE_UPNP),yes) |
||||||
|
LDFLAGS += -ldl |
||||||
|
DEFINES += -DUSE_UPNP |
||||||
|
ifeq ($(USE_STATIC),yes) |
||||||
|
LDLIBS += /usr/local/lib/libminiupnpc.a |
||||||
|
else |
||||||
|
LDLIBS += -lminiupnpc |
||||||
|
endif |
||||||
|
endif |
||||||
|
|
||||||
|
OSARCH = $(shell uname -p) |
||||||
|
|
||||||
|
ifneq ($(OSARCH),powerpc) |
||||||
|
ifeq ($(USE_AESNI),yes) |
||||||
|
CXXFLAGS += -D__AES__ -maes |
||||||
|
else |
||||||
|
CXXFLAGS += -msse |
||||||
|
endif |
||||||
|
endif |
@ -0,0 +1,26 @@ |
|||||||
|
#LIB_SRC = \
|
||||||
|
# BloomFilter.cpp Gzip.cpp Crypto.cpp Datagram.cpp Garlic.cpp I2NPProtocol.cpp LeaseSet.cpp \
|
||||||
|
# Log.cpp NTCPSession.cpp NetDb.cpp NetDbRequests.cpp Profiling.cpp \
|
||||||
|
# Reseed.cpp RouterContext.cpp RouterInfo.cpp Signature.cpp SSU.cpp \
|
||||||
|
# SSUSession.cpp SSUData.cpp Streaming.cpp Identity.cpp TransitTunnel.cpp \
|
||||||
|
# Transports.cpp Tunnel.cpp TunnelEndpoint.cpp TunnelPool.cpp TunnelGateway.cpp \
|
||||||
|
# Destination.cpp Base.cpp I2PEndian.cpp FS.cpp Config.cpp Family.cpp \
|
||||||
|
# Config.cpp HTTP.cpp Timestamp.cpp util.cpp api.cpp Gost.cpp
|
||||||
|
|
||||||
|
LIB_SRC = $(wildcard $(LIB_SRC_DIR)/*.cpp) |
||||||
|
|
||||||
|
#LIB_CLIENT_SRC = \
|
||||||
|
# AddressBook.cpp BOB.cpp ClientContext.cpp I2PTunnel.cpp I2PService.cpp MatchedDestination.cpp \
|
||||||
|
# SAM.cpp SOCKS.cpp HTTPProxy.cpp I2CP.cpp
|
||||||
|
|
||||||
|
LIB_CLIENT_SRC = $(wildcard $(LIB_CLIENT_SRC_DIR)/*.cpp) |
||||||
|
|
||||||
|
# also: Daemon{Linux,Win32}.cpp will be added later
|
||||||
|
#DAEMON_SRC = \
|
||||||
|
# HTTPServer.cpp I2PControl.cpp UPnP.cpp Daemon.cpp i2pd.cpp
|
||||||
|
|
||||||
|
LANG_SRC = $(wildcard $(LANG_SRC_DIR)/*.cpp) |
||||||
|
|
||||||
|
WRAP_LIB_SRC = $(wildcard $(WRAP_SRC_DIR)/*.cpp) |
||||||
|
|
||||||
|
DAEMON_SRC = $(wildcard $(DAEMON_SRC_DIR)/*.cpp) |
Loading…
Reference in new issue