source: admin-center/trunk/fuentes/admin-center.install/usr/share/admin-center/n4d.php @ 6782

Last change on this file since 6782 was 6622, checked in by kbut, 22 months ago

Fix timeout. Clean code

File size: 4.9 KB
Line 
1<?php
2include("./libphp/cryptojs-aes.php");
3
4//require_once("logServer.php"); -> No s'usa!
5//require_once('php_lib/wsclient/vendor/autoload.php'); -> No s'usa !
6//use WebSocket\Client; -> No s'usa!
7
8
9// require_once('php_lib/logListener.php');  -> S'utilitza?
10// use logListener;  -> S'utilitza?
11
12
13// Class for make n4d calls asyncronous
14/*class n4dAsync extends Thread {
15    public function run($method, $args) {
16        n4d($method, $args);
17    }
18}*/
19// End async
20
21
22if(!session_id()) session_start();
23//$logServer = new logServer();
24
25
26function writeHeader(){
27  header('Content-type: application/json');
28  header("Cache-Control: no-store, no-cache, must-revalidate, max-age=0");
29  header("Cache-Control: post-check=0, pre-check=0", false);
30  header("Pragma: no-cache");
31}
32
33
34function n4dRSADecrypt($crypttext){
35  $priv_key = openssl_pkey_get_private("file:///etc/admin-center/private_key.pem");
36  openssl_private_decrypt(base64_decode($crypttext), $newsource, $priv_key );
37 
38  return $newsource;
39}
40
41function AESEncrypt($plain){ 
42  if (isset($_POST['pass'])) $pass=$_POST['pass'];
43  else $pass=""; 
44  return cryptoJsAesEncrypt($pass, $plain);
45}
46
47function n4d($method, $args, $timeout){
48  try{
49    writeHeader();
50   
51    $url='https://127.0.0.1:9779';
52    $request=xmlrpc_encode_request($method, $args);
53    //error_log($request);
54      $header[] = "Content-type: text/xml";
55      $header[] = "Content-length: ".strlen($request);
56
57      $ch = curl_init();
58      curl_setopt($ch, CURLOPT_URL, $url);
59      curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
60      curl_setopt($ch, CURLOPT_TIMEOUT, 10000);
61      curl_setopt($ch, CURLOPT_HTTPHEADER, $header);
62      curl_setopt($ch, CURLOPT_POSTFIELDS, $request);
63     
64      if ($timeout!="0"){
65        curl_setopt($ch, CURLOPT_FRESH_CONNECT, true);  // async
66        curl_setopt($ch, CURLOPT_TIMEOUT, $timeout);       // async
67      }
68   
69      curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, true);
70      curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0);
71      curl_setopt($ch, CURLOPT_CAINFO, getcwd() . "/n4dcert.pem");
72       
73      $data = curl_exec($ch);
74           
75      curl_close($ch);
76      $request_error = curl_errno($ch);
77      if( $request_error > 0 ){
78        echo(AESEncrypt(json_encode(array('status'=> False, 'msg' => 'Curl error ' . strval($request_error))))); 
79      }
80      else{
81        if ( (gettype($ch)!="unknown type") && $request_error ) {
82          $xml_snippet=simplexml_load_string($data);
83          $json=json_encode($xml_snippet);
84          echo (AESEncrypt($json));
85        } 
86        else {
87            $xmlobj=xmlrpc_decode($data);
88            if (gettype($xmlobj)=="string") error_log($xmlobj);
89           
90            $json=json_encode($xmlobj);
91            if ($json=="") {
92              $json=$xmlobj;}
93              # Store in session user groups
94              if ($method=="validate_user")
95                $_SESSION['groups']=$xmlobj[1];
96               
97            echo (AESEncrypt($json));
98        }
99      }
100  } catch (Exception $e){
101    error_log("$e->getMessage()");
102    echo(AESEncrypt(json_encode(array('status'=> False, 'msg' => $e->getMessage()))));
103    } 
104}
105
106
107function var_error_log( $object=null ){
108    ob_start();                    // start buffer capture
109    var_dump( $object );           // dump the values
110    $contents = ob_get_contents(); // put the buffer into a variable
111    ob_end_clean();                // end capture
112    error_log( $contents );        // log contents of the result of var_dump( $object )
113}
114
115
116
117try{
118// Getting $_POST parameters
119  $method=$_POST["method"]; 
120  $enctype=$_POST["enctype"];
121  $timeout=$_POST["timeout"];
122 
123  //error_log($_POST["args"]);
124  //error_log($_POST["args"]);
125 
126  if ($enctype=="complete"){
127    $args_coded=n4dRSADecrypt($_POST["args"]);
128    $args=json_decode($args_coded);
129    if (gettype($args)=="NULL") $args=array();
130  } else {  // enctype=partial
131      $args=json_decode($_POST["args"]);
132      //error_log(n4dRSADecrypt($args[0]));
133      if (gettype($args)=="NULL") $args=array();
134      else $args[0]=json_decode(n4dRSADecrypt($args[0]));
135  }
136 
137  /*
138   $myfile = fopen("/tmp/n4dlog","a");
139  fwrite($myfile,"\nMETHOD:\n");
140  fwrite($myfile,$method);
141  fwrite($myfile,"\nARGS IN POST:\n");
142  fwrite($myfile,$_POST["args"]);
143 
144  fwrite($myfile,"\nTYPE ARGS IN POST:\n");
145  fwrite($myfile, gettype($_POST["args"]));
146 
147  fwrite($myfile,"\nARGS CODED:\n");
148  fwrite($myfile, $args_coded);
149 
150  fwrite($myfile,"\nTYPE ARGS CODED:\n");
151  fwrite($myfile, gettype($args_coded));
152 
153  fwrite($myfile,"\nARGS DECODED:\n");
154  fwrite($myfile, print_r($args, true));
155  //fwrite($myfile, $args);
156  fwrite($myfile,"\nARGS DECODED TYPE:\n");
157  fwrite($myfile, gettype($args));
158 
159  fwrite($myfile,"******\n\n");
160  fclose($myfile);
161  error_log($method);
162   */
163 
164  if (isset($_POST['log'])) $log=$_POST["log"];
165    else $log="false";
166   
167  n4d($method, $args, $timeout);
168  //$n4d_async = new n4dAsync();
169  //$n4d_async ->start($method, $args);
170 
171} catch(Exception $e){
172  error_log("Exception in n4d.php: ".$e);
173}
174?>
Note: See TracBrowser for help on using the repository browser.