controller.php 2.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100
  1. <?php
  2. function moulinette_get($var) {
  3. return htmlspecialchars(exec('sudo yunohost app setting torclient '.escapeshellarg($var)));
  4. }
  5. function moulinette_set($var, $value) {
  6. return exec('sudo yunohost app setting torclient '.escapeshellarg($var).' -v '.escapeshellarg($value));
  7. }
  8. function stop_service() {
  9. exec('sudo service ynh-torclient stop');
  10. }
  11. function start_service() {
  12. exec('sudo service ynh-torclient start', $output, $retcode);
  13. return $retcode;
  14. }
  15. function service_status() {
  16. exec('sudo service ynh-torclient status', $output);
  17. return $output;
  18. }
  19. function service_faststatus() {
  20. exec('sudo service ynh-torclient status', $output, $retcode);
  21. return $retcode;
  22. }
  23. dispatch('/', function() {
  24. set('status', service_faststatus() == 0);
  25. return render('settings.html.php');
  26. });
  27. dispatch_put('/settings', function() {
  28. $status = isset($_POST['status']) ? 1 : 0;
  29. moulinette_set('status', $status);
  30. if($status == 1) {
  31. $retcode = start_service();
  32. } else {
  33. $retcode = stop_service();
  34. }
  35. if($retcode == 0) {
  36. flash('success', T_('Configuration updated and service successfully reloaded'));
  37. } else {
  38. flash('error', T_('Configuration updated but service reload failed'));
  39. }
  40. redirect:
  41. redirect_to('/');
  42. });
  43. dispatch('/status', function() {
  44. $status_lines = service_status();
  45. $status_list = '';
  46. foreach($status_lines AS $status_line) {
  47. if(preg_match('/^\[INFO\]/', $status_line)) {
  48. $status_list .= '<li class="status-info">'.htmlspecialchars($status_line).'</li>';
  49. }
  50. elseif(preg_match('/^\[OK\]/', $status_line)) {
  51. $status_list .= '<li class="status-success">'.htmlspecialchars($status_line).'</li>';
  52. }
  53. elseif(preg_match('/^\[WARN\]/', $status_line)) {
  54. $status_list .= '<li class="status-warning">'.htmlspecialchars($status_line).'</li>';
  55. }
  56. elseif(preg_match('/^\[ERR\]/', $status_line)) {
  57. $status_list .= '<li class="status-danger">'.htmlspecialchars($status_line).'</li>';
  58. }
  59. }
  60. echo $status_list;
  61. });
  62. dispatch('/lang/:locale', function($locale = 'en') {
  63. switch ($locale) {
  64. case 'fr':
  65. $_SESSION['locale'] = 'fr';
  66. break;
  67. default:
  68. $_SESSION['locale'] = 'en';
  69. }
  70. if(!empty($_GET['redirect_to'])) {
  71. redirect_to($_GET['redirect_to']);
  72. } else {
  73. redirect_to('/');
  74. }
  75. });