初步整合:

1. python 内置服务器
2. 将配置文件统一目录
This commit is contained in:
mofeng-git
2025-01-01 14:26:22 +00:00
parent 5db37797ea
commit d5a0b1a8b3
411 changed files with 7387 additions and 7263 deletions

View File

View File

28
kvmd_data/etc/kvmd/armbain-motd Executable file
View File

@@ -0,0 +1,28 @@
#!/bin/bash
if [ -e /etc/update-motd.d/10-armbian-header ]; then /etc/update-motd.d/10-armbian-header; fi
if [ -e /etc/update-motd.d/30-armbian-sysinfo ]; then /etc/update-motd.d/30-armbian-sysinfo; fi
if [ -e /etc/update-motd.d/41-armbian-config ]; then /etc/update-motd.d/41-armbian-config; fi
printf "
██████╗ ███╗ ██╗███████╗ ██╗ ██╗██╗ ██╗███╗ ███╗
██╔═══██╗████╗ ██║██╔════╝ ██║ ██╔╝██║ ██║████╗ ████║
██║ ██║██╔██╗ ██║█████╗█████╗█████╔╝ ██║ ██║██╔████╔██║
██║ ██║██║╚██╗██║██╔══╝╚════╝██╔═██╗ ╚██╗ ██╔╝██║╚██╔╝██║
╚██████╔╝██║ ╚████║███████╗ ██║ ██╗ ╚████╔╝ ██║ ╚═╝ ██║
╚═════╝ ╚═╝ ╚═══╝╚══════╝ ╚═╝ ╚═╝ ╚═══╝ ╚═╝ ╚═╝
____________________________________________________________________________
欢迎使用 One-KVM基于开源程序 PiKVM 的 IP-KVM 应用
项目链接:
* One-KVMhttps://github.com/mofeng-git/One-KVM
文档链接:
* One-KVMhttps://one-kvm.mofeng.run
____________________________________________________________________________
"

14
kvmd_data/etc/kvmd/atx.sh Executable file
View File

@@ -0,0 +1,14 @@
#!/bin/bash
echo $ATX
case $ATX in
GPIO)
sudo /etc/kvmd/custom_atx/gpio.sh $1
;;
USBRELAY_HID)
sudo /etc/kvmd/custom_atx/usbrelay_hid.sh $1
;;
*)
echo "No thing."
exit -1
esac

View File

@@ -0,0 +1 @@
{}

View File

@@ -0,0 +1,23 @@
#!/bin/bash
RED='\033[0;31m'
GREEN='\033[0;32m'
YELLOW='\033[0;33m'
BLUE='\033[0;34m'
NC='\033[0m'
cleanup() {
if [ "$OTG" == "1" ]; then
echo "Trying exit OTG Port..." \
&& python -m kvmd.apps.otg stop \
|| echo -e "${RED}Failed to exit OTG Port${NC}"
rm -r /run/kvmd/otg
fi
exit 0
}
trap cleanup SIGTERM
while true; do
sleep 3600
done

View File

@@ -0,0 +1,17 @@
#!/bin/bash
case $1 in
short)
gpioset -m time -s 1 SHUTDOWNPIN=0
gpioset SHUTDOWNPIN=1
;;
long)
gpioset -m time -s 5 SHUTDOWNPIN=0
gpioset SHUTDOWNPIN=1
;;
reset)
gpioset -m time -s 1 REBOOTPIN=0
gpioset REBOOTPIN=1
;;
*)
echo "No thing."
esac

View File

@@ -0,0 +1,52 @@
import sys
import hid
VENDOR_ID = 0x5131
PRODUCT_ID = 0x2007
def find_usbrelay():
for device in hid.enumerate():
if device.get("vendor_id") == VENDOR_ID and device.get("product_id") == PRODUCT_ID:
return device
return None
def send_command(device_info, channel, onoff):
device = hid.device()
device.open(device_info['vendor_id'], device_info['product_id'])
if device is None:
print("Failed to open device.")
return
try:
cmd = [0xA0, channel, onoff, 0xA0 + channel + onoff]
device.write(bytearray(cmd))
finally:
device.close()
def main():
if len(sys.argv) != 3:
print("Usage:\n"
"\tpython script.py id on|off")
return
try:
id = int(sys.argv[1])
if sys.argv[2].lower() == 'on':
onoff = 1
elif sys.argv[2].lower() == 'off':
onoff = 0
else:
raise ValueError
except ValueError:
print("Invalid command, use 'on' or 'off'")
return
device_info = find_usbrelay()
if device_info is None:
print("USB relay not found")
else:
send_command(device_info, id, onoff)
print(f"Sent command to channel {id}: {'ON' if onoff else 'OFF'}")
if __name__ == "__main__":
main()

View File

@@ -0,0 +1,20 @@
#!/bin/bash
case $1 in
short)
python3 /etc/kvmd/custom_atx/usbrelay_hid.py 1 on
sleep 1
python3 /etc/kvmd/custom_atx/usbrelay_hid.py 1 off
;;
long)
python3 /etc/kvmd/custom_atx/usbrelay_hid.py 1 on
sleep 5
python3 /etc/kvmd/custom_atx/usbrelay_hid.py 1 off
;;
reset)
python3 /etc/kvmd/custom_atx/usbrelay_hid.py 2 on
sleep 1
python3 /etc/kvmd/custom_atx/usbrelay_hid.py 2 off
;;
*)
echo "No thing."
esac

View File

@@ -0,0 +1 @@
admin:$apr1$.6mu9N8n$xOuGesr4JZZkdiZo/j318.

View File

@@ -0,0 +1 @@
Docker

View File

@@ -0,0 +1 @@
docker1000000000

View File

@@ -0,0 +1,14 @@
# This file describes the credentials for IPMI users. The first pair separated by colon
# is the login and password with which the user can access to IPMI. The second pair
# is the name and password with which the user can access to KVMD API. The arrow is used
# as a separator and shows the direction of user registration in the system.
#
# WARNING! IPMI protocol is completely unsafe by design. In short, the authentication
# process for IPMI 2.0 mandates that the server send a salted SHA1 or MD5 hash of the
# requested user's password to the client, prior to the client authenticating. Never use
# the same passwords for KVMD and IPMI users. This default configuration is shown here
# for example only.
#
# And even better not to use IPMI. Instead, you can directly use KVMD API via curl.
admin:admin -> admin:admin

View File

@@ -0,0 +1,18 @@
general: {
debug_level = 4
}
nat: {
nice_debug = false
ignore_mdns = true
}
media: {
ipv6 = true
ipv6_linklocal = true
min_nack_queue = 2000
rtp_port_range = "20000-40000"
no_media_timer = 0
slowlink_threshold = 10
twcc_period = 100
dtls_timeout = 1000
nack_optimizations = true
}

View File

@@ -0,0 +1,7 @@
video: {
sink = "kvmd::ustreamer::h264"
}
audio: {
device = "hw:0"
tc358743 = "/dev/video0"
}

View File

@@ -0,0 +1,4 @@
general: {
ws = true
ws_unix = "/run/kvmd/janus-ws.sock"
}

32
kvmd_data/etc/kvmd/kvm_input.sh Executable file
View File

@@ -0,0 +1,32 @@
#!/bin/bash
# Written by @srepac FILENAME: input.sh
# Input switcher script for use with KVM switches that use CTRL+CTRL+#
# ... pass in # into the script
#
usage() {
echo "usage: $0 <#> <pikvm-name-or-ip> where # is the input number on the KVM switch"
exit 1
}
password=admin
#HOTKEY="ScrollLock"
HOTKEY="ControlLeft"
if [[ "$1" == "" ]]; then
usage
else
NUM="$1"
fi
if [[ "$2" == "" ]]; then
IP="localhost:4430"
else
IP="$2"
fi
OSD=$( echo $HOTKEY | sed -e 's/ControlLeft/CTRL/g' )
echo "Sending $OSD + $OSD + $NUM to $IP"
curl -X POST -k -u admin:$password "https://$IP/api/hid/events/send_key?key=$HOTKEY" 2> /dev/null
curl -X POST -k -u admin:$password "https://$IP/api/hid/events/send_key?key=$HOTKEY" 2> /dev/null
curl -X POST -k -u admin:$password "https://$IP/api/hid/events/send_key?key=Digit${NUM}" 2> /dev/null

View File

@@ -0,0 +1,20 @@
version: 1
disable_existing_loggers: false
formatters:
console:
(): logging.Formatter
style: "{"
format: "{name:30.30} {levelname:>7} --- {message}"
handlers:
console:
level: DEBUG
class: logging.StreamHandler
stream: ext://sys.stderr
formatter: console
root:
level: INFO
handlers:
- console

View File

