init
This commit is contained in:
120
cgi-bin/mj-endpoints.cgi
Executable file
120
cgi-bin/mj-endpoints.cgi
Executable file
@ -0,0 +1,120 @@
|
||||
#!/usr/bin/haserl
|
||||
<%in p/common.cgi %>
|
||||
<% page_title="Majestic Endpoints" %>
|
||||
|
||||
<%in p/header.cgi %>
|
||||
|
||||
<div class="row row-cols-1 row-cols-md-2 row-cols-xl-3 g-4 mb-4">
|
||||
<div class="col">
|
||||
<h3>Video</h3>
|
||||
<dl>
|
||||
<dt class="cp2cb">rtsp://root:12345@<%= $network_address %>/stream=0</dt>
|
||||
<dd>RTSP main stream.</dd>
|
||||
<dt class="cp2cb">rtsp://root:12345@<%= $network_address %>/stream=1</dt>
|
||||
<dd>RTSP sub stream.</dd>
|
||||
<dt class="cp2cb">http://<%= $network_address %>/mjpeg</dt>
|
||||
<dd>MJPEG video stream.</dd>
|
||||
<dt class="cp2cb">http://<%= $network_address %>/video.mp4</dt>
|
||||
<dd>MP4 video stream.</dd>
|
||||
<dt class="cp2cb">http://<%= $network_address %>/hls</dt>
|
||||
<dd>HLS live-streaming in web browser.</dd>
|
||||
<dt class="cp2cb">http://<%= $network_address %>/mjpeg.html</dt>
|
||||
<dd>MJPEG live-streaming in web browser.</dd>
|
||||
</dl>
|
||||
</div>
|
||||
|
||||
<div class="col">
|
||||
<h3>Audio</h3>
|
||||
<dl>
|
||||
<dt class="cp2cb">http://<%= $network_address %>/audio.opus</dt>
|
||||
<dd>Opus audio stream.</dd>
|
||||
<dt class="cp2cb">http://<%= $network_address %>/audio.m4a</dt>
|
||||
<dd>AAC audio stream.</dd>
|
||||
<dt class="cp2cb">http://<%= $network_address %>/audio.pcm</dt>
|
||||
<dd>Raw PCM audio stream.</dd>
|
||||
<dt class="cp2cb">http://<%= $network_address %>/audio.alaw</dt>
|
||||
<dd>A-law compressed audio stream.</dd>
|
||||
<dt class="cp2cb">http://<%= $network_address %>/audio.ulaw</dt>
|
||||
<dd>μ-law compressed audio stream.</dd>
|
||||
<dt class="cp2cb">http://<%= $network_address %>/audio.g711a</dt>
|
||||
<dd>G.711 A-law audio stream.</dd>
|
||||
<dt class="cp2cb">http://<%= $network_address %>/play_audio</dt>
|
||||
<dd>Play audio file on camera speaker.</dd>
|
||||
</dl>
|
||||
</div>
|
||||
|
||||
<div class="col">
|
||||
<h3>Images</h3>
|
||||
<dl>
|
||||
<dt class="cp2cb">http://<%= $network_address %>/image.jpg</dt>
|
||||
<dd>Snapshot in JPEG format.</dd>
|
||||
<dt class="cp2cb">http://<%= $network_address %>/image.heif</dt>
|
||||
<dd>Snapshot in HEIF format.</dd>
|
||||
<dt class="cp2cb">http://<%= $network_address %>/image.yuv420</dt>
|
||||
<dd>Snapshot in YUV420 format.</dd>
|
||||
</dl>
|
||||
</div>
|
||||
|
||||
<div class="col">
|
||||
<h3>Night</h3>
|
||||
<dl>
|
||||
<dt class="cp2cb">http://<%= $network_address %>/night/on</dt>
|
||||
<dd>Turn on night mode.</dd>
|
||||
<dt class="cp2cb">http://<%= $network_address %>/night/off</dt>
|
||||
<dd>Turn off night mode.</dd>
|
||||
<dt class="cp2cb">http://<%= $network_address %>/night/toggle</dt>
|
||||
<dd>Toggle night mode.</dd>
|
||||
<dt class="cp2cb">http://<%= $network_address %>/night/ircut</dt>
|
||||
<dd>Toggle camera ircut.</dd>
|
||||
<dt class="cp2cb">http://<%= $network_address %>/night/light</dt>
|
||||
<dd>Toggle camera light.</dd>
|
||||
</dl>
|
||||
</div>
|
||||
|
||||
<div class="col">
|
||||
<h3>Monitoring</h3>
|
||||
<dl>
|
||||
<dt class="cp2cb">http://<%= $network_address %>/api/v1/config.json</dt>
|
||||
<dd>Default Majestic config in JSON format.</dd>
|
||||
<dt class="cp2cb">http://<%= $network_address %>/api/v1/config.schema.json</dt>
|
||||
<dd>Available Majestic settings in JSON format.</dd>
|
||||
<dt><a href="https://github.com/openipc/wiki/blob/master/en/majestic-config.md">https://github.com/openipc/wiki</a></dt>
|
||||
<dd>Available Majestic settings in YAML format.</dd>
|
||||
<dt class="cp2cb">http://<%= $network_address %>/metrics</dt>
|
||||
<dd>Node exporter for <a href="https://prometheus.io">Prometheus</a>.</dd>
|
||||
</dl>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<script>
|
||||
function initializeCopyToClipboard() {
|
||||
document.querySelectorAll(".cp2cb").forEach(function (element) {
|
||||
element.title = "Click to copy to clipboard";
|
||||
element.addEventListener("click", function (event) {
|
||||
event.target.preventDefault;
|
||||
event.target.animate({ color: 'red' }, 500);
|
||||
if (navigator.clipboard && window.isSecureContext) {
|
||||
navigator.clipboard.writeText(event.target.textContent).then(r => playChime(r));
|
||||
} else {
|
||||
let textArea = document.createElement("textarea");
|
||||
textArea.value = event.target.textContent;
|
||||
textArea.style.position = "fixed";
|
||||
textArea.style.left = "-999999px";
|
||||
textArea.style.top = "-999999px";
|
||||
document.body.appendChild(textArea);
|
||||
textArea.focus();
|
||||
textArea.select();
|
||||
return new Promise((res, rej) => {
|
||||
document.execCommand('copy') ? res() : rej();
|
||||
textArea.remove();
|
||||
});
|
||||
}
|
||||
})
|
||||
})
|
||||
}
|
||||
|
||||
window.onload = function () {
|
||||
initializeCopyToClipboard();
|
||||
}
|
||||
</script>
|
||||
<%in p/footer.cgi %>
|
||||
Reference in New Issue
Block a user