1
0
Fork 0
mirror of https://github.com/retspen/webvirtcloud synced 2025-07-31 12:41:08 +00:00

logs i18n problems fixed

This commit is contained in:
cserma 2023-04-27 16:06:19 +03:00
parent da9fbeaff4
commit b81b63a962
17 changed files with 8792 additions and 11604 deletions

View file

@ -5,7 +5,8 @@ from django.contrib import messages
from django.contrib.auth.decorators import login_required from django.contrib.auth.decorators import login_required
from django.http import HttpResponseRedirect from django.http import HttpResponseRedirect
from django.shortcuts import render from django.shortcuts import render
from django.utils.translation import gettext_lazy as _ #from django.utils.translation import gettext_lazy as _
from django.utils.translation import gettext_noop as _
from logs.views import addlogmsg from logs.views import addlogmsg
from appsettings.models import AppSettings from appsettings.models import AppSettings
@ -24,7 +25,7 @@ def appsettings(request):
themes_list = os.listdir(sass_dir.value + "/wvc-themes") themes_list = os.listdir(sass_dir.value + "/wvc-themes")
except FileNotFoundError as err: except FileNotFoundError as err:
messages.error(request, err) messages.error(request, err)
addlogmsg(request.user.username, "-", "", err) addlogmsg(request.user.username, "-", "", err, ip=get_client_ip(request))
# Bootstrap settings related with filesystems, because of that they are excluded from other settings # Bootstrap settings related with filesystems, because of that they are excluded from other settings
appsettings = AppSettings.objects.exclude( appsettings = AppSettings.objects.exclude(
@ -45,7 +46,7 @@ def appsettings(request):
msg = err msg = err
messages.error(request, msg) messages.error(request, msg)
addlogmsg(request.user.username, "-", "", msg) addlogmsg(request.user.username, "-", "", msg, ip=get_client_ip(request))
return HttpResponseRedirect(request.get_full_path()) return HttpResponseRedirect(request.get_full_path())
if "BOOTSTRAP_THEME" in request.POST: if "BOOTSTRAP_THEME" in request.POST:
@ -79,7 +80,7 @@ def appsettings(request):
msg = err msg = err
messages.error(request, msg) messages.error(request, msg)
addlogmsg(request.user.username, "-", "", msg) addlogmsg(request.user.username, "-", "", msg, ip=get_client_ip(request))
return HttpResponseRedirect(request.get_full_path()) return HttpResponseRedirect(request.get_full_path())
for setting in appsettings: for setting in appsettings:
@ -97,7 +98,15 @@ def appsettings(request):
msg = err msg = err
messages.error(request, msg) messages.error(request, msg)
addlogmsg(request.user.username, "-", "", msg) addlogmsg(request.user.username, "-", "", msg, ip=get_client_ip(request))
return HttpResponseRedirect(request.get_full_path()) return HttpResponseRedirect(request.get_full_path())
return render(request, "appsettings.html", locals()) return render(request, "appsettings.html", locals())
def get_client_ip(request):
x_forwarded_for = request.META.get('HTTP_X_FORWARDED_FOR')
if x_forwarded_for:
ip = x_forwarded_for.split(',')[0]
else:
ip = request.META.get('REMOTE_ADDR')
return ip

View file

@ -8,7 +8,7 @@
</button> </button>
</li> </li>
<li class="nav-item" role="presentation"> <li class="nav-item" role="presentation">
<button class="nav-link" data-bs-toggle="tab" data-bs-target="#logs" type="button" role="tab" aria-controls="logs" aria-selected="false"> <button class="nav-link" data-bs-toggle="tab" data-bs-target="#logs" type="button" role="tab" aria-controls="logs" aria-selected="false" onclick="update_logs_table(vname);">
{% trans "Logs" %} {% trans "Logs" %}
</button> </button>
</li> </li>
@ -85,6 +85,7 @@
<tr> <tr>
<th scope="col">{% trans "Date" %}</th> <th scope="col">{% trans "Date" %}</th>
<th scope="col">{% trans "User" %}</th> <th scope="col">{% trans "User" %}</th>
<th scope="col">{% trans "IP" %}</th>
<th scope="col">{% trans "Message" %}</th> <th scope="col">{% trans "Message" %}</th>
</tr> </tr>
</thead> </thead>
@ -110,6 +111,7 @@
// console.log(row); // console.log(row);
logs += '<tr><td style="width:150px">'+row['date']+'</td>'; logs += '<tr><td style="width:150px">'+row['date']+'</td>';
logs += '<td>'+row['user']+'</td>'; logs += '<td>'+row['user']+'</td>';
logs += '<td>'+row['ip']+'</td>';
logs += '<td>'+row['message']+'</td></tr>'; logs += '<td>'+row['message']+'</td></tr>';
}); });
$("#logs_table > tbody").html(logs); $("#logs_table > tbody").html(logs);

View file

