mirror of
https://github.com/house-of-vanity/OutFleet.git
synced 2025-07-06 09:04:07 +00:00
Added link generator. Added link to /stat/ json object
Some checks failed
Docker hub build / docker (push) Has been cancelled
Some checks failed
Docker hub build / docker (push) Has been cancelled
This commit is contained in:
20
static/admin/js/generate_link.js
Normal file
20
static/admin/js/generate_link.js
Normal file
@ -0,0 +1,20 @@
|
||||
// static/admin/js/generate_uuid.js
|
||||
|
||||
function generateLink(button) {
|
||||
let row = button.closest('tr');
|
||||
let inputField = row.querySelector('input[name$="link"]');
|
||||
|
||||
if (inputField) {
|
||||
inputField.value = generateRandomString(16);
|
||||
}
|
||||
}
|
||||
|
||||
function generateRandomString(length) {
|
||||
const chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789';
|
||||
let result = '';
|
||||
for (let i = 0; i < length; i++) {
|
||||
result += chars.charAt(Math.floor(Math.random() * chars.length));
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
@ -1,21 +0,0 @@
|
||||
// static/admin/js/generate_uuid.js
|
||||
|
||||
function generateUUID() {
|
||||
let uuid = '';
|
||||
const characters = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789';
|
||||
const length = 10;
|
||||
|
||||
for (let i = 0; i < length; i++) {
|
||||
const randomIndex = Math.floor(Math.random() * characters.length);
|
||||
uuid += characters[randomIndex];
|
||||
}
|
||||
|
||||
const hashField = document.getElementById('id_hash');
|
||||
if (hashField) {
|
||||
hashField.value = uuid;
|
||||
}
|
||||
}
|
||||
|
||||
document.addEventListener('DOMContentLoaded', function () {
|
||||
generateUUID();
|
||||
});
|
22
vpn/admin.py
22
vpn/admin.py
@ -4,6 +4,7 @@ from polymorphic.admin import (
|
||||
)
|
||||
from django.contrib import admin
|
||||
from django.utils.safestring import mark_safe
|
||||
from django.utils.html import format_html
|
||||
from django.db.models import Count
|
||||
|
||||
from django.contrib.auth.admin import UserAdmin
|
||||
@ -93,10 +94,14 @@ class ServerAdmin(PolymorphicParentModelAdmin):
|
||||
@admin.register(User)
|
||||
class UserAdmin(admin.ModelAdmin):
|
||||
form = UserForm
|
||||
list_display = ('username', 'comment', 'registration_date', 'hash', 'server_count')
|
||||
list_display = ('username', 'comment', 'registration_date', 'hash_link', 'server_count')
|
||||
search_fields = ('username', 'hash')
|
||||
readonly_fields = ('hash',)
|
||||
readonly_fields = ('hash_link',)
|
||||
|
||||
@admin.display(description='API access', ordering='hash')
|
||||
def hash_link(self, obj):
|
||||
url = f"{EXTERNAL_ADDRESS}/stat/{obj.hash}"
|
||||
return format_html('<a href="{}">JSON server list</a>', url, obj.hash)
|
||||
|
||||
@admin.display(description='Allowed servers', ordering='server_count')
|
||||
def server_count(self, obj):
|
||||
@ -139,13 +144,22 @@ class ACLLinkInline(admin.TabularInline):
|
||||
help_text = 'Add or change ACL links'
|
||||
verbose_name = 'Dynamic link'
|
||||
verbose_name_plural = 'Dynamic links'
|
||||
fields = ('link', 'comment')
|
||||
fields = ('link', 'generate_link_button', 'comment')
|
||||
readonly_fields = ('generate_link_button',)
|
||||
|
||||
@admin.display(description="Generate")
|
||||
def generate_link_button(self, obj=None):
|
||||
return format_html(
|
||||
'<button type="button" class="generate-link" onclick="generateLink(this)">🔄</button>'
|
||||
)
|
||||
|
||||
class Media:
|
||||
js = ('admin/js/generate_link.js',)
|
||||
|
||||
@admin.register(ACL)
|
||||
class ACLAdmin(admin.ModelAdmin):
|
||||
|
||||
list_display = ('user', 'server', 'server_type', 'display_links', 'created_at')
|
||||
#list_editable = ('server', )
|
||||
list_filter = (UserNameFilter, 'server__server_type', ServerNameFilter)
|
||||
search_fields = ('user__name', 'server__name', 'server__comment', 'user__comment', 'links__link')
|
||||
readonly_fields = ('user_info',)
|
||||
|
Reference in New Issue
Block a user