@@ -0,0 +1,59 @@
# Don't touch this file otherwise your device may stop working.
# Use override.yaml to modify required settings.
# You can find a working configuration in /usr/share/kvmd/configs.default/kvmd.
override: !include [override.d, override.yaml]
logging: !include logging.yaml
kvmd:
auth: !include auth.yaml
hid:
type: otg
atx:
type: gpio
msd:
type: disabled
streamer:
quality: 0
resolution:
default: 1920x1080
available:
- 1920x1080
- 1600x1200
- 1360x768
- 1280x1024
- 1280x960
- 1280x720
- 1024x768
- 800x600
- 720x576
- 720x480
- 640x480
cmd:
- "/usr/bin/ustreamer"
- "--device=/dev/kvmd-video"
- "--persistent"
- "--format=mjpeg"
- "--resolution={resolution}"
- "--desired-fps={desired_fps}"
- "--drop-same-frames=30"
- "--unix={unix}"
- "--unix-rm"
- "--unix-mode=0660"
- "--exit-on-parent-death"
- "--process-name-prefix={process_name_prefix}"
- "--notify-parent"
- "--no-log-colors"
- "--jpeg-sink=kvmd::ustreamer::jpeg"
- "--jpeg-sink-mode=0660"
vnc:
memsink:
jpeg:
sink: "kvmd::ustreamer::jpeg"

View File

@@ -0,0 +1,98 @@
# Don't touch this file otherwise your device may stop working.
# Use override.yaml to modify required settings.
# You can find a working configuration in /usr/share/kvmd/configs.default/kvmd.
override: !include [override.d, override.yaml]
logging: !include logging.yaml
kvmd:
auth: !include auth.yaml
info:
hw:
ignore_past: true
fan:
unix: /run/kvmd/fan.sock
hid:
type: otg
mouse_alt:
device: /dev/kvmd-hid-mouse-alt
atx:
type: gpio
power_led_pin: 4
hdd_led_pin: 5
power_switch_pin: 23
reset_switch_pin: 27
msd:
type: otg
streamer:
h264_bitrate:
default: 5000
cmd:
- "/usr/bin/ustreamer"
- "--device=/dev/kvmd-video"
- "--persistent"
- "--dv-timings"
- "--format=uyvy"
- "--format-swap-rgb"
- "--buffers=8"
- "--encoder=m2m-image"
- "--workers=3"
- "--quality={quality}"
- "--desired-fps={desired_fps}"
- "--drop-same-frames=30"
- "--unix={unix}"
- "--unix-rm"
- "--unix-mode=0660"
- "--exit-on-parent-death"
- "--process-name-prefix={process_name_prefix}"
- "--notify-parent"
- "--no-log-colors"
- "--jpeg-sink=kvmd::ustreamer::jpeg"
- "--jpeg-sink-mode=0660"
- "--h264-sink=kvmd::ustreamer::h264"
- "--h264-sink-mode=0660"
- "--h264-bitrate={h264_bitrate}"
- "--h264-gop={h264_gop}"
gpio:
drivers:
__v4_locator__:
type: locator
scheme:
__v3_usb_breaker__:
pin: 22
mode: output
initial: true
pulse: false
__v4_locator__:
driver: __v4_locator__
pin: 12
mode: output
pulse: false
__v4_const1__:
pin: 6
mode: output
initial: false
switch: false
pulse: false
vnc:
memsink:
jpeg:
sink: "kvmd::ustreamer::jpeg"
h264:
sink: "kvmd::ustreamer::h264"
otg:
remote_wakeup: true

View File

@@ -0,0 +1,14 @@
# You can write down any information and it will be available
# at the address /api/info (if you use default nginx config).
# If server.host (str) will be defined then this value
# will be displayed in the web interface.
server:
host: docker
kvm: {
base_on: PiKVM,
app_name: One-KVM,
main_version: 241204,
author: SilentWind
}

View File

@@ -0,0 +1,5 @@
location /.well-known/acme-challenge {
root /run/kvmd-certbot/webroot;
include loc-nocache.conf;
auth_request off;
}

View File

@@ -0,0 +1,7 @@
upstream kvmd {
server unix:/home/mofeng/kvmd_data/run/kvmd/kvmd.sock fail_timeout=0s max_fails=0;
}
upstream ustreamer {
server unix:/home/mofeng/kvmd_data/run/kvmd/ustreamer.sock fail_timeout=0s max_fails=0;
}

View File

@@ -0,0 +1,131 @@
absolute_redirect off;
index index.html;
auth_request /auth_check;
location = /auth_check {
internal;
proxy_pass http://kvmd/auth/check;
proxy_pass_request_body off;
proxy_set_header Content-Length "";
auth_request off;
}
location / {
root /home/mofeng/kvmd_data/usr/share/kvmd/web;
include loc-login.conf;
include loc-nocache.conf;
}
location @login {
return 302 /login;
}
location /login {
root /home/mofeng/kvmd_data/usr/share/kvmd/web;
auth_request off;
}
location /share {
root /home/mofeng/kvmd_data/usr/share/kvmd/web;
include loc-nocache.conf;
auth_request off;
}
location = /share/css/user.css {
alias /home/mofeng/kvmd_data/etc/kvmd/web.css;
auth_request off;
}
location = /favicon.ico {
alias /home/mofeng/kvmd_data/usr/share/kvmd/web/favicon.ico;
include loc-nocache.conf;
auth_request off;
}
location = /robots.txt {
alias /home/mofeng/kvmd_data/usr/share/kvmd/web/robots.txt;
include loc-nocache.conf;
auth_request off;
}
location /api/ws {
rewrite ^/api/ws$ /ws break;
rewrite ^/api/ws\?(.*)$ /ws?$1 break;
proxy_pass http://kvmd;
include loc-proxy.conf;
include loc-websocket.conf;
auth_request off;
}
location /api/hid/print {
rewrite ^/api/hid/print$ /hid/print break;
rewrite ^/api/hid/print\?(.*)$ /hid/print?$1 break;
proxy_pass http://kvmd;
include loc-proxy.conf;
include loc-bigpost.conf;
auth_request off;
}
location /api/msd/read {
rewrite ^/api/msd/read$ /msd/read break;
rewrite ^/api/msd/read\?(.*)$ /msd/read?$1 break;
proxy_pass http://kvmd;
include loc-proxy.conf;
include loc-nobuffering.conf;
proxy_read_timeout 7d;
auth_request off;
}
location /api/msd/write_remote {
rewrite ^/api/msd/write_remote$ /msd/write_remote break;
rewrite ^/api/msd/write_remote\?(.*)$ /msd/write_remote?$1 break;
proxy_pass http://kvmd;
include loc-proxy.conf;
include loc-nobuffering.conf;
proxy_read_timeout 7d;
auth_request off;
}
location /api/msd/write {
rewrite ^/api/msd/write$ /msd/write break;
rewrite ^/api/msd/write\?(.*)$ /msd/write?$1 break;
proxy_pass http://kvmd;
include loc-proxy.conf;
include loc-bigpost.conf;
auth_request off;
}
location /api/log {
rewrite ^/api/log$ /log break;
rewrite ^/api/log\?(.*)$ /log?$1 break;
proxy_pass http://kvmd;
include loc-proxy.conf;
include loc-nobuffering.conf;
proxy_read_timeout 7d;
auth_request off;
}
location /api {
rewrite ^/api$ / break;
rewrite ^/api/(.*)$ /$1 break;
proxy_pass http://kvmd;
include loc-proxy.conf;
auth_request off;
}
location /streamer {
rewrite ^/streamer$ / break;
rewrite ^/streamer\?(.*)$ ?$1 break;
rewrite ^/streamer/(.*)$ /$1 break;
proxy_pass http://ustreamer;
include loc-proxy.conf;
include loc-nobuffering.conf;
}
location /redfish {
proxy_pass http://kvmd;
include loc-proxy.conf;
auth_request off;
}

View File

@@ -0,0 +1,4 @@
limit_rate 6250k;
limit_rate_after 50k;
client_max_body_size 0;
proxy_request_buffering off;

View File

@@ -0,0 +1,2 @@
error_page 401 = @login;
error_page 403 = @login;

View File

@@ -0,0 +1,3 @@
postpone_output 0;
proxy_buffering off;
proxy_ignore_headers X-Accel-Buffering;

View File

@@ -0,0 +1,2 @@
add_header Cache-Control "no-store, no-cache, must-revalidate, proxy-revalidate, pre-check=0, post-check=0, max-age=0";
expires -1;

View File

@@ -0,0 +1,6 @@
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Scheme $scheme;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header X-Forwarded-Port $server_port;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

View File

@@ -0,0 +1,5 @@
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_connect_timeout 7d;
proxy_send_timeout 7d;
proxy_read_timeout 7d;

View File

