This commit is contained in:
mofeng-git 2025-02-01 12:19:02 +00:00
parent 06a64725be
commit c711683c63
18 changed files with 109 additions and 1416 deletions

View File

@ -53,16 +53,19 @@ if [ ! -f /etc/kvmd/.init_flag ]; then
touch /etc/kvmd/.docker_flag && \
sed -i 's/localhost.localdomain/docker/g' /etc/kvmd/meta.yaml && \
sed -i 's/localhost/localhost:4430/g' /etc/kvmd/kvm_input.sh; then
log_info "基础配置完成"
log_info "移动配置文件完成"
else
log_error "基础配置失败"
log_error "移动配置文件失败"
exit 1
fi
# SSL证书配置
if ! /usr/share/kvmd/kvmd-gencert --do-the-thing && \
! /usr/share/kvmd/kvmd-gencert --do-the-thing --vnc; then
log_error "SSL 证书生成失败"
if ! /usr/share/kvmd/kvmd-gencert --do-the-thing; then
log_error "Nginx SSL 证书生成失败"
exit 1
fi
if ! /usr/share/kvmd/kvmd-gencert --do-the-thing --vnc; then
log_error "VNC SSL 证书生成失败"
exit 1
fi
@ -185,6 +188,17 @@ EOF
fi
fi
# 设置默认视频模式为 mjpeg
if ! grep -q "mjpeg_default:" /etc/kvmd/override.yaml; then
cat >> /etc/kvmd/override.yaml << EOF
streamer:
mjpeg_default: true # 首次访问默认使用 MJPEG 模式
h264_bitrate: 5000 # 默认码率 5000 Kbps
EOF
log_info "已设置首次访问默认使用 MJPEG 模式"
fi
if [ ! -z "$VIDEOFORMAT" ]; then
if sed -i "s/format=mjpeg/format=$VIDFORMAT/g" /etc/kvmd/override.yaml; then
log_info "视频输入格式已设置为 $VIDFORMAT"
@ -216,5 +230,5 @@ if [ "$OTG" == "1" ]; then
fi
fi
log_info "One-KVM 启动完成,正在启动服务..."
log_info "One-KVM 配置文件准备完成,正在启动服务..."
exec supervisord -c /etc/kvmd/supervisord.conf

View File

@ -4,6 +4,7 @@
# KVMD - The main PiKVM daemon. #
# #
# Copyright (C) 2018-2024 Maxim Devaev <mdevaev@gmail.com> #
# Copyright (C) 2023-2025 SilentWind <mofeng654321@hotmail.com> #
# #
# This program is free software: you can redistribute it and/or modify #
# it under the terms of the GNU General Public License as published by #
@ -55,7 +56,7 @@ cd "$path"
# - https://msol.io/blog/tech/create-a-self-signed-ecc-certificate
openssl ecparam -out server.key -name prime256v1 -genkey
openssl req -new -x509 -sha256 -nodes -key server.key -out server.crt -days 3650 \
-subj "/C=US/O=PiKVM/OU=PiKVM/CN=localhost"
-subj "/C=CN/O=One-KVM/OU=One-KVM/CN=localhost"
#chown "root:kvmd-$target" "$path"/*
chmod 440 "$path/server.key"

View File

@ -5,6 +5,7 @@
# KVMD - The main PiKVM daemon. #
# #
# Copyright (C) 2018-2024 Maxim Devaev <mdevaev@gmail.com> #
# Copyright (C) 2023-2025 SilentWind <mofeng654321@hotmail.com> #
# #
# This program is free software: you can redistribute it and/or modify #
# it under the terms of the GNU General Public License as published by #
@ -86,7 +87,7 @@
</p>
</div>
<hr>
<p class="text credits"><a target="_blank" href="https://pikvm.org" i18n="index_text_10">PiKVM Project</a>&nbsp; | &nbsp;<a target="_blank" href="https://docs.pikvm.org" i18n="index_text_11">PiKVM Documentation</a>&nbsp; | &nbsp;<a target="_blank" href="https://github.com/mofeng-git/One-KVM" i18n="index_text_12">One-KVM Project</a>&nbsp; | &nbsp;<a target="_blank" href="https://one-kvm.mofeng.run" i18n="index_text_13">One-KVM Documentation</a></p>
<p class="text credits"><a target="_blank" href="https://github.com/mofeng-git/One-KVM" i18n="index_text_12">One-KVM Project</a>&nbsp; | &nbsp;<a target="_blank" href="https://one-kvm.mofeng.run" i18n="index_text_13">One-KVM Documentation</a></p>
</div>
</div>
</body>

View File

@ -39,10 +39,6 @@ block start
hr
p(class="text credits")
a(target="_blank" href="https://pikvm.org" i18n="index_text_10") PiKVM Project
| &nbsp; | &nbsp;
a(target="_blank" href="https://docs.pikvm.org" i18n="index_text_11") PiKVM Documentation
| &nbsp; | &nbsp;
a(target="_blank" href="https://github.com/mofeng-git/One-KVM" i18n="index_text_12") One-KVM Project
| &nbsp; | &nbsp;
a(target="_blank" href="https://one-kvm.mofeng.run" i18n="index_text_13") One-KVM Documentation

View File

@ -5,6 +5,7 @@
# KVMD - The main PiKVM daemon. #
# #
# Copyright (C) 2018-2024 Maxim Devaev <mdevaev@gmail.com> #
# Copyright (C) 2023-2025 SilentWind <mofeng654321@hotmail.com> #
# #
# This program is free software: you can redistribute it and/or modify #
# it under the terms of the GNU General Public License as published by #

View File

