logswan

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

ChangeLog (8641B)


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