亚洲欧美第一页_禁久久精品乱码_粉嫩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一区二区三区免费野_久草精品视频
成人黄色片在线观看| 日韩1区2区3区| 久久精品一区二区三区不卡牛牛 | 亚洲激情成人在线| 国产精品夫妻自拍| 专区另类欧美日韩| 国产精品国产a| 一区二区三区成人| 亚洲国产另类av| 欧美a一区二区| 久久国产尿小便嘘嘘尿| 国产99一区视频免费| caoporen国产精品视频| 日本道色综合久久| 欧美日韩美少妇| 精品成人在线观看| 亚洲欧美综合网| 亚洲福利视频三区| 国产乱人伦精品一区二区在线观看| 国产一区二区三区在线看麻豆| 国产一本一道久久香蕉| 99久久夜色精品国产网站| 日本精品一区二区三区高清| 91精品视频网| 国产欧美日韩在线视频| 亚洲一区二区综合| 激情六月婷婷久久| 成人av高清在线| 欧美人牲a欧美精品| 国产亚洲欧美日韩日本| 亚洲综合一区二区三区| 精品一区二区免费视频| www.日韩在线| 678五月天丁香亚洲综合网| 日本一区二区三区在线不卡| 亚洲欧美欧美一区二区三区| 日本视频一区二区三区| 欧美日韩国产天堂| 国产又粗又猛又爽又黄91精品| 狠狠色综合日日| 欧美亚洲一区二区在线| 欧美一区二区三区小说| 国产精品福利影院| 精一区二区三区| 欧美色图免费看| 国产精品色眯眯| 国产在线播放一区| 欧美疯狂性受xxxxx喷水图片| 国产精品视频一二| 韩国欧美国产1区| 欧美一区二区三区免费| 夜夜亚洲天天久久| 色综合中文字幕国产| 3d动漫精品啪啪一区二区竹菊| 欧美高清一级片在线观看| 美腿丝袜在线亚洲一区| 欧美日韩国产经典色站一区二区三区| 国产亲近乱来精品视频| 麻豆精品精品国产自在97香蕉| 在线精品视频一区二区| 国产精品视频看| 福利一区在线观看| 久久九九久精品国产免费直播| 免费看黄色91| 日韩欧美一级精品久久| 日韩福利视频导航| 欧美剧情电影在线观看完整版免费励志电影 | 99精品视频在线播放观看| 国产亚洲一区二区三区在线观看 | 精品国产一二三区| 久久国产婷婷国产香蕉| 欧美一区二区三区在线观看| 午夜在线电影亚洲一区| 欧美日韩久久久一区| 丝袜美腿亚洲综合| 欧美一区二区免费观在线| 天堂一区二区在线| 日韩女同互慰一区二区| 九九**精品视频免费播放| 精品久久久久久久人人人人传媒| 免费看日韩a级影片| 精品日韩在线观看| 国产精品99久久久久| 国产精品入口麻豆九色| 99热在这里有精品免费| 亚洲激情第一区| 91精品国产乱| 国产成人自拍网| 中文字幕日韩精品一区| 欧美最猛性xxxxx直播| 日本不卡不码高清免费观看| 日韩欧美在线不卡| 激情文学综合插| 国产精品国产三级国产普通话蜜臀 | 亚洲图片你懂的| 欧美日韩一区成人| 国产一区二区久久| 亚洲精品国产视频| 日韩精品在线一区| 97aⅴ精品视频一二三区| 亚洲h在线观看| 久久久久久亚洲综合| 在线亚洲一区观看| 久久国产乱子精品免费女| 国产精品免费看片| 欧美一卡在线观看| 成人av集中营| 另类综合日韩欧美亚洲| 亚洲欧洲日韩av| 精品日韩成人av| 日本伦理一区二区| 国产精品羞羞答答xxdd | 欧美亚洲一区三区| 国产一区久久久| 亚洲1区2区3区4区| 中文成人av在线| 日韩女同互慰一区二区| 欧美在线观看禁18| 高清日韩电视剧大全免费| 日韩电影在线免费观看| 久久久久国产精品人| 欧美日韩中文一区| 成人app在线观看| 国产在线精品国自产拍免费| 一区二区三区日韩在线观看| 国产亚洲美州欧州综合国| 欧美日韩精品电影| 91蜜桃免费观看视频| 国产精品一二三在| 日韩高清在线不卡| 亚洲成在人线在线播放| 国产精品人妖ts系列视频| 日韩精品一区二区三区四区视频 | av影院午夜一区| 韩国av一区二区三区在线观看| 亚洲成人av一区二区三区| 亚洲人精品午夜| 中文字幕日本不卡| 国产精品久久久久久久久图文区| 久久综合色婷婷| 日韩欧美一区二区久久婷婷| 欧美日韩高清一区二区不卡| 色视频欧美一区二区三区| 成人激情图片网| 99久久精品国产毛片| 国产成a人亚洲精| 国产成人aaa| 国产成人aaa| 成人av集中营| 色一情一乱一乱一91av| 色综合天天性综合| 色猫猫国产区一区二在线视频| 99视频精品免费视频| 色av综合在线| 欧洲精品一区二区三区在线观看| 色屁屁一区二区| 欧美久久久久免费| 日韩三级视频在线看| 91精品国产乱码久久蜜臀| 日韩视频免费直播| 精品sm捆绑视频| 国产精品沙发午睡系列990531| 国产精品色婷婷久久58| 一区二区在线观看免费视频播放| 一区二区三区蜜桃网| 亚洲国产欧美在线| 男女男精品视频网| 国产成a人无v码亚洲福利| www.亚洲人| 91精品国产一区二区三区蜜臀| 日韩精品一区二区三区中文精品| 精品国产一区二区在线观看| 国产欧美一区二区三区在线老狼| 国产精品日产欧美久久久久| 亚洲精品成人天堂一二三| 午夜伦欧美伦电影理论片| 九色|91porny| 91污在线观看| 日韩三级.com| 亚洲三级理论片| 久久国产精品99精品国产| 风间由美一区二区av101| 欧美天天综合网| 久久久美女艺术照精彩视频福利播放| 国产精品久久综合| 日本三级亚洲精品| 91丨九色丨黑人外教| 91精品国产欧美日韩| 国产精品入口麻豆九色| 日韩av电影免费观看高清完整版在线观看| 久久爱www久久做| 在线视频国产一区| 国产网站一区二区| 日韩精品成人一区二区三区 | av福利精品导航| 91精品国产欧美一区二区18| 国产精品电影一区二区三区| 美腿丝袜亚洲综合| 欧美无乱码久久久免费午夜一区| 国产区在线观看成人精品|