@ -5,6 +5,7 @@
# KVMD - The main PiKVM daemon. #
# #
# Copyright (C) 2018-2024 Maxim Devaev <mdevaev@gmail.com> #
# Copyright (C) 2023-2025 SilentWind <mofeng654321@hotmail.com> #
# #
# This program is free software: you can redistribute it and/or modify #
# it under the terms of the GNU General Public License as published by #
@ -166,7 +167,7 @@
<div class="text">
<table>
<tr>
<td rowspan="2"><img class="sign stream-message-no-webrtc" src="/share/svg/warning.svg"></td>
<td rowspan="2"><img class="sign " src="/share/svg/warning.svg"></td>
<td style="line-height:1.5"><b>WebRTC is not supported by this browser</b></td>
</tr>
</table>
@ -234,17 +235,12 @@
<td i18n="kvm_text14">Video <a target="_blank" href="https://docs.pikvm.org/webrtc">mode</a>:</td>
<td>
<div class="radio-box">
<input checked type="radio" id="stream-mode-radio-mjpeg" name="stream-mode-radio" value="mjpeg">
<label for="stream-mode-radio-mjpeg">Legacy<br>MJPEG</label>
<input type="radio" id="stream-mode-radio-media" name="stream-mode-radio" value="media">
<label for="stream-mode-radio-media">Direct<br>H.264</label>
<input type="radio" id="stream-mode-radio-janus" name="stream-mode-radio" value="janus">
<label for="stream-mode-radio-janus">WebRTC</label>
<input type="radio" id="stream-mode-radio-media" name="stream-mode-radio" value="media">
<label for="stream-mode-radio-media">H.264</label>
<input checked type="radio" id="stream-mode-radio-mjpeg" name="stream-mode-radio" value="mjpeg">
<label for="stream-mode-radio-mjpeg">MJPEG</label>
<label for="stream-mode-radio-janus">WebRTC</label>
<input type="radio" id="stream-mode-radio-media" name="stream-mode-radio" value="media">
<label for="stream-mode-radio-media">H.264</label>
<input checked type="radio" id="stream-mode-radio-mjpeg" name="stream-mode-radio" value="mjpeg">
<label for="stream-mode-radio-mjpeg">MJPEG</label>
<label for="stream-mode-radio-janus">WebRTC<br>H.264 </label>
</div>
</td>
</tr>
@ -264,7 +260,7 @@
</td>
</tr>
<tr class="feature-disabled" id="stream-audio">
<td i18n="kvm_text19">Audio volume:</td>
<td>Audio volume:</td>
<td class="value-slider">
<input class="slider" type="range" id="stream-audio-volume-slider">
</td>
@ -279,15 +275,6 @@
</div>
</td>
</tr>
<tr class="feature-disabled" id="stream-mic">
<td>Microphone:</td>
<td align="right">
<div class="switch-box">
<input disabled type="checkbox" id="stream-mic-switch">
<label for="stream-mic-switch"><span class="switch-inner"></span><span class="switch"></span></label>
</div>
</td>
</tr>
</table>
<hr>
<div class="buttons buttons-row">
@ -433,16 +420,7 @@
</details>
<table class="kv">
<tr>
<td>Bad link mode (release keys immediately):</td>
<td align="right">
<div class="switch-box">
<input type="checkbox" id="hid-keyboard-bad-link-switch">
<label for="hid-keyboard-bad-link-switch"><span class="switch-inner"></span><span class="switch"></span></label>
</div>
</td>
</tr>
<tr>
<td>Bad link mode (release keys immediately):</td>
<td i18n="hid-keyboard-bad-link-switch">Bad link mode (release keys immediately):</td>
<td align="right">
<div class="switch-box">
<input type="checkbox" id="hid-keyboard-bad-link-switch">
@ -556,7 +534,6 @@
</div>
<hr>
</div>
<div class="hidden" id="msd-message-too-big-for-dvd">
<div class="hidden" id="msd-message-too-big-for-dvd">
<div class="text">
<table>
@ -566,7 +543,6 @@
</tr>
<tr>
<td><sup style="line-height:1">The maximum is 31.6GiB. Please switch to the Flash mode.</sup></td>
<td><sup style="line-height:1">The maximum is 31.6GiB. Please switch to the Flash mode.</sup></td>
</tr>
</table>
</div>
@ -637,7 +613,6 @@
<div class="radio-box">
<input checked type="radio" id="msd-mode-radio-cdrom" name="msd-mode-radio" value="1">
<label for="msd-mode-radio-cdrom">CD/DVD</label>
<label for="msd-mode-radio-cdrom">CD/DVD</label>
<input type="radio" id="msd-mode-radio-flash" name="msd-mode-radio" value="0">
<label for="msd-mode-radio-flash">Flash</label>
</div>
@ -811,11 +786,27 @@
</table>
<table class="kv">
<tr>
<td i18n="hid-pak-slow-switch">Slow typing:</td>
<td>Slow typing:</td>
<td align="right">
<div class="switch-box">
<input type="checkbox" id="hid-pak-slow-switch">
<label for="hid-pak-slow-switch"><span class="switch-inner"></span><span class="switch"></span></label>
</div>
</td>
</tr>
<tr>
<td>Hide input text:</td>
<td align="right">
<div class="switch-box">
<input type="checkbox" id="hid-pak-secure-switch">
<label for="hid-pak-secure-switch"><span class="switch-inner"></span><span class="switch"></span></label>
</div>
</td>
</tr>
<tr>
<td i18n="hid-pak-slow-switch">Slow typing:</td>
<td align="right">
<div class="switch-box">
<input type="checkbox" id="hid-pak-slow-switch">
<label for="hid-pak-slow-switch"><span class="switch-inner"></span><span class="switch"></span></label>
</div>
@ -877,7 +868,6 @@
<hr>
<div class="buttons">
<div class="buttons-row">
<button class="row50" data-force-hide-menu data-shortcut="CapsLock">&bull; Caps Lock &nbsp;<img class="inline-lamp-small hid-keyboard-caps-led led-gray" src="/share/svg/led-square.svg"></button>
<button class="row50" data-force-hide-menu data-shortcut="CapsLock">&bull; Caps Lock &nbsp;<img class="inline-lamp-small hid-keyboard-caps-led led-gray" src="/share/svg/led-square.svg"></button>
<button class="row50" data-force-hide-menu data-shortcut="MetaLeft">&bull; Left Win</button>
</div>
@ -997,50 +987,6 @@
<table class="kv" id="switch-chain"></table>
</div>
</li>
<li class="right feature-disabled" id="switch-dropdown"><a class="menu-button" id="switch-menu-button" href="#"><img class="led-gray" id="switch-atx-power-led" src="/share/svg/led-atx-power.svg"><img class="led-gray" id="switch-atx-hdd-led" src="/share/svg/led-atx-hdd.svg"><span>Switch <i><sub id="switch-active-port"></sub></i></span></a>
<div class="menu" id="switch-menu">
<table style="border-spacing: 0px;">
<tr>
<td>
<div class="text"><b><a target="_blank" href="https://docs.pikvm.org/switch">PiKVM Switch</a> is attached<br></b><sub>Select a port or perform any available action like ATX click</sub></div>
</td>
<td>
<div class="text">
<button class="small" data-force-hide-menu data-show-window="switch-window">&bull; Settings</button>
</div>
</td>
</tr>
</table>
<hr>
<div class="hidden" id="switch-message-update">
<div class="text">
<table>
<tr>
<td rowspan="2"><img class="sign " src="/share/svg/info.svg"></td>
<td style="line-height:1.5"><b>Good news! Your switch is ready to get the firmware update</b></td>
</tr>
<tr>
<td><sup style="line-height:1">Please <a target="_blank" href="https://docs.pikvm.org/switch/#firmware-updating">follow the instructions</a> when you decide to install it.</sup></td>
</tr>
</table>
</div>
<hr>
</div>
<table class="kv">
<tr>
<td>Ask ATX click confirmation:</td>
<td align="right">
<div class="switch-box">
<input checked type="checkbox" id="switch-atx-ask-switch">
<label for="switch-atx-ask-switch"><span class="switch-inner"></span><span class="switch"></span></label>
</div>
</td>
</tr>
</table>
<hr>
<table class="kv" id="switch-chain"></table>
</div>
</li>
</ul>
<div class="window" id="stream-ocr-window">
<div class="hidden" id="stream-ocr-selection"></div>
@ -1059,7 +1005,6 @@
<div class="stream-box-offline" id="stream-box"><img id="stream-image" src="/share/png/blank-stream.png">
<video class="hidden" id="stream-video" disablePictureInPicture="true" autoplay playsinline muted></video>
<canvas class="hidden" id="stream-canvas"></canvas>
<canvas class="hidden" id="stream-canvas"></canvas>
<div id="stream-fullscreen-active"></div>
</div>
<div class="keypad" id="stream-mouse-buttons" align="center">
@ -2395,650 +2340,10 @@
// If you also want to support this project,<br>
// you can donate on <a target="_blank" href="https://www.patreon.com/pikvm">Patreon</a>
or <a target="_blank" href="https://paypal.me/pikvm">Paypal</a>.</span>
<ul>
<li>A. Isenring</li>
<li>Aaron Graubert</li>
<li>Aaron Heise</li>
<li>Aaron Stein</li>
<li>Accalia</li>
<li>Adam Goodbar</li>
<li>Adam S</li>
<li>Adam Stuart</li>
<li>AdamBomb</li>
<li>adipisicing</li>
<li>Adrian Basham</li>
<li>Adrian Popescu</li>
<li>Ahmed Syed</li>
<li>Alberto Bassi</li>
<li>alejandro</li>
<li>Aleksei Brusianskii</li>
<li>Alessio Curri</li>
<li>Alex T</li>
<li>Alex Z</li>
<li>Alexander Karmanov</li>
<li>Alexander Lahuerta</li>
<li>Alexander Martin</li>
<li>Alexander Pankov</li>
<li>Alexandre Jablonski</li>
<li>Alexey Kamenskiy</li>
<li>alm0241</li>
<li>Alok Anand</li>
<li>Alucard</li>
<li>Ananthaneshan Elampoornan</li>
<li>Andreas Grundler</li>
<li>Andreas Marufke</li>
<li>Andreas Schmid</li>
<li>Andrew Brant</li>
<li>Andrew Melton</li>
<li>Andrew Reusch</li>
<li>Andrew Ruan</li>
<li>Andrzej V</li>
<li>Andy</li>
<li>Andy Keys</li>
<li>Anish Patel</li>
<li>Anix</li>
<li>Anonymous</li>
<li>Anthony Junk</li>
<li>Anton Kovalenko</li>
<li>Armen</li>
<li>Aron Green</li>
<li>Aron Perelman</li>
<li>Artem Simonov</li>
<li>Arthur Mayer</li>
<li>Arthur Woimbée</li>
<li>Ashlesh Chaudhari</li>
<li>Asim Shakour</li>
<li>Augusto Becciu</li>
<li>AVS Computer</li>
<li>awkspace</li>
<li>Badal Patel</li>
<li>baddog</li>
<li>Bao Tin Hoang</li>
<li>Bean Co.</li>
<li>Bela Bargel</li>
<li>Belf Igor</li>
<li>Ben Gordon</li>
<li>Ben Scott</li>
<li>Benedikt Heine</li>
<li>Benedikt Meier</li>
<li>Benjamin Frewert</li>
<li>Benjamin Melancon</li>
<li>Benjamin Schwartz</li>
<li>Benjamin Stegmann</li>
<li>Benni Stauder</li>
<li>Bernhard Fitzke</li>
<li>Beu</li>
<li>bikmaek</li>
<li>bitjoe</li>
<li>Bits and Bytes Computers LLC</li>
<li>Bjoern Petsch</li>
<li>Blair Hasler</li>
<li>Blindside</li>
<li>Blue Frog LLC</li>
<li>Bootstrapper - Programmierung erklärt</li>
<li>Bosco</li>
<li>Bradford King</li>
<li>Brainspore Networks</li>
<li>Branden Shaulis</li>
<li>Brandon Daniels</li>
<li>Brian</li>
<li>Brian Moses</li>
<li>Brian T Mulcahy</li>
<li>Brian Vecchiarelli</li>
<li>Brian White</li>
<li>brodonalds</li>
<li>Bruno Gomes</li>
<li>Bryan Adams</li>
<li>Bryan Montgomery</li>
<li>Buzzer</li>
<li>C P ELSE</li>
<li>Calanish</li>
<li>Cameron Hatcher</li>
<li>Cameron Tacklind</li>
<li>Carl Mercier</li>
<li>Carl-Fredrik Johansson</li>
<li>Carlos Eduardo Porter Herrera</li>
<li>Carlos Garcia</li>
<li>Carlos Manuel Torres</li>
<li>cbad536</li>
<li>César Nascimento</li>
<li>CHINATERA LIMITED</li>
<li>Chris Blackmon</li>
<li>Chris Burton</li>
<li>Chris Campbell</li>
<li>Chris Jackson</li>
<li>Chris Lewis</li>
<li>Chris Rizio</li>
<li>Christi King</li>
<li>Christian Schlögl</li>
<li>Christian Svensson</li>
<li>Christof Maluck</li>
<li>Christoph Dette</li>
<li>Christoffer Lund</li>
<li>Christopher Bulla</li>
<li>Christopher Gelatt</li>
<li>Christopher Hearn</li>
<li>Christopher Mandlbaur</li>
<li>Christopher Mendoza</li>
<li>Christopher Simms</li>
<li>Chucktastic</li>
<li>Cihan VURAL</li>
<li>clauskj3r</li>
<li>Clifford Coleman</li>
<li>Clinton Lee Taylor</li>
<li>Cole Imhoff</li>
<li>Colin Goodman</li>
<li>Corey Layton</li>
<li>Corey Lista</li>
<li>Craig Keenan</li>
<li>Crossfactor</li>
<li>Cruzzer</li>
<li>ctag</li>
<li>Curt Sammer</li>
<li>CyB0rgg</li>
<li>DeMentor</li>
<li>Desmond Whitt</li>
<li>Daegara</li>
<li>DailyAneurism</li>
<li>Damon Meledones</li>
<li>Dan Berkowitz</li>
<li>Dan Brakeley</li>
<li>Daniel Bowder</li>
<li>Daniel Cabrera</li>
<li>Daniel Davila</li>
<li>Danilo Saft</li>
<li>Danne</li>
<li>Dariusz Techmański</li>
<li>David</li>
<li>David Brausewetter</li>
<li>David Davis</li>
<li>David Godibadze</li>
<li>David Howell</li>
<li>David Irvine</li>
<li>David Klinkman</li>
<li>David Niemann</li>
<li>David Shay</li>
<li>David Ye</li>
<li>David York</li>
<li>Denis</li>
<li>Denis Andreev</li>
<li>Denis Yatsenko</li>
<li>Dennis Becker</li>
<li>Dennis Joslin</li>
<li>Dennis Lomet</li>
<li>Derek Jarvis</li>
<li>Derek Yap</li>
<li>Didrik</li>
<li>digitalbaconbits</li>
<li>Dimitrij Jedich</li>
<li>dixon wong</li>
<li>dizztrukshin</li>
<li>Dmitry Shilov</li>
<li>DogeLabs</li>
<li>Dominic Phoon</li>
<li>Dominik Klonowski</li>
<li>Donald Hays</li>
<li>Edmon Abdul Nur</li>
<li>Edward Wang</li>
<li>Egan Ford</li>
<li>Elani Ferri</li>
<li>Elliot Woo</li>
<li>Entt</li>
<li>Eric Phenix</li>
<li>Ethan Shold</li>
<li>Eugene Sukhodolin</li>
<li>ewook</li>
<li>eye-catcher.com</li>
<li>Fabian Druschke</li>
<li>Fabiano Sidler</li>
<li>Far Pin Solutions, LLC</li>
<li>Felyx Gabryel</li>
<li>Fergus McKay</li>
<li>Finn Ebenritter</li>
<li>floppy</li>
<li>fo0bar</li>
<li>Foad Yousef</li>
<li>Foamy</li>
<li>Foli Ayivoh</li>
<li>Folkert Weistra</li>
<li>Francisco Pavon</li>
<li>Frank</li>
<li>Frank Sander</li>
<li>Frederick Czajka</li>
<li>Fredrik Idréus</li>
<li>Garrett Dangerfield</li>
<li>Ge Men</li>
<li>Geekworm</li>
<li>Genkinger Andreas</li>
<li>Geijer</li>
<li>Geoffrey Wright</li>
<li>George Becker</li>
<li>Georgy Brodsky</li>
<li>Gerald</li>
<li>Gerardus Vernimmen</li>
<li>Gernot Neuschröer</li>
<li>Giovanni Fulco</li>
<li>GK</li>
<li>Glen Dragon</li>
<li>Greg Winterstein</li>
<li>Gregory Smith</li>
<li>Gregory Treantos</li>
<li>grewil</li>
<li>Grey Cynic</li>
<li>Guenter Honisch</li>
<li>Guido Bernacchi</li>
<li>Gustin Johnson</li>
<li>György Tamás Vizi</li>
<li>Haiberg GmbH</li>
<li>Haven Zheng</li>
<li>Heibunny</li>
<li>Heikki Tiittanen</li>
<li>Helio Leonardo Pinheiro e Mota</li>
<li>Henrik Ählström</li>
<li>Henry Hood</li>
<li>HimKo</li>
<li>HouseFPV</li>
<li>Howard Simons</li>
<li>HyunohRyu</li>
<li>Icculus</li>
<li>iks</li>
<li>INFO TRX INC</li>
<li>Invader Monks</li>
<li>Ioannis Karageorgos</li>
<li>Isaac</li>
<li>IT Lifesaver</li>
<li>Ivan Ganev</li>
<li>Ivan Josiah Lapis</li>
<li>Ivan Shapovalov</li>
<li>iwbjhbweriuhf</li>
<li>J</li>
<li>J L</li>
<li>Jaanus</li>
<li>Jackson Wyatt</li>
<li>Jacob Karaffa</li>
<li>Jacob Morgan</li>
<li>James Cadd</li>
<li>James Cobb</li>
<li>James Edwards</li>
<li>James Kocher</li>
<li>James Mayhugh</li>
<li>James Noonan</li>
<li>James Ye</li>
<li>Jamie Murphy</li>
<li>Jamie Scott</li>
<li>Jan Niehusmann</li>
<li>Jannick Oursin</li>
<li>Jari Hiltunen</li>
<li>Jason Crossley</li>
<li>Jason Downey</li>
<li>Jason Toland</li>
<li>Jasper Backer</li>
<li>Jay Davis</li>
<li>Jay Isaacs</li>
<li>Jazereel Goh</li>
<li>Jean-Daniel Croteau</li>
<li>Jean-Philippe Guilbault</li>
<li>Jeff</li>
<li>Jeff Bowman</li>
<li>Jeff Urlwin</li>
<li>Jennifer Herting</li>
<li>Jennifer Rowlett</li>
<li>Jeremy Abel</li>
<li>Jeremy Combs</li>
<li>Jeremy Hines</li>
<li>Jerremy Holland</li>
<li>Jerry Nall</li>
<li>Jerry Y. Chen</li>
<li>Jim Bailey</li>
<li>Jim Harbin</li>
<li>Jimmy Burgett</li>
<li>Jimmy Stanley</li>
<li>Joachim Bruening</li>
<li>Joe Hanson</li>
<li>Joe Hinteregger</li>
<li>Joe Ventura</li>
<li>Joel Jacobs</li>
<li>Johannes Heigermose</li>
<li>John Andersen</li>
<li>John Copeland</li>
<li>John F Glenn</li>
<li>John Holmes</li>
<li>John Kelley</li>
<li>John McGovern</li>
<li>Johnny Henson</li>
<li>Jon Ferguy</li>
<li>Jon-Eric</li>
<li>Joni Ruuskanen</li>
<li>Jonas Fischer</li>
<li>Jonathan Slenders</li>
<li>Jonathan Vaughn</li>
<li>Joost Backer</li>
<li>Jordan Blake</li>
<li>Jordi Pakey-Rodriguez</li>
<li>Joris van Embden</li>
<li>Joseph Swift</li>
<li>Josh Nethery</li>
<li>Josh Ricker</li>
<li>Josh VanDeraa</li>
<li>Joshua Futterer</li>
<li>Jozef Riha</li>
<li>Jörgen Fredriksson</li>
<li>Julian Forero</li>
<li>Julian Schneider</li>
<li>Julien Angelier</li>
<li>Justin</li>
<li>Justin Waters</li>
<li>Kai Hadler</li>
<li>Kamil Chyba</li>
<li>Kari Matti Korpi</li>
<li>Karl Dunne</li>
<li>Karl Moos</li>
<li>Keith Muggleton</li>
<li>Ken Lee</li>
<li>Kenneth Younger III</li>
<li>Kenny Hui</li>
<li>KeonWoo PARK</li>
<li>Kevin Bajohr</li>
<li>Kevin Schwartz</li>
<li>Kevin Sherwood</li>
<li>Kiera Kujisawa</li>
<li>Kiran Schuler</li>
<li>Koloman</li>
<li>Konrad Neitzel</li>
<li>Krzysztof Żelaśkiewicz</li>
<li>Lance Ward</li>
<li>Larry Meaney</li>
<li>Lars</li>
<li>Lars Reinhardt</li>
<li>Lee Wilkinson</li>
<li>LeeNX</li>
<li>Leon Siegl</li>
<li>Leonard Feineis</li>
<li>Lewis Wild</li>
<li>Liran</li>
<li>Liviu Dimitriu</li>
<li>Lizardo Hernandez</li>
<li>LoCascio</li>
<li>Lordbob75</li>
<li>Lothar Schweikle-Droll</li>
<li>Louis Müller</li>
<li>LSDTripp</li>
<li>Ľubor Slušný</li>
<li>Luca Di Diomede</li>
<li>Lucio De Carli</li>
<li>Luiz Bizzio</li>
<li>Lukas Bischof</li>
<li>Lukas Kammerer</li>
<li>Lukas Söder</li>
<li>Maksim Terehin</li>
<li>Malcolm Cameron</li>
<li>Manfred Radeschnig</li>
<li>Marc Khouri</li>
<li>Marcin Wilk</li>
<li>Marcio Zimbres</li>
<li>Marco Rossi</li>
<li>Marcos Wolf</li>
<li>Marek Marczykowski-Górecki</li>
<li>Marius</li>
<li>Mar. Balske</li>
<li>Mark Farrell</li>
<li>Mark Gilbert</li>
<li>Mark Knam</li>
<li>Mark Robinson</li>
<li>Markrosoft</li>
<li>Markus Halm</li>
<li>Markus Schicker</li>
<li>Markus Sobczack</li>
<li>Marshall Bjerke</li>
<li>Marten Hermans</li>
<li>Martin Gasser</li>
<li>Martin Hofbauer</li>
<li>Martin Raine</li>
<li>Martin Suelmann</li>
<li>Martin Wilhelmi</li>
<li>Marvin Honderboom</li>
<li>Mateusz Grabowski</li>
<li>Mathias Uhl</li>
<li>Matt Kane</li>
<li>Matthew Cameron</li>
<li>Mauricio Allende</li>
<li>Max Evans</li>
<li>Mecky</li>
<li>Mehmet Aydoğdu</li>
<li>Michael Bartholomew</li>
<li>Michael Bell</li>
<li>Michael Bombe</li>
<li>Michael Collins</li>
<li>Michael Copeland</li>
<li>Michael Ho</li>
<li>Michael Kovacs</li>
<li>Michael Lynch</li>
<li>Michael Pennington</li>
<li>Michael Sage</li>
<li>Michael Stella</li>
<li>Michael Thalmann</li>
<li>Michael Wu</li>
<li>MichaelZ</li>
<li>Michel Bissonnette</li>
<li>Mikael Wikström</li>
<li>Mike Mason</li>
<li>Mikhael Mariano</li>
<li>Milan Burda</li>
<li>Milan Múčka</li>
<li>Miles Davis</li>
<li>Minh Tang</li>
<li>Moez Tharani</li>
<li>Morgan Helton</li>
<li>Myron Weber</li>
<li>Murad Khasawneh</li>
<li>N Patel</li>
<li>Nathaniel Griswold</li>
<li>Nelson Lee</li>
<li>nezu</li>
<li>Nicholas Jeppson</li>
<li>Nicholas Kopas</li>
<li>Nicholas Walczak</li>
<li>Nick Leffler</li>
<li>Nick Roethemeier</li>
<li>Nico Baumgartner</li>
<li>Nicolai Kragh-Hansen</li>
<li>Nicolas Christener</li>
<li>Nigel Smith</li>
<li>Nihal Fernando</li>
<li>Nils Orbat</li>
<li>Nis Wechselberg</li>
<li>Nithin Philips</li>
<li>Nod Swal</li>
<li>Nolan Haynes</li>
<li>Noxigen LLC</li>
<li>nubbn</li>
<li>nybble</li>
<li>Oh Be</li>
<li>Oliver Schwarz</li>
<li>Oliver Zimmer</li>
<li>Omar El-Domeiri</li>
<li>Omar Siam</li>
<li>Oscar</li>
<li>Patrick</li>
<li>Patrick Fortin-Ducharme</li>
<li>Patrick McDowell</li>
<li>Patrick Wagstrom</li>
<li>Paul Bishop</li>
<li>Paul De La Rosa</li>
<li>Paul Pietkiewicz</li>
<li>Paul Tan</li>
<li>Pawel Trofimiuk</li>
<li>Peder Madsen</li>
<li>Peter</li>
<li>Peter Drayton</li>
<li>Peter Farrelly</li>
<li>Peter Okelmann</li>
<li>Petra Lohmann</li>
<li>Petri Heiskanen</li>
<li>Phil Wu</li>
<li>Philip Edwards</li>
<li>Philip Merricks</li>
<li>Pierre Brassart</li>
<li>Pierre Peine</li>
<li>posicat</li>
<li>pozitron03</li>
<li>Przemysław Szypowicz</li>
<li>P_Dmitrij</li>
<li>Qteal</li>
<li>Quattro Uno</li>
<li>Quentin Peten</li>
<li>Ralph Borchers</li>
<li>Ranc1d</li>
<li>Randall D Bilbrey</li>
<li>RandomJerk</li>
<li>Raphael Schitz</li>
<li>Ref Chowdhury</li>
<li>René Rathenau</li>
<li>ReysDad</li>
<li>Ricardo Marques</li>
<li>Richard</li>
<li>Richard Bernarts</li>
<li>Richard Fancher</li>
<li>Richard Freemantle</li>
<li>Richard Michael</li>
<li>Rico Cantrell</li>
<li>Rob</li>
<li>Rob Holden</li>
<li>Rob Tongue</li>
<li>Robert Klauco</li>
<li>Robert Weemhoff</li>
<li>Robin Gfatter</li>
<li>Rodion DENISYUK</li>
<li>Rohit Priyadarshi</li>
<li>Rolfs 3D UG</li>
<li>Ronald LeBaron</li>
<li>Ronald Wells</li>
<li>Ronny Haldorsen</li>
<li>rotx</li>
<li>Rufo Sanchez</li>
<li>Russell Scott</li>
<li>Ryan</li>
<li>Ryan Peacock</li>
<li>Samed Ozoglu</li>
<li>Sameul Davies</li>
<li>Samuel Cote</li>
<li>Samuel Vetsch</li>
<li>Samuel Walker</li>
<li>Sarah Foster</li>
<li>Sarten X</li>
<li>Satish Alwani</li>
<li>Scott</li>
<li>Scott Gagon</li>
<li>Scott Spicola</li>
<li>Scott Tusing</li>
<li>Scott Worthington</li>
<li>Scuba</li>
<li>Sean</li>
<li>Sean Akers</li>
<li>Sean c Rickard</li>
<li>SEAT</li>
<li>Sebastian</li>
<li>Seonwoo Lee</li>
<li>Sergey Lukjanov</li>
<li>Seth Jennings</li>
<li>Shane Selling</li>
<li>Shawn Butts</li>
<li>Sheran Gunasekera</li>
<li>Shichun Chen</li>
<li>Shin Guey Wong</li>
<li>Simon Evans</li>
<li>Simon Sundgaard</li>
<li>Simplistic Realities</li>
<li>Sirmo</li>
<li>Snowy Maslov</li>
<li>Solve Technology</li>
<li>srepac</li>
<li>Stefan Bautz</li>
<li>Stefan Müller</li>
<li>Stefan Stemmer</li>
<li>Stefan Vaillant</li>
<li>Stephan Schmidt</li>
<li>Stephen</li>
<li>Stephen Hocking</li>
<li>Steve Jones</li>
<li>Steve Kerr</li>
<li>Steve Ovens</li>
<li>Steve Stringham</li>
<li>Steven Richter</li>
<li>Stratagem Solutions Ltd</li>
<li>Sven Breckler</li>
<li>sudo34</li>
<li>SuperHiTech</li>
<li>Tango_Echo_Alpha</li>
<li>Tarlak Desaydrone</li>
<li>TechBear</li>
<li>techlobo</li>
<li>Ted</li>
<li>Tejun Heo</li>
<li>TheSnowedOne</li>
<li>TheTechGiant</li>
<li>Thomas Charisoulis</li>
<li>Thomas Gitlin</li>
<li>Thomas Hagenmaier</li>
<li>Thomas Hedberg Jensen</li>
<li>Thomas Price</li>
<li>Thomas Søfteland</li>
<li>Tim Lenz</li>
<li>Tim Wilkinson</li>
<li>Timo Brinkmann</li>
<li>Timothee Besset</li>
<li>TitomusPrime</li>
<li>Tobias Schafferhans</li>
<li>Tom Lawson</li>
<li>Tom York</li>
<li>Tomas Kuchta</li>
<li>Tomáš hrubý</li>
<li>Torsten Droste</li>
<li>Torsten Knoll</li>
<li>Tracy Fitch</li>
<li>Tristan Schoening</li>
<li>Truman Kilen</li>
<li>turbochris</li>
<li>tutanak</li>
<li>Tyler</li>
<li>Udo Schroeter</li>
<li>Uli Fahrer</li>
<li>Vasily Lazarev</li>
<li>Venmo</li>
<li>Vidru Eduard</li>
<li>Vicente Salvador Cubedo</li>
<li>Viktor Aschenbrenner</li>
<li>Viktor Ekmark</li>
<li>Vincent Chov</li>
<li>Vlad Sterescu</li>
<li>Volker Gropp</li>
<li>Walli</li>
<li>Walter_Ego</li>
<li>William Wenzel</li>
<li>Will Froning</li>
<li>William Hooper</li>
<li>William Perrin</li>
<li>William Stearns</li>
<li>Woojin Son</li>
<li>xMdb</li>
<li>Yanko Kaneti</li>
<li>Yaroslav Kulikovskikh</li>
<li>Yethal</li>
<li>Yevgeniy Kuksenko</li>
<li>Yew Kay Yan</li>
<li>Yigal Dar</li>
<li>Yogi</li>
<li>YURI LEE</li>
<li>Yurii Ostapchuk</li>
<li>Zeljko</li>
<li>zgen</li>
<li>Zoltan Magyari</li>
<li>Zsombor Vari</li>
</ul>
</div>
</div>
</div><br>
<p class="text credits"><a target="_blank" href="https://pikvm.org" i18n="index_text_10">PiKVM Project</a>&nbsp; | &nbsp;<a target="_blank" href="https://docs.pikvm.org" i18n="index_text_11">Documentation</a>&nbsp; | &nbsp;<a target="_blank" href="https://github.com/mofeng-git/One-KVM" i18n="index_text_12">One-KVM Project</a>&nbsp; | &nbsp;<a target="_blank" href="https://one-kvm.mofeng.run" i18n="index_text_13">One-KVM Documentation</a></p>
<p class="text credits"><a target="_blank" href="https://github.com/mofeng-git/One-KVM" i18n="index_text_12">One-KVM Project</a>&nbsp; | &nbsp;<a target="_blank" href="https://one-kvm.mofeng.run" i18n="index_text_13">One-KVM Documentation</a>&nbsp; | &nbsp;<a target="_blank" href="https://pikvm.org" i18n="index_text_10">PiKVM Project</a>&nbsp; | &nbsp;<a target="_blank" href="https://docs.pikvm.org" i18n="index_text_11">Documentation</a></p>
</div>
</div>
<div class="window window-resizable" id="webterm-window" style="width: 640px; height: 480px">
@ -3061,7 +2366,7 @@
</ul>
<ul class="footer">
<li class="left"><span id="kvmd-meta-server-host" title="Server name (see System/About)"></span>&nbsp; | &nbsp;<span id="kvmd-version-kvmd" title="KVMD version"></span>&nbsp; | &nbsp;<span id="kvmd-version-streamer" title="Streamer version"></span></li>
<li class="right"><a target="_blank" href="https://pikvm.org" i18n="index_text_10">PiKVM Project</a>&nbsp; | &nbsp;<a target="_blank" href="https://docs.pikvm.org" i18n="index_text_11">Documentation</a>&nbsp; | &nbsp;<a target="_blank" href="https://github.com/mofeng-git/One-KVM" i18n="index_text_12">One-KVM Project</a>&nbsp; | &nbsp;<a target="_blank" href="https://one-kvm.mofeng.run" i18n="index_text_13">One-KVM Documentation</a></li>
<li class="right"><a target="_blank" href="https://github.com/mofeng-git/One-KVM" i18n="index_text_12">One-KVM Project</a>&nbsp; | &nbsp;<a target="_blank" href="https://one-kvm.mofeng.run" i18n="index_text_13">One-KVM Documentation</a></li>
</ul>
</body>
</html>

