Just a short, simple blog for Bob to share his thoughts.
06 July 2007 • by Bob • FTP, Scripting
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!