@@ -0,0 +1,912 @@
types {
application/A2L a2l;
application/AML aml;
application/andrew-inset ez;
application/ATF atf;
application/ATFX atfx;
application/ATXML atxml;
application/atom+xml atom;
application/atomcat+xml atomcat;
application/atomdeleted+xml atomdeleted;
application/atomsvc+xml atomsvc;
application/auth-policy+xml apxml;
application/bacnet-xdd+zip xdd;
application/calendar+xml xcs;
application/cbor cbor;
application/cccex c3ex;
application/ccmp+xml ccmp;
application/ccxml+xml ccxml;
application/CDFX+XML cdfx;
application/cdmi-capability cdmia;
application/cdmi-container cdmic;
application/cdmi-domain cdmid;
application/cdmi-object cdmio;
application/cdmi-queue cdmiq;
application/CEA cea;
application/cellml+xml cellml cml;
application/clue_info+xml clue;
application/cms cmsc;
application/cpl+xml cpl;
application/csrattrs csrattrs;
application/dash+xml mpd;
application/dashdelta mpdd;
application/davmount+xml davmount;
application/DCD dcd;
application/dicom dcm;
application/DII dii;
application/DIT dit;
application/dskpp+xml xmls;
application/dssc+der dssc;
application/dssc+xml xdssc;
application/dvcs dvc;
application/ecmascript es;
application/efi efi;
application/emma+xml emma;
application/emotionml+xml emotionml;
application/epub+zip epub;
application/exi exi;
application/fastinfoset finf;
application/fdt+xml fdt;
application/font-tdpfr pfr;
application/geo+json geojson;
application/gml+xml gml;
application/gzip gz tgz;
application/hyperstudio stk;
application/inkml+xml ink inkml;
application/ipfix ipfix;
application/its+xml its;
application/javascript js;
application/jrd+json jrd;
application/json json;
application/json-patch+json json-patch;
application/ld+json jsonld;
application/lgr+xml lgr;
application/link-format wlnk;
application/lost+xml lostxml;
application/lostsync+xml lostsyncxml;
application/LXF lxf;
application/mac-binhex40 hqx;
application/mads+xml mads;
application/marc mrc;
application/marcxml+xml mrcx;
application/mathematica nb ma mb;
application/mathml+xml mml;
application/mbox mbox;
application/metalink4+xml meta4;
application/mets+xml mets;
application/MF4 mf4;
application/mmt-usd+xml musd;
application/mods+xml mods;
application/mp21 m21 mp21;
application/msword doc;
application/mxf mxf;
application/n-quads nq;
application/n-triples nt;
application/ocsp-request orq;
application/ocsp-response ors;
application/octet-stream bin lha lzh exe class so dll img iso;
application/oda oda;
application/ODX odx;
application/oebps-package+xml opf;
application/ogg ogx;
application/oxps oxps;
application/p2p-overlay+xml relo;
application/pdf pdf;
application/PDX pdx;
application/pgp-encrypted pgp;
application/pgp-signature sig;
application/pkcs10 p10;
application/pkcs12 p12 pfx;
application/pkcs7-mime p7m p7c;
application/pkcs7-signature p7s;
application/pkcs8 p8;
application/pkix-cert cer;
application/pkix-crl crl;
application/pkix-pkipath pkipath;
application/pkixcmp pki;
application/pls+xml pls;
application/postscript ps eps ai;
application/provenance+xml provx;
application/prs.cww cw cww;
application/prs.hpub+zip hpub;
application/prs.nprend rnd rct;
application/prs.rdf-xml-crypt rdf-crypt;
application/prs.xsf+xml xsf;
application/pskc+xml pskcxml;
application/rdf+xml rdf;
application/route-apd+xml rapd;
application/route-s-tsid+xml sls;
application/route-usd+xml rusd;
application/reginfo+xml rif;
application/relax-ng-compact-syntax rnc;
application/resource-lists-diff+xml rld;
application/resource-lists+xml rl;
application/rfc+xml rfcxml;
application/rls-services+xml rs;
application/rpki-ghostbusters gbr;
application/rpki-manifest mft;
application/rpki-roa roa;
application/rtf rtf;
application/scim+json scim;
application/scvp-cv-request scq;
application/scvp-cv-response scs;
application/scvp-vp-request spq;
application/scvp-vp-response spp;
application/sdp sdp;
application/sgml-open-catalog soc;
application/shf+xml shf;
application/sieve siv sieve;
application/simple-filter+xml cl;
application/smil+xml smil smi sml;
application/sparql-query rq;
application/sparql-results+xml srx;
application/sql sql;
application/srgs gram;
application/srgs+xml grxml;
application/sru+xml sru;
application/ssml+xml ssml;
application/tamp-apex-update tau;
application/tamp-apex-update-confirm auc;
application/tamp-community-update tcu;
application/tamp-community-update-confirm cuc;
application/tamp-error ter;
application/tamp-sequence-adjust tsa;
application/tamp-sequence-adjust-confirm sac;
application/tamp-update tur;
application/tamp-update-confirm tuc;
application/tei+xml tei teiCorpus odd;
application/thraud+xml tfi;
application/timestamp-query tsq;
application/timestamp-reply tsr;
application/timestamped-data tsd;
application/trig trig;
application/ttml+xml ttml;
application/urc-grpsheet+xml gsheet;
application/urc-ressheet+xml rsheet;
application/urc-targetdesc+xml td;
application/urc-uisocketdesc+xml uis;
application/vnd.1000minds.decision-model+xml 1km;
application/vnd.3gpp.pic-bw-large plb;
application/vnd.3gpp.pic-bw-small psb;
application/vnd.3gpp.pic-bw-var pvb;
application/vnd.3gpp2.sms sms;
application/vnd.3gpp2.tcap tcap;
application/vnd.3lightssoftware.imagescal imgcal;
application/vnd.3M.Post-it-Notes pwn;
application/vnd.accpac.simply.aso aso;
application/vnd.accpac.simply.imp imp;
application/vnd.acucobol acu;
application/vnd.acucorp atc acutc;
application/vnd.adobe.flash.movie swf;
application/vnd.adobe.formscentral.fcdt fcdt;
application/vnd.adobe.fxp fxp fxpl;
application/vnd.adobe.xdp+xml xdp;
application/vnd.adobe.xfdf xfdf;
application/vnd.ahead.space ahead;
application/vnd.airzip.filesecure.azf azf;
application/vnd.airzip.filesecure.azs azs;
application/vnd.amazon.mobi8-ebook azw3;
application/vnd.americandynamics.acc acc;
application/vnd.amiga.ami ami;
application/vnd.anki apkg;
application/vnd.anser-web-certificate-issue-initiation cii;
application/vnd.anser-web-funds-transfer-initiation fti;
application/vnd.apple.installer+xml dist distz pkg mpkg;
application/vnd.apple.mpegurl m3u8;
application/vnd.aristanetworks.swi swi;
application/vnd.astraea-software.iota iota;
application/vnd.audiograph aep;
application/vnd.autopackage package;
application/vnd.balsamiq.bmml+xml bmml;
application/vnd.balsamiq.bmpr bmpr;
application/vnd.blueice.multipass mpm;
application/vnd.bluetooth.ep.oob ep;
application/vnd.bluetooth.le.oob le;
application/vnd.bmi bmi;
application/vnd.businessobjects rep;
application/vnd.cendio.thinlinc.clientconf tlclient;
application/vnd.chemdraw+xml cdxml;
application/vnd.chess-pgn pgn;
application/vnd.chipnuts.karaoke-mmd mmd;
application/vnd.cinderella cdy;
application/vnd.citationstyles.style+xml csl;
application/vnd.claymore cla;
application/vnd.cloanto.rp9 rp9;
application/vnd.clonk.c4group c4g c4d c4f c4p c4u;
application/vnd.cluetrust.cartomobile-config c11amc;
application/vnd.cluetrust.cartomobile-config-pkg c11amz;
application/vnd.coffeescript coffee;
application/vnd.comicbook+zip cbz;
application/vnd.commerce-battelle ica icf icd ic0 ic1 ic2 ic3 ic4 ic5 ic6 ic7 ic8;
application/vnd.commonspace csp cst;
application/vnd.contact.cmsg cdbcmsg;
application/vnd.coreos.ignition+json ign ignition;
application/vnd.cosmocaller cmc;
application/vnd.crick.clicker clkx;
application/vnd.crick.clicker.keyboard clkk;
application/vnd.crick.clicker.palette clkp;
application/vnd.crick.clicker.template clkt;
application/vnd.crick.clicker.wordbank clkw;
application/vnd.criticaltools.wbs+xml wbs;
application/vnd.ctc-posml pml;
application/vnd.cups-ppd ppd;
application/vnd.curl curl;
application/vnd.dart dart;
application/vnd.data-vision.rdz rdz;
application/vnd.debian.binary-package deb udeb;
application/vnd.dece.data uvf uvvf uvd uvvd;
application/vnd.dece.ttml+xml uvt uvvt;
application/vnd.dece.unspecified uvx uvvx;
application/vnd.dece.zip uvz uvvz;
application/vnd.denovo.fcselayout-link fe_launch;
application/vnd.desmume.movie dsm;
application/vnd.dna dna;
application/vnd.document+json docjson;
application/vnd.doremir.scorecloud-binary-document scld;
application/vnd.dpgraph dpg mwc dpgraph;
application/vnd.dreamfactory dfac;
application/vnd.dtg.local.flash fla;
application/vnd.dvb.ait ait;
application/vnd.dvb.service svc;
application/vnd.dynageo geo;
application/vnd.dzr dzr;
application/vnd.ecowin.chart mag;
application/vnd.enliven nml;
application/vnd.epson.esf esf;
application/vnd.epson.msf msf;
application/vnd.epson.quickanime qam;
application/vnd.epson.salt slt;
application/vnd.epson.ssf ssf;
application/vnd.ericsson.quickcall qcall qca;
application/vnd.espass-espass+zip espass;
application/vnd.eszigno3+xml es3 et3;
application/vnd.etsi.asic-e+zip asice sce;
application/vnd.etsi.asic-s+zip asics;
application/vnd.etsi.timestamp-token tst;
application/vnd.evolv.ecig.profile ecigprofile;
application/vnd.evolv.ecig.settings ecig;
application/vnd.evolv.ecig.theme ecigtheme;
application/vnd.ezpix-album ez2;
application/vnd.ezpix-package ez3;
application/vnd.fastcopy-disk-image dim;
application/vnd.fdf fdf;
application/vnd.fdsn.mseed msd mseed;
application/vnd.fdsn.seed seed dataless;
application/vnd.filmit.zfc zfc;
application/vnd.FloGraphIt gph;
application/vnd.fluxtime.clip ftc;
application/vnd.font-fontforge-sfd sfd;
application/vnd.framemaker fm;
application/vnd.frogans.fnc fnc;
application/vnd.frogans.ltf ltf;
application/vnd.fsc.weblaunch fsc;
application/vnd.fujitsu.oasys oas;
application/vnd.fujitsu.oasys2 oa2;
application/vnd.fujitsu.oasys3 oa3;
application/vnd.fujitsu.oasysgp fg5;
application/vnd.fujitsu.oasysprs bh2;
application/vnd.fujixerox.ddd ddd;
application/vnd.fujixerox.docuworks xdw;
application/vnd.fujixerox.docuworks.binder xbd;
application/vnd.fujixerox.docuworks.container xct;
application/vnd.fuzzysheet fzs;
application/vnd.genomatix.tuxedo txd;
application/vnd.geocube+xml g3 g³;
application/vnd.geogebra.file ggb;
application/vnd.geogebra.tool ggt;
application/vnd.geometry-explorer gex gre;
application/vnd.geonext gxt;
application/vnd.geoplan g2w;
application/vnd.geospace g3w;
application/vnd.gmx gmx;
application/vnd.google-earth.kml+xml kml;
application/vnd.google-earth.kmz kmz;
application/vnd.grafeq gqf gqs;
application/vnd.groove-account gac;
application/vnd.groove-help ghf;
application/vnd.groove-identity-message gim;
application/vnd.groove-injector grv;
application/vnd.groove-tool-message gtm;
application/vnd.groove-tool-template tpl;
application/vnd.groove-vcard vcg;
application/vnd.hal+xml hal;
application/vnd.HandHeld-Entertainment+xml zmm;
application/vnd.hbci hbci hbc kom upa pkd bpd;
application/vnd.hdt hdt;
application/vnd.hhe.lesson-player les;
application/vnd.hp-HPGL hpgl;
application/vnd.hp-hpid hpi hpid;
application/vnd.hp-hps hps;
application/vnd.hp-jlyt jlt;
application/vnd.hp-PCL pcl;
application/vnd.hydrostatix.sof-data sfd-hdstx;
application/vnd.hzn-3d-crossword x3d;
application/vnd.ibm.electronic-media emm;
application/vnd.ibm.MiniPay mpy;
application/vnd.ibm.modcap list3820 listafp afp pseg3820;
application/vnd.ibm.rights-management irm;
application/vnd.ibm.secure-container sc;
application/vnd.iccprofile icc icm;
application/vnd.ieee.1905 1905.1;
application/vnd.igloader igl;
application/vnd.imagemeter.folder+zip imf;
application/vnd.imagemeter.image+zip imi;
application/vnd.immervision-ivp ivp;
application/vnd.immervision-ivu ivu;
application/vnd.ims.imsccv1p1 imscc;
application/vnd.insors.igm igm;
application/vnd.intercon.formnet xpw xpx;
application/vnd.intergeo i2g;
application/vnd.intu.qbo qbo;
application/vnd.intu.qfx qfx;
application/vnd.ipunplugged.rcprofile rcprofile;
application/vnd.irepository.package+xml irp;
application/vnd.is-xpr xpr;
application/vnd.isac.fcs fcs;
application/vnd.jam jam;
application/vnd.jcp.javame.midlet-rms rms;
application/vnd.jisp jisp;
application/vnd.joost.joda-archive joda;
application/vnd.kahootz ktz ktr;
application/vnd.kde.karbon karbon;
application/vnd.kde.kchart chrt;
application/vnd.kde.kformula kfo;
application/vnd.kde.kivio flw;
application/vnd.kde.kontour kon;
application/vnd.kde.kpresenter kpr kpt;
application/vnd.kde.kspread ksp;
application/vnd.kde.kword kwd kwt;
application/vnd.kenameaapp htke;
application/vnd.kidspiration kia;
application/vnd.Kinar kne knp sdf;
application/vnd.koan skp skd skm skt;
application/vnd.kodak-descriptor sse;
application/vnd.las.las+json lasjson;
application/vnd.las.las+xml lasxml;
application/vnd.llamagraphics.life-balance.desktop lbd;
application/vnd.llamagraphics.life-balance.exchange+xml lbe;
application/vnd.lotus-1-2-3 123 wk4 wk3 wk1;
application/vnd.lotus-approach apr vew;
application/vnd.lotus-freelance prz pre;
application/vnd.lotus-notes nsf ntf ndl ns4 ns3 ns2 nsh nsg;
application/vnd.lotus-organizer or3 or2 org;
application/vnd.lotus-screencam scm;
application/vnd.lotus-wordpro lwp sam;
application/vnd.macports.portpkg portpkg;
application/vnd.mapbox-vector-tile mvt;
application/vnd.marlin.drm.mdcf mdc;
application/vnd.maxmind.maxmind-db mmdb;
application/vnd.mcd mcd;
application/vnd.medcalcdata mc1;
application/vnd.mediastation.cdkey cdkey;
application/vnd.MFER mwf;
application/vnd.mfmp mfm;
application/vnd.micrografx.flo flo;
application/vnd.micrografx.igx igx;
application/vnd.mif mif;
application/vnd.Mobius.DAF daf;
application/vnd.Mobius.DIS dis;
application/vnd.Mobius.MBK mbk;
application/vnd.Mobius.MQY mqy;
application/vnd.Mobius.MSL msl;
application/vnd.Mobius.PLC plc;
application/vnd.Mobius.TXF txf;
application/vnd.mophun.application mpn;
application/vnd.mophun.certificate mpc;
application/vnd.mozilla.xul+xml xul;
application/vnd.ms-3mfdocument 3mf;
application/vnd.ms-artgalry cil;
application/vnd.ms-asf asf;
application/vnd.ms-cab-compressed cab;
application/vnd.ms-excel xls xlm xla xlc xlt xlw;
application/vnd.ms-excel.template.macroEnabled.12 xltm;
application/vnd.ms-excel.addin.macroEnabled.12 xlam;
application/vnd.ms-excel.sheet.binary.macroEnabled.12 xlsb;
application/vnd.ms-excel.sheet.macroEnabled.12 xlsm;
application/vnd.ms-fontobject eot;
application/vnd.ms-htmlhelp chm;
application/vnd.ms-ims ims;
application/vnd.ms-lrm lrm;
application/vnd.ms-officetheme thmx;
application/vnd.ms-powerpoint ppt pps pot;
application/vnd.ms-powerpoint.addin.macroEnabled.12 ppam;
application/vnd.ms-powerpoint.presentation.macroEnabled.12 pptm;
application/vnd.ms-powerpoint.slide.macroEnabled.12 sldm;
application/vnd.ms-powerpoint.slideshow.macroEnabled.12 ppsm;
application/vnd.ms-powerpoint.template.macroEnabled.12 potm;
application/vnd.ms-project mpp mpt;
application/vnd.ms-tnef tnef tnf;
application/vnd.ms-word.document.macroEnabled.12 docm;
application/vnd.ms-word.template.macroEnabled.12 dotm;
application/vnd.ms-works wcm wdb wks wps;
application/vnd.ms-wpl wpl;
application/vnd.ms-xpsdocument xps;
application/vnd.msa-disk-image msa;
application/vnd.mseq mseq;
application/vnd.multiad.creator crtr;
application/vnd.multiad.creator.cif cif;
application/vnd.musician mus;
application/vnd.muvee.style msty;
application/vnd.mynfc taglet;
application/vnd.nervana entity request bkm kcm;
application/vnd.nitf nitf;
application/vnd.neurolanguage.nlu nlu;
application/vnd.nintendo.nitro.rom nds;
application/vnd.nintendo.snes.rom sfc smc;
application/vnd.noblenet-directory nnd;
application/vnd.noblenet-sealer nns;
application/vnd.noblenet-web nnw;
application/vnd.nokia.n-gage.ac+xml ac;
application/vnd.nokia.n-gage.data ngdat;
application/vnd.nokia.n-gage.symbian.install n-gage;
application/vnd.nokia.radio-preset rpst;
application/vnd.nokia.radio-presets rpss;
application/vnd.novadigm.EDM edm;
application/vnd.novadigm.EDX edx;
application/vnd.novadigm.EXT ext;
application/vnd.oasis.opendocument.chart odc;
application/vnd.oasis.opendocument.chart-template otc;
application/vnd.oasis.opendocument.database odb;
application/vnd.oasis.opendocument.formula odf;
application/vnd.oasis.opendocument.graphics odg;
application/vnd.oasis.opendocument.graphics-template otg;
application/vnd.oasis.opendocument.image odi;
application/vnd.oasis.opendocument.image-template oti;
application/vnd.oasis.opendocument.presentation odp;
application/vnd.oasis.opendocument.presentation-template otp;
application/vnd.oasis.opendocument.spreadsheet ods;
application/vnd.oasis.opendocument.spreadsheet-template ots;
application/vnd.oasis.opendocument.text odt;
application/vnd.oasis.opendocument.text-master odm;
application/vnd.oasis.opendocument.text-template ott;
application/vnd.oasis.opendocument.text-web oth;
application/vnd.olpc-sugar xo;
application/vnd.oma.dd2+xml dd2;
application/vnd.onepager tam;
application/vnd.onepagertamp tamp;
application/vnd.onepagertamx tamx;
application/vnd.onepagertat tat;
application/vnd.onepagertatp tatp;
application/vnd.onepagertatx tatx;
application/vnd.openblox.game+xml obgx;
application/vnd.openblox.game-binary obg;
application/vnd.openeye.oeb oeb;
application/vnd.openofficeorg.extension oxt;
application/vnd.openstreetmap.data+xml osm;
application/vnd.openxmlformats-officedocument.presentationml.presentation pptx;
application/vnd.openxmlformats-officedocument.presentationml.slide sldx;
application/vnd.openxmlformats-officedocument.presentationml.slideshow ppsx;
application/vnd.openxmlformats-officedocument.presentationml.template potx;
application/vnd.openxmlformats-officedocument.spreadsheetml.sheet xlsx;
application/vnd.openxmlformats-officedocument.spreadsheetml.template xltx;
application/vnd.openxmlformats-officedocument.wordprocessingml.document docx;
application/vnd.openxmlformats-officedocument.wordprocessingml.template dotx;
application/vnd.osa.netdeploy ndc;
application/vnd.osgeo.mapguide.package mgp;
application/vnd.osgi.dp dp;
application/vnd.osgi.subsystem esa;
application/vnd.oxli.countgraph oxlicg;
application/vnd.palm prc pdb pqa oprc;
application/vnd.panoply plp;
application/vnd.pawaafile paw;
application/vnd.pg.format str;
application/vnd.pg.osasli ei6;
application/vnd.piaccess.application-license pil;
application/vnd.picsel efif;
application/vnd.pmi.widget wg;
application/vnd.pocketlearn plf;
application/vnd.powerbuilder6 pbd;
application/vnd.preminet preminet;
application/vnd.previewsystems.box box vbox;
application/vnd.proteus.magazine mgz;
application/vnd.publishare-delta-tree qps;
application/vnd.pvi.ptid1 ptid;
application/vnd.qualcomm.brew-app-res bar;
application/vnd.Quark.QuarkXPress qxd qxt qwd qwt qxl qxb;
application/vnd.quobject-quoxdocument quox quiz;
application/vnd.rainstor.data tree;
application/vnd.rar rar;
application/vnd.realvnc.bed bed;
application/vnd.recordare.musicxml mxl;
application/vnd.rig.cryptonote cryptonote;
application/vnd.route66.link66+xml link66;
application/vnd.sailingtracker.track st;
application/vnd.scribus scd sla slaz;
application/vnd.sealed.3df s3df;
application/vnd.sealed.csf scsf;
application/vnd.sealed.doc sdoc sdo s1w;
application/vnd.sealed.eml seml sem;
application/vnd.sealed.mht smht smh;
application/vnd.sealed.ppt sppt s1p;
application/vnd.sealed.tiff stif;
application/vnd.sealed.xls sxls sxl s1e;
application/vnd.sealedmedia.softseal.html stml s1h;
application/vnd.sealedmedia.softseal.pdf spdf spd s1a;
application/vnd.seemail see;
application/vnd.sema sema;
application/vnd.semd semd;
application/vnd.semf semf;
application/vnd.shana.informed.formdata ifm;
application/vnd.shana.informed.formtemplate itp;
application/vnd.shana.informed.interchange iif;
application/vnd.shana.informed.package ipk;
application/vnd.sigrok.session sr;
application/vnd.SimTech-MindMapper twd twds;
application/vnd.smaf mmf;
application/vnd.smart.notebook notebook;
application/vnd.smart.teacher teacher;
application/vnd.software602.filler.form+xml fo;
application/vnd.software602.filler.form-xml-zip zfo;
application/vnd.solent.sdkm+xml sdkm sdkd;
application/vnd.spotfire.dxp dxp;
application/vnd.spotfire.sfs sfs;
application/vnd.stepmania.package smzip;
application/vnd.stepmania.stepchart sm;
application/vnd.sun.wadl+xml wadl;
application/vnd.sus-calendar sus susp;
application/vnd.syncml+xml xsm;
application/vnd.syncml.dm+wbxml bdm;
application/vnd.syncml.dm+xml xdm;
application/vnd.syncml.dmddf+xml ddf;
application/vnd.tao.intent-module-archive tao;
application/vnd.tcpdump.pcap pcap cap dmp;
application/vnd.theqvd qvd;
application/vnd.tml vfr viaframe;
application/vnd.tmobile-livetv tmo;
application/vnd.trid.tpt tpt;
application/vnd.triscape.mxs mxs;
application/vnd.trueapp tra;
application/vnd.ufdl ufdl ufd frm;
application/vnd.uiq.theme utz;
application/vnd.umajin umj;
application/vnd.unity unityweb;
application/vnd.uoml+xml uoml uo;
application/vnd.uri-map urim urimap;
application/vnd.valve.source.material vmt;
application/vnd.vcx vcx;
application/vnd.vd-study mxi study-inter model-inter;
application/vnd.vectorworks vwx;
application/vnd.vidsoft.vidconference vsc;
application/vnd.visio vsd vst vsw vss;
application/vnd.visionary vis;
application/vnd.vsf vsf;
application/vnd.wap.sic sic;
application/vnd.wap.slc slc;
application/vnd.wap.wbxml wbxml;
application/vnd.wap.wmlc wmlc;
application/vnd.wap.wmlscriptc wmlsc;
application/vnd.webturbo wtb;
application/vnd.wfa.p2p p2p;
application/vnd.wfa.wsc wsc;
application/vnd.wmc wmc;
application/vnd.wolfram.mathematica.package m;
application/vnd.wolfram.player nbp;
application/vnd.wordperfect wpd;
application/vnd.wqd wqd;
application/vnd.wt.stf stf;
application/vnd.wv.csp+wbxml wv;
application/vnd.xara xar;
application/vnd.xfdl xfdl xfd;
application/vnd.xmpie.cpkg cpkg;
application/vnd.xmpie.dpkg dpkg;
application/vnd.xmpie.ppkg ppkg;
application/vnd.xmpie.xlim xlim;
application/vnd.yamaha.hv-dic hvd;
application/vnd.yamaha.hv-script hvs;
application/vnd.yamaha.hv-voice hvp;
application/vnd.yamaha.openscoreformat osf;
application/vnd.yamaha.smaf-audio saf;
application/vnd.yamaha.smaf-phrase spf;
application/vnd.yaoweme yme;
application/vnd.yellowriver-custom-menu cmp;
application/vnd.zul zir zirz;
application/vnd.zzazz.deck+xml zaz;
application/voicexml+xml vxml;
application/watcherinfo+xml wif;
application/widget wgt;
application/wsdl+xml wsdl;
application/wspolicy+xml wspolicy;
application/xcap-att+xml xav;
application/xcap-caps+xml xca;
application/xcap-diff+xml xdf;
application/xcap-el+xml xel;
application/xcap-error+xml xer;
application/xcap-ns+xml xns;
application/xhtml+xml xhtml xhtm xht;
application/xml-dtd dtd;
application/xop+xml xop;
application/xslt+xml xsl xslt;
application/xv+xml mxml xhvml xvml xvm;
application/yang yang;
application/yin+xml yin;
application/zip zip;
audio/32kadpcm 726;
audio/ac3 ac3;
audio/AMR amr;
audio/AMR-WB awb;
audio/asc acn;
audio/ATRAC-ADVANCED-LOSSLESS aal;
audio/ATRAC-X atx;
audio/ATRAC3 at3 aa3 omg;
audio/basic au snd;
audio/dls dls;
audio/EVRC evc;
audio/EVRCB evb;
audio/EVRCNW enw;
audio/EVRCWB evw;
audio/iLBC lbc;
audio/L16 l16;
audio/mobile-xmf mxmf;
audio/mp4 m4a;
audio/mpeg mp3 mpga mp1 mp2;
audio/ogg oga ogg opus spx;
audio/prs.sid sid psid;
audio/qcelp qcp;
audio/SMV smv;
audio/vnd.audikoz koz;
audio/vnd.dece.audio uva uvva;
audio/vnd.digital-winds eol;
audio/vnd.dolby.mlp mlp;
audio/vnd.dts dts;
audio/vnd.dts.hd dtshd;
audio/vnd.everad.plj plj;
audio/vnd.lucent.voice lvp;
audio/vnd.ms-playready.media.pya pya;
audio/vnd.nortel.vbk vbk;
audio/vnd.nuera.ecelp4800 ecelp4800;
audio/vnd.nuera.ecelp7470 ecelp7470;
audio/vnd.nuera.ecelp9600 ecelp9600;
audio/vnd.presonus.multitrack multitrack;
audio/vnd.rip rip;
audio/vnd.sealedmedia.softseal.mpeg smp3 smp s1m;
font/collection ttc;
font/otf otf;
font/ttf ttf;
font/woff woff;
font/woff2 woff2;
image/bmp bmp dib;
image/cgm cgm;
image/dicom-rle drle;
image/emf emf;
image/fits fits fit fts;
image/gif gif;
image/ief ief;
image/jls jls;
image/jp2 jp2 jpg2;
image/jpeg jpg jpeg jpe jfif;
image/jpm jpm jpgm;
image/jpx jpx jpf;
image/ktx ktx;
image/png png;
image/prs.btif btif btf;
image/prs.pti pti;
image/svg+xml svg svgz;
image/t38 t38;
image/tiff tiff tif;
image/tiff-fx tfx;
image/vnd.adobe.photoshop psd;
image/vnd.airzip.accelerator.azv azv;
image/vnd.dece.graphic uvi uvvi uvg uvvg;
image/vnd.djvu djvu djv;
image/vnd.dwg dwg;
image/vnd.dxf dxf;
image/vnd.fastbidsheet fbs;
image/vnd.fpx fpx;
image/vnd.fst fst;
image/vnd.fujixerox.edmics-mmr mmr;
image/vnd.fujixerox.edmics-rlc rlc;
image/vnd.globalgraphics.pgb pgb;
image/vnd.microsoft.icon ico;
image/vnd.mozilla.apng apng;
image/vnd.ms-modi mdi;
image/vnd.radiance hdr rgbe xyze;
image/vnd.sealed.png spng spn s1n;
image/vnd.sealedmedia.softseal.gif sgif sgi s1g;
image/vnd.sealedmedia.softseal.jpg sjpg sjp s1j;
image/vnd.tencent.tap tap;
image/vnd.valve.source.texture vtf;
image/vnd.wap.wbmp wbmp;
image/vnd.xiff xif;
image/vnd.zbrush.pcx pcx;
image/wmf wmf;
message/global u8msg;
message/global-delivery-status u8dsn;
message/global-disposition-notification u8mdn;
message/global-headers u8hdr;
message/rfc822 eml mail art;
model/gltf+json gltf;
model/iges igs iges;
model/mesh msh mesh silo;
model/vnd.collada+xml dae;
model/vnd.dwf dwf;
model/vnd.gdl gdl gsm win dor lmp rsm msm ism;
model/vnd.gtw gtw;
model/vnd.moml+xml moml;
model/vnd.mts mts;
model/vnd.opengex ogex;
model/vnd.parasolid.transmit.binary x_b xmt_bin;
model/vnd.parasolid.transmit.text x_t xmt_txt;
model/vnd.valve.source.compiled-map bsp;
model/vnd.vtu vtu;
model/vrml wrl vrml;
model/x3d+xml x3db;
model/x3d-vrml x3dv x3dvz;
multipart/vnd.bint.med-plus bmed;
multipart/voice-message vpm;
text/cache-manifest appcache manifest;
text/calendar ics ifb;
text/css css;
text/csv csv;
text/csv-schema csvs;
text/dns soa zone;
text/html html htm;
text/jcr-cnd cnd;
text/markdown markdown md;
text/mizar miz;
text/n3 n3;
text/plain txt asc text pm el c h cc hh cxx hxx f90 conf log;
text/provenance-notation provn;
text/prs.fallenstein.rst rst;
text/prs.lines.tag tag dsc;
text/richtext rtx;
text/sgml sgml sgm;
text/tab-separated-values tsv;
text/troff t tr roff;
text/turtle ttl;
text/uri-list uris uri;
text/vcard vcf vcard;
text/vnd.a a;
text/vnd.abc abc;
text/vnd.ascii-art ascii;
text/vnd.debian.copyright copyright;
text/vnd.DMClientScript dms;
text/vnd.dvb.subtitle sub;
text/vnd.esmertec.theme-descriptor jtd;
text/vnd.fly fly;
text/vnd.fmi.flexstor flx;
text/vnd.graphviz gv dot;
text/vnd.in3d.3dml 3dml 3dm;
text/vnd.in3d.spot spot spo;
text/vnd.ms-mediapackage mpf;
text/vnd.net2phone.commcenter.command ccc;
text/vnd.si.uricatalogue uric;
text/vnd.sun.j2me.app-descriptor jad;
text/vnd.trolltech.linguist ts;
text/vnd.wap.si si;
text/vnd.wap.sl sl;
text/vnd.wap.wml wml;
text/vnd.wap.wmlscript wmls;
text/xml xml xsd rng;
text/xml-external-parsed-entity ent;
video/3gpp 3gp 3gpp;
video/3gpp2 3g2 3gpp2;
video/iso.segment m4s;
video/mj2 mj2 mjp2;
video/mp4 mp4 mpg4 m4v;
video/mpeg mpeg mpg mpe m1v m2v;
video/ogg ogv;
video/quicktime mov qt;
video/vnd.dece.hd uvh uvvh;
video/vnd.dece.mobile uvm uvvm;
video/vnd.dece.mp4 uvu uvvu;
video/vnd.dece.pd uvp uvvp;
video/vnd.dece.sd uvs uvvs;
video/vnd.dece.video uvv uvvv;
video/vnd.dvb.file dvb;
video/vnd.fvt fvt;
video/vnd.mpegurl mxu m4u;
video/vnd.ms-playready.media.pyv pyv;
video/vnd.nokia.interleaved-multimedia nim;
video/vnd.radgamettools.bink bik bk2;
video/vnd.radgamettools.smacker smk;
video/vnd.sealed.mpeg1 smpg s11;
video/vnd.sealed.mpeg4 s14;
video/vnd.sealed.swf sswf ssw;
video/vnd.sealedmedia.softseal.mov smov smo s1q;
video/vnd.vivo viv;
application/mac-compactpro cpt;
application/metalink+xml metalink;
application/owl+xml owx;
application/rss+xml rss;
application/vnd.android.package-archive apk;
application/vnd.oma.dd+xml dd;
application/vnd.oma.drm.content dcf;
application/vnd.oma.drm.dcf o4a o4v;
application/vnd.oma.drm.message dm;
application/vnd.oma.drm.rights+wbxml drc;
application/vnd.oma.drm.rights+xml dr;
application/vnd.sun.xml.calc sxc;
application/vnd.sun.xml.calc.template stc;
application/vnd.sun.xml.draw sxd;
application/vnd.sun.xml.draw.template std;
application/vnd.sun.xml.impress sxi;
application/vnd.sun.xml.impress.template sti;
application/vnd.sun.xml.math sxm;
application/vnd.sun.xml.writer sxw;
application/vnd.sun.xml.writer.global sxg;
application/vnd.sun.xml.writer.template stw;
application/vnd.symbian.install sis;
application/vnd.wap.mms-message mms;
application/x-annodex anx;
application/x-bcpio bcpio;
application/x-bittorrent torrent;
application/x-bzip2 bz2;
application/x-cdlink vcd;
application/x-chrome-extension crx;
application/x-cpio cpio;
application/x-csh csh;
application/x-director dcr dir dxr;
application/x-dvi dvi;
application/x-futuresplash spl;
application/x-gtar gtar;
application/x-hdf hdf;
application/x-java-archive jar;
application/x-java-jnlp-file jnlp;
application/x-java-pack200 pack;
application/x-killustrator kil;
application/x-latex latex;
application/x-netcdf nc cdf;
application/x-perl pl;
application/x-rpm rpm;
application/x-sh sh;
application/x-shar shar;
application/x-stuffit sit;
application/x-sv4cpio sv4cpio;
application/x-sv4crc sv4crc;
application/x-tar tar;
application/x-tcl tcl;
application/x-tex tex;
application/x-texinfo texinfo texi;
application/x-troff-man man 1 2 3 4 5 6 7 8;
application/x-troff-me me;
application/x-troff-ms ms;
application/x-ustar ustar;
application/x-wais-source src;
application/x-xpinstall xpi;
application/x-xspf+xml xspf;
application/x-xz xz;
audio/midi mid midi kar;
audio/x-aiff aif aiff aifc;
audio/x-annodex axa;
audio/x-flac flac;
audio/x-matroska mka;
audio/x-mod mod ult uni m15 mtm 669 med;
audio/x-mpegurl m3u;
audio/x-ms-wax wax;
audio/x-ms-wma wma;
audio/x-pn-realaudio ram rm;
audio/x-realaudio ra;
audio/x-s3m s3m;
audio/x-stm stm;
audio/x-wav wav;
chemical/x-xyz xyz;
image/webp webp;
image/x-cmu-raster ras;
image/x-portable-anymap pnm;
image/x-portable-bitmap pbm;
image/x-portable-graymap pgm;
image/x-portable-pixmap ppm;
image/x-rgb rgb;
image/x-targa tga;
image/x-xbitmap xbm;
image/x-xpixmap xpm;
image/x-xwindowdump xwd;
text/html-sandboxed sandboxed;
text/x-pod pod;
text/x-setext etx;
video/webm webm;
video/x-annodex axv;
video/x-flv flv;
video/x-javafx fxm;
video/x-matroska mkv;
video/x-matroska-3d mk3d;
video/x-ms-asf asx;
video/x-ms-wm wm;
video/x-ms-wmv wmv;
video/x-ms-wmx wmx;
video/x-ms-wvx wvx;
video/x-msvideo avi;
video/x-sgi-movie movie;
x-conference/x-cooltalk ice;
x-epoc/x-sisx-app sisx;
}

