index.php 2.1 KB

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