老地方冰果室交流區

歡迎冰果室讀者在此交流
現在的時間是 10/23/2019 10:57 am

所有顯示的時間為 UTC + 8 小時




發表新文章 回覆主題  [ 3 篇文章 ] 
發表人 內容
 文章主題 : Startup Item 小例
文章發表於 : 03/18/2005 7:52 pm 
離線
討論區管理員
頭像

註冊時間: 05/01/2001 1:01 am
文章: 960
來自: 邪教組織 #osxchat
作好這個 Startup Item 有段時間了,但是因為一直不知道開啟的 service 的依存性, 所以一直搞不定,現在大概已經解決了。

要作 Startup Item 可以直接在 /Library/StartupItems/ 開一個自己要的目錄,然後在裡面寫一個 Script 和一個 StartupParameters.plist 檔案就可以了。

以下是我作的:
代碼:
$ mkdir /Library/StartupItems/Firewall
$ vi /Library/StartupItems/StartupParameters.plist
(沒有使用 sudo 的原因是 /Library/StartupItems 通常不需要 root 權限就能覆寫。)

StartupParameters.plist 長成這樣 (說明:NetworkExtensions 一定要在 ipfw 指令以前就要完成,沒有完成的話 ipfw 不會動。)
代碼:
{
  Description     = "Customized Firewall Rules";
  Provides        = ("Firewall");
  Requires        = ("NetworkExtensions");
  OrderPreference = "None";
  Messages =
  {
    start = "Starting Customized Firewall Rules.....";
    stop  = "Stopping Customized Firewall Rules.....";
  };
}

然後新建一個 Script
代碼:
$ vi /Library/StartupItems/Firewall/Firewall

Script 長這樣
代碼:
#!/bin/sh

. /etc/rc.common

IPFW=/sbin/ipfw
StartService ()
{
    ConsoleMessage "Setting Customized Firewall Rules"
    ConsoleMessage "    Prevent from receiving anything from other office at udp port 2222."
    ${IPFW} add deny udp from any to any 2222 via en*
    ConsoleMessage "    Prevent Microsoft Office's piracy detection mechanism from broadcasting product IDs and access information through a random tcp port greater than 3000 (the ones we saw were all in the range 3000 to 3999) to local subnet."
    ${IPFW} add deny tcp from any to any 3000-3999 in recv en* setup
    ConsoleMessage -S
}

StopService ()
{
    ConsoleMessage "Flushing Customized Firewall Rules"
    ${IPFW} -f flush
}

RestartService ()
{
    ConsoleMessage "Using New Customized Firewall Rules"
    StopService
    StartService
}

RunService "$1"

記得要修改權限
代碼:
$ chmod +x /Library/StartupItems/Firewall/Firewall

然後要重開機才會動。

當然也可以用 root 權限啟動
代碼:
$ sudo /sbin/SystemStarter start "Firewall"


或是洗掉 firewall rule
代碼:
$ sudo /sbin/SystemStarter stop "Firewall"

_________________
void
sched_init(void){
printf("standard timeslicing quantum is %d us\n", std_quantum_us);
}


最後由 謝孟叡 於 03/19/2005 5:33 am 編輯,總共編輯了 2 次。

回頂端
 個人資料  
 
 文章主題 :
文章發表於 : 03/18/2005 8:37 pm 
離線
留言五百如一日

註冊時間: 12/25/2001 1:01 am
文章: 610
引言回覆:
誰來告訴我要怎麼能用到 StopService() ?


手動的 start、stop、restart,試試:

代碼:
$ /Library/StartupItems/Firewall/Firewall start
$ /Library/StartupItems/Firewall/Firewall stop
$ /Library/StartupItems/Firewall/Firewall restart


回頂端
 個人資料  
 
 文章主題 :
文章發表於 : 03/19/2005 4:58 am 
離線
討論區管理員
頭像

註冊時間: 05/01/2001 1:01 am
文章: 960
來自: 邪教組織 #osxchat
悲 寫:
引言回覆:
誰來告訴我要怎麼能用到 StopService() ?


手動的 start、stop、restart,試試:

代碼:
$ /Library/StartupItems/Firewall/Firewall start
$ /Library/StartupItems/Firewall/Firewall stop
$ /Library/StartupItems/Firewall/Firewall restart


啊,未完成作品被悲老抓到~~見笑見笑。 :p

_________________
void
sched_init(void){
printf("standard timeslicing quantum is %d us\n", std_quantum_us);
}


回頂端
 個人資料  
 
顯示文章 :  排序  
發表新文章 回覆主題  [ 3 篇文章 ] 

所有顯示的時間為 UTC + 8 小時


不能 在這個版面發表主題
不能 在這個版面回覆主題
不能 在這個版面編輯您的文章
不能 在這個版面刪除您的文章
不能 在這個版面上傳附加檔案

搜尋:
前往 :  
POWERED_BY
正體中文語系由 竹貓星球 維護製作