View File

@@ -0,0 +1,55 @@
worker_processes 4;
pid /tmp/kvmd-nginx.pid;
# error_log /tmp/kvmd-nginx.error.log;
error_log stderr;
include /usr/share/kvmd/extras/*/nginx.ctx-main.conf;
events {
worker_connections 1024;
use epoll;
multi_accept on;
}
http {
types_hash_max_size 4096;
server_names_hash_bucket_size 128;
access_log off;
include mime-types.conf;
default_type application/octet-stream;
charset utf-8;
sendfile on;
tcp_nodelay on;
tcp_nopush on;
keepalive_timeout 10;
client_max_body_size 4k;
client_body_temp_path /tmp/kvmd-nginx/client_body_temp;
fastcgi_temp_path /tmp/kvmd-nginx/fastcgi_temp;
proxy_temp_path /tmp/kvmd-nginx/proxy_temp;
scgi_temp_path /tmp/kvmd-nginx/scgi_temp;
uwsgi_temp_path /tmp/kvmd-nginx/uwsgi_temp;
include kvmd.ctx-http.conf;
include /usr/share/kvmd/extras/*/nginx.ctx-http.conf;
server {
listen 8080;
include certbot.ctx-server.conf;
location / {
return 301 https://$host:4430$request_uri;
}
}
server {
listen 4430 ssl http2;
include ssl.conf;
include kvmd.ctx-server.conf;
include /usr/share/kvmd/extras/*/nginx.ctx-server.conf;
}
}

View File

@@ -0,0 +1,79 @@
worker_processes 4;
# error_log /tmp/kvmd-nginx.error.log;
error_log stderr;
include /usr/share/kvmd/extras/*/nginx.ctx-main.conf;
events {
worker_connections 1024;
use epoll;
multi_accept on;
}
http {
types_hash_max_size 4096;
server_names_hash_bucket_size 128;
access_log off;
include /etc/kvmd/nginx/mime-types.conf;
default_type application/octet-stream;
charset utf-8;
sendfile on;
tcp_nodelay on;
tcp_nopush on;
keepalive_timeout 10;
client_max_body_size 4k;
client_body_temp_path /tmp/kvmd-nginx/client_body_temp;
fastcgi_temp_path /tmp/kvmd-nginx/fastcgi_temp;
proxy_temp_path /tmp/kvmd-nginx/proxy_temp;
scgi_temp_path /tmp/kvmd-nginx/scgi_temp;
uwsgi_temp_path /tmp/kvmd-nginx/uwsgi_temp;
include /etc/kvmd/nginx/kvmd.ctx-http.conf;
include /usr/share/kvmd/extras/*/nginx.ctx-http.conf;
% if https_enabled:
server {
listen ${http_port};
% if ipv6_enabled:
listen [::]:${http_port};
% endif
include /etc/kvmd/nginx/certbot.ctx-server.conf;
location / {
% if https_port == 443:
return 301 https://$host$request_uri;
% else:
return 301 https://$host:${https_port}$request_uri;
% endif
}
}
server {
listen ${https_port} ssl http2;
% if ipv6_enabled:
listen [::]:${https_port} ssl http2;
% endif
include /etc/kvmd/nginx/ssl.conf;
include /etc/kvmd/nginx/kvmd.ctx-server.conf;
include /usr/share/kvmd/extras/*/nginx.ctx-server.conf;
}
% else:
server {
listen ${http_port};
% if ipv6_enabled:
listen [::]:${http_port};
% endif
include /etc/kvmd/nginx/certbot.ctx-server.conf;
include /etc/kvmd/nginx/kvmd.ctx-server.conf;
include /usr/share/kvmd/extras/*/nginx.ctx-server.conf;
}
% endif
}

View File

@@ -0,0 +1,5 @@
ssl_protocols TLSv1.3 TLSv1.2 TLSv1.1 TLSv1;
ssl_ciphers "EECDH+AESGCM:EDH+AESGCM:AES256+EECDH:AES256+EDH";
ssl_certificate ssl/server.crt;
ssl_certificate_key ssl/server.key;
add_header Strict-Transport-Security "max-age=31536000; includeSubDomains" always;

View File

@@ -0,0 +1,12 @@
-----BEGIN CERTIFICATE-----
MIIB1zCCAX2gAwIBAgIUfHNyb1wMmgGuQnbTZUYENGtW69UwCgYIKoZIzj0EAwIw
QTELMAkGA1UEBhMCVVMxDjAMBgNVBAoMBVBpS1ZNMQ4wDAYDVQQLDAVQaUtWTTES
MBAGA1UEAwwJbG9jYWxob3N0MB4XDTI0MTIzMDE2NTkyNFoXDTM0MTIyODE2NTky
NFowQTELMAkGA1UEBhMCVVMxDjAMBgNVBAoMBVBpS1ZNMQ4wDAYDVQQLDAVQaUtW
TTESMBAGA1UEAwwJbG9jYWxob3N0MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAE
TrSca0xuIbYA9axtmupRnu0nG5QVgkGBwOHr44SrJe/kTkRL/p0EC0iQo2ZXwork
6Z4kBNcUlYb2QkvBboqaWqNTMFEwHQYDVR0OBBYEFBhkv8k5r6L3eqz8zO6bQ0AT
mtFAMB8GA1UdIwQYMBaAFBhkv8k5r6L3eqz8zO6bQ0ATmtFAMA8GA1UdEwEB/wQF
MAMBAf8wCgYIKoZIzj0EAwIDSAAwRQIgbYxKLTqhxr13m75Vlil8a1uILYiv9j4D
cdTNXdoVTH0CIQCFSCXvt93o5GgNqhg0l3il66yuCqevHoDqOwQbP0/7PQ==
-----END CERTIFICATE-----

View File

@@ -0,0 +1,8 @@
-----BEGIN EC PARAMETERS-----
BggqhkjOPQMBBw==
-----END EC PARAMETERS-----
-----BEGIN EC PRIVATE KEY-----
MHcCAQEEIF+vBzNTRb0YW7hzHSWPaLydFqN4TJCjPo5W+5T2u2k5oAoGCCqGSM49
AwEHoUQDQgAETrSca0xuIbYA9axtmupRnu0nG5QVgkGBwOHr44SrJe/kTkRL/p0E
C0iQo2ZXwork6Z4kBNcUlYb2QkvBboqaWg==
-----END EC PRIVATE KEY-----

View File

@@ -0,0 +1,191 @@
kvmd:
info:
meta: kvmd_data/etc/kvmd/meta.yaml
extras: kvmd_data/usr/share/kvmd/extras
hw:
platform: kvmd_data/usr/share/kvmd/platform
vcgencmd_cmd: kvmd_data/usr/bin/vcgencmd
auth:
enabled: true
internal:
file: kvmd_data/etc/kvmd/htpasswd
totp:
secret:
file: kvmd_data/etc/kvmd/totp.secret
server:
unix: kvmd_data/run/kvmd/kvmd.sock
#unix_mode: 432
#unix_rm: true
atx:
type: disabled
hid:
type: ch9329
device: /dev/ttyUSB0
speed: 115200
read_timeout: 0.3
jiggler:
active: false
enabled: true
mouse_alt:
device: /dev/kvmd-hid-mouse-alt
keymap: kvmd_data/usr/share/kvmd/keymaps/en-us
msd:
#type: otg
remount_cmd: /bin/true
msd_path: /var/lib/kvmd/msd
normalfiles_path: NormalFiles
normalfiles_size: 256
ocr:
langs:
- eng
- chi_sim
streamer:
resolution:
default: 1920x1080
forever: true
desired_fps:
default: 30
max: 60
h264_bitrate:
default: 8000
cmd:
- "kvmd_data/usr/bin/ustreamer"
- "--device=/dev/video0"
- "--persistent"
- "--format=mjpeg"
- "--resolution={resolution}"
- "--desired-fps={desired_fps}"
- "--drop-same-frames=30"
- "--last-as-blank=0"
- "--unix={unix}"
- "--unix-rm"
- "--unix-mode=777"
- "--exit-on-parent-death"
- "--process-name-prefix={process_name_prefix}"
- "--notify-parent"
- "--no-log-colors"
- "--jpeg-sink=kvmd::ustreamer::jpeg"
- "--jpeg-sink-mode=0660"
- "--slowdown"
unix: kvmd_data/run/kvmd/ustreamer.sock
gpio:
drivers:
wol_server1:
type: wol
mac: 2c:56:dc:db:7c:1e
short_press:
type: cmd
cmd: [kvmd_data/etc/kvmd/atx.sh, short]
long_press:
type: cmd
cmd: [kvmd_data/etc/kvmd/atx.sh, long]
reset_press:
type: cmd
cmd: [kvmd_data/etc/kvmd/atx.sh, reset]
input1:
type: cmd
cmd: [kvmd_data/etc/kvmd/kvm_input.sh, 1]
input2:
type: cmd
cmd: [kvmd_data/etc/kvmd/kvm_input.sh, 2]
scheme:
wol_server1:
driver: wol_server1
pin: 0
mode: output
switch: false
short_button:
driver: short_press
pin: 0
mode: output
switch: false
long_button:
driver: long_press
pin: 0
mode: output
switch: false
reset_button:
driver: reset_press
pin: 0
mode: output
switch: false
input1-button:
driver: input1
pin: 0
mode: output
switch: false
input2-button:
driver: input2
pin: 0
mode: output
switch: false
view:
header:
title: 高级功能
table:
- ["#电源管理"]
- ["#短按(开/关机):", short_button|按下]
- ["#长按(强制关机):", long_button|按下]
- ["#重启:", reset_button|按下]
- []
- ["#网络唤醒"]
- ["#被控机设备", wol_server1|网络唤醒]
- []
- ["#KVM 切换"]
- ["#HDMI 1", input1-button|切换]
- ["#HDMI 2", input2-button|切换]
ipmi:
auth:
file: kvmd_data/etc/kvmd/ipmipasswd
vnc:
keymap: kvmd_data/usr/share/kvmd/keymaps/en-us
mouse_output: usb
server:
tls:
x509:
cert: kvmd_data/etc/kvmd/vnc/ssl/server.crt
key: kvmd_data/etc/kvmd/vnc/ssl/server.key
auth:
vncauth:
enabled: true
file: kvmd_data/etc/kvmd/vncpasswd
memsink:
jpeg:
sink: "kvmd::ustreamer::jpeg"
otgnet:
commands:
post_start_cmd:
- "/bin/true"
pre_stop_cmd:
- "/bin/true"
nginx:
http:
port: 8080
https:
port: 4430
janus:
cmd:
- "/bin/true"

View File

@@ -0,0 +1,89 @@
[unix_http_server]
file=/tmp/supervisor.sock
[supervisord]
nodaemon=true
user=root
[rpcinterface:supervisor]
supervisor.rpcinterface_factory = supervisor.rpcinterface:make_main_rpcinterface
[supervisorctl]
serverurl=unix:///tmp/supervisor.sock
[program:kvmd]
command=python -m kvmd.apps.kvmd --run
directory=/
autostart=true
autorestart=true
priority=10
stopasgroup=true
stdout_logfile=/dev/stdout
stdout_logfile_maxbytes = 0
redirect_stderr=true
[program:kvmd-janus]
command=python -m kvmd.apps.janus --run
autostart=true
autorestart=true
priority=13
stopasgroup=true
stdout_logfile=/dev/stdout
stdout_logfile_maxbytes = 0
redirect_stderr=true
[program:kvmd-nginx]
command=nginx -c /etc/kvmd/nginx/nginx.conf -g 'daemon off;user root; error_log stderr;'
autostart=true
autorestart=true
startsecs=10
priority=100
stopasgroup=true
stdout_logfile=/dev/stdout
stdout_logfile_maxbytes = 0
redirect_stderr=true
[program:clean_when_exit]
command=/etc/kvmd/clean_when_exit.sh
autostart=true
autorestart=true
startsecs=10
priority=200
stopasgroup=true
stdout_logfile=/dev/stdout
stdout_logfile_maxbytes = 0
redirect_stderr=true
[program:kvmd-webterm]
command=/usr/local/bin/ttyd --interface=/run/kvmd/ttyd.sock --port=0 --writable /bin/bash -c '/etc/kvmd/armbain-motd; bash'
directory=/
autostart=true
autorestart=true
priority=14
stopasgroup=true
stdout_logfile=/dev/stdout
stdout_logfile_maxbytes = 0
redirect_stderr=true
[program:kvmd-vnc]
command=python -m kvmd.apps.vnc --run
directory=/
autostart=true
autorestart=true
priority=11
stopasgroup=true
stdout_logfile=/dev/stdout
stdout_logfile_maxbytes = 0
redirect_stderr=true
[program:kvmd-ipmi]
command=python -m kvmd.apps.ipmi --run
directory=/
autostart=true
autorestart=true
priority=12
stopasgroup=true
stdout_logfile=/dev/stdout
stdout_logfile_maxbytes = 0
redirect_stderr=true

View File

View File

@@ -0,0 +1,12 @@
-----BEGIN CERTIFICATE-----
MIIB2DCCAX2gAwIBAgIUfRsPya5RSXxEDeSBi1iJiYfMfnQwCgYIKoZIzj0EAwIw
QTELMAkGA1UEBhMCVVMxDjAMBgNVBAoMBVBpS1ZNMQ4wDAYDVQQLDAVQaUtWTTES
MBAGA1UEAwwJbG9jYWxob3N0MB4XDTI0MTIzMDE2NTkyNFoXDTM0MTIyODE2NTky
NFowQTELMAkGA1UEBhMCVVMxDjAMBgNVBAoMBVBpS1ZNMQ4wDAYDVQQLDAVQaUtW
TTESMBAGA1UEAwwJbG9jYWxob3N0MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAE
8OfAJl4ck4EnmpO9LvvBusatRFPm5qCYM1Al5nxql647sy87PjBvbSM1L9CLuj1z
3wAQnGmFD1DDGyNAFm9uZ6NTMFEwHQYDVR0OBBYEFFZxf760XzrpI9nkte8AyuHZ
qs2+MB8GA1UdIwQYMBaAFFZxf760XzrpI9nkte8AyuHZqs2+MA8GA1UdEwEB/wQF
MAMBAf8wCgYIKoZIzj0EAwIDSQAwRgIhAMc/ymoJgZ+d+7UnFOhr1UfUAayxirqM
+iaa0hGmBkqmAiEAscvZYM5Le2q0KdjPydcuTPBXi13q68zSDaib1jKQ0ZM=
-----END CERTIFICATE-----

View File

@@ -0,0 +1,8 @@
-----BEGIN EC PARAMETERS-----
BggqhkjOPQMBBw==
-----END EC PARAMETERS-----
-----BEGIN EC PRIVATE KEY-----
MHcCAQEEIG08yMcwf2DxWHbTand3dE0hbQgk3uAv2FRl6Umyrz0boAoGCCqGSM49
AwEHoUQDQgAE8OfAJl4ck4EnmpO9LvvBusatRFPm5qCYM1Al5nxql647sy87PjBv
bSM1L9CLuj1z3wAQnGmFD1DDGyNAFm9uZw==
-----END EC PRIVATE KEY-----

View File

@@ -0,0 +1,12 @@
# This file describes the credentials for VNCAuth. The left part before arrow is a passphrase
# for VNCAuth. The right part is username and password with which the user can access to KVMD API.
# The arrow is used as a separator and shows the relationship of user registrations on the system.
#
# Never use the same passwords for VNC and IPMI users. This default configuration is shown here
# for example only.
#
# If this file does not contain any entries, VNCAuth will be disabled and you will only be able
# to login in using your KVMD username and password using VeNCrypt methods.
# pa$$phr@se -> admin:password
admin -> admin:admin

View File

@@ -0,0 +1 @@
/* Here you can customize the Web UI */