From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from firstgate.proxmox.com (firstgate.proxmox.com [212.224.123.68]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits)) (No client certificate requested) by lists.proxmox.com (Postfix) with ESMTPS id D562B6CC76 for ; Tue, 2 Feb 2021 14:04:18 +0100 (CET) Received: from firstgate.proxmox.com (localhost [127.0.0.1]) by firstgate.proxmox.com (Proxmox) with ESMTP id CC435F136 for ; Tue, 2 Feb 2021 14:03:48 +0100 (CET) Received: from proxmox-new.maurer-it.com (proxmox-new.maurer-it.com [212.186.127.180]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits)) (No client certificate requested) by firstgate.proxmox.com (Proxmox) with ESMTPS id 1F1CBF0E9 for ; Tue, 2 Feb 2021 14:03:47 +0100 (CET) Received: from proxmox-new.maurer-it.com (localhost.localdomain [127.0.0.1]) by proxmox-new.maurer-it.com (Proxmox) with ESMTP id E102F457F3 for ; Tue, 2 Feb 2021 14:03:46 +0100 (CET) From: Stoiko Ivanov To: pmg-devel@lists.proxmox.com Date: Tue, 2 Feb 2021 14:03:17 +0100 Message-Id: <20210202130317.31873-4-s.ivanov@proxmox.com> X-Mailer: git-send-email 2.20.1 In-Reply-To: <20210202130317.31873-1-s.ivanov@proxmox.com> References: <20210202130317.31873-1-s.ivanov@proxmox.com> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-SPAM-LEVEL: Spam detection results: 0 AWL 0.064 Adjusted score from AWL reputation of From: address KAM_DMARC_STATUS 0.01 Test Rule for DKIM or SPF Failure with Strict Alignment RCVD_IN_DNSWL_MED -2.3 Sender listed at https://www.dnswl.org/, medium trust SPF_HELO_NONE 0.001 SPF: HELO does not publish an SPF Record SPF_PASS -0.001 SPF: sender matches SPF record URIBL_BLOCKED 0.001 ADMINISTRATOR NOTICE: The query to URIBL was blocked. See http://wiki.apache.org/spamassassin/DnsBlocklists#dnsbl-block for more information. [ietf.org] Subject: [pmg-devel] [PATCH pmg-gui v3 1/1] statistics: use new api call for detailed stats X-BeenThere: pmg-devel@lists.proxmox.com X-Mailman-Version: 2.1.29 Precedence: list List-Id: Proxmox Mail Gateway development discussion List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 02 Feb 2021 13:04:18 -0000 the new /statistics/detail api calls takes the type (contact, sender, receiver) and address for which to display the statistics as explicit parameter instead of path-component. This makes it possible to accept '/' as part of an e-mail address which is allowed (in the local-part by RFC5322 [0], and accepted by postfix. [0] https://tools.ietf.org/html/rfc5322 Signed-off-by: Stoiko Ivanov --- js/ContactStatistics.js | 10 +++++----- js/ReceiverStatistics.js | 10 +++++----- js/SenderStatistics.js | 10 +++++----- js/StatStore.js | 11 +++++++++-- 4 files changed, 24 insertions(+), 17 deletions(-) diff --git a/js/ContactStatistics.js b/js/ContactStatistics.js index 6c9d2d4..7f448af 100644 --- a/js/ContactStatistics.js +++ b/js/ContactStatistics.js @@ -16,10 +16,10 @@ Ext.define('PMG.ContactDetails', { plugins: 'gridfilters', - setUrl: function(url, title) { + setUrl: function(url, extraparam, title) { var me = this; - me.store.setUrl(url); + me.store.setUrl(url, extraparam); me.store.setRemoteFilter(url !== undefined); Proxmox.Utils.setErrorMask(me, false); me.store.reload(); @@ -201,9 +201,9 @@ Ext.define('PMG.ContactStatistics', { var details = this.lookupReference('details'); if (selected.length > 0) { var contact = selected[0].data.contact; - var url = "/api2/json/statistics/contact/" + - encodeURIComponent(contact); - details.setUrl(url, '' + gettext('Contact') + ': ' + Ext.htmlEncode(contact)); + var extraparam = { address: contact, type: 'contact' }; + var url = "/api2/json/statistics/detail"; + details.setUrl(url, extraparam, '' + gettext('Contact') + ': ' + Ext.htmlEncode(contact)); } else { details.setUrl(); } diff --git a/js/ReceiverStatistics.js b/js/ReceiverStatistics.js index 6378e06..bf86745 100644 --- a/js/ReceiverStatistics.js +++ b/js/ReceiverStatistics.js @@ -16,10 +16,10 @@ Ext.define('PMG.ReceiverDetails', { plugins: 'gridfilters', - setUrl: function(url, title) { + setUrl: function(url, extraparam, title) { var me = this; - me.store.setUrl(url); + me.store.setUrl(url, extraparam); me.store.setRemoteFilter(url !== undefined); Proxmox.Utils.setErrorMask(me, false); me.store.reload(); @@ -212,10 +212,10 @@ Ext.define('PMG.ReceiverStatistics', { selectionChange: function(grid, selected, eOpts) { var details = this.lookupReference('details'); if (selected.length > 0) { + var url = "/api2/json/statistics/detail"; var receiver = selected[0].data.receiver; - var url = "/api2/json/statistics/receiver/" + - encodeURIComponent(receiver); - details.setUrl(url, '' + gettext('Receiver') + ': ' + Ext.htmlEncode(receiver)); + var extraparam = { address: receiver, type: 'receiver' }; + details.setUrl(url, extraparam, '' + gettext('Receiver') + ': ' + Ext.htmlEncode(receiver)); } else { details.setUrl(); } diff --git a/js/SenderStatistics.js b/js/SenderStatistics.js index 43c5438..830f5fb 100644 --- a/js/SenderStatistics.js +++ b/js/SenderStatistics.js @@ -16,10 +16,10 @@ Ext.define('PMG.SenderDetails', { plugins: 'gridfilters', - setUrl: function(url, title) { + setUrl: function(url, extraparam, title) { var me = this; - me.store.setUrl(url); + me.store.setUrl(url, extraparam); me.store.setRemoteFilter(url !== undefined); Proxmox.Utils.setErrorMask(me, false); me.store.reload(); @@ -201,9 +201,9 @@ Ext.define('PMG.SenderStatistics', { var details = this.lookupReference('details'); if (selected.length > 0) { var sender = selected[0].data.sender; - var url = "/api2/json/statistics/sender/" + - encodeURIComponent(sender); - details.setUrl(url, '' + gettext('Sender') + ': ' + Ext.htmlEncode(sender)); + var extraparam = { address: sender, type: 'sender' }; + var url = "/api2/json/statistics/detail"; + details.setUrl(url, extraparam, '' + gettext('Sender') + ': ' + Ext.htmlEncode(sender)); } else { details.setUrl(); } diff --git a/js/StatStore.js b/js/StatStore.js index ec11777..0fc1d31 100644 --- a/js/StatStore.js +++ b/js/StatStore.js @@ -8,13 +8,17 @@ Ext.define('PMG.data.StatStore', { includeTimeSpan: false, - setUrl: function(url) { + setUrl: function(url, extraparam) { var me = this; me.proxy.abort(); // abort pending requests me.staturl = url; me.proxy.extraParams = {}; + if (extraparam !== undefined) { + me.proxy.extraParams = extraparam; + } + me.setData([]); }, @@ -38,7 +42,10 @@ Ext.define('PMG.data.StatStore', { } me.proxy.url = me.staturl; - me.proxy.extraParams = { starttime: ts.starttime, endtime: ts.endtime }; + Ext.apply(me.proxy.extraParams, { + starttime: ts.starttime, + endtime: ts.endtime, + }); var timespan = 3600; if (me.includeTimeSpan) { -- 2.20.1