From ed8705baf8e2f6b05a711a90e0ee58416a3cb47b Mon Sep 17 00:00:00 2001 From: "altob.rd" Date: Wed, 22 Nov 2017 11:58:04 +0800 Subject: [PATCH] acti --- controllers/Acti_service.php | 128 +++++++++++++++++++++++++++++++++++++ phplibs/Altob.Sync.Integration.php | 24 +++++++ 2 files changed, 152 insertions(+) create mode 100644 controllers/Acti_service.php diff --git a/controllers/Acti_service.php b/controllers/Acti_service.php new file mode 100644 index 0000000..d2a932d --- /dev/null +++ b/controllers/Acti_service.php @@ -0,0 +1,128 @@ +my_ip(); + if(!in_array($from_ip, array('127.0.0.1'))) + { + trigger_error('refused://from:'.$from_ip.'..refused..'.print_r($_REQUEST, true)); + exit; + } + + $method_name = $this->router->fetch_method(); + if (in_array($method_name, array('sos'))) + { + ob_end_clean(); + ignore_user_abort(); + ob_start(); + + echo 'ok'; + + header('Connection: close'); + header('Content-Length: ' . ob_get_length()); + ob_end_flush(); + flush(); + } + } + + // 取得 IP + function my_ip() + { + if (getenv('HTTP_X_FORWARDED_FOR')) + { + $ip = getenv('HTTP_X_FORWARDED_FOR'); + } + elseif (getenv('HTTP_X_REAL_IP')) + { + $ip = getenv('HTTP_X_REAL_IP'); + } + else { + $ip = $_SERVER['REMOTE_ADDR']; + } + + return $ip; + } + + // 發生錯誤時集中在此處理 + public function error_handler($errno, $errstr, $errfile, $errline, $errcontext) + { + $log_msg = explode('://', $errstr); + if (count($log_msg) > 1) + { + $log_file = $log_msg[0]; + $str = date('H:i:s')."|{$log_msg[1]}|{$errfile}|{$errline}|{$errno}\n"; + } + else + { + $log_file = APP_NAME; + $str = date('H:i:s')."|{$errstr}|{$errfile}|{$errline}|{$errno}\n"; + } + + error_log($str, 3, LOG_PATH.$log_file . '.' . date('Ymd').'.log.txt'); // 3代表參考後面的檔名 + } + + + // 顯示logs + public function show_logs() + { + $lines = $this->uri->segment(3); // 顯示行數 + if (empty($lines)) $lines = 100; // 無行數參數, 預設為40行 + + // echo '
';
+        echo '
';      
+       
+		passthru('/usr/bin/tail -n ' . $lines . '  ' . LOG_PATH.APP_NAME . '.' . date('Ymd').'.log.txt');	// 利用linux指令顯示倒數幾行的logs內容 
+        echo "\n----- " . LOG_PATH.APP_NAME . '.' . date('Ymd').'.log.txt' . ' -----';   
+        echo '
'; + } + + // [區網] 由設備端呼叫 + public function sos() + { + $station_no = $this->uri->segment(3); // 場站編號 + $machine_no = $this->uri->segment(4); // 設備編號 + + trigger_error(__FUNCTION__ . "..{$station_no},{$machine_no}.."); + + require_once(ALTOB_SYNC_FILE) ; + + // 傳送 SOS + $sync_agent = new AltobSyncAgent(); + $sync_agent->init($station_no, date('Y-m-d H:i:s')); + $sync_result = $sync_agent->sync_st_sos($machine_no); + trigger_error( "..sync_st_sos.." . $sync_result); + } + +} diff --git a/phplibs/Altob.Sync.Integration.php b/phplibs/Altob.Sync.Integration.php index ae77168..9cd83a5 100644 --- a/phplibs/Altob.Sync.Integration.php +++ b/phplibs/Altob.Sync.Integration.php @@ -157,6 +157,30 @@ class AltobSyncAgent // 傳遞參數至遠端。 return $oService->ServerPost($this->post_parms); } + + // =============================================== + // SOS + // =============================================== + + // 傳送 SOS + public function sync_st_sos($machine_no) + { + $error_parms_msg = $this->check_init_parms(); + if(!empty($error_parms_msg)) { return $error_parms_msg; } + + if(empty($machine_no)) + return 'machine_no not found'; + + $this->post_parms['machine_no'] = $machine_no; + + // 初始化網路服務物件。 + $oService = new AltobSyncService(); + $oService->ServiceURL = AltobSyncAgent::SYNC_CARS_URL; + $oService->ServiceCMD = 'st_sos'; + + // 傳遞參數至遠端。 + return $oService->ServerPost($this->post_parms); + } // =============================================== // members