View File

@ -25,10 +25,6 @@ block body
| &nbsp; | &nbsp;
span(id="kvmd-version-streamer" title="Streamer version")
li(class="right")
a(target="_blank" href="https://pikvm.org" i18n="index_text_10") PiKVM Project
| &nbsp; | &nbsp;
a(target="_blank" href="https://docs.pikvm.org" i18n="index_text_11") Documentation
| &nbsp; | &nbsp;
a(target="_blank" href="https://github.com/mofeng-git/One-KVM" i18n="index_text_12") One-KVM Project
| &nbsp; | &nbsp;
a(target="_blank" href="https://one-kvm.mofeng.run" i18n="index_text_13") One-KVM Documentation

View File

@ -2,7 +2,6 @@ li(id="system-dropdown" class="right")
a(class="menu-button" href="#")
+navbar_led("link-led", "led-link")
+navbar_led("stream-led", "led-video")
+navbar_led("stream-led", "led-video")
+navbar_led("hid-keyboard-led", "led-hid-keyboard")
+navbar_led("hid-mouse-led", "led-hid-mouse")
span(i18n="kvm_text3") System
@ -50,12 +49,12 @@ li(id="system-dropdown" class="right")
td(i18n="kvm_text14") Video #[a(target="_blank" href="https://docs.pikvm.org/webrtc") mode]:
td
div(class="radio-box")
input(type="radio" id="stream-mode-radio-janus" name="stream-mode-radio" value="janus")
label(for="stream-mode-radio-janus") WebRTC
input(type="radio" id="stream-mode-radio-media" name="stream-mode-radio" value="media")
label(for="stream-mode-radio-media") H.264
input(checked type="radio" id="stream-mode-radio-mjpeg" name="stream-mode-radio" value="mjpeg")
label(for="stream-mode-radio-mjpeg") MJPEG
label(for="stream-mode-radio-mjpeg") Legacy<br>MJPEG
input(type="radio" id="stream-mode-radio-media" name="stream-mode-radio" value="media")
label(for="stream-mode-radio-media") Direct<br>H.264
input(type="radio" id="stream-mode-radio-janus" name="stream-mode-radio" value="janus")
label(for="stream-mode-radio-janus") WebRTC<br>H.264
tr(id="stream-orient" class="feature-disabled")
td(i18n="kvm_text17") Orientation:
td
@ -137,7 +136,7 @@ li(id="system-dropdown" class="right")
+menu_switch_notable("page-full-tab-stream-switch", "Expand for the entire tab by default", true, false,"page-full-tab-stream-switch")
table(class="kv")
tr
+menu_switch_notable("hid-keyboard-bad-link-switch", "Bad link mode (release keys immediately)", true, false)
+menu_switch_notable("hid-keyboard-bad-link-switch", "Bad link mode (release keys immediately)", true, false,"hid-keyboard-bad-link-switch")
tr(id="hid-connect" class="feature-disabled")
+menu_switch_notable("hid-connect-switch", "Connect HID to Server", true, true, "hid-connect-switch")
tr(id="hid-jiggler" class="feature-disabled")

