mirror of https://github.com/jumpserver/jumpserver
Merge remote-tracking branch 'github/dev' into dev
commit
5cc43f6907
|
@ -23,6 +23,7 @@ from .hands import IsSuperUserOrAppUser, IsAppUser, \
|
||||||
IsSuperUserOrAppUserOrUserReadonly
|
IsSuperUserOrAppUserOrUserReadonly
|
||||||
from .backends import get_command_store, get_multi_command_store, \
|
from .backends import get_command_store, get_multi_command_store, \
|
||||||
SessionCommandSerializer
|
SessionCommandSerializer
|
||||||
|
import boto3 # AWS S3 sdk
|
||||||
|
|
||||||
logger = logging.getLogger(__file__)
|
logger = logging.getLogger(__file__)
|
||||||
|
|
||||||
|
@ -279,8 +280,33 @@ class SessionReplayViewSet(viewsets.ViewSet):
|
||||||
url = default_storage.url(path)
|
url = default_storage.url(path)
|
||||||
return redirect(url)
|
return redirect(url)
|
||||||
else:
|
else:
|
||||||
|
config = self.app.config.get("REPLAY_STORAGE", None)
|
||||||
|
if config:
|
||||||
|
for name in config.keys():
|
||||||
|
if config[name].get("TYPE", '') == "s3":
|
||||||
|
client, bucket = self.s3Client(config[name])
|
||||||
|
try:
|
||||||
|
client.head_object(Bucket=bucket, Key=path)
|
||||||
|
client.download_file(bucket, path, default_storage.base_location + '/' + path)
|
||||||
|
return redirect(default_storage.url(path))
|
||||||
|
except:
|
||||||
|
pass
|
||||||
return HttpResponseNotFound()
|
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 self.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):
|
||||||
permission_classes = (IsAppUser,)
|
permission_classes = (IsAppUser,)
|
||||||
|
|
Loading…
Reference in New Issue