update API admin

This commit is contained in:
Le Viet
2022-06-20 15:02:10 +07:00
parent f76abffdcd
commit 7090db6ca7
5 changed files with 213 additions and 107 deletions
+2 -1
View File
@@ -35,4 +35,5 @@ vendor
*.log *.log
*.bak *.bak
logs
.gitignore
+1 -1
View File
@@ -953,7 +953,7 @@ class Member extends Admin_Controller {
list( $payload, $decrypted, $result, $body ) = $this->main_api_post( '/trips/api/report', $payload ); list( $payload, $decrypted, $result, $body ) = $this->main_api_post( '/trips/api/report', $payload );
if ( is_array( $payload ) ) { if ( is_array( $payload ) ) {
$key = sprintf( 'speding_category%s', $_days != 60 ? ( $_days > 0 ) ? $_days : '_daysrange' : '' ); $key = sprintf( 'speding_category%s', $_days != 60 ? (( $_days > 0 ) ? $_days : '_daysrange') : '' );
$data[$key] = $payload; $data[$key] = $payload;
} }
if ( $echo ) { if ( $echo ) {
+2 -1
View File
@@ -27,10 +27,11 @@ class Welcome extends Bko_Controller {
$in['password'] = $password; $in['password'] = $password;
$in['action'] = SAVVY_BKO_LOGIN; $in['action'] = SAVVY_BKO_LOGIN;
$out = array(); $out = array();
$ret = $this->savvy_api($in, $out); $ret = $this->savvy_admin('/login', $in, $out);
//var_dump($ret); //var_dump($ret);
//var_dump($out); //var_dump($out);
if ($ret == PHP_API_OK) { if ($ret == PHP_API_OK) {
$this->buildUserSession($ret, $out); $this->buildUserSession($ret, $out);
redirect('dash'); redirect('dash');
+64 -29
View File
@@ -1,6 +1,7 @@
<?php <?php
class SAV_Controller extends CI_Controller { class SAV_Controller extends CI_Controller
{
var $template = array( var $template = array(
'table_open' => "<table class='table-responsive table-striped table-hover table-bordered table-condensed'>", 'table_open' => "<table class='table-responsive table-striped table-hover table-bordered table-condensed'>",
@@ -44,17 +45,20 @@ class SAV_Controller extends CI_Controller {
); );
public $data = array(); public $data = array();
function __construct() { function __construct()
{
parent::__construct(); parent::__construct();
} }
protected function smart_htmlspecialchars($str) { protected function smart_htmlspecialchars($str)
{
if (substr($str, 0, 1) == '<') if (substr($str, 0, 1) == '<')
return $str; return $str;
return htmlspecialchars($str); return htmlspecialchars($str);
} }
protected function sql_escape_func($inp) { protected function sql_escape_func($inp)
{
if (is_array($inp)) { if (is_array($inp)) {
return array_map(__METHOD__, $inp); return array_map(__METHOD__, $inp);
} }
@@ -67,21 +71,38 @@ class SAV_Controller extends CI_Controller {
return $inp; return $inp;
} }
protected function savvy_api($in, &$out) { protected function savvy_api($in, &$out)
{
global $savvyext; global $savvyext;
$ret = -1; $ret = -1;
$in['pid'] = 115; $in['pid'] = 115;
$in['backoffice'] = 1; $in['backoffice'] = 1;
error_log(json_encode($in)); error_log(json_encode($in));
$out = $savvyext->savvyext_api($in); $out = $savvyext->savvyext_api($in);
$ret = $out["retval"]; $ret = $out["retval"];
error_log("ret = $ret"); error_log("ret = $ret");
error_log(json_encode($out)); error_log(json_encode($out));
return $ret;
}
protected function savvy_admin($endpoint, $in, &$out)
{
global $savvyext;
$ret = -1;
$in['pid'] = 115;
$in['backoffice'] = 1;
error_log(json_encode($in));
$out = $savvyext->savvyext_admin($endpoint,$in);
//var_dump($out);exit;
$ret = $out["retval"];
error_log("ret = $ret");
error_log(json_encode($out));
return $ret; return $ret;
} }
// call API with no default params // call API with no default params
protected function savvy_api_clearly($in, &$out) { protected function savvy_api_clearly($in, &$out)
{
global $savvyext; global $savvyext;
$ret = -1; $ret = -1;
error_log(json_encode($in)); error_log(json_encode($in));
@@ -91,7 +112,8 @@ class SAV_Controller extends CI_Controller {
error_log(json_encode($out)); error_log(json_encode($out));
return $ret; return $ret;
} }
protected function main_api_post($endpoint,$payload) { protected function main_api_post($endpoint, $payload)
{
global $savvyext; global $savvyext;
$httpAuthToken = $savvyext->cfgReadChar('system.oauth2_token'); $httpAuthToken = $savvyext->cfgReadChar('system.oauth2_token');
@@ -106,9 +128,10 @@ class SAV_Controller extends CI_Controller {
$encryptionKey, $encryptionKey,
OPENSSL_RAW_DATA, OPENSSL_RAW_DATA,
$encryptionIV $encryptionIV
)); )
);
$postdata = "{\"encrypted_payload\": \"${encrypted_payload}\"}"; $postdata = "{\"encrypted_payload\": \"${encrypted_payload}\"}";
$url = $savvyext->cfgReadChar('system.api_url').$endpoint; $url = $savvyext->cfgReadChar('system.api_url') . $endpoint;
$ch = curl_init($url); $ch = curl_init($url);
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "POST"); curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "POST");
@@ -117,16 +140,20 @@ class SAV_Controller extends CI_Controller {
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false); curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch, CURLOPT_VERBOSE, false); curl_setopt($ch, CURLOPT_VERBOSE, false);
curl_setopt($ch, CURLOPT_HTTPHEADER, array( curl_setopt(
'Content-Type: application/json', $ch,
'Content-Length: ' . strlen($postdata), CURLOPT_HTTPHEADER,
'Authorization: Server-Token ' . $httpAuthToken) array(
'Content-Type: application/json',
'Content-Length: ' . strlen($postdata),
'Authorization: Server-Token ' . $httpAuthToken
)
); );
$body = curl_exec($ch); $body = curl_exec($ch);
$result = json_decode($body,true); $result = json_decode($body, true);
if (is_array($result) && array_key_exists('payload',$result)) { if (is_array($result) && array_key_exists('payload', $result)) {
$decrypted = openssl_decrypt( $decrypted = openssl_decrypt(
hex2bin( hex2bin(
$result['payload'] $result['payload']
@@ -140,10 +167,11 @@ class SAV_Controller extends CI_Controller {
$decrypted = $body; // Attempt without encryption $decrypted = $body; // Attempt without encryption
} }
$payload = json_decode($decrypted, true); $payload = json_decode($decrypted, true);
return [$payload,$decrypted,$result,$body]; return [$payload, $decrypted, $result, $body];
} }
protected function main_api_get($endpoint,$payload) { protected function main_api_get($endpoint, $payload)
{
global $savvyext; global $savvyext;
$httpAuthToken = $savvyext->cfgReadChar('system.oauth2_token'); $httpAuthToken = $savvyext->cfgReadChar('system.oauth2_token');
@@ -151,7 +179,7 @@ class SAV_Controller extends CI_Controller {
$encryptionKey = $savvyext->cfgReadChar('encryption.key'); $encryptionKey = $savvyext->cfgReadChar('encryption.key');
$encryptionIV = $savvyext->cfgReadChar('encryption.iv'); $encryptionIV = $savvyext->cfgReadChar('encryption.iv');
$url = $savvyext->cfgReadChar('system.api_url').$endpoint.$payload; $url = $savvyext->cfgReadChar('system.api_url') . $endpoint . $payload;
//echo $url; //echo $url;
$ch = curl_init($url); $ch = curl_init($url);
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "GET"); curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "GET");
@@ -159,7 +187,10 @@ class SAV_Controller extends CI_Controller {
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false); curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch, CURLOPT_VERBOSE, false); curl_setopt($ch, CURLOPT_VERBOSE, false);
curl_setopt($ch, CURLOPT_HTTPHEADER, array( curl_setopt(
$ch,
CURLOPT_HTTPHEADER,
array(
'Content-Type: application/json', 'Content-Type: application/json',
'Authorization: Server-Token ' . $httpAuthToken, 'Authorization: Server-Token ' . $httpAuthToken,
"client_id: BackOffice" "client_id: BackOffice"
@@ -167,9 +198,9 @@ class SAV_Controller extends CI_Controller {
); );
$body = curl_exec($ch); $body = curl_exec($ch);
$result = json_decode($body,true); $result = json_decode($body, true);
if (is_array($result) && array_key_exists('payload',$result)) { if (is_array($result) && array_key_exists('payload', $result)) {
$decrypted = openssl_decrypt( $decrypted = openssl_decrypt(
hex2bin( hex2bin(
$result['payload'] $result['payload']
@@ -183,27 +214,31 @@ class SAV_Controller extends CI_Controller {
$decrypted = $body; // Attempt without encryption $decrypted = $body; // Attempt without encryption
} }
$payload = json_decode($decrypted, true); $payload = json_decode($decrypted, true);
return [$payload,$decrypted,$result,$body]; return [$payload, $decrypted, $result, $body];
} }
function formatedMesage($msgType, $theMessage) { function formatedMesage($msgType, $theMessage)
{
return "<div class=\"text-left\"><div class=\"alert alert-danger no-border\">" . $theMessage . "</div></div>"; return "<div class=\"text-left\"><div class=\"alert alert-danger no-border\">" . $theMessage . "</div></div>";
} }
protected function renderMemberPage($page_name, $data) { protected function renderMemberPage($page_name, $data)
{
$this->load->view('admin/view_admin_header', $data); $this->load->view('admin/view_admin_header', $data);
$this->load->view('member/' . $page_name, $data); $this->load->view('member/' . $page_name, $data);
$this->load->view('admin/view_admin_footer', $data); $this->load->view('admin/view_admin_footer', $data);
} }
protected function renderAdminPage($page_name, $data) { protected function renderAdminPage($page_name, $data)
{
$this->load->view('admin/view_admin_header', $data); $this->load->view('admin/view_admin_header', $data);
$this->load->view('admin/' . $page_name, $data); $this->load->view('admin/' . $page_name, $data);
$this->load->view('admin/view_admin_footer', $data); $this->load->view('admin/view_admin_footer', $data);
} }
protected function renderUploadPage($page_name, $data) { protected function renderUploadPage($page_name, $data)
{
$this->load->view('admin/view_admin_header', $data); $this->load->view('admin/view_admin_header', $data);
$this->load->view('upload/' . $page_name, $data); $this->load->view('upload/' . $page_name, $data);
$this->load->view('admin/view_admin_footer', $data); $this->load->view('admin/view_admin_footer', $data);
+133 -64
View File
@@ -11,81 +11,150 @@
*/ */
class savvyext_api_savvy{ class savvyext_api_savvy
var $database= {
[ var $system = [
"host" => "10.10.33.21", "storage_url" => "https://resources.sworks.float.sg/"
"name" => "savvy", ];
"user" => "savvy",
"pass" => "savvy001!",
"port" => "5432"
];
var $gpsdatabase= var $database =
[ [
"host" => "172.31.12.248", "host" => "10.10.33.21",
"name" => "savvy_gps", "name" => "savvy",
"user" => "savvy", "user" => "savvy",
"pass" => "savvy001!", "pass" => "savvy001!",
"port" => "5432" "port" => "5432"
]; ];
var $gpsdatabase =
[
"host" => "10.10.33.21",
"name" => "savvy_gps",
"user" => "savvy",
"pass" => "savvy001!",
"port" => "5432"
];
var $database_replica= var $database_replica =
[ [
"host" => "10.10.33.21", "host" => "10.10.33.21",
"name" => "savvy", "name" => "savvy",
"user" => "savvy", "user" => "savvy",
"pass" => "savvy001!", "pass" => "savvy001!",
"port" => "5432" "port" => "5432"
]; ];
var $google= var $google =
[ [
"api_key" => "AIzaSyBMNecOHz0OHbJti5P9foh_PVPYZntr18I", "api_key" => "AIzaSyBMNecOHz0OHbJti5P9foh_PVPYZntr18I",
"api_key_old" => "AIzaSyDvjiRTxngOQyBP4zpqFlZuiquc0ROvo9c", "api_key_old" => "AIzaSyDvjiRTxngOQyBP4zpqFlZuiquc0ROvo9c",
"drive_client_id" => "343605975098-frdrsttkgkih8dm19js6itgs6ps261ea.apps.googleusercontent.com", "drive_client_id" => "343605975098-frdrsttkgkih8dm19js6itgs6ps261ea.apps.googleusercontent.com",
"drive_client_secret" => "XbUr5SW9Y1CaEjO_3fvglRna", "drive_client_secret" => "XbUr5SW9Y1CaEjO_3fvglRna",
"drive_card_images" => "1NjftJBnFj9zTqWX7GLDhvlh28JOMeqv3", "drive_card_images" => "1NjftJBnFj9zTqWX7GLDhvlh28JOMeqv3",
"storage_project_id" => "float-app-224118", "storage_project_id" => "float-app-224118",
"storage_auth_file" => "/home/savvy/savvy/savvyext/etc/float-app-224118-52ef1783d2c5.json", "storage_auth_file" => "/home/savvy/savvy/savvyext/etc/float-app-224118-52ef1783d2c5.json",
"kms_project_id" => "float-app-224118", "kms_project_id" => "float-app-224118",
"kms_auth_file" => "/home/savvy/savvy/savvyext/etc/float-app-224118-52ef1783d2c5.json", "kms_auth_file" => "/home/savvy/savvy/savvyext/etc/float-app-224118-52ef1783d2c5.json",
"kms_keyring_id" => "development", "kms_keyring_id" => "development",
"kms_key_id" => "oauth2_tokens" "kms_key_id" => "oauth2_tokens"
]; ];
public function cfgReadChar($varname){ var $savvyext =
$pieces = explode(".", $varname); [
if ( $pieces[0] == 'database'){ "url" => "localhost:8000/api/v1/admin/login",
return $this->database[$pieces[1]]; "key" => "ZmxvYXQ6RmwwYXQh",
} "token" => "01bef20e2ab1ac21cd6469dd9fbf533b",
];
if ( $pieces[0] == 'gpsdatabase'){ var $savvyext_admin =
return $this->gpsdatabase[$pieces[1]]; [
} "url" => "localhost:8000/api/v1/admin",
if ( $pieces[0] == 'database_replica'){ "key" => "ZmxvYXQ6RmwwYXQh",
return $this->database_replica[$pieces[1]]; "token" => "01bef20e2ab1ac21cd6469dd9fbf533b",
];
public function cfgReadChar($varname)
{
$pieces = explode(".", $varname);
if ($pieces[0] == 'database') {
return $this->database[$pieces[1]];
}
if ($pieces[0] == 'gpsdatabase') {
return $this->gpsdatabase[$pieces[1]];
}
if ($pieces[0] == 'database_replica') {
return $this->database_replica[$pieces[1]];
}
if (is_array($this->{$pieces[0]})) {
return $this->{$pieces[0]}[$pieces[1]];
} else {
return [];
}
}
public function cfgReadLong($varname)
{
return $this->cfgReadChar($varname);
}
public function savvyext_api($in)
{
//return [];
$postdata = json_encode($in);
$url = $this->cfgReadChar('savvyext.url');
$ch = curl_init($url);
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "POST");
curl_setopt($ch, CURLOPT_POSTFIELDS, $postdata);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch, CURLOPT_VERBOSE, false);
curl_setopt($ch, CURLOPT_HTTPHEADER, [
'content-type: application/json',
'content-length: ' . strlen($postdata),
'server-token: ' . $this->cfgReadChar('savvyext.token')
]);
curl_setopt($ch, CURLOPT_HEADER, false); // Do not show the response headers
curl_setopt($ch, CURLOPT_USERPWD, base64_decode($this->cfgReadChar('savvyext.key')));
curl_setopt($ch, CURLOPT_TIMEOUT, 60);
$res = curl_exec($ch);
//echo "DEBUG: ".$res."=====\n";
curl_close($ch);
return json_decode($res, true);
} }
if ( is_array($this->$pieces[0])){ return $this->$pieces[0][$pieces[1]]; public function savvyext_admin($endpoint, $in)
}else {return [];} {
//return [];
$postdata = json_encode($in);
$url = $this->cfgReadChar('savvyext_admin.url').$endpoint;
} $ch = curl_init($url);
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "POST");
public function cfgReadLong($varname){ curl_setopt($ch, CURLOPT_POSTFIELDS, $postdata);
return $this->cfgReadChar($varname); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
} curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);
public function savvyext_api($in){ curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
return []; curl_setopt($ch, CURLOPT_VERBOSE, false);
} curl_setopt($ch, CURLOPT_HTTPHEADER, [
} 'content-type: application/json',
'content-length: ' . strlen($postdata),
'server-token: ' . $this->cfgReadChar('savvyext.token')
]);
curl_setopt($ch, CURLOPT_HEADER, false); // Do not show the response headers
curl_setopt($ch, CURLOPT_USERPWD, base64_decode($this->cfgReadChar('savvyext.key')));
curl_setopt($ch, CURLOPT_TIMEOUT, 60);
$res = curl_exec($ch);
//echo "DEBUG: ".$res."=====\n";
curl_close($ch);
return json_decode($res, true);
}
}
if (!array_key_exists('savvyext', $GLOBALS)) { if (!array_key_exists('savvyext', $GLOBALS)) {
$savvyext = new savvyext_api_savvy(); $savvyext = new savvyext_api_savvy();
} }