View File

@ -49,651 +49,12 @@ div(id="about-window" class="window")
| // If you also want to support this project,#[br]
| // you can donate on #[a(target="_blank" href="https://www.patreon.com/pikvm") Patreon]
| or #[a(target="_blank" href="https://paypal.me/pikvm") Paypal].
ul
li A. Isenring
li Aaron Graubert
li Aaron Heise
li Aaron Stein
li Accalia
li Adam Goodbar
li Adam S
li Adam Stuart
li AdamBomb
li adipisicing
li Adrian Basham
li Adrian Popescu
li Ahmed Syed
li Alberto Bassi
li alejandro
li Aleksei Brusianskii
li Alessio Curri
li Alex T
li Alex Z
li Alexander Karmanov
li Alexander Lahuerta
li Alexander Martin
li Alexander Pankov
li Alexandre Jablonski
li Alexey Kamenskiy
li alm0241
li Alok Anand
li Alucard
li Ananthaneshan Elampoornan
li Andreas Grundler
li Andreas Marufke
li Andreas Schmid
li Andrew Brant
li Andrew Melton
li Andrew Reusch
li Andrew Ruan
li Andrzej V
li Andy
li Andy Keys
li Anish Patel
li Anix
li Anonymous
li Anthony Junk
li Anton Kovalenko
li Armen
li Aron Green
li Aron Perelman
li Artem Simonov
li Arthur Mayer
li Arthur Woimbée
li Ashlesh Chaudhari
li Asim Shakour
li Augusto Becciu
li AVS Computer
li awkspace
li Badal Patel
li baddog
li Bao Tin Hoang
li Bean Co.
li Bela Bargel
li Belf Igor
li Ben Gordon
li Ben Scott
li Benedikt Heine
li Benedikt Meier
li Benjamin Frewert
li Benjamin Melancon
li Benjamin Schwartz
li Benjamin Stegmann
li Benni Stauder
li Bernhard Fitzke
li Beu
li bikmaek
li bitjoe
li Bits and Bytes Computers LLC
li Bjoern Petsch
li Blair Hasler
li Blindside
li Blue Frog LLC
li Bootstrapper - Programmierung erklärt
li Bosco
li Bradford King
li Brainspore Networks
li Branden Shaulis
li Brandon Daniels
li Brian
li Brian Moses
li Brian T Mulcahy
li Brian Vecchiarelli
li Brian White
li brodonalds
li Bruno Gomes
li Bryan Adams
li Bryan Montgomery
li Buzzer
li C P ELSE
li Calanish
li Cameron Hatcher
li Cameron Tacklind
li Carl Mercier
li Carl-Fredrik Johansson
li Carlos Eduardo Porter Herrera
li Carlos Garcia
li Carlos Manuel Torres
li cbad536
li César Nascimento
li CHINATERA LIMITED
li Chris Blackmon
li Chris Burton
li Chris Campbell
li Chris Jackson
li Chris Lewis
li Chris Rizio
li Christi King
li Christian Schlögl
li Christian Svensson
li Christof Maluck
li Christoph Dette
li Christoffer Lund
li Christopher Bulla
li Christopher Gelatt
li Christopher Hearn
li Christopher Mandlbaur
li Christopher Mendoza
li Christopher Simms
li Chucktastic
li Cihan VURAL
li clauskj3r
li Clifford Coleman
li Clinton Lee Taylor
li Cole Imhoff
li Colin Goodman
li Corey Layton
li Corey Lista
li Craig Keenan
li Crossfactor
li Cruzzer
li ctag
li Curt Sammer
li CyB0rgg
li DeMentor
li Desmond Whitt
li Daegara
li DailyAneurism
li Damon Meledones
li Dan Berkowitz
li Dan Brakeley
li Daniel Bowder
li Daniel Cabrera
li Daniel Davila
li Danilo Saft
li Danne
li Dariusz Techmański
li David
li David Brausewetter
li David Davis
li David Godibadze
li David Howell
li David Irvine
li David Klinkman
li David Niemann
li David Shay
li David Ye
li David York
li Denis
li Denis Andreev
li Denis Yatsenko
li Dennis Becker
li Dennis Joslin
li Dennis Lomet
li Derek Jarvis
li Derek Yap
li Didrik
li digitalbaconbits
li Dimitrij Jedich
li dixon wong
li dizztrukshin
li Dmitry Shilov
li DogeLabs
li Dominic Phoon
li Dominik Klonowski
li Donald Hays
li Edmon Abdul Nur
li Edward Wang
li Egan Ford
li Elani Ferri
li Elliot Woo
li Entt
li Eric Phenix
li Ethan Shold
li Eugene Sukhodolin
li ewook
li eye-catcher.com
li Fabian Druschke
li Fabiano Sidler
li Far Pin Solutions, LLC
li Felyx Gabryel
li Fergus McKay
li Finn Ebenritter
li floppy
li fo0bar
li Foad Yousef
li Foamy
li Foli Ayivoh
li Folkert Weistra
li Francisco Pavon
li Frank
li Frank Sander
li Frederick Czajka
li Fredrik Idréus
li Garrett Dangerfield
li Ge Men
li Geekworm
li Genkinger Andreas
li Geijer
li Geoffrey Wright
li George Becker
li Georgy Brodsky
li Gerald
li Gerardus Vernimmen
li Gernot Neuschröer
li Giovanni Fulco
li GK
li Glen Dragon
li Greg Winterstein
li Gregory Smith
li Gregory Treantos
li grewil
li Grey Cynic
li Guenter Honisch
li Guido Bernacchi
li Gustin Johnson
li György Tamás Vizi
li Haiberg GmbH
li Haven Zheng
li Heibunny
li Heikki Tiittanen
li Helio Leonardo Pinheiro e Mota
li Henrik Ählström
li Henry Hood
li HimKo
li HouseFPV
li Howard Simons
li HyunohRyu
li Icculus
li iks
li INFO TRX INC
li Invader Monks
li Ioannis Karageorgos
li Isaac
li IT Lifesaver
li Ivan Ganev
li Ivan Josiah Lapis
li Ivan Shapovalov
li iwbjhbweriuhf
li J
li J L
li Jaanus
li Jackson Wyatt
li Jacob Karaffa
li Jacob Morgan
li James Cadd
li James Cobb
li James Edwards
li James Kocher
li James Mayhugh
li James Noonan
li James Ye
li Jamie Murphy
li Jamie Scott
li Jan Niehusmann
li Jannick Oursin
li Jari Hiltunen
li Jason Crossley
li Jason Downey
li Jason Toland
li Jasper Backer
li Jay Davis
li Jay Isaacs
li Jazereel Goh
li Jean-Daniel Croteau
li Jean-Philippe Guilbault
li Jeff
li Jeff Bowman
li Jeff Urlwin
li Jennifer Herting
li Jennifer Rowlett
li Jeremy Abel
li Jeremy Combs
li Jeremy Hines
li Jerremy Holland
li Jerry Nall
li Jerry Y. Chen
li Jim Bailey
li Jim Harbin
li Jimmy Burgett
li Jimmy Stanley
li Joachim Bruening
li Joe Hanson
li Joe Hinteregger
li Joe Ventura
li Joel Jacobs
li Johannes Heigermose
li John Andersen
li John Copeland
li John F Glenn
li John Holmes
li John Kelley
li John McGovern
li Johnny Henson
li Jon Ferguy
li Jon-Eric
li Joni Ruuskanen
li Jonas Fischer
li Jonathan Slenders
li Jonathan Vaughn
li Joost Backer
li Jordan Blake
li Jordi Pakey-Rodriguez
li Joris van Embden
li Joseph Swift
li Josh Nethery
li Josh Ricker
li Josh VanDeraa
li Joshua Futterer
li Jozef Riha
li Jörgen Fredriksson
li Julian Forero
li Julian Schneider
li Julien Angelier
li Justin
li Justin Waters
li Kai Hadler
li Kamil Chyba
li Kari Matti Korpi
li Karl Dunne
li Karl Moos
li Keith Muggleton
li Ken Lee
li Kenneth Younger III
li Kenny Hui
li KeonWoo PARK
li Kevin Bajohr
li Kevin Schwartz
li Kevin Sherwood
li Kiera Kujisawa
li Kiran Schuler
li Koloman
li Konrad Neitzel
li Krzysztof Żelaśkiewicz
li Lance Ward
li Larry Meaney
li Lars
li Lars Reinhardt
li Lee Wilkinson
li LeeNX
li Leon Siegl
li Leonard Feineis
li Lewis Wild
li Liran
li Liviu Dimitriu
li Lizardo Hernandez
li LoCascio
li Lordbob75
li Lothar Schweikle-Droll
li Louis Müller
li LSDTripp
li Ľubor Slušný
li Luca Di Diomede
li Lucio De Carli
li Luiz Bizzio
li Lukas Bischof
li Lukas Kammerer
li Lukas Söder
li Maksim Terehin
li Malcolm Cameron
li Manfred Radeschnig
li Marc Khouri
li Marcin Wilk
li Marcio Zimbres
li Marco Rossi
li Marcos Wolf
li Marek Marczykowski-Górecki
li Marius
li Mar. Balske
li Mark Farrell
li Mark Gilbert
li Mark Knam
li Mark Robinson
li Markrosoft
li Markus Halm
li Markus Schicker
li Markus Sobczack
li Marshall Bjerke
li Marten Hermans
li Martin Gasser
li Martin Hofbauer
li Martin Raine
li Martin Suelmann
li Martin Wilhelmi
li Marvin Honderboom
li Mateusz Grabowski
li Mathias Uhl
li Matt Kane
li Matthew Cameron
li Mauricio Allende
li Max Evans
li Mecky
li Mehmet Aydoğdu
li Michael Bartholomew
li Michael Bell
li Michael Bombe
li Michael Collins
li Michael Copeland
li Michael Ho
li Michael Kovacs
li Michael Lynch
li Michael Pennington
li Michael Sage
li Michael Stella
li Michael Thalmann
li Michael Wu
li MichaelZ
li Michel Bissonnette
li Mikael Wikström
li Mike Mason
li Mikhael Mariano
li Milan Burda
li Milan Múčka
li Miles Davis
li Minh Tang
li Moez Tharani
li Morgan Helton
li Myron Weber
li Murad Khasawneh
li N Patel
li Nathaniel Griswold
li Nelson Lee
li nezu
li Nicholas Jeppson
li Nicholas Kopas
li Nicholas Walczak
li Nick Leffler
li Nick Roethemeier
li Nico Baumgartner
li Nicolai Kragh-Hansen
li Nicolas Christener
li Nigel Smith
li Nihal Fernando
li Nils Orbat
li Nis Wechselberg
li Nithin Philips
li Nod Swal
li Nolan Haynes
li Noxigen LLC
li nubbn
li nybble
li Oh Be
li Oliver Schwarz
li Oliver Zimmer
li Omar El-Domeiri
li Omar Siam
li Oscar
li Patrick
li Patrick Fortin-Ducharme
li Patrick McDowell
li Patrick Wagstrom
li Paul Bishop
li Paul De La Rosa
li Paul Pietkiewicz
li Paul Tan
li Pawel Trofimiuk
li Peder Madsen
li Peter
li Peter Drayton
li Peter Farrelly
li Peter Okelmann
li Petra Lohmann
li Petri Heiskanen
li Phil Wu
li Philip Edwards
li Philip Merricks
li Pierre Brassart
li Pierre Peine
li posicat
li pozitron03
li Przemysław Szypowicz
li P_Dmitrij
li Qteal
li Quattro Uno
li Quentin Peten
li Ralph Borchers
li Ranc1d
li Randall D Bilbrey
li RandomJerk
li Raphael Schitz
li Ref Chowdhury
li René Rathenau
li ReysDad
li Ricardo Marques
li Richard
li Richard Bernarts
li Richard Fancher
li Richard Freemantle
li Richard Michael
li Rico Cantrell
li Rob
li Rob Holden
li Rob Tongue
li Robert Klauco
li Robert Weemhoff
li Robin Gfatter
li Rodion DENISYUK
li Rohit Priyadarshi
li Rolfs 3D UG
li Ronald LeBaron
li Ronald Wells
li Ronny Haldorsen
li rotx
li Rufo Sanchez
li Russell Scott
li Ryan
li Ryan Peacock
li Samed Ozoglu
li Sameul Davies
li Samuel Cote
li Samuel Vetsch
li Samuel Walker
li Sarah Foster
li Sarten X
li Satish Alwani
li Scott
li Scott Gagon
li Scott Spicola
li Scott Tusing
li Scott Worthington
li Scuba
li Sean
li Sean Akers
li Sean c Rickard
li SEAT
li Sebastian
li Seonwoo Lee
li Sergey Lukjanov
li Seth Jennings
li Shane Selling
li Shawn Butts
li Sheran Gunasekera
li Shichun Chen
li Shin Guey Wong
li Simon Evans
li Simon Sundgaard
li Simplistic Realities
li Sirmo
li Snowy Maslov
li Solve Technology
li srepac
li Stefan Bautz
li Stefan Müller
li Stefan Stemmer
li Stefan Vaillant
li Stephan Schmidt
li Stephen
li Stephen Hocking
li Steve Jones
li Steve Kerr
li Steve Ovens
li Steve Stringham
li Steven Richter
li Stratagem Solutions Ltd
li Sven Breckler
li sudo34
li SuperHiTech
li Tango_Echo_Alpha
li Tarlak Desaydrone
li TechBear
li techlobo
li Ted
li Tejun Heo
li TheSnowedOne
li TheTechGiant
li Thomas Charisoulis
li Thomas Gitlin
li Thomas Hagenmaier
li Thomas Hedberg Jensen
li Thomas Price
li Thomas Søfteland
li Tim Lenz
li Tim Wilkinson
li Timo Brinkmann
li Timothee Besset
li TitomusPrime
li Tobias Schafferhans
li Tom Lawson
li Tom York
li Tomas Kuchta
li Tomáš hrubý
li Torsten Droste
li Torsten Knoll
li Tracy Fitch
li Tristan Schoening
li Truman Kilen
li turbochris
li tutanak
li Tyler
li Udo Schroeter
li Uli Fahrer
li Vasily Lazarev
li Venmo
li Vidru Eduard
li Vicente Salvador Cubedo
li Viktor Aschenbrenner
li Viktor Ekmark
li Vincent Chov
li Vlad Sterescu
li Volker Gropp
li Walli
li Walter_Ego
li William Wenzel
li Will Froning
li William Hooper
li William Perrin
li William Stearns
li Woojin Son
li xMdb
li Yanko Kaneti
li Yaroslav Kulikovskikh
li Yethal
li Yevgeniy Kuksenko
li Yew Kay Yan
li Yigal Dar
li Yogi
li YURI LEE
li Yurii Ostapchuk
li Zeljko
li zgen
li Zoltan Magyari
li Zsombor Vari
br
p(class="text credits")
a(target="_blank" href="https://pikvm.org" i18n="index_text_10") PiKVM Project
| &nbsp; | &nbsp;
a(target="_blank" href="https://docs.pikvm.org" i18n="index_text_11") Documentation
| &nbsp; | &nbsp;
a(target="_blank" href="https://github.com/mofeng-git/One-KVM" i18n="index_text_12") One-KVM Project
| &nbsp; | &nbsp;
a(target="_blank" href="https://one-kvm.mofeng.run" i18n="index_text_13") One-KVM Documentation
| &nbsp; | &nbsp;
a(target="_blank" href="https://pikvm.org" i18n="index_text_10") PiKVM Project
| &nbsp; | &nbsp;
a(target="_blank" href="https://docs.pikvm.org" i18n="index_text_11") Documentation

