Beta v2.5.2-dev ICY-META v2.2 GPL v2 C • Autotools / VS2022

Mcaster1DNAS

A Digital Network Audio Server forked from Icecast2 / Icecast-KH with ICY-META v2.2 extended metadata, YAML configuration, static mount point definitions, a built-in song history API, an HTML5 browser audio player, and a Windows-native GUI with NSIS installer. Dual-platform: Linux (Autotools) and Windows (VS2022).

ICY 2.2
Metadata Protocol
60+
Metadata Fields
2
Platforms
9330/9443
Default Ports
GPL v2
License

What is Mcaster1DNAS?

Mcaster1DNAS is a streaming media server descended from the Icecast2 / Icecast-KH lineage, extended with modern protocol support, a YAML configuration layer alongside the traditional XML config, per-listener SSL enforcement, and a significantly enhanced web interface. It runs as a system service on Linux and as both a service and a native GUI application on Windows.

Icecast2 (Xiph.Org Foundation)
Icecast-KH (Karl Heyes)
Mcaster1DNAS (MediaCast1)

Linux — Primary Platform

  • C daemon — Autotools (autoconf + automake)
  • Service on ports 9330 (HTTP) / 9443 (HTTPS)
  • Debian, Ubuntu, Fedora, Rocky, Arch, macOS
  • XSL admin interface + public status pages
  • Full ICY 2.2 metadata update UI
  • Song history API + browser audio player
  • GitHub Actions CI/CD pipeline

Windows — Native GUI

  • Visual Studio 2022, MSVC v143, MFC
  • mcaster1Service.exe — Windows service
  • mcaster1win.exe — GUI sidecar (ports 9033/9344)
  • Resizable dialog: Stats, Config, Log, SSL tabs
  • Real-time log viewer with color-coded output
  • NSIS installer — 5.3 MB; Start Menu + service shortcuts
  • CLI: -c, -s, --ssl-gencert, -v

Key Features

ICY-META v2.2 Protocol

60+ extended metadata fields covering station identity, DJ info, show programming, social links, content flags, and broadcast parameters. Dual-prefix fallback (icy-meta-* / icy2-*). Full ICY 2.2 field update UI in the admin interface.

HTTPS & Per-Listener SSL

Secure by default on port 9443. Per-listener SSL enforcement configurable per mount. Built-in SSL certificate generator (--ssl-gencert). OpenSSL-based, zero external dependency for cert generation.

YAML Configuration

Full YAML configuration layer runs alongside the traditional XML config. Supports song-history-limit, mount types, ICY 2.2 defaults, domain name, and worker thread count. libyaml-based with CRT DLL boundary safety.

Static Mount Points

Three static mount types always present in status pages regardless of source connection: podcast (purple), socialcast (pink), and on-demand (amber). Live source mounts are tagged green.

Song History API

In-memory ring buffer tracks last N played tracks (default 25, configurable, 0 = unlimited). Deduplication for consecutive identical titles. Back-fills ended_at for time-on-air accuracy. Public at /songdata.xsl, admin at /admin/songdata.

HTML5 Browser Audio Player

Built-in web player in both admin and public interfaces. Real-time metadata polling every 5 seconds. VU meters via Web Audio API AnalyserNode. Volume with localStorage persistence. Keyboard shortcuts: Space = play/pause, Esc = stop.

Track History Pages

Rich table: mount, artist/title, quality badge, played at, on-air duration, listener count, and one-click lookup icons for MusicBrainz, Last.fm, Discogs, and AllMusic. Animated "Now Playing" pulsing dot on the current track row.

Full Codec Stats

MP3, Opus, Ogg Vorbis, AAC, FLAC, Speex, and Theora audio formats supported. Per-stream codec stats publicly exposed: audio_samplerate, audio_channels, audio_codecid, bitrate, and quality badge.

Authentication

HTTP Basic Auth for admin endpoints. Separate source password for ICY SOURCE connections. Admin credentials configurable in YAML or XML config. Default admin/hackme — change before production deployment.

Audio Formats & Protocol Support

Format MIME Type ICY Metadata Codec Stats Exposed Notes
MP3audio/mpeg MPEG-1/2 Layer III; ICY in-band metadata
Ogg Vorbisaudio/ogg Vorbis comment metadata
AAC / AAC+audio/aac LC, HE-AAC, HE-AAC v2
Opusaudio/ogg; codecs=opus ICY StreamTitle via opus_set_tag()
FLACaudio/flac Lossless; archival streams
Speexaudio/ogg Legacy VoIP codec
Theoravideo/ogg Video container; audio track exposed

Streaming Protocols

  • ICY SOURCE — Icecast2 / Shoutcast-compatible HTTP PUT source protocol
  • HTTP/HTTPS listener connections with Range request support
  • ICY in-band metadata blocks for MP3 streams (configurable interval)
  • ICY 2.2 extended headers via HTTP PUT to source mount
  • YP directory server support (configurable, connection logged)

Web Interface

The Mcaster1DNAS web interface is built entirely from XSL stylesheets applied to the server’s live XML stats feed. Shared header/footer templates provide consistent navigation and branding across all admin and public pages.

