print('SMB_SHARES require root privileges')
return False
- if settings.ENABLE_REBOOT:
- print('reboot requires root privileges')
- return False
+# if settings.ENABLE_REBOOT:
+# print('reboot requires root privileges')
+# return False
try:
import tornado # @UnusedImport
def post(self, op):
if op == 'shutdown':
self.shut_down()
+
+ elif op == 'reboot':
+ self.reboot()
def shut_down(self):
IOLoop.instance().add_timeout(datetime.timedelta(seconds=2), powerctl.shut_down)
+ def reboot(self):
+ IOLoop.instance().add_timeout(datetime.timedelta(seconds=2), powerctl.reboot)
+
class VersionHandler(BaseHandler):
def get(self):
(r'^/movie/(?P<camera_id>\d+)/(?P<op>download|preview|delete)/(?P<filename>.+?)/?$', handlers.MovieHandler),
(r'^/movie/(?P<camera_id>\d+)/(?P<op>delete_all)/(?P<group>.+?)/?$', handlers.MovieHandler),
(r'^/update/?$', handlers.UpdateHandler),
- (r'^/power/(?P<op>shutdown)/?$', handlers.PowerHandler),
+ (r'^/power/(?P<op>shutdown|reboot)/?$', handlers.PowerHandler),
(r'^/version/?$', handlers.VersionHandler),
(r'^/login/?$', handlers.LoginHandler),
(r'^.*$', handlers.NotFoundHandler),
}
div.update-button,
-div.shut-down-button {
+div.shut-down-button,
+div.reboot-button {
position: relative;
height: 1.5em;
line-height: 1.5em;
background: #317CAD;
}
-div.shut-down-button {
+div.shut-down-button,
+div.reboot-button {
background: #c0392b;
}
background: #3498db;
}
-div.shut-down-button:HOVER {
+div.shut-down-button:HOVER,
+div.reboot-button:HOVER {
background: #D43F2F;
}
background: #317CAD;
}
-div.shut-down-button:ACTIVE {
+div.shut-down-button:ACTIVE,
+div.reboot-button:ACTIVE {
background: #B03427;
}
doShutDown();
});
+ /* reboot button */
+ $('#rebootButton').click(function () {
+ doReboot();
+ });
+
/* whenever the window is resized,
* if a modal dialog is visible, it should be repositioned */
$(window).resize(updateModalDialogPosition);
});
}
+function doReboot() {
+ runConfirmDialog('Really reboot?', function () {
+ ajax('POST', '/power/reboot/');
+ setTimeout(function () {
+ refreshInterval = 1000000;
+ showModalDialog('<div class="modal-progress"></div>');
+ var shutDown = false;
+
+ function checkServer() {
+ ajax('GET', '/', null,
+ function () {
+ if (!shutDown) {
+ setTimeout(checkServer, 1000);
+ }
+ else {
+ runAlertDialog('The system has been rebooted!', function () {
+ window.location.reload(true);
+ });
+ }
+ },
+ function () {
+ shutDown = true; /* the first error indicates the system was shut down */
+ }
+ );
+ }
+
+ checkServer();
+ }, 10);
+ });
+}
+
function doRemCamera() {
if (Object.keys(pushConfigs).length) {
return runAlertDialog('Please apply the modified settings first!');
<td class="settings-item-value"><div class="button shut-down-button" id="shutDownButton">Shut Down</div></td>
<td><span class="help-mark" title="shuts down the system">?</span></td>
</tr>
+ <tr class="settings-item advanced-setting{% if not enable_reboot %} hidden{% endif %}">
+ <td class="settings-item-label"><span class="settings-item-label"></span></td>
+ <td class="settings-item-value"><div class="button reboot-button" id="rebootButton">Reboot</div></td>
+ <td><span class="help-mark" title="reboots the system">?</span></td>
+ </tr>
</table>
<div class="settings-section-title advanced-setting{% if not wpa_supplicant %} hidden{% endif %}"><input type="checkbox" class="styled section wifi" id="wifiSwitch">Wireless Network</div>