View File

@ -5,6 +5,7 @@
# KVMD - The main PiKVM daemon. #
# #
# Copyright (C) 2018-2024 Maxim Devaev <mdevaev@gmail.com> #
# Copyright (C) 2023-2025 SilentWind <mofeng654321@hotmail.com> #
# #
# This program is free software: you can redistribute it and/or modify #
# it under the terms of the GNU General Public License as published by #
@ -77,7 +78,7 @@
<tr>
<td i18n="select_language">Select language:&nbsp;</td>
<td>
<select id="selectLanguage">
<select id="selectLanguage" style="width:100%">
<option id="zh" selected="selected" i18n="chinese">Simplified Chinese</option>
<option id="en" i18n="english">English</option>
</select>

View File

@ -25,7 +25,7 @@ block body
tr
td(i18n="select_language") Select language:&nbsp;
td
select(id="selectLanguage")
select(id="selectLanguage" style="width:100%")
option(id='zh', selected="selected" i18n="chinese") Simplified Chinese
option(id='en' i18n="english") English
tr

View File

@ -150,5 +150,6 @@
"msd-message-rw-enabled":"Read-write mode is enabled",
"msd-message-downloads":"The image is being downloaded from One-KVM",
"msd-message-another-user-uploads":"Another user uploads an image",
"page-full-tab-stream-switch":"Expand for the entire tab by default"
}
"page-full-tab-stream-switch":"Expand for the entire tab by default",
"hid-keyboard-bad-link-switch":"Bad link mode (release keys immediately)"
}

