Subversion Repositories qbpwcf-lib(archive)

Rev

Rev 668 | Rev 673 | Go to most recent revision | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 668 Rev 671
Line 1528... Line 1528...
1528
 
1528
 
1529
#如果 $whiteIp 不為空
1529
#如果 $whiteIp 不為空
1530
if(count($whiteIp)>0){
1530
if(count($whiteIp)>0){
1531
 
1531
 
1532
	#如果有 ip-blockerd.service 存在
1532
	#如果有 ip-blockerd.service 存在
-
 
1533
	#函式說明:
-
 
1534
	#檢查多個檔案與資料夾是否存在.
-
 
1535
	#回傳的結果:
-
 
1536
	#$result["status"],執行正常與否,"true"代表正常,"false"代表不正常.
-
 
1537
	#$result["error"],錯誤訊息陣列.
-
 
1538
	#$resutl["function"],當前執行的涵式名稱.
-
 
1539
	#$result["argu"],使用的參數.
-
 
1540
	#$result["allExist"],所有檔案皆存在的識別,"true"代表皆存在,"false"代表沒有全部都存在.
-
 
1541
	#$result["varName"][$i],爲第$i個資料夾或檔案的路徑與名稱。
-
 
1542
	#$result["varNameFullPath"][$i],爲第$i個資料夾或檔案的完整檔案系統路徑與名稱,如果不存在則代表路徑是網址.
-
 
1543
	#$result["varNameWebPath"][$i],為第$i個資料夾或檔案的網址,若"web"參數為"true",才會有該內容.
-
 
1544
	#$result["varExist"][$i],爲第$i個資料夾或檔案是否存在,"true"代表存在,"false"代表不存在。
-
 
1545
	#必填參數:
-
 
1546
	#$conf["fileArray"],陣列字串,要檢查是否存在的檔案有哪些,須爲一維陣列數值。
-
 
1547
	$conf["fileArray"]=array("./qbpwcf/usr/lib/systemd/system/ip-blockerd.service");
-
 
1548
	#$conf["fileArgu"],字串,php變數__FILE__的內容,亦即該檔案在檔案系統的絕對路徑
-
 
1549
	$conf["fileArgu"]=__FILE__;
-
 
1550
	#可省略參數:
-
 
1551
	#$conf["disableWebSearch"],"字串",是否取消「當檔案找不到時,改用catchWebContent類別的wget函數來檢查檔案是否存在於網路上」的功能,"false"不取消,若要取消該功能請設為"true",若抓到的內容為空字串則會視為檔案不存在,預設為"true".
-
 
1552
	#$conf["disableWebSearch"]="false";
-
 
1553
	#$conf["userDir"],字串,網頁是否置放於家目錄底下,"true"為是,"false"為不是,預設為"true".
-
 
1554
	$conf["userDir"]="false";
-
 
1555
	#$conf["web"],字串,檔案是放在web就是"true",反之為檔案系統"false",預設為"true".
-
 
1556
	$conf["web"]="false";
-
 
1557
	#參考資料:
-
 
1558
	#http://php.net/manual/en/function.file-exists.php
-
 
1559
	#http://php.net/manual/en/control-structures.foreach.php
-
 
1560
	#備註:
-
 
1561
	#函數file_exists檢查的路徑為檔案系統的路徑
-
 
1562
	#$result["varName"][$i]結果未實作
-
 
1563
	$checkMultiFileExist=fileAccess::checkMultiFileExist($conf);
-
 
1564
	unset($conf);
1533
	
1565
	
-
 
1566
	#如果執行失敗
-
 
1567
	if($checkMultiFileExist["status"]==="false"){
-
 
1568
	
-
 
1569
		#函式說明:
-
 
1570
		#撰寫log
-
 
1571
		#回傳結果:
-
 
1572
		#$result["status"],狀態,"true"或"false".
-
 
1573
		#$result["error"],錯誤訊息陣列.
-
 
1574
		#$result["function"],當前函式的名稱.
-
 
1575
		#$result["argu"],使用的參數.
-
 
1576
		#必填參數:
-
 
1577
		#$conf["path"],字串,log檔案的路徑與名稱.
-
 
1578
		$conf["path"]=$logFile;
-
 
1579
		#$conf["content"],any,要寫的內容,若內容不為字串則會用var_dump的格式寫入.
-
 
1580
		$conf["content"]=$createMultiLinkInDir;
-
 
1581
		#$conf["fileArgu"],字串,php變數__FILE__的內容,亦即該檔案在檔案系統的絕對路徑
-
 
1582
		$conf["fileArgu"]=__FILE__;
-
 
1583
		#可省略參數:
-
 
1584
		#$conf["rewrite"],預設為"false",接續寫入;反之"true"代表重新寫入.
-
 
1585
		#$conf["rewrite"]="false";
-
 
1586
		#參考資料:
-
 
1587
		#無.
-
 
1588
		#備註:
-
 
1589
		#無.
-
 
1590
		$record=logs::record($conf);
-
 
1591
		
-
 
1592
		#如果執行失敗
-
 
1593
		if($record["status"]==="false"){
-
 
1594
		
-
 
1595
			#印出結果
-
 
1596
			var_dump($record);
-
 
1597
			
-
 
1598
			}#if end
-
 
1599
			
-
 
1600
		#異常結束執行
-
 
1601
		exit(1);
-
 
1602
 
-
 
1603
		}#if end
-
 
1604
		
-
 
1605
	#如果存在
-
 
1606
	if($checkMultiFileExist["allExist"]==="true"){
-
 
1607
	
-
 
1608
		#啟動服務的關鍵字
-
 
1609
		$serviceStartKeyWord="ExecStart=/usr/bin/ipBlockerd.php";
-
 
1610
		
-
 
1611
		#重新啟動服務的關鍵字
-
 
1612
		$serviceRestartKeyWord="ExecReload=killall ipBlockerd.php; sleep 10; ipBlockerd.php";
-
 
1613
		
-
 
1614
		#函式說明:
-
 
1615
		#將一維陣列轉換為用特定符號間隔的字串,ex:array("1","2","3") to "a;b;c;".
-
 
1616
		#回傳的結果:
-
 
1617
		#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
-
 
1618
		#$result["function"],當前執行的function名稱
-
 
1619
		#$result["error"],錯誤訊息陣列.
-
 
1620
		#$result["content"],處理好的字串.
-
 
1621
		#$result["argu"],使用的參數.
-
 
1622
		#必填參數:
-
 
1623
		#$conf["inputArray"],字串陣列,要轉成字串的一維陣列.
-
 
1624
		$conf["inputArray"]=$whiteIp;
-
 
1625
		#可省略參數:
-
 
1626
		#$conf["spiltSymbol"],字串,用來區隔字串的符號,預設為;
-
 
1627
		$conf["spiltSymbol"]=" --exclude ";
-
 
1628
		#$conf["skipEnd"],字串,結尾是否不要加上符號,預設為"false",要加上符號,"true"代表不要加上符號。
-
 
1629
		$conf["skipEnd"]="true";
-
 
1630
		#$conf["spiltSymbolAtStart"],字串,是否要在開頭加上spiltSymbol,預設為"false",代表不要;反之為“true”.
-
 
1631
		$conf["spiltSymbolAtStart"]="true";
-
 
1632
		#參考資料:
-
 
1633
		#無.
-
 
1634
		#備註:
-
 
1635
		#無.
-
 
1636
		$arrayToString=arrays::arrayToString($conf);
-
 
1637
		unset($conf);
-
 
1638
	
-
 
1639
		#如果執行出錯
-
 
1640
		if($arrayToString["status"]==="false"){
-
 
1641
	
-
 
1642
			#函式說明:
-
 
1643
			#撰寫log
-
 
1644
			#回傳結果:
-
 
1645
			#$result["status"],狀態,"true"或"false".
-
 
1646
			#$result["error"],錯誤訊息陣列.
-
 
1647
			#$result["function"],當前函式的名稱.
-
 
1648
			#$result["argu"],使用的參數.
-
 
1649
			#必填參數:
-
 
1650
			#$conf["path"],字串,log檔案的路徑與名稱.
-
 
1651
			$conf["path"]=$logFile;
-
 
1652
			#$conf["content"],any,要寫的內容,若內容不為字串則會用var_dump的格式寫入.
-
 
1653
			$conf["content"]=$arrayToString;
-
 
1654
			#$conf["fileArgu"],字串,php變數__FILE__的內容,亦即該檔案在檔案系統的絕對路徑
-
 
1655
			$conf["fileArgu"]=__FILE__;
-
 
1656
			#可省略參數:
-
 
1657
			#$conf["rewrite"],預設為"false",接續寫入;反之"true"代表重新寫入.
-
 
1658
			#$conf["rewrite"]="false";
-
 
1659
			#參考資料:
-
 
1660
			#無.
-
 
1661
			#備註:
-
 
1662
			#無.
-
 
1663
			$record=logs::record($conf);
-
 
1664
			
-
 
1665
			#如果執行失敗
-
 
1666
			if($record["status"]==="false"){
-
 
1667
			
-
 
1668
				#印出結果
-
 
1669
				var_dump($record);
-
 
1670
				
-
 
1671
				}#if end
-
 
1672
				
-
 
1673
			#異常結束執行
-
 
1674
			exit(1);
-
 
1675
 
-
 
1676
			}#if end
-
 
1677
 
-
 
1678
		#啟動服務的新內容
-
 
1679
		$serviceStartNewContent=$serviceStartKeyWord.$arrayToString["content"];
-
 
1680
 
-
 
1681
		#重新啟動服務的新內容
-
 
1682
		$serviceRestartNewContent=$serviceRestartKeyWord.$arrayToString["content"];
-
 
1683
	
1534
	#設置白名單ip
1684
		#設置白名單ip
-
 
1685
		#函式說明:
-
 
1686
		#更新檔案的內容.
-
 
1687
		#回傳結果:
-
 
1688
		#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
-
 
1689
		#$result["error"],錯誤訊息.
-
 
1690
		#$result["function"],當前執行的函數名稱.
-
 
1691
		#$result["content"],軟連結的資訊.
-
 
1692
		#必填參數:
-
 
1693
		#$conf["fileArgu"],字串,變數__FILE__的內容.
-
 
1694
		$conf["fileArgu"]=__FILE__;
-
 
1695
		#$conf["file"],字串,要更新的檔案位置與名稱.
-
 
1696
		$conf["file"]="";
-
 
1697
		#可省略參數:
-
 
1698
		#$conf["overWriteWith"],字串陣列,要置換成什麼樣的內容,每個元素代表一行內容.
-
 
1699
		#$conf["overWriteWith"]=array();
-
 
1700
		#$conf["replaceWith"],字串陣列,要將什麼內容置換成什麼內容.
-
 
1701
		$conf["replaceWith"]=array(array($serviceStartKeyWord,$serviceStartNewContent),array($serviceRestartKeyWord,$serviceRestartNewContent));
-
 
1702
		#$conf["addToTailWhenNoMatch"],字串,預設為"false"不做事;若為"true",則代表若使用 "replaceWith" 參數但沒有符合條件的內容出現,則新增到檔案的尾端.
-
 
1703
		#$conf["addToTailWhenNoMatch"]="false";
-
 
1704
		#$conf["addToTailBeforeThat"],字串,當 "replaceWith" 參數有使用,且 "addToTailWhenNoMatch" 為 "true" 時,若有使用該參數,則會從尾端尋找符合條件的行內容,然後將 沒有符合 "replaceWith" 條件的內容新增在此之前.
-
 
1705
		#$conf["addToTailBeforeThat"]="?\>";
-
 
1706
		#參考資料:
-
 
1707
		#無.
-
 
1708
		#備註:
-
 
1709
		#無.
-
 
1710
		$updateFile=fileAccess::updateFile($conf);
-
 
1711
		unset($conf);
-
 
1712
	
-
 
1713
		#如果執行出錯
-
 
1714
		if($updateFile["status"]==="false"){
-
 
1715
	
-
 
1716
			#函式說明:
-
 
1717
			#撰寫log
-
 
1718
			#回傳結果:
-
 
1719
			#$result["status"],狀態,"true"或"false".
-
 
1720
			#$result["error"],錯誤訊息陣列.
-
 
1721
			#$result["function"],當前函式的名稱.
-
 
1722
			#$result["argu"],使用的參數.
-
 
1723
			#必填參數:
-
 
1724
			#$conf["path"],字串,log檔案的路徑與名稱.
-
 
1725
			$conf["path"]=$logFile;
-
 
1726
			#$conf["content"],any,要寫的內容,若內容不為字串則會用var_dump的格式寫入.
-
 
1727
			$conf["content"]=$updateFile;
-
 
1728
			#$conf["fileArgu"],字串,php變數__FILE__的內容,亦即該檔案在檔案系統的絕對路徑
-
 
1729
			$conf["fileArgu"]=__FILE__;
-
 
1730
			#可省略參數:
-
 
1731
			#$conf["rewrite"],預設為"false",接續寫入;反之"true"代表重新寫入.
-
 
1732
			#$conf["rewrite"]="false";
-
 
1733
			#參考資料:
-
 
1734
			#無.
-
 
1735
			#備註:
-
 
1736
			#無.
-
 
1737
			$record=logs::record($conf);
-
 
1738
			
-
 
1739
			#如果執行失敗
-
 
1740
			if($record["status"]==="false"){
-
 
1741
			
-
 
1742
				#印出結果
-
 
1743
				var_dump($record);
-
 
1744
				
-
 
1745
				}#if end
-
 
1746
				
-
 
1747
			#異常結束執行
-
 
1748
			exit(1);
-
 
1749
 
-
 
1750
			}#if end
-
 
1751
	
-
 
1752
		}#if end
1535
 
1753
 
1536
	}#if end
1754
	}#if end
1537
 
1755
 
1538
#於 /etc/systemd/system 底下建立 $rootPath.$name."/usr/lib/systemd/system" 底下所有服務檔案的軟連結.
1756
#於 /etc/systemd/system 底下建立 $rootPath.$name."/usr/lib/systemd/system" 底下所有服務檔案的軟連結.
1539
#函式說明:
1757
#函式說明: