mirror of
https://github.com/scottlamb/moonfire-nvr.git
synced 2024-12-26 23:25:55 -05:00
422cd2a75e
Some caveats: * it doesn't record the peer IP yet, which makes it harder to verify sessions are valid. This is a little annoying to do in hyper now (see hyperium/hyper#1410). The direct peer might not be what we want right now anyway because there's no TLS support yet (see #27). In the meantime, the sane way to expose Moonfire NVR to the Internet is via a proxy server, and recording the proxy's IP is not useful. Maybe better to interpret a RFC 7239 Forwarded header (and/or the older X-Forwarded-{For,Proto} headers). * it doesn't ever use Secure (https-only) cookies, for a similar reason. It's not safe to use even with a tls proxy until this is fixed. * there's no "moonfire-nvr config" support for inspecting/invalidating sessions yet. * in debug builds, logging in is crazy slow. See libpasta/libpasta#9. Some notes: * I removed the Javascript "no-use-before-defined" lint, as some of the functions form a cycle. * Fixed #20 along the way. I needed to add support for properly returning non-OK HTTP statuses to signal unauthorized and such. * I removed the Access-Control-Allow-Origin header support, which was at odds with the "SameSite=lax" in the cookie header. The "yarn start" method for running a local proxy server accomplishes the same thing as the Access-Control-Allow-Origin support in a more secure manner.
81 lines
1.1 KiB
CSS
81 lines
1.1 KiB
CSS
body {
|
|
font-family: Arial, Helvetica, sans-serif;
|
|
}
|
|
#nav {
|
|
float: left;
|
|
}
|
|
#session {
|
|
float: right;
|
|
}
|
|
|
|
#datetime .ui-datepicker {
|
|
width: 100%;
|
|
}
|
|
|
|
#videos {
|
|
display: inline-block;
|
|
padding-top: 0.5em;
|
|
padding-left: 1em;
|
|
padding-right: 1em;
|
|
}
|
|
#videos tbody:after {
|
|
content: "";
|
|
display: block;
|
|
height: 3ex;
|
|
}
|
|
table.videos {
|
|
border-collapse: collapse;
|
|
}
|
|
tbody tr.name {
|
|
font-size: 110%;
|
|
background-color: #eee;
|
|
}
|
|
tbody tr.name th {
|
|
border-bottom: 1px solid #666;
|
|
}
|
|
tbody tr.hdr {
|
|
color: #555;
|
|
font-size: 90%;
|
|
}
|
|
tr.r:hover {
|
|
background-color: #ddd;
|
|
}
|
|
tr.r td {
|
|
font-size: 80%;
|
|
cursor: pointer;
|
|
}
|
|
tr.r th,
|
|
tr.r td {
|
|
border: 0;
|
|
padding: 0.5ex 1.5em;
|
|
text-align: right;
|
|
}
|
|
|
|
fieldset {
|
|
font-size: 80%;
|
|
}
|
|
fieldset legend {
|
|
font-size: 120%;
|
|
font-weight: bold;
|
|
}
|
|
|
|
#from, #to {
|
|
padding-right: 0.75em;
|
|
}
|
|
#st {
|
|
width: 100%;
|
|
}
|
|
|
|
#range {
|
|
padding: 0.5em 0;
|
|
}
|
|
.ui-dialog .ui-dialog-content {
|
|
overflow: visible; /* remove stupid scroll bars when resizing. */
|
|
padding: 0;
|
|
}
|
|
|
|
video {
|
|
width: 100%;
|
|
height: 100%;
|
|
}
|