logswan

Fast Web log analyzer using probabilistic data structures
Log | Files | Refs | README | LICENSE

ChangeLog (9392B)


      1 Logswan 2.1.10 (2021-02-15)
      2 
      3 - Only call MMDB_close if the GeoIP option was enabled. This fixes a
      4   crash on program exit on OpenBSD when running without the GeoIP
      5   option enabled.
      6 
      7 
      8 
      9 Logswan 2.1.9 (2021-02-15)
     10 
     11 - Stop forcing FORTIFY_SOURCE=2, it should be package builders decision
     12 - Add link to Homebrew package in the README
     13 - Remove unused countryId variable
     14 - Remove dead increments for argc and argv
     15 - Rename variables to get rid of all camelCase occurrences
     16 - Remove the measuring Logswan memory usage section from the README
     17 - Try to harmonize usage information everywhere
     18 - Rename the displayUsage() function to usage()
     19 - Rename all the parse*() functions to use snake_case
     20 - Get rid of global variables, move all declarations to main()
     21 
     22 
     23 
     24 Logswan 2.1.8 (2020-10-19)
     25 
     26 - Make displayUsage() static
     27 - Removing some leading whitespace characters
     28 - Constify methods and protocols names array
     29 - Constify countries and continents names and ID arrays
     30 - Enable FORTIFY_SOURCE level 2
     31 - Call memset() to set all entry_data struct fields to zero
     32 
     33 
     34 
     35 Logswan 2.1.7 (2020-09-17)
     36 
     37 - Add a Perl program to generate an example MMDB database for testing
     38 - Add a new test case to exercise the IP geolocation codepaths
     39 - Add support for seccomp on arm
     40 - Add missing test for __NR_mmap, the mmap syscall doesn't exist on arm
     41 
     42 
     43 
     44 Logswan 2.1.6 (2020-07-03)
     45 
     46 - Validate architectures for seccomp
     47 - Minor code shuffling, for consistency with other codebases
     48 - Add seccomp support on i386, tested on glibc and musl
     49 - Remove entry for "Netherlands Antilles" in country table
     50 - Swaziland was officially renamed to Eswatini in 2018
     51 - Macedonia was officially renamed to North Macedonia in February 2019
     52 - Rename Vatican City to Vatican to be consistent with GeoNames naming
     53 - Rename Aland to Aland Islands to be consistent with GeoNames naming
     54 
     55 
     56 
     57 Logswan 2.1.5 (2020-06-12)
     58 
     59 - Switch the GEOIP2DIR example to point to '/var/db/dbip'
     60 - Use CLOCK_REALTIME if CLOCK_MONOTONIC is not available
     61 - Remove unneeded <sys/select.h> and <sys/types.h> includes
     62 - Add missing <stddef.h> include
     63 - Remove useless _POSIX_SOURCE define
     64 - Remove useless _POSIX_C_SOURCE 199309L define
     65 - Define _GNU_SOURCE in CMakeLists.txt to avoid cluttering source files
     66 - No need to set HAVE_SECCOMP to 1, defining it is enough
     67 - Remove some unneeded seccomp related includes
     68 
     69 
     70 
     71 Logswan 2.1.4 (2020-03-27)
     72 
     73 - Move GEOIP2DB definition to CMakeLists.txt, allowing build time
     74   customization
     75 - Display database path name in error message
     76 - Remove direct link to GeoLite2 databases
     77 - Add dependencies installation instruction for Fedora
     78 - Change GEOIP2DB default value to "dbip-country-lite.mmdb"
     79 - Change GEOIP2DIR default value to "${CMAKE_INSTALL_PREFIX}/share/dbip"
     80 - Mention that DB-IP IP to Country Lite database is now the recommended option
     81 
     82 
     83 
     84 Logswan 2.1.3 (2020-01-17)
     85 
     86 - Add a new test target, to test log processing
     87 - Move printed statistics after the actual output
     88 - Use OpenBSD style(9) for function prototypes and declarations
     89 - Remove seccomp mention in README as it is currently disabled by default
     90 
     91 
     92 
     93 Logswan 2.1.2 (2019-11-19)
     94 
     95 - Add ENABLE_SECCOMP build option, to allow building seccomp support
     96   conditionally
     97 - Disable seccomp by default, it needs more testing on non !amd64 platforms
     98 - Use ${CMAKE_INSTALL_BINDIR} instead of hardcoding 'bin'
     99 
    100 
    101 
    102 Logswan 2.1.1 (2019-10-30)
    103 
    104 - Check if system has seccomp in CMakeLists.txt
    105 - Use the HAVE_SECCOMP macro to check whether or not to enable seccomp
    106 - Define and use a GEOIP2DB macro to specify GeoLite2 database name
    107 - Add a switch (-d) to allow specifying path to a GeoIP2 database file
    108 - Define and use a LOGSWAN_SYSCALL_ALLOW macro to make code more readable
    109 - Adding missing #include guard in seccomp.h header file
    110 - Use __NR_ instead of SYS_ prefix in LOGSWAN_SYSCALL_ALLOW
    111 - Fix the build on aarch64 Linux, where the open() syscall does not exist
    112 - Add error checking for both prctl() calls
    113 
    114 
    115 
    116 Logswan 2.1.0 (2019-10-23)
    117 
    118 - Add FALLTHROUGH comments where appropriate
    119 - Add support for parsing HTTP/3 requests
    120 - Add initial seccomp support on Linux, tested on musl and glibc systems
    121 
    122 
    123 
    124 Logswan 2.0.4 (2019-08-16)
    125 
    126 - Adding #include guard in compat header file
    127 - Add an example log file and regenerate output example
    128 - Add dependencies installation instructions for NetBSD and FreeBSD
    129 - Add final dots for options descriptions
    130 - Add final dot when printing results summary
    131 - Use EXIT_SUCCESS and EXIT_FAILURE macros for return values
    132 - Add a trailing newline when printing JSON output
    133 
    134 
    135 
    136 Logswan 2.0.3 (2018-10-15)
    137 
    138 - Use -std=c11, Logswan requires a C11 compiler for libmaxminddb
    139 - Enable support for parsing HTTP/2.0 requests, for real this time
    140 - Revert back to using INT64_MAX for strtonum() maxval, as maxval is long long
    141   and using UINT64_MAX caused bandwidth parsing to always fail (Thanks James Loh
    142   for reporting the issue)
    143 - Move maps of countries and continents to separate files
    144 
    145 
    146 
    147 Logswan 2.0.2 (2018-08-05)
    148 
    149 - Use UINT64_MAX for strtonum() maxval
    150 - Add missing headers and reorder includes
    151 - Add support for HTTP/2.0
    152 
    153 
    154 
    155 Logswan 2.0.1 (2018-06-27)
    156 
    157 - Do not use -Werror by default
    158 - Do not always call inet_pton two times per log line, this speeds things up
    159 - Use bool types for isIPv4 and isIPv6
    160 - Use the monotonic clock to determine runtime
    161 - Move conditional includes for 'pledge' and 'strtonum' in compat.h
    162 
    163 
    164 
    165 Logswan 2.0.0 (2018-03-16)
    166 
    167 - Use type off_t for results struct member fileSize
    168 - Reflect OpenBSD's pledge() changes
    169 - Switch to using libmaxminddb and GeoIP2/GeoLite2 databases
    170 - Add Antarctica to the list of continents
    171 
    172 
    173 
    174 Logswan 1.07 (2017-02-14)
    175 
    176 - Harmonize arrays names
    177 - Remove array of months, it's currently unused and will likely remain so
    178 - Simplify internal JSON array and object names
    179 - Use OpenBSD style(9) for function prototypes and declarations
    180 - Revert back to using strtok, at least for now
    181 - Do not use EXIT_SUCCESS and EXIT_FAILURE macros anymore
    182 - Fix implicit function declaration error on NetBSD (Thanks Maya Rashish)
    183 - Remove now useless variables initialization and unnecessary includes
    184 - Do not add an extra new line when displaying usage or version
    185 
    186 
    187 
    188 Logswan 1.06 (2016-12-17)
    189 
    190 - Relicensed under the BSD 2-Clause license
    191 - Use strtok_r instead of strtok to tokenize lines
    192 - Do not attempt to increment countries and continents arrays if there
    193   is no GeoIP database loaded
    194 - Harmonize variable names for the GeoIP databases
    195 - GeoIP lookups are now disabled by default (add a -g switch to enable)
    196 - Use fstat on open file descriptor instead of using stat before opening
    197   the input file
    198 - Count the log line as invalid if parsedLine.remoteHost is NULL
    199 - Pass results structure by reference, not by value
    200 - Initialize some uninitialized variables
    201 - Headers cleanup
    202 
    203 
    204 
    205 Logswan 1.05 (2016-02-25)
    206 
    207 - Documentation update (notes on measuring Logswan memory usage)
    208 - Add additional include directories for compat functions + dependencies
    209   to avoid using relative path in includes
    210 - Check that *lineBuffer is not NUL before attempting to parse log line
    211 - Perform GeoIP lookup and HLL add in the same if block
    212 - Increment IPv4 and IPv6 hits counters individually and conditionally
    213 - Use CMake to check if the system has OpenBSD's pledge available and
    214   link pledge conditionally using a null implementation when compiled
    215   on non OpenBSD systems
    216 - Adding an array of months, for the upcoming split log functionalities
    217 
    218 
    219 
    220 Logswan 1.04 (2016-01-10)
    221 
    222 - Moving global variables into main
    223 - Using 'size_t' instead of 'int' for array indexes in for loops
    224 - Using 'uint32_t' for all non 'uint64_t' integers
    225 - Do not increment hits and processed lines counter for each parsed line,
    226   compute total only once when everything is parsed
    227 - Setting 'CMAKE_BUILD_TYPE' to 'Release' and formatting fixes
    228 - Sanitize CMake script to build under NetBSD (Thanks Kamil Rytarowski)
    229 - Initializing some uninitialized variables
    230 - Renaming 'DATADIR' variables to 'GEOIPDIR'
    231 
    232 
    233 
    234 Logswan 1.03 (2016-01-01)
    235 
    236 - Remove header display and do not print name of processed file
    237 - Print results to stderr instead of stdout
    238 - Output JSON data to stdout instead of creating a new file
    239 - Define GeoIP databases path in CMakeLists.txt
    240 - Adding log file name in the JSON output
    241 - Removing some hardcoded values and replacing them with constants
    242   defined in config.h
    243 - Breaking the loop when a match is found in the request parser
    244 - Using enumeration constants instead of macros
    245 - Process GeoIP continent information
    246 - Re-ordering protocols and methods with more common occurrences on top of
    247   the list, allowing to break earlier when iterating through the array
    248 - Adding support for reading logs from standard input
    249 - Renaming 'definitions' files to 'config'
    250 - Increasing countries array size, as an attempt to be future-proof
    251 - Initial support for using pledge() on OpenBSD
    252 - Documentation updates (HLL precision, Features list, GeoIP databases)
    253 - Updated JSON output example
    254 - Added a manual page
    255 
    256 
    257 
    258 Logswan 1.02 (2015-11-02)
    259 
    260 - Renaming 'resource' variable to 'request' in the 'logLine' struct
    261 - Do not attempt to parse empty date tokens
    262 - Do not attempt to parse empty request tokens (Thanks Brian Carpenter for
    263 reporting the issue)
    264 
    265 
    266 
    267 Logswan 1.01 (2015-10-01)
    268 
    269 - Documentation updates
    270 - Fixing segfault when request data is empty or malformed (Thanks Jonathan
    271   Armani for reporting and proposing a fix)
    272 
    273 
    274 
    275 Logswan 1.00 (2015-09-28)
    276 
    277 - Initial release