Fabio Manganiello
8168cd3ab3
Don't default on logging.INFO level if another level is set in the configuration, and apply the same logging level also to the web server [ closes #162 ]
2021-02-13 15:13:07 +01:00
Fabio Manganiello
b3c28f6773
Added support for JWT token-based authentication
2021-02-12 22:43:34 +01:00
Fabio Manganiello
30d5cdcb00
Generated new dist files for the web app
2021-02-11 23:58:36 +01:00
Fabio Manganiello
2427cceb5e
Migration completed for the zigbee.mqtt web panel
2021-02-11 23:53:05 +01:00
Fabio Manganiello
db80240209
zigbee2mqtt web panel migration [WIP]
2021-02-09 02:33:56 +01:00
Fabio Manganiello
86e6ffd18d
Zigbee web panel migration [WIP]
2021-02-08 02:04:59 +01:00
Fabio Manganiello
ef63c3769e
Cast request headers to dict before adding them to the event
2021-01-31 00:16:44 +01:00
Fabio Manganiello
fddf2006e4
Added headers argument to webhook event
2021-01-31 00:01:58 +01:00
Fabio Manganiello
a0bf227573
Fixed trailing column in wss: protocol
2021-01-30 23:21:52 +01:00
Fabio Manganiello
7a7e00bea2
Migrated music.snapcast UI
2021-01-22 01:00:49 +01:00
Fabio Manganiello
370a7d4c15
Added frontend support for Plex
2021-01-18 01:28:10 +01:00
Fabio Manganiello
85f56cf98c
New media panel [WIP]
2021-01-14 00:15:35 +01:00
Fabio Manganiello
6ae76f1f38
Migrating media plugins [WIP]
2021-01-05 00:50:24 +01:00
Fabio Manganiello
67d3b40772
Finalized new music.mpd web interface
2021-01-02 14:33:01 +01:00
Fabio Manganiello
d2887b7454
Implemented search in music.mpd
2021-01-01 15:58:56 +01:00
fabio-eiq
d10649e1f1
Support for token over Authorization: Bearer header
2020-12-31 15:36:48 +01:00
Fabio Manganiello
e127f2597c
music.mpd refactor WIP
2020-12-31 01:36:02 +01:00
Fabio Manganiello
3eb7f01d38
Updated dist files
2020-12-26 17:43:00 +01:00
Fabio Manganiello
57304e8d7e
Music buttons should have no background
2020-12-26 17:41:12 +01:00
Fabio Manganiello
b4fc734a15
music.mpd panel migration - WIP
2020-12-26 15:03:12 +01:00
Fabio Manganiello
bc3e0b8634
Support for plugin panels embedded into dashboards
2020-12-17 02:09:23 +01:00
Fabio Manganiello
1726cbd96a
Optimized panel size for tablet
2020-12-16 22:31:04 +01:00
Fabio Manganiello
e5c8adfc1b
Fixed and expanded integration tests to deal with HTTP user authentication
2020-12-16 02:10:37 +01:00
Fabio Manganiello
049a48e156
Fixed modified property Vue warning
2020-12-15 21:32:39 +01:00
Fabio Manganiello
5d4f4b0378
Support for subscribe-once/unsubscribe frontend events mechanisms
2020-12-15 00:01:28 +01:00
Fabio Manganiello
5e7c6c26c9
Migrating lights panel WIP
2020-12-14 02:13:55 +01:00
Fabio Manganiello
2de1e3ebe6
Lights panel migration - WIP
2020-12-09 21:16:07 +01:00
Fabio Manganiello
79179746a7
Fixed websocket reconnection logic
2020-12-09 20:40:22 +01:00
Fabio Manganiello
fc718c907a
Migrating light.hue panel WIP
2020-12-03 00:59:35 +01:00
Fabio Manganiello
0cd120f492
New template for index panel
2020-11-30 20:57:00 +01:00
Fabio Manganiello
c3f01c198f
Keep track of the user authentication state
2020-11-28 15:32:07 +01:00
Fabio Manganiello
229b2de566
The /execute endpoint should require authentication as well
2020-11-28 15:28:09 +01:00
Fabio Manganiello
dea547a491
Migrated Pushbullet component
2020-11-28 01:12:54 +01:00
Fabio Manganiello
1036358b28
Use a $watch-based system to register subscribe handlers when the events component is not yet ready instead of relying on setTimeout hacks
2020-11-28 00:29:22 +01:00
Fabio Manganiello
8f477fa335
Migrated voice assistant component
2020-11-27 23:12:10 +01:00
Fabio Manganiello
3c6f3c5a21
Migrated login and register components
2020-11-26 23:43:16 +01:00
Fabio Manganiello
0902099855
Migrated RSS news widget
2020-11-26 17:11:03 +01:00
Fabio Manganiello
3c9a633907
Fixed carousel style
2020-11-26 12:53:34 +01:00
Fabio Manganiello
1e193f8346
Added new static files
2020-11-26 12:41:56 +01:00
Fabio Manganiello
9af02ba886
Carousel default font increased
2020-11-26 12:27:42 +01:00
Fabio Manganiello
221bcc058b
Need static/js and static/css as well
2020-11-26 12:02:41 +01:00
Fabio Manganiello
04cb2324aa
Removed dashboard configuration from HttpBackend, removed old HTTP
...
static files and replaced them with Vue app target dist/ directory.
2020-11-26 11:54:28 +01:00
Fabio Manganiello
887a0e5e88
Webapp dist files
2020-11-26 11:44:08 +01:00
Fabio Manganiello
cc3e52c69d
Migrated ImageCarousel widget
2020-11-26 00:26:10 +01:00
Fabio Manganiello
243e56b194
Added support for rows on dashboard and music widget
2020-11-23 00:44:31 +01:00
Fabio Manganiello
ecf6a844dd
Added support for refreshSeconds on dashboard level
2020-11-22 14:26:25 +01:00
Fabio Manganiello
62b651789a
Migrated DateTimeWeather and Calendar widgets
2020-11-22 12:57:28 +01:00
Fabio Manganiello
39abdfe40a
New Vue.js template for dashbord WIP
2020-11-21 01:12:08 +01:00
Fabio Manganiello
9179f35a82
Support for row height for dashboard widgets
2020-11-11 22:28:43 +01:00
Fabio Manganiello
7947c1031d
More robust frontend reaction in case of race conditions on player state events
2020-09-29 15:58:23 +02:00
Fabio Manganiello
f3a9dc4ef5
Added navigator icon for media.gstreamer plugin
2020-09-29 15:35:29 +02:00
Fabio Manganiello
05b0a7f14d
Added GStreamer media plugin [ closes #151 ]
2020-09-29 15:32:40 +02:00
Fabio Manganiello
0a9c4fc3a7
Added GStreamer camera plugin [relates to #151 ]
2020-09-28 22:10:56 +02:00
Fabio Manganiello
f2a654bdec
Reset camera.android.ipcam stylesheet
2020-09-27 19:47:21 +02:00
Fabio Manganiello
07336d3272
Fixed login redirect page [ closes #154 ]
2020-09-27 17:20:14 +02:00
Fabio Manganiello
959cc8b75b
Added navigator icon for ffmpeg camera
2020-09-27 17:09:52 +02:00
Fabio Manganiello
df1e03f0af
Added FFmpeg camera plugin [relates to #150 ]
2020-09-27 12:52:07 +02:00
Fabio Manganiello
b21193dc74
Added camera.ffmpeg plugin web panel
2020-09-27 03:09:14 +02:00
Fabio Manganiello
9ad6188b5d
New js file for camera.pi plugin
2020-09-27 02:52:20 +02:00
Fabio Manganiello
31f2c5152c
New template file for camera.pi
2020-09-27 02:47:38 +02:00
Fabio Manganiello
c269c62fe6
Refactored logging names
2020-09-27 01:33:38 +02:00
Fabio Manganiello
09f9e974b1
Camera plugins refactor
2020-09-25 17:19:43 +02:00
Fabio Manganiello
9623752e19
Fixed module name typo
2020-09-08 17:57:18 +02:00
Fabio Manganiello
53ddbad7ce
Refactored MLX90640 plugin and HTTP route to work with direct BytesIO - it improves performance over using temporary files or base64-encoded responses
2020-09-08 17:51:46 +02:00
Fabio Manganiello
ac02becba8
Switched RSS HTML digests style to inline CSS for better client cross-compatibility and added docstring to RssUpdates
2020-09-05 16:54:08 +02:00
Fabio Manganiello
13642cc42e
Possibility to customize the CSS in the generated RSS digests
2020-09-05 01:48:28 +02:00
Fabio Manganiello
d6f653d834
Using named arguments for formatting the parsed content of a feed
2020-09-05 01:43:33 +02:00
Fabio Manganiello
dc254d6474
Also include the link in an RSS feed digest
2020-09-05 01:39:16 +02:00
Fabio Manganiello
e9d4ed3911
Added more source fields to the RSS NewFeedEvent
2020-09-05 00:50:04 +02:00
Fabio Manganiello
907bc0f75b
Added rtorrent integration [ closes #120 ]
2020-09-03 13:08:42 +02:00
Fabio Manganiello
737c135996
More robust logic to pass procedures to the index.html template
2020-08-31 21:32:00 +02:00
Fabio Manganiello
edd2235cbc
Removed old reference to __plugins__ in kodi.js - using `inspect.get_config` endpoint instead.
2020-08-31 18:31:15 +02:00
Fabio Manganiello
7e8bef40cd
Added Zeroconf integration [ closes #105 ]
2020-08-14 00:36:39 +02:00
Fabio Manganiello
a6730d5252
Added generated CSS folder (prevents pyScss dependencies for binary builds)
2020-07-19 22:41:37 +02:00
Fabio Manganiello
1e15bb5606
Changed favicon
2020-07-01 01:08:31 +02:00
Fabio Manganiello
b32232b46e
Prevent a tight loop in HttpPoll if one of the requests fails
2020-07-01 00:53:23 +02:00
Fabio Manganiello
f20cb4df5b
No need to override background-color in main for dashboard
2020-05-23 12:26:45 +02:00
Fabio Manganiello
97343e97de
background-image for dashboard CSS
2020-05-23 12:22:56 +02:00
Fabio Manganiello
d6b509e98a
Replaced fullscreen auto logic with button toggle
2020-05-20 16:15:08 +02:00
Fabio Manganiello
82162c3c5e
Apply fullscreen to document.documentElement instead of getting the body
2020-05-20 15:58:28 +02:00
Fabio Manganiello
7e0a91d839
Portable implementation of fullscreen JS methods
2020-05-20 15:47:17 +02:00
Fabio Manganiello
e44dfbc169
Added fullscreen support in webpanel and dashboard
2020-05-20 15:29:49 +02:00
Fabio Manganiello
aa66b81b7b
Fixed webhook event management
2020-05-09 01:47:12 +02:00
Fabio Manganiello
d0ccd65214
Added Samsung smart TV web plugin
2020-05-03 17:21:16 +02:00
Fabio Manganiello
1cf93199d0
Adaptive dashboard widget height
2020-05-01 15:03:13 +02:00
Fabio Manganiello
42d29ca1f6
LINT fixes
2020-04-23 18:33:57 +02:00
Fabio Manganiello
8440320031
Don't swallow the stack trace in backend.http.request if a request fails
2020-04-22 23:46:05 +00:00
Fabio Manganiello
f7d644c32d
get_procedures() can now return Python function objects as well.
...
This means that the JSON encoder must act accordingly and parse
the function object into an encodable string.
2020-04-12 22:56:12 +02:00
Fabio Manganiello
b490344632
Fixed missing static_folder issue on settings page and JS document race condition
2020-03-29 13:47:22 +02:00
Fabio Manganiello
13c25f94d5
Better fix for the calendar widget font size
2020-03-24 17:23:48 +01:00
Fabio Manganiello
9e32f1fb42
Tweaked font-size for upcoming event and other events in calendar widget
2020-03-24 17:14:13 +01:00
Fabio Manganiello
a388e8dd83
Reduced font-size for calendar events to prevent overflow on smaller screens
2020-03-24 17:06:14 +01:00
Fabio Manganiello
03968928e7
Don't do QRcode plugin base imports, or the web app may fail if the dependencies are not installed
2020-03-24 10:29:22 +01:00
Fabio Manganiello
4ece49bfe7
Added missing string format parameter
2020-03-24 09:11:07 +01:00
Fabio Manganiello
c9db887505
Added QR code/barcode integration [ closes #119 ]
2020-03-10 00:07:21 +01:00
Fabio Manganiello
535b2ec083
Changed mpd filter to dict on the frontend as well
2020-03-08 13:07:35 +01:00
Fabio Manganiello
76800e00b1
Use the right handlers for Zigbee network online/offline events
2020-02-25 18:38:44 +01:00
Fabio Manganiello
f74c44c7fb
There can be many Zigbee property set events; don't trigger a full refresh on all of them and only update the impacted devices instead
2020-02-25 18:13:11 +01:00
Fabio Manganiello
2d3c61173d
Added Zigbee web panel ( closes #123 )
2020-02-23 22:54:50 +01:00
Fabio Manganiello
f8f3d2e310
Show default node number instead of empty string if name is not set
2020-02-22 01:10:36 +01:00
Fabio Manganiello
424077fdbc
Completed ZWave web panel (see #123 )
2020-02-22 01:00:52 +01:00
Fabio Manganiello
98727c4f31
Added support for values in Z-Wave web panel (see #123 )
2020-02-20 02:34:35 +01:00
Fabio Manganiello
fcef7af6a4
Adding Z-Wave web panel ( #123 ) [WIP]
2020-02-10 00:39:32 +01:00
Fabio Manganiello
c5adc141ea
More robust mechanism for websocket message send section locking
2020-02-06 19:30:40 +01:00
Fabio Manganiello
ca030c9b25
Websocket notifications delivery should be thread-safe.
...
If multiple threads process events and notify the websocket
clients at the same time then we may end up with inconsistent
messages delivered on the websocket (and websockets is not
designed to handle such cases). Protecting the send call with
a per-socket lock makes sure that we only write one message
at the time for a certain client.
2020-02-06 01:04:36 +01:00
Fabio Manganiello
8caa170676
Don't consider the trailing / in pre-select tab mode
2020-02-01 00:17:11 +01:00
Fabio Manganiello
b02b30656c
Using /#[plugin.name] as a URL hint for selecting a tab on load.
...
Closes #83
2020-01-31 20:29:47 +01:00
Fabio Manganiello
eff21c0720
Added /plugin/<plugin_name> route for single plugin view (see #83 )
2020-01-23 00:27:36 +01:00
Fabio Manganiello
f3b50d0de1
Using the Github link for the flag-icon.css instead of cloning the whole submodule
2020-01-20 22:38:13 +01:00
Fabio Manganiello
c44de5e2d7
Grouped common CSS and JS includes into separate templates
2020-01-19 14:47:51 +01:00
Fabio Manganiello
4e45c1d0bc
Removed font-awesome full submodule clone. Use the CDN-provided all.css file instead.
...
It won't work if the webapp runs on a device not connected to the internet,
but it saves a lot of installation space.
2020-01-18 19:59:02 +01:00
Fabio Manganiello
3e2a9c0401
Skip torrent status responses with no url.
2020-01-07 09:59:45 +01:00
Fabio Manganiello
9134a231b3
success=true will always be in the response: deal with it
2020-01-07 09:46:26 +01:00
Fabio Manganiello
49a7ee643e
- Added Buienradar integration
...
- Refactored weather plugin/backend as Darksky plugin/backend
2019-12-31 08:51:19 +01:00
Fabio Manganiello
931ab9d673
Removed debug print
2019-12-29 16:55:50 +01:00
Fabio Manganiello
ba6c890a42
Refactored and improved camera plugin
2019-12-29 16:28:07 +01:00
Fabio Manganiello
7ecb27463c
Added missing '@'
2019-12-24 14:04:23 +01:00
Fabio Manganiello
ba31d4f4c9
Fixed parameter access
2019-12-24 14:00:06 +01:00
Fabio Manganiello
2edb3f0944
Added button for refreshing available cameras
2019-12-24 13:52:14 +01:00
Fabio Manganiello
ef58cc9e32
Support for username/password in camera URLs if authentication is required
2019-12-24 13:52:14 +01:00
Fabio Manganiello
a23f5446da
Added GPIO web panel
2019-12-22 18:10:30 +01:00
Fabio Manganiello
93a3c72d4e
Added camera.android.ipcam web panel
2019-12-18 01:00:56 +01:00
Fabio Manganiello
416c9ceb93
Fixed picamera mjpeg stream
2019-12-17 22:44:15 +01:00
Fabio Manganiello
634aeec58d
Refactored camera.pi endpoints
2019-12-17 21:51:55 +01:00
Fabio Manganiello
17af488b32
Using an io memory buffer to write the streamed images instead of a
...
physical file to improve streaming performance
2019-12-17 21:32:56 +01:00
Fabio Manganiello
60d5e7a0f6
Response cast fix
2019-12-17 20:00:08 +01:00
Fabio Manganiello
fb744dbc74
Added picamera streaming route and web panel tab
2019-12-17 19:54:38 +01:00
Fabio Manganiello
8c41110145
Added bluetooth plugin (see #89 )
2019-12-11 18:05:17 +01:00
Fabio Manganiello
a6488e15fe
Don't treat the execute tab as a special tab in the web panel,
...
otherwise configurations with enabled_plugins/disabled_plugins
won't work with it
2019-12-08 17:33:21 +01:00
Fabio Manganiello
be5c5d365c
Added execute tab to webpanel
2019-12-08 16:25:03 +01:00
Fabio Manganiello
d38746d278
Moved imports for extra dependencies inside the methods where they are actually used
2019-12-01 23:35:05 +01:00
Fabio Manganiello
f281411b2e
Set the light property before the any_on/all_on check on the group
2019-12-01 16:33:48 +01:00
Fabio Manganiello
3bbb6cf053
Include dev version of vue.js if available in the HTTP static/js
...
folder, otherwise include the minified version
2019-12-01 16:33:48 +01:00
Fabio Manganiello
f98a440200
Support for explicit enabled_plugins/disabled_plugins on webpanel index
2019-11-22 00:00:14 +01:00
Fabio Manganiello
9914d4ef0b
Handling CSS and fonts properly in RSSUpdates digests
2019-10-13 12:43:18 +02:00
Fabio Manganiello
4c72646759
typo
2019-10-08 10:24:48 +00:00
Fabio Manganiello
ca41f6b8cf
Torrent download from web panel should be asynchronous
2019-10-08 10:14:45 +00:00
Fabio Manganiello
313a195831
Support for torrent direct download through magnet link in web panel
2019-09-29 17:48:30 +02:00
Fabio Manganiello
a17dba3ec6
LINT warnings fix
2019-09-26 19:23:38 +02:00
Fabio Manganiello
168b1b0e5a
Finalized camera.ir.mlx90640 web interface
2019-09-26 18:33:44 +02:00
Fabio Manganiello
d7dc74beed
Added web plugin for mlx90640 infrared camera
2019-09-26 11:15:18 +02:00
Fabio Manganiello
8bfe875483
We don't need to fail hard in backend.http if the backend is configured
...
to run the web server externally but without spawning uswgi directly
(e.g. if nginx takes care of spawning and wrapping the uwsgi instance)
2019-08-14 20:02:13 +02:00
Fabio Manganiello
1ca7feb506
Small fix for the font size on mobile
2019-07-28 23:32:52 +02:00
Fabio Manganiello
1f2f293778
Redirect mercury-parser.js stderr to stdout. Moreover, if an error occurs while parsing a link from an RSS feed we should report the link that raised the error, not the URL of the parent feed
2019-07-25 16:34:00 +00:00
Fabio Manganiello
44e27e6c62
Log the link we are trying to parse (useful for debugging parsing issues)
2019-07-25 18:23:28 +02:00
Fabio Manganiello
34433a363b
Call sound.stop_recording upon audio stream stop so we won't have hanging streams with no clients connected
2019-07-25 14:01:09 +02:00
Fabio Manganiello
6aaa2fa1ea
extract_content is supposed to be a boolean
2019-07-25 01:09:16 +02:00
Fabio Manganiello
5293f5b203
#73 : Implemented wrapper plugin for the new Node.js mercury-parser.
...
As the Mercury reader web API is deprecated, and the only available
implementation is the open source mercury-parser, node, npm and
@postlight/mercury-parser have to be added as dependencies for the
http.webpage plugin (or at least for the `simplify` action).
2019-07-24 19:02:53 +02:00
Fabio Manganiello
43ca3a6f94
Added support for streaming audio from an input source over HTTP
2019-07-23 18:22:00 +02:00
Fabio Manganiello
426f064459
"Remember me" options on session should leave the cookie for a longer
...
time (e.g. one year), it should be browser-session-only otherwise
2019-07-23 00:31:17 +02:00