logswan

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

ChangeLog (8073B)


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