class Settings(Model): stg_guiprotocol = models.CharField(max_length=120, choices=choices.PROTOCOL_CHOICES, default="http", verbose_name=_("Protocol")) stg_guiaddress = models.CharField(max_length=120, blank=True, default='0.0.0.0', verbose_name=_("WebGUI IPv4 Address")) stg_guiv6address = models.CharField(max_length=120, blank=True, default='::', verbose_name=_("WebGUI IPv6 Address")) stg_guiport = models.IntegerField( verbose_name=_("WebGUI HTTP Port"), validators=[MinValueValidator(1), MaxValueValidator(65535)], default=80, ) stg_guihttpsport = models.IntegerField( verbose_name=_("WebGUI HTTPS Port"), validators=[MinValueValidator(1), MaxValueValidator(65535)], default=443, ) stg_guihttpsredirect = models.BooleanField( verbose_name=_('WebGUI HTTP -> HTTPS Redirect'), default=True, help_text=_( 'Redirect HTTP (port 80) to HTTPS when only the HTTPS protocol is ' 'enabled'), ) stg_language = models.CharField(max_length=120, choices=settings.LANGUAGES, default="en", verbose_name=_("Language")) stg_kbdmap = models.CharField( max_length=120, choices=choices.KBDMAP_CHOICES(), verbose_name=_("Console Keyboard Map"), blank=True, ) stg_timezone = models.CharField(max_length=120, choices=choices.TimeZoneChoices(), default="America/Los_Angeles", verbose_name=_("Timezone")) stg_syslogserver = models.CharField(default='', blank=True, max_length=120, verbose_name=_("Syslog server")) stg_wizardshown = models.BooleanField( editable=False, default=False, ) class Meta: verbose_name = _("Settings")
class Settings(Model): stg_guiprotocol = models.CharField(max_length=120, choices=choices.PROTOCOL_CHOICES, default="http", verbose_name=_("Protocol")) stg_guiaddress = models.CharField(max_length=120, blank=True, default='0.0.0.0', verbose_name=_("WebGUI IPv4 Address")) stg_guiv6address = models.CharField(max_length=120, blank=True, default='::', verbose_name=_("WebGUI IPv6 Address")) stg_guiport = models.CharField(max_length=120, blank=True, default='', verbose_name=_("WebGUI Port")) stg_language = models.CharField(max_length=120, choices=settings.LANGUAGES, default="en", verbose_name=_("Language")) stg_kbdmap = models.CharField( max_length=120, choices=choices.KBDMAP_CHOICES(), verbose_name=_("Console Keyboard Map"), blank=True, ) stg_timezone = models.CharField(max_length=120, choices=choices.TimeZoneChoices(), default="America/Los_Angeles", verbose_name=_("Timezone")) stg_syslogserver = models.CharField(default='', blank=True, max_length=120, verbose_name=_("Syslog server")) stg_directoryservice = models.CharField( max_length=120, blank=True, choices=choices.DIRECTORY_SERVICE_CHOICES, verbose_name=_("Directory Service"), ) class Meta: verbose_name = _("Settings") class FreeAdmin: deletable = False
class Settings(Model): stg_guiprotocol = models.CharField(max_length=120, choices=choices.PROTOCOL_CHOICES, default="http", verbose_name=_("Protocol")) stg_guicertificate = models.ForeignKey( "Certificate", verbose_name=_("Certificate"), limit_choices_to={ 'cert_type__in': [CERT_TYPE_EXISTING, CERT_TYPE_INTERNAL] }, on_delete=models.SET_NULL, blank=True, null=True) stg_guiaddress = models.CharField(max_length=120, blank=True, default='0.0.0.0', verbose_name=_("WebGUI IPv4 Address")) stg_guiv6address = models.CharField(max_length=120, blank=True, default='::', verbose_name=_("WebGUI IPv6 Address")) stg_guiport = models.IntegerField( verbose_name=_("WebGUI HTTP Port"), validators=[MinValueValidator(1), MaxValueValidator(65535)], default=80, ) stg_guihttpsport = models.IntegerField( verbose_name=_("WebGUI HTTPS Port"), validators=[MinValueValidator(1), MaxValueValidator(65535)], default=443, ) stg_guihttpsredirect = models.BooleanField( verbose_name=_('WebGUI HTTP -> HTTPS Redirect'), default=True, help_text=_( 'Redirect HTTP (port 80) to HTTPS when only the HTTPS protocol is ' 'enabled'), ) stg_language = models.CharField(max_length=120, choices=settings.LANGUAGES, default="en", verbose_name=_("Language")) stg_kbdmap = models.CharField( max_length=120, choices=choices.KBDMAP_CHOICES(), verbose_name=_("Console Keyboard Map"), blank=True, ) stg_timezone = models.CharField(max_length=120, choices=choices.TimeZoneChoices(), default="America/Los_Angeles", verbose_name=_("Timezone")) stg_sysloglevel = models.CharField( max_length=120, choices=choices.SYS_LOG_LEVEL, default="f_info", verbose_name=_("Syslog level"), help_text=_("Specifies which messages will be logged by " "server. INFO and VERBOSE log transactions that " "server performs on behalf of the client. " "f_is_debug specify higher levels of debugging output. " "The default is f_info."), ) stg_syslogserver = models.CharField( default='', blank=True, max_length=120, verbose_name=_("Syslog server"), help_text=_( "Specifies the server and port syslog messages " "will be sent to. The accepted format is hostname:port " "or ip:port, if :port is not specified it will default to " "port 514 (this field currently only takes IPv4 addresses)"), ) stg_wizardshown = models.BooleanField( editable=False, default=False, ) stg_pwenc_check = models.CharField( max_length=100, editable=False, ) class Meta: verbose_name = _("General")
class Migration(migrations.Migration): initial = True dependencies = [] operations = [ migrations.CreateModel( name='Advanced', fields=[ ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('adv_consolemenu', models.BooleanField(default=False, verbose_name='Enable Console Menu')), ('adv_serialconsole', models.BooleanField(default=False, verbose_name='Use Serial Console')), ('adv_serialport', models.CharField( choices=[('0x3f8', '0x3f8')], default='0x2f8', help_text= 'Set this to match your serial port address (0x3f8, 0x2f8, etc.)', max_length=120, verbose_name='Serial Port Address')), ('adv_serialspeed', models.CharField( choices=[('9600', '9600'), ('19200', '19200'), ('38400', '38400'), ('57600', '57600'), ('115200', '115200')], default='9600', help_text='Set this to match your serial port speed', max_length=120, verbose_name='Serial Port Speed')), ('adv_consolescreensaver', models.BooleanField(default=False, verbose_name='Enable screen saver')), ('adv_powerdaemon', models.BooleanField( default=False, verbose_name='Enable powerd (Power Saving Daemon)')), ('adv_swapondrive', models.IntegerField( default=2, validators=[django.core.validators.MinValueValidator(0)], verbose_name= 'Swap size on each drive in GiB, affects new disks only. Setting this to 0 disables swap creation completely (STRONGLY DISCOURAGED).' )), ('adv_consolemsg', models.BooleanField( default=True, verbose_name='Show console messages in the footer')), ('adv_traceback', models.BooleanField( default=True, verbose_name='Show tracebacks in case of fatal errors')), ('adv_advancedmode', models.BooleanField( default=False, help_text= 'By default only essential fields are shown. Fields considered advanced can be displayed through the Advanced Mode button.', verbose_name='Show advanced fields by default')), ('adv_autotune', models.BooleanField( default=False, help_text= 'Attempt to automatically tune the network and ZFS system control variables based on memory available.', verbose_name='Enable autotune')), ('adv_debugkernel', models.BooleanField( default=False, help_text= 'The kernel built with debug symbols will be booted instead.', verbose_name='Enable debug kernel')), ('adv_uploadcrash', models.BooleanField( default=True, verbose_name= 'Enable automatic upload of kernel crash dumps and daily telemetry' )), ('adv_anonstats', models.BooleanField( default=True, editable=False, verbose_name='Enable report anonymous statistics')), ('adv_anonstats_token', models.TextField(blank=True, editable=False)), ('adv_motd', models.TextField(default='Welcome', max_length=1024, verbose_name='MOTD banner')), ('adv_boot_scrub', models.IntegerField(default=35, editable=False)), ('adv_periodic_notifyuser', freenasUI.freeadmin.models.fields.UserField( default='root', help_text= 'If you wish periodic emails to be sent to a different email address than the alert emails are set to (root) set an email address for a user and select that user in the dropdown.', max_length=120, verbose_name='Periodic Notification User')), ('adv_graphite', models.CharField( blank=True, default='', help_text= 'A hostname or IP here will be used as the destination to send collectd data to using the graphite plugin to collectd.', max_length=120, verbose_name='Remote Graphite Server Hostname')), ('adv_fqdn_syslog', models.BooleanField(default=False, verbose_name='Use FQDN for logging')), ], options={ 'verbose_name': 'Advanced', }, ), migrations.CreateModel( name='Alert', fields=[ ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('node', models.CharField(default='A', max_length=100)), ('message_id', models.CharField(max_length=100)), ('dismiss', models.BooleanField(default=True)), ('timestamp', models.IntegerField( default=freenasUI.system.models.time_now)), ], ), migrations.CreateModel( name='Backup', fields=[ ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('bak_finished', models.BooleanField(default=False, verbose_name='Finished')), ('bak_failed', models.BooleanField(default=False, verbose_name='Failed')), ('bak_acknowledged', models.BooleanField(default=False, verbose_name='Acknowledged')), ('bak_worker_pid', models.IntegerField(null=True, verbose_name='Backup worker PID')), ('bak_started_at', models.DateTimeField(verbose_name='Started at')), ('bak_finished_at', models.DateTimeField(null=True, verbose_name='Finished at')), ('bak_destination', models.CharField(blank=True, max_length=1024, verbose_name='Destination')), ('bak_status', models.CharField(blank=True, max_length=1024, verbose_name='Status')), ], options={ 'verbose_name': 'System Backup', }, ), migrations.CreateModel( name='Certificate', fields=[ ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('cert_type', models.IntegerField()), ('cert_name', models.CharField( help_text= 'Internal identifier of the certificate. Only alphanumeric, "_" and "-" are allowed.', max_length=120, unique=True, verbose_name='Identifier')), ('cert_certificate', models.TextField( blank=True, help_text= 'Cut and paste the contents of your certificate here', null=True, verbose_name='Certificate')), ('cert_privatekey', models.TextField( blank=True, help_text= 'Cut and paste the contents of your private key here', null=True, verbose_name='Private Key')), ('cert_CSR', models.TextField( blank=True, help_text='Cut and paste the contents of your CSR here', null=True, verbose_name='Signing Request')), ('cert_key_length', models.IntegerField(blank=True, default=2048, null=True, verbose_name='Key length')), ('cert_digest_algorithm', models.CharField(blank=True, default='SHA256', max_length=120, null=True, verbose_name='Digest Algorithm')), ('cert_lifetime', models.IntegerField(blank=True, default=3650, null=True, verbose_name='Lifetime')), ('cert_country', models.CharField(blank=True, help_text='Country Name (2 letter code)', max_length=120, null=True, verbose_name='Country')), ('cert_state', models.CharField( blank=True, help_text='State or Province Name (full name)', max_length=120, null=True, verbose_name='State')), ('cert_city', models.CharField(blank=True, help_text='Locality Name (eg, city)', max_length=120, null=True, verbose_name='Locality')), ('cert_organization', models.CharField(blank=True, help_text='Organization Name (eg, company)', max_length=120, null=True, verbose_name='Organization')), ('cert_email', models.CharField(blank=True, help_text='Email Address', max_length=120, null=True, verbose_name='Email Address')), ('cert_common', models.CharField( blank=True, help_text= 'Common Name (eg, FQDN of FreeNAS server or service)', max_length=120, null=True, verbose_name='Common Name')), ('cert_serial', models.IntegerField(blank=True, help_text='Serial for next certificate', null=True, verbose_name='Serial')), ('cert_chain', models.BooleanField(default=False)), ], options={ 'verbose_name': 'Certificate', 'verbose_name_plural': 'Certificates', }, ), migrations.CreateModel( name='CertificateAuthority', fields=[ ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('cert_type', models.IntegerField()), ('cert_name', models.CharField( help_text= 'Internal identifier of the certificate. Only alphanumeric, "_" and "-" are allowed.', max_length=120, unique=True, verbose_name='Identifier')), ('cert_certificate', models.TextField( blank=True, help_text= 'Cut and paste the contents of your certificate here', null=True, verbose_name='Certificate')), ('cert_privatekey', models.TextField( blank=True, help_text= 'Cut and paste the contents of your private key here', null=True, verbose_name='Private Key')), ('cert_CSR', models.TextField( blank=True, help_text='Cut and paste the contents of your CSR here', null=True, verbose_name='Signing Request')), ('cert_key_length', models.IntegerField(blank=True, default=2048, null=True, verbose_name='Key length')), ('cert_digest_algorithm', models.CharField(blank=True, default='SHA256', max_length=120, null=True, verbose_name='Digest Algorithm')), ('cert_lifetime', models.IntegerField(blank=True, default=3650, null=True, verbose_name='Lifetime')), ('cert_country', models.CharField(blank=True, help_text='Country Name (2 letter code)', max_length=120, null=True, verbose_name='Country')), ('cert_state', models.CharField( blank=True, help_text='State or Province Name (full name)', max_length=120, null=True, verbose_name='State')), ('cert_city', models.CharField(blank=True, help_text='Locality Name (eg, city)', max_length=120, null=True, verbose_name='Locality')), ('cert_organization', models.CharField(blank=True, help_text='Organization Name (eg, company)', max_length=120, null=True, verbose_name='Organization')), ('cert_email', models.CharField(blank=True, help_text='Email Address', max_length=120, null=True, verbose_name='Email Address')), ('cert_common', models.CharField( blank=True, help_text= 'Common Name (eg, FQDN of FreeNAS server or service)', max_length=120, null=True, verbose_name='Common Name')), ('cert_serial', models.IntegerField(blank=True, help_text='Serial for next certificate', null=True, verbose_name='Serial')), ('cert_chain', models.BooleanField(default=False)), ('cert_signedby', models.ForeignKey( blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, to='system.CertificateAuthority', verbose_name='Signing Certificate Authority')), ], options={ 'verbose_name': 'CA', 'verbose_name_plural': 'CAs', }, ), migrations.CreateModel( name='CloudCredentials', fields=[ ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('name', models.CharField(max_length=100, verbose_name='Account Name')), ('provider', models.CharField(choices=[('AMAZON', 'Amazon S3')], max_length=50, verbose_name='Provider')), ('attributes', freenasUI.freeadmin.models.fields.DictField(editable=False)), ], options={ 'verbose_name': 'Cloud Credential', }, ), migrations.CreateModel( name='Email', fields=[ ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('em_fromemail', models.CharField( default='', help_text= 'An email address that the system will use for the sending address for mail it sends, eg: [email protected]', max_length=120, verbose_name='From email')), ('em_outgoingserver', models.CharField( blank=True, help_text= 'A hostname or ip that will accept our mail, for instance mail.example.org, or 192.168.1.1', max_length=120, verbose_name='Outgoing mail server')), ('em_port', models.IntegerField( default=25, help_text= 'An integer from 1 - 65535, generally will be 25, 465, or 587', validators=[ django.core.validators.MinValueValidator(1), django.core.validators.MaxValueValidator(65535) ], verbose_name='Port to connect to')), ('em_security', models.CharField(choices=[('plain', 'Plain'), ('ssl', 'SSL'), ('tls', 'TLS')], default='plain', help_text='encryption of the connection', max_length=120, verbose_name='TLS/SSL')), ('em_smtp', models.BooleanField(default=False, verbose_name='Use SMTP Authentication')), ('em_user', models.CharField( blank=True, help_text= 'A username to authenticate to the remote server', max_length=120, null=True, verbose_name='Username')), ('em_pass', models.CharField( blank=True, help_text= 'A password to authenticate to the remote server', max_length=120, null=True, verbose_name='Password')), ], options={ 'verbose_name': 'Email', }, ), migrations.CreateModel( name='NTPServer', fields=[ ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('ntp_address', models.CharField(max_length=120, verbose_name='Address')), ('ntp_burst', models.BooleanField( default=False, help_text= 'When the server is reachable, send a burst of eight packets instead of the usual one. This is designed to improve timekeeping quality with the server command and s addresses.', verbose_name='Burst')), ('ntp_iburst', models.BooleanField( default=True, help_text= 'When the server is unreachable, send a burst of eight packets instead of the usual one. This is designed to speed the initial synchronization acquisition with the server command and s addresses.', verbose_name='IBurst')), ('ntp_prefer', models.BooleanField( default=False, help_text= 'Marks the server as preferred. All other things being equal, this host will be chosen for synchronization among a set of correctly operating hosts.', verbose_name='Prefer')), ('ntp_minpoll', models.IntegerField( default=6, help_text= 'The minimum poll interval for NTP messages, as a power of 2 in seconds. Defaults to 6 (64 s), but can be decreased to a lower limit of 4 (16 s)', validators=[django.core.validators.MinValueValidator(4)], verbose_name='Min. Poll')), ('ntp_maxpoll', models.IntegerField( default=10, help_text= 'The maximum poll interval for NTP messages, as a power of 2 in seconds. Defaults to 10 (1,024 s), but can be increased to an upper limit of 17 (36.4 h)', validators=[django.core.validators.MaxValueValidator(17)], verbose_name='Max. Poll')), ], options={ 'ordering': ['ntp_address'], 'verbose_name': 'NTP Server', 'verbose_name_plural': 'NTP Servers', }, ), migrations.CreateModel( name='Settings', fields=[ ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('stg_guiprotocol', models.CharField(choices=[('http', 'HTTP'), ('https', 'HTTPS'), ('httphttps', 'HTTP+HTTPS')], default='http', max_length=120, verbose_name='Protocol')), ('stg_guiaddress', models.CharField(blank=True, default='0.0.0.0', max_length=120, verbose_name='WebGUI IPv4 Address')), ('stg_guiv6address', models.CharField(blank=True, default='::', max_length=120, verbose_name='WebGUI IPv6 Address')), ('stg_guiport', models.IntegerField( default=80, validators=[ django.core.validators.MinValueValidator(1), django.core.validators.MaxValueValidator(65535) ], verbose_name='WebGUI HTTP Port')), ('stg_guihttpsport', models.IntegerField( default=443, validators=[ django.core.validators.MinValueValidator(1), django.core.validators.MaxValueValidator(65535) ], verbose_name='WebGUI HTTPS Port')), ('stg_guihttpsredirect', models.BooleanField( default=True, help_text= 'Redirect HTTP (port 80) to HTTPS when only the HTTPS protocol is enabled', verbose_name='WebGUI HTTP -> HTTPS Redirect')), ('stg_language', models.CharField(choices=settings.LANGUAGES, default='en', max_length=120, verbose_name='Language')), ('stg_kbdmap', models.CharField(blank=True, choices=choices.KBDMAP_CHOICES(), max_length=120, verbose_name='Console Keyboard Map')), ('stg_timezone', models.CharField(choices=choices.TimeZoneChoices(), default='America/Los_Angeles', max_length=120, verbose_name='Timezone')), ('stg_sysloglevel', models.CharField( choices=[('f_emerg', 'Emergency'), ('f_alert', 'Alert'), ('f_crit', 'Critical'), ('f_err', 'Error'), ('f_warning', 'Warning'), ('f_notice', 'Notice'), ('f_info', 'Info'), ('f_debug', 'Debug'), ('f_is_debug', 'Is_Debug')], default='f_info', help_text= 'Specifies which messages will be logged by server. INFO and VERBOSE log transactions that server performs on behalf of the client. f_is_debug specify higher levels of debugging output. The default is f_info.', max_length=120, verbose_name='Syslog level')), ('stg_syslogserver', models.CharField( blank=True, default='', help_text= 'Specifies the server and port syslog messages will be sent to. The accepted format is hostname:port or ip:port, if :port is not specified it will default to port 514 (this field currently only takes IPv4 addresses)', max_length=120, verbose_name='Syslog server')), ('stg_wizardshown', models.BooleanField(default=False, editable=False)), ('stg_pwenc_check', models.CharField(editable=False, max_length=100)), ('stg_guicertificate', models.ForeignKey( blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, to='system.Certificate', verbose_name='Certificate')), ], options={ 'verbose_name': 'General', }, ), migrations.CreateModel( name='SystemDataset', fields=[ ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('sys_pool', models.CharField(blank=True, max_length=1024, verbose_name='Pool')), ('sys_syslog_usedataset', models.BooleanField(default=False, verbose_name='Syslog')), ('sys_rrd_usedataset', models.BooleanField( default=True, help_text= 'Save the Round-Robin Database (RRD) used by system statistics collection daemon into the system dataset', verbose_name='Reporting Database')), ('sys_uuid', models.CharField(editable=False, max_length=32)), ('sys_uuid_b', models.CharField(blank=True, editable=False, max_length=32, null=True)), ], options={ 'verbose_name': 'System Dataset', }, ), migrations.CreateModel( name='Tunable', fields=[ ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('tun_var', models.CharField(max_length=50, unique=True, verbose_name='Variable')), ('tun_value', models.CharField(max_length=512, verbose_name='Value')), ('tun_type', models.CharField(choices=[('loader', 'Loader'), ('rc', 'rc.conf'), ('sysctl', 'Sysctl')], default='loader', max_length=20, verbose_name='Type')), ('tun_comment', models.CharField(blank=True, max_length=100, verbose_name='Comment')), ('tun_enabled', models.BooleanField(default=True, verbose_name='Enabled')), ], options={ 'ordering': ['tun_var'], 'verbose_name': 'Tunable', 'verbose_name_plural': 'Tunables', }, ), migrations.CreateModel( name='Update', fields=[ ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('upd_autocheck', models.BooleanField( default=True, verbose_name='Check Automatically For Updates')), ('upd_train', models.CharField(blank=True, max_length=50)), ], options={ 'verbose_name': 'Update', }, ), migrations.AddField( model_name='certificate', name='cert_signedby', field=models.ForeignKey( blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, to='system.CertificateAuthority', verbose_name='Signing Certificate Authority'), ), migrations.CreateModel( name='Support', fields=[ ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('enabled', models.NullBooleanField( default=False, verbose_name='Enable automatic support alerts to iXsystems' )), ('name', models.CharField(blank=True, max_length=200, verbose_name='Name of Primary Contact')), ('title', models.CharField(blank=True, max_length=200, verbose_name='Title')), ('email', models.EmailField(blank=True, max_length=200, verbose_name='E-mail')), ('phone', models.CharField(blank=True, max_length=200, verbose_name='Phone')), ('secondary_name', models.CharField(blank=True, max_length=200, verbose_name='Name of Secondary Contact')), ('secondary_title', models.CharField(blank=True, max_length=200, verbose_name='Secondary Title')), ('secondary_email', models.EmailField(blank=True, max_length=200, verbose_name='Secondary E-mail')), ('secondary_phone', models.CharField(blank=True, max_length=200, verbose_name='Secondary Phone')), ], options={ 'verbose_name': 'Proactive Support', }, ), migrations.AlterUniqueTogether( name='alert', unique_together=set([('node', 'message_id')]), ), migrations.RunPython(create_system), ]