Admin Interface (/admin/)

Live stats dashboard, mount management, source kill controls, metadata update UI with a dropdown of 55+ ICY 2.2 fields, track history table with music service lookup icons, server log viewer, and type-aware mount badges.

Public Status Pages (/)

Public stream listing at /status.xsl, track history at /songdata.xsl, and per-stream stats. Shared HTML5/CSS3 header/footer templates. Static mounts always shown; source mounts tagged green when live.

Web Audio Player

Embedded HTML5 player in both admin and public views. Polls metadata every 5s, VU meters via Web Audio API, volume with localStorage. Available at /admin/webplayer.xsl and /web/webplayer.xsl.

API Endpoints

  • GET /admin/stats — Full XML server statistics (admin-authenticated)
  • GET /status-json.xsl — JSON stats including all ICY 2.2 fields per mount
  • GET /admin/songdata — Song history XML (admin-authenticated)
  • GET /songdata.xsl — Song history public page (no auth)
  • GET /admin/listmounts — Active source mount list (admin-authenticated)
  • GET /admin/metadata?mount=…&mode=updinfo&song=… — ICY 1.x metadata update
  • PUT /{mount} — ICY 2.2 extended metadata push (source-authenticated)
  • GET /admin/mcaster1stats — Mcaster1-specific proprietary stats XML

Windows GUI & Service

The Windows build ships two binaries in one NSIS installer. The service binary runs headlessly under Windows Service Control Manager; the GUI binary runs as a sidecar on separate ports and provides a resizable administration window.

Windows Service (mcaster1Service.exe)

Registers as a Windows service via NSIS installer. Auto-starts on boot. Uses mcaster1dnas-console.yaml as default config. Sets service status to RUNNING within 30 seconds (SCM timeout compliance).

GUI Sidecar (mcaster1win.exe)

MFC resizable dialog with four tabs: Stats, Config, Log, SSL. Real-time log viewer using _fsopen(..., _SH_DENYNO) for live tailing. Live system clock (updates every second). Auto-version from git commit hash in the window title.

NSIS Installer (5.3 MB)

8 installation sections: Core, Web, Docs, SSL Tests, Service, Start Menu, Desktop Shortcuts, Firewall Rules. Installs to C:\Program Files (x86)\Mcaster1\Mcaster1DNAS\. Start Menu shortcuts with UAC elevation for service start/stop.

Technical Specifications

Linux Build

LanguageC (C99/C11)
Build SystemGNU Autotools (autoconf, automake)
Configlibyaml (YAML) + libxml2 (legacy XML)
TLSOpenSSL
Template Enginelibxslt (XSL stylesheets)
Service Ports9330 (HTTP) / 9443 (HTTPS)
DistrosDebian, Ubuntu, Fedora, Rocky, Arch, macOS
CI/CDGitHub Actions

Windows Build

LanguageC (service) + C++ MFC (GUI)
Build SystemVisual Studio 2022, MSVC v143
UI FrameworkMFC + ResizableLib
PlatformWin32 (x86), Windows 10/11
GUI Ports9033 (HTTP) / 9344 (HTTPS) sidecar
InstallerNSIS — 5.3 MB, 8 sections
Servicemcaster1Service.exe via SCM
Configmcaster1dnas-console.yaml

Development Roadmap

All phases marked complete have working code in the repository. Planned phases are tracked in TODO.md.

v2.5.0 Complete

Rebranded from Icecast-KH. YAML config, modern HTML5/CSS3 web interface, ICY-META v2.1+, live system clock, YP logging, default ports 9330/9443.

v2.5.1-rc1 Complete

Song history API (ring buffer, dedup, back-fill ended_at), track history pages with music service lookup icons, HTML5 browser audio player with VU meters, Opus ICY metadata, full public codec stats, shared XSL header/footer templates, Windows VS2022 support.

v2.5.2-dev Complete

ICY 2.2 protocol (60+ field struct, dual-prefix fallback), static mount points (podcast / socialcast / on-demand always in status), metadata update UI with 55+ field dropdown, type-aware mount badges, Windows NSIS installer (5.3 MB), OpenSSL flag fixes.

v2.6.1 Planned

Podcast features: RSS 2.0 feed generation, audio metadata parsing (ID3/Vorbis tags), admin + public podcast pages (XSL), per-mount recording config, live-stream recording engine, hybrid mount points (live + on-demand fallback).

v2.6.2 Planned

Security & Authentication: SSH key authentication for ICY2, ICY2 metadata validation, config-based metadata defaults, rate limiting.

v2.7.0 Planned

UI/UX enhancements: dark mode toggle, real-time dashboard (WebSocket/SSE), enhanced stream cards, listener analytics, WCAG 2.1 AA accessibility.

v2.8.0 Planned

Performance & scalability: HTTP/2 and HTTP/3 support, improved caching, database integration (SQLite/PostgreSQL), load balancing, enhanced relay system.

Open Source — GPL v2

Mcaster1DNAS descends from Icecast2 and Icecast-KH, extended and maintained by David St. John. Released under the GNU General Public License v2. Contributions, issues, and pull requests welcome.