apache鉤子模組開發

2021-10-05 11:31:27 字數 951 閱讀 2711

背景:

現專案下,有這樣乙個需求,當使用者訪問的是特定網域名稱時跳轉到登陸介面輸入密碼,驗證成功後,在40分鐘內可以正常瀏覽介面,以此迴圈。

首先需要前端做好相關介面,且後台要提供乙個校驗密碼的介面,後台在校驗成功需寫入相關記錄。

在此基礎上開始開發apache相關模組。

apache的鉤子函式挺多的,在此我使用的是run_first ap_hook_handler(),run_first是鉤子型別,還有2個型別run_all,void。

void型別在對掛鉤陣列進行遍歷呼叫的時候,直到遍歷呼叫結束或者發生錯誤為止。這種型別通常稱之為void,是由於其沒有任何返回值。

run_all型別在對掛鉤陣列進行遍歷呼叫的時候,即使呼叫的請求被「decline」,呼叫也將繼續;只有呼叫請求發生錯誤才返回該錯誤值,同時退出遍歷。

run_first型別在遍歷呼叫過程中一旦找到合適的函式,即結果不為decline的時候,函式即返回,不再繼續遍歷呼叫,即使後面仍然有合法的可呼叫函式。

很明顯,我需要的型別是run_first,當判斷未登陸成功時就載入登陸介面,然後直接return 0k,如果判斷是已登陸未超時就直接return decline,顯示正常網頁。

通過了解,看起來是挺簡單的 ,但是寫好一測就問題了,訪問的網頁是html時沒有問題,但是訪問php網頁時卻出現了異常,這是由於使用sethandler 時,php的處理器在自己寫的鉤子函式前呼叫了。

那還是有些知識點沒有了解清楚,我們繼續。

鉤子函式有個掛鉤的綜合排序引數,之前使用的是apr_hook_first,以為是最先呼叫的了,一時心急沒仔細看相關資料就擼上**了。再通過了解,我們可以知道apache提供了5個通用的巨集: apr_hook_really_first、apr_hook_first、apr_hook_middle、apr_hook_last、 apr_hook_really_last。很明顯reallyn已經告訴我們,它才是正主。於是修改了一下就可以了。

Apache 模組開發

一 目的 寫乙個apache2.0的mod模組,讀取配置,並對所有字尾為.hello的請求進行處理。二 步驟 建立乙個mod hello.c檔案 1 定義乙個模組。2 定義介面。module ap module declare data hello module 說明 其中create modhel...

Apache模組開發

參考 第一步使用採用apache只帶的工具apxs產生乙個模板helloword模組 apxs g n hello 這樣就會在當前目錄產生乙個hello資料夾 進入hello資料夾,修改mod hello.c檔案 裡面有hello handler函式,即為對請求進行處理的函式。可以再這裡修改處理請求...

apache模組開發例項

該例子是在 usr local apache2 logs error log檔案中寫入一條訪問記錄 apache2 mod tut1 a request was made.執行下面指令 在當前目錄下生成apache2 modules目錄 進入apache2 modules自目錄tut1 執行下面指令...