亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? postfile.pas

?? autoupdate 1.02 source code
?? PAS
?? 第 1 頁 / 共 2 頁
字號:
unit postfile;
// $Header: /home/cso/jnewbigin/cvsroot/autoupdate/postfile.pas,v 1.6 2005/01/22 08:36:36 jnewbigin Exp $

interface

uses SysUtils, WinInet, JWinInet, WinBinFile, Windows, Classes, Progress;

type
   TDebugFunction = procedure(S : String) of object;

   IPostFileOptions = interface(IUnknown)
      function GetUserAgent : String;
      function GetHostName : String;
      function GetPortNumber : Integer;
      function GetHttps : Boolean;
      function GetAllowWrongProperName : Boolean;
      function GetAllowExpiredCertificate : Boolean;
      function GetAllowUnknownCA : Boolean;

      function isAlwaysConnected: Boolean;
      function hasAlwaysConnect: Boolean;
      function isUsingIESettings: Boolean;
      function GetProxyAddress: String;
      function GetProxyPort: Integer;
      function isUsingProxyLogin: Boolean;
      function isProxyPasswordNeeded: Boolean;
      function getProxyUsername: String;
      function getProxyPassword: String;

      procedure setSSLStrength(Strength : Integer);

      function GetInternetHandle : HINTERNET;
      procedure SetInternetHandle(h : HINTERNET);

   end;

   InetException = class (Exception)
   public
      Error : DWORD;

      constructor Create (const Msg: string);
      function GetErrorString : String;
   end;

   TPostFile = class
   public
      ScriptName : String;


      constructor Create(Options : IPostFileOptions; Debug : TDebugFunction; Progress : IProgress);
      destructor Destroy; override;

      procedure Connect;
      function ReceiveFile(Keys : TStringList; Values : TStringList; FileName : String; DestinationName : String; Results : TStringList) : Integer;

      procedure Post(Keys : TStringList; Values : TStringList; FileName : String; Results : TStringList);

   private
      Prog : IProgress;
      DebugFunction : TDebugFunction;
      Options : IPostFileOptions;

      HostName : String;
      PortNumber : Integer;

      UseHTTPS : Boolean;
      AllowWrongProperName : Boolean;
      AllowExpiredCertificate : Boolean;

      Internet : HINTERNET;
      Connection : HINTERNET;

      function GenerateBoundryString : String;
      procedure Debug(S : String);
   end;

implementation

constructor InetException.Create(const Msg: string);
var
   hModule : hInst;
   Buffer : String;
   Len : DWORD;
   Error2 : DWORD;
begin
   inherited Create(Msg);

   Error := GetLastError;
   SetLength(Buffer, 1024);
   hModule := GetModuleHandle(WININET_MODULE);
   Len := FormatMessage(FORMAT_MESSAGE_FROM_HMODULE, Pointer(hModule), Error, 0, PChar(Buffer), Length(Buffer), nil);
   if Len = 0 then
   begin
      Error2 := GetLastError;
      Buffer := SysErrorMessage(Error2);
   end
   else
   begin
      SetLength(Buffer, Len);
      // remove any trailing newline
      Buffer := AdjustLineBreaks(Buffer);
      if Buffer[Length(Buffer)] = #$A then
      begin
         Buffer := copy(Buffer, 0, Length(Buffer) - 2);
      end;
   end;

   Message := Message + ' (' + Buffer + ')';
end;

function InetException.GetErrorString : String;
begin
   Result := Message;
end;

procedure TPostFile.Debug(S : String);
begin
   if Assigned(DebugFunction) then
   begin
      DebugFunction(S);
   end;
end;

constructor TPostFile.Create(Options : IPostFileOptions; Debug : TDebugFunction; Progress : IProgress);
var
   Proxy : String;
