| Line 77... |
Line 77... |
| 77 |
|
77 |
|
| 78 |
#匯入外部套件
|
78 |
#匯入外部套件
|
| 79 |
include("allInOne.php");
|
79 |
include("allInOne.php");
|
| 80 |
|
80 |
|
| 81 |
#說明函式
|
81 |
#說明函式
|
| 82 |
function help()
|
82 |
function help(){
|
| 83 |
{
|
83 |
|
| 84 |
#印出指令說明
|
84 |
#印出指令說明
|
| 85 |
echo "Usage of ".basename(__FILE__).":".PHP_EOL;
|
85 |
echo "Usage of ".basename(__FILE__).":".PHP_EOL;
|
| 86 |
echo "--cmd [command to run] 代表要執行的指令,若有多個則會按照順序執行.".PHP_EOL;
|
86 |
echo "--cmd [command to run] 代表要執行的指令,若有多個則會按照順序執行.".PHP_EOL;
|
| 87 |
echo "--name [service name] 服務的名稱".PHP_EOL;
|
87 |
echo "--name [servie name] 服務的名稱".PHP_EOL;
|
| 88 |
echo "--runOnBoot [yes/no] 開機好就要啟動該服務,預設為yes".PHP_EOL;
|
88 |
echo "--runOnBoot [yes/no] 開機好就要啟動該服務,預設為yes.".PHP_EOL;
|
| 89 |
echo "--runNow [yes/no] 馬上運行服務,預設為yes".PHP_EOL;
|
89 |
echo "--runNow [yes/no] 馬上運行服務,預設為yes.".PHP_EOL;
|
| 90 |
|
- |
|
| - |
|
90 |
echo "--keepServiceUp [yes/no] 是否要加增確保該服務在線的設定,預設為no.".PHP_EOL;
|
| - |
|
91 |
echo "--interval [秒數] 要多少時間就檢查一次服務是否在線.".PHP_EOL;
|
| - |
|
92 |
echo "--checkListenIp [ipv4/ipv6]:[port]/[tcp/udp] 要檢查哪個ip位置的port與protocol有被使用,才代表服務有在線.".PHP_EOL;
|
| - |
|
93 |
echo "\tip可用*代表所有網路界面取得的ip.".PHP_EOL;
|
| - |
|
94 |
echo "--checkListenAddr [path to socket] 要檢查哪個路徑的unix domain socket有被使用,才代表服務有在線".PHP_EOL;
|
| 91 |
#結束執行
|
95 |
#結束執行
|
| 92 |
exit;
|
96 |
exit;
|
| 93 |
}
|
97 |
|
| - |
|
98 |
}#function help end
|
| 94 |
|
99 |
|
| 95 |
#函式說明:
|
100 |
#函式說明:
|
| 96 |
#解析參數.
|
101 |
#解析參數.
|
| 97 |
#回傳結果:
|
102 |
#回傳結果:
|
| 98 |
#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
|
103 |
#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
|
| Line 164... |
Line 169... |
| 164 |
#$conf["canBeEmpty"],字串陣列,哪些必填參數的內容可為空字串或空陣列,僅當$conf["canBeEmptyString"]為"false"時會生效.
|
169 |
#$conf["canBeEmpty"],字串陣列,哪些必填參數的內容可為空字串或空陣列,僅當$conf["canBeEmptyString"]為"false"時會生效.
|
| 165 |
#$conf["canBeEmpty"]=array();
|
170 |
#$conf["canBeEmpty"]=array();
|
| 166 |
#$conf["skipableVariableCanNotBeEmpty"],字串陣列,哪些可省略參數不可以為空字串或空陣列.
|
171 |
#$conf["skipableVariableCanNotBeEmpty"],字串陣列,哪些可省略參數不可以為空字串或空陣列.
|
| 167 |
#$conf["skipableVariableCanNotBeEmpty"]=array("backTime");
|
172 |
#$conf["skipableVariableCanNotBeEmpty"]=array("backTime");
|
| 168 |
#$conf["skipableVariableName"],陣列字串,爲可省略參數的變數名稱陣列,形態爲陣列變數,例如: $conf["skipableVariableName"] = array("id","account","password");
|
173 |
#$conf["skipableVariableName"],陣列字串,爲可省略參數的變數名稱陣列,形態爲陣列變數,例如: $conf["skipableVariableName"] = array("id","account","password");
|
| 169 |
$conf["skipableVariableName"]=array("runOnBoot","runNow");
|
174 |
$conf["skipableVariableName"]=array("runOnBoot","runNow","keepServiceUp","interval","checkListenIp","checkListenAddr");
|
| 170 |
#$conf["skipableVariableType"],陣列字串,爲可省略參數的變數名稱陣列,形態爲陣列變數,例如: $conf["skipableVariableType"] = array("string",integer,"double");
|
175 |
#$conf["skipableVariableType"],陣列字串,爲可省略參數的變數名稱陣列,形態爲陣列變數,例如: $conf["skipableVariableType"] = array("string",integer,"double");
|
| 171 |
$conf["skipableVariableType"]=array("array","array");
|
176 |
$conf["skipableVariableType"]=array("array","array","array","array","array");
|
| 172 |
#$conf["skipableVarDefaultValue"],字串陣列,每個不存在的可省略變數要初始化為什麼,null與代表不指定,若預設值是參數之一,請將$conf["mustBeFilledVar"]改成"\$conf["\mustBeFilledVar\"]".
|
177 |
#$conf["skipableVarDefaultValue"],字串陣列,每個不存在的可省略變數要初始化為什麼,null與代表不指定,若預設值是參數之一,請將$conf["mustBeFilledVar"]改成"\$conf["\mustBeFilledVar\"]".
|
| 173 |
$conf["skipableVarDefaultValue"]=array(array("yes"),array("yes"));
|
178 |
$conf["skipableVarDefaultValue"]=array(array("yes"),array("yes"),null,null,null,null);
|
| 174 |
#$conf["disallowAllSkipableVarIsEmpty"],字串,是否允許每個可省略參數都為空字串,預設為"true"允許,反之為"false".
|
179 |
#$conf["disallowAllSkipableVarIsEmpty"],字串,是否允許每個可省略參數都為空字串,預設為"true"允許,反之為"false".
|
| 175 |
#$conf["variableCheck::checkArguments"]["disallowAllSkipableVarIsEmpty"]="false";
|
180 |
#$conf["variableCheck::checkArguments"]["disallowAllSkipableVarIsEmpty"]="false";
|
| 176 |
#$conf["disallowAllSkipableVarIsEmptyArray"],字串,是否允許每個可省略參數都為空陣列,預設為"true"允許,反之為"false".
|
181 |
#$conf["disallowAllSkipableVarIsEmptyArray"],字串,是否允許每個可省略參數都為空陣列,預設為"true"允許,反之為"false".
|
| 177 |
#$conf["disallowAllSkipableVarIsEmptyArray"]="";
|
182 |
#$conf["disallowAllSkipableVarIsEmptyArray"]="";
|
| 178 |
#$conf["arrayCountEqualCheck"],字串陣列,為檢查哪些陣列參數的元素數量要一樣,$conf["arrayCountEqualCheck"][$i]=array()為第$i組key為哪些的變數其元素數量要相等.
|
183 |
#$conf["arrayCountEqualCheck"],字串陣列,為檢查哪些陣列參數的元素數量要一樣,$conf["arrayCountEqualCheck"][$i]=array()為第$i組key為哪些的變數其元素數量要相等.
|
| Line 236... |
Line 241... |
| 236 |
#如果是 yes
|
241 |
#如果是 yes
|
| 237 |
if($runNow==="yes"){
|
242 |
if($runNow==="yes"){
|
| 238 |
|
243 |
|
| 239 |
#轉換為 "true"
|
244 |
#轉換為 "true"
|
| 240 |
$runNow="true";
|
245 |
$runNow="true";
|
| - |
|
246 |
|
| - |
|
247 |
}#if end
|
| - |
|
248 |
|
| - |
|
249 |
#如果有指定 keepServiceUp
|
| - |
|
250 |
if(isset($parseArgu["content"]["keepServiceUp"][0])){
|
| - |
|
251 |
|
| - |
|
252 |
#設定keepServiceUp
|
| - |
|
253 |
$keepServiceUp=$parseArgu["content"]["keepServiceUp"][0];
|
| - |
|
254 |
|
| - |
|
255 |
}#if end
|
| - |
|
256 |
|
| - |
|
257 |
#如果有指定 interval
|
| - |
|
258 |
if(isset($parseArgu["content"]["interval"][0])){
|
| - |
|
259 |
|
| - |
|
260 |
#設定interval
|
| - |
|
261 |
$interval=$parseArgu["content"]["interval"][0];
|
| - |
|
262 |
|
| - |
|
263 |
}#if end
|
| - |
|
264 |
|
| - |
|
265 |
#初始化要檢查的服務名稱
|
| - |
|
266 |
$checkListen=array("name"=>$conf["name"]);
|
| - |
|
267 |
|
| - |
|
268 |
#如果有指定 checkListenIp
|
| - |
|
269 |
if(isset($parseArgu["content"]["checkListenIp"])){
|
| - |
|
270 |
|
| - |
|
271 |
#針對每個 checkListenIp
|
| - |
|
272 |
foreach($parseArgu["content"]["checkListenIp"] as $checkListenIp){
|
| - |
|
273 |
|
| - |
|
274 |
#記錄要檢查的ip & port & protocol
|
| - |
|
275 |
$checkListen[]=array("ip"=>$checkListenIp);
|
| - |
|
276 |
|
| - |
|
277 |
}#foreach end
|
| - |
|
278 |
|
| - |
|
279 |
}#if end
|
| - |
|
280 |
|
| - |
|
281 |
#如果有指定 checkListenAddr
|
| - |
|
282 |
if(isset($parseArgu["content"]["checkListenAddr"])){
|
| - |
|
283 |
|
| - |
|
284 |
#針對每個 checkListenAddr
|
| - |
|
285 |
foreach($parseArgu["content"]["checkListenAddr"] as $checkListenAddr){
|
| - |
|
286 |
|
| - |
|
287 |
#記錄要檢查的 unix domain socket 路徑
|
| - |
|
288 |
$checkListen[]=array("addr"=>$checkListenAddr);
|
| - |
|
289 |
|
| - |
|
290 |
}#foreach end
|
| 241 |
|
291 |
|
| 242 |
}#if end
|
292 |
}#if end
|
| 243 |
|
293 |
|
| 244 |
#建立暫存檔案
|
294 |
#建立暫存檔案
|
| 245 |
#函式說明:
|
295 |
#函式說明:
|
| Line 364... |
Line 414... |
| 364 |
#$conf["params"]=array("");
|
414 |
#$conf["params"]=array("");
|
| 365 |
#$conf["enable"],字串,預設為"true",代表該服務為enable.
|
415 |
#$conf["enable"],字串,預設為"true",代表該服務為enable.
|
| 366 |
$conf["enable"]=$runOnBoot;
|
416 |
$conf["enable"]=$runOnBoot;
|
| 367 |
#$conf["startNow"],字串,預設為"true",代表該服務要立刻執行.
|
417 |
#$conf["startNow"],字串,預設為"true",代表該服務要立刻執行.
|
| 368 |
$conf["startNow"]=$runNow;
|
418 |
$conf["startNow"]=$runNow;
|
| - |
|
419 |
|
| - |
|
420 |
#如果存在 $keepServiceUp
|
| - |
|
421 |
if(isset($keepServiceUp)){
|
| - |
|
422 |
|
| - |
|
423 |
#$conf["keepServiceUp"],字串,是否要另外增加確保服務有保持啟動的服務,預設為"false"代表否;反之為"true"代表是.
|
| - |
|
424 |
$conf["keepServiceUp"]=$keepServiceUp;
|
| - |
|
425 |
|
| - |
|
426 |
}#if end
|
| - |
|
427 |
|
| - |
|
428 |
#如果存在 $checkListen
|
| - |
|
429 |
if(isset($checkListen)){
|
| - |
|
430 |
|
| - |
|
431 |
#$conf["cmd::keepServiceUp"]["checkListen"],陣列,用來判斷服務是否有正確啟動的條件,一個元素代表,其中要有一個socket info符合之,若元素的key為"ip",則其數值為[ipv4/ipv6]:port:protocol(tcp/udp);若元素的key為"addr",則其數值為unix domain socket 的位置與名稱;若元素的key為"name",則其數值為程序名稱.
|
| - |
|
432 |
$conf["cmd::keepServiceUp"]["checkListen"]=array(array("ip"=>169.254.1.1:443/tcp,"addr"=>/usr/lib/qbpwcf/qbpwcf-usock.sock,"name"=>"addr"),"name"=>"httpd");
|
| - |
|
433 |
|
| - |
|
434 |
}#if end
|
| - |
|
435 |
|
| - |
|
436 |
#如果存在 $interval
|
| - |
|
437 |
if(isset($interval)){
|
| - |
|
438 |
|
| - |
|
439 |
#$conf["cmd::keepServiceUp"]["interval"],字串,檢查沒問題後,要多少秒後再檢查一次,預設為30秒,亦即"30".
|
| - |
|
440 |
$conf["cmd::keepServiceUp"]["interval"]=$interval;
|
| - |
|
441 |
|
| - |
|
442 |
}#if end
|
| - |
|
443 |
|
| 369 |
#參考資料:
|
444 |
#參考資料:
|
| 370 |
#無.
|
445 |
#無.
|
| 371 |
#備註:
|
446 |
#備註:
|
| 372 |
#無.
|
447 |
#無.
|
| 373 |
$registerService=cmd::registerService($conf);
|
448 |
$registerService=cmd::registerService($conf);
|