After figuring out how to encode and decode the Citrix passwords my next step for the upcoming Citrix Launcher is experiment with config.xml and authenticating to the Citrix Web Interface.

imageI imported the NFuse.dtd from the Citrix Web Interface into Delphi with the XML Data Binding Wizard. The results in an NFuse Unit so I can easily create the XML data.

To create an authentication packet I use the following code:

text Download
procedure TForm1.NFuseTest;
var
  NFuse: IXMLNFuseProtocolType;
begin
  NFuse := NewNFuseProtocol;
  NFuse.Version := '4.6';

  with NFuse.RequestAppData do
  begin
    ServerType.Add('x');
    ServerType.Add('win32');
    ClientType.Add('ica30');
    ClientType.Add('content');

    with Credentials do
    begin
      Username := 'administrator';
      Password.Encoding := 'ctx1';
      Password.NodeValue := Ctx1Encode('password');
      Domain.Type_ := 'NT';
      Domain.NodeValue := 'CONTOSO';
    end;

    ClientName := GetComputerName;
    ClientAddress.NodeValue := '192.168.2.23';
  end;
end;

And this produces the following XML:

text Download
<NFuseProtocol version="4.6">
	<RequestAppData>
		<ServerType>x</ServerType>
		<ServerType>win32</ServerType>
		<ClientType>ica30</ClientType>
		<ClientType>content</ClientType>
		<Credentials>
			<UserName>administrator</UserName>
			<Password encoding="ctx1">NFHALEBBMHGCLEBBMDGGKMAJNOHLLKBP</Password>
			<Domain type="NT">CONTOSO</Domain>
		</Credentials>
		<ClientName>REMLAPTOP</ClientName>
		<ClientAddress>192.168.2.23</ClientAddress>
	</RequestAppData>
</NFuseProtocol>