View File

@ -2,7 +2,7 @@
"username": "用户名:&nbsp;",
"password": "密码:&nbsp;",
"2fa_code": "2FA 验证:&nbsp;",
"if_enabled": "如果有",
"if_enabled": "如果请留空",
"login": "登录",
"select_language": "选择语言:&nbsp;",
"chinese": "简体中文",
@ -29,7 +29,7 @@
"ipmi_text3":"<b>不建议</b>为 KVMD 和 IPMI 用户使用相同的密码,或者直接关闭 IPMI。如有需要可以通过 curl 直接使用 KVMD API。下面是一些示例",
"kvm_text1":"关于",
"kvm_text2":"//<a href=\"https://github.com/pikvm/pikvm?tab=readme-ov-file#special-thanks\">这些人</a>向 PiKVM 项目捐款并支持其工作,非常感谢他们的帮助。<br>//如果您也想支持 PiKVM ,可以在 <a target=\"_blank\" href=\"https://www.patreon.com/pikvm\"> Patreon</a> 或 <a target=\"_blank\" href=\"https://paypal.me/pikvm\"> PayPal 上捐款</a>。<br><br>//<a href=\"https://one-kvm.mofeng.run/thanks/#_2\">这些人</a>向 One-KVM 项目捐款并支持其工作,非常感谢他们的帮助。<br>//如果您也想支持 One-KVM ,可以在 <a target=\"_blank\" href=\"https://afdian.com/a/silentwind\"> 爱发电 </a>上捐款</a>。",
"kvm_text2":"//<a href=\"https://one-kvm.mofeng.run/thanks/#_2\">这些人</a>向 One-KVM 项目赞助并支持其工作,非常感谢他们的帮助。<br>//如果您也想支持 One-KVM ,可以在 <a target=\"_blank\" href=\"https://afdian.com/a/silentwind\"> 爱发电 </a>上捐款</a>。<br><br>//<a href=\"https://github.com/pikvm/pikvm?tab=readme-ov-file#special-thanks\">这些人</a>向 PiKVM 项目赞助并支持其工作,非常感谢他们的帮助。<br>//如果您也想支持 PiKVM ,可以在 <a target=\"_blank\" href=\"https://www.patreon.com/pikvm\"> Patreon</a> 或 <a target=\"_blank\" href=\"https://paypal.me/pikvm\"> PayPal 上捐款</a>。",
"kvm_text3":"系统",
"kvm_text4":"运行设置 &amp; 工具",
"kvm_text5":"终端",
@ -152,5 +152,6 @@
"msd-message-rw-enabled":"读写模式已启用",
"msd-message-downloads":"正在从 One-KVM 下载镜像",
"msd-message-another-user-uploads":"另一个用户正在上传镜像",
"page-full-tab-stream-switch":"自动全屏视频窗口"
}
"page-full-tab-stream-switch":"自动全屏视频窗口",
"hid-keyboard-bad-link-switch":"故障链接模式(立即释放按键)"
}

