# Generated by Django 3.1.14 on 2022-04-12 07:39
import common . db . fields
import django . core . validators
from django . db import migrations , models
import django . db . models . deletion
import uuid
from django . conf import settings
def migrate_endpoints ( apps , schema_editor ) :
Endpoint = apps . get_model ( " terminal " , " Endpoint " )
# migrate default
default_data = {
' id ' : ' 00000000-0000-0000-0000-000000000001 ' ,
' name ' : ' Default ' ,
' host ' : ' ' ,
' https_port ' : 0 ,
' http_port ' : 0 ,
' created_by ' : ' System '
}
Endpoint . objects . create ( * * default_data )
if not settings . TERMINAL_RAZOR_ENABLED :
return
# migrate xrdp
xrdp_addr = settings . TERMINAL_RDP_ADDR
if ' : ' in xrdp_addr :
host , rdp_port = xrdp_addr . strip ( ) . split ( ' : ' )
else :
host , rdp_port = xrdp_addr , 3389
host = host . strip ( )
if host in [ ' localhost ' , ' 127.0.0.1 ' ] :
host = ' '
if not host :
return
if isinstance ( rdp_port , str ) and rdp_port . isdigit ( ) :
rdp_port = int ( rdp_port )
elif isinstance ( rdp_port , int ) and ( 0 < = rdp_port < = 65535 ) :
rdp_port = rdp_port
else :
rdp_port = 3389
xrdp_data = {
' name ' : ' Razor ' ,
' host ' : host ,
' https_port ' : 0 ,
' http_port ' : 0 ,
' ssh_port ' : 0 ,
' rdp_port ' : rdp_port ,
' mysql_port ' : 0 ,
' mariadb_port ' : 0 ,
' postgresql_port ' : 0 ,
' created_by ' : ' System '
}
xrdp_endpoint = Endpoint . objects . create ( * * xrdp_data )
EndpointRule = apps . get_model ( " terminal " , " EndpointRule " )
xrdp_rule_data = {
' name ' : ' Razor ' ,
' ip_group ' : [ ' * ' ] ,
' priority ' : 20 ,
' endpoint ' : xrdp_endpoint ,
' created_by ' : ' System '
}
EndpointRule . objects . create ( * * xrdp_rule_data )
class Migration ( migrations . Migration ) :
dependencies = [
( ' terminal ' , ' 0047_auto_20220302_1951 ' ) ,
]
operations = [
migrations . CreateModel (
name = ' Endpoint ' ,
fields = [
( ' created_by ' , models . CharField ( blank = True , max_length = 32 , null = True , verbose_name = ' Created by ' ) ) ,
( ' updated_by ' , models . CharField ( blank = True , max_length = 32 , null = True , verbose_name = ' Updated by ' ) ) ,
( ' date_created ' , models . DateTimeField ( auto_now_add = True , null = True , verbose_name = ' Date created ' ) ) ,
( ' date_updated ' , models . DateTimeField ( auto_now = True , verbose_name = ' Date updated ' ) ) ,
( ' id ' , models . UUIDField ( default = uuid . uuid4 , primary_key = True , serialize = False ) ) ,
( ' name ' , models . CharField ( max_length = 128 , unique = True , verbose_name = ' Name ' ) ) ,
( ' host ' , models . CharField ( max_length = 256 , verbose_name = ' Host ' , blank = True ) ) ,
( ' https_port ' , common . db . fields . PortField ( default = 443 , validators = [ django . core . validators . MinValueValidator ( 0 ) , django . core . validators . MaxValueValidator ( 65535 ) ] , verbose_name = ' HTTPS Port ' ) ) ,
( ' http_port ' , common . db . fields . PortField ( default = 80 , validators = [ django . core . validators . MinValueValidator ( 0 ) , django . core . validators . MaxValueValidator ( 65535 ) ] , verbose_name = ' HTTP Port ' ) ) ,
( ' ssh_port ' , common . db . fields . PortField ( default = 2222 , validators = [ django . core . validators . MinValueValidator ( 0 ) , django . core . validators . MaxValueValidator ( 65535 ) ] , verbose_name = ' SSH Port ' ) ) ,
( ' rdp_port ' , common . db . fields . PortField ( default = 3389 , validators = [ django . core . validators . MinValueValidator ( 0 ) , django . core . validators . MaxValueValidator ( 65535 ) ] , verbose_name = ' RDP Port ' ) ) ,
( ' mysql_port ' , common . db . fields . PortField ( default = 33060 , validators = [ django . core . validators . MinValueValidator ( 0 ) , django . core . validators . MaxValueValidator ( 65535 ) ] , verbose_name = ' MySQL Port ' ) ) ,
( ' mariadb_port ' , common . db . fields . PortField ( default = 33061 , validators = [ django . core . validators . MinValueValidator ( 0 ) , django . core . validators . MaxValueValidator ( 65535 ) ] , verbose_name = ' MariaDB Port ' ) ) ,
( ' postgresql_port ' , common . db . fields . PortField ( default = 54320 , validators = [ django . core . validators . MinValueValidator ( 0 ) , django . core . validators . MaxValueValidator ( 65535 ) ] , verbose_name = ' PostgreSQL Port ' ) ) ,
( ' comment ' , models . TextField ( blank = True , default = ' ' , verbose_name = ' Comment ' ) ) ,
] ,
options = {
' verbose_name ' : ' Endpoint ' ,
' ordering ' : ( ' name ' , ) ,
} ,
) ,
migrations . CreateModel (
name = ' EndpointRule ' ,
fields = [
( ' created_by ' , models . CharField ( blank = True , max_length = 32 , null = True , verbose_name = ' Created by ' ) ) ,
( ' updated_by ' , models . CharField ( blank = True , max_length = 32 , null = True , verbose_name = ' Updated by ' ) ) ,
( ' date_created ' , models . DateTimeField ( auto_now_add = True , null = True , verbose_name = ' Date created ' ) ) ,
( ' date_updated ' , models . DateTimeField ( auto_now = True , verbose_name = ' Date updated ' ) ) ,
( ' id ' , models . UUIDField ( default = uuid . uuid4 , primary_key = True , serialize = False ) ) ,
( ' name ' , models . CharField ( max_length = 128 , unique = True , verbose_name = ' Name ' ) ) ,
( ' ip_group ' , models . JSONField ( default = list , verbose_name = ' IP group ' ) ) ,
( ' priority ' , models . IntegerField ( help_text = ' 1-100, the lower the value will be match first ' , unique = True , validators = [ django . core . validators . MinValueValidator ( 1 ) , django . core . validators . MaxValueValidator ( 100 ) ] , verbose_name = ' Priority ' ) ) ,
( ' comment ' , models . TextField ( blank = True , default = ' ' , verbose_name = ' Comment ' ) ) ,
( ' endpoint ' , models . ForeignKey ( blank = True , null = True , on_delete = django . db . models . deletion . SET_NULL , related_name = ' rules ' , to = ' terminal.endpoint ' , verbose_name = ' Endpoint ' ) ) ,
] ,
options = {
' verbose_name ' : ' Endpoint rule ' ,
' ordering ' : ( ' priority ' , ' name ' ) ,
} ,
) ,
migrations . RunPython ( migrate_endpoints ) ,
]