You've already forked wp-prometheus
feat: Add environment variable support for license settings, fix German umlauts
Add WP_PROMETHEUS_LICENSE_SERVER_URL, WP_PROMETHEUS_LICENSE_KEY, and WP_PROMETHEUS_LICENSE_SERVER_SECRET environment variables for Docker/container deployments. Admin UI disables inputs and shows override notice when env vars are set. Help tab documents the new variables with Docker Compose example. Fix all German (de_CH) translations to use proper umlauts (ä, ö, ü) instead of ASCII digraph substitutions (ae, oe, ue). Swiss German uses umlauts normally, only ß is replaced with ss. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -311,6 +311,9 @@ class Settings {
|
||||
private function render_license_tab(): void {
|
||||
$license_key = LicenseManager::get_license_key();
|
||||
$server_url = LicenseManager::get_server_url();
|
||||
$env_server_url = LicenseManager::is_env_override( 'server_url' );
|
||||
$env_license_key = LicenseManager::is_env_override( 'license_key' );
|
||||
$env_server_secret = LicenseManager::is_env_override( 'server_secret' );
|
||||
$license_status = LicenseManager::get_cached_status();
|
||||
$license_data = LicenseManager::get_cached_data();
|
||||
$last_check = LicenseManager::get_last_check();
|
||||
@@ -375,7 +378,11 @@ class Settings {
|
||||
<td>
|
||||
<input type="url" name="license_server_url" id="license_server_url"
|
||||
value="<?php echo esc_attr( $server_url ); ?>"
|
||||
class="regular-text" placeholder="https://example.com">
|
||||
class="regular-text" placeholder="https://example.com"
|
||||
<?php echo $env_server_url ? 'disabled="disabled"' : ''; ?>>
|
||||
<?php if ( $env_server_url ) : ?>
|
||||
<p class="description"><?php esc_html_e( 'Overridden by WP_PROMETHEUS_LICENSE_SERVER_URL environment variable.', 'wp-prometheus' ); ?></p>
|
||||
<?php endif; ?>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
@@ -385,7 +392,11 @@ class Settings {
|
||||
<td>
|
||||
<input type="text" name="license_key" id="license_key"
|
||||
value="<?php echo esc_attr( $license_key ); ?>"
|
||||
class="regular-text" placeholder="XXXX-XXXX-XXXX-XXXX">
|
||||
class="regular-text" placeholder="XXXX-XXXX-XXXX-XXXX"
|
||||
<?php echo $env_license_key ? 'disabled="disabled"' : ''; ?>>
|
||||
<?php if ( $env_license_key ) : ?>
|
||||
<p class="description"><?php esc_html_e( 'Overridden by WP_PROMETHEUS_LICENSE_KEY environment variable.', 'wp-prometheus' ); ?></p>
|
||||
<?php endif; ?>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
@@ -394,8 +405,13 @@ class Settings {
|
||||
</th>
|
||||
<td>
|
||||
<input type="password" name="license_server_secret" id="license_server_secret"
|
||||
value="" class="regular-text" placeholder="<?php echo esc_attr( ! empty( LicenseManager::get_server_secret() ) ? '••••••••••••••••' : '' ); ?>">
|
||||
<p class="description"><?php esc_html_e( 'Leave empty to keep existing.', 'wp-prometheus' ); ?></p>
|
||||
value="" class="regular-text" placeholder="<?php echo esc_attr( ! empty( LicenseManager::get_server_secret() ) ? '••••••••••••••••' : '' ); ?>"
|
||||
<?php echo $env_server_secret ? 'disabled="disabled"' : ''; ?>>
|
||||
<?php if ( $env_server_secret ) : ?>
|
||||
<p class="description"><?php esc_html_e( 'Overridden by WP_PROMETHEUS_LICENSE_SERVER_SECRET environment variable.', 'wp-prometheus' ); ?></p>
|
||||
<?php else : ?>
|
||||
<p class="description"><?php esc_html_e( 'Leave empty to keep existing.', 'wp-prometheus' ); ?></p>
|
||||
<?php endif; ?>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
@@ -930,6 +946,21 @@ class Settings {
|
||||
<td><?php esc_html_e( 'APCu key prefix', 'wp-prometheus' ); ?></td>
|
||||
<td><code>wp_prom</code></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><code>WP_PROMETHEUS_LICENSE_SERVER_URL</code></td>
|
||||
<td><?php esc_html_e( 'License server URL', 'wp-prometheus' ); ?></td>
|
||||
<td><code>https://license.example.com</code></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><code>WP_PROMETHEUS_LICENSE_KEY</code></td>
|
||||
<td><?php esc_html_e( 'License key', 'wp-prometheus' ); ?></td>
|
||||
<td><code>XXXX-XXXX-XXXX-XXXX</code></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><code>WP_PROMETHEUS_LICENSE_SERVER_SECRET</code></td>
|
||||
<td><?php esc_html_e( 'License server shared secret', 'wp-prometheus' ); ?></td>
|
||||
<td><code>my-shared-secret</code></td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
|
||||
@@ -941,6 +972,9 @@ class Settings {
|
||||
WP_PROMETHEUS_STORAGE_ADAPTER: redis
|
||||
WP_PROMETHEUS_REDIS_HOST: redis
|
||||
WP_PROMETHEUS_REDIS_PORT: 6379
|
||||
WP_PROMETHEUS_LICENSE_SERVER_URL: https://license.example.com
|
||||
WP_PROMETHEUS_LICENSE_KEY: XXXX-XXXX-XXXX-XXXX
|
||||
WP_PROMETHEUS_LICENSE_SERVER_SECRET: my-shared-secret
|
||||
depends_on:
|
||||
- redis
|
||||
|
||||
|
||||
@@ -346,30 +346,69 @@ final class Manager {
|
||||
/**
|
||||
* Get the license key.
|
||||
*
|
||||
* Environment variable WP_PROMETHEUS_LICENSE_KEY takes precedence.
|
||||
*
|
||||
* @return string
|
||||
*/
|
||||
public static function get_license_key(): string {
|
||||
$env = getenv( 'WP_PROMETHEUS_LICENSE_KEY' );
|
||||
if ( false !== $env && '' !== $env ) {
|
||||
return $env;
|
||||
}
|
||||
return get_option( self::OPTION_LICENSE_KEY, '' );
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the license server URL.
|
||||
*
|
||||
* Environment variable WP_PROMETHEUS_LICENSE_SERVER_URL takes precedence.
|
||||
*
|
||||
* @return string
|
||||
*/
|
||||
public static function get_server_url(): string {
|
||||
$env = getenv( 'WP_PROMETHEUS_LICENSE_SERVER_URL' );
|
||||
if ( false !== $env && '' !== $env ) {
|
||||
return $env;
|
||||
}
|
||||
return get_option( self::OPTION_SERVER_URL, '' );
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the server secret.
|
||||
*
|
||||
* Environment variable WP_PROMETHEUS_LICENSE_SERVER_SECRET takes precedence.
|
||||
*
|
||||
* @return string
|
||||
*/
|
||||
public static function get_server_secret(): string {
|
||||
$env = getenv( 'WP_PROMETHEUS_LICENSE_SERVER_SECRET' );
|
||||
if ( false !== $env && '' !== $env ) {
|
||||
return $env;
|
||||
}
|
||||
return get_option( self::OPTION_SERVER_SECRET, '' );
|
||||
}
|
||||
|
||||
/**
|
||||
* Check if a license setting is overridden by an environment variable.
|
||||
*
|
||||
* @param string $setting One of 'server_url', 'license_key', 'server_secret'.
|
||||
* @return bool
|
||||
*/
|
||||
public static function is_env_override( string $setting ): bool {
|
||||
$map = array(
|
||||
'server_url' => 'WP_PROMETHEUS_LICENSE_SERVER_URL',
|
||||
'license_key' => 'WP_PROMETHEUS_LICENSE_KEY',
|
||||
'server_secret' => 'WP_PROMETHEUS_LICENSE_SERVER_SECRET',
|
||||
);
|
||||
|
||||
if ( ! isset( $map[ $setting ] ) ) {
|
||||
return false;
|
||||
}
|
||||
|
||||
$env = getenv( $map[ $setting ] );
|
||||
return false !== $env && '' !== $env;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get cached license status.
|
||||
*
|
||||
|
||||
Reference in New Issue
Block a user