add CORS option to network

This commit is contained in:
MichaelDvP
2022-12-07 13:11:48 +01:00
parent 1735c036cc
commit 5061ddf38e
14 changed files with 428 additions and 368 deletions

File diff suppressed because it is too large Load Diff

View File

@@ -62,7 +62,9 @@ const WiFiSettingsForm: FC = () => {
bandwidth20: false, bandwidth20: false,
tx_power: 20, tx_power: 20,
nosleep: false, nosleep: false,
enableMDNS: true enableMDNS: true,
enableCORS: false,
CORSOrigin: '*'
}); });
} }
setInitialized(true); setInitialized(true);
@@ -162,11 +164,6 @@ const WiFiSettingsForm: FC = () => {
label={LL.NETWORK_LOW_BAND()} label={LL.NETWORK_LOW_BAND()}
/> />
<BlockFormControlLabel
control={<Checkbox name="enableMDNS" checked={data.enableMDNS} onChange={updateFormValue} />}
label={LL.NETWORK_USE_DNS()}
/>
<Typography sx={{ pt: 2 }} variant="h6" color="primary"> <Typography sx={{ pt: 2 }} variant="h6" color="primary">
{LL.GENERAL_OPTIONS()} {LL.GENERAL_OPTIONS()}
</Typography> </Typography>
@@ -182,6 +179,28 @@ const WiFiSettingsForm: FC = () => {
margin="normal" margin="normal"
/> />
<BlockFormControlLabel
control={<Checkbox name="enableMDNS" checked={data.enableMDNS} onChange={updateFormValue} />}
label={LL.NETWORK_USE_DNS()}
/>
<BlockFormControlLabel
control={<Checkbox name="enableCORS" checked={data.enableCORS} onChange={updateFormValue} />}
label={LL.NETWORK_ENABLE_CORS()}
/>
{data.enableCORS && (
<ValidatedTextField
fieldErrors={fieldErrors}
name="CORSOrigin"
label={LL.NETWORK_CORS_ORIGIN()}
fullWidth
variant="outlined"
value={data.CORSOrigin}
onChange={updateFormValue}
margin="normal"
/>
)}
<BlockFormControlLabel <BlockFormControlLabel
control={<Checkbox name="enableIPv6" checked={data.enableIPv6} onChange={updateFormValue} />} control={<Checkbox name="enableIPv6" checked={data.enableIPv6} onChange={updateFormValue} />}
label={LL.NETWORK_ENABLE_IPV6()} label={LL.NETWORK_ENABLE_IPV6()}

View File

@@ -3,6 +3,7 @@ import type { Translation } from '../i18n-types';
/* eslint-disable */ /* eslint-disable */
const de: Translation = { const de: Translation = {
// ...en as Translation,
LANGUAGE: 'Sprache', LANGUAGE: 'Sprache',
RETRY: 'Neuer Versuch', RETRY: 'Neuer Versuch',
LOADING: 'Laden', LOADING: 'Laden',
@@ -190,8 +191,8 @@ const de: Translation = {
SYSTEM_FACTORY_TEXT_DIALOG: 'Sind Sie sicher alle Einstellungen auf Werkseinstellung zu setzen?', SYSTEM_FACTORY_TEXT_DIALOG: 'Sind Sie sicher alle Einstellungen auf Werkseinstellung zu setzen?',
VERSION_CHECK: 'Versionsprüfung', VERSION_CHECK: 'Versionsprüfung',
THE_LATEST: 'Die neueste', THE_LATEST: 'Die neueste',
OFFICIAL: 'official', OFFICIAL: 'offizielle',
DEVELOPMENT: 'development', DEVELOPMENT: 'Entwicklungs',
VERSION_IS: 'Version ist', VERSION_IS: 'Version ist',
RELEASE_NOTES: 'Versionshinweise', RELEASE_NOTES: 'Versionshinweise',
EMS_ESP_VER: 'EMS-ESP Version', EMS_ESP_VER: 'EMS-ESP Version',
@@ -284,6 +285,8 @@ const de: Translation = {
NETWORK_DISABLE_SLEEP: 'Deaktiviere WiFi Schlafmodus', NETWORK_DISABLE_SLEEP: 'Deaktiviere WiFi Schlafmodus',
NETWORK_LOW_BAND: 'Verwende niedrige WiFi Bandbreite', NETWORK_LOW_BAND: 'Verwende niedrige WiFi Bandbreite',
NETWORK_USE_DNS: 'Aktiviere mDNS Service', NETWORK_USE_DNS: 'Aktiviere mDNS Service',
NETWORK_ENABLE_CORS: 'Aktiviere CORS',
NETWORK_CORS_ORIGIN: 'CORS origin',
NETWORK_ENABLE_IPV6: 'Aktiviere IPv6 Unterstützung', NETWORK_ENABLE_IPV6: 'Aktiviere IPv6 Unterstützung',
NETWORK_FIXED_IP: 'Feste IP Adresse', NETWORK_FIXED_IP: 'Feste IP Adresse',
NETWORK_GATEWAY: 'Gateway', NETWORK_GATEWAY: 'Gateway',

View File

@@ -284,6 +284,8 @@ const en: Translation = {
NETWORK_DISABLE_SLEEP: 'Disable WiFi Sleep Mode', NETWORK_DISABLE_SLEEP: 'Disable WiFi Sleep Mode',
NETWORK_LOW_BAND: 'Use Lower WiFi Bandwidth', NETWORK_LOW_BAND: 'Use Lower WiFi Bandwidth',
NETWORK_USE_DNS: 'Enable mDNS Service', NETWORK_USE_DNS: 'Enable mDNS Service',
NETWORK_ENABLE_CORS: 'Enable CORS',
NETWORK_CORS_ORIGIN: 'CORS origin',
NETWORK_ENABLE_IPV6: 'Enable IPv6 support', NETWORK_ENABLE_IPV6: 'Enable IPv6 support',
NETWORK_FIXED_IP: 'Use Fixed IP address', NETWORK_FIXED_IP: 'Use Fixed IP address',
NETWORK_GATEWAY: 'Gateway', NETWORK_GATEWAY: 'Gateway',

View File

@@ -284,6 +284,8 @@ const nl: Translation = {
NETWORK_DISABLE_SLEEP: 'WiFi Sleep Mode uitzetten', NETWORK_DISABLE_SLEEP: 'WiFi Sleep Mode uitzetten',
NETWORK_LOW_BAND: 'Lagere WiFi bandbreedte gebruiken', NETWORK_LOW_BAND: 'Lagere WiFi bandbreedte gebruiken',
NETWORK_USE_DNS: 'Activeer mDNS Service', NETWORK_USE_DNS: 'Activeer mDNS Service',
NETWORK_ENABLE_CORS: 'Activeer CORS',
NETWORK_CORS_ORIGIN: 'CORS origin',
NETWORK_ENABLE_IPV6: 'Activeer IPv6 support', NETWORK_ENABLE_IPV6: 'Activeer IPv6 support',
NETWORK_FIXED_IP: 'Gebruik vast IP addres', NETWORK_FIXED_IP: 'Gebruik vast IP addres',
NETWORK_GATEWAY: 'Gateway', NETWORK_GATEWAY: 'Gateway',

View File

@@ -284,6 +284,8 @@ const no: Translation = {
NETWORK_DISABLE_SLEEP: 'Hindre at trådløst nettverk går i Sleep Mode', NETWORK_DISABLE_SLEEP: 'Hindre at trådløst nettverk går i Sleep Mode',
NETWORK_LOW_BAND: 'Benytt smalere båndbredde på trådløst nettverk', NETWORK_LOW_BAND: 'Benytt smalere båndbredde på trådløst nettverk',
NETWORK_USE_DNS: 'Aktiviser mDNS Service', NETWORK_USE_DNS: 'Aktiviser mDNS Service',
NETWORK_ENABLE_CORS: 'Aktiviser CORS',
NETWORK_CORS_ORIGIN: 'CORS origin',
NETWORK_ENABLE_IPV6: 'Aktiviser IPv6 støtte', NETWORK_ENABLE_IPV6: 'Aktiviser IPv6 støtte',
NETWORK_FIXED_IP: 'Benytt statisk IP adresse', NETWORK_FIXED_IP: 'Benytt statisk IP adresse',
NETWORK_GATEWAY: 'Gateway', NETWORK_GATEWAY: 'Gateway',

View File

@@ -284,6 +284,8 @@ const pl: BaseTranslation = {
NETWORK_DISABLE_SLEEP: 'Wyłącz tryb usypiania WiFi', NETWORK_DISABLE_SLEEP: 'Wyłącz tryb usypiania WiFi',
NETWORK_LOW_BAND: 'Używaj zmniejszonej przepustowości WiFi', NETWORK_LOW_BAND: 'Używaj zmniejszonej przepustowości WiFi',
NETWORK_USE_DNS: 'Włącz wsparcie dla mDNS', NETWORK_USE_DNS: 'Włącz wsparcie dla mDNS',
NETWORK_ENABLE_CORS: 'Włącz wsparcie dla CORS',
NETWORK_CORS_ORIGIN: 'CORS origin',
NETWORK_ENABLE_IPV6: 'Włącz wsparcie dla IPv6', NETWORK_ENABLE_IPV6: 'Włącz wsparcie dla IPv6',
NETWORK_FIXED_IP: 'Użyj stałego adresu IP', NETWORK_FIXED_IP: 'Użyj stałego adresu IP',
NETWORK_GATEWAY: 'Brama', NETWORK_GATEWAY: 'Brama',

View File

@@ -284,6 +284,8 @@ const se: Translation = {
NETWORK_DISABLE_SLEEP: 'Inaktivera sömnläge', NETWORK_DISABLE_SLEEP: 'Inaktivera sömnläge',
NETWORK_LOW_BAND: 'Använd lägre bandbredd', NETWORK_LOW_BAND: 'Använd lägre bandbredd',
NETWORK_USE_DNS: 'Aktivera mDNS-tjänsten', NETWORK_USE_DNS: 'Aktivera mDNS-tjänsten',
NETWORK_ENABLE_CORS: 'Aktivera CORS',
NETWORK_CORS_ORIGIN: 'CORS origin',
NETWORK_ENABLE_IPV6: 'Aktivera IPv6-support', NETWORK_ENABLE_IPV6: 'Aktivera IPv6-support',
NETWORK_FIXED_IP: 'Använd statiskt IP', NETWORK_FIXED_IP: 'Använd statiskt IP',
NETWORK_GATEWAY: 'Gateway', NETWORK_GATEWAY: 'Gateway',

View File

@@ -48,6 +48,8 @@ export interface NetworkSettings {
dns_ip_1?: string; dns_ip_1?: string;
dns_ip_2?: string; dns_ip_2?: string;
enableMDNS: boolean; enableMDNS: boolean;
enableCORS: boolean;
CORSOrigin: string;
} }
export interface WiFiNetworkList { export interface WiFiNetworkList {

View File

@@ -46,6 +46,13 @@ ESP8266React::ESP8266React(AsyncWebServer * server, FS * fs)
void ESP8266React::begin() { void ESP8266React::begin() {
_networkSettingsService.begin(); _networkSettingsService.begin();
_networkSettingsService.read([&](NetworkSettings & networkSettings) {
if (networkSettings.enableCORS) {
DefaultHeaders::Instance().addHeader("Access-Control-Allow-Origin", networkSettings.CORSOrigin);
DefaultHeaders::Instance().addHeader("Access-Control-Allow-Headers", "Accept, Content-Type, Authorization");
DefaultHeaders::Instance().addHeader("Access-Control-Allow-Credentials", "true");
}
});
_apSettingsService.begin(); _apSettingsService.begin();
_ntpSettingsService.begin(); _ntpSettingsService.begin();
_otaSettingsService.begin(); _otaSettingsService.begin();

View File

@@ -39,6 +39,8 @@ class NetworkSettings {
int8_t tx_power; int8_t tx_power;
bool nosleep; bool nosleep;
bool enableMDNS; bool enableMDNS;
bool enableCORS;
String CORSOrigin;
// optional configuration for static IP address // optional configuration for static IP address
IPAddress localIP; IPAddress localIP;
@@ -58,6 +60,8 @@ class NetworkSettings {
root["tx_power"] = settings.tx_power; root["tx_power"] = settings.tx_power;
root["nosleep"] = settings.nosleep; root["nosleep"] = settings.nosleep;
root["enableMDNS"] = settings.enableMDNS; root["enableMDNS"] = settings.enableMDNS;
root["enableCORS"] = settings.enableCORS;
root["CORSOrigin"] = settings.CORSOrigin;
// extended settings // extended settings
JsonUtils::writeIP(root, "local_ip", settings.localIP); JsonUtils::writeIP(root, "local_ip", settings.localIP);
@@ -77,6 +81,8 @@ class NetworkSettings {
settings.tx_power = root["tx_power"] | 20; settings.tx_power = root["tx_power"] | 20;
settings.nosleep = root["nosleep"] | false; settings.nosleep = root["nosleep"] | false;
settings.enableMDNS = root["enableMDNS"] | true; settings.enableMDNS = root["enableMDNS"] | true;
settings.enableCORS = root["enableCORS"] | false;
settings.CORSOrigin = root["CORSOrigin"] | "*";
// extended settings // extended settings
JsonUtils::readIP(root, "local_ip", settings.localIP); JsonUtils::readIP(root, "local_ip", settings.localIP);

View File

@@ -103,6 +103,8 @@ class DummySettings {
String dnsIP2 = ""; String dnsIP2 = "";
bool enableIPv6 = false; bool enableIPv6 = false;
bool enableMDNS = true; bool enableMDNS = true;
bool enableCORS = false;
String CORSOrigin = "*";
uint8_t phy_type = 0; uint8_t phy_type = 0;
uint8_t eth_power = 0; // 0 means -1 uint8_t eth_power = 0; // 0 means -1

View File

@@ -122,7 +122,11 @@ network_settings = {
hostname: 'ems-esp', hostname: 'ems-esp',
nosleep: true, nosleep: true,
tx_power: 20, tx_power: 20,
bandwidth20: false,
static_ip_config: false, static_ip_config: false,
enableMDNS: true,
enableCORS: false,
CORSOrigin: '*',
} }
const network_status = { const network_status = {
status: 3, status: 3,

View File

@@ -1104,6 +1104,11 @@ bool System::command_info(const char * value, const int8_t id, JsonObject & outp
node["enable IPv6"] = settings.enableIPv6; node["enable IPv6"] = settings.enableIPv6;
node["low bandwidth"] = settings.bandwidth20; node["low bandwidth"] = settings.bandwidth20;
node["disable sleep"] = settings.nosleep; node["disable sleep"] = settings.nosleep;
node["enable MDNS"] = settings.enableMDNS;
node["enable CORS"] = settings.enableCORS;
if (settings.enableCORS) {
node["CORS origin"] = settings.CORSOrigin;
}
}); });
#ifndef EMSESP_STANDALONE #ifndef EMSESP_STANDALONE
EMSESP::esp8266React.getAPSettingsService()->read([&](APSettings & settings) { EMSESP::esp8266React.getAPSettingsService()->read([&](APSettings & settings) {