mirror of
https://github.com/OPSnet/Ocelot.git
synced 2026-11-07 06:16:02 -10:00
181 lines
7.3 KiB
Plaintext
181 lines
7.3 KiB
Plaintext
-- 3.1.0 (2026-04-13)
|
|
FEATURES
|
|
* Ocelot now uses remote address of listen socket or X-Forwarded-For header as IP source.
|
|
* Introduce an --ignore-xff flag to override the reading of said header.
|
|
* IP addresses are maintained as 32bit ints internally rather than strings. This slims down the peer struct.
|
|
* Peer keys are now hashed to a 64-bit value using the xxhash algorithm, removing further bloat from the peer struct.
|
|
* Revamp how seeders and leechers are tracked per torrent.
|
|
* Simplify how peers are selected.
|
|
* Improved consistency of logging messages.
|
|
* Removed hand-rolled inttostr().
|
|
* Added const to methods and parameters where possible, some methods were made static. (cppcheck)
|
|
* Added a report torrent endpoint (using libfmt).
|
|
* Reduce memory reallocations in building db buffers.
|
|
* Log level (error, info, debug) can be configured.
|
|
BUGFIXES
|
|
* When inserting a new torrent, set last_flushed to 0.
|
|
* Ocelot used to "DELETE FROM torrents WHERE info_hash = ''". This no longer happens.
|
|
|
|
-- 3.0.0 (2026-02-15)
|
|
BUILD
|
|
* compile using the C++17 standard
|
|
|
|
-- 2.1.5 (2026-02-12)
|
|
FEATURES
|
|
* connection_mother() does not need db access
|
|
* validate client whitelist before acquiring torrent lock
|
|
* add timers to measure lock acquisition, announce() and reap_peers() duration
|
|
BUGFIXES
|
|
* Wrap peer reaper code in a mutex to avoid stats desynchronization.
|
|
* Prevent upspeed and downspeed calculation from exceeding 2^31-1.
|
|
* Fix error when seeders reannounce with left > 0.
|
|
NOTE
|
|
* 2.1.4 was not officially released.
|
|
|
|
-- 2.1.3 (2024-03-09)
|
|
BREAKING
|
|
* API user endpoint output changed to JSON
|
|
FEATURES
|
|
* Peak number of simultaneous open connections is now tracked.
|
|
* Maximum size of client http request is now tracked.
|
|
* Number of errors (bad tracker secrets, bad client requests) is now tracked.
|
|
* Show jemalloc stats in Gazelle and Grafana report endpoints.
|
|
BUILD
|
|
* refactor report functions to produce only report payload
|
|
|
|
-- 2.1.2 (2024-02-17)
|
|
FEATURES
|
|
* show resource usage in Gazelle and Grafana report endpoints
|
|
|
|
-- 2.1.1 (2024-02-15)
|
|
BUILD
|
|
* Detabbed source code in first step towards having the code lint cleanly, no code changes
|
|
|
|
-- 2.1.0 (2024-02-11)
|
|
FEATURES
|
|
* announce jitter is now a uniform distribution and can be modified on the fly
|
|
|
|
-- 2.0.1 (2024-02-10)
|
|
BREAKING
|
|
* API torrent endpoint output changed to JSON
|
|
* API user endpoint shows more information about a user in JSON format
|
|
FEATURES
|
|
* Mysql port may be specified in configuration file
|
|
* API stats report contains Ocelot version
|
|
* Queue sizes are reported in stats
|
|
* Sleep if Gazelle API is down
|
|
* Handle DB connection problems gracefully
|
|
* Add Prometheus and Grafana support
|
|
BUILD
|
|
* Docker image based on Bookworm
|
|
|
|
-- 2.0.0 (2019-10-22)
|
|
BREAKING
|
|
* Write leech stats into their own dedicated tables (users_leech_stats, torrents_leech_stats)
|
|
* Move to CMake for building project instead of autotools
|
|
FEATURES
|
|
* Add support for building against jemalloc (http://jemalloc.net/)
|
|
* Add systemd service file for ocelot (thanks @HierraStrunger)
|
|
Add site_service config option to set the service/port ocelot runs on (defaults to "http")
|
|
BUGFIXES
|
|
* Fix FreeBSD support (thanks @HierraStrunger)
|
|
BUILD
|
|
* Drop Vagrantfile in favor of only supporting the Dockerfile
|
|
|
|
-- 1.1 (2018-10-29)
|
|
Move to spdlog (https://github.com/gabime/spdlog)to handle logging instead of cout
|
|
spdlog is vendored under src/, currently using v0.13.0
|
|
Add logging directive to config to configure how Ocelot logs and where it logs
|
|
Add daemon switch (--daemon, -d) to run Ocelot as a daemon
|
|
Move source code into src/ directory
|
|
Add Vagrantfile and Dockerfile for running Ocelot
|
|
|
|
-- 1.0 (2015-01-26)
|
|
NOTE: This version requires the following database change:
|
|
ALTER TABLE xbt_files_users DROP PRIMARY KEY, ADD PRIMARY KEY (peer_id,fid,uid)
|
|
|
|
Add a 'deleted' flag to user object to stop including removed users in returned peer lists
|
|
Add a prefix to the peer list keys for randomization and smaller chance of peer id collisions
|
|
Add HTTP Keep-Alive support and show request rate in the tracker stats
|
|
Add readonly mode for easier testing
|
|
Catch exceptions in the mysql::load_* functions
|
|
Configurable max/default numwant parameter
|
|
Don't disable binlogs in the peer flush sessions
|
|
Don't start a reaper thread if it's already running
|
|
Inline peer_is_visible and user functions
|
|
Mark nonchanging parameter as const
|
|
Mark users with IP = 127.0.0.1 as protected
|
|
Read settings from a config file instead of a compiled object
|
|
Reload torrent list, user list and client whitelist on SIGUSR1
|
|
Use atomic variables for stats
|
|
Use consistent integer widths where it matters
|
|
Use std::lock_guard instead of std::unique_lock for mutex
|
|
|
|
-- 0.8 (2014-03-27)
|
|
Add setting for maximum request size
|
|
Get client IP from the x-forwarded-for header if it is provided
|
|
Read/write full requests even if they are split into several recv/send calls
|
|
|
|
-- 0.7 (2013-12-05)
|
|
Add bintohex function to use when printing binary data to stdout
|
|
Check if compiler supports -std=c++11
|
|
Collect some stats and add a method that prints them
|
|
Create a function for adding peers
|
|
Fix a potential problem where a deleted pointer was being accessed
|
|
Improve the anti-web crawler code
|
|
Make use of the peer iterator for faster deletions
|
|
Remove most of the dependencies on boost and move all thread-related calls to the STL components provided in C++11
|
|
Run the reaper routines in a single thread to clean up stdout
|
|
Separate the sections responsible for output to make it easier to change http headers if needed
|
|
Update the db's torrents table when the peer reaper deletes the last peer on a torrent
|
|
|
|
-- 0.6 (2013-03-19)
|
|
Add --with-tcmalloc option to the configure script to enable Google's high-performance multi-threaded malloc() implementation
|
|
Configurable site path
|
|
Expire multiple tokens in a single request to the web server
|
|
Less spammy output unless a -v switch is passed when starting Ocelot
|
|
Make flush queries slightly less spammy by moving them to the functions that invoke flush threads
|
|
Print warning instead of error if someone submits an IPv6 or otherwise invalid address
|
|
Remove unused logger class
|
|
Send special data to search engine crawlers (and other odd clients) in an attempt to prevent indexing of announce URLs
|
|
Use a lighter query to update peer records in xbt_files_users if a peer's data has not changed since its previous announcement
|
|
|
|
-- 0.5 (2012-10-08)
|
|
Add ability to show reasons why a torrent was deleted on unregistered torrents
|
|
Add gzip compression support for announces and scrapes
|
|
Autotools build system
|
|
Fix incorrect handling of "corrupt" stat
|
|
Make Ocelot clear stale peer data out of the db on startup
|
|
Track transfer stats from users without leech privs
|
|
|
|
-- 0.4 (2012-06-20)
|
|
Convert all headers to lowercase
|
|
Don't show users to themselves (patch by GrecKo)
|
|
Don't write peer updates to the binlog
|
|
Search for peer in leecher list if not found in seeders list
|
|
Sort response dictionary according to BitTorrent specs
|
|
|
|
-- 0.3 (2012-02-03)
|
|
Add tokens
|
|
Added a logging function
|
|
Added DB_LOCK_TIMEOUT constant
|
|
Added info command
|
|
Added neutral leech
|
|
Added transactions and backups around the peer/user queries
|
|
Added working makefile
|
|
Adding more debug to query outputs
|
|
Changed flushing logic to prevent buildups
|
|
Clean shutdown
|
|
Don't print complete query if an error occurred
|
|
Fixed thread visibility
|
|
Flush every schedule
|
|
More debug output
|
|
New DB class with queue
|
|
Nicer schedule display
|
|
|
|
-- 0.2 alpha (2011-01-11)
|
|
Bug fixes
|
|
|
|
-- 0.1 alpha (2010-10-27)
|
|
First release
|