@ -19,7 +19,7 @@ from django.contrib.auth.models import User
from django.http import Http404, HttpResponse, JsonResponse from django.http import Http404, HttpResponse, JsonResponse
from django.shortcuts import get_object_or_404, redirect, render from django.shortcuts import get_object_or_404, redirect, render
from django.urls import reverse from django.urls import reverse
from django.utils.translation import gettext_lazy as _ from django.utils.translation import gettext_noop as _
from libvirt import (VIR_DOMAIN_UNDEFINE_KEEP_NVRAM, from libvirt import (VIR_DOMAIN_UNDEFINE_KEEP_NVRAM,
VIR_DOMAIN_UNDEFINE_NVRAM, VIR_DOMAIN_UNDEFINE_NVRAM,
VIR_DOMAIN_START_PAUSED, VIR_DOMAIN_START_PAUSED,
@ -121,12 +121,12 @@ def instance(request, pk):
# instance.uuid = uuid # instance.uuid = uuid
# instance.save() # instance.save()
# msg = _(f"Fixing UUID {uuid}") # msg = _(f"Fixing UUID {uuid}")
# addlogmsg(request.user.username, instance.compute.name, instance.name, msg) # addlogmsg(request.user.username, instance.compute.name, instance.name, msg, ip=get_client_ip(request))
# except Instance.DoesNotExist: # except Instance.DoesNotExist:
# instance = Instance(compute=compute, name=vname, uuid=uuid) # instance = Instance(compute=compute, name=vname, uuid=uuid)
# instance.save() # instance.save()
# msg = _("Instance does not exist: Creating new instance") # msg = _("Instance does not exist: Creating new instance")
# addlogmsg(request.user.username, instance.compute.name, instance.name, msg) # addlogmsg(request.user.username, instance.compute.name, instance.name, msg, ip=get_client_ip(request))
# userinstances = UserInstance.objects.filter(instance=instance).order_by('user__username') # userinstances = UserInstance.objects.filter(instance=instance).order_by('user__username')
userinstances = instance.userinstance_set.order_by("user__username") userinstances = instance.userinstance_set.order_by("user__username")
@ -337,7 +337,7 @@ def poweron(request, pk):
else: else:
instance.proxy.start() instance.proxy.start()
addlogmsg( addlogmsg(
request.user.username, instance.compute.name, instance.name, _("Power On") request.user.username, instance.compute.name, instance.name, _("Power On"), ip=get_client_ip(request)
) )
return redirect(request.META.get("HTTP_REFERER")) return redirect(request.META.get("HTTP_REFERER"))
@ -348,7 +348,7 @@ def powercycle(request, pk):
instance.proxy.force_shutdown() instance.proxy.force_shutdown()
instance.proxy.start() instance.proxy.start()
addlogmsg( addlogmsg(
request.user.username, instance.compute.name, instance.name, _("Power Cycle") request.user.username, instance.compute.name, instance.name, _("Power Cycle"), ip=get_client_ip(request)
) )
return redirect(request.META.get("HTTP_REFERER")) return redirect(request.META.get("HTTP_REFERER"))
@ -357,7 +357,7 @@ def poweroff(request, pk):
instance = get_instance(request.user, pk) instance = get_instance(request.user, pk)
instance.proxy.shutdown() instance.proxy.shutdown()
addlogmsg( addlogmsg(
request.user.username, instance.compute.name, instance.name, _("Power Off") request.user.username, instance.compute.name, instance.name, _("Power Off"), ip=get_client_ip(request)
) )
return redirect(request.META.get("HTTP_REFERER")) return redirect(request.META.get("HTTP_REFERER"))
@ -367,7 +367,7 @@ def poweroff(request, pk):
def suspend(request, pk): def suspend(request, pk):
instance = get_instance(request.user, pk) instance = get_instance(request.user, pk)
instance.proxy.suspend() instance.proxy.suspend()
addlogmsg(request.user.username, instance.compute.name, instance.name, _("Suspend")) addlogmsg(request.user.username, instance.compute.name, instance.name, _("Suspend"), ip=get_client_ip(request))
return redirect(request.META.get("HTTP_REFERER")) return redirect(request.META.get("HTTP_REFERER"))
@ -375,7 +375,7 @@ def suspend(request, pk):
def resume(request, pk): def resume(request, pk):
instance = get_instance(request.user, pk) instance = get_instance(request.user, pk)
instance.proxy.resume() instance.proxy.resume()
addlogmsg(request.user.username, instance.compute.name, instance.name, _("Resume")) addlogmsg(request.user.username, instance.compute.name, instance.name, _("Resume"), ip=get_client_ip(request))
return redirect(request.META.get("HTTP_REFERER")) return redirect(request.META.get("HTTP_REFERER"))
@ -383,7 +383,7 @@ def force_off(request, pk):
instance = get_instance(request.user, pk) instance = get_instance(request.user, pk)
instance.proxy.force_shutdown() instance.proxy.force_shutdown()
addlogmsg( addlogmsg(
request.user.username, instance.compute.name, instance.name, _("Force Off") request.user.username, instance.compute.name, instance.name, _("Force Off"), ip=get_client_ip(request)
) )
return redirect(request.META.get("HTTP_REFERER")) return redirect(request.META.get("HTTP_REFERER"))
@ -414,7 +414,7 @@ def destroy(request, pk):
instance.delete() instance.delete()
addlogmsg( addlogmsg(
request.user.username, instance.compute.name, instance.name, _("Destroy") request.user.username, instance.compute.name, instance.name, _("Destroy"), ip=get_client_ip(request)
) )
return redirect(reverse("instances:index")) return redirect(reverse("instances:index"))
@ -465,7 +465,7 @@ def migrate(request, pk):
"hostname": target_host.hostname, "hostname": target_host.hostname,
"method": migration_method, "method": migration_method,
} }
addlogmsg(request.user.username, current_host, instance.name, msg) addlogmsg(request.user.username, current_host, instance.name, msg, ip=get_client_ip(request))
return redirect(request.META.get("HTTP_REFERER")) return redirect(request.META.get("HTTP_REFERER"))
@ -489,7 +489,7 @@ def set_root_pass(request, pk):
if result["return"] == "success": if result["return"] == "success":
msg = _("Reset root password") msg = _("Reset root password")
addlogmsg( addlogmsg(
request.user.username, instance.compute.name, instance.name, msg request.user.username, instance.compute.name, instance.name, msg, ip=get_client_ip(request)
) )
messages.success(request, msg) messages.success(request, msg)
else: else:
@ -523,7 +523,7 @@ def add_public_key(request, pk):
msg = _("Installed new SSH public key %(keyname)s") % { msg = _("Installed new SSH public key %(keyname)s") % {
"keyname": publickey.keyname "keyname": publickey.keyname
} }
addlogmsg(request.user.username, instance.compute.name, instance.name, msg) addlogmsg(request.user.username, instance.compute.name, instance.name, msg, ip=get_client_ip(request))
if result["return"] == "success": if result["return"] == "success":
messages.success(request, msg) messages.success(request, msg)
@ -567,7 +567,7 @@ def resizevm_cpu(request, pk):
"new": vcpu, "new": vcpu,
} }
addlogmsg( addlogmsg(
request.user.username, instance.compute.name, instance.name, msg request.user.username, instance.compute.name, instance.name, msg, ip=get_client_ip(request)
) )
messages.success(request, msg) messages.success(request, msg)
return redirect(reverse("instances:instance", args=[instance.id]) + "#resize") return redirect(reverse("instances:instance", args=[instance.id]) + "#resize")
@ -615,7 +615,7 @@ def resize_memory(request, pk):
"new_max": new_memory, "new_max": new_memory,
} }
addlogmsg( addlogmsg(
request.user.username, instance.compute.name, instance.name, msg request.user.username, instance.compute.name, instance.name, msg, ip=get_client_ip(request)
) )
messages.success(request, msg) messages.success(request, msg)
@ -659,7 +659,7 @@ def resize_disk(request, pk):
instance.proxy.resize_disk(disks_new) instance.proxy.resize_disk(disks_new)
msg = _("Disk is resized: %(dev)s") % {"dev": disk["dev"]} msg = _("Disk is resized: %(dev)s") % {"dev": disk["dev"]}
addlogmsg( addlogmsg(
request.user.username, instance.compute.name, instance.name, msg request.user.username, instance.compute.name, instance.name, msg, ip=get_client_ip(request)
) )
messages.success(request, msg) messages.success(request, msg)
@ -730,7 +730,7 @@ def add_new_vol(request, pk):
"name": name, "name": name,
"format": format, "format": format,
} }
addlogmsg(request.user.username, instance.compute.name, instance.name, msg) addlogmsg(request.user.username, instance.compute.name, instance.name, msg, ip=get_client_ip(request))
return redirect(request.META.get("HTTP_REFERER") + "#disks") return redirect(request.META.get("HTTP_REFERER") + "#disks")
@ -780,7 +780,7 @@ def add_existing_vol(request, pk):
cache_mode=cache, cache_mode=cache,
) )
msg = _("Attach Existing disk: %(target_dev)s") % {"target_dev": target_dev} msg = _("Attach Existing disk: %(target_dev)s") % {"target_dev": target_dev}
addlogmsg(request.user.username, instance.compute.name, instance.name, msg) addlogmsg(request.user.username, instance.compute.name, instance.name, msg, ip=get_client_ip(request))
return redirect(request.META.get("HTTP_REFERER") + "#disks") return redirect(request.META.get("HTTP_REFERER") + "#disks")
@ -853,7 +853,7 @@ def edit_volume(request, pk):
else: else:
messages.success(request, _("Volume is changed successfully.")) messages.success(request, _("Volume is changed successfully."))
msg = _("Edit disk: %(target_dev)s") % {"target_dev": target_dev} msg = _("Edit disk: %(target_dev)s") % {"target_dev": target_dev}
addlogmsg(request.user.username, instance.compute.name, instance.name, msg) addlogmsg(request.user.username, instance.compute.name, instance.name, msg, ip=get_client_ip(request))
return redirect(request.META.get("HTTP_REFERER") + "#disks") return redirect(request.META.get("HTTP_REFERER") + "#disks")
@ -880,7 +880,7 @@ def delete_vol(request, pk):
instance.proxy.detach_disk(dev) instance.proxy.detach_disk(dev)
conn_delete.del_volume(name) conn_delete.del_volume(name)
addlogmsg(request.user.username, instance.compute.name, instance.name, msg) addlogmsg(request.user.username, instance.compute.name, instance.name, msg, ip=get_client_ip(request))
return redirect(request.META.get("HTTP_REFERER") + "#disks") return redirect(request.META.get("HTTP_REFERER") + "#disks")
@ -895,7 +895,7 @@ def detach_vol(request, pk):
path = request.POST.get("path", "") path = request.POST.get("path", "")
instance.proxy.detach_disk(dev) instance.proxy.detach_disk(dev)
msg = _("Detach disk: %(dev)s") % {"dev": dev} msg = _("Detach disk: %(dev)s") % {"dev": dev}
addlogmsg(request.user.username, instance.compute.name, instance.name, msg) addlogmsg(request.user.username, instance.compute.name, instance.name, msg, ip=get_client_ip(request))
return redirect(request.META.get("HTTP_REFERER") + "#disks") return redirect(request.META.get("HTTP_REFERER") + "#disks")
@ -917,7 +917,7 @@ def add_cdrom(request, pk):
readonly=True, readonly=True,
) )
msg = _("Add CD-ROM: %(target)s") % {"target": target} msg = _("Add CD-ROM: %(target)s") % {"target": target}
addlogmsg(request.user.username, instance.compute.name, instance.name, msg) addlogmsg(request.user.username, instance.compute.name, instance.name, msg, ip=get_client_ip(request))
return redirect(request.META.get("HTTP_REFERER") + "#disks") return redirect(request.META.get("HTTP_REFERER") + "#disks")
@ -932,7 +932,7 @@ def detach_cdrom(request, pk, dev):
# dev = request.POST.get('detach_cdrom', '') # dev = request.POST.get('detach_cdrom', '')
instance.proxy.detach_disk(dev) instance.proxy.detach_disk(dev)
msg = _("Detach CD-ROM: %(dev)s") % {"dev": dev} msg = _("Detach CD-ROM: %(dev)s") % {"dev": dev}
addlogmsg(request.user.username, instance.compute.name, instance.name, msg) addlogmsg(request.user.username, instance.compute.name, instance.name, msg, ip=get_client_ip(request))
return redirect(request.META.get("HTTP_REFERER") + "#disks") return redirect(request.META.get("HTTP_REFERER") + "#disks")
@ -947,7 +947,7 @@ def unmount_iso(request, pk):
dev = request.POST.get("umount_iso", "") dev = request.POST.get("umount_iso", "")
instance.proxy.umount_iso(dev, image) instance.proxy.umount_iso(dev, image)
msg = _("Mount media: %(dev)s") % {"dev": dev} msg = _("Mount media: %(dev)s") % {"dev": dev}
addlogmsg(request.user.username, instance.compute.name, instance.name, msg) addlogmsg(request.user.username, instance.compute.name, instance.name, msg, ip=get_client_ip(request))
return redirect(request.META.get("HTTP_REFERER") + "#disks") return redirect(request.META.get("HTTP_REFERER") + "#disks")
@ -962,7 +962,7 @@ def mount_iso(request, pk):
dev = request.POST.get("mount_iso", "") dev = request.POST.get("mount_iso", "")
instance.proxy.mount_iso(dev, image) instance.proxy.mount_iso(dev, image)
msg = _("Unmount media: %(dev)s") % {"dev": dev} msg = _("Unmount media: %(dev)s") % {"dev": dev}
addlogmsg(request.user.username, instance.compute.name, instance.name, msg) addlogmsg(request.user.username, instance.compute.name, instance.name, msg, ip=get_client_ip(request))
return redirect(request.META.get("HTTP_REFERER") + "#disks") return redirect(request.META.get("HTTP_REFERER") + "#disks")
@ -980,7 +980,7 @@ def snapshot(request, pk):
desc = request.POST.get("description", "") desc = request.POST.get("description", "")
instance.proxy.create_snapshot(name, desc) instance.proxy.create_snapshot(name, desc)
msg = _("Create snapshot: %(snap)s") % {"snap": name} msg = _("Create snapshot: %(snap)s") % {"snap": name}
addlogmsg(request.user.username, instance.compute.name, instance.name, msg) addlogmsg(request.user.username, instance.compute.name, instance.name, msg, ip=get_client_ip(request))
return redirect(request.META.get("HTTP_REFERER") + "#managesnapshot") return redirect(request.META.get("HTTP_REFERER") + "#managesnapshot")
@ -995,7 +995,7 @@ def delete_snapshot(request, pk):
snap_name = request.POST.get("name", "") snap_name = request.POST.get("name", "")
instance.proxy.snapshot_delete(snap_name) instance.proxy.snapshot_delete(snap_name)
msg = _("Delete snapshot: %(snap)s") % {"snap": snap_name} msg = _("Delete snapshot: %(snap)s") % {"snap": snap_name}
addlogmsg(request.user.username, instance.compute.name, instance.name, msg) addlogmsg(request.user.username, instance.compute.name, instance.name, msg, ip=get_client_ip(request))
return redirect(request.META.get("HTTP_REFERER") + "#managesnapshot") return redirect(request.META.get("HTTP_REFERER") + "#managesnapshot")
@ -1013,7 +1013,7 @@ def revert_snapshot(request, pk):
msg += snap_name msg += snap_name
messages.success(request, msg) messages.success(request, msg)
msg = _("Revert snapshot: %(snap)s") % {"snap": snap_name} msg = _("Revert snapshot: %(snap)s") % {"snap": snap_name}
addlogmsg(request.user.username, instance.compute.name, instance.name, msg) addlogmsg(request.user.username, instance.compute.name, instance.name, msg, ip=get_client_ip(request))
return redirect(request.META.get("HTTP_REFERER") + "#managesnapshot") return redirect(request.META.get("HTTP_REFERER") + "#managesnapshot")
@ -1030,7 +1030,7 @@ def create_external_snapshot(request, pk):
desc = request.POST.get("description", "") desc = request.POST.get("description", "")
instance.proxy.create_external_snapshot("s1." + name, instance, desc=desc) instance.proxy.create_external_snapshot("s1." + name, instance, desc=desc)
msg = _("Create external snapshot: %(snap)s") % {"snap": name} msg = _("Create external snapshot: %(snap)s") % {"snap": name}
addlogmsg(request.user.username, instance.compute.name, instance.name, msg) addlogmsg(request.user.username, instance.compute.name, instance.name, msg, ip=get_client_ip(request))
return redirect(request.META.get("HTTP_REFERER") + "#managesnapshot") return redirect(request.META.get("HTTP_REFERER") + "#managesnapshot")
@ -1064,7 +1064,7 @@ def revert_external_snapshot(request, pk):
instance.proxy.revert_external_snapshot(name, date, desc) instance.proxy.revert_external_snapshot(name, date, desc)
instance.proxy.start() if instance_state else None instance.proxy.start() if instance_state else None
msg = _("Revert external snapshot: %(snap)s") % {"snap": name} msg = _("Revert external snapshot: %(snap)s") % {"snap": name}
addlogmsg(request.user.username, instance.compute.name, instance.name, msg) addlogmsg(request.user.username, instance.compute.name, instance.name, msg, ip=get_client_ip(request))
return redirect(request.META.get("HTTP_REFERER") + "#managesnapshot") return redirect(request.META.get("HTTP_REFERER") + "#managesnapshot")
@ -1085,7 +1085,7 @@ def delete_external_snapshot(request, pk):
try: try:
instance.proxy.delete_external_snapshot(name) instance.proxy.delete_external_snapshot(name)
msg = _("Delete external snapshot: %(snap)s") % {"snap": name} msg = _("Delete external snapshot: %(snap)s") % {"snap": name}
addlogmsg(request.user.username, instance.compute.name, instance.name, msg) addlogmsg(request.user.username, instance.compute.name, instance.name, msg, ip=get_client_ip(request))
finally: finally:
instance.proxy.force_shutdown() if instance_state else None instance.proxy.force_shutdown() if instance_state else None
@ -1102,7 +1102,7 @@ def set_vcpu(request, pk):
else: else:
instance.proxy.set_vcpu(id, 0) instance.proxy.set_vcpu(id, 0)
msg = _("VCPU %(id)s is enabled=%(enabled)s") % {"id": id, "enabled": enabled} msg = _("VCPU %(id)s is enabled=%(enabled)s") % {"id": id, "enabled": enabled}
addlogmsg(request.user.username, instance.compute.name, instance.name, msg) addlogmsg(request.user.username, instance.compute.name, instance.name, msg, ip=get_client_ip(request))
return redirect(request.META.get("HTTP_REFERER") + "#resize") return redirect(request.META.get("HTTP_REFERER") + "#resize")
@ -1112,7 +1112,7 @@ def set_vcpu_hotplug(request, pk):
status = True if request.POST.get("vcpu_hotplug", "False") == "True" else False status = True if request.POST.get("vcpu_hotplug", "False") == "True" else False
msg = _("VCPU Hot-plug is enabled=%(status)s") % {"status": status} msg = _("VCPU Hot-plug is enabled=%(status)s") % {"status": status}
instance.proxy.set_vcpu_hotplug(status) instance.proxy.set_vcpu_hotplug(status)
addlogmsg(request.user.username, instance.compute.name, instance.name, msg) addlogmsg(request.user.username, instance.compute.name, instance.name, msg, ip=get_client_ip(request))
return redirect(request.META.get("HTTP_REFERER") + "#resize") return redirect(request.META.get("HTTP_REFERER") + "#resize")
@ -1121,7 +1121,7 @@ def set_autostart(request, pk):
instance = get_instance(request.user, pk) instance = get_instance(request.user, pk)
instance.proxy.set_autostart(1) instance.proxy.set_autostart(1)
msg = _("Set autostart") msg = _("Set autostart")
addlogmsg(request.user.username, instance.compute.name, instance.name, msg) addlogmsg(request.user.username, instance.compute.name, instance.name, msg, ip=get_client_ip(request))
return redirect(request.META.get("HTTP_REFERER") + "#boot_opt") return redirect(request.META.get("HTTP_REFERER") + "#boot_opt")
@ -1130,7 +1130,7 @@ def unset_autostart(request, pk):
instance = get_instance(request.user, pk) instance = get_instance(request.user, pk)
instance.proxy.set_autostart(0) instance.proxy.set_autostart(0)
msg = _("Unset autostart") msg = _("Unset autostart")
addlogmsg(request.user.username, instance.compute.name, instance.name, msg) addlogmsg(request.user.username, instance.compute.name, instance.name, msg, ip=get_client_ip(request))
return redirect(request.META.get("HTTP_REFERER") + "#boot_opt") return redirect(request.META.get("HTTP_REFERER") + "#boot_opt")
@ -1139,7 +1139,7 @@ def set_bootmenu(request, pk):
instance = get_instance(request.user, pk) instance = get_instance(request.user, pk)
instance.proxy.set_bootmenu(1) instance.proxy.set_bootmenu(1)
msg = _("Enable boot menu") msg = _("Enable boot menu")
addlogmsg(request.user.username, instance.compute.name, instance.name, msg) addlogmsg(request.user.username, instance.compute.name, instance.name, msg, ip=get_client_ip(request))
return redirect(request.META.get("HTTP_REFERER") + "#boot_opt") return redirect(request.META.get("HTTP_REFERER") + "#boot_opt")
@ -1148,7 +1148,7 @@ def unset_bootmenu(request, pk):
instance = get_instance(request.user, pk) instance = get_instance(request.user, pk)
instance.proxy.set_bootmenu(0) instance.proxy.set_bootmenu(0)
msg = _("Disable boot menu") msg = _("Disable boot menu")
addlogmsg(request.user.username, instance.compute.name, instance.name, msg) addlogmsg(request.user.username, instance.compute.name, instance.name, msg, ip=get_client_ip(request))
return redirect(request.META.get("HTTP_REFERER") + "#boot_opt") return redirect(request.META.get("HTTP_REFERER") + "#boot_opt")
@ -1174,7 +1174,7 @@ def set_bootorder(request, pk):
) )
else: else:
messages.success(request, _("Boot order changed successfully.")) messages.success(request, _("Boot order changed successfully."))
addlogmsg(request.user.username, instance.compute.name, instance.name, msg) addlogmsg(request.user.username, instance.compute.name, instance.name, msg, ip=get_client_ip(request))
return redirect(request.META.get("HTTP_REFERER") + "#boot_opt") return redirect(request.META.get("HTTP_REFERER") + "#boot_opt")
@ -1185,7 +1185,7 @@ def change_xml(request, pk):
if new_xml: if new_xml:
instance.proxy._defineXML(new_xml) instance.proxy._defineXML(new_xml)
msg = _("Change instance XML") msg = _("Change instance XML")
addlogmsg(request.user.username, instance.compute.name, instance.name, msg) addlogmsg(request.user.username, instance.compute.name, instance.name, msg, ip=get_client_ip(request))
return redirect(request.META.get("HTTP_REFERER") + "#xmledit") return redirect(request.META.get("HTTP_REFERER") + "#xmledit")
@ -1199,7 +1199,7 @@ def set_guest_agent(request, pk):
instance.proxy.remove_guest_agent() instance.proxy.remove_guest_agent()
msg = _("Set Guest Agent: %(status)s") % {"status": status} msg = _("Set Guest Agent: %(status)s") % {"status": status}
addlogmsg(request.user.username, instance.compute.name, instance.name, msg) addlogmsg(request.user.username, instance.compute.name, instance.name, msg, ip=get_client_ip(request))
return redirect(request.META.get("HTTP_REFERER") + "#options") return redirect(request.META.get("HTTP_REFERER") + "#options")
@ -1209,7 +1209,7 @@ def set_video_model(request, pk):
video_model = request.POST.get("video_model", "vga") video_model = request.POST.get("video_model", "vga")
instance.proxy.set_video_model(video_model) instance.proxy.set_video_model(video_model)
msg = _("Set Video Model: %(model)s") % {"model": video_model} msg = _("Set Video Model: %(model)s") % {"model": video_model}
addlogmsg(request.user.username, instance.compute.name, instance.name, msg) addlogmsg(request.user.username, instance.compute.name, instance.name, msg, ip=get_client_ip(request))
return redirect(request.META.get("HTTP_REFERER") + "#options") return redirect(request.META.get("HTTP_REFERER") + "#options")
@ -1239,7 +1239,7 @@ def change_network(request, pk):
network_data[post] = request.POST.get(post, "") network_data[post] = request.POST.get(post, "")
instance.proxy.change_network(network_data) instance.proxy.change_network(network_data)
addlogmsg(request.user.username, instance.compute.name, instance.name, msg) addlogmsg(request.user.username, instance.compute.name, instance.name, msg, ip=get_client_ip(request))
msg = _("Network Device Config is changed. Please shutdown instance to activate.") msg = _("Network Device Config is changed. Please shutdown instance to activate.")
if instance.proxy.get_status() != 5: if instance.proxy.get_status() != 5:
messages.success(request, msg) messages.success(request, msg)
@ -1266,7 +1266,7 @@ def add_network(request, pk):
instance.proxy.add_network(mac, source, source_type, nwfilter=nwfilter) instance.proxy.add_network(mac, source, source_type, nwfilter=nwfilter)
msg = _("Add network: %(mac)s") % {"mac": mac} msg = _("Add network: %(mac)s") % {"mac": mac}
addlogmsg(request.user.username, instance.compute.name, instance.name, msg) addlogmsg(request.user.username, instance.compute.name, instance.name, msg, ip=get_client_ip(request))
return redirect(request.META.get("HTTP_REFERER") + "#network") return redirect(request.META.get("HTTP_REFERER") + "#network")
@ -1277,7 +1277,7 @@ def delete_network(request, pk):
instance.proxy.delete_network(mac_address) instance.proxy.delete_network(mac_address)
msg = _("Delete Network: %(mac)s") % {"mac": mac_address} msg = _("Delete Network: %(mac)s") % {"mac": mac_address}
addlogmsg(request.user.username, instance.compute.name, instance.name, msg) addlogmsg(request.user.username, instance.compute.name, instance.name, msg, ip=get_client_ip(request))
return redirect(request.META.get("HTTP_REFERER") + "#network") return redirect(request.META.get("HTTP_REFERER") + "#network")
@ -1290,7 +1290,7 @@ def set_link_state(request, pk):
state = "down" if state == "up" else "up" state = "down" if state == "up" else "up"
instance.proxy.set_link_state(mac_address, state) instance.proxy.set_link_state(mac_address, state)
msg = _("Set Link State: %(state)s") % {"state": state} msg = _("Set Link State: %(state)s") % {"state": state}
addlogmsg(request.user.username, instance.compute.name, instance.name, msg) addlogmsg(request.user.username, instance.compute.name, instance.name, msg, ip=get_client_ip(request))
return redirect(request.META.get("HTTP_REFERER") + "#network") return redirect(request.META.get("HTTP_REFERER") + "#network")
@ -1367,7 +1367,7 @@ def add_owner(request, pk):
add_user_inst.save() add_user_inst.save()
user = User.objects.get(id=user_id) user = User.objects.get(id=user_id)
msg = _("Add owner: %(user)s") % {"user": user} msg = _("Add owner: %(user)s") % {"user": user}
addlogmsg(request.user.username, instance.compute.name, instance.name, msg) addlogmsg(request.user.username, instance.compute.name, instance.name, msg, ip=get_client_ip(request))
return redirect(request.META.get("HTTP_REFERER") + "#users") return redirect(request.META.get("HTTP_REFERER") + "#users")
@ -1378,7 +1378,7 @@ def del_owner(request, pk):
userinstance = UserInstance.objects.get(pk=userinstance_id) userinstance = UserInstance.objects.get(pk=userinstance_id)
userinstance.delete() userinstance.delete()
msg = _("Delete owner: %(userinstance_id)s ") % {"userinstance_id": userinstance_id} msg = _("Delete owner: %(userinstance_id)s ") % {"userinstance_id": userinstance_id}
addlogmsg(request.user.username, instance.compute.name, instance.name, msg) addlogmsg(request.user.username, instance.compute.name, instance.name, msg, ip=get_client_ip(request))
return redirect(request.META.get("HTTP_REFERER") + "#users") return redirect(request.META.get("HTTP_REFERER") + "#users")
@ -1452,7 +1452,7 @@ def clone(request, pk):
} }
messages.success(request, msg) messages.success(request, msg)
addlogmsg( addlogmsg(
request.user.username, instance.compute.name, new_instance.name, msg request.user.username, instance.compute.name, new_instance.name, msg, ip=get_client_ip(request)
) )
if app_settings.CLONE_INSTANCE_AUTO_MIGRATE == "True": if app_settings.CLONE_INSTANCE_AUTO_MIGRATE == "True":
@ -1499,7 +1499,7 @@ def update_console(request, pk):
else: else:
msg = _("Set VNC password") msg = _("Set VNC password")
addlogmsg( addlogmsg(
request.user.username, instance.compute.name, instance.name, msg request.user.username, instance.compute.name, instance.name, msg, ip=get_client_ip(request)
) )
if "keymap" in form.changed_data or "clear_keymap" in form.changed_data: if "keymap" in form.changed_data or "clear_keymap" in form.changed_data:
@ -1510,21 +1510,21 @@ def update_console(request, pk):
msg = _("Set VNC keymap") msg = _("Set VNC keymap")
addlogmsg( addlogmsg(
request.user.username, instance.compute.name, instance.name, msg request.user.username, instance.compute.name, instance.name, msg, ip=get_client_ip(request)
) )
if "type" in form.changed_data: if "type" in form.changed_data:
instance.proxy.set_console_type(form.cleaned_data["type"]) instance.proxy.set_console_type(form.cleaned_data["type"])
msg = _("Set VNC type") msg = _("Set VNC type")
addlogmsg( addlogmsg(
request.user.username, instance.compute.name, instance.name, msg request.user.username, instance.compute.name, instance.name, msg, ip=get_client_ip(request)
) )
if "listen_on" in form.changed_data: if "listen_on" in form.changed_data:
instance.proxy.set_console_listener_addr(form.cleaned_data["listen_on"]) instance.proxy.set_console_listener_addr(form.cleaned_data["listen_on"])
msg = _("Set VNC listen address") msg = _("Set VNC listen address")
addlogmsg( addlogmsg(
request.user.username, instance.compute.name, instance.name, msg request.user.username, instance.compute.name, instance.name, msg, ip=get_client_ip(request)
) )
return redirect(request.META.get("HTTP_REFERER") + "#vncsettings") return redirect(request.META.get("HTTP_REFERER") + "#vncsettings")
@ -1548,7 +1548,7 @@ def change_options(request, pk):
instance.proxy.set_options(options) instance.proxy.set_options(options)
msg = _("Edit options") msg = _("Edit options")
addlogmsg(request.user.username, instance.compute.name, instance.name, msg) addlogmsg(request.user.username, instance.compute.name, instance.name, msg, ip=get_client_ip(request))
return redirect(request.META.get("HTTP_REFERER") + "#options") return redirect(request.META.get("HTTP_REFERER") + "#options")
@ -1562,7 +1562,7 @@ def getvvfile(request, pk):
) )
msg = _("Send console.vv file") msg = _("Send console.vv file")
addlogmsg(request.user.username, instance.compute.name, instance.name, msg) addlogmsg(request.user.username, instance.compute.name, instance.name, msg, ip=get_client_ip(request))
response = HttpResponse( response = HttpResponse(
content="", content="",
content_type="application/x-virt-viewer", content_type="application/x-virt-viewer",
@ -1884,7 +1884,7 @@ def create_instance(request, compute_id, arch, machine):
request.user.username, request.user.username,
create_instance.compute.name, create_instance.compute.name,
create_instance.name, create_instance.name,
msg, msg, ip=get_client_ip(request)
) )
return redirect( return redirect(
reverse("instances:instance", args=[create_instance.id]) reverse("instances:instance", args=[create_instance.id])
@ -1946,3 +1946,11 @@ def flavor_delete(request, pk):
"common/confirm_delete.html", "common/confirm_delete.html",
{"object": flavor}, {"object": flavor},
) )
def get_client_ip(request):
x_forwarded_for = request.META.get('HTTP_X_FORWARDED_FOR')
if x_forwarded_for:
ip = x_forwarded_for.split(',')[0]
else:
ip = request.META.get('REMOTE_ADDR')
return ip

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

