mirror of
https://github.com/retspen/webvirtcloud
synced 2026-11-08 19:26:48 +00:00
feat(instances): the Access tab splits the VM's screen from root's login
The tab put the console, a remote viewer address and two root forms at one weight under "Access · Active · VNC", named buttons after their implementation (VDI, Get console.vv), and repeated why the root forms were disabled under each of them. Now it has two sections. Screen: Open console with what it does, and the remote viewer on a row of its own (address, Open, Download .vv file). Log in as root: one line says how a password or key reaches the guest now, written to the disk of a shut-off VM or sent through a running VM's guest agent, or what to do when neither works; the password and key rows follow with aligned labels. Ids, field names and posts are unchanged.
This commit is contained in:
parent
4565221c5c
commit
4997950e75
6 changed files with 185 additions and 173 deletions
|
|
@ -1,85 +1,85 @@
|
|||
{% load i18n %}
|
||||
{% load vm_states %}
|
||||
<div class="tab-pane" id="access" role="tabpanel" aria-label="{% trans "Instance access options" %}">
|
||||
{% vm_state instance.status as state %}
|
||||
{# two ways into a VM: its screen, and root's login, which reaches the guest on its disk or through its agent #}
|
||||
<div class="card">
|
||||
<div class="card-body">
|
||||
<p class="small text-body-secondary mb-2">{% trans "Access" %} · {{ state.0 }} · {{ instance.console_type|upper }}</p>
|
||||
{% if not can_open_console %}
|
||||
<p class="mb-0">{% trans "Only the owners of this instance and administrators can open its console." %}</p>
|
||||
{% elif instance.status == 1 or instance.status == 3 %}
|
||||
{# one window per VM: opening it again reloads it; a paused VM shows its last screen #}
|
||||
<div class="row g-2 align-items-center">
|
||||
<div class="col-12 col-md-auto">
|
||||
<button type="button" class="btn btn-primary w-100" id="console_button"
|
||||
data-url="{% url 'console' compute.id instance.uuid %}" data-window="console-{{ instance.uuid }}">{% trans "Console" %}</button>
|
||||
<section aria-labelledby="access-screen-heading">
|
||||
<h2 class="h6" id="access-screen-heading">{% trans "Screen" %}</h2>
|
||||
{% if not can_open_console %}
|
||||
<p class="mb-0">{% trans "Only the owners of this instance and administrators can open its console." %}</p>
|
||||
{% elif instance.status == 1 or instance.status == 3 %}
|
||||
{# one window per VM: opening it again reloads it; a paused VM shows its last screen #}
|
||||
<div class="d-flex flex-wrap align-items-center gap-2 gap-sm-3">
|
||||
<button type="button" class="btn btn-primary" id="console_button"
|
||||
data-url="{% url 'console' compute.id instance.uuid %}" data-window="console-{{ instance.uuid }}">{% trans "Open console" %}</button>
|
||||
<span class="small text-body-secondary">{% trans "Opens the VM's screen in a new window." %}</span>
|
||||
</div>
|
||||
{% if vdi_reachable %}
|
||||
<div class="col-12 col-md">
|
||||
<label for="vdi_url_input" class="visually-hidden">{% trans "Remote viewer address" %}</label>
|
||||
<input id="vdi_url_input" class="form-control" type="text" readonly>
|
||||
</div>
|
||||
<div class="col-12 col-md-auto d-flex flex-wrap gap-2">
|
||||
<a href="#" class="btn btn-secondary" id="vdi_url">{% trans "VDI" %}</a>
|
||||
<a href="{% url 'instances:getvvfile' instance.id %}" class="btn btn-secondary">{% trans "Get console.vv" %}</a>
|
||||
<div class="row g-2 align-items-center mt-2">
|
||||
<label for="vdi_url_input" class="col-12 col-sm-3 col-lg-2 col-form-label">{% trans "Remote viewer" %}</label>
|
||||
<div class="col-12 col-sm">
|
||||
<input id="vdi_url_input" class="form-control" type="text" readonly aria-describedby="vdi-help">
|
||||
</div>
|
||||
<div class="col-12 col-sm-auto d-flex gap-2">
|
||||
<a href="#" class="btn btn-outline-secondary" id="vdi_url">{% trans "Open" %}</a>
|
||||
<a href="{% url 'instances:getvvfile' instance.id %}" class="btn btn-outline-secondary">{% trans "Download .vv file" %}</a>
|
||||
</div>
|
||||
</div>
|
||||
<p class="small text-body-secondary mt-1 mb-0" id="vdi-help">{% trans "For virt-viewer or another VNC or SPICE client on your computer." %}</p>
|
||||
{% else %}
|
||||
<p class="small text-body-secondary mt-2 mb-0">{% trans "A remote viewer cannot reach this console: it listens on the host only, or it is a serial one." %}</p>
|
||||
{% endif %}
|
||||
</div>
|
||||
<p class="small text-body-secondary mt-2 mb-0">
|
||||
{% trans "Console opens a window here." %}
|
||||
{% if vdi_reachable %}{% trans "VDI opens your remote viewer; console.vv sets up virt-viewer." %}
|
||||
{% else %}{% trans "A remote viewer cannot reach this console: it listens on the host only, or it is a serial one." %}{% endif %}
|
||||
</p>
|
||||
{% else %}
|
||||
<p class="mb-0">{% trans "Start the VM to open its console." %}</p>
|
||||
{% endif %}
|
||||
{% if can_change and app_settings.SHOW_ACCESS_ROOT_PASSWORD == 'True' %}
|
||||
<form action="{% url 'instances:rootpasswd' instance.id %}" method="post" class="mt-3">{% csrf_token %}
|
||||
<div class="row g-2 align-items-center">
|
||||
<div class="col-12 col-lg-5">
|
||||
<label for="root-passwd" class="form-label mb-0">{% trans "Reset root password" %}</label>
|
||||
<p id="root-passwd-help" class="small text-body-secondary mb-0">
|
||||
{% if guest_access_ready %}{% trans "The guest's root user gets this password." %}
|
||||
{% elif instance.status == 1 %}{% trans "The guest agent is not connected: connect it, or shut the VM down." %}
|
||||
{% else %}{% trans "Shut the VM down, or run it with its guest agent." %}{% endif %}
|
||||
</p>
|
||||
</div>
|
||||
<div class="col-12 col-lg-7">
|
||||
<fieldset aria-describedby="root-passwd-help"{% if not guest_access_ready %} disabled{% endif %}>
|
||||
<div class="d-flex flex-column flex-sm-row gap-2">
|
||||
<input id="root-passwd" name="passwd" type="password" class="form-control" autocomplete="new-password" required>
|
||||
<button type="submit" name="rootpasswd" class="btn btn-secondary flex-shrink-0">{% trans "Reset Root Password" %}</button>
|
||||
</div>
|
||||
</fieldset>
|
||||
</div>
|
||||
</div>
|
||||
</form>
|
||||
{% endif %}
|
||||
{% if can_change and app_settings.SHOW_ACCESS_SSH_KEYS == 'True' %}
|
||||
<form action="{% url 'instances:add_public_key' instance.id %}" method="post" class="mt-3">{% csrf_token %}
|
||||
<div class="row g-2 align-items-center">
|
||||
<div class="col-12 col-lg-5">
|
||||
<label for="root-sshkey" class="form-label mb-0">{% trans "Add SSH key for root" %}</label>
|
||||
<p id="root-sshkey-help" class="small text-body-secondary mb-0">
|
||||
{% if not publickeys %}{% trans "You have no saved public key." %} <a href="{% url 'accounts:profile' %}">{% trans "Add one in your profile." %}</a>
|
||||
{% elif guest_access_ready %}{% trans "One of your public keys joins root's keys in the guest." %}
|
||||
{% elif instance.status == 1 %}{% trans "The guest agent is not connected: connect it, or shut the VM down." %}
|
||||
{% else %}{% trans "Shut the VM down, or run it with its guest agent." %}{% endif %}
|
||||
</p>
|
||||
</div>
|
||||
<div class="col-12 col-lg-7">
|
||||
<fieldset aria-describedby="root-sshkey-help"{% if not publickeys or not guest_access_ready %} disabled{% endif %}>
|
||||
<div class="d-flex flex-column flex-sm-row gap-2">
|
||||
<select id="root-sshkey" name="sshkeyid" class="form-select">
|
||||
{% for key in publickeys %}<option value="{{ key.id }}">{{ key.keyname }}</option>{% endfor %}
|
||||
</select>
|
||||
<button type="submit" name="addpublickey" class="btn btn-secondary flex-shrink-0">{% trans "Add Public Key" %}</button>
|
||||
</div>
|
||||
</fieldset>
|
||||
</div>
|
||||
</div>
|
||||
</form>
|
||||
{% endif %}
|
||||
{% else %}
|
||||
<p class="mb-0">{% trans "Start the VM to open its console." %}</p>
|
||||
{% endif %}
|
||||
</section>
|
||||
{% if can_change %}{% if app_settings.SHOW_ACCESS_ROOT_PASSWORD == 'True' or app_settings.SHOW_ACCESS_SSH_KEYS == 'True' %}
|
||||
<section class="border-top mt-4 pt-3" aria-labelledby="access-root-heading">
|
||||
<h2 class="h6" id="access-root-heading">{% trans "Log in as root" %}</h2>
|
||||
<p class="d-flex align-items-center gap-2 small mb-3" id="access-root-route">
|
||||
{% if instance.status == 5 %}
|
||||
<span class="power-dot bg-success" aria-hidden="true"></span>{% trans "Written to the VM's disk while it is off." %}
|
||||
{% elif guest_access_ready %}
|
||||
<span class="power-dot bg-success" aria-hidden="true"></span>{% trans "Sent to the running VM through its guest agent." %}
|
||||
{% elif instance.status == 1 %}
|
||||
<span class="power-dot" aria-hidden="true"></span><span class="text-body-secondary">{% trans "The guest agent is not connected: connect it, or shut the VM down." %}</span>
|
||||
{% else %}
|
||||
<span class="power-dot" aria-hidden="true"></span><span class="text-body-secondary">{% trans "Shut the VM down, or run it with its guest agent." %}</span>
|
||||
{% endif %}
|
||||
</p>
|
||||
{% if app_settings.SHOW_ACCESS_ROOT_PASSWORD == 'True' %}
|
||||
<form action="{% url 'instances:rootpasswd' instance.id %}" method="post">{% csrf_token %}
|
||||
<fieldset class="row g-2 align-items-center mb-2" aria-describedby="access-root-route"{% if not guest_access_ready %} disabled{% endif %}>
|
||||
<label for="root-passwd" class="col-12 col-sm-3 col-lg-2 col-form-label">{% trans "Password" %}</label>
|
||||
<div class="col-12 col-sm">
|
||||
<input id="root-passwd" name="passwd" type="password" class="form-control" autocomplete="new-password" required>
|
||||
</div>
|
||||
<div class="col-12 col-sm-auto">
|
||||
<button type="submit" name="rootpasswd" class="btn btn-outline-primary access-act">{% trans "Reset password" %}</button>
|
||||
</div>
|
||||
</fieldset>
|
||||
</form>
|
||||
{% endif %}
|
||||
{% if app_settings.SHOW_ACCESS_SSH_KEYS == 'True' %}
|
||||
<form action="{% url 'instances:add_public_key' instance.id %}" method="post">{% csrf_token %}
|
||||
<fieldset class="row g-2 align-items-center" aria-describedby="access-root-route"{% if not publickeys or not guest_access_ready %} disabled{% endif %}>
|
||||
<label for="root-sshkey" class="col-12 col-sm-3 col-lg-2 col-form-label">{% trans "SSH key" %}</label>
|
||||
<div class="col-12 col-sm">
|
||||
<select id="root-sshkey" name="sshkeyid" class="form-select">
|
||||
{% for key in publickeys %}<option value="{{ key.id }}">{{ key.keyname }}</option>{% endfor %}
|
||||
</select>
|
||||
</div>
|
||||
<div class="col-12 col-sm-auto">
|
||||
<button type="submit" name="addpublickey" class="btn btn-outline-primary access-act">{% trans "Add key" %}</button>
|
||||
</div>
|
||||
</fieldset>
|
||||
{% if not publickeys %}
|
||||
<p class="small text-body-secondary mt-1 mb-0">{% trans "You have no saved public key." %} <a href="{% url 'accounts:profile' %}">{% trans "Add one in your profile." %}</a></p>
|
||||
{% endif %}
|
||||
</form>
|
||||
{% endif %}
|
||||
</section>
|
||||
{% endif %}{% endif %}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
|
|
|||
Binary file not shown.
|
|
@ -11,7 +11,7 @@ msgid ""
|
|||
msgstr ""
|
||||
"Project-Id-Version: PACKAGE VERSION\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2026-11-03 16:37+0000\n"
|
||||
"POT-Creation-Date: 2026-11-03 17:31+0000\n"
|
||||
"PO-Revision-Date: 2020-11-04 12:00+0000\n"
|
||||
"Last-Translator: catborise <muhammetalisag@gmail.com>, 2020\n"
|
||||
"Language-Team: Turkish (https://www.transifex.com/catborise/teams/110663/tr/)\n"
|
||||
|
|
@ -361,6 +361,7 @@ msgstr "Kullanıcı adını girin"
|
|||
#: accounts/templates/accounts/otp_login.html:37
|
||||
#: accounts/templates/login.html:36 admin/templates/admin/user_form.html:106
|
||||
#: console/templates/console-vnc.html:82 instances/forms.py:28
|
||||
#: instances/templates/instances/access_tab.html:53
|
||||
msgid "Password"
|
||||
msgstr "Parola"
|
||||
|
||||
|
|
@ -1666,7 +1667,6 @@ msgstr "Klonlar"
|
|||
#: appsettings/views.py:45 console/templates/console-base.html:10
|
||||
#: console/templates/console-base.html:23
|
||||
#: instances/templates/instance_actions.html:11
|
||||
#: instances/templates/instances/access_tab.html:15
|
||||
#: instances/templates/instances/settings_tab.html:32
|
||||
#: instances/templates/instances/settings_tab.html:695
|
||||
msgid "Console"
|
||||
|
|
@ -3809,7 +3809,6 @@ msgid "Power"
|
|||
msgstr "Güç"
|
||||
|
||||
#: instances/templates/instance.html:83
|
||||
#: instances/templates/instances/access_tab.html:7
|
||||
msgid "Access"
|
||||
msgstr "Erişim"
|
||||
|
||||
|
|
@ -3895,37 +3894,46 @@ msgstr "Yeniden başlat"
|
|||
msgid "more owners"
|
||||
msgstr "sahip daha"
|
||||
|
||||
#: instances/templates/instances/access_tab.html:3
|
||||
#: instances/templates/instances/access_tab.html:2
|
||||
msgid "Instance access options"
|
||||
msgstr "Sanal makine erişim seçenekleri"
|
||||
|
||||
#: instances/templates/instances/access_tab.html:7
|
||||
msgid "Screen"
|
||||
msgstr "Ekran"
|
||||
|
||||
#: instances/templates/instances/access_tab.html:9
|
||||
msgid ""
|
||||
"Only the owners of this instance and administrators can open its console."
|
||||
msgstr ""
|
||||
"Bu sanal makinenin konsolunu yalnızca sahipleri ve yöneticiler açabilir."
|
||||
|
||||
#: instances/templates/instances/access_tab.html:14
|
||||
msgid "Open console"
|
||||
msgstr "Konsolu aç"
|
||||
|
||||
#: instances/templates/instances/access_tab.html:15
|
||||
msgid "Opens the VM's screen in a new window."
|
||||
msgstr "Sanal makinenin ekranını yeni bir pencerede açar."
|
||||
|
||||
#: instances/templates/instances/access_tab.html:19
|
||||
msgid "Remote viewer address"
|
||||
msgstr "Uzak görüntüleyici adresi"
|
||||
msgid "Remote viewer"
|
||||
msgstr "Uzak görüntüleyici"
|
||||
|
||||
#: instances/templates/instances/access_tab.html:23
|
||||
msgid "VDI"
|
||||
msgstr "VDI"
|
||||
#: instances/templates/instances/access_tab.html:24 networks/views.py:24
|
||||
msgid "Open"
|
||||
msgstr "Açık"
|
||||
|
||||
#: instances/templates/instances/access_tab.html:24
|
||||
msgid "Get console.vv"
|
||||
msgstr "console.vv dosyasını al"
|
||||
#: instances/templates/instances/access_tab.html:25
|
||||
msgid "Download .vv file"
|
||||
msgstr ".vv dosyasını indir"
|
||||
|
||||
#: instances/templates/instances/access_tab.html:29
|
||||
msgid "Console opens a window here."
|
||||
msgstr "Konsol burada bir pencere açar."
|
||||
#: instances/templates/instances/access_tab.html:28
|
||||
msgid "For virt-viewer or another VNC or SPICE client on your computer."
|
||||
msgstr ""
|
||||
"Bilgisayarınızdaki virt-viewer ya da başka bir VNC veya SPICE istemcisi için."
|
||||
|
||||
#: instances/templates/instances/access_tab.html:30
|
||||
msgid "VDI opens your remote viewer; console.vv sets up virt-viewer."
|
||||
msgstr "VDI uzak görüntüleyicinizi açar; console.vv virt-viewer'ı ayarlar."
|
||||
|
||||
#: instances/templates/instances/access_tab.html:31
|
||||
msgid ""
|
||||
"A remote viewer cannot reach this console: it listens on the host only, or it"
|
||||
" is a serial one."
|
||||
|
|
@ -3933,53 +3941,50 @@ msgstr ""
|
|||
"Uzak görüntüleyici bu konsola ulaşamaz: konsol yalnızca sunucuda dinliyor ya "
|
||||
"da seri konsol."
|
||||
|
||||
#: instances/templates/instances/access_tab.html:34
|
||||
#: instances/templates/instances/access_tab.html:33
|
||||
msgid "Start the VM to open its console."
|
||||
msgstr "Konsolunu açmak için sanal makineyi başlatın."
|
||||
|
||||
#: instances/templates/instances/access_tab.html:40 instances/views.py:1104
|
||||
msgid "Reset root password"
|
||||
msgstr "Root parolasını sıfırla"
|
||||
#: instances/templates/instances/access_tab.html:38
|
||||
msgid "Log in as root"
|
||||
msgstr "Root olarak oturum açma"
|
||||
|
||||
#: instances/templates/instances/access_tab.html:42
|
||||
msgid "The guest's root user gets this password."
|
||||
msgstr "Konuk sistemin root kullanıcısı bu parolayı alır."
|
||||
#: instances/templates/instances/access_tab.html:41
|
||||
msgid "Written to the VM's disk while it is off."
|
||||
msgstr "Sanal makine kapalıyken diskine yazılır."
|
||||
|
||||
#: instances/templates/instances/access_tab.html:43
|
||||
#: instances/templates/instances/access_tab.html:66
|
||||
msgid "Sent to the running VM through its guest agent."
|
||||
msgstr "Çalışan sanal makineye konuk ajanı üzerinden gönderilir."
|
||||
|
||||
#: instances/templates/instances/access_tab.html:45
|
||||
msgid "The guest agent is not connected: connect it, or shut the VM down."
|
||||
msgstr "Konuk ajanı bağlı değil: bağlayın ya da sanal makineyi kapatın."
|
||||
|
||||
#: instances/templates/instances/access_tab.html:44
|
||||
#: instances/templates/instances/access_tab.html:67
|
||||
#: instances/templates/instances/access_tab.html:47
|
||||
msgid "Shut the VM down, or run it with its guest agent."
|
||||
msgstr "Sanal makineyi kapatın ya da konuk ajanıyla çalıştırın."
|
||||
|
||||
#: instances/templates/instances/access_tab.html:51
|
||||
msgid "Reset Root Password"
|
||||
msgstr "Kök parola sıfırla"
|
||||
#: instances/templates/instances/access_tab.html:58
|
||||
msgid "Reset password"
|
||||
msgstr "Parolayı sıfırla"
|
||||
|
||||
#: instances/templates/instances/access_tab.html:62
|
||||
msgid "Add SSH key for root"
|
||||
msgstr "root için SSH anahtarı ekle"
|
||||
#: instances/templates/instances/access_tab.html:66
|
||||
msgid "SSH key"
|
||||
msgstr "SSH anahtarı"
|
||||
|
||||
#: instances/templates/instances/access_tab.html:64
|
||||
#: instances/templates/instances/access_tab.html:73
|
||||
msgid "Add key"
|
||||
msgstr "Anahtar ekle"
|
||||
|
||||
#: instances/templates/instances/access_tab.html:77
|
||||
msgid "You have no saved public key."
|
||||
msgstr "Kayıtlı açık anahtarınız yok."
|
||||
|
||||
#: instances/templates/instances/access_tab.html:64
|
||||
#: instances/templates/instances/access_tab.html:77
|
||||
msgid "Add one in your profile."
|
||||
msgstr "Profilinizden bir tane ekleyin."
|
||||
|
||||
#: instances/templates/instances/access_tab.html:65
|
||||
msgid "One of your public keys joins root's keys in the guest."
|
||||
msgstr ""
|
||||
"Açık anahtarlarınızdan biri konuk sistemdeki root anahtarlarına eklenir."
|
||||
|
||||
#: instances/templates/instances/access_tab.html:76
|
||||
msgid "Add Public Key"
|
||||
msgstr "Açık Anahtar Ekle"
|
||||
|
||||
#: instances/templates/instances/boot_device.html:9
|
||||
msgid "empty"
|
||||
msgstr "boş"
|
||||
|
|
@ -5960,6 +5965,10 @@ msgstr ""
|
|||
msgid "The change may still be made when the agent answers again."
|
||||
msgstr "Ajan yeniden yanıt verdiğinde değişiklik yine de yapılabilir."
|
||||
|
||||
#: instances/views.py:1104
|
||||
msgid "Reset root password"
|
||||
msgstr "Root parolasını sıfırla"
|
||||
|
||||
#: instances/views.py:1108
|
||||
msgid "Enter a password"
|
||||
msgstr "Bir parola girin"
|
||||
|
|
@ -7233,10 +7242,6 @@ msgstr ""
|
|||
"Sunucu alt ağı yönlendirir; üst yönlendiricinin ona geri dönen bir rotası "
|
||||
"olmalıdır."
|
||||
|
||||
#: networks/views.py:24
|
||||
msgid "Open"
|
||||
msgstr "Açık"
|
||||
|
||||
#: networks/views.py:24
|
||||
msgid "The host routes the subnet and adds no firewall rules for it."
|
||||
msgstr ""
|
||||
|
|
|
|||
Binary file not shown.
|
|
@ -7,7 +7,7 @@ msgid ""
|
|||
msgstr ""
|
||||
"Project-Id-Version: \n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2026-11-03 16:37+0000\n"
|
||||
"POT-Creation-Date: 2026-11-03 17:31+0000\n"
|
||||
"PO-Revision-Date: \n"
|
||||
"Last-Translator: \n"
|
||||
"Language-Team: \n"
|
||||
|
|
@ -358,6 +358,7 @@ msgstr "输入用户名"
|
|||
#: accounts/templates/accounts/otp_login.html:37
|
||||
#: accounts/templates/login.html:36 admin/templates/admin/user_form.html:106
|
||||
#: console/templates/console-vnc.html:82 instances/forms.py:28
|
||||
#: instances/templates/instances/access_tab.html:53
|
||||
msgid "Password"
|
||||
msgstr "密码"
|
||||
|
||||
|
|
@ -1612,7 +1613,6 @@ msgstr "克隆"
|
|||
#: appsettings/views.py:45 console/templates/console-base.html:10
|
||||
#: console/templates/console-base.html:23
|
||||
#: instances/templates/instance_actions.html:11
|
||||
#: instances/templates/instances/access_tab.html:15
|
||||
#: instances/templates/instances/settings_tab.html:32
|
||||
#: instances/templates/instances/settings_tab.html:695
|
||||
msgid "Console"
|
||||
|
|
@ -3673,7 +3673,6 @@ msgid "Power"
|
|||
msgstr "电源"
|
||||
|
||||
#: instances/templates/instance.html:83
|
||||
#: instances/templates/instances/access_tab.html:7
|
||||
msgid "Access"
|
||||
msgstr "访问"
|
||||
|
||||
|
|
@ -3755,87 +3754,93 @@ msgstr "电源重置"
|
|||
msgid "more owners"
|
||||
msgstr "更多所有者"
|
||||
|
||||
#: instances/templates/instances/access_tab.html:3
|
||||
#: instances/templates/instances/access_tab.html:2
|
||||
msgid "Instance access options"
|
||||
msgstr "虚拟机访问选项"
|
||||
|
||||
#: instances/templates/instances/access_tab.html:7
|
||||
msgid "Screen"
|
||||
msgstr "屏幕"
|
||||
|
||||
#: instances/templates/instances/access_tab.html:9
|
||||
msgid ""
|
||||
"Only the owners of this instance and administrators can open its console."
|
||||
msgstr "只有此虚拟机的所有者和管理员可以打开其控制台。"
|
||||
|
||||
#: instances/templates/instances/access_tab.html:14
|
||||
msgid "Open console"
|
||||
msgstr "打开控制台"
|
||||
|
||||
#: instances/templates/instances/access_tab.html:15
|
||||
msgid "Opens the VM's screen in a new window."
|
||||
msgstr "在新窗口中打开虚拟机的屏幕。"
|
||||
|
||||
#: instances/templates/instances/access_tab.html:19
|
||||
msgid "Remote viewer address"
|
||||
msgstr "远程查看器地址"
|
||||
msgid "Remote viewer"
|
||||
msgstr "远程查看器"
|
||||
|
||||
#: instances/templates/instances/access_tab.html:23
|
||||
msgid "VDI"
|
||||
msgstr "VDI"
|
||||
#: instances/templates/instances/access_tab.html:24 networks/views.py:24
|
||||
msgid "Open"
|
||||
msgstr "开放"
|
||||
|
||||
#: instances/templates/instances/access_tab.html:24
|
||||
msgid "Get console.vv"
|
||||
msgstr "获取 console.vv"
|
||||
#: instances/templates/instances/access_tab.html:25
|
||||
msgid "Download .vv file"
|
||||
msgstr "下载 .vv 文件"
|
||||
|
||||
#: instances/templates/instances/access_tab.html:29
|
||||
msgid "Console opens a window here."
|
||||
msgstr "控制台在此处打开一个窗口。"
|
||||
#: instances/templates/instances/access_tab.html:28
|
||||
msgid "For virt-viewer or another VNC or SPICE client on your computer."
|
||||
msgstr "用于您计算机上的 virt-viewer 或其他 VNC、SPICE 客户端。"
|
||||
|
||||
#: instances/templates/instances/access_tab.html:30
|
||||
msgid "VDI opens your remote viewer; console.vv sets up virt-viewer."
|
||||
msgstr "VDI 会打开你的远程查看器;console.vv 用于配置 virt-viewer。"
|
||||
|
||||
#: instances/templates/instances/access_tab.html:31
|
||||
msgid ""
|
||||
"A remote viewer cannot reach this console: it listens on the host only, or it"
|
||||
" is a serial one."
|
||||
msgstr "远程查看器无法连接此控制台:它只在主机上监听,或者是串口控制台。"
|
||||
|
||||
#: instances/templates/instances/access_tab.html:34
|
||||
#: instances/templates/instances/access_tab.html:33
|
||||
msgid "Start the VM to open its console."
|
||||
msgstr "启动虚拟机后才能打开其控制台。"
|
||||
|
||||
#: instances/templates/instances/access_tab.html:40 instances/views.py:1104
|
||||
msgid "Reset root password"
|
||||
msgstr "重置 root 密码"
|
||||
#: instances/templates/instances/access_tab.html:38
|
||||
msgid "Log in as root"
|
||||
msgstr "以 root 身份登录"
|
||||
|
||||
#: instances/templates/instances/access_tab.html:42
|
||||
msgid "The guest's root user gets this password."
|
||||
msgstr "客户机的 root 用户将使用此密码。"
|
||||
#: instances/templates/instances/access_tab.html:41
|
||||
msgid "Written to the VM's disk while it is off."
|
||||
msgstr "在虚拟机关机时写入其磁盘。"
|
||||
|
||||
#: instances/templates/instances/access_tab.html:43
|
||||
#: instances/templates/instances/access_tab.html:66
|
||||
msgid "Sent to the running VM through its guest agent."
|
||||
msgstr "通过客户机代理发送到正在运行的虚拟机。"
|
||||
|
||||
#: instances/templates/instances/access_tab.html:45
|
||||
msgid "The guest agent is not connected: connect it, or shut the VM down."
|
||||
msgstr "客户机代理未连接:请连接它,或将虚拟机关机。"
|
||||
|
||||
#: instances/templates/instances/access_tab.html:44
|
||||
#: instances/templates/instances/access_tab.html:67
|
||||
#: instances/templates/instances/access_tab.html:47
|
||||
msgid "Shut the VM down, or run it with its guest agent."
|
||||
msgstr "请将虚拟机关机,或在客户机代理运行时操作。"
|
||||
|
||||
#: instances/templates/instances/access_tab.html:51
|
||||
msgid "Reset Root Password"
|
||||
msgstr "重置 root 密码"
|
||||
#: instances/templates/instances/access_tab.html:58
|
||||
msgid "Reset password"
|
||||
msgstr "重置密码"
|
||||
|
||||
#: instances/templates/instances/access_tab.html:62
|
||||
msgid "Add SSH key for root"
|
||||
msgstr "为 root 添加 SSH 密钥"
|
||||
#: instances/templates/instances/access_tab.html:66
|
||||
msgid "SSH key"
|
||||
msgstr "SSH 密钥"
|
||||
|
||||
#: instances/templates/instances/access_tab.html:64
|
||||
#: instances/templates/instances/access_tab.html:73
|
||||
msgid "Add key"
|
||||
msgstr "添加密钥"
|
||||
|
||||
#: instances/templates/instances/access_tab.html:77
|
||||
msgid "You have no saved public key."
|
||||
msgstr "你没有已保存的公钥。"
|
||||
|
||||
#: instances/templates/instances/access_tab.html:64
|
||||
#: instances/templates/instances/access_tab.html:77
|
||||
msgid "Add one in your profile."
|
||||
msgstr "请在个人资料中添加。"
|
||||
|
||||
#: instances/templates/instances/access_tab.html:65
|
||||
msgid "One of your public keys joins root's keys in the guest."
|
||||
msgstr "你的一个公钥会加入客户机中 root 的密钥。"
|
||||
|
||||
#: instances/templates/instances/access_tab.html:76
|
||||
msgid "Add Public Key"
|
||||
msgstr "添加公钥"
|
||||
|
||||
#: instances/templates/instances/boot_device.html:9
|
||||
msgid "empty"
|
||||
msgstr "空"
|
||||
|
|
@ -5655,6 +5660,10 @@ msgstr "请关闭虚拟机,或启动其 QEMU 客户机代理,然后重试"
|
|||
msgid "The change may still be made when the agent answers again."
|
||||
msgstr "当代理再次响应时,此更改仍可能生效。"
|
||||
|
||||
#: instances/views.py:1104
|
||||
msgid "Reset root password"
|
||||
msgstr "重置 root 密码"
|
||||
|
||||
#: instances/views.py:1108
|
||||
msgid "Enter a password"
|
||||
msgstr "请输入密码"
|
||||
|
|
@ -6858,10 +6867,6 @@ msgid ""
|
|||
"The host routes the subnet; the upstream router needs a route back to it."
|
||||
msgstr "主机路由该子网;上游路由器需配置指向该子网的回程路由。"
|
||||
|
||||
#: networks/views.py:24
|
||||
msgid "Open"
|
||||
msgstr "开放"
|
||||
|
||||
#: networks/views.py:24
|
||||
msgid "The host routes the subnet and adds no firewall rules for it."
|
||||
msgstr "主机路由该子网,且不为其添加防火墙规则。"
|
||||
|
|
|
|||
|
|
@ -129,6 +129,8 @@ th[aria-sort="ascending"]:not([data-sort-method="none"])::after {
|
|||
border: 2px solid var(--bs-border-color);
|
||||
}
|
||||
.power-dot.bg-success, .power-dot.bg-warning, .power-dot.bg-secondary { border-color: transparent; }
|
||||
/* the access tab's two login buttons line up */
|
||||
.access-act { min-width: 9rem; }
|
||||
|
||||
/* the boot order: the devices the VM tries in turn, numbered and joined by a line */
|
||||
.boot-chain { counter-reset: boot; }
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue