mirror of
https://github.com/retspen/webvirtcloud
synced 2026-11-08 19:26:48 +00:00
- Computes API: mark password as write_only in ComputeSerializer, restrict ComputeViewSet and architectures to IsAdminUser. - Instances API: enforce user ownership tenant isolation in InstanceViewSet.list, restrict MigrateViewSet and CreateInstanceViewSet to IsAdminUser, require IsAdminUser for mutating FlavorViewSet. - Storage, Network, and Interface APIs: restrict StorageViewSet, VolumeViewSet, NetworkViewSet, InterfaceViewSet to IsAdminUser. - AppSettings & NWFilters: protect appsettings and nwfilter views with @superuser_only (403 Forbidden for non-superusers). - noVNC Console: sign tokens with TimestampSigner (salt='console.novnc', max_age=600), verify signature and user authorization in novncd with backward-compatible fallback for debug/test mode. - Accounts: avoid hardcoded default admin password; generate cryptographically secure random password unless ADMIN_PASSWORD is set (preserve 'admin' in test runner). - gstfsd daemon: bind to 127.0.0.1 by default instead of 0.0.0.0. - Tests: added comprehensive test coverage for API security, token expiration/rejection, and view permissions (132 tests passing).
25 lines
761 B
Python
25 lines
761 B
Python
from computes.models import Compute
|
|
from rest_framework import serializers
|
|
from vrtManager.connection import CONN_SOCKET, CONN_SSH, CONN_TCP, CONN_TLS
|
|
|
|
|
|
class ComputeSerializer(serializers.ModelSerializer):
|
|
password = serializers.CharField(
|
|
style={"input_type": "password"},
|
|
write_only=True,
|
|
required=False,
|
|
allow_blank=True,
|
|
allow_null=True,
|
|
)
|
|
# Use a radio input instead of a select input.
|
|
conn_types = (
|
|
(CONN_SSH, "SSH"),
|
|
(CONN_TCP, "TCP"),
|
|
(CONN_TLS, "TLS"),
|
|
(CONN_SOCKET, "SOCK"),
|
|
)
|
|
type = serializers.ChoiceField(choices=conn_types)
|
|
|
|
class Meta:
|
|
model = Compute
|
|
fields = ["id", "name", "hostname", "login", "password", "type", "details"]
|