⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 isapimagick.c

📁 下载来的一个看图软件的源代码
💻 C
📖 第 1 页 / 共 3 页
字号:
    *lpszQuery,    *lpszHeader=NULL,    *lpszTemp=NULL;  BOOL    Success=FALSE;	DWORD    dwTotalBytes=0,    dwLen=0;  impersonating=False;  pECB->dwHttpStatusCode=0; // 0 Failure  if (!stricmp(pECB->lpszMethod, "get"))    {      lpszQuery = pECB->lpszQueryString;      dwTotalBytes = lstrlen(lpszQuery);	    Success=TRUE;    }  else if (!stricmp(pECB->lpszMethod, "post"))    {      if(pECB->cbTotalBytes > 0)        {          DWORD            cbQuery;          dwTotalBytes=pECB->cbTotalBytes;          lpszTemp = (char*)LocalAlloc(LPTR, dwTotalBytes+1);          if (!lpszTemp)            return HSE_STATUS_ERROR;          cbQuery = pECB->cbTotalBytes - pECB->cbAvailable;          if (cbQuery > 0)            {              pECB->ReadClient(pECB->ConnID,                 (LPVOID) (lpszTemp + pECB->cbAvailable),&cbQuery);            }          strncpy(lpszTemp, pECB->lpbData, pECB->cbAvailable);          lpszTemp[dwTotalBytes]='\0';          lpszQuery = lpszTemp;	        Success=TRUE;        }    }  if (Success)    {      status=CGIToArgv(lpszQuery,&argc,&argv);      if (status == True)        {          char            szMimeType[MaxTextExtent],            szPathTranslated[MaxTextExtent];          DWORD            dwBuffSize;          HSE_SEND_HEADER_EX_INFO HeaderExInfo;	        dwBuffSize = MaxTextExtent;          szPathTranslated[0] = '\0';		      if (pECB->GetServerVariable(pECB->ConnID,                 "PATH_TRANSLATED",szPathTranslated,&dwBuffSize))            {              GetFileMimeType(szPathTranslated,                szMimeType,MaxTextExtent);            }          else            strcpy(szMimeType,"application/ocetet-stream");          for (argc_hw=1; argc_hw < argc; argc_hw++)          {            char              *blob_data,              szHeaders[MaxTextExtent];            size_t              blob_length;            Image              *image;            ImageInfo              *image_info;            int              mode=0;            argv_hw = &argv[argc_hw];            if (LocaleNCompare("-login",argv[argc_hw],8) == 0)              {                for (i=argc_hw; i < argc; i++)                {                  if (LocaleNCompare("login-",argv[i],8) == 0)                    break;                }#if defined(WIN32)                if ((i-argc_hw)>3)                  {                    char                      *domain=argv_hw[1],                      *userid=argv_hw[2],                      *passwd=argv_hw[3];                    HANDLE                      hToken;                    BOOL                      status;                    status = LogonUser(userid,domain,passwd,                       LOGON32_LOGON_INTERACTIVE,LOGON32_PROVIDER_DEFAULT,&hToken);                    if (status)                      {                        status = ImpersonateLoggedOnUser(hToken);                        if (status)                          impersonating=True;                        else                          errmsg = NTGetLastError();                       }                    else                      errmsg = NTGetLastError();                  }#endif                argc_hw = i+1;                argv_hw = &argv[argc_hw];              }            if (LocaleNCompare("-convert",argv[argc_hw],8) == 0)              {                for (i=argc_hw; i < argc; i++)                {                  if (LocaleNCompare("-xbdat",argv[i],6) == 0)                    {                      argv[i+1]=(char *)(&blob_data);                      mode=1;                    }                  else if (LocaleNCompare("-xblen",argv[i],6) == 0)                    {                      argv[i+1]=(char *)(&blob_length);                      mode=1;                    }                  else if (LocaleNCompare("-xfunc",argv[i],6) == 0)                    {                      argv[i+1]=(char *)CGIFifo;                      mode=2;                    }                  else if (LocaleNCompare("-xctxt",argv[i],6) == 0)                    {                      argv[i+1]=(char *)pECB;                      mode=2;                    }                  else if (LocaleNCompare("-xinfo",argv[i],6) == 0)                    {                      argv[i+1]=(char *)(&image_info);                      mode=3;                    }                  else if (LocaleNCompare("-ximag",argv[i],6) == 0)                    {                      argv[i+1]=(char *)(&image);                      mode=3;                    }                  else if (LocaleNCompare("convert-",argv[i],8) == 0)                    break;                }                if (mode==0)                  {                    convert_main(i-argc_hw,argv_hw);                  }                if (mode==1)                  {                    blob_length=8192;                    convert_main(i-argc_hw,argv_hw);                    dwLen=blob_length;                    sprintf(szHeaders,                     "Content-Length: %u\r\nContent-Type: %s\r\n\r\n",                      dwLen,szMimeType);                    HeaderExInfo.pszStatus = "200 OK";                    HeaderExInfo.pszHeader = szHeaders;                    HeaderExInfo.cchStatus = strlen( HeaderExInfo.pszStatus );                    HeaderExInfo.cchHeader = strlen( szHeaders );                    HeaderExInfo.fKeepConn = FALSE;                       if (!pECB->ServerSupportFunction(pECB->ConnID,                      HSE_REQ_SEND_RESPONSE_HEADER_EX,&HeaderExInfo,NULL,NULL))		                    return HSE_STATUS_ERROR;                    if (!pECB->WriteClient( pECB->ConnID, blob_data, &dwLen, 0))		                    return HSE_STATUS_ERROR;                  }                if (mode==2)                  {                    sprintf(szHeaders,"Content-Type: %s\r\n\r\n",szMimeType);                    HeaderExInfo.pszStatus = "200 OK";                    HeaderExInfo.pszHeader = szHeaders;                    HeaderExInfo.cchStatus = strlen( HeaderExInfo.pszStatus );                    HeaderExInfo.cchHeader = strlen( szHeaders );                    HeaderExInfo.fKeepConn = FALSE;                       if (!pECB->ServerSupportFunction(pECB->ConnID,                      HSE_REQ_SEND_RESPONSE_HEADER_EX,&HeaderExInfo,NULL,NULL))		                    return HSE_STATUS_ERROR;                    convert_main(i-argc_hw,argv_hw);                  }                if (mode==3)                  {                    convert_main(i-argc_hw,argv_hw);                  }                argc_hw = i+1;                argv_hw = &argv[argc_hw];              }            if (LocaleNCompare("-combine",argv[argc_hw],8) == 0)              {                for (i=argc_hw; i < argc; i++)                {                  if (LocaleNCompare("-xbdat",argv[i],6) == 0)                    {                      argv[i+1]=(char *)(&blob_data);                      mode=1;                    }                  else if (LocaleNCompare("-xblen",argv[i],6) == 0)                    {                      argv[i+1]=(char *)(&blob_length);                      mode=1;                    }                  else if (LocaleNCompare("-xfunc",argv[i],6) == 0)                    {                      argv[i+1]=(char *)CGIFifo;                      mode=2;                    }                  else if (LocaleNCompare("-xctxt",argv[i],6) == 0)                    {                      argv[i+1]=(char *)pECB;                      mode=2;                    }                  else if (LocaleNCompare("-xinfo",argv[i],6) == 0)                    {                      argv[i+1]=(char *)(&image_info);                      mode=3;                    }                  else if (LocaleNCompare("-ximag",argv[i],6) == 0)                    {                      argv[i+1]=(char *)(&image);                      mode=3;                    }                  else if (LocaleNCompare("combine-",argv[i],8) == 0)                    break;                }                if (mode==0)                  {                    combine_main(i-argc_hw,argv_hw);                  }                if (mode==1)                  {                    blob_length=8192;                    combine_main(i-argc_hw,argv_hw);                    dwLen=blob_length;                    sprintf(szHeaders,                     "Content-Length: %u\r\nContent-Type: %s\r\n\r\n",                      dwLen,szMimeType);                    HeaderExInfo.pszStatus = "200 OK";                    HeaderExInfo.pszHeader = szHeaders;                    HeaderExInfo.cchStatus = strlen( HeaderExInfo.pszStatus );                    HeaderExInfo.cchHeader = strlen( szHeaders );                    HeaderExInfo.fKeepConn = FALSE;                       if (!pECB->ServerSupportFunction(pECB->ConnID,                      HSE_REQ_SEND_RESPONSE_HEADER_EX,&HeaderExInfo,NULL,NULL))		                    return HSE_STATUS_ERROR;                    if (!pECB->WriteClient( pECB->ConnID, blob_data, &dwLen, 0))		                    return HSE_STATUS_ERROR;                  }                if (mode==2)                  {                    sprintf(szHeaders,"Content-Type: %s\r\n\r\n",szMimeType);                    HeaderExInfo.pszStatus = "200 OK";                    HeaderExInfo.pszHeader = szHeaders;                    HeaderExInfo.cchStatus = strlen( HeaderExInfo.pszStatus );                    HeaderExInfo.cchHeader = strlen( szHeaders );                    HeaderExInfo.fKeepConn = FALSE;                       if (!pECB->ServerSupportFunction(pECB->ConnID,                      HSE_REQ_SEND_RESPONSE_HEADER_EX,&HeaderExInfo,NULL,NULL))		                    return HSE_STATUS_ERROR;                    combine_main(i-argc_hw,argv_hw);                  }                if (mode==3)                  {                    combine_main(i-argc_hw,argv_hw);                  }                argc_hw = i+1;                argv_hw = &argv[argc_hw];              }          }        }      // BUG: must free all the strings pointed to by argv not just argv      LiberateMemory((void **) &argv);    }  if (impersonating==True)    {#if defined(WIN32)      status = RevertToSelf();      if (status)        impersonating=False;      else        errmsg = NTGetLastError();#endif    }  pECB->dwHttpStatusCode=200; // 200 OK  if (lpszTemp)    LocalFree(lpszTemp);  return HSE_STATUS_SUCCESS;}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -