與 cFos PNet 一起發行的指令碼可能可告訴您要如何用 Javascript 來實作伺服器功能。他們是設計來與客戶端瀏覽器互動的指令碼,例如 jQuery。按照慣例,伺服器端的指令碼會使用 .jss 副檔名,而客戶端使用的指令碼附檔名為 .js。換句話說,cFos PNet *會執行* .jss 檔案,而.js 檔案會傳輸至瀏覽器。
您可以使用 Visual Studio 或 Visual Web Developer 中的指令碼除錯器。若需除錯指令碼,您需要支援遠程除錯的 Visual Studio 或 Visual Web Developer 版本,例如 Visual Studio 專業版。要開啟指令碼除錯,將 c:\programdata\cFos\cFosPNet 中的 GLOBAL.INI 的 [param] 段落中設定 enable_script_debugging=1。
如果您未安裝指令碼除錯器,請把值設定為 0,否則在某些電腦上會卡住。您也可以在執行 cfospnet.exe 時加上 -enable_script_debugging 或 -esd 參數來開啟指令碼除錯功能。
在 pub 資料夾中有子資料夾 users,當中還有每一位使用者的子資料夾。使用者密碼或其他可選的個人設定儲存在文件數據存儲在名稱為 PROFILE.TXT 的雜湊清單中。這樣可讓 cFos Pnet 內建的 HTTP 身份驗證功能高速存取並快取住帳號設定。在公開資料夾中也有一個子資料夾 www 與每一個使用者的子資料夾。這個資料夾包含了使用者可下載的檔案。file_op.jss 指令碼可讓使用者上傳文件到這個資料夾。
腳本根據 .htaccess 裡的個別設定來執行認證,因此你需要此目錄使用者的正確帳號密碼。
這為指令碼操作的簡短說明。您應該到原始碼中尋找如何運作。 | |
makedir2.jss | 如果在請求的資料夾中沒有 index.htm 或 index.html 檔案,cFos PNet 會執行這個指令碼來產生資料夾清單。 指令碼使用 FileSystemObject 來收集目前資料夾內容的資訊。然後載入一個 XML 範本文件,分析後以 XML 提供的資料夾內容產生 HTML 頁面。若要更改資料夾清單的外觀或功能,請修改 XML 範本。產生的 HTML 的檔案中有基本的維護連結,您可以系統管理員的帳號登入後重新命名、刪除檔案或資料夾、上傳檔案並建立新的資料夾。這個功能是由客戶端的 jQuery 傳送 Ajax 請求給 cFos PNet 來進行。伺服器端的指令碼檔案 file_op.jss 會執行需要的 HTTP 認證並處理檔案操作。 |
file_op.jss | 根據以上的認證,進行檔案操作。檔案操作有 rename、delete、mkdir 來建立資料夾和上傳。上傳通常需要認證;由於瀏覽器總是先上傳整個檔案到伺服器後,才會取得認證資訊,將會傳送文件兩次。為了讓瀏覽器先進行認證,file_op.jss 指令碼檔案會提供檔案上傳前的操作。而瀏覽器會透過 Ajax 請求要求伺服器回應 HTTP 認證(401),然後再實際上傳。上傳過程會交由 upload.jss 中的函數,使用 cFos PNet 的檔案物件以允許上傳任意大小的檔案。 |
user_op.jss | 執行基本的使用者管理功能:create、delete、reset password 和 list,必須先以 admin 帳號登入。 |
list_op.jss | 由於雜湊清單在 cFos PNet 中扮演重要的角色,list_op.jss 為 Ajax 請求提供基礎清單操作。如上文所述進行相同的認證方案。也就是說,會依照指令碼位置來選擇要進行驗證的使用者。認證是根據各個資料夾中的 .htaccess 來達成。list_op.jss 提供以下操作: get取得雜湊清單中的值。 set設定值清單的鍵值。 save儲存快照到硬碟中。 erase刪除一組鍵值。 clear 清除所有鍵值。 remove刪除記憶體/硬碟中的清單。 size回傳清單大小。 list列出雜湊清單的所有元素。 dyndns.htm 的 AJAX 會使用這些操作來設定 DynDNS 設定資訊。 |
dyndns.jss | 使用私人資料資料夾中的雜湊清單 dyndns.txt 設定檔案來註冊 DynDNS 或取消註冊。 可以在伺服器的啟動和關閉時使用(請參閱第 1 章)。 |
get_connections.jss | 用於顯示目前的 HTTP 連線。HTTP 都是 TCP 連線。要加快 HTTP 請求,瀏覽器會嘗試重複使用 HTTP 請求的 TCP 連線。HTTP 請求實際上只是一段短訊息跟回應。在那之後的幾秒鐘瀏覽器就會關閉 TCP,因此您可能只會看到使用者出現一下下。如果認證成功,將會回傳使用者名稱與 IP 地址。 |
stretch.jss | 由於調整網頁中的圖片格式始終是主要的負擔,我們做了一小段指令碼,使用 cFos PNet image object (GDI+)。它在網址的查詢字串中會使用檔案名稱和 w(寬度)與 h(高度)等參數。若您的圖片皆為不同大小,您應該只使用一個參數以保持圖片的寬高比。makedir2.jss 使用這個指令碼的連結來顯示目前資料夾中的圖片縮圖。 |
utils.jss | 集合常用的函數來簡化伺服器端的指令碼。提供以下功能: -包裝 Web 伺服器物件與其函數。 - 延伸一些 JavaScript 字串物件相關的有用功能。 - 進行指令碼參數評估,評估查詢字串或 POST 表單資料。 - 載入,儲存和傳送小檔案(透過電子郵件)。 - Cookies 中使用 RFC 1123 日期。 - Cookies。 - 簡單的 XML 轉換功能。 若您在較大的計畫使用 cFos PNet,可能會想將各個功能單元封裝成模組,而不是單純引入的指令碼檔案位。cFos PNet 支援 common.js 專案的模組規格。 |