Binary file not shown.

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

Binary file not shown.

File diff suppressed because it is too large Load diff

View file

@ -3,6 +3,7 @@ from django.utils.translation import gettext_lazy as _
class Logs(Model): class Logs(Model):
user = CharField(_("user"), max_length=50) user = CharField(_("user"), max_length=50)
ip = CharField(_("ip"), max_length=50, default=None, blank=True, null=True)
host = CharField(_("host"), max_length=50, default="-") host = CharField(_("host"), max_length=50, default="-")
instance = CharField(_("instance"), max_length=50) instance = CharField(_("instance"), max_length=50)
message = CharField(_("message"), max_length=255) message = CharField(_("message"), max_length=255)

View file

@ -7,7 +7,7 @@ from instances.models import Instance
from logs.models import Logs from logs.models import Logs
def addlogmsg(user, host, instance, message): def addlogmsg(user, host, instance, message, ip=None):
""" """
:param user: :param user:
:param host: :param host:
@ -15,7 +15,7 @@ def addlogmsg(user, host, instance, message):
:param message: :param message:
:return: :return:
""" """
add_log_msg = Logs(user=user, host=host, instance=instance, message=message) add_log_msg = Logs(user=user, host=host, instance=instance, message=message, ip=ip)
add_log_msg.save() add_log_msg.save()
@ -33,6 +33,7 @@ def vm_logs(request, vname):
for l in logs_: for l in logs_:
log = dict() log = dict()
log["user"] = l.user log["user"] = l.user
log["ip"] = l.ip
log["host"] = l.host log["host"] = l.host
log["instance"] = l.instance log["instance"] = l.instance
log["message"] = l.message log["message"] = l.message

