1
0
mirror of https://github.com/esphome/esphome.git synced 2025-09-06 05:12:21 +01:00

Warn if underscore character is used in hostname (#2079)

* Prevent underscore character being used in 'name'.

* Restrict underscores in hostnames, not all names.

* Use hostname validator for node name.

* Allow underscore in hostname but warn once.

* Add renaming instructions link to warning.

* Point underscore warning to FAQ section

Co-authored-by: Otto Winter <otto@otto-winter.com>

Co-authored-by: Otto Winter <otto@otto-winter.com>
This commit is contained in:
Dave T
2021-08-10 13:14:42 +01:00
committed by GitHub
parent d258e06fd7
commit 1771e673d2
3 changed files with 34 additions and 3 deletions

View File

@@ -891,11 +891,20 @@ def validate_bytes(value):
def hostname(value):
value = string(value)
warned_underscore = False
if len(value) > 63:
raise Invalid("Hostnames can only be 63 characters long")
for c in value:
if not (c.isalnum() or c in "_-"):
raise Invalid("Hostname can only have alphanumeric characters and _ or -")
if not (c.isalnum() or c in "-_"):
raise Invalid("Hostname can only have alphanumeric characters and -")
if c in "_" and not warned_underscore:
_LOGGER.warning(
"'%s': Using the '_' (underscore) character in the hostname is discouraged "
"as it can cause problems with some DHCP and local name services. "
"For more information, see https://esphome.io/guides/faq.html#why-shouldn-t-i-use-underscores-in-my-device-name",
value,
)
warned_underscore = True
return value