Change Shoutcast casing.

This commit is contained in:
Buster "Silver Eagle" Neece 2022-07-01 02:57:49 -05:00
parent 1179baab65
commit 6c87447736
No known key found for this signature in database
GPG Key ID: F1D2E64A0005E80E
19 changed files with 845 additions and 765 deletions

View File

@ -353,7 +353,7 @@ release channel, you can take advantage of these new features and fixes.
- You can now clear the entire upcoming song queue with a single button click.
- If you are using the SHOUTcast broadcasting software, you can input your user ID and license ID directly via the
- If you are using the Shoutcast broadcasting software, you can input your user ID and license ID directly via the
station profile.
## Code Quality/Technical Changes
@ -510,7 +510,7 @@ release channel, you can take advantage of these new features and fixes.
## Bug Fixes
- Remote relays to legacy SHOUTcast 1 installations should once again work as expected (#4408).
- Remote relays to legacy Shoutcast 1 installations should once again work as expected (#4408).
- An issue causing localized date/time formats to not appear on some station management pages was fixed (#4394).
@ -1040,7 +1040,7 @@ stable version before making these major changes.
you those permissions. (#3097)
- Fixed a bug where you could continue into AzuraCast without finishing setup. (#2958)
- Icecast now uses the same SSL certificate your web connection uses via LetsEncrypt setup. (#2969)
- Connecting to a SHOUTcast 1 remote relay works again. (#2989)
- Connecting to a Shoutcast 1 remote relay works again. (#2989)
- The "Play" icon will now properly switch between playing and not-playing states for only the actively playing item. (
# 3170)
@ -1581,7 +1581,7 @@ of new improvements have rolled out over the last month, along with a ton of bug
time zone setting, but schedules were based on UTC and constantly had to be converted back and forth from the user's
local time. This conversion caused a number of problems. To address them, we completely restructured the time zone
system. Now, each _station_ has its own time zone, and all scheduled playlists are based on this time zone. Liquidsoap
and Icecast/SHOUTcast are also run in this time zone, so schedule times (and logs) will always be consistent.
and Icecast/Shoutcast are also run in this time zone, so schedule times (and logs) will always be consistent.
- **API Parity**: We've done a _lot_ of work to make all of the core functionality of AzuraCast available via our REST
API, and we're pleased to announce that as of this release, all major functions are possible entirely via API calls,
@ -1826,7 +1826,7 @@ incremental update on the roadmap to our version 1.0 release.
itself. This helps to preserve the self-contained nature of AzuraCast and avoid unnecessary downtime caused by
third-party services.
- You can now install another version of SHOUTcast even if a different version is already installed.
- You can now install another version of Shoutcast even if a different version is already installed.
## Bug Fixes
@ -1895,7 +1895,7 @@ incremental update on the roadmap to our version 1.0 release.
itself. This helps to preserve the self-contained nature of AzuraCast and avoid unnecessary downtime caused by
third-party services.
- You can now install another version of SHOUTcast even if a different version is already installed.
- You can now install another version of Shoutcast even if a different version is already installed.
## Bug Fixes
@ -1921,17 +1921,17 @@ update status.
## Major Updates
- **SHOUTcast 2 DNAS is no longer bundled with AzuraCast.** While SHOUTcast has been a popular offering that was bundled
- **Shoutcast 2 DNAS is no longer bundled with AzuraCast.** While Shoutcast has been a popular offering that was bundled
with AzuraCast after significant demand, it has always been non-free, proprietary software, the only component in the
AzuraCast stack that is not free and open-source. With the release of SHOUTcast's
AzuraCast stack that is not free and open-source. With the release of Shoutcast's
new ["freemium" pricing structure](https://www.shoutcast.com/Pricing) has also come a new, more aggressive license
associated with distribution of the software. As such, AzuraCast can no longer bundle SHOUTcast 2 DNAS with new
associated with distribution of the software. As such, AzuraCast can no longer bundle Shoutcast 2 DNAS with new
installations, and we strongly recommend that any stations that can use Icecast do so. We do still support the
software, however, and you can manually install it by uploading the `.tar.gz` file provided by SHOUTcast into a new
software, however, and you can manually install it by uploading the `.tar.gz` file provided by Shoutcast into a new
page in the system administration.
- **Our support for Icecast is now even better suited for commercial radio stations.** Along with our withdrawal of
out-of-the-box support for SHOUTcast, we've been working hard to make improvements to our Icecast integration so it
out-of-the-box support for Shoutcast, we've been working hard to make improvements to our Icecast integration so it
can better serve commercial radio stations that depend on reliable, accurate reporting. If you're using the latest
version of AzuraCast, you will now see much more accurate information on your listeners, especially if you're using
the Docker installation or operating behind CloudFlare protection.
@ -1952,8 +1952,8 @@ update status.
- **The core "Now Playing" library is a standalone PHP library now.** We're always looking for new ways to give back to
the open-source software community. Now, along with [AzuraForms](https://github.com/AzuraCast/azuraforms), we have
spun off our [NowPlaying](https://github.com/AzuraCast/nowplaying) library to be a standalone component you can
include in your own PHP code. It's very useful for abstracting out the differences between Icecast, SHOUTcast 1 and
SHOUTcast 2 sources into a single return format.
include in your own PHP code. It's very useful for abstracting out the differences between Icecast, Shoutcast 1 and
Shoutcast 2 sources into a single return format.
- **AzuraCast now has early support for plugins.** Many of you have wanted to customize the internal workings of
AzuraCast without needing to fork the main codebase and maintain your own copy. You can now do this with the help of

View File

@ -93,7 +93,7 @@ return function (App\Event\BuildAdminMenu $e) {
'permission' => GlobalPermissions::Stations,
],
'shoutcast' => [
'label' => __('Install SHOUTcast'),
'label' => __('Install Shoutcast'),
'url' => (string)$router->named('admin:install_shoutcast:index'),
'permission' => GlobalPermissions::All,
],

View File

@ -2,7 +2,7 @@
<div class="card">
<div class="card-header bg-primary-dark">
<h2 class="card-title">
<translate key="lang_title">Install SHOUTcast 2 DNAS</translate>
<translate key="lang_title">Install Shoutcast 2 DNAS</translate>
</h2>
</div>
@ -16,20 +16,20 @@
</legend>
<p class="card-text">
<translate key="lang_instructions_1a">SHOUTcast 2 DNAS is not free software, and its restrictive license does not allow AzuraCast to distribute the SHOUTcast binary.</translate>
<translate key="lang_instructions_1a">Shoutcast 2 DNAS is not free software, and its restrictive license does not allow AzuraCast to distribute the Shoutcast binary.</translate>
</p>
<p class="card-text">
<translate key="lang_instructions_1b">In order to install SHOUTcast:</translate>
<translate key="lang_instructions_1b">In order to install Shoutcast:</translate>
</p>
<ul>
<li>
<translate key="lang_instructions_2">Download the Linux x64 binary from the SHOUTcast Radio Manager:</translate>
<translate key="lang_instructions_2">Download the Linux x64 binary from the Shoutcast Radio Manager:</translate>
<br>
<a href="https://radiomanager.shoutcast.com/register/serverSoftwareFreemium"
target="_blank">
<translate key="lang_instructions_2_url">SHOUTcast Radio Manager</translate>
<translate key="lang_instructions_2_url">Shoutcast Radio Manager</translate>
</a>
</li>
<li>
@ -54,7 +54,7 @@
</p>
<p v-else class="text-danger card-text">
<translate
key="lang_not_installed">SHOUTcast 2 DNAS is not currently installed on this installation.</translate>
key="lang_not_installed">Shoutcast 2 DNAS is not currently installed on this installation.</translate>
</p>
</fieldset>
@ -83,7 +83,7 @@ export default {
},
computed: {
langInstalledVersion() {
const text = this.$gettext('SHOUTcast version "%{ version }" is currently installed.');
const text = this.$gettext('Shoutcast version "%{ version }" is currently installed.');
return this.$gettextInterpolate(text, {
version: this.version
});

View File

@ -436,7 +436,7 @@
</template>
<template #description="{lang}">
<translate :key="lang">For most cases, use the default UTF-8 encoding. The older ISO-8859-1
encoding can be used if accepting connections from SHOUTcast 1 DJs or using other legacy
encoding can be used if accepting connections from Shoutcast 1 DJs or using other legacy
software.
</translate>
</template>

View File

@ -26,14 +26,14 @@
<b-wrapped-form-group class="col-md-6" id="edit_form_frontend_sc_license_id"
:field="form.frontend_config.sc_license_id">
<template #label="{lang}">
<translate :key="lang">SHOUTcast License ID</translate>
<translate :key="lang">Shoutcast License ID</translate>
</template>
</b-wrapped-form-group>
<b-wrapped-form-group class="col-md-6" id="edit_form_frontend_sc_user_id"
:field="form.frontend_config.sc_user_id">
<template #label="{lang}">
<translate :key="lang">SHOUTcast User ID</translate>
<translate :key="lang">Shoutcast User ID</translate>
</template>
</b-wrapped-form-group>
</b-form-row>
@ -206,7 +206,7 @@ export default {
if (this.isShoutcastInstalled) {
frontendOptions.push({
text: this.$gettext('Use SHOUTcast DNAS 2 on this server.'),
text: this.$gettext('Use Shoutcast DNAS 2 on this server.'),
value: FRONTEND_SHOUTCAST
});
}

View File

@ -110,7 +110,7 @@ export default {
return this.$gettext('Basic Info');
},
langAuthhashDesc() {
let text = 'If your stream is set to advertise to YP directories above, you must specify an authorization hash. You can manage authhashes <a href="%{ url }" target="_blank">on the SHOUTcast web site</a>.';
let text = 'If your stream is set to advertise to YP directories above, you must specify an authorization hash. You can manage authhashes <a href="%{ url }" target="_blank">on the Shoutcast web site</a>.';
let url = 'https://radiomanager.shoutcast.com/';
return this.$gettextInterpolate(this.$gettext(text), {url: url});

View File

@ -124,7 +124,7 @@ export default {
if (this.frontendType === FRONTEND_ICECAST) {
return 'Icecast';
} else if (this.frontendType === FRONTEND_SHOUTCAST) {
return 'SHOUTcast';
return 'Shoutcast';
}
return '';
},

View File

@ -91,11 +91,11 @@ export default {
},
{
value: REMOTE_SHOUTCAST1,
text: 'SHOUTcast v1',
text: 'Shoutcast v1',
},
{
value: REMOTE_SHOUTCAST2,
text: 'SHOUTcast v2',
text: 'Shoutcast v2',
}
];
},

View File

@ -35,7 +35,7 @@
</div>
<div class="card-body">
<h3 class="card-subtitle mt-0">
<translate key="lang_connection_shoutcast_hdr">SHOUTcast Clients</translate>
<translate key="lang_connection_shoutcast_hdr">Shoutcast Clients</translate>
</h3>
<dl>
<dt class="mb-1">

File diff suppressed because it is too large Load Diff

View File

@ -16,7 +16,7 @@ final class ShoutcastAction
Response $response
): ResponseInterface {
if ('x86_64' !== php_uname('m')) {
throw new RuntimeException('SHOUTcast cannot be installed on non-X86_64 systems.');
throw new RuntimeException('Shoutcast cannot be installed on non-X86_64 systems.');
}
$router = $request->getRouter();
@ -25,7 +25,7 @@ final class ShoutcastAction
response: $response,
component: 'Vue_AdminShoutcast',
id: 'admin-shoutcast',
title: __('Install SHOUTcast 2 DNAS'),
title: __('Install Shoutcast 2 DNAS'),
props: [
'apiUrl' => (string)$router->named('api:admin:shoutcast'),
],

View File

@ -25,7 +25,7 @@ final class PostAction
Response $response
): ResponseInterface {
if ('x86_64' !== php_uname('m')) {
throw new RuntimeException('SHOUTcast cannot be installed on non-X86_64 systems.');
throw new RuntimeException('Shoutcast cannot be installed on non-X86_64 systems.');
}
$flowResponse = Flow::process($request, $response);

View File

@ -119,12 +119,12 @@ final class LogsAction
case FrontendAdapters::Shoutcast:
$logPaths['shoutcast_log'] = [
'name' => __('SHOUTcast Log'),
'name' => __('Shoutcast Log'),
'path' => $stationConfigDir . '/shoutcast.log',
'tail' => true,
];
$logPaths['shoutcast_conf'] = [
'name' => __('SHOUTcast Configuration'),
'name' => __('Shoutcast Configuration'),
'path' => $stationConfigDir . '/sc_serv.conf',
'tail' => false,
];

View File

@ -60,7 +60,7 @@ use Throwable;
OA\Post(
path: '/station/{station_id}/frontend/{action}',
operationId: 'doFrontendServiceAction',
description: 'Perform service control actions on the radio frontend (Icecast, SHOUTcast, etc.)',
description: 'Perform service control actions on the radio frontend (Icecast, Shoutcast, etc.)',
security: OpenApi::API_KEY_SECURITY,
tags: ['Stations: Service Control'],
parameters: [

View File

@ -197,7 +197,7 @@ class StationRemote implements
{
$password = $this->getSourcePassword();
if (RemoteAdapters::SHOUTcast2 === $this->getTypeEnum()) {
if (RemoteAdapters::Shoutcast2 === $this->getTypeEnum()) {
$mount = $this->getSourceMount();
if (empty($mount)) {
$mount = $this->getMount();
@ -344,7 +344,7 @@ class StationRemote implements
$urlScheme = $this->getUrlAsUri()->getScheme();
return match ($this->getAutodjAdapterTypeEnum()) {
RemoteAdapters::SHOUTcast1, RemoteAdapters::SHOUTcast2 => StreamProtocols::Icy,
RemoteAdapters::Shoutcast1, RemoteAdapters::Shoutcast2 => StreamProtocols::Icy,
default => ('https' === $urlScheme) ? StreamProtocols::Https : StreamProtocols::Http
};
}

View File

@ -22,7 +22,7 @@ enum FrontendAdapters: string implements AdapterTypeInterface
{
return match ($this) {
self::Icecast => 'Icecast 2.4',
self::Shoutcast => 'SHOUTcast DNAS 2',
self::Shoutcast => 'Shoutcast DNAS 2',
self::Remote => 'Remote',
};
}

View File

@ -11,8 +11,8 @@ use App\Radio\Remote\Shoutcast2;
enum RemoteAdapters: string implements AdapterTypeInterface
{
case SHOUTcast1 = 'shoutcast1';
case SHOUTcast2 = 'shoutcast2';
case Shoutcast1 = 'shoutcast1';
case Shoutcast2 = 'shoutcast2';
case Icecast = 'icecast';
case AzuraRelay = 'azurarelay';
@ -24,8 +24,8 @@ enum RemoteAdapters: string implements AdapterTypeInterface
public function getName(): string
{
return match ($this) {
self::SHOUTcast1 => 'SHOUTcast 1',
self::SHOUTcast2 => 'SHOUTcast 2',
self::Shoutcast1 => 'Shoutcast 1',
self::Shoutcast2 => 'Shoutcast 2',
self::Icecast => 'Icecast',
self::AzuraRelay => 'AzuraRelay',
};
@ -34,8 +34,8 @@ enum RemoteAdapters: string implements AdapterTypeInterface
public function getClass(): string
{
return match ($this) {
self::SHOUTcast1 => Shoutcast1::class,
self::SHOUTcast2 => Shoutcast2::class,
self::Shoutcast1 => Shoutcast1::class,
self::Shoutcast2 => Shoutcast2::class,
self::Icecast => Icecast::class,
self::AzuraRelay => AzuraRelay::class,
};

View File

@ -39,7 +39,7 @@ final class Shoutcast extends AbstractFrontend
return null;
}
return preg_match('/^SHOUTcast .* v(\S+) .*$/i', $process->getOutput(), $matches)
return preg_match('/^Shoutcast .* v(\S+) .*$/i', $process->getOutput(), $matches)
? $matches[1]
: null;
}

View File

@ -2727,7 +2727,7 @@ paths:
post:
tags:
- 'Stations: Service Control'
description: 'Perform service control actions on the radio frontend (Icecast, SHOUTcast, etc.)'
description: 'Perform service control actions on the radio frontend (Icecast, Shoutcast, etc.)'
operationId: doFrontendServiceAction
parameters:
-
@ -3746,6 +3746,10 @@ components:
description: 'The full URL to listen to the HLS stream for the station.'
example: 'https://example.com/hls/azuratest_radio/live.m3u8'
nullable: true
hls_listeners:
description: 'HLS Listeners'
type: integer
example: 1
type: object
Api_NowPlaying_StationMount:
type: object