Browse Source

Web API wrapper

Serghey Rodin 13 years ago
parent
commit
410b7e3895
1 changed files with 51 additions and 0 deletions
  1. 51 0
      web/api/index.php

+ 51 - 0
web/api/index.php

@@ -0,0 +1,51 @@
+<?php
+define('VESTA_CMD', '/usr/bin/sudo /usr/local/vesta/bin/');
+
+if (isset($_POST['user']) || isset($_POST['hash'])) {
+
+    // Authentication
+    $auth_code = 1;
+    if (empty($_POST['hash'])) {
+        $v_user = escapeshellarg($_POST['user']);
+        $v_password = escapeshellarg($_POST['password']);
+        exec(VESTA_CMD ."v-check-user-password ".$v_user." ".$v_password." '".$_SERVER["REMOTE_ADDR"]."'",  $output, $auth_code);
+    } else {
+        $key = '/usr/local/vesta/data/keys/' . basename($_POST['hash']);
+        if (file_exists($key)) {
+            $auth_code = '0';
+        }
+    }
+
+    if ($auth_code != 0 ) {
+        echo 'Error: authentication failed';
+        exit;
+    }
+
+    // Check user permission to use API
+    if ($_POST['user'] != 'admin') {
+        echo 'Error: only admin is allowed to use API';
+        exit;
+    }
+
+    // Prepare arguments
+    $cmd = escapeshellarg($_POST['cmd']);
+    $arg1 = escapeshellarg($_POST['arg1']);
+    $arg2 = escapeshellarg($_POST['arg2']);
+    $arg3 = escapeshellarg($_POST['arg3']);
+    $arg4 = escapeshellarg($_POST['arg4']);
+    $arg5 = escapeshellarg($_POST['arg5']);
+    $arg6 = escapeshellarg($_POST['arg6']);
+    $arg7 = escapeshellarg($_POST['arg7']);
+    $arg8 = escapeshellarg($_POST['arg8']);
+    $arg9 = escapeshellarg($_POST['arg9']);
+
+    // Run query
+    exec (VESTA_CMD.$cmd." ".$arg1." ".$arg2." ".$arg3." ".$arg4." ".$arg5." ".$arg6." ".$arg7." ".$arg8." ".$arg9, $output, $return_var);
+    if (($return_var == 0) && (empty($output))) {
+        echo 'OK';
+    } else {
+        echo implode("\n",$output);
+    }
+}
+
+?>