/* * Erstellt mit SharpDevelop. * Benutzer: 001142709 * Datum: 05.04.2018 * Zeit: 10:40 * * Sie können diese Vorlage unter Extras > Optionen > Codeerstellung > Standardheader ändern. */ using System; using System.Collections; using System.Collections.Generic; using System.Drawing; using System.IO; using System.Reflection; using System.Text; using System.Windows.Forms; namespace NxLizenz { /// /// Description of MainForm. /// public partial class MainForm : Form { #region Version und Copyright // Version und Copyright string programName = Path.GetFileNameWithoutExtension(System.Reflection.Assembly.GetExecutingAssembly().GetName().CodeBase); //Den Programmnamen auslesen string version = System.Reflection.Assembly.GetExecutingAssembly().GetName().Version.ToString(); static object[] attributes = Assembly.GetExecutingAssembly().GetCustomAttributes(typeof(AssemblyCopyrightAttribute), false); string copyright = ((AssemblyCopyrightAttribute)attributes[0]).Copyright; string icon = Application.StartupPath + "\\Info.bmp"; //Assembly Datum und Zeit static DateTime value = AssemblyDateTime(); string date = value.ToShortDateString(); string time = value.ToLongTimeString(); private static DateTime AssemblyDateTime() { var version = System.Reflection.Assembly.GetExecutingAssembly().GetName().Version; var buildDateTime = new DateTime(2000, 1, 1).Add(new TimeSpan( TimeSpan.TicksPerDay * version.Build + TimeSpan.TicksPerSecond * 2 * version.Revision)); //Tage seit dem 1. Januar 2000 und Sekunden seit Mitternacht, (multiplizier mit 2 ergibt das Original) return buildDateTime; } #endregion public MainForm() { // // The InitializeComponent() call is required for Windows Forms designer support. // InitializeComponent(); // // TODO: Add constructor code after the InitializeComponent() call. // } string licenseName = ""; int licensesTotal = 0; int licensesInUse = 0; string licenseVersion = ""; string licenseVendor = ""; string licenseType = ""; List tUsers = new List(); private string LicenseServer { set; get; } private LicensesList licenseList = new LicensesList(); // private Users users = new Users(); private UserList userList = new UserList(); void ComboBoxSelectLicenseServerSelectedIndexChanged(object sender, EventArgs e) { LicenseServer = comboBoxSelectLicenseServer.SelectedItem.ToString(); } void ButtonEvaluateClick(object sender, EventArgs e) { if (!String.IsNullOrEmpty(LicenseServer)) { Start(sender, e); } } private void Start(object sender, EventArgs e) { //TODO: Lizenzen lesen string fileName = @"H:\Programmieren\SharpDevelop\NxLizenz\Daten\149_UGS_LICENSE_FILE.txt"; //TODO: Lizenzliste füllen if (licenseList.AllLicenses.Count == 0) { ReadLicenseFile(fileName); } DrawDisplay(licenseList.AllLicenses.Count, sender, e); } private void ReadLicenseFile(string fileName) { using (var sr = new StreamReader(fileName, Encoding.Default)) { bool read = false; bool secondLine = false; bool nextLine = false; int emptyLine = 0; string line = ""; int count = -1; //Datei zeilenweise einlesen bis das Ende der Datei erreicht ist while (!sr.EndOfStream) { line = sr.ReadLine(); //Zeile einlesen if (read) { if (line.StartsWith("Users of ")) { count ++; Users users = new Users(); if (emptyLine == 1) { //User einlesen ExtractUser("", count - 1); //Wenn ein neuer Block beginnt, dann die ermittelten Werte schreiben WriteLicenceValueBlock(count - 1); emptyLine = 0; } if (emptyLine == 3) { //Wenn ein neuer Block beginnt, dann die ermittelten Werte schreiben WriteLicenceValueBlock(count - 1); emptyLine = 0; } //LicenseName, LicenseTotal und LicenseUsed extrahieren var license = new License(); ExtractLicenses(line, count); } if (String.IsNullOrEmpty(line)) { emptyLine ++; } if (secondLine) { secondLine = false; //Wieder zurücksetzen //Den Lizentyp aus der Zeile extrahieren licenseType = line.Remove(0, 2); licenseType = licenseType.Remove(line.LastIndexOf(" ") - 2); } if (line.StartsWith(" \"")) { //Setzen damit auch die nächste Zeile in den Block mit aufgenommen wird secondLine = true; //Lizenzversion und Lizenztyp extrahieren licenseVersion = line.Remove(line.IndexOf(",")).Remove(0, line.IndexOf("v") + 1); licenseVendor = line.Remove(0, line.IndexOf(":") + 1); } if (emptyLine == 2 & !String.IsNullOrEmpty(line)) { //User einlesen ExtractUser(line, count); } } if (nextLine) { read = true; //Ab jetzt wird ausgewertet nextLine = false; //Zurücksetzen, damit die Abfrage nicht mehr durchlaufen wird } if (line.Contains("Feature usage info:")) { nextLine = true; //Die nächste Zeile darf nicht berücksichtigt werden, aber dann wird ausgewertet } } //Die Werte des letzten Blocks schreiben WriteLicenceValueBlock(count); } } private void ExtractLicenses(string line, int count) { string lic = ""; string inUse = ""; string total = ""; lic = line.Remove(line.IndexOf(":")).Replace("Users of ", ""); line = line.Remove(0, line.IndexOf("Total of ") + 9); if (line.Contains(" licenses in use)")) { line = line.Replace(" licenses in use)", ""); } else { line = line.Replace(" license in use)", ""); } inUse = line.Remove(0, line.LastIndexOf(" ") + 1); total = line.Remove(line.IndexOf(" ")); //Bis zum schreiben zwischenspeichern licenseName = lic; licensesTotal = Convert.ToInt32(total); licensesInUse = Convert.ToInt32(inUse); } private void ExtractUser(string line, int count) { string idNumber = ""; string firstName = ""; string sureName = ""; string temp = ""; string computerName = ""; User user = new User(); if (String.IsNullOrEmpty(line)) { user.FirstName = ""; user.SurName = ""; user.IdNumber = ""; user.ComputerName = ""; } else { if (line.Contains("TcServer")) { temp = line.Replace(" ", ""); idNumber = temp.Remove(temp.IndexOf(" Tc")); temp = temp.Remove(0, temp.IndexOf(" ") + 1); computerName = temp.Remove(temp.IndexOf(" ")); temp = temp.Remove(0, temp.IndexOf(" Tc") + 9); temp = temp.Remove(temp.IndexOf(" (")); if (temp.Contains("_")) { firstName = temp.Remove(0, temp.IndexOf("_") + 1); sureName = temp.Remove(temp.IndexOf("_")); } else { firstName = ""; sureName = temp; } } else { temp = line.Replace(" ", ""); idNumber = temp.Remove(temp.IndexOf(" ")); temp = temp.Remove(0, temp.IndexOf(" ") + 1); computerName = temp.Remove(temp.IndexOf(" ")); temp = ExtractRealUserName(idNumber); firstName = temp.Remove(0, temp.IndexOf(" ") + 1); sureName = temp.Remove(temp.IndexOf(" ")); } user.FirstName = firstName; user.SurName = sureName; user.IdNumber = idNumber; user.ComputerName = computerName; } tUsers.Add(user); } private string ExtractRealUserName(string idNumber) { string username = ""; //TODO: Auswerten username = "no Name"; //TODO: Nur zum Testen. Mauss dann wieder entfernt werden return username; } private void WriteLicenceValueBlock(int count) { var license = new License(); license.LicenseName = licenseName; license.LicensesTotal = licensesTotal; license.LicensesInUse = licensesInUse; license.LicenseVersion = licenseVersion; license.LicenseVendor = licenseVendor; license.LicenseType = licenseType; licenseList.Add(license); Users users = new Users(); for (int i = 0; i < tUsers.Count; i++) { users.Add(tUsers[i]); } tUsers.Clear(); userList.Add(users); //Den ersten Eintrag aus der Liste löschen if (count == 0) { licenseList.AllLicenses.RemoveAt(0); userList.AllUsers.RemoveAt(0); } } private void DrawDisplay(int countLicenses, object sender, EventArgs e) { int width = 860; int hight = 72 + 90 * countLicenses; this.ClientSize = new System.Drawing.Size(width, hight); for (int i = 0; i < countLicenses; i++) { AddControl_Click(sender, e, i); } } private void AddControl_Click(object sender, EventArgs e, int i) { const int xPos = 12; const int yPos = 70; var lic = new LicenseItem(); lic.Name = string.Format("LicItem[{0}]", i); lic.Location = new Point((xPos), yPos + 90 * i); lic.Size = new Size (618, 80); lic.LicName = licenseList.AllLicenses[i].LicenseName; lic.Available = licenseList.AllLicenses[i].LicensesTotal; lic.InUse = licenseList.AllLicenses[i].LicensesInUse; lic.Version = licenseList.AllLicenses[i].LicenseVersion; lic.Vendor = licenseList.AllLicenses[i].LicenseVendor; lic.Type = licenseList.AllLicenses[i].LicenseType; lic.MouseClick += new MouseEventHandler(this.LicenseItemClick); lic.Refresh(); this.Controls.Add(lic); lic.ShowCurrentValues(); } private void LicenseItemClick(object sender, EventArgs e) { // enter code here. LicenseItem lic = (LicenseItem)sender; // MessageBox.Show(lic.Name + " was clicked"); int index = Convert.ToInt32(lic.Name.Remove(0, lic.Name.IndexOf("[") + 1).Replace("]","")); // MessageBox.Show(CreateUserList(index)); Users users = userList.AllUsers[index]; UserView uv = new UserView(users); uv.ShowDialog(); } private string CreateUserList(int index) { string userL = ""; Users users = userList.AllUsers[index]; for (int i = 0; i < users.AllUsers.Count; i++) { if (users.AllUsers[i].FirstName == "") { userL = "There is no license in use."; } else { userL += String.Concat("Name: ", users.AllUsers[i].FirstName, " ", users.AllUsers[i].SurName, " User Id: ", users.AllUsers[i].IdNumber, " Computername: ", users.AllUsers[i].ComputerName, "\n"); } } return userL; } } }