{
  $Project$
  $Workfile$
  $Revision$
  $DateUTC$
  $Id$

  This file is part of the Indy (Internet Direct) project, and is offered
  under the dual-licensing agreement described on the Indy website.
  (http://www.indyproject.org/)

  Copyright:
   (c) 1993-2005, Chad Z. Hower and the Indy Pit Crew. All rights reserved.
}
{
  $Log$
}
{
  Rev 1.4    10/26/2004 9:36:28 PM  JPMugaas
  Updated ref.

  Rev 1.3    4/19/2004 5:05:54 PM  JPMugaas
  Class rework Kudzu wanted.

  Rev 1.2    2004.02.03 5:45:32 PM  czhower
  Name changes

  Rev 1.1    10/19/2003 2:27:06 PM  DSiders
  Added localization comments.

  Rev 1.0    2/19/2003 10:13:28 PM  JPMugaas
  Moved parsers to their own classes.
}

unit IdFTPListParseCiscoIOS;

interface

{$i IdCompilerDefines.inc}

uses
  Classes,
  IdFTPList, IdFTPListParseBase,IdFTPListTypes;

{
  I think this FTP Server is embedded in the Cisco routers.

  The Cisco IOS router FTP Server only returns filenames, not dirs.
  You set up a root dir and then you can only access that.
  You might be able to update something such as flash RAM by specifying
  pathes with uploads.
}

type
  TIdCiscoIOSFTPListItem = class(TIdMinimalFTPListItem);

  TIdFTPLPCiscoIOS = class(TIdFTPLPNList)
  protected
    class function MakeNewItem(AOwner : TIdFTPListItems)  : TIdFTPListItem; override;
  public
    class function GetIdent : String; override;
    class function CheckListing(AListing : TStrings; const ASysDescript : String = ''; const ADetails : Boolean = True): Boolean; override;
  end;

  // RLebeau 2/14/09: this forces C++Builder to link to this unit so
  // RegisterFTPListParser can be called correctly at program startup...

  {$IFDEF HAS_DIRECTIVE_HPPEMIT_LINKUNIT}
    {$HPPEMIT LINKUNIT}
  {$ELSE}
    {$HPPEMIT '#pragma link "IdFTPListParseCiscoIOS"'}
  {$ENDIF}

implementation

uses
  IdGlobal, IdFTPCommon, IdGlobalProtocols, SysUtils;

{ TIdFTPLPCiscoIOS }

class function TIdFTPLPCiscoIOS.CheckListing(AListing: TStrings;
  const ASysDescript: String; const ADetails: Boolean): Boolean;
begin
  // Identifier obtained from
  // http://www.cisco.com/univercd/cc/td/doc/product/access/acs_serv/as5800/sc_3640/features.htm#xtocid210805
  // 1234567890
  Result := TextStartsWith(ASysDescript, 'Cisco IOS ');  {do not localize}
end;

class function TIdFTPLPCiscoIOS.GetIdent: String;
begin
  Result := 'Cisco IOS';  {do not localize}
end;

class function TIdFTPLPCiscoIOS.MakeNewItem(AOwner: TIdFTPListItems): TIdFTPListItem;
begin
  Result := TIdCiscoIOSFTPListItem.Create(AOwner);
end;

initialization
  RegisterFTPListParser(TIdFTPLPCiscoIOS);
finalization
  UnRegisterFTPListParser(TIdFTPLPCiscoIOS);
end.