begin
   inherited Create;
   LoadWinINet;

   Prog := Progress;
   DebugFunction := Debug;

   Self.Options := Options;

   HostName := Options.GetHostName;
   PortNumber := Options.GetPortNumber;
   UseHTTPS := Options.GetHttps;
   AllowWrongProperName := Options.GetAllowWrongProperName;
   AllowExpiredCertificate := Options.GetAllowExpiredCertificate;

   if Options.GetInternetHandle <> nil then
   begin
      Internet := Options.GetInternetHandle;
   end
   else
   begin

      // get internet handle
      if Options.isUsingIESettings then
      begin
         //Debug('Postfile InternetOpen+');
         Internet := JInternetOpen(PChar(Options.GetUserAgent), INTERNET_OPEN_TYPE_PRECONFIG, nil, nil, 0);
         //Debug('Postfile InternetOpen-');
      end
      else
      begin
         Proxy := 'http=http://' + Options.GetProxyAddress + ':' + IntToStr(Options.GetProxyPort) + ' ' +
                  'https=http://' + Options.GetProxyAddress + ':' + IntToStr(Options.GetProxyPort);
         //Debug('Using http proxy ' + Proxy);
         //Debug('Postfile InternetOpen+');
         Internet := JInternetOpen(PChar(Options.GetUserAgent), INTERNET_OPEN_TYPE_PROXY, PChar(Proxy), nil, 0);
         //Debug('Postfile InternetOpen-');

         if Options.isUsingProxyLogin then
         begin
            //Debug('Postfile InternetSetOption+');
            JInternetSetOption(Internet, INTERNET_OPTION_PROXY_USERNAME, PChar(Options.getProxyUsername), Length(Options.getProxyUsername));
            //Debug('Postfile InternetSetOption-');
            //Debug('Postfile InternetSetOption+');
            JInternetSetOption(Internet, INTERNET_OPTION_PROXY_PASSWORD, PChar(Options.getProxyPassword), Length(Options.getProxyPassword));
            //Debug('Postfile InternetSetOption-');
         end;
      end;
      if Internet = nil then
      begin
         raise InetException.Create('InternetOpen failed');
      end;
      // before we do this we need to have a flag to say the proxy config has changed
      // and we should close and re-open
      //Options.SetInternetHandle(Internet);
   end;
end;

destructor TPostFile.Destroy;
begin
   if Assigned(Connection) then
   begin
      //Debug('Postfile InternetCloseHandle+');
      JInternetCloseHandle(Connection);
      //Debug('Postfile InternetCloseHandle-');
   end;

   if Assigned(Internet) then
   begin
      if Internet = Options.GetInternetHandle then
      begin
         Debug('Keeping InternetHandle open for next connection');
      end
      else
      begin
         //Debug('Postfile InternetCloseHandle+');
         JInternetCloseHandle(Internet);
         //Debug('Postfile InternetCloseHandle-');
      end;
   end;

   inherited Destroy;
end;

procedure TPostFile.Connect;
begin
   // connect to the host
   Prog.SetMessage('Connecting...');
   //Debug('Postfile InternetConnect+');
   Connection := JInternetConnect(Internet, PChar(HostName), PortNumber, nil, nil, INTERNET_SERVICE_HTTP, 0, 0);
   //Debug('Postfile InternetConnect-');
   if Connection = nil then
   begin
      raise InetException.Create('InternetConnect failed');
   end;

   // set the status callback function
   //InternetSetStatusCallback(Connection, StatusCallback);
end;

