This new regex allows parsing of:
- Irrelevant options that the user may paste from its config
file, eg. 'option host-name'.
- Allows linebreaks.
Hosts still require to have 'hardware ethernet' first, and then
'fixed-address'.
For example this regex admits dhcp host declarations such as
host pir36-22_78 {
hardware ethernet d8:5e:d3:25:28:9d;
fixed-address 10.1.36.78;
option host-name "pc_78";
}
Summary of the regex:
(?: *host *) # Match host keyword and spaces
([\w.-]*) # Match any word character (alphanum and underscore)
(?:[ \n\r]*{[ \n\r]*) # Match any space or newline, then match { and any following space or newline
(?:[ \t]*hardware *ethernet *) # Match any space or tab character followed by 'hardware ethernet'
((?:[0-9A-Fa-f]{2}[:-]){5}(?:[0-9A-Fa-f]{2})) # Match the mac address using ':' or '-' as separator
(?: *;) # Match any space character before a ';'
(?:[ \t\n\r]*fixed-address *) # Match any space, tab or newline followed by 'fixed address' and any following space
(\d+\.\d+\.\d+\.\d+) # Match an ip address (no validity check)
(?: *;)(?:[ \r\n]*[^}]*}) # Match any space followed by ';', then match any character except '}'
Help user by hinting the current expected format via a placeholder in
the textarea box.
Current regex has its limitations when parsing dhcpd host declarations.
It does not support multi line host declarations or different options
outside "hardware ethernet ..." and "fixed-address ...".
If an administrator selects a client without disks and goes to
"Partition & Format", ogCP redirects it again to "Commands" and shows a
floating message indicating that the client has no disks.
Since ogCP multi ogServer support, g.server is not used anymore. The
list of available servers is stored in the global variable "servers" at
og_server.py
Commit 648a1a315e1d35f67c5301833bddd3753cc51793 changes do not work well
with large scopes trees. It takes several minutes to check a scope.
Improve javascript code to speed up scope selection.
From MDN:
Technically, the value for an id attribute may contain any character,
except whitespace characters. However, to avoid inadvertent errors, only
ASCII letters, digits, '_', and '-' should be used and the value for an
id attribute should start with a letter.
https://developer.mozilla.org/en-US/docs/Web/HTML/Global_attributes/id
Clients pills show MACs regardless of the ogServer they belong to. Flask
GET /client/mac API uses "get_server_from_clients()" function to send
the command to the correct ogServer.
When users select an image, its ogServer is sent too. Then, the back-end
(flask) processes the form to obtain this ogServer and send it the
pertinent requests.
It also makes "Image details" view use this new parameter, and adds
javascript code to ensure that users can only work with several images
at the same time if they belong to the same ogServer.
Images view fetch images from all ogServers configured and show them in
the left tree as a nested list. ogServers are represented as the parents
of their images.
This commit adds a new select input with all available ogServers to "Add
center" view. The ogCP creates the center in the ogServer selected by
the user.
With this commit when users select a scope, the ogServer to
which it belongs is also sent. Then when processing the form we obtain
this ogServer and we can send it the pertinent requests.
This commit also makes action "Add client" to use the ogServer sent in
the form.
This commit adapt how "get_scopes()" accesses the name of the ogServer
because commit eae64dd changes how "multi_request()" returns it.
Fixes: eae64dd ("Initial support of ogServer requests routing")