Update check

This commit is contained in:
Eduardo Silva 2024-02-23 14:23:22 -03:00
parent 578f7a63f9
commit 03a9c12696
24 changed files with 349 additions and 16 deletions

View file

@ -1,5 +1,5 @@
from django.contrib import admin
from .models import WireGuardInstance, Peer, PeerAllowedIP
from .models import WireGuardInstance, Peer, PeerAllowedIP, WebadminSettings
class WireGuardInstanceAdmin(admin.ModelAdmin):
@ -20,4 +20,11 @@ class PeerAllowedIPAdmin(admin.ModelAdmin):
list_display = ('peer', 'priority', 'allowed_ip', 'netmask', 'created', 'updated', 'uuid')
search_fields = ('peer', 'priority', 'allowed_ip', 'netmask', 'created', 'updated', 'uuid')
admin.site.register(PeerAllowedIP, PeerAllowedIPAdmin)
admin.site.register(PeerAllowedIP, PeerAllowedIPAdmin)
class WebadminSettingsAdmin(admin.ModelAdmin):
list_display = ('current_version', 'latest_version', 'update_available', 'created', 'updated', 'uuid')
search_fields = ('current_version', 'latest_version', 'update_available', 'created', 'updated', 'uuid')
#admin.site.register(WebadminSettings, WebadminSettingsAdmin)

View file

@ -13,12 +13,12 @@ class Migration(migrations.Migration):
migrations.AddField(
model_name='wireguardinstance',
name='dns_primary',
field=models.GenericIPAddressField(default='1.1.1.1', protocol='IPv4', unique=True),
field=models.GenericIPAddressField(default='1.1.1.1', protocol='IPv4', unique=False),
),
migrations.AddField(
model_name='wireguardinstance',
name='dns_secondary',
field=models.GenericIPAddressField(blank=True, default='1.0.0.1', null=True, protocol='IPv4', unique=True),
field=models.GenericIPAddressField(blank=True, default='1.0.0.1', null=True, protocol='IPv4', unique=False),
),
migrations.AddField(
model_name='wireguardinstance',

View file

@ -0,0 +1,28 @@
# Generated by Django 5.0.1 on 2024-02-22 17:54
import uuid
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('wireguard', '0008_wireguardinstance_dns_primary_and_more'),
]
operations = [
migrations.CreateModel(
name='WebadminSettings',
fields=[
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
('webadmin_settings', models.CharField(max_length=20, unique=True)),
('update_available', models.BooleanField(default=False)),
('current_version', models.DecimalField(decimal_places=4, default=0, max_digits=8)),
('latest_version', models.DecimalField(decimal_places=4, default=0, max_digits=8)),
('last_checked', models.DateTimeField(blank=True, null=True)),
('updated', models.DateTimeField(auto_now=True)),
('created', models.DateTimeField(auto_now_add=True)),
('uuid', models.UUIDField(default=uuid.uuid4, editable=False, unique=True)),
],
),
]

View file

@ -0,0 +1,17 @@
# Generated by Django 5.0.1 on 2024-02-22 18:03
from django.db import migrations
class Migration(migrations.Migration):
dependencies = [
('wireguard', '0009_webadminsettings'),
]
operations = [
migrations.RemoveField(
model_name='webadminsettings',
name='webadmin_settings',
),
]

View file

@ -0,0 +1,18 @@
# Generated by Django 5.0.1 on 2024-02-22 18:04
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('wireguard', '0010_remove_webadminsettings_webadmin_settings'),
]
operations = [
migrations.AddField(
model_name='webadminsettings',
name='name',
field=models.CharField(default='webadmin_settings', max_length=20, unique=True),
),
]

View file

@ -0,0 +1,21 @@
# Generated by Django 5.0.1 on 2024-02-22 19:02
from django.db import migrations
class Migration(migrations.Migration):
dependencies = [
('wireguard', '0011_webadminsettings_name'),
]
operations = [
migrations.RemoveField(
model_name='webadminsettings',
name='current_version',
),
migrations.RemoveField(
model_name='webadminsettings',
name='latest_version',
),
]

View file

@ -0,0 +1,23 @@
# Generated by Django 5.0.1 on 2024-02-22 19:05
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('wireguard', '0012_remove_webadminsettings_current_version_and_more'),
]
operations = [
migrations.AddField(
model_name='webadminsettings',
name='current_version',
field=models.PositiveIntegerField(default=0),
),
migrations.AddField(
model_name='webadminsettings',
name='latest_version',
field=models.PositiveIntegerField(default=0),
),
]

View file

@ -0,0 +1,23 @@
# Generated by Django 5.0.1 on 2024-02-23 15:37
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('wireguard', '0013_webadminsettings_current_version_and_more'),
]
operations = [
migrations.AlterField(
model_name='wireguardinstance',
name='dns_primary',
field=models.GenericIPAddressField(default='1.1.1.1', protocol='IPv4'),
),
migrations.AlterField(
model_name='wireguardinstance',
name='dns_secondary',
field=models.GenericIPAddressField(blank=True, default='1.0.0.1', null=True, protocol='IPv4'),
),
]

View file

@ -29,6 +29,21 @@ NETMASK_CHOICES = (
)
class WebadminSettings(models.Model):
name = models.CharField(default='webadmin_settings', max_length=20, unique=True)
update_available = models.BooleanField(default=False)
current_version = models.PositiveIntegerField(default=0)
latest_version = models.PositiveIntegerField(default=0)
last_checked = models.DateTimeField(blank=True, null=True)
updated = models.DateTimeField(auto_now=True)
created = models.DateTimeField(auto_now_add=True)
uuid = models.UUIDField(default=uuid.uuid4, editable=False, unique=True)
def __str__(self):
return self.name
class WireGuardInstance(models.Model):
name = models.CharField(max_length=100, blank=True, null=True)
instance_id = models.PositiveIntegerField(unique=True, default=0)
@ -41,8 +56,8 @@ class WireGuardInstance(models.Model):
post_up = models.TextField(blank=True, null=True)
post_down = models.TextField(blank=True, null=True)
peer_list_refresh_interval = models.IntegerField(default=20)
dns_primary = models.GenericIPAddressField(unique=True, protocol='IPv4', default='1.1.1.1')
dns_secondary = models.GenericIPAddressField(unique=True, protocol='IPv4', default='1.0.0.1', blank=True, null=True)
dns_primary = models.GenericIPAddressField(unique=False, protocol='IPv4', default='1.1.1.1')
dns_secondary = models.GenericIPAddressField(unique=False, protocol='IPv4', default='1.0.0.1', blank=True, null=True)
pending_changes = models.BooleanField(default=True)
created = models.DateTimeField(auto_now_add=True)

View file

@ -1,11 +1,13 @@
from decimal import Decimal, ROUND_DOWN
from django.shortcuts import render, get_object_or_404, redirect
from user_manager.models import UserAcl
from wireguard.forms import WireGuardInstanceForm
from .models import WireGuardInstance
from .models import WireGuardInstance, WebadminSettings
from django.contrib.auth.decorators import login_required
from django.contrib import messages
from django.db import models
from django.conf import settings
import os
import subprocess
@ -67,8 +69,7 @@ def generate_instance_defaults():
@login_required
def view_welcome(request):
page_title = 'Welcome'
breadcrumb = {'level2': {'title': 'Place holder', 'href': '/blabla'}}
context = {'page_title': page_title, 'breadcrumb': breadcrumb}
context = {'page_title': page_title}
return render(request, 'wireguard/welcome.html', context)