Ejemplo n.º 1
0
class StaticRoute(Model):
    sr_destination = models.CharField(max_length=120,
                                      verbose_name=_("Destination network"))
    sr_gateway = IP4AddressField(max_length=120, verbose_name=_("Gateway"))
    sr_description = models.CharField(max_length=120,
                                      verbose_name=_("Description"),
                                      blank=True)

    class Meta:
        verbose_name = _("Static Route")
        verbose_name_plural = _("Static Routes")
        ordering = ["sr_destination", "sr_gateway"]

    class FreeAdmin:
        icon_object = "StaticRouteIcon"
        icon_model = "StaticRouteIcon"
        icon_add = "AddStaticRouteIcon"
        icon_view = "ViewAllStaticRoutesIcon"

    def __str__(self):
        return self.sr_destination

    def save(self, *args, **kwargs):
        super(StaticRoute, self).save(*args, **kwargs)

    def delete(self, *args, **kwargs):
        super(StaticRoute, self).delete(*args, **kwargs)
        try:
            # TODO: async user notification
            notifier().staticroute_delete(self)
        except MiddlewareError:
            pass
Ejemplo n.º 2
0
class Alias(Model):
    alias_interface = models.ForeignKey(
            Interfaces,
            verbose_name=_("Interface")
            )
    alias_v4address = IP4AddressField(
            verbose_name=_("IPv4 Address"),
            default='',
            blank=True,
            )
    alias_v4netmaskbit = models.CharField(
            max_length=3,
            choices=choices.v4NetmaskBitList,
            default='',
            blank=True,
            verbose_name=_("IPv4 Netmask"),
            help_text=""
            )
    alias_v6address = IP6AddressField(
            verbose_name=_("IPv6 Address"),
            default='',
            blank=True,
            )
    alias_v6netmaskbit = models.CharField(
            max_length=3,
            choices=choices.v6NetmaskBitList,
            default='',
            blank=True,
            verbose_name=_("IPv6 Prefix Length"),
            help_text=""
            )

    def __unicode__(self):
        if self.alias_v4address:
            return u'%s:%s' % (
                self.alias_interface.int_name,
                self.alias_v4address)
        elif self.alias_v6address:
            return u'%s:%s' % (
                self.alias_interface.int_name,
                self.alias_v6address)

    @property
    def alias_network(self):
        if self.alias_v4address:
            return '%s/%s' % (self.alias_v4address, self.alias_v4netmaskbit)
        else:
            return '%s/%s' % (self.alias_v6address, self.alias_v6netmaskbit)

    def delete(self):
        super(Alias, self).delete()
        notifier().stop("netif")
        notifier().start("network")

    class Meta:
        verbose_name = _("Alias")
        verbose_name_plural = _("Aliases")

    class FreeAdmin:
        pass
