protected function get_conf() { if (!isset($this->conf_ini)) { $this->conf_ini = toba_modelo_rest::get_ini_server($this->get_modelo_proyecto()); } return $this->conf_ini; }
protected function preProvideApi(Provision $feature) { $optionsFijas = $feature->getOptions(); $autoconfigurar = isset($optionsFijas) && isset($optionsFijas['auto-configurar']) && $optionsFijas['auto-configurar']; $options = array(); $modeloProyecto = $this->getModeloProyecto(); $iniServer = \toba_modelo_rest::get_ini_server($modeloProyecto); $iniUsuarios = \toba_modelo_rest::get_ini_usuarios($modeloProyecto); if ($autoconfigurar && !$iniServer->existe_entrada("autenticacion")) { echo "Autoconfigurando API..."; $iniServer->agregar_entrada("autenticacion", "digest"); $iniServer->guardar(); } if ($autoconfigurar && empty($iniUsuarios->get_entradas())) { $iniUsuarios->agregar_entrada($this->getProyectoId(), array("password" => md5(uniqid(rand(), true)))); $iniUsuarios->guardar(); } if ($iniServer->existe_entrada("autenticacion")) { $options['auth']['type'] = $iniServer->get_datos_entrada("autenticacion"); } //TODO: esta tomando el primer usuario y lo manda. Es totalmente inseguro, esto tiene que ir hacia un modelo clave privada/crt $usuarios = $iniUsuarios->get_entradas(); if (!empty($usuarios)) { foreach ($usuarios as $usuario => $datos) { $options['auth']['userId'] = $usuario; $options['auth']['userPass'] = $datos['password']; break; } } $endpoint = $this->getProyectoUrl() . '/rest/'; if (isset($_SERVER['DOCKER_NAME'])) { //HACK: en el caso de docker la IP interna difiere de la externa. Se trata de sacar con la variable DOCKER_NAME $parts = parse_url($endpoint); if (isset($parts['host'])) { $parts['host'] = $_SERVER['DOCKER_NAME']; } if (isset($parts['port'])) { unset($parts['port']); } $endpoint = unparse_url($parts); } $feature->setEndpoint($endpoint); $feature->setOptions($options); }