Script 'mail_helper' called by obssrc Hello community, here is the log from the commit of package goaccess for openSUSE:Factory checked in at 2022-06-01 17:35:02 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/goaccess (Old) and /work/SRC/openSUSE:Factory/.goaccess.new.1548 (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "goaccess" Wed Jun 1 17:35:02 2022 rev:21 rq:980298 version:1.6 Changes: -------- --- /work/SRC/openSUSE:Factory/goaccess/goaccess.changes 2022-04-30 00:46:12.606986380 +0200 +++ /work/SRC/openSUSE:Factory/.goaccess.new.1548/goaccess.changes 2022-06-01 17:35:26.870796513 +0200 @@ -1,0 +2,17 @@ +Wed Jun 1 07:15:26 UTC 2022 - Michael Vetter <mvet...@suse.com> + +- Update to 1.6: + * Changed slightly how the XFF field is specified. See man page for details. + * Ensure city is displayed with the DBIP City Lite database. + * Ensure no 'cleaning up resources' message is displayed if `--no-progress` + is passed. + * Ensure the maximum number of items per panel defaults to 1440 (24hrs) when + passing `--date-spec=min`. + * Fixed issue when parsing a delimited XFF field followed by a host IP. + * Fixed issue where some data was buffered on the WebSocket server before it + was sent to each client. + * Fixed issue where the WebSocket server would fail with POLLNVAL consuming + 100% CPU. + * Fixed segfault when attempting to open an unresolved IP on mac/BSDs. + +------------------------------------------------------------------- Old: ---- goaccess-1.5.7.tar.gz New: ---- goaccess-1.6.tar.gz ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ goaccess.spec ++++++ --- /var/tmp/diff_new_pack.3bdWor/_old 2022-06-01 17:35:28.270798167 +0200 +++ /var/tmp/diff_new_pack.3bdWor/_new 2022-06-01 17:35:28.274798172 +0200 @@ -21,7 +21,7 @@ %global goaccess_services goaccess@.service goaccess@.timer Name: goaccess -Version: 1.5.7 +Version: 1.6 Release: 0 Summary: Apache Web Log Analyzer License: GPL-2.0-or-later ++++++ goaccess-1.5.7.tar.gz -> goaccess-1.6.tar.gz ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/goaccess-1.5.7/AUTHORS new/goaccess-1.6/AUTHORS --- old/goaccess-1.5.7/AUTHORS 2022-04-28 03:25:52.000000000 +0200 +++ new/goaccess-1.6/AUTHORS 2022-06-01 05:34:16.000000000 +0200 @@ -12,6 +12,7 @@ * Alexander Eifler <nore...@github.com> * Alexandre GUIOT--VALENTIN <cont...@alexandregv.fr> * Alexandre Perrin <nore...@github.com> + * Amos Hayes <aha...@gcrc.carleton.ca> * A. Nackov <anac...@gmail.com> * Anders Johansson <47452862+tellustheg...@users.noreply.github.com> * Andreas Sommer <andreas.som...@ppro.com> @@ -88,6 +89,7 @@ * Max Christian Pohle <goacc...@prosoftcorp.com> * metrix78 <metrix1...@gmail.com> * Michael Vetter <jub...@iodoru.org> + * Mika Raunio <mika@diago.global> * m-r-r <raybaudro...@gmail.com> * mynameiscfed <christopherfeder...@gmail.com> * Nicolas Le Manchet <nico...@lemanchet.fr> diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/goaccess-1.5.7/ChangeLog new/goaccess-1.6/ChangeLog --- old/goaccess-1.5.7/ChangeLog 2022-04-28 03:24:02.000000000 +0200 +++ new/goaccess-1.6/ChangeLog 2022-06-01 05:04:44.000000000 +0200 @@ -1,3 +1,18 @@ +Changes to GoAccess 1.6 - Tuesday, May 31, 2022 + + - Changed slightly how the XFF field is specified. See man page for details. + - Ensure city is displayed with the DBIP City Lite database. + - Ensure no 'cleaning up resources' message is displayed if `--no-progress` + is passed. + - Ensure the maximum number of items per panel defaults to 1440 (24hrs) when + passing `--date-spec=min`. + - Fixed issue when parsing a delimited XFF field followed by a host IP. + - Fixed issue where some data was buffered on the WebSocket server before it + was sent to each client. + - Fixed issue where the WebSocket server would fail with POLLNVAL consuming + 100% CPU. + - Fixed segfault when attempting to open an unresolved IP on mac/BSDs. + Changes to GoAccess 1.5.7 - Thursday, April 28, 2022 - Updated Caddy's JSON format. This should address CADDY's v2.5.0 change. diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/goaccess-1.5.7/NEWS new/goaccess-1.6/NEWS --- old/goaccess-1.5.7/NEWS 2022-04-28 03:18:06.000000000 +0200 +++ new/goaccess-1.6/NEWS 2022-06-01 04:56:02.000000000 +0200 @@ -2,6 +2,8 @@ Gerardo Orellana <goacc...@prosoftcorp.com> * Version history: + - 1.6 [Tuesday, May 31 , 2022] + . GoAccess 1.6 Released. See ChangeLog for new features/bug-fixes. - 1.5.7 [Thursday, April 28 , 2022] . GoAccess 1.5.7 Released. See ChangeLog for new features/bug-fixes. - 1.5.6 [Wednesday, March 30, 2022] diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/goaccess-1.5.7/configure new/goaccess-1.6/configure --- old/goaccess-1.5.7/configure 2022-04-28 03:29:48.000000000 +0200 +++ new/goaccess-1.6/configure 2022-06-01 05:34:51.000000000 +0200 @@ -1,6 +1,6 @@ #! /bin/sh # Guess values for system-dependent variables and create Makefiles. -# Generated by GNU Autoconf 2.69 for goaccess 1.5.7. +# Generated by GNU Autoconf 2.69 for goaccess 1.6. # # Report bugs to <he...@goaccess.io>. # @@ -580,8 +580,8 @@ # Identity of this package. PACKAGE_NAME='goaccess' PACKAGE_TARNAME='goaccess' -PACKAGE_VERSION='1.5.7' -PACKAGE_STRING='goaccess 1.5.7' +PACKAGE_VERSION='1.6' +PACKAGE_STRING='goaccess 1.6' PACKAGE_BUGREPORT='he...@goaccess.io' PACKAGE_URL='https://goaccess.io' @@ -1333,7 +1333,7 @@ # Omit some internal or obsolete options to make the list less imposing. # This message is too long to be a string in the A/UX 3.1 sh. cat <<_ACEOF -\`configure' configures goaccess 1.5.7 to adapt to many kinds of systems. +\`configure' configures goaccess 1.6 to adapt to many kinds of systems. Usage: $0 [OPTION]... [VAR=VALUE]... @@ -1404,7 +1404,7 @@ if test -n "$ac_init_help"; then case $ac_init_help in - short | recursive ) echo "Configuration of goaccess 1.5.7:";; + short | recursive ) echo "Configuration of goaccess 1.6:";; esac cat <<\_ACEOF @@ -1514,7 +1514,7 @@ test -n "$ac_init_help" && exit $ac_status if $ac_init_version; then cat <<\_ACEOF -goaccess configure 1.5.7 +goaccess configure 1.6 generated by GNU Autoconf 2.69 Copyright (C) 2012 Free Software Foundation, Inc. @@ -2067,7 +2067,7 @@ This file contains any messages produced by compilers while running configure, to aid debugging if configure makes a mistake. -It was created by goaccess $as_me 1.5.7, which was +It was created by goaccess $as_me 1.6, which was generated by GNU Autoconf 2.69. Invocation command line was $ $0 $@ @@ -2934,7 +2934,7 @@ # Define the identity of the package. PACKAGE='goaccess' - VERSION='1.5.7' + VERSION='1.6' cat >>confdefs.h <<_ACEOF @@ -9658,7 +9658,7 @@ # report actual input values of CONFIG_FILES etc. instead of their # values after options handling. ac_log=" -This file was extended by goaccess $as_me 1.5.7, which was +This file was extended by goaccess $as_me 1.6, which was generated by GNU Autoconf 2.69. Invocation command line was CONFIG_FILES = $CONFIG_FILES @@ -9725,7 +9725,7 @@ cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`" ac_cs_version="\\ -goaccess config.status 1.5.7 +goaccess config.status 1.6 configured by $0, generated by GNU Autoconf 2.69, with options \\"\$ac_cs_config\\" diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/goaccess-1.5.7/configure.ac new/goaccess-1.6/configure.ac --- old/goaccess-1.5.7/configure.ac 2022-04-28 03:16:05.000000000 +0200 +++ new/goaccess-1.6/configure.ac 2022-06-01 04:51:48.000000000 +0200 @@ -2,7 +2,7 @@ # Process this file with autoconf to produce a configure script. AC_PREREQ([2.69]) -AC_INIT([goaccess],[1.5.7],[he...@goaccess.io],[],[https://goaccess.io]) +AC_INIT([goaccess],[1.6],[he...@goaccess.io],[],[https://goaccess.io]) AM_INIT_AUTOMAKE AC_CONFIG_SRCDIR([src/goaccess.c]) AC_CONFIG_HEADERS([src/config.h]) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/goaccess-1.5.7/goaccess.1 new/goaccess-1.6/goaccess.1 --- old/goaccess-1.5.7/goaccess.1 2022-04-28 03:29:31.000000000 +0200 +++ new/goaccess-1.6/goaccess.1 2022-06-01 05:32:59.000000000 +0200 @@ -1,4 +1,4 @@ -.TH goaccess 1 "APRIL 2022" GNU+Linux "User Manuals" +.TH goaccess 1 "MAY 2022" GNU+Linux "User Manuals" .SH NAME goaccess \- fast web log analyzer and interactive viewer. .SH SYNOPSIS @@ -909,10 +909,31 @@ It uses a special specifier which consists of a tilde before the host specifier, followed by the character(s) that delimit the XFF field, which are -enclosed by curly braces (i.e., ~h{," }) +enclosed by curly braces. i.e., "~h{, } + +For example, "~h{, }" is used in order to parse "11.25.11.53, 17.68.33.17" field +which is delimited by a comma and a space (enclosed by double quotes). + +.TS +allbox; +lb lb +l l. +XFF field specifier +T{ +.BR \[dq]192.1.2.3, \~192.68.33.17,\~192.1.1.2\[dq] +T} \[dq]~h{, }\[dq] +T{ +.BR \[dq]192.1.2.12\[dq],\~\[dq]192.68.33.17\[dq] +T} ~h{\[dq], } +T{ +.BR 192.1.2.12,\~192.68.33.17 +T} ~h{, } +T{ +.BR 192.1.2.14\~192.68.33.17\~192.1.1.2 +T} ~h{ } +.TE + -For example, ~h{," } is used in order to parse "11.25.11.53, 17.68.33.17" field -which is delimited by a double quote, a comma, and a space. .P .I Note: In order to get the average, cumulative and maximum time served in GoAccess, diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/goaccess-1.5.7/po/de.po new/goaccess-1.6/po/de.po --- old/goaccess-1.5.7/po/de.po 2022-04-28 03:30:13.000000000 +0200 +++ new/goaccess-1.6/po/de.po 2022-06-01 05:35:17.000000000 +0200 @@ -7,7 +7,7 @@ msgstr "" "Project-Id-Version: \n" "Report-Msgid-Bugs-To: he...@goaccess.io\n" -"POT-Creation-Date: 2022-04-27 20:30-0500\n" +"POT-Creation-Date: 2022-05-31 22:35-0500\n" "PO-Revision-Date: 2019-05-05 16:03+0200\n" "Last-Translator: Axel Wehner <m...@axelwehner.de>\n" "Language: de\n" diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/goaccess-1.5.7/po/es.po new/goaccess-1.6/po/es.po --- old/goaccess-1.5.7/po/es.po 2022-04-28 03:30:13.000000000 +0200 +++ new/goaccess-1.6/po/es.po 2022-06-01 05:35:17.000000000 +0200 @@ -7,7 +7,7 @@ msgstr "" "Project-Id-Version: Goaccess\n" "Report-Msgid-Bugs-To: he...@goaccess.io\n" -"POT-Creation-Date: 2022-04-27 20:30-0500\n" +"POT-Creation-Date: 2022-05-31 22:35-0500\n" "PO-Revision-Date: 2017-08-04 13:00-0300\n" "Last-Translator: Enrique Becerra <kab...@gmail.com>\n" "Language-Team: \n" diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/goaccess-1.5.7/po/fr.po new/goaccess-1.6/po/fr.po --- old/goaccess-1.5.7/po/fr.po 2022-04-28 03:30:13.000000000 +0200 +++ new/goaccess-1.6/po/fr.po 2022-06-01 05:35:17.000000000 +0200 @@ -6,7 +6,7 @@ msgstr "" "Project-Id-Version: goaccess 1.4\n" "Report-Msgid-Bugs-To: he...@goaccess.io\n" -"POT-Creation-Date: 2022-04-27 20:30-0500\n" +"POT-Creation-Date: 2022-05-31 22:35-0500\n" "PO-Revision-Date: 2020-07-10 11:44+0200\n" "Last-Translator: Coban L. <coban.leb...@nfrance.com>\n" "Language-Team: fran??ais\n" diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/goaccess-1.5.7/po/goaccess.pot new/goaccess-1.6/po/goaccess.pot --- old/goaccess-1.5.7/po/goaccess.pot 2022-04-28 03:30:13.000000000 +0200 +++ new/goaccess-1.6/po/goaccess.pot 2022-06-01 05:35:17.000000000 +0200 @@ -6,9 +6,9 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: goaccess 1.5.7\n" +"Project-Id-Version: goaccess 1.6\n" "Report-Msgid-Bugs-To: he...@goaccess.io\n" -"POT-Creation-Date: 2022-04-27 20:30-0500\n" +"POT-Creation-Date: 2022-05-31 22:35-0500\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" "Language-Team: LANGUAGE <l...@li.org>\n" diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/goaccess-1.5.7/po/it.po new/goaccess-1.6/po/it.po --- old/goaccess-1.5.7/po/it.po 2022-04-28 03:30:13.000000000 +0200 +++ new/goaccess-1.6/po/it.po 2022-06-01 05:35:18.000000000 +0200 @@ -7,7 +7,7 @@ msgstr "" "Project-Id-Version: Goaccess\n" "Report-Msgid-Bugs-To: he...@goaccess.io\n" -"POT-Creation-Date: 2022-04-27 20:30-0500\n" +"POT-Creation-Date: 2022-05-31 22:35-0500\n" "PO-Revision-Date: 2017-08-04 13:00-0300\n" "Last-Translator: Mario Donnarumma <mario.donnarumma...@gmail.com>\n" "Language-Team: \n" diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/goaccess-1.5.7/po/ja.po new/goaccess-1.6/po/ja.po --- old/goaccess-1.5.7/po/ja.po 2022-04-28 03:30:13.000000000 +0200 +++ new/goaccess-1.6/po/ja.po 2022-06-01 05:35:17.000000000 +0200 @@ -7,7 +7,7 @@ msgstr "" "Project-Id-Version: goaccess 1.3\n" "Report-Msgid-Bugs-To: he...@goaccess.io\n" -"POT-Creation-Date: 2022-04-27 20:30-0500\n" +"POT-Creation-Date: 2022-05-31 22:35-0500\n" "PO-Revision-Date: 2020-08-19 06:27+0900\n" "Last-Translator: Kamino <67395018+err...@users.noreply.github.com>\n" "Language-Team: Japanese\n" diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/goaccess-1.5.7/po/pt_BR.po new/goaccess-1.6/po/pt_BR.po --- old/goaccess-1.5.7/po/pt_BR.po 2022-04-28 03:30:13.000000000 +0200 +++ new/goaccess-1.6/po/pt_BR.po 2022-06-01 05:35:18.000000000 +0200 @@ -7,7 +7,7 @@ msgstr "" "Project-Id-Version: Goaccess\n" "Report-Msgid-Bugs-To: he...@goaccess.io\n" -"POT-Creation-Date: 2022-04-27 20:30-0500\n" +"POT-Creation-Date: 2022-05-31 22:35-0500\n" "PO-Revision-Date: 2019-04-25 20:34-0300\n" "Last-Translator: Alan Placidina Maria <alanplacid...@gmail.com>\n" "Language-Team: \n" diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/goaccess-1.5.7/po/ru.po new/goaccess-1.6/po/ru.po --- old/goaccess-1.5.7/po/ru.po 2022-04-28 03:30:13.000000000 +0200 +++ new/goaccess-1.6/po/ru.po 2022-06-01 05:35:18.000000000 +0200 @@ -7,7 +7,7 @@ msgstr "" "Project-Id-Version: goaccess 1.5.6\n" "Report-Msgid-Bugs-To: he...@goaccess.io\n" -"POT-Creation-Date: 2022-04-27 20:30-0500\n" +"POT-Creation-Date: 2022-05-31 22:35-0500\n" "PO-Revision-Date: 2022-04-21 10:17+0300\n" "Last-Translator: Artyom Karlov <artyom.kar...@gmail.com>\n" "Language-Team: \n" diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/goaccess-1.5.7/po/sv.po new/goaccess-1.6/po/sv.po --- old/goaccess-1.5.7/po/sv.po 2022-04-28 03:30:13.000000000 +0200 +++ new/goaccess-1.6/po/sv.po 2022-06-01 05:35:18.000000000 +0200 @@ -7,7 +7,7 @@ msgstr "" "Project-Id-Version: goaccess 1.3\n" "Report-Msgid-Bugs-To: he...@goaccess.io\n" -"POT-Creation-Date: 2022-04-27 20:30-0500\n" +"POT-Creation-Date: 2022-05-31 22:35-0500\n" "PO-Revision-Date: 2018-12-13 22:48-0600\n" "Last-Translator: Anders Johansson <johans...@aljmedia.se>\n" "Language-Team: none\n" diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/goaccess-1.5.7/po/uk.po new/goaccess-1.6/po/uk.po --- old/goaccess-1.5.7/po/uk.po 2022-04-28 03:30:13.000000000 +0200 +++ new/goaccess-1.6/po/uk.po 2022-06-01 05:35:18.000000000 +0200 @@ -7,7 +7,7 @@ msgstr "" "Project-Id-Version: goaccess 1.5.6\n" "Report-Msgid-Bugs-To: he...@goaccess.io\n" -"POT-Creation-Date: 2022-04-27 20:30-0500\n" +"POT-Creation-Date: 2022-05-31 22:35-0500\n" "PO-Revision-Date: 2022-04-21 10:17+0300\n" "Last-Translator: Artyom Karlov <artyom.kar...@gmail.com>\n" "Language-Team: \n" diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/goaccess-1.5.7/po/zh_CN.po new/goaccess-1.6/po/zh_CN.po --- old/goaccess-1.5.7/po/zh_CN.po 2022-04-28 03:30:13.000000000 +0200 +++ new/goaccess-1.6/po/zh_CN.po 2022-06-01 05:35:18.000000000 +0200 @@ -5,7 +5,7 @@ msgstr "" "Project-Id-Version: goaccess 1.5.6\n" "Report-Msgid-Bugs-To: he...@goaccess.io\n" -"POT-Creation-Date: 2022-04-27 20:30-0500\n" +"POT-Creation-Date: 2022-05-31 22:35-0500\n" "PO-Revision-Date: 2017-04-03 09:43+0200\n" "Last-Translator: Ai<he...@goaccess.io>\n" "Language-Team: Ai\n" diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/goaccess-1.5.7/src/commons.c new/goaccess-1.6/src/commons.c --- old/goaccess-1.5.7/src/commons.c 2022-04-28 02:53:00.000000000 +0200 +++ new/goaccess-1.6/src/commons.c 2022-05-31 18:48:57.000000000 +0200 @@ -90,7 +90,8 @@ /* no max choices, return defaults */ if (conf.max_items <= 0) - return conf.real_time_html ? MAX_CHOICES_RT : MAX_CHOICES; + return conf.real_time_html ? MAX_CHOICES_RT : (conf.date_spec_hr == + 2 ? MAX_CHOICES_MINUTE : MAX_CHOICES); /* TERM */ if (!conf.output_stdout) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/goaccess-1.5.7/src/commons.h new/goaccess-1.6/src/commons.h --- old/goaccess-1.5.7/src/commons.h 2022-04-28 03:15:34.000000000 +0200 +++ new/goaccess-1.6/src/commons.h 2022-06-01 04:50:36.000000000 +0200 @@ -43,7 +43,7 @@ #define __attribute__(x) /**/ #endif #define GO_UNUSED __attribute__((unused)) -#define GO_VERSION "1.5.7" +#define GO_VERSION "1.6" #define GO_WEBSITE "https://goaccess.io/" extern struct tm now_tm; @@ -58,9 +58,11 @@ #endif /* maximum number of items within a panel */ -#define MAX_CHOICES 366 +#define MAX_CHOICES 366 /* real-time */ -#define MAX_CHOICES_RT 50 +#define MAX_CHOICES_RT 50 +/* max default items when date-spec = min */ +#define MAX_CHOICES_MINUTE 1440 /* 24hrs */ /* date and time length - e.g., 2016/12/12 12:12:12 -0600 */ #define DATE_TIME 25 + 1 diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/goaccess-1.5.7/src/gdashboard.c new/goaccess-1.6/src/gdashboard.c --- old/goaccess-1.5.7/src/gdashboard.c 2022-04-28 02:53:00.000000000 +0200 +++ new/goaccess-1.6/src/gdashboard.c 2022-05-31 18:48:57.000000000 +0200 @@ -1343,7 +1343,8 @@ char *data = NULL; int *idx; - if (!metrics->data) + data = is_subitem ? render_child_node (metrics->data) : metrics->data; + if (!data) return; idx = &(*dash)->module[module].idx_data; @@ -1353,8 +1354,6 @@ idata->metrics = new_gmetrics (); idata->is_subitem = is_subitem; - data = is_subitem ? render_child_node (metrics->data) : metrics->data; - idata->metrics->hits = metrics->hits; idata->metrics->hits_perc = get_percentage (totals.hits, metrics->hits); idata->metrics->visitors = metrics->visitors; diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/goaccess-1.5.7/src/gdns.c new/goaccess-1.6/src/gdns.c --- old/goaccess-1.5.7/src/gdns.c 2022-04-28 02:53:00.000000000 +0200 +++ new/goaccess-1.6/src/gdns.c 2022-05-31 19:05:02.000000000 +0200 @@ -157,13 +157,17 @@ * On success, a malloc'd hostname is returned. */ static char * reverse_host (const struct sockaddr *a, socklen_t length) { - char h[H_SIZE]; + char h[H_SIZE] = { 0 }; int flags, st; flags = NI_NAMEREQD; st = getnameinfo (a, length, h, H_SIZE, NULL, 0, flags); - if (!st) + if (!st) { + /* BSD returns \0 while Linux . on solve lookups */ + if (*h == '\0') + return alloc_string ("."); return alloc_string (h); + } return alloc_string (gai_strerror (st)); } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/goaccess-1.5.7/src/geoip2.c new/goaccess-1.6/src/geoip2.c --- old/goaccess-1.5.7/src/geoip2.c 2022-04-28 02:53:10.000000000 +0200 +++ new/goaccess-1.6/src/geoip2.c 2022-05-31 18:48:57.000000000 +0200 @@ -90,7 +90,7 @@ FATAL ("Unable to open GeoIP2 database %s: %s\n", fn, MMDB_strerror (status)); } - if (strcmp (mmdb->metadata.database_type, "GeoLite2-City") == 0) + if (strstr (mmdb->metadata.database_type, "-City") != NULL) geoip_city_type = 1; } @@ -209,8 +209,12 @@ if (res.found_entry) { city = get_value (res, "city", "names", DOC_LANG, NULL); region = get_value (res, "subdivisions", "0", "names", DOC_LANG, NULL); - if (!city) { city = get_value (res, "city", "names", "en", NULL); } - if (!region) { region = get_value (res, "subdivisions", "0", "names", "en", NULL); } + if (!city) { + city = get_value (res, "city", "names", "en", NULL); + } + if (!region) { + region = get_value (res, "subdivisions", "0", "names", "en", NULL); + } } geoip_set_city (city, region, location); free (city); @@ -228,7 +232,9 @@ if (res.found_entry) { country = get_value (res, "country", "names", DOC_LANG, NULL); code = get_value (res, "country", "iso_code", NULL); - if (!country) { country = get_value (res, "country", "names", "en", NULL); } + if (!country) { + country = get_value (res, "country", "names", "en", NULL); + } } geoip_set_country (country, code, location); free (code); diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/goaccess-1.5.7/src/goaccess.c new/goaccess-1.6/src/goaccess.c --- old/goaccess-1.5.7/src/goaccess.c 2022-04-28 02:53:00.000000000 +0200 +++ new/goaccess-1.6/src/goaccess.c 2022-05-31 18:48:57.000000000 +0200 @@ -210,7 +210,9 @@ if (!conf.output_stdout) endwin (); - fprintf (stdout, "Cleaning up resources...\n"); + if (!conf.no_progress) + fprintf (stdout, "Cleaning up resources...\n"); + /* unable to process valid data */ if (ret) output_logerrors (); diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/goaccess-1.5.7/src/parser.c new/goaccess-1.6/src/parser.c --- old/goaccess-1.5.7/src/parser.c 2022-04-28 02:53:00.000000000 +0200 +++ new/goaccess-1.6/src/parser.c 2022-05-31 18:48:57.000000000 +0200 @@ -1283,14 +1283,11 @@ * On success, the malloc'd token is assigned to a GLogItem->host and * 0 is returned. */ static int -find_xff_host (GLogItem * logitem, char **str, char **p) { - char *ptr = NULL, *tkn = NULL, *skips = NULL; +set_xff_host (GLogItem * logitem, char **str, char *skips, int out) { + char *ptr = NULL, *tkn = NULL; int invalid_ip = 1, len = 0, type_ip = TYPE_IPINV; int idx = 0, skips_len = 0; - if (!(skips = extract_braces (p))) - return spec_err (logitem, SPEC_SFMT_MIS, **p, "{}"); - skips_len = strlen (skips); ptr = *str; while (*ptr != '\0') { @@ -1321,13 +1318,48 @@ free (tkn); idx = 0; + /* found the client IP, break then */ + if (logitem->host && out) + break; + move: *str += len; } + return logitem->host == NULL; +} + +/* Attempt to find possible delimiters in the X-Forwarded-For (XFF) field. + * + * If no IP is found, 1 is returned. + * On success, the malloc'd token is assigned to a GLogItem->host and 0 is returned. */ +static int +find_xff_host (GLogItem * logitem, char **str, char **p) { + char *skips = NULL, *extract = NULL; + char pch[2] = { 0 }; + int res = 0; + + if (!(skips = extract_braces (p))) + return spec_err (logitem, SPEC_SFMT_MIS, **p, "{}"); + + /* if the log format current char is not within the braces special chars, then + * we assume the range of IPs are within hard delimiters */ + if (!strchr (skips, **p) && strchr (*str, **p)) { + strcpy (pch, (char[2]) { (char) **p, '\0' }); + if (!(extract = parse_string (&(*str), pch, 1))) + goto clean; + + if (!(res = set_xff_host (logitem, &extract, skips, 1))) + free (extract); + (*str)++; /* move a char forward from the trailing delim */ + } else { + res = set_xff_host (logitem, str, skips, 0); + } + +clean: free (skips); - return logitem->host == NULL; + return res; } /* Handle special specifiers. @@ -1447,7 +1479,9 @@ if (!glog->log_erridx) continue; - fprintf (stderr, "==%d== GoAccess - Copyright (C) 2009-2020 by Gerardo Orellana\n", pid); + fprintf (stderr, "==%d== GoAccess - version %s - %s %s\n", pid, GO_VERSION, __DATE__, + __TIME__); + fprintf (stderr, "==%d== Config file: %s\n", pid, conf.iconfigfile ? : NO_CONFIG_FILE); fprintf (stderr, "==%d== https://goaccess.io - <he...@goaccess.io>\n", pid); fprintf (stderr, "==%d== Released under the MIT License.\n", pid); fprintf (stderr, "==%d==\n", pid); diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/goaccess-1.5.7/src/websocket.c new/goaccess-1.6/src/websocket.c --- old/goaccess-1.5.7/src/websocket.c 2022-04-19 01:31:21.000000000 +0200 +++ new/goaccess-1.6/src/websocket.c 2022-05-31 18:48:57.000000000 +0200 @@ -88,9 +88,9 @@ static nfds_t nfdstate = 0; static WSConfig wsconfig = { 0 }; -static void handle_read_close (int conn, WSClient * client, WSServer * server); -static void handle_reads (int conn, WSServer * server); -static void handle_writes (int conn, WSServer * server); +static void handle_read_close (int *conn, WSClient * client, WSServer * server); +static void handle_reads (int *conn, WSServer * server); +static void handle_writes (int *conn, WSServer * server); #ifdef HAVE_LIBSSL static int shutdown_ssl (WSClient * client); #endif @@ -878,7 +878,7 @@ * On error or if no SSL pending status, 1 is returned. * On success, the TLS/SSL pending action is called and 0 is returned */ static int -handle_ssl_pending_rw (int conn, WSServer * server, WSClient * client) { +handle_ssl_pending_rw (int *conn, WSServer * server, WSClient * client) { if (!wsconfig.use_ssl) return 1; @@ -2183,13 +2183,13 @@ /* Handle a tcp read close connection. */ static void -handle_read_close (int conn, WSClient * client, WSServer * server) { +handle_read_close (int *conn, WSClient * client, WSServer * server) { if (client->status & WS_SENDING) { server->closing = 1; set_pollfd (client->listener, POLLOUT); return; } - handle_tcp_close (conn, client, server); + handle_tcp_close (*conn, client, server); } /* Handle a new socket connection. */ @@ -2216,10 +2216,10 @@ /* Handle a tcp read. */ static void -handle_reads (int conn, WSServer * server) { +handle_reads (int *conn, WSServer * server) { WSClient *client = NULL; - if (!(client = ws_get_client_from_list (conn, &server->colist))) + if (!(client = ws_get_client_from_list (*conn, &server->colist))) return; #ifdef HAVE_LIBSSL @@ -2235,6 +2235,7 @@ /* An error occurred while reading data or connection closed */ if ((client->status & WS_CLOSE)) { handle_read_close (conn, client, server); + *conn = -1; } } @@ -2246,10 +2247,10 @@ /* Handle a tcp write. */ static void -handle_writes (int conn, WSServer * server) { +handle_writes (int *conn, WSServer * server) { WSClient *client = NULL; - if (!(client = ws_get_client_from_list (conn, &server->colist))) + if (!(client = ws_get_client_from_list (*conn, &server->colist))) return; #ifdef HAVE_LIBSSL @@ -2268,7 +2269,7 @@ * waiting from the last send() from the server to the client. e.g., * sending status code */ if ((client->status & WS_CLOSE) && !(client->status & WS_SENDING)) - handle_write_close (conn, client, server); + handle_write_close (*conn, client, server); } /* Create named pipe (FIFO) with the given pipe name. @@ -2742,7 +2743,7 @@ * descriptors until we have something to read or write. */ void ws_start (WSServer * server) { - int listener = -1; + int listener = -1, ret = 0; struct pollfd *cfdstate = NULL, *pfd, *efd; nfds_t ncfdstate = 0; bool run = true; @@ -2770,12 +2771,13 @@ if (ncfdstate != nfdstate) { free (cfdstate); cfdstate = xmalloc (nfdstate * sizeof (*cfdstate)); + memset (cfdstate, 0, sizeof (*cfdstate) * nfdstate); ncfdstate = nfdstate; } memcpy (cfdstate, fdstate, ncfdstate * sizeof (*cfdstate)); /* yep, wait patiently */ - if (poll (cfdstate, nfdstate, -1) == -1) { + if ((ret = poll (cfdstate, nfdstate, -1)) == -1) { switch (errno) { case EINTR: LOG (("A signal was caught on poll(2)\n")); @@ -2788,6 +2790,13 @@ /* iterate over existing connections */ efd = cfdstate + nfdstate; for (pfd = cfdstate; pfd < efd; pfd++) { + if (pfd->revents & POLLHUP) + LOG (("Got POLLHUP %d\n", pfd->fd)); + if (pfd->revents & POLLNVAL) + LOG (("Got POLLNVAL %d\n", pfd->fd)); + if (pfd->revents & POLLERR) + LOG (("Got POLLERR %d\n", pfd->fd)); + /* handle self-pipe trick */ if (pfd->fd == server->self_pipe[0]) { if (pfd->revents & POLLIN) { @@ -2815,11 +2824,11 @@ if (ffd != NULL) ffd->events &= ~POLLIN; } else - handle_reads (pfd->fd, server); + handle_reads (&pfd->fd, server); } /* handle sending data to a client */ if (pfd->revents & POLLOUT) - handle_writes (pfd->fd, server); + handle_writes (&pfd->fd, server); } } }