387 lines
10 KiB
C#
387 lines
10 KiB
C#
/*
|
|
* 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
|
|
{
|
|
/// <summary>
|
|
/// Description of MainForm.
|
|
/// </summary>
|
|
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<User> tUsers = new List<User>();
|
|
|
|
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;
|
|
}
|
|
}
|
|
}
|