Ejemplo n.º 3
0
class GlobalConfiguration(Model):
    gc_hostname = models.CharField(
        max_length=120,
        verbose_name=_("Hostname"),
        default='nas',
        validators=[RegexValidator(regex=r'^[a-zA-Z\.\-\_0-9]+$', )],
    )
    gc_hostname_b = models.CharField(
        max_length=120,
        verbose_name=_("Hostname"),
        validators=[RegexValidator(regex=r'^[a-zA-Z\.\-\_0-9]+$', )],
        blank=True,
        null=True,
    )
    gc_domain = models.CharField(
        max_length=120,
        verbose_name=_("Domain"),
        default='local',
        validators=[RegexValidator(regex=r'^[a-zA-Z\.\-\_0-9]+$', )],
    )
    gc_ipv4gateway = IP4AddressField(
        blank=True,
        default='',
        verbose_name=_("IPv4 Default Gateway"),
    )
    gc_ipv6gateway = IP6AddressField(
        blank=True,
        default='',
        verbose_name=_("IPv6 Default Gateway"),
    )
    gc_nameserver1 = IPAddressField(blank=True,
                                    default='',
                                    verbose_name=_("Nameserver 1"))
    gc_nameserver2 = IPAddressField(default='',
                                    blank=True,
                                    verbose_name=_("Nameserver 2"))
    gc_nameserver3 = IPAddressField(default='',
                                    blank=True,
                                    verbose_name=_("Nameserver 3"))
    gc_httpproxy = models.CharField(
        verbose_name=_('HTTP Proxy'),
        blank=True,
        max_length=255,
    )
    gc_netwait_enabled = models.BooleanField(
        verbose_name=_("Enable netwait feature"),
        help_text=_(
            "If enabled, delays the start of network-reliant services "
            "until interface is up and ICMP packets to a destination defined "
            "in netwait ip list are flowing.  Link state is examined first, "
            "followed by \"pinging\" an IP address to verify network "
            "usability.  If no destination can be reached or timeouts are "
            "exceeded, network services are started anyway with no guarantee "
            "that the network is usable."),
        default=False,
    )
    gc_netwait_ip = models.CharField(
        verbose_name=_("Netwait IP list"),
        help_text=_(
            "Space-delimited list of IP addresses to ping(8). If "
            "multiple IP addresses are specified, each will be tried until "
            "one is successful or the list is exhausted. If it is empty the "
            "default gateway will be used."),
        blank=True,
        max_length=300,
    )
    gc_hosts = models.TextField(
        verbose_name=_("Host name data base"),
        help_text=_(
            "This field is appended to /etc/hosts which contains "
            "information regarding known hosts on the network. hosts(5)"),
        default='',
        blank=True,
    )

    def __init__(self, *args, **kwargs):
        super(GlobalConfiguration, self).__init__(*args, **kwargs)
        for name in (
                'gc_hostname',
                'gc_ipv4gateway',
                'gc_ipv6gateway',
                'gc_domain',
                'gc_nameserver1',
                'gc_nameserver2',
                'gc_nameserver3',
                'gc_httpproxy',
        ):
            setattr(self, "_orig_%s" % name, self.__dict__.get(name))

    def __str__(self):
        return str(self.id)

    def get_hostname(self):
        _n = notifier()
        if not _n.is_freenas():
            if _n.failover_node() == 'B':
                return self.gc_hostname_b
            else:
                return self.gc_hostname
        else:
            return self.gc_hostname

    def save(self, *args, **kwargs):
        # See #3437
        if self._orig_gc_hostname != self.gc_hostname:
            try:
                cifs = CIFS.objects.order_by('-id')[0]
                cifs.cifs_srv_netbiosname = self.gc_hostname
                cifs.save()
            except:
                pass
        return super(GlobalConfiguration, self).save(*args, **kwargs)

    class Meta:
        verbose_name = _("Global Configuration")
        verbose_name_plural = _("Global Configuration")
Ejemplo n.º 4
0
class GlobalConfiguration(Model):
    gc_hostname = models.CharField(max_length=120, verbose_name=_("Hostname"))
    gc_domain = models.CharField(max_length=120, verbose_name=_("Domain"))
    gc_ipv4gateway = IP4AddressField(
        blank=True,
        default='',
        verbose_name=_("IPv4 Default Gateway"),
    )
    gc_ipv6gateway = IP6AddressField(
        blank=True,
        default='',
        verbose_name=_("IPv6 Default Gateway"),
    )
    gc_nameserver1 = IPAddressField(blank=True,
                                    default='',
                                    verbose_name=_("Nameserver 1"))
    gc_nameserver2 = IPAddressField(default='',
                                    blank=True,
                                    verbose_name=_("Nameserver 2"))
    gc_nameserver3 = IPAddressField(default='',
                                    blank=True,
                                    verbose_name=_("Nameserver 3"))
    gc_netwait_enabled = models.BooleanField(
        verbose_name=_("Enable netwait feature"),
        help_text=_(
            "If enabled, delays the start of network-reliant services "
            "until interface is up and ICMP packets to a destination defined "
            "in netwait ip list are flowing.  Link state is examined first, "
            "followed by \"pinging\" an IP address to verify network "
            "usability.  If no destination can be reached or timeouts are "
            "exceeded, network services are started anyway with no guarantee "
            "that the network is usable."),
        default=False,
    )
    gc_netwait_ip = models.CharField(
        verbose_name=_("Netwait IP list"),
        help_text=_(
            "Space-delimited list of IP addresses to ping(8). If "
            "multiple IP addresses are specified, each will be tried until "
            "one is successful or the list is exhausted. If it is empty the "
            "default gateway will be used."),
        blank=True,
        max_length=300,
    )
    gc_hosts = models.TextField(
        verbose_name=_("Host name data base"),
        help_text=_(
            "This field is appended to /etc/hosts which contains "
            "information regarding known hosts on the network. hosts(5)"),
        default='',
        blank=True,
    )

    def __unicode__(self):
        return u'%s' % self.id

    class Meta:
        verbose_name = _("Global Configuration")
        verbose_name_plural = _("Global Configuration")

    class FreeAdmin:
        deletable = False