// To be able to use the BssCfgManip COM object as shown: // - Right click on C# project, Add > Reference..., COM > Type Libraries, BssCfg721Lib // - Replace "721" with the actual BssCfgManip version for your SSH Server installation, both in Add > Reference, and in this code // - BssCfgManip version does not increment if there are no changes, so e.g. BssCfg721 applies to versions 7.21 - 7.25 using System; using BssCfg721Lib; namespace BssCfgFromCs { class BssCfgFromCs { static int Main(string[] args) { if (args.Length < 1) { Console.WriteLine("Usage:"); Console.WriteLine(" listVirt - list configured virtual accounts"); Console.WriteLine(" rmVirt - remove a virtual account identified by name"); Console.WriteLine(""); Console.WriteLine("This program must be run from an administrative, elevated console window."); return 2; } string command = args[0]; Console.WriteLine("Instantiating BssCfgManip COM object"); var cfg = new CBssCfg721(); Console.WriteLine("Locking SSH Server settings"); cfg.LockServerSettings(); try { Console.WriteLine("Loading SSH Server settings"); cfg.LoadServerSettings(); if (command.Equals("listVirt", StringComparison.OrdinalIgnoreCase)) { if (args.Length != 1) { Console.WriteLine("No parameters expected"); return 2; } Console.WriteLine("Listing virtual accounts"); foreach (IVirtAccount721 acct in cfg.settings.access.virtAccounts) Console.WriteLine("Found account: {0}", acct.virtAccount); } else if (command.Equals("rmVirt", StringComparison.OrdinalIgnoreCase)) { if (args.Length != 2) { Console.WriteLine("One parameter expected"); return 2; } string accountToRemove = args[1]; bool accountFound = false; for (uint i=0; i!=cfg.settings.access.virtAccountsEx.count; ++i) { IVirtAccount721 acct = cfg.settings.access.virtAccountsEx.GetItem(i); if (acct.virtAccount.Equals(accountToRemove, StringComparison.OrdinalIgnoreCase)) { Console.WriteLine("Account found"); accountFound = true; cfg.settings.access.virtAccountsEx.Erase(i); break; } } if (!accountFound) { Console.WriteLine("Account not found"); return 1; } Console.WriteLine("Account removed. Saving settings"); cfg.SaveServerSettings(); } } finally { cfg.UnlockServerSettings(); } return 0; } } }