From 016fba12e2d1e4ca8a48af0a2090cb8a6b5a2272 Mon Sep 17 00:00:00 2001
From: Matthew Jordan <mjordan@digium.com>
Date: Wed, 8 Apr 2015 11:35:53 +0000
Subject: [PATCH] cel_pgsl: Add support for GMT timestamps

This patch adds a new option to cel_pgsl, "usegmtime", which causes timestamps
to be logged in GMT.

Review: https://reviewboard.asterisk.org/r/4571/

ASTERISK-23186 #close
Reported by: Rodrigo Ramirez Norambuena
patches:
  cel_pgsql.c_add_usegmtime2.patch submitted by Rodrigo Ramirez Norambuena (License 6577)



git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@434284 65c4cc65-6c06-0410-ace0-fbb531ad65f3
---
 CHANGES                               |  9 +++++++++
 cel/cel_pgsql.c                       | 10 ++++++++--
 configs/samples/cel_pgsql.conf.sample |  5 ++++-
 3 files changed, 21 insertions(+), 3 deletions(-)

diff --git a/CHANGES b/CHANGES
index f3ab90d2af..e36af4ac5b 100644
--- a/CHANGES
+++ b/CHANGES
@@ -106,6 +106,15 @@ res_musiconhold
    over the channel-set musicclass. This allows separate hold-music from
    application (e.g. Queue or Dial) specified music.
 
+
+CEL Backends
+------------------
+
+cel_pgsql
+------------------
+* Added a new option, 'usegmtime', which causes timestamps in CEL events
+  to be logged in GMT.
+
 ------------------------------------------------------------------------------
 --- Functionality changes from Asterisk 13.3.0 to Asterisk 13.4.0 ------------
 ------------------------------------------------------------------------------
diff --git a/cel/cel_pgsql.c b/cel/cel_pgsql.c
index f9c098feda..56a6069d45 100644
--- a/cel/cel_pgsql.c
+++ b/cel/cel_pgsql.c
@@ -72,6 +72,7 @@ static char *table;
 
 static int connected = 0;
 static int maxsize = 512, maxsize2 = 512;
+static int usegmtime = 0;
 
 /*! \brief show_user_def is off by default */
 #define CEL_SHOW_USERDEF_DEFAULT	0
@@ -166,7 +167,7 @@ static void pgsql_log(struct ast_event *event)
 
 	ast_mutex_lock(&pgsql_lock);
 
-	ast_localtime(&record.event_time, &tm, NULL);
+	ast_localtime(&record.event_time, &tm, usegmtime ? "GMT" : NULL);
 	ast_strftime(timestr, sizeof(timestr), DATE_FORMAT, &tm);
 
 	if ((!connected) && pghostname && pgdbuser && pgpassword && pgdbname) {
@@ -215,7 +216,7 @@ static void pgsql_log(struct ast_event *event)
 				} else {
 					/* char, hopefully */
 					LENGTHEN_BUF2(31);
-					ast_localtime(&record.event_time, &tm, NULL);
+					ast_localtime(&record.event_time, &tm, usegmtime ? "GMT" : NULL);
 					ast_strftime(buf, sizeof(buf), DATE_FORMAT, &tm);
 					ast_str_append(&sql2, 0, "%s'%s'", SEP, buf);
 				}
@@ -515,6 +516,11 @@ static int process_my_load_module(struct ast_config *cfg)
 	if ((tmp = ast_variable_retrieve(cfg, "global", "show_user_defined"))) {
 		cel_show_user_def = ast_true(tmp) ? 1 : 0;
 	}
+	if ((tmp = ast_variable_retrieve(cfg, "global", "usegmtime"))) {
+		usegmtime = ast_true(tmp);
+	} else {
+		usegmtime = 0;
+	}
 	if (option_debug) {
 		if (ast_strlen_zero(pghostname)) {
 			ast_debug(3, "cel_pgsql: using default unix socket\n");
diff --git a/configs/samples/cel_pgsql.conf.sample b/configs/samples/cel_pgsql.conf.sample
index 2298b2ddc6..30c789e4cc 100644
--- a/configs/samples/cel_pgsql.conf.sample
+++ b/configs/samples/cel_pgsql.conf.sample
@@ -59,10 +59,13 @@
 ;
 ;show_user_defined=yes
 
+; Log date/time in GMT. The default of this option is 'no'.
+;usegmtime=yes
+
 ;hostname=localhost
 ;port=5432
 ;dbname=asterisk
 ;password=password
 ;user=postgres
 ;table=cel		;SQL table where CEL's will be inserted
-;appname=asterisk   ; Postgres application_name support (optional). Whitespace not allowed.
\ No newline at end of file
+;appname=asterisk   ; Postgres application_name support (optional). Whitespace not allowed.
-- 
GitLab