Browse Source

fix: update the jms-storage==0.0.11

pull/1068/head
liuzheng 7 years ago committed by liuzheng712
parent
commit
b92ccdd05e
No known key found for this signature in database
GPG Key ID: 76B55D91E7BB2978
  1. 44
      apps/terminal/api.py
  2. 1
      requirements/requirements.txt

44
apps/terminal/api.py

@ -4,7 +4,6 @@ from collections import OrderedDict
import logging import logging
import os import os
import uuid import uuid
import boto3 # AWS S3 sdk
from django.core.cache import cache from django.core.cache import cache
from django.shortcuts import get_object_or_404, redirect from django.shortcuts import get_object_or_404, redirect
@ -13,6 +12,8 @@ from django.core.files.storage import default_storage
from django.http import HttpResponseNotFound from django.http import HttpResponseNotFound
from django.conf import settings from django.conf import settings
import jms_storage
from rest_framework import viewsets, serializers from rest_framework import viewsets, serializers
from rest_framework.views import APIView, Response from rest_framework.views import APIView, Response
from rest_framework.permissions import AllowAny from rest_framework.permissions import AllowAny
@ -282,36 +283,17 @@ class SessionReplayViewSet(viewsets.ViewSet):
url = default_storage.url(path) url = default_storage.url(path)
return redirect(url) return redirect(url)
else: else:
config = settings.TERMINAL_REPLAY_STORAGE.items() configs = settings.TERMINAL_REPLAY_STORAGE.items()
if config: if configs:
for name, value in config: for name, config in configs:
if value.get("TYPE", '') == "s3": client = jms_storage.init(config)
client, bucket = self.s3Client(value) date = self.session.date_start.strftime('%Y-%m-%d')
try: if client.has_file(os.path.join(date, str(self.session.id) + '.replay.gz')) \
date = self.session.date_start.strftime('%Y-%m-%d') and \
client.download_file(os.path.join(date, str(self.session.id) + '.replay.gz'),
client.head_object(Bucket=bucket, default_storage.base_location + '/' + path):
Key=os.path.join(date, str(self.session.id) + '.replay.gz')) return redirect(default_storage.url(path))
client.download_file(bucket, os.path.join(date, str(self.session.id) + '.replay.gz'), return HttpResponseNotFound()
default_storage.base_location + '/' + path)
return redirect(default_storage.url(path))
except:
pass
return HttpResponseNotFound()
def s3Client(self, config):
bucket = config.get("BUCKET", "jumpserver")
REGION = config.get("REGION", None)
ACCESS_KEY = config.get("ACCESS_KEY", None)
SECRET_KEY = config.get("SECRET_KEY", None)
if ACCESS_KEY and REGION and SECRET_KEY:
s3 = boto3.client('s3',
region_name=REGION,
aws_access_key_id=ACCESS_KEY,
aws_secret_access_key=SECRET_KEY)
else:
s3 = boto3.client('s3')
return s3, bucket
class TerminalConfig(APIView): class TerminalConfig(APIView):

1
requirements/requirements.txt

@ -61,6 +61,7 @@ pytz==2017.3
PyYAML==3.12 PyYAML==3.12
redis==2.10.6 redis==2.10.6
requests==2.18.4 requests==2.18.4
jms-storage==0.0.11
s3transfer==0.1.13 s3transfer==0.1.13
simplejson==3.13.2 simplejson==3.13.2
six==1.11.0 six==1.11.0

Loading…
Cancel
Save