new_host.php 1.5 KB

1234567891011121314151617181920212223242526272829303132333435363738
  1. <?php
  2. require_once "{$_SERVER['DOCUMENT_ROOT']}/dependencies.php";
  3. use Respect\Validation\Validator as v;
  4. // method must be POST
  5. methods(['POST' => v::keySet(
  6. v::key('etiqueta', v::stringType()->notEmpty()),
  7. v::key('host', v::stringType()->notEmpty()),
  8. v::key('puerto', v::intType()->notEmpty()),
  9. v::key('usuario', v::stringType()->notEmpty()),
  10. v::key('base_datos', v::stringType()->notEmpty()),
  11. v::key('password', v::stringType()->notEmpty()),
  12. v::key('periodos', v::arrayType()->notEmpty()->each(v::intType()))
  13. )]);
  14. try {
  15. $db->query('BEGIN');
  16. $params = array(
  17. 'etiqueta' => $_POST['etiqueta'],
  18. 'host' => $_POST['host'],
  19. 'puerto' => $_POST['puerto'],
  20. 'postgres_user' => $_POST['usuario'],
  21. 'postgres_dbname' => $_POST['base_datos'],
  22. 'postgres_password' => $_POST['password'],
  23. 'periodos_gema' => '{' . implode(',', $_POST['periodos']) . '}',
  24. );
  25. $db->query("INSERT INTO moodle_host (etiqueta, host, puerto, postgres_user, postgres_dbname, postgres_password, periodos_gema) VALUES (:etiqueta, :host, :puerto, :postgres_user, :postgres_dbname, PGP_SYM_ENCRYPT(:postgres_password, '{$_ENV['KEY_ENCRYPT']}'), :periodos_gema)", $params);
  26. $db->query('COMMIT');
  27. } catch (\PDOException $th) {
  28. $db->query('ROLLBACK');
  29. http_response_code(500);
  30. echo json_encode(['error' => $th->getMessage()]);
  31. exit();
  32. }
  33. returnResponse(message: "Host {$_POST['etiqueta']} agregado correctamente");