中文化軟體聯盟

 取回密碼
 我要註冊
搜尋
檢視: 4861|回覆: 14

[轉貼]讓stunnel成為becky的插件

[複製連結]
發表於 2004-4-27 22:49:22 | 顯示全部樓層 |閱讀模式
讓stunnel成為becky的插件
[email protected]

    由於版權問題,becky不支持ssl,通常我們是用stunnel來解決這個問題的,但是用stunnel畢竟要另外起一個進程,還要佔用系統托盤。既然becky支持plugin,我們可以考慮花很少的一點代價把stunnel改造成becky的插件。
   
    首先,下載stunnel的源碼:
http://www.stunnel.org/download/stunnel/src/stunnel-4.05.tar.gz
    stunnel自己帶的makefile是用gcc的,但是似乎和靜態的openssl庫鏈接時有問題。好在stunnel的程序員很照顧我,代碼都是ANSI C,可以不出任何問題地用VC編譯。先修改stunnel的gui.c,找到:
int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance,
    LPSTR lpszCmdLine, int nCmdShow) {
修改為:
extern __declspec( dllexport ) int stunnel()
{
    HINSTANCE hInstance;
    HINSTANCE hPrevInstance;
    LPSTR lpszCmdLine = "plugins\\stunnel\\stunnel.conf";
    int nCmdShow;
   
下面的win_main函數是創建窗體的,我們並不需要,而且這部分代碼會合其他插件衝突,還會導致becky不能正常退出。把win_main函數刪掉大部分代碼後改成這個樣子:
static int win_main(HINSTANCE hInstance, HINSTANCE hPrevInstance,
        LPSTR lpszCmdLine, int nCmdShow) {
    DWORD iID;
    CloseHandle(CreateThread(NULL, 0, ThreadFunc, NULL, 0, &iID));
    return 0;
    }

然後把靜態openssl庫libeay32.lib和ssleay32.lib拷貝到src目錄,用下面這些命令編譯:
::-------------------------------------------------
cl -DUSE_WIN32 -DHAVE_OPENSSL -c stunnel.c
cl -DUSE_WIN32 -DHAVE_OPENSSL -c ssl.c
cl -DUSE_WIN32 -DHAVE_OPENSSL -c client.c
cl -DUSE_WIN32 -DHAVE_OPENSSL -c protocol.c
cl -DUSE_WIN32 -DHAVE_OPENSSL -c sthreads.c
cl -DUSE_WIN32 -DHAVE_OPENSSL -c log.c
cl -DUSE_WIN32 -DHAVE_OPENSSL -c options.c
cl -DUSE_WIN32 -DHAVE_OPENSSL -c sselect.c
cl -DUSE_WIN32 -DHAVE_OPENSSL -c gui.c
rc resources.rc
link -out:stunnel.dll /DLL ws2_32.lib gdi32.lib user32.lib shell32.lib comdlg32.lib libeay32.lib ssleay32.lib stunnel.obj ssl.obj client.obj protocol.obj sthreads.obj log.obj options.obj sselect.obj gui.obj resources.res
::-------------------------------------------------
    得到stunnel.dll和stunnel.lib。stunnel.dll導出一個int stunnel()函數。
    下載bercky的Plugin SDK:
http://www.rimarts.com/b2sdk/B2PinSDK-20800.zip
    展開後可以看到裡面有BkPGP的完整代碼,我們就在此基礎上改。刪掉BkPGP自身功能部分的所有代碼,把下面這一段加到BKC_OnStart裡:
   
    static char dllname[] = "plugins\\stunnel\\stunnel.dll";
    static char funcname[] = "stunnel";
    static HMODULE hStunnel;
    static FARPROC stunnel;
    hStunnel = LoadLibraryA( dllname );
    if ( hStunnel==NULL )
    {
         MessageBox
         ( 0,
           "Load stunnel.dll failed.",
           "BkSSL",
           MB_ICONERROR
         );
         return 1;
    }
   
    stunnel = GetProcAddress( hStunnel, funcname );
    stunnel();
編譯為BkSSL.dll。
使用:把BkSSL.dll放在plugins目錄,另外,在plugins下面建立stunnel目錄,將stunnel.dll和stunnel.conf、stunnel.pem都放進去即可。
發表於 2004-4-28 19:57:46 | 顯示全部樓層
感謝您的分享 ^^ 真是辛苦你嘍!
不過好麻煩喔...
肉腳如我還是用bkrun+stunnel比較簡單 ^^
發表於 2004-4-29 21:51:48 | 顯示全部樓層
如果有人能把這個編譯過的DLL放上來那就更好了…
很多人看了這麼多步驟大概就暈了-_-
匿名  發表於 2004-4-30 11:42:13
stunnel自己帶的makefile是用gcc的,但是似乎和靜態的openssl庫鏈接時有問題。好在stunnel的程序員很照顧我,代碼都是ANSI C,可以不出任何問題地用VC編譯。先修改stunnel的gui.c,找到:
我的VC怎么编译没有办法,好像很多头文件,还有很多UNIX的SYS/ 之类的 没有办法编译ASS
 樓主| 發表於 2004-5-3 12:26:51 | 顯示全部樓層
[這篇文章最後由lay0n2004在 2004/05/03 13:11 編輯]

對不起沒讓大家看清楚 .....
這是我在對岸網站上看到的轉進來而以...
我不懂 programming (在學啦...) 我也正在試
http://www.slproweb.com/products/Win32OpenSSL.html 給的 library
但是卡在 SDK ... 我不會 programming  嘛.... 不知那些要delete
我會再試試 ...如果有結果會把東西傳上來....(但要等)
 樓主| 發表於 2004-5-3 13:45:44 | 顯示全部樓層
[這篇文章最後由lay0n2004在 2004/05/03 13:50 編輯]

stunnel.dll
BkSSL.dll 我不知道 BkPGP.cpp delete 有無錯誤...
...我要上課了...等一下再test

26_211_5.rar

65.83 KB, 下載次數: 855

發表於 2004-5-4 17:52:37 | 顯示全部樓層
測試結果....Becky不認為BkSSL.dll是外掛....
請成功的出一下聲...
 樓主| 發表於 2004-5-6 01:11:27 | 顯示全部樓層
應該delete 了一些東西
try it again

26_211_7.zip

21.55 KB, 下載次數: 850

發表於 2004-5-7 12:13:12 | 顯示全部樓層
測試結果...失敗
Stunnel.dll路徑
\Becky!\Alice\Plugins\Stunnel
是否跟缺Stunnel.pem有關?
..這檔哪裡有?....
26_211_8.jpg
 樓主| 發表於 2004-5-11 02:22:45 | 顯示全部樓層
[這篇文章最後由lay0n2004在 2004/05/11 02:26 編輯]

static char dllname[] = "plugins\\stunnel\\stunnel.dll";
   
   hStunnel = LoadLibraryA( dllname );
請問B2那個版本?
1.我是放b2.exe 主目錄的 Plugins\Stunnel...
2.pem file 也是 Plugins\Stunnel下...
3. stunnel.cfg好像要配置好

..p.s. 最近是忙點..
thanks a lot
發表於 2004-5-11 17:04:12 | 顯示全部樓層
我的版本?..
v2.09中文版...
>2.pem file 也是 Plugins\Stunnel下...
目前是這點無法滿足...請問pem檔如何產生??
發表於 2004-5-11 21:01:29 | 顯示全部樓層
是呀!萬事俱備只欠東風pem檔,不曉得從哪生出來,請  lay0n2004    再指教一下吧
匿名  發表於 2004-5-12 15:07:59
版主即各為高手大家好:
想請教一個問題,
如果想將linux apache web server用stunnel,已安裝好open ssl並
建好金鑰及憑證,如何設定httpd接上stunnel開始伺服,
apache好像安裝好時就可https.
thanks   新手
 樓主| 發表於 2004-5-12 22:06:03 | 顯示全部樓層
對不起!!我是菜鳥啦....我不是很懂stunnel/SSL...請參考一下
注意一下 dllname  喔!!找不到 stunnel.dll 的可能要自己給一下囉
http://www.stunnel.org/faq/certs.html#ToC2

Thanks
發表於 2004-5-19 17:33:34 | 顯示全部樓層
[這篇文章最後由Linpien在 2004/06/04 11:14 編輯]

大陸的 123123 網友已經作出  b2ssl.dll 了,可參考一下 http://www.sdts.cn/bruce/forum_posts.asp?TID=351&N=1
經試用已經可以成功正常運作了。
你需要登入後才可以回覆 登入 | 我要註冊

本版積分規則

禁閉室|Archiver|聯絡我們|中文化軟體聯盟 (CPATCH)  

GMT+8, 2023-12-9 16:29

Powered by Discuz! X3.2

© 2001-2012 Comsenz Inc. | 正體中文: [數碼中文坊]

快速回覆 返回頂端 返回清單