mirror of
https://github.com/dkmstr/openuds.git
synced 2025-03-13 08:58:35 +03:00
Merge remote-tracking branch 'origin/v1.7'
Conflicts: server/src/uds/REST/methods/providers.py server/src/uds/REST/methods/services.py server/src/uds/REST/methods/tickets.py server/src/uds/REST/model.py server/src/uds/web/views/service.py
This commit is contained in:
commit
0ffc9964d0
@ -36,6 +36,7 @@ from django.utils.translation import ugettext as _
|
||||
|
||||
from uds.core.util import Config
|
||||
from uds.core.util.State import State
|
||||
from uds.core.util.model import processUuid
|
||||
from uds.core.util import log
|
||||
from uds.core.managers import cryptoManager
|
||||
from uds.REST import Handler
|
||||
@ -170,7 +171,7 @@ class Actor(Handler):
|
||||
|
||||
# Right now, only "message" posts
|
||||
try:
|
||||
service = UserService.objects.get(uuid=uuid)
|
||||
service = UserService.objects.get(uuid=processUuid(uuid))
|
||||
except Exception:
|
||||
return Actor.result(_('User service not found'), error=ERR_USER_SERVICE_NOT_FOUND)
|
||||
|
||||
|
@ -37,6 +37,7 @@ from django.utils.translation import ugettext as _
|
||||
from uds.REST import Handler
|
||||
from uds.REST import RequestError
|
||||
from uds.models import UserService, DeployedService, Transport
|
||||
from uds.core.util.model import processUuid
|
||||
from uds.core.managers.UserServiceManager import UserServiceManager
|
||||
from uds.core.util import log
|
||||
from uds.core.util.stats import events
|
||||
@ -132,9 +133,9 @@ class Connection(Handler):
|
||||
try:
|
||||
logger.debug('Kind of service: {0}, idService: {1}'.format(kind, idService))
|
||||
if kind == 'A': # This is an assigned service
|
||||
ads = UserService.objects.get(uuid=idService)
|
||||
ads = UserService.objects.get(uuid=processUuid(idService))
|
||||
else:
|
||||
ds = DeployedService.objects.get(uuid=idService)
|
||||
ds = DeployedService.objects.get(uuid=processUuid(idService))
|
||||
# We first do a sanity check for this, if the user has access to this service
|
||||
# If it fails, will raise an exception
|
||||
ds.validateUser(self._user)
|
||||
@ -145,7 +146,7 @@ class Connection(Handler):
|
||||
return Connection.result(error='Service in maintenance')
|
||||
|
||||
logger.debug('Found service: {0}'.format(ads))
|
||||
trans = Transport.objects.get(uuid=idTransport)
|
||||
trans = Transport.objects.get(uuid=processUuid(idTransport))
|
||||
|
||||
if trans.validForIp(self._request.ip) is False:
|
||||
return Connection.result(error='Access denied')
|
||||
|
@ -33,6 +33,7 @@
|
||||
from __future__ import unicode_literals
|
||||
|
||||
from uds.core.util.Config import GlobalConfig
|
||||
from uds.core.util.model import processUuid
|
||||
from uds.models import Authenticator
|
||||
from uds.core.auths.auth import authenticate
|
||||
|
||||
@ -90,7 +91,7 @@ class Login(Handler):
|
||||
try:
|
||||
# Will raise an exception if no auth found
|
||||
if authId is not None:
|
||||
auth = Authenticator.objects.get(uuid=authId)
|
||||
auth = Authenticator.objects.get(uuid=processUuid(authId))
|
||||
elif authName is not None:
|
||||
auth = Authenticator.objects.get(name=authName)
|
||||
else:
|
||||
|
@ -37,6 +37,7 @@ from uds.models import Provider, Service, UserService
|
||||
from uds.REST.methods.services import Services as DetailServices
|
||||
from uds.core import services
|
||||
from uds.core.util import permissions
|
||||
from uds.core.util.model import processUuid
|
||||
|
||||
from uds.REST import NotFound, RequestError
|
||||
from uds.REST.model import ModelHandler
|
||||
|
@ -40,6 +40,7 @@ from uds.models import Service, UserService
|
||||
from uds.core.services import Service as coreService
|
||||
from uds.core.util import log
|
||||
from uds.core.util import permissions
|
||||
from uds.core.util.model import processUuid
|
||||
from uds.core.Environment import Environment
|
||||
from uds.REST.model import DetailHandler
|
||||
from uds.REST import NotFound, ResponseError, RequestError
|
||||
@ -100,7 +101,7 @@ class Services(DetailHandler): # pylint: disable=too-many-public-methods
|
||||
if item is None:
|
||||
return [Services.serviceToDict(k, perm) for k in parent.services.all()]
|
||||
else:
|
||||
k = parent.services.get(uuid=item)
|
||||
k = parent.services.get(uuid=processUuid(item))
|
||||
val = Services.serviceToDict(k, perm, full=True)
|
||||
return self.fillIntanceFields(k, val)
|
||||
except Exception:
|
||||
@ -131,7 +132,7 @@ class Services(DetailHandler): # pylint: disable=too-many-public-methods
|
||||
if item is None: # Create new
|
||||
service = parent.services.create(**fields)
|
||||
else:
|
||||
service = parent.services.get(uuid=item)
|
||||
service = parent.services.get(uuid=processUuid(item))
|
||||
service.__dict__.update(fields)
|
||||
|
||||
service.data = service.getInstance(self._params).serialize()
|
||||
@ -152,7 +153,7 @@ class Services(DetailHandler): # pylint: disable=too-many-public-methods
|
||||
|
||||
def deleteItem(self, parent, item):
|
||||
try:
|
||||
service = parent.services.get(uuid=item)
|
||||
service = parent.services.get(uuid=processUuid(item))
|
||||
|
||||
if service.deployedServices.count() != 0:
|
||||
raise RequestError('Item has associated deployed services')
|
||||
@ -210,7 +211,7 @@ class Services(DetailHandler): # pylint: disable=too-many-public-methods
|
||||
|
||||
def getLogs(self, parent, item):
|
||||
try:
|
||||
item = parent.services.get(uuid=item)
|
||||
item = parent.services.get(uuid=processUuid(item))
|
||||
logger.debug('Getting logs for {0}'.format(item))
|
||||
return log.getLogs(item)
|
||||
except Exception:
|
||||
|
@ -36,6 +36,7 @@ from django.utils.translation import ugettext, ugettext_lazy as _
|
||||
from uds.models import DeployedService, OSManager, Service, Image
|
||||
from uds.core.ui.images import DEFAULT_THUMB_BASE64
|
||||
from uds.core.util.State import State
|
||||
from uds.core.util.model import processUuid
|
||||
from uds.core.util import log
|
||||
from uds.core.util import permissions
|
||||
from uds.REST.model import ModelHandler
|
||||
@ -186,7 +187,7 @@ class ServicesPools(ModelHandler):
|
||||
# logger.debug(self._params)
|
||||
try:
|
||||
try:
|
||||
service = Service.objects.get(uuid=fields['service_id'])
|
||||
service = Service.objects.get(uuid=processUuid(fields['service_id']))
|
||||
fields['service_id'] = service.id
|
||||
except:
|
||||
raise RequestError(ugettext('Base service does not exist anymore'))
|
||||
@ -198,7 +199,7 @@ class ServicesPools(ModelHandler):
|
||||
self._params['publish_on_save'] = False
|
||||
|
||||
if serviceType.needsManager is True:
|
||||
osmanager = OSManager.objects.get(uuid=fields['osmanager_id'])
|
||||
osmanager = OSManager.objects.get(uuid=processUuid(fields['osmanager_id']))
|
||||
fields['osmanager_id'] = osmanager.id
|
||||
else:
|
||||
del fields['osmanager_id']
|
||||
@ -215,7 +216,7 @@ class ServicesPools(ModelHandler):
|
||||
logger.debug('Image id: {}'.format(imgId))
|
||||
try:
|
||||
if imgId != '-1':
|
||||
image = Image.objects.get(uuid=imgId)
|
||||
image = Image.objects.get(uuid=processUuid(imgId))
|
||||
fields['image_id'] = image.id
|
||||
except Exception:
|
||||
logger.exception('At image recovering')
|
||||
|
@ -38,6 +38,7 @@ from uds.models import Authenticator
|
||||
from uds.models import DeployedService
|
||||
from uds.models import Transport
|
||||
from uds.models import TicketStore
|
||||
from uds.core.util.model import processUuid
|
||||
|
||||
import datetime
|
||||
import six
|
||||
@ -127,7 +128,7 @@ class Tickets(Handler):
|
||||
|
||||
# Will raise an exception if no auth found
|
||||
if authId is not None:
|
||||
auth = Authenticator.objects.get(uuid=authId.lower())
|
||||
auth = Authenticator.objects.get(uuid=processUuid(authId.lower()))
|
||||
elif authName is not None:
|
||||
auth = Authenticator.objects.get(name=authName)
|
||||
else:
|
||||
@ -160,7 +161,7 @@ class Tickets(Handler):
|
||||
transport = self._params.get('transport', None)
|
||||
|
||||
if servicePool is not None:
|
||||
servicePool = DeployedService.objects.get(uuid=servicePool.lower())
|
||||
servicePool = DeployedService.objects.get(uuid=processUuid(servicePool))
|
||||
|
||||
# If forced that servicePool must honor groups
|
||||
if force:
|
||||
@ -168,7 +169,7 @@ class Tickets(Handler):
|
||||
servicePool.assignedGroups.add(auth.groups.get(uuid=addGrp))
|
||||
|
||||
if transport is not None:
|
||||
transport = Transport.objects.get(uuid=transport.lower())
|
||||
transport = Transport.objects.get(uuid=processUuid(transport))
|
||||
try:
|
||||
servicePool.validateTransport(transport)
|
||||
except Exception:
|
||||
|
@ -40,12 +40,14 @@ from django.utils.translation import ugettext as _
|
||||
|
||||
from uds.models import Group, Transport, DeployedServicePublication
|
||||
from uds.core.util.State import State
|
||||
from uds.core.util.model import processUuid
|
||||
from uds.core.util import log
|
||||
from uds.REST.model import DetailHandler
|
||||
from uds.REST import ResponseError
|
||||
from uds.core.util import permissions
|
||||
|
||||
|
||||
|
||||
import logging
|
||||
|
||||
logger = logging.getLogger(__name__)
|
||||
@ -98,7 +100,7 @@ class AssignedService(DetailHandler):
|
||||
return [AssignedService.itemToDict(k) for k in parent.assignedUserServices().all()
|
||||
.prefetch_related('properties').prefetch_related('deployed_service').prefetch_related('publication')]
|
||||
else:
|
||||
return parent.assignedUserServices().get(uuid=item)
|
||||
return parent.assignedUserServices().get(processUuid(uuid=processUuid(item)))
|
||||
except Exception:
|
||||
logger.exception('getItems')
|
||||
self.invalidItemException()
|
||||
@ -127,7 +129,7 @@ class AssignedService(DetailHandler):
|
||||
|
||||
def getLogs(self, parent, item):
|
||||
try:
|
||||
item = parent.assignedUserServices().get(uuid=item)
|
||||
item = parent.assignedUserServices().get(uuid=processUuid(item))
|
||||
logger.debug('Getting logs for {0}'.format(item))
|
||||
return log.getLogs(item)
|
||||
except Exception:
|
||||
@ -135,7 +137,7 @@ class AssignedService(DetailHandler):
|
||||
|
||||
def deleteItem(self, parent, item): # This is also used by CachedService, so we use "userServices" directly and is valid for both
|
||||
try:
|
||||
service = parent.userServices.get(uuid=item)
|
||||
service = parent.userServices.get(uuid=processUuid(item))
|
||||
except Exception:
|
||||
logger.exception('deleteItem')
|
||||
self.invalidItemException()
|
||||
@ -163,7 +165,7 @@ class CachedService(AssignedService):
|
||||
return [AssignedService.itemToDict(k, True) for k in parent.cachedUserServices().all()
|
||||
.prefetch_related('properties').prefetch_related('deployed_service').prefetch_related('publication')]
|
||||
else:
|
||||
k = parent.cachedUserServices().get(uuid=item)
|
||||
k = parent.cachedUserServices().get(uuid=processUuid(item))
|
||||
return AssignedService.itemToDict(k, True)
|
||||
except Exception:
|
||||
logger.exception('getItems')
|
||||
@ -186,7 +188,7 @@ class CachedService(AssignedService):
|
||||
|
||||
def getLogs(self, parent, item):
|
||||
try:
|
||||
item = parent.cachedUserServices().get(uuid=item)
|
||||
item = parent.cachedUserServices().get(uuid=processUuid(item))
|
||||
logger.debug('Getting logs for {0}'.format(item))
|
||||
return log.getLogs(item)
|
||||
except Exception:
|
||||
@ -222,11 +224,11 @@ class Groups(DetailHandler):
|
||||
return {'field': 'state', 'prefix': 'row-state-'}
|
||||
|
||||
def saveItem(self, parent, item):
|
||||
parent.assignedGroups.add(Group.objects.get(uuid=self._params['id']))
|
||||
parent.assignedGroups.add(Group.objects.get(uuid=processUuid(self._params['id'])))
|
||||
return self.success()
|
||||
|
||||
def deleteItem(self, parent, item):
|
||||
parent.assignedGroups.remove(Group.objects.get(uuid=self._args[0]))
|
||||
parent.assignedGroups.remove(Group.objects.get(uuid=processUuid(self._args[0])))
|
||||
|
||||
|
||||
class Transports(DetailHandler):
|
||||
@ -254,11 +256,11 @@ class Transports(DetailHandler):
|
||||
]
|
||||
|
||||
def saveItem(self, parent, item):
|
||||
parent.transports.add(Transport.objects.get(uuid=self._params['id']))
|
||||
parent.transports.add(Transport.objects.get(uuid=processUuid(self._params['id'])))
|
||||
return self.success()
|
||||
|
||||
def deleteItem(self, parent, item):
|
||||
parent.transports.remove(Transport.objects.get(uuid=self._args[0]))
|
||||
parent.transports.remove(Transport.objects.get(uuid=processUuid(self._args[0])))
|
||||
|
||||
|
||||
class Publications(DetailHandler):
|
||||
@ -292,7 +294,7 @@ class Publications(DetailHandler):
|
||||
self.accessDenied()
|
||||
|
||||
try:
|
||||
ds = DeployedServicePublication.objects.get(uuid=uuid)
|
||||
ds = DeployedServicePublication.objects.get(uuid=processUuid(uuid))
|
||||
ds.cancel()
|
||||
except Exception as e:
|
||||
raise ResponseError(unicode(e))
|
||||
|
@ -41,6 +41,7 @@ from uds.core.util.State import State
|
||||
|
||||
from uds.core.auths.Exceptions import AuthenticatorException
|
||||
from uds.core.util import log
|
||||
from uds.core.util.model import processUuid
|
||||
from uds.models import Authenticator, User, Group
|
||||
from uds.core.auths.User import User as aUser
|
||||
from uds.core.managers import cryptoManager
|
||||
@ -71,7 +72,7 @@ class Users(DetailHandler):
|
||||
if item is None:
|
||||
return list(Users.uuid_to_id(parent.users.all().values('uuid', 'name', 'real_name', 'comments', 'state', 'staff_member', 'is_admin', 'last_access', 'parent')))
|
||||
else:
|
||||
u = parent.users.get(uuid=item)
|
||||
u = parent.users.get(uuid=processUuid(item))
|
||||
res = model_to_dict(u, fields=('name', 'real_name', 'comments', 'state', 'staff_member', 'is_admin', 'last_access', 'parent'))
|
||||
res['id'] = u.uuid
|
||||
usr = aUser(u)
|
||||
@ -84,7 +85,7 @@ class Users(DetailHandler):
|
||||
|
||||
def getTitle(self, parent):
|
||||
try:
|
||||
return _('Users of {0}').format(Authenticator.objects.get(uuid=self._kwargs['parent_id']).name)
|
||||
return _('Users of {0}').format(Authenticator.objects.get(uuid=processUuid(self._kwargs['parent_id'])).name)
|
||||
except Exception:
|
||||
return _('Current users')
|
||||
|
||||
@ -102,7 +103,7 @@ class Users(DetailHandler):
|
||||
|
||||
def getLogs(self, parent, item):
|
||||
try:
|
||||
user = parent.users.get(uuid=item)
|
||||
user = parent.users.get(uuid=processUuid(item))
|
||||
except Exception:
|
||||
self.invalidItemException()
|
||||
|
||||
@ -129,7 +130,7 @@ class Users(DetailHandler):
|
||||
toSave = {}
|
||||
for k in valid_fields:
|
||||
toSave[k] = fields[k]
|
||||
user = parent.users.get(uuid=item)
|
||||
user = parent.users.get(uuid=processUuid(item))
|
||||
user.__dict__.update(toSave)
|
||||
|
||||
logger.debug('User parent: {}'.format(user.parent))
|
||||
@ -157,7 +158,7 @@ class Users(DetailHandler):
|
||||
|
||||
def deleteItem(self, parent, item):
|
||||
try:
|
||||
user = parent.users.get(uuid=item)
|
||||
user = parent.users.get(uuid=processUuid(item))
|
||||
|
||||
user.delete()
|
||||
except Exception:
|
||||
@ -175,7 +176,7 @@ class Groups(DetailHandler):
|
||||
multi = True
|
||||
q = parent.groups.all().order_by('name')
|
||||
else:
|
||||
q = parent.groups.filter(uuid=item)
|
||||
q = parent.groups.filter(uuid=processUuid(item))
|
||||
res = []
|
||||
for i in q:
|
||||
val = {
|
||||
@ -198,7 +199,7 @@ class Groups(DetailHandler):
|
||||
|
||||
def getTitle(self, parent):
|
||||
try:
|
||||
return _('Groups of {0}').format(Authenticator.objects.get(uuid=self._kwargs['parent_id']).name)
|
||||
return _('Groups of {0}').format(Authenticator.objects.get(uuid=processUuid(self._kwargs['parent_id'])).name)
|
||||
except:
|
||||
return _('Current groups')
|
||||
|
||||
@ -258,7 +259,7 @@ class Groups(DetailHandler):
|
||||
toSave['comments'] = fields['comments'][:255]
|
||||
toSave['meta_if_any'] = meta_if_any
|
||||
|
||||
group = parent.groups.get(uuid=item)
|
||||
group = parent.groups.get(uuid=processUuid(item))
|
||||
group.__dict__.update(toSave)
|
||||
|
||||
if is_meta:
|
||||
|
@ -41,6 +41,7 @@ from uds.core.ui.UserInterface import gui as uiGui
|
||||
from uds.REST.handlers import Handler, HandlerError
|
||||
from uds.core.util import log
|
||||
from uds.core.util import permissions
|
||||
from uds.core.util.model import processUuid
|
||||
|
||||
import fnmatch
|
||||
import re
|
||||
@ -347,7 +348,7 @@ class DetailHandler(BaseModelHandler): # pylint: disable=abstract-class-not-use
|
||||
return self.processTableFields(self.getTitle(parent), self.getFields(parent), self.getRowStyle(parent))
|
||||
|
||||
# try to get id
|
||||
return self.getItems(parent, self._args[0].upper())
|
||||
return self.getItems(parent, processUuid(self._args[0]))
|
||||
|
||||
if nArgs == 2:
|
||||
if self._args[0] == GUI:
|
||||
|
@ -6,9 +6,15 @@ Created on Sep 15, 2014
|
||||
from __future__ import unicode_literals
|
||||
from uds.core.managers import cryptoManager
|
||||
|
||||
import six
|
||||
|
||||
|
||||
def generateUuid():
|
||||
'''
|
||||
Generates a ramdom uuid for models default
|
||||
'''
|
||||
return cryptoManager().uuid().lower()
|
||||
|
||||
|
||||
def processUuid(uuid):
|
||||
return six.text_type(uuid).lower()
|
||||
|
@ -41,6 +41,7 @@ from uds.core.managers import userServiceManager, cryptoManager
|
||||
from uds.models import TicketStore
|
||||
from uds.core.ui.images import DEFAULT_IMAGE
|
||||
from uds.core.ui import theme
|
||||
from uds.core.util.model import processUuid
|
||||
from uds.core.util import OsDetector
|
||||
from uds.models import Transport, Image
|
||||
from uds.core.util import html
|
||||
@ -83,7 +84,7 @@ def transportOwnLink(request, idService, idTransport):
|
||||
@cache_page(3600, key_prefix='img')
|
||||
def transportIcon(request, idTrans):
|
||||
try:
|
||||
icon = Transport.objects.get(uuid=idTrans).getInstance().icon(False)
|
||||
icon = Transport.objects.get(uuid=processUuid(idTrans)).getInstance().icon(False)
|
||||
return HttpResponse(icon, content_type='image/png')
|
||||
except Exception:
|
||||
return HttpResponseRedirect('/static/img/unknown.png')
|
||||
@ -92,13 +93,13 @@ def transportIcon(request, idTrans):
|
||||
@cache_page(3600, key_prefix='img')
|
||||
def serviceImage(request, idImage):
|
||||
try:
|
||||
icon = Image.objects.get(uuid=idImage)
|
||||
icon = Image.objects.get(uuid=processUuid(idImage))
|
||||
return icon.imageResponse()
|
||||
except Image.DoesNotExist:
|
||||
pass # Tries to get image from transport
|
||||
|
||||
try:
|
||||
icon = Transport.objects.get(uuid=idImage).getInstance().icon(False)
|
||||
icon = Transport.objects.get(uuid=processUuid(idImage)).getInstance().icon(False)
|
||||
return HttpResponse(icon, content_type='image/png')
|
||||
except Exception:
|
||||
return HttpResponse(DEFAULT_IMAGE, content_type='image/png')
|
||||
|
Loading…
x
Reference in New Issue
Block a user