社区
Windows SDK/API
帖子详情
再次提问加100分。用DELPHI如何编写ISAPI过滤器(IIS)
xflcx
2002-06-17 09:44:59
我主要是想对ASp文件加密。请打家多指教。可以多给分
...全文
74
16
打赏
收藏
再次提问加100分。用DELPHI如何编写ISAPI过滤器(IIS)
我主要是想对ASp文件加密。请打家多指教。可以多给分
复制链接
扫一扫
分享
转发到动态
举报
AI
作业
写回复
配置赞助广告
用AI写文章
16 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
wwyf
2002-07-21
打赏
举报
回复
嗯
yansea
2002-07-04
打赏
举报
回复
真的没用过,帮你up;
anggogo
2002-06-29
打赏
举报
回复
ISAPI FILTER并不是用来加密ASP
如果你想保护ASP代码,并尽量提高速度,还不如用COM/COM+配合ASP,这种做法比较好
xflcx
2002-06-29
打赏
举报
回复
用COM/COM+怎样配合ASP(多提示一些)
xflcx
2002-06-23
打赏
举报
回复
<%%>写的一些程序代码.但ISS不知道怎样编译.需要自己解析,再交给IIS处理
HHBB
2002-06-21
打赏
举报
回复
FILE->NEW->WEB SERVER APPLICATION就可以了
上海老李
2002-06-21
打赏
举报
回复
直接用DELPHI的WEBSNAP得
manboo
2002-06-20
打赏
举报
回复
关心!向旅游!
bcb_fans
2002-06-20
打赏
举报
回复
我没有做过这方面的程序,不过我想知道工作原理,可以说一下吗? 比如<%%>里边是什么东西,你想解码成怎么样的结果,你又从哪里得到这些东西??
xflcx
2002-06-20
打赏
举报
回复
ASp程序已经写好了
xflcx
2002-06-19
打赏
举报
回复
高手出招吧
michaelpeng7799
2002-06-19
打赏
举报
回复
你直接用DELPHI的WEBSNAP得了。这样可以实现ASP的功能。
不过开发比ASP难些。
njbudong
2002-06-17
打赏
举报
回复
---- ISAPI过滤器的开发非常简单,只需要完成三个接口DLL函数即可。它们是GetFilterVersion()、HttpFilterProc()、TerminateFilter(),大家可以查看MSDN了解详细的用法。ISAPI过滤器是DLL文件,一般用C/C++语言开发。为使ISAPI过滤器能够运行,您需要在注册表的HKEY_LOCAL_MACHINE\System\CurrentControlSet\
Services\W3SVC\Parameters下建立一个字符串项,其名称为"Filter Dlls",值为ISAPI过滤器文件的全路径名称。若这个字符串项已经存在,只需把它的全路径名称加入其中,不同的ISAPI过滤器文件之间用";"分隔,您可以根据执行的优先顺序加在适当的位置。设置好后重新启动IIS服务,您的ISAPI过滤器就发挥作用了。
---- 下面作者举二个具体的应用例子。
一、虚拟主机WWW站点的实现
---- 所谓虚拟主机WWW站点,是指不同的域名占用同一个IP地址,各自拥有自己的主页。这样您可以在同一台机器上为几个甚至几十个公司建立各自的WWW站点。IIS 3.0不提供虚拟主机WWW站点的功能,但是我们可以通过ISAPI过滤器来实现它。其原理是通过URL映射信息处理,将不同的域名重新映射到不同的物理文件。
---- 下面是它的源程序。
fmulti.def:
LIBRARY fmulti
EXPORTS GetFilterVersion
HttpFilterProc
TerminateFilter
fmulti.c:
#include <stdio.h>
#include <string.h>
#include <windows.h>
#include <httpfilt.h>
#define baseroot "C:\\InetPub\\wwwroot\\"
BOOL WINAPI GetFilterVersion(HTTP_FILTER_VERSION *pVer)
{
pVer->dwFilterVersion = HTTP_FILTER_REVISION;
strcpy(pVer->lpszFilterDesc, "fmulti");
pVer->dwFlags = SF_NOTIFY_URL_MAP |
SF_NOTIFY_ORDER_HIGH;
/* 过滤的内容 */
return TRUE;
}
DWORD WINAPI HttpFilterProc
(HTTP_FILTER_CONTEXT *pfc,
DWORD noteType, VOID *pvNote)
{
DWORD namelen = 256;
char svrname[256];
char phyfile[280];
*svrname = 0;
(pfc->GetServerVariable)(pfc, "SERVER_NAME",
svrname, &namelen);
_strlwr(svrname);
strcpy(phyfile, ((PHTTP_FILTER_URL_MAP)pvNote)->
pszPhysicalPath + strlen(baseroot));
/* 以下根据域名设置需访问的物理文件 */
if (strcmp(svrname, "ca.best.net")==0) {
sprintf(((PHTTP_FILTER_URL_MAP)pvNote)->
pszPhysicalPath, "C:\\InetPub\\caroot\\%s",
phyfile);
}
else if (strcmp(svrname, "cb.best.net")==0) {
sprintf(((PHTTP_FILTER_URL_MAP)pvNote)->
pszPhysicalPath, "C:\\InetPub\\cbroot\\%s",
phyfile);
}
return SF_STATUS_REQ_NEXT_NOTIFICATION;
}
BOOL WINAPI TerminateFilter(DWORD dwFlags)
{
return TRUE;
}
二、对访问内容进行统计分析
---- 通常我们在需要计数的页面内放一个计数器,或者使用ASP文件来实现计数功能。这种方法不能适用于如README.TXT等其他非HTML格式的文件。如果使用IIS的日志功能又太占用空间而不方便。作者通过定制URL映射信息处理来跟踪感兴趣的几个文件的计数统计,将结果记录在一个文件中。
---- 下面是它的源程序。
fcount.def:
LIBRARY fcount
EXPORTS GetFilterVersion
HttpFilterProc
TerminateFilter
fcount.c:
#include <stdio.h>
#include <string.h>
#include <windows.h>
#include <httpfilt.h>
#define logfile "C:\\InetPub\\fcount.log"
#define pages 5
char* urls[] = {
"/default.htm",
"/banner.gif",
"/product/readme.txt",
"/product/product1.htm",
"/product/product2.htm"
};
int counts[pages];
BOOL WINAPI GetFilterVersion
(HTTP_FILTER_VERSION *pVer)
{
int i;
pVer->dwFilterVersion = HTTP_FILTER_REVISION;
strcpy(pVer->lpszFilterDesc, "fcount");
pVer->dwFlags = SF_NOTIFY_URL_MAP; /* 过滤的内容 */
for (i=0; i<pages; i++) { /* 从文件读入初始计数值 */
counts[i] = GetPrivateProfileInt("VisitCounter",
urls[i],
0, logfile);
}
return TRUE;
}
DWORD WINAPI HttpFilterProc
(HTTP_FILTER_CONTEXT *pfc,
DWORD noteType, VOID *pvNote)
{
int i;
char lurl[512];
char buf[16];
strcpy(lurl, ((PHTTP_FILTER_URL_MAP)pvNote)
->pszURL);
_strlwr(lurl);
for (i=0; i<pages; i++) {
if (strcmp(lurl, urls[i])==0) {
counts[i] ++; /* 计数值增加 */
if (counts[i]%10==0) {
/* 当计数值满10时记入文件,
以免系统突然死掉时数据全部丢失 */
_itoa(counts[i], buf, 10);
WritePrivateProfileString("VisitCounter",
urls[i], buf, logfile);
}
break;
}
}
return SF_STATUS_REQ_NEXT_NOTIFICATION;
}
BOOL WINAPI TerminateFilter(DWORD dwFlags)
{
int i;
char buf[16];
for (i=0; i<pages; i++) {
/* 系统停止时将计数值写入文件 */
_itoa(counts[i], buf, 10);
WritePrivateProfileString("VisitCounter",
urls[i], buf, logfile);
}
return TRUE;
milpas
2002-06-17
打赏
举报
回复
Delphi有生成ISAPI的专家
xflcx
2002-06-17
打赏
举报
回复
给出delphi 实现方法。出现金收购。对ASp文件中的<%%>内容进行解码编码。
高手可以和我邮件联系XFLCX@263.net
xflcx
2002-06-17
打赏
举报
回复
我要Delphi实现
Win7
IIS
7.0发布
Delphi
编写
的Web服务(I
SAP
I)
I
SAP
I是微软为
IIS
提供的一组API,允许开发者
编写
能够与
IIS
紧密集成的动态扩展,如HTTP
过滤器
和I
SAP
I筛选器、DLL等。这些扩展可以直接处理HTTP请求,提供高效且灵活的Web服务功能。
Delphi
XE2是Embarcadero公司的一...
i
sap
i.zip_I
SAP
I_
iis
_
iis
i
sap
i_
iis
筛选器
I
SAP
I(Internet Server Application Programming Interface)是微软
IIS
(Internet Information Services)服务器的扩展接口,允许开发者
编写
能够处理HTTP请求的动态应用程序或
过滤器
。I
SAP
I应用通常由C++或
Delphi
等...
I
SAP
I4_filter_programming_src.rar_i
sap
i
delphi
在这个"I
SAP
I4_filter_programming_src.rar_i
sap
i
delphi
"压缩包中,包含了用
Delphi
语言
编写
的I
SAP
I Filter的源代码,这对于学习和理解I
SAP
I编程以及
Delphi
在Web服务扩展中的应用非常有帮助。 首先,I
SAP
I Filter是...
I
SAP
I工具模块.rar
I
SAP
I工具模块是开发者用来创建高效、可定制的Web服务解决方案的重要工具,它允许程序员利用C++、C或
Delphi
等语言
编写
能够直接在
IIS
上运行的DLL动态链接库。 易语言I
SAP
I工具模块源码,正如其名,是使用易语言
编写
...
I
SAP
I的文本计数器示例
- `Unit1.pas`: Pascal源代码文件,包含了`Unit1`模块的程序逻辑,很可能包含了I
SAP
I
过滤器
的实现。 `counter.dpr`是
Delphi
的项目文件,它定义了整个项目的结构,包括引用的单元、入口点函数等,是构建和运行应用的...
Windows SDK/API
1,183
社区成员
22,328
社区内容
发帖
与我相关
我的任务
Windows SDK/API
Delphi Windows SDK/API
复制链接
扫一扫
分享
社区描述
Delphi Windows SDK/API
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章