From 88ddaf013a1805aafe0d6b3a1e02e8e9c658a7c8 Mon Sep 17 00:00:00 2001 From: ziirish Date: Sun, 22 Nov 2015 17:50:17 +0100 Subject: [PATCH] add: support stats from 1.4.x upgrade in burp 2 backend (#81) --- CHANGELOG.rst | 3 +++ burpui/misc/backend/burp1.py | 7 +++++-- burpui/misc/backend/burp2.py | 18 +++++++++++++----- test/run_tests.sh | 2 +- 4 files changed, 22 insertions(+), 8 deletions(-) diff --git a/CHANGELOG.rst b/CHANGELOG.rst index 6793fbc2..e8c5e649 100644 --- a/CHANGELOG.rst +++ b/CHANGELOG.rst @@ -9,6 +9,9 @@ Current - Add `server-side initiated restoration `_ - Add percent done in `overview `_ - Add the ability to `chain multiple authentication backends `_ +- Add Basic HTTP Authentication +- Add full documented API +- Fix issue `#81 `_ - `Full changelog `__ 0.0.7.3 diff --git a/burpui/misc/backend/burp1.py b/burpui/misc/backend/burp1.py index 6fdd45ff..3afc2b7c 100644 --- a/burpui/misc/backend/burp1.py +++ b/burpui/misc/backend/burp1.py @@ -315,7 +315,7 @@ class Burp(BUIbackend): ret['encrypted'] = True return ret - def _parse_backup_stats(self, number, client, forward=False, agent=None): # pragma: no cover + def _parse_backup_stats(self, number, client, forward=False, stats=None, agent=None): """The :func:`burpui.misc.backend.burp1.Burp._parse_backup_stats` function is used to parse the burp logs. @@ -427,7 +427,10 @@ class Burp(BUIbackend): 'total_scanned': ['total', 'scanned'], 'total_total': ['total', 'total'] } - f = self.status('c:{0}:b:{1}:f:backup_stats\n'.format(client, number), agent=agent) + if not stats: + f = self.status('c:{0}:b:{1}:f:backup_stats\n'.format(client, number), agent=agent) + else: + f = stats for line in f: if line == '-list begin-' or line == '-list end-': continue diff --git a/burpui/misc/backend/burp2.py b/burpui/misc/backend/burp2.py index f32625a4..685c554d 100644 --- a/burpui/misc/backend/burp2.py +++ b/burpui/misc/backend/burp2.py @@ -382,12 +382,17 @@ class Burp(Burp1): back = backups[0] if 'backup_stats' not in back['logs']: return {} + stats = None try: stats = json.loads(''.join(back['logs']['backup_stats'])) except: - pass + stats = back['logs']['backup_stats'] + print stats if not stats: return {} + # server was upgraded but backup comes from an older version + if 'counters' not in stats: + return super(Burp, self)._parse_backup_stats(number, client, forward, stats, agent) counters = stats['counters'] for counter in counters: name = counter['name'] @@ -599,10 +604,13 @@ class Burp(Burp1): ba['deletable'] = False ba['date'] = datetime.datetime.fromtimestamp(backup['timestamp']).strftime('%Y-%m-%d %H:%M:%S') log = self.get_backup_logs(backup['number'], name) - ba['encrypted'] = log['encrypted'] - ba['received'] = log['received'] - ba['size'] = log['totsize'] - r.append(ba) + try: + ba['encrypted'] = log['encrypted'] + ba['received'] = log['received'] + ba['size'] = log['totsize'] + r.append(ba) + except: + pass # Here we need to reverse the array so the backups are sorted by date ASC r.reverse() diff --git a/test/run_tests.sh b/test/run_tests.sh index a7c07a03..b728c9c7 100755 --- a/test/run_tests.sh +++ b/test/run_tests.sh @@ -7,7 +7,7 @@ ISROOT=0 UPDATED=0 BURP="https://git.ziirish.me/ziirish/burp.git" BURP_VERSION="1.4.40" -BURP2_VERSION="2.0.20" +BURP2_VERSION="2.0.26" function update() { [ $UPDATED -eq 0 ] && [ $ISROOT -eq 1 ] && {