Viewing current FTP7 sessions using C#
A few weeks ago my friend Jaroslav posted a blog entry about viewing the current FTP7 sessions using Javascript, and I followed that up with a blog post about viewing the current FTP7 sessions using VBScript.
This blog entry follows up on those postings by showing you how to view the current FTP7 sessions using C#. To do so, start a new Windows Console Application project using C# in Visual Studio 2005 on a computer running Windows Server 2008 with the new FTP7 server installed. You will need to add a reference to the AppHostAdminLibrary by manually browsing to the nativerd.dll file that's located in the %WinDir%\System32\InetSrv folder. After you've added the reference, replace all of the C# code from the project template with the following C# code:
using System;
using System.Collections.Generic;
using System.Text;
using AppHostAdminLibrary;
namespace FtpDumpSessions
{
class FtpDumpSessions
{
static void Main(string[] args)
{
AppHostWritableAdminManager objAdminManager =
new AppHostWritableAdminManager();
// get the collection of sites
IAppHostElement objSitesElement =
objAdminManager.GetAdminSection(
"system.applicationHost/sites",
"MACHINE/WEBROOT/APPHOST");
uint intSiteCount =
objSitesElement.Collection.Count;
Console.WriteLine(
"Site count: {0}",
intSiteCount);
try
{
// loop through the sites collection
for (int intSite = 0;
intSite < intSiteCount;
++intSite)
{
// get a site
IAppHostElement objFtpSite =
objSitesElement.Collection[intSite];
// get the FTP section
IAppHostElement objFtpSiteElement =
objFtpSite.ChildElements["ftpServer"];
// get the sessions collection
IAppHostElement objFtpSessions =
objFtpSiteElement.ChildElements["sessions"];
uint intSessionCount =
objFtpSessions.Collection.Count;
Console.WriteLine(
"\tFTP sessions for {0}: {1}",
objFtpSite.Properties["name"].Value, intSessionCount);
// loop through the sessions
for (int intSession = 0;
intSession < intSessionCount;
++intSession)
{
IAppHostElement objFtpSession =
objFtpSessions.Collection[intSession];
// loop through each session's properties
for (int intProperty = 0;
intProperty < objFtpSession.Properties.Count;
++intProperty)
{
Console.WriteLine(
"\t\t{0}: {1}",
objFtpSession.Properties[intProperty].Name,
objFtpSession.Properties[intProperty].Value);
}
}
}
}
catch (System.Exception ex)
{
Console.WriteLine(
"\r\nError: {0}",
ex.Message);
}
}
}
}
When you compile and run the project, you should see a listing of all users connected to your FTP7 sites.
That's about it for this post - have fun!