function TPostFile.ReceiveFile(Keys : TStringList; Values : TStringList; FileName : String; DestinationName : String; Results : TStringList) : Integer;
var
   Request  : HINTERNET;
   Buffer   : String;
   SendFile : TBinaryFile;
   RecvFile : TBinaryFile;

   procedure WriteString(S : String);
   var
      Actual : DWORD;
   begin
      //Debug('Postfile InternetWriteFile+');
      if not JInternetWriteFile(Request, PChar(S), Length(S), Actual) then
      begin
         Debug('Postfile InternetWriteFile*');
         raise InetException.Create('InternetWriteFile failed');
      end;
      //Debug('Postfile InternetWriteFile-');
      if Int64(Actual) < Length(S) then
      begin
         Debug('Short write.  Len = ' + IntToStr(Length(S)) + ' Actual = ' + IntToStr(Actual));
      end;
   end;

   procedure WriteLine(S : String);
   begin
      Buffer := Buffer + S + #13#10;
   end;

   procedure SendFileContents;
   var
      BytesRemaining : Int64;
      Buffer         : String;
   begin
     BytesRemaining := SendFile.FileSize;
      while BytesRemaining > 0 do
      begin
         if BytesRemaining < 1024 then
         begin
            SetLength(Buffer, BytesRemaining);
         end
         else
         begin
            SetLength(Buffer, 1024);
         end;

         SendFile.BlockRead2(PChar(Buffer), Length(Buffer));
         WriteString(Buffer);

         BytesRemaining := BytesRemaining - Length(Buffer);
      end;
   end;

   procedure ReadResult;
   var
      Actual : DWORD;
      Buffer : String;
      GotOK  : Integer;
      TempBuffer : String;
      TotalRead : DWORD;
   begin
      GotOK := 0; // we don't know yet...
      TotalRead := 0;
      // read a flag to see if we got it...
      while true do
      begin
         SetLength(Buffer, 1024);
         //Debug('Postfile InternetReadFile+');
         if not JInternetReadFile(Request, PChar(Buffer), Length(Buffer), Actual) then
         begin
            Debug('Postfile InternetReadFile*');
            raise InetException.Create('InternetReadFile failed');
            // error
            Debug('InternetReadFile error');
         end;
         //Debug('Postfile InternetReadFile-');
         if Actual = 0 then
         begin
            break;
         end;
         SetLength(Buffer, Actual);
         if GotOK = 0 then
         begin
            // the length must be at least 1 char.  Look for a '+'
            if Buffer[1] = '+' then
            begin
               GotOK := 1; // Here comes the file
               Delete(Buffer, 1, 1);
               Actual := Actual - 1;
            end
            else
            begin
               GotOK := 2; // Server Error
               Result := 1;
            end;
         end;
         if GotOK = 1 then
         begin
            RecvFile.BlockWrite2(PChar(Buffer), Actual);
         end
         else
         begin
            TempBuffer := TempBuffer + Buffer;
         end;
         TotalRead := TotalRead + Actual;
         //Debug('Read = ' + IntToStr(TotalRead));
         Prog.SetPos(TotalRead);
      end;
      if Assigned(Results) then
      begin
         Results.Text := TempBuffer;
      end;
      if GotOK = 1 then
      begin
         Results.Add('+status: Success');
      end;
   end;
var
   Header   : String;
   Boundry  : String;
   Flags    : DWORD;
   BufferIn : INTERNET_BUFFERS;
   i : Integer;
   QueryBuffer : String;
   QueryLen : DWORD;
   QueryIdx : DWORD;
begin
   Result := 0;
   Prog.setNoActions(0);

   if Connection = nil then
   begin
      Connect;
   end;
   Prog.SetMessage('Opening...');

   SendFile := nil;
   try
      if Length(FileName) > 0 then
      begin
         SendFile := TBinaryFile.Create;

         SendFile.Assign(FileName);
         SendFile.Open(OPEN_READ_ONLY);
      end;

      RecvFile := TBinaryFile.Create;
      RecvFile.Assign(DestinationName);
      RecvFile.Delete;
      RecvFile.CreateNew;

   Flags := INTERNET_FLAG_NO_CACHE_WRITE or SECURITY_FLAG_IGNORE_UNKNOWN_CA or SECURITY_FLAG_IGNORE_WRONG_USAGE;
