# device
data['netcam_url'] = ui['proto'] + '://' + ui['host']
if ui['port']:
- data['netcam_url'] += ':' + ui['port']
+ data['netcam_url'] += ':' + str(ui['port'])
data['netcam_url'] += ui['uri']
local_config = config.get_camera(camera_id)
if utils.local_camera(local_config):
+ # certain parameters cannot be changed via ui_config;
+ # we must preserve existing values for those params
+ local_ui_config = config.camera_dict_to_ui(local_config)
+ ui_config.setdefault('enabled', local_ui_config['enabled'])
+ ui_config['proto'] = local_ui_config['proto']
+ ui_config['host'] = local_ui_config['host']
+ ui_config['port'] = local_ui_config['port']
+ ui_config['uri'] = local_ui_config['uri']
+ ui_config['username'] = local_ui_config['username']
+ ui_config['password'] = local_ui_config['password']
+
local_config = config.camera_ui_to_dict(ui_config)
config.set_camera(camera_id, local_config)
on_finish(None, True) # (no error, motion needs restart)
-
+
else: # remote camera
# update the camera locally
local_config['@enabled'] = ui_config['enabled']
if ui_config.has_key('name'):
# never disable a remote camera on the remote host itself
- del ui_config['enabled']
def on_finish_wrapper(error=None):
return on_finish(error, False)
result = update.perform_update(version)
self.finish_json(result)
+
+
+class VersionHandler(BaseHandler):
+ def get(self):
+ self.render('version.html',
+ version=update.get_version(),
+ hostname=socket.gethostname())
def set_config(local_config, ui_config, callback):
- host = local_config.get('@host', local_config.get('host'))
- port = local_config.get('@port', local_config.get('port'))
- username = local_config.get('@username', local_config.get('username'))
- password = local_config.get('@password', local_config.get('password'))
- uri = local_config.get('@uri', local_config.get('uri')) or ''
- camera_id = local_config.get('@remote_camera_id', local_config.get('remote_camera_id'))
+ host = local_config.get('@host')
+ port = local_config.get('@port')
+ username = local_config.get('@username')
+ password = local_config.get('@password')
+ uri = local_config.get('@uri') or ''
+ camera_id = local_config.get('@remote_camera_id')
+
+ # make sure these values never get to the remote instance
+ local_config.pop('enabled', None)
+ local_config.pop('proto', None)
+ local_config.pop('host', None)
+ local_config.pop('port', None)
+ local_config.pop('uri', None)
+ local_config.pop('username', None)
+ local_config.pop('password', None)
logging.debug('setting config for remote camera %(id)s on %(url)s' % {
'id': camera_id,
(r'^/movie/(?P<camera_id>\d+)/(?P<op>list)/?$', handlers.MovieHandler),
(r'^/movie/(?P<camera_id>\d+)/(?P<op>download|preview)/(?P<filename>.+)/?$', handlers.MovieHandler),
(r'^/update/?$', handlers.UpdateHandler),
+ (r'^/version/?$', handlers.VersionHandler),
(r'^.*$', handlers.NotFoundHandler),
],
debug=False,
def test_netcam_url(data, callback):
+ data = dict(data)
+ data.setdefault('proto', 'http')
+ data.setdefault('host', '127.0.0.1')
+ data.setdefault('port', '80')
+ data.setdefault('uri', '')
+ data.setdefault('username', None)
+ data.setdefault('password', None)
+
url = '%(proto)s://%(host)s%(port)s%(uri)s' % {
'proto': data['proto'],
'host': data['host'],