aliases->alias->iterateItems() as $alias) { $existing[(string)$alias->name] = true; } foreach (['UI_TEST_NETWORK', 'UI_TEST_NETWORK_TWO'] as $name) { if (isset($existing[$name])) { continue; } $alias = $aliases->aliases->alias->add(); $alias->setNodes([ 'enabled' => '1', 'name' => $name, 'type' => 'network', 'proto' => 'IPv4', 'content' => $name === 'UI_TEST_NETWORK' ? '192.0.2.0/24' : '198.51.100.0/24', ]); } $aliases->serializeToConfig(); Config::getInstance()->save(['description' => 'Add synthetic UI test aliases']); $users = Config::getInstance()->object()->system->user; foreach ($users as $user) { if ((string)$user->name === 'root' && password_verify($password, (string)$user->password)) { break; } } if (!isset($user) || (string)$user->name !== 'root' || !password_verify($password, (string)$user->password)) { throw new RuntimeException('The disposable WebGUI password was not saved.'); } exec('/usr/local/sbin/configctl webgui restart', $output, $status); if ($status !== 0) { throw new RuntimeException('The WebGUI did not restart.'); }