Merge branch 'william' into 'master'
Add view to check if the vm belongs to a user (for ungleich-cli) See merge request ungleich-public/dynamicweb!705
This commit is contained in:
commit
c469948901
5 changed files with 67 additions and 3 deletions
|
|
@ -9,13 +9,14 @@ from .views import (
|
|||
HostingPricingView, CreateVirtualMachinesView, HostingBillListView,
|
||||
HostingBillDetailView, SSHKeyDeleteView, SSHKeyCreateView, SSHKeyListView,
|
||||
SSHKeyChoiceView, DashboardView, SettingsView, ResendActivationEmailView,
|
||||
InvoiceListView, InvoiceDetailView
|
||||
InvoiceListView, InvoiceDetailView, CheckUserVM
|
||||
)
|
||||
|
||||
|
||||
urlpatterns = [
|
||||
url(r'index/?$', IndexView.as_view(), name='index'),
|
||||
url(r'django/?$', DjangoHostingView.as_view(), name='djangohosting'),
|
||||
url(r'checkvm/?$', CheckUserVM.as_view(), name='check_vm'),
|
||||
url(r'dashboard/?$', DashboardView.as_view(), name='dashboard'),
|
||||
url(r'nodejs/?$', NodeJSHostingView.as_view(), name='nodejshosting'),
|
||||
url(r'rails/?$', RailsHostingView.as_view(), name='railshosting'),
|
||||
|
|
|
|||
|
|
@ -26,6 +26,9 @@ from django.views.generic import (
|
|||
View, CreateView, FormView, ListView, DetailView, DeleteView,
|
||||
TemplateView, UpdateView
|
||||
)
|
||||
from rest_framework.views import APIView
|
||||
from rest_framework.response import Response
|
||||
from rest_framework.renderers import JSONRenderer
|
||||
from guardian.mixins import PermissionRequiredMixin
|
||||
from oca.pool import WrongIdError
|
||||
from stored_messages.api import mark_read
|
||||
|
|
@ -34,7 +37,7 @@ from stored_messages.settings import stored_messages_settings
|
|||
|
||||
from datacenterlight.cms_models import DCLCalculatorPluginModel
|
||||
from datacenterlight.models import VMTemplate, VMPricing
|
||||
from datacenterlight.utils import create_vm, get_cms_integration
|
||||
from datacenterlight.utils import create_vm, get_cms_integration, check_otp
|
||||
from hosting.models import UserCardDetail
|
||||
from membership.models import CustomUser, StripeCustomer
|
||||
from opennebula_api.models import OpenNebulaManager
|
||||
|
|
@ -66,9 +69,12 @@ from .models import (
|
|||
|
||||
logger = logging.getLogger(__name__)
|
||||
|
||||
|
||||
CONNECTION_ERROR = "Your VMs cannot be displayed at the moment due to a \
|
||||
backend connection error. please try again in a few \
|
||||
minutes."
|
||||
|
||||
|
||||
decorators = [never_cache]
|
||||
|
||||
|
||||
|
|
@ -1755,3 +1761,30 @@ def forbidden_view(request, exception=None, reason=''):
|
|||
'again.')
|
||||
messages.add_message(request, messages.ERROR, err_msg)
|
||||
return HttpResponseRedirect(request.get_full_path())
|
||||
|
||||
|
||||
class CheckUserVM(APIView):
|
||||
renderer_classes = (JSONRenderer, )
|
||||
|
||||
def get(self, request):
|
||||
try:
|
||||
email = request.data['email']
|
||||
ip = request.data['ip']
|
||||
user = request.data['user']
|
||||
realm = request.data['realm']
|
||||
token = request.data['token']
|
||||
if user != settings.ACCOUNT_NAME:
|
||||
return Response("User not allowed", 403)
|
||||
response = check_otp(user, realm, token)
|
||||
if response != 200:
|
||||
return Response('Invalid token', 403)
|
||||
uservms = VMDetail.objects.filter(user__email=email)
|
||||
if len(uservms) > 0:
|
||||
for i in range(len(uservms)):
|
||||
if uservms[i].ipv4 == ip or uservms[i].ipv6 == ip:
|
||||
return Response('success', 200)
|
||||
return Response('No VM found matching the ip address provided', 404)
|
||||
else:
|
||||
return Response('No VM found with the given email address', 404)
|
||||
except KeyError:
|
||||
return Response('Not enough data provided', 400)
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue