Internet radio browser GUI for music/video streams from various directory services.

⌈⌋ ⎇ branch:  streamtuner2


Artifact [4dfebf285a]

Artifact 4dfebf285a4cad00705c9beacb75e294c45e4a94:

Wiki page [project state] by mario on 2016-10-08 05:04:50.
D 2016-10-08T05:04:50.910
L project\sstate
N text/x-markdown
P 7ba120e52896ba7b95aa857ab59ca216fdf53124
U mario
W 2195
## Maintenance

* No feature freeze yet.
* But as the application is mostly complete, there are only sporadic releases.

## Stability
 
* The application runs mostly stable. The GUI interfaces are workable.
* It's supposed to run on Gtk2 and Gtk3. Albeit threading is still an issue.
* Python3 support is achieved.  
* There haven't been any optimizations regarding memory usage and 
  performance.
* The current internal API is still somewhat underdocumented. 
 
## Current [bugs](rptview?rn=1)

* Gtk crashes when switching channel tabs (threading issue)
* <s>Audio- and list-format support is not very robust / needs better API</s>
* <s>Not all keyboard shortcuts work</s>
* <s>Some internal UI state flags remain, that need to be substituted with Gtk callbacks.</s>
 
## Features

* Treeview layouts and lists are dynamically from datamap[] structure and stream{} dicts.
* Channel categories are often built-in defaults (can be freshened up however) 
* Config vars and cache data get stored as JSON in ~/.config/streamtuner2/ 
* Plugin meta data spec is mostly used now for configuration description, and plugin management.
 
## Missing

* Localization (not actually planned for)
* Plugin for adding new stations
* Cron mode for recording timer

## Security notes

* FAULTY DATA: Directory scrapers use partially complex regular expressions - which is probably not a security risk, but can lead to inexact decoding. Albeit HTML entitiy cleanup and constraints are in place. Charset fixups are done on a case-by-case basis. Doesn't help for Xiph however (already receiving garbage there). As for fragile, some DOM/PyQuery extraction targets are less exact even.
* MEDIUM: integrity checking for .pls / .m3u references and files is only done on conversion. (Set audio players to use `%xspf` for maximum filtering.)
* <s>HIGH RISK: no verification of downloaded favicon image files (ico/png), 
 as they are passed to gtk.gdk.Pixbuf (OTOH data pre-filtered by Google)</s>
* MEDIUM: audio players / decoders are easily affected by buffer overflows 
  from corrupt mp3/stream data. However nothing we can preassert here, streamtuner2 just passes them on.

Z c43759a1e94a6861c1ae304df7e475b2