View file

@ -3,7 +3,8 @@ from computes.models import Compute
from django.contrib import messages from django.contrib import messages
from django.http import HttpResponseRedirect from django.http import HttpResponseRedirect
from django.shortcuts import get_object_or_404, render from django.shortcuts import get_object_or_404, render
from django.utils.translation import gettext_lazy as _ # from django.utils.translation import gettext_lazy as _
from django.utils.translation import gettext_noop as _
from libvirt import libvirtError from libvirt import libvirtError
from logs.views import addlogmsg from logs.views import addlogmsg
from vrtManager import util from vrtManager import util
@ -61,11 +62,11 @@ def nwfilters(request, compute_id):
"filter": name "filter": name
} }
conn.create_nwfilter(xml) conn.create_nwfilter(xml)
addlogmsg(request.user.username, compute.hostname, "", msg) addlogmsg(request.user.username, compute.hostname, "", msg, ip=get_client_ip(request))
except libvirtError as lib_err: except libvirtError as lib_err:
messages.error(request, lib_err) messages.error(request, lib_err)
addlogmsg( addlogmsg(
request.user.username, compute.hostname, "", lib_err request.user.username, compute.hostname, "", lib_err, ip=get_client_ip(request)
) )
if "del_nwfilter" in request.POST: if "del_nwfilter" in request.POST:
@ -98,7 +99,7 @@ def nwfilters(request, compute_id):
"NWFilter is in use by %(instance)s. Cannot be deleted." "NWFilter is in use by %(instance)s. Cannot be deleted."
) % {"instance": inst} ) % {"instance": inst}
messages.error(request, msg) messages.error(request, msg)
addlogmsg(request.user.username, compute.hostname, "", msg) addlogmsg(request.user.username, compute.hostname, "", msg, ip=get_client_ip(request))
i_conn.close() i_conn.close()
break break
@ -106,7 +107,7 @@ def nwfilters(request, compute_id):
if nwfilter and not in_use: if nwfilter and not in_use:
nwfilter.undefine() nwfilter.undefine()
nwfilters_all.remove(nwfilter_info) nwfilters_all.remove(nwfilter_info)
addlogmsg(request.user.username, compute.hostname, "", msg) addlogmsg(request.user.username, compute.hostname, "", msg, ip=get_client_ip(request))
if "cln_nwfilter" in request.POST: if "cln_nwfilter" in request.POST:
name = request.POST.get("nwfiltername", "") name = request.POST.get("nwfiltername", "")
@ -119,15 +120,15 @@ def nwfilters(request, compute_id):
"name": name, "name": name,
"clone": cln_name, "clone": cln_name,
} }
addlogmsg(request.user.username, compute.hostname, "", msg) addlogmsg(request.user.username, compute.hostname, "", msg, ip=get_client_ip(request))
conn.close() conn.close()
except libvirtError as lib_err: except libvirtError as lib_err:
messages.error(request, lib_err) messages.error(request, lib_err)
addlogmsg(request.user.username, compute.hostname, "", lib_err) addlogmsg(request.user.username, compute.hostname, "", lib_err, ip=get_client_ip(request))
except Exception as err: except Exception as err:
messages.error(request, err) messages.error(request, err)
addlogmsg(request.user.username, compute.hostname, "", err) addlogmsg(request.user.username, compute.hostname, "", err, ip=get_client_ip(request))
return render( return render(
request, request,
@ -242,3 +243,11 @@ def nwfilter(request, compute_id, nwfltr):
messages.error(request, error_msg) messages.error(request, error_msg)
return render(request, "nwfilter.html", locals()) return render(request, "nwfilter.html", locals())
def get_client_ip(request):
x_forwarded_for = request.META.get('HTTP_X_FORWARDED_FOR')
if x_forwarded_for:
ip = x_forwarded_for.split(',')[0]
else:
ip = request.META.get('REMOTE_ADDR')
return ip