//      Flags := INTERNET_FLAG_NO_CACHE_WRITE;

      if UseHTTPS then
      begin
         Flags := Flags or INTERNET_FLAG_SECURE;
      end;

      if AllowWrongProperName then
      begin
         Flags := Flags or INTERNET_FLAG_IGNORE_CERT_CN_INVALID;
      end;

      if AllowExpiredCertificate then
      begin
         Flags := Flags or INTERNET_FLAG_IGNORE_CERT_DATE_INVALID;
      end;

      //Debug('Postfile HttpOpenRequest+');
      Request := JHttpOpenRequest(Connection, 'POST', PChar(ScriptName), nil, nil, nil, Flags, 0);
      //Debug('Postfile HttpOpenRequest-');
      if Request = nil then
      begin
         raise InetException.Create('HttpOpenRequest failed');
      end;

      try
         Boundry := GenerateBoundryString;

         Header := 'Content-Type: multipart/form-data; boundary=' + Boundry;

         for i := 0 to Keys.Count - 1 do
         begin
            WriteLine('--'+Boundry);
            WriteLine('Content-Disposition: form-data; name="' + Keys[i] + '"');
            WriteLine('');
            WriteLine(Values[i]);
         end;

         WriteLine('--'+Boundry);
         WriteLine('Content-Disposition: form-data; name="pramcount"');
         WriteLine('');
         WriteLine(IntToStr(Keys.Count));

         if Assigned(SendFile) then
         begin
            WriteLine('--'+Boundry);

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
久久精品夜色噜噜亚洲aⅴ| 一卡二卡三卡日韩欧美| 成人91在线观看| 亚洲欧美偷拍卡通变态| 精品视频在线免费观看| 日本视频在线一区| 久久久久成人黄色影片| 成人久久视频在线观看| 亚洲麻豆国产自偷在线| 91精品午夜视频| 国产精品夜夜嗨| 一区二区三区中文字幕| 91精品久久久久久蜜臀| 国产成人免费av在线| 亚洲欧美另类久久久精品2019| 欧美日韩视频在线一区二区| 精品电影一区二区| 成人av影院在线| 亚洲一区二区免费视频| 精品处破学生在线二十三| 99在线视频精品| 日韩影院在线观看| 欧美激情在线看| 欧美三区在线观看| 国产精品99久久久久久久vr | 亚洲免费av网站| 欧美巨大另类极品videosbest | 韩国三级电影一区二区| 国产精品九色蝌蚪自拍| 欧美精品777| 国产aⅴ综合色| 亚洲国产乱码最新视频| 久久久影视传媒| 在线观看视频一区二区| 久久精品国产一区二区三| 亚洲日本中文字幕区| 欧美一区二区三区免费观看视频| 成人永久aaa| 午夜精品成人在线视频| 中文字幕av一区二区三区高| 91精品国产91久久久久久一区二区| 国产91清纯白嫩初高中在线观看| 亚洲国产日日夜夜| 国产欧美一区二区三区网站| 一区二区三区四区不卡在线| 26uuu精品一区二区三区四区在线| 99国内精品久久| 精品在线视频一区| 一区二区三区欧美日| 久久久午夜精品| 4438x成人网最大色成网站| 成人免费视频网站在线观看| 蜜桃视频一区二区| 一区二区久久久久久| 欧美国产一区视频在线观看| 91精品国产综合久久香蕉的特点| 91亚洲男人天堂| 国内精品国产成人国产三级粉色| 亚洲第一av色| 亚洲裸体在线观看| 国产日韩欧美综合在线| 日韩一区二区三区免费看 | 风流少妇一区二区| 免费在线成人网| 亚洲一区二区高清| 最新不卡av在线| 国产精品亚洲第一| 美日韩一级片在线观看| 亚洲自拍欧美精品| 一区免费观看视频| 日本一区二区三区在线观看| 欧美大片在线观看一区二区| 欧美日本国产一区| 日本高清不卡视频| 97se亚洲国产综合自在线| 国产毛片精品国产一区二区三区| 奇米777欧美一区二区| 亚洲国产成人porn| 亚洲欧美另类在线| 亚洲欧洲av一区二区三区久久| 久久久久久影视| 精品国产第一区二区三区观看体验| 7777精品伊人久久久大香线蕉经典版下载| 99精品国产91久久久久久 | 91福利社在线观看| aaa亚洲精品| 成人av午夜电影| 粉嫩av一区二区三区在线播放| 久久国产精品99久久人人澡| 日本一道高清亚洲日美韩| 亚洲成人av资源| 91网上在线视频| 国产成人免费网站| 狠狠色综合播放一区二区| 男人的天堂久久精品| 亚洲风情在线资源站| 亚洲国产视频一区| 亚洲午夜精品网| 亚洲高清三级视频| 亚洲午夜激情网站| 亚洲一区二区三区视频在线 | 日日骚欧美日韩| 亚洲国产欧美日韩另类综合| 一区二区三区美女| 亚洲午夜久久久久久久久久久 | 欧美乱妇一区二区三区不卡视频| 欧美午夜影院一区| 欧美色精品在线视频| 欧美日本视频在线| 777久久久精品| 日韩欧美资源站| 日韩女优视频免费观看| 精品国产免费一区二区三区香蕉| 精品99999| 久久久久国产精品免费免费搜索| 国产精品一区二区久久不卡 | 亚洲一二三四在线观看| 午夜欧美在线一二页| 婷婷综合另类小说色区| 中文字幕精品一区二区精品绿巨人 | 亚洲激情在线播放| 亚洲国产一区在线观看| 天堂精品中文字幕在线| 美日韩一区二区| 国产麻豆精品久久一二三| 成人激情午夜影院| 色综合久久久久综合99| 欧美日韩一级片在线观看| 日韩一区二区中文字幕| www激情久久| 国产精品免费视频观看| 亚洲免费观看高清在线观看| 午夜日韩在线电影| 激情小说亚洲一区| 99免费精品在线| 五月天精品一区二区三区| 奇米影视7777精品一区二区| 国产综合色在线视频区| av中文一区二区三区| 欧美午夜精品久久久| 欧美一级黄色片| 国产日韩欧美a| 亚洲欧美日韩在线| 日产欧产美韩系列久久99| 国产精品77777| 色老头久久综合| 日韩一卡二卡三卡四卡| 国产日韩欧美在线一区| 亚洲主播在线播放| 久久69国产一区二区蜜臀| 播五月开心婷婷综合| 欧美日韩久久久一区| 久久女同互慰一区二区三区| 亚洲精选视频在线| 久久精品国产亚洲一区二区三区| 成人福利视频在线看| 欧美美女一区二区在线观看| 午夜影院在线观看欧美| 国产女同性恋一区二区| 亚洲综合免费观看高清完整版| 免费久久99精品国产| 成人av在线一区二区| 欧美日韩电影一区| 国产欧美日韩在线观看| 欧美群妇大交群中文字幕| 久久久午夜电影| 亚洲在线一区二区三区| 国产一区二区精品在线观看| 色乱码一区二区三区88| 久久伊人中文字幕| 亚洲国产欧美一区二区三区丁香婷| 国产老妇另类xxxxx| 欧美无乱码久久久免费午夜一区| 久久亚洲二区三区| 亚洲成人黄色小说| 波多野结衣精品在线| 日韩视频中午一区| 一区二区成人在线| 国产二区国产一区在线观看| 欧美日韩aaa| 亚洲欧洲日韩一区二区三区| 激情丁香综合五月| 欧美日韩高清在线| 亚洲视频一二三区| 国产精品一区三区| 91精品国产一区二区| 亚洲人成网站在线| 国产精品一区在线观看你懂的| 欧美高清性hdvideosex| 最新国产の精品合集bt伙计| 国产麻豆午夜三级精品| 欧美疯狂做受xxxx富婆| 亚洲黄色av一区| 成人精品国产福利| 久久综合色天天久久综合图片| 亚洲mv在线观看| 色欧美88888久久久久久影院| 国产午夜亚洲精品午夜鲁丝片 | 狠狠网亚洲精品| 在线91免费看|