controller.php 1.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869
  1. <?php
  2. function moulinette_get($var) {
  3. return htmlspecialchars(exec("sudo yunohost app setting vpnclient ".escapeshellarg($var)));
  4. }
  5. function moulinette_set($var, $value) {
  6. return exec("sudo yunohost app setting vpnclient ".escapeshellarg($var)." -v ".escapeshellarg($value));
  7. }
  8. function restart_service() {
  9. exec('sudo service ynh-vpnclient stop');
  10. exec('sudo service ynh-vpnclient start', $output, $retcode);
  11. return $retcode;
  12. }
  13. dispatch('/', function() {
  14. set('server_name', moulinette_get('server_name'));
  15. set('server_port', moulinette_get('server_port'));
  16. set('server_proto', moulinette_get('server_proto'));
  17. return render('settings.html.php');
  18. });
  19. dispatch_put('/settings', function() {
  20. moulinette_set('server_name', $_POST['server_name']);
  21. moulinette_set('server_port', $_POST['server_port']);
  22. moulinette_set('server_proto', $_POST['server_proto']);
  23. if($_FILES['crt_client']['error'] == UPLOAD_ERR_OK) {
  24. move_uploaded_file($_FILES['crt_client']['tmp_name'], '/etc/openvpn/keys/user.crt');
  25. }
  26. if($_FILES['crt_client_key']['error'] == UPLOAD_ERR_OK) {
  27. move_uploaded_file($_FILES['crt_client_key']['tmp_name'], '/etc/openvpn/keys/user.key');
  28. }
  29. if($_FILES['crt_server_ca']['error'] == UPLOAD_ERR_OK) {
  30. move_uploaded_file($_FILES['crt_server_ca']['tmp_name'], '/etc/openvpn/keys/ca-server.crt');
  31. }
  32. $retcode = restart_service();
  33. if($retcode == 0) {
  34. flash('success', T_('Configuration updated and service successfully reloaded'));
  35. } else {
  36. flash('error', T_('Configuration updated but service reload failed'));
  37. }
  38. redirect_to('/');
  39. });
  40. dispatch('/lang/:locale', function($locale = 'en') {
  41. switch ($locale) {
  42. case 'fr':
  43. $_SESSION['locale'] = 'fr';
  44. break;
  45. default:
  46. $_SESSION['locale'] = 'en';
  47. }
  48. if(!empty($_GET['redirect_to'])) {
  49. redirect_to($_GET['redirect_to']);
  50. } else {
  51. redirect_to('/');
  52. }
  53. });