View File

@ -82,10 +82,10 @@ function __loadKvmdInfo() {
if (info.meta !== null && info.meta.server && info.meta.server.host) {
$("kvmd-meta-server-host").innerHTML = info.meta.server.host;
document.title = `PiKVM Index: ${info.meta.server.host}`;
document.title = `One-KVM Index: ${info.meta.server.host}`;
} else {
$("kvmd-meta-server-host").innerHTML = "";
document.title = "PiKVM Index";
document.title = "One-KVM Index";
}
} else if (http.status === 401 || http.status === 403) {
document.location.href = "/login";

View File

@ -3,6 +3,7 @@
# KVMD - The main PiKVM daemon. #
# #
# Copyright (C) 2018-2024 Maxim Devaev <mdevaev@gmail.com> #
# Copyright (C) 2023-2025 SilentWind <mofeng654321@hotmail.com> #
# #
# This program is free software: you can redistribute it and/or modify #
# it under the terms of the GNU General Public License as published by #
@ -35,7 +36,7 @@ export function main() {
tools.storage.bindSimpleSwitch($("page-close-ask-switch"), "page.close.ask", true, function(value) {
if (value) {
window.onbeforeunload = function(event) {
let text = "Are you sure you want to close PiKVM session?";
let text = "Are you sure you want to close One-KVM session?";
if (event) {
event.returnValue = text;
}

View File

@ -3,6 +3,7 @@
# KVMD - The main PiKVM daemon. #
# #
# Copyright (C) 2018-2024 Maxim Devaev <mdevaev@gmail.com> #
# Copyright (C) 2023-2025 SilentWind <mofeng654321@hotmail.com> #
# #
# This program is free software: you can redistribute it and/or modify #
# it under the terms of the GNU General Public License as published by #
@ -84,10 +85,10 @@ export function Session() {
if (state.server && state.server.host) {
$("kvmd-meta-server-host").innerText = `Server: ${state.server.host}`;
document.title = `PiKVM Session: ${state.server.host}`;
document.title = `One-KVM Session: ${state.server.host}`;
} else {
$("kvmd-meta-server-host").innerText = "";
document.title = "PiKVM Session";
document.title = "One-KVM Session";
}
if (state.tips && state.tips.left) {

View File

@ -117,6 +117,11 @@ export function Streamer() {
//hidden stream-record-stop-button
document.getElementById('stream-record-stop-button').disabled = true;
// 修改这里:设置默认模式为 mjpeg
let defaultMode = "mjpeg";
let mode = tools.storage.get("stream.mode", defaultMode);
tools.radio.clickValue("stream-mode-radio", mode);
};
/************************************************************************/
@ -225,7 +230,7 @@ export function Streamer() {
tools.feature.setEnabled($("stream-mic"), false);
}
let mode = tools.storage.get("stream.mode", "janus");
let mode = tools.storage.get("stream.mode", "mjpeg"); // 这里也改为默认 mjpeg
if (mode === "janus" && !has_janus) {
mode = "media";
}
@ -306,21 +311,25 @@ export function Streamer() {
mode = __streamer.getMode();
}
__streamer.stopStream();
if (mode === "janus") {
if (mode === "mjpeg") {
// For mjpeg mode, create an instance of MjpegStreamer
__streamer = new MjpegStreamer(__setActive, __setInactive, __setInfo);
tools.feature.setEnabled($("stream-orient"), false);
tools.feature.setEnabled($("stream-audio"), false); // Enabling in stream_janus.js
tools.feature.setEnabled($("stream-mic"), false); // Ditto
} else if (mode === "media") {
// For media mode, create an instance of MediaStreamer
__streamer = new MediaStreamer(__setActive, __setInactive, __setInfo);
tools.feature.setEnabled($("stream-orient"), false);
tools.feature.setEnabled($("stream-audio"), false); // Assuming this should be disabled for MediaStreamer as well
tools.feature.setEnabled($("stream-mic"), false); // Ditto
} else { // janus
// For janus mode, create an instance of JanusStreamer with specific settings
__streamer = new JanusStreamer(__setActive, __setInactive, __setInfo,
tools.storage.getInt("stream.orient", 0), !$("stream-video").muted, $("stream-mic-switch").checked);
// Firefox doesn't support RTP orientation:
// - https://bugzilla.mozilla.org/show_bug.cgi?id=1316448
tools.feature.setEnabled($("stream-orient"), !tools.browser.is_firefox);
} else {
if (mode === "media") {
__streamer = new MediaStreamer(__setActive, __setInactive, __setInfo);
} else { // mjpeg
__streamer = new MjpegStreamer(__setActive, __setInactive, __setInfo);
}
tools.feature.setEnabled($("stream-orient"), false);
tools.feature.setEnabled($("stream-audio"), false); // Enabling in stream_janus.js
tools.feature.setEnabled($("stream-mic"), false); // Ditto
}
if (wm.isWindowVisible($("stream-window"))) {
__streamer.ensureStream((__state && __state.streamer !== undefined) ? __state.streamer : null);
@ -369,7 +378,7 @@ export function Streamer() {
if (ok) {
stream_now_fps = tools.slider.getValue($("stream-desired-fps-slider"));
let recordedBlobs = [];
//"mjpeg" or "janus"
//"mjpeg" or "janus" or "media"
let stream_type = document.querySelector('input[name="stream-mode-radio"]:checked').value;
if ( stream_type == "mjpeg"){
@ -378,9 +387,13 @@ export function Streamer() {
var ctx = stream_mjpeg_canvas.getContext('2d');
stream_mjpeg_canvas.width = stream_mjpeg_img.width;
stream_mjpeg_canvas.height = stream_mjpeg_img.height;
const stream = stream_mjpeg_canvas.captureStream(stream_now_fps); // Capture FPS
const stream = stream_mjpeg_canvas.captureStream(stream_now_fps);
mediaRecorder = new MediaRecorder(stream);
}else{
}else if(stream_type == "media"){
const stream_canvas = document.getElementById("stream-canvas")
stream_canvas.captureStream = stream_canvas.captureStream || stream_canvas.mozCaptureStream;
mediaRecorder = new MediaRecorder(stream_canvas.captureStream(stream_now_fps));
}else if(stream_type == "janus"){
const stream = document.getElementById("stream-video")
stream.captureStream = stream.captureStream || stream.mozCaptureStream;
mediaRecorder = new MediaRecorder(stream.captureStream());

View File

@ -5,6 +5,7 @@
# KVMD - The main PiKVM daemon. #
# #
# Copyright (C) 2018-2024 Maxim Devaev <mdevaev@gmail.com> #
# Copyright (C) 2023-2025 SilentWind <mofeng654321@hotmail.com> #
# #
# This program is free software: you can redistribute it and/or modify #
# it under the terms of the GNU General Public License as published by #