亚洲欧美第一页_禁久久精品乱码_粉嫩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ⅴ免费网站| 日韩精品一区二区三区老鸭窝| 亚洲三级在线看| 国产成a人无v码亚洲福利| 色激情天天射综合网| 久久精品夜夜夜夜久久| 日韩和欧美一区二区三区| 色综合久久久久久久| 国产人久久人人人人爽| 蜜臀久久99精品久久久久久9| 色欧美片视频在线观看| 亚洲国产精品精华液2区45| 另类人妖一区二区av| 欧美日韩在线三级| 亚洲欧美视频一区| jiyouzz国产精品久久| 26uuu亚洲婷婷狠狠天堂| 视频一区在线播放| 91久久精品一区二区三| 亚洲女子a中天字幕| 成人av免费在线观看| 国产视频911| 国产超碰在线一区| 久久久精品国产免费观看同学| 日韩激情一区二区| 欧美高清视频www夜色资源网| 伊人色综合久久天天人手人婷| 成人免费毛片app| 欧美国产在线观看| 国产激情视频一区二区三区欧美| 日韩免费高清av| 久久99久久99小草精品免视看| 欧美一二三区在线| 精品一区二区三区的国产在线播放 | 欧美伊人久久久久久午夜久久久久| 亚洲国产精品激情在线观看| 成人性生交大片免费看中文网站| 欧美激情一区在线观看| 成人的网站免费观看| 成人免费一区二区三区在线观看| 99热精品国产| 伊人色综合久久天天人手人婷| 91国产免费观看| 日韩国产欧美在线视频| 精品免费国产一区二区三区四区| 极品少妇xxxx精品少妇| 国产欧美一区二区三区沐欲| av在线不卡观看免费观看| 亚洲免费成人av| 欧美日韩二区三区| 久久精品国产亚洲高清剧情介绍 | 色婷婷国产精品| 亚洲狠狠丁香婷婷综合久久久| 欧美在线视频你懂得| 丝袜亚洲另类欧美综合| 精品国产亚洲在线| 99久久免费视频.com| 日韩高清在线电影| 国产片一区二区三区| 欧美自拍偷拍一区| 久久99精品久久久久| 中文字幕在线不卡一区| 欧美疯狂做受xxxx富婆| 国产一区二区女| 亚洲自拍偷拍欧美| 337p粉嫩大胆色噜噜噜噜亚洲| 99久久精品一区| 美女在线视频一区| 亚洲人成网站在线| 26uuu久久天堂性欧美| 色婷婷久久一区二区三区麻豆| 久久se精品一区二区| 18欧美亚洲精品| 精品少妇一区二区三区 | 久热成人在线视频| 一区免费观看视频| 精品国产乱码久久久久久牛牛| 北岛玲一区二区三区四区| 日本亚洲最大的色成网站www| 国产日产欧美精品一区二区三区| 欧美性色欧美a在线播放| 国产乱码精品一品二品| 亚洲成av人在线观看| 国产精品对白交换视频| 欧美sm极限捆绑bd| 欧美人成免费网站| 91蝌蚪porny| 成人在线视频首页| 精品一区二区日韩| 免费亚洲电影在线| 亚洲成a人v欧美综合天堂下载| 综合久久综合久久| 国产清纯美女被跳蛋高潮一区二区久久w| 欧美日韩在线播放三区四区| 99久久久久久| 国产1区2区3区精品美女| 精品一区二区三区的国产在线播放| 亚洲午夜精品一区二区三区他趣| 国产精品视频第一区| 久久夜色精品一区| 精品久久99ma| 日韩午夜精品视频| 欧美精品乱码久久久久久| 在线视频一区二区三区| 一本高清dvd不卡在线观看| av不卡一区二区三区| 成人黄色777网| 粉嫩一区二区三区性色av| 国产又粗又猛又爽又黄91精品| 日本麻豆一区二区三区视频| 婷婷综合五月天| 午夜精品aaa| 天堂成人免费av电影一区| 亚洲大片一区二区三区| 亚洲国产日韩在线一区模特| 亚洲国产另类av| 午夜久久久久久久久久一区二区| 亚洲一二三区不卡| 亚洲成a人v欧美综合天堂| 亚洲成人动漫av| 免费的成人av| 黄色精品一二区| 国产成人高清在线| av在线不卡免费看| 91国偷自产一区二区三区观看| 在线影院国内精品| 欧美伦理影视网| 日韩一级片网址| 国产午夜亚洲精品羞羞网站| 亚洲国产精品t66y| 中文字幕五月欧美| 一区二区三区四区乱视频| 亚洲aⅴ怡春院| 九九**精品视频免费播放| 国产精品一级二级三级| a美女胸又www黄视频久久| 91国偷自产一区二区三区成为亚洲经典| 欧美综合色免费| 精品国免费一区二区三区| 国产精品日韩精品欧美在线| 亚洲一区视频在线观看视频| 日本不卡中文字幕| 成人夜色视频网站在线观看| 91福利国产成人精品照片| 欧美一激情一区二区三区| 欧美激情一区二区三区不卡| 亚洲高清视频在线| 国产呦精品一区二区三区网站| 91在线视频网址| 91精品国产综合久久久久久| 国产午夜三级一区二区三| 一区二区三区中文免费| 韩国欧美国产1区| 色丁香久综合在线久综合在线观看| 欧美一区二区三区四区久久| 国产精品欧美一级免费| 日韩二区三区在线观看| 成人免费精品视频| 91精品国产福利| √…a在线天堂一区| 麻豆精品一区二区| 欧美在线视频全部完| 国产亚洲一区二区三区在线观看 | 久久精品999| 在线观看日韩电影| 国产女人18毛片水真多成人如厕 | 国产三区在线成人av| 亚洲大型综合色站| 99久久99精品久久久久久| 精品久久久久久久久久久久包黑料 | 欧美午夜不卡视频| 国产精品人人做人人爽人人添| 欧美aa在线视频| 日本高清不卡视频| 国产精品久久久久婷婷| 久久精品噜噜噜成人av农村| 欧美亚洲高清一区| 成人免费在线视频观看| 国产成人av一区二区三区在线| 777色狠狠一区二区三区| 亚洲精品免费电影| 91在线云播放| 国产精品久久福利| 国产aⅴ精品一区二区三区色成熟| 欧美一级电影网站| 日韩激情视频在线观看| 欧美色网站导航| 一区二区免费视频| 欧洲一区二区av| 一二三区精品视频| 91色porny蝌蚪| 亚洲精品日韩综合观看成人91| 成人黄色av电影| 成人欧美一区二区三区1314|