mirror of https://github.com/jumpserver/jumpserver
pref: 添加 applet download
parent
3bacd626e8
commit
b159f16513
|
@ -5,6 +5,7 @@ import os.path
|
|||
|
||||
from django.core.files.storage import default_storage
|
||||
from rest_framework import viewsets
|
||||
from django.http import HttpResponse
|
||||
from rest_framework.decorators import action
|
||||
from rest_framework.response import Response
|
||||
from rest_framework.serializers import ValidationError
|
||||
|
@ -22,6 +23,7 @@ class AppletViewSet(viewsets.ModelViewSet):
|
|||
serializer_class = serializers.AppletSerializer
|
||||
rbac_perms = {
|
||||
'upload': 'terminal.add_applet',
|
||||
'download': 'terminal.view_applet',
|
||||
}
|
||||
|
||||
def perform_destroy(self, instance):
|
||||
|
@ -84,6 +86,16 @@ class AppletViewSet(viewsets.ModelViewSet):
|
|||
serializer.save()
|
||||
return Response(serializer.data, status=201)
|
||||
|
||||
@action(detail=True, methods=['get'])
|
||||
def download(self, request, *args, **kwargs):
|
||||
instance = super().get_object()
|
||||
path = default_storage.path('applets/{}'.format(instance.name))
|
||||
zip_path = shutil.make_archive(path, 'zip', path)
|
||||
with open(zip_path, 'rb') as f:
|
||||
response = HttpResponse(f.read(), status=200, content_type='application/octet-stream')
|
||||
response['Content-Disposition'] = 'attachment; filename*=UTF-8\'\'{}.zip'.format(instance.name)
|
||||
return response
|
||||
|
||||
|
||||
class AppletPublicationViewSet(viewsets.ModelViewSet):
|
||||
queryset = AppletPublication.objects.all()
|
||||
|
|
|
@ -7,7 +7,7 @@
|
|||
HOST_NAME: test
|
||||
CORE_HOST: https://demo.jumpserver.org
|
||||
BOOTSTRAP_TOKEN: PleaseChangeMe
|
||||
RDS_Licensing: enabled
|
||||
RDS_Licensing: true
|
||||
RDS_LicenseServer: 127.0.0.1
|
||||
RDS_LicensingMode: 4
|
||||
RDS_fSingleSessionPerUser: 1
|
||||
|
@ -20,7 +20,7 @@
|
|||
name: RDS-Licensing
|
||||
state: present
|
||||
include_management_tools: yes
|
||||
when: RDS_Licensing == "enabled"
|
||||
when: RDS_Licensing
|
||||
|
||||
- name: Install RDS-RD-Server (RDS)
|
||||
ansible.windows.win_feature:
|
||||
|
|
|
@ -1,2 +1,18 @@
|
|||
# -*- coding: utf-8 -*-
|
||||
#
|
||||
|
||||
from django.db.models.signals import post_save
|
||||
from django.dispatch import receiver
|
||||
|
||||
|
||||
from .models import Applet, AppletHost
|
||||
|
||||
|
||||
@receiver(post_save, sender=AppletHost)
|
||||
def on_applet_host_create(sender, instance, created=False, **kwargs):
|
||||
pass
|
||||
|
||||
|
||||
@receiver(post_save, sender=Applet)
|
||||
def on_applet_create(sender, instance, created=False, **kwargs):
|
||||
pass
|
||||
|
|
Loading…
Reference in New Issue