index.php 2.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172
  1. <?php
  2. ob_start();
  3. session_start();
  4. $TAB = 'USER';
  5. // Main include
  6. include($_SERVER['DOCUMENT_ROOT']."/inc/main.php");
  7. // Check POST request
  8. if (!empty($_POST['ok'])) {
  9. // Check token
  10. verify_csrf($_POST);
  11. if (empty($_POST['v_key'])) {
  12. $_SESSION['error_msg'] = _('Field SSH_KEY can not be blank.');
  13. }
  14. if (($_SESSION['userContext'] === 'admin') && (!empty($_GET['user']))) {
  15. $user = escapeshellarg($_GET['user']);
  16. }
  17. if (!$_SESSION['error_msg']) {
  18. if ($_POST) {
  19. //key if key already exists
  20. exec(HESTIA_CMD . "v-list-user-ssh-key ".$user." json", $output, $return_var);
  21. $data = json_decode(implode('', $output), true);
  22. unset($output);
  23. $keylist = array();
  24. $idlist = array();
  25. foreach ($data as $key => $value) {
  26. $idlist[] = trim($data[$key]['ID']);
  27. $keylist[] = trim($data[$key]['KEY']);
  28. }
  29. $v_key_parts = explode(' ', $_POST['v_key']);
  30. $key_id = trim($v_key_parts[2]);
  31. if ($v_key_parts[2] == '') {
  32. $v_key_parts[2] = md5(time());
  33. $_POST['v_key'] .= ' '.$v_key_parts[2];
  34. }
  35. //for deleting / revoking key the last part user@domain is used therefore needs to be unique
  36. //maybe consider adding random generated message or even an human read able string set by user?
  37. if (in_array($v_key_parts[2], $idlist)) {
  38. $_SESSION['error_msg'] = _('SSH KEY already exists');
  39. }
  40. if (in_array($v_key_parts[1], $keylist)) {
  41. $_SESSION['error_msg'] = _('SSH KEY already exists');
  42. }
  43. $v_key = escapeshellarg(trim($_POST['v_key']));
  44. }
  45. }
  46. if (empty($_SESSION['error_msg'])) {
  47. exec(HESTIA_CMD."v-add-user-ssh-key ".$user." ".$v_key, $output, $return_var);
  48. check_return_code($return_var, $output);
  49. }
  50. unset($output);
  51. // Flush field values on success
  52. if (empty($_SESSION['error_msg'])) {
  53. $_SESSION['ok_msg'] = _('SSH KEY created');
  54. }
  55. }
  56. if (empty($v_key)) {
  57. $v_key = '';
  58. }
  59. render_page($user, $TAB, 'add_key');
  60. // Flush session messages
  61. unset($_SESSION['error_msg']);
  62. unset($_SESSION['ok_msg']);