Commit Graph

577 Commits

Author SHA1 Message Date
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