Skip to content

Commit

Permalink
Version 1.0.8278
Browse files Browse the repository at this point in the history
Version 1.0.8278
-----------------------------------------------------------------
First Mayor Release.

Note: Earlier *.rfPrj project files are not compatible with this release.

Frontend related changes
- Feature: Added "Help" -> "About" to display detailed version info
- Feature: Added "CheckMifareClassicSecturUnused" Tasktype for MF Classic
- Improvement: Changed "TextBlock" to "TextBox" in Datagridcells of type "Content" to easily modify it's content
- Improvement: Added "ReadChipPublic" to treeview contextmenu
- Improvement: Added "AddNew" to treeview contextmenu
- Improvement: Removed Hardcoded strings from ui

Backend related changes
- Abstraction of ReaderDevice. Ability to add more readers in future releases
- DefaultKeys. AppMasterKey and Read/WriteKey become of type AES
- Added GenericChip Interface to display more chiptypes without hardcoding their type in HierarchicalDataTemplateViewModel
- Added GenericTask Interface to ease access to shared properties (e.g. taskindex...)
- Fix: Need to restart Application when changing reader
- Fix: Projects were not loaded under some circumstances
- Improvement: Detect more different Chiptypes
- Improvement: Translation
  • Loading branch information
c3rebro committed Aug 31, 2022
1 parent 45530a5 commit f91aa54
Show file tree
Hide file tree
Showing 21 changed files with 422 additions and 290 deletions.
54 changes: 27 additions & 27 deletions RFiDGear.sln
Original file line number Diff line number Diff line change
Expand Up @@ -9,8 +9,6 @@ Project("{930C7802-8A8C-48F9-8165-68863BCCD9DD}") = "Setup", "Setup\Setup.wixpro
EndProject
Project("{930C7802-8A8C-48F9-8165-68863BCCD9DD}") = "RFiDGearBundleSetup", "RFiDGearBundleSetup\RFiDGearBundleSetup.wixproj", "{5A7DF993-C696-4958-B7C9-9396122DFF21}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "VCNEditor", "..\VCNEditor\VCNEditor.csproj", "{909DB876-4A74-42AC-BACF-C681017D0C77}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ByteArray", "..\ByteArray\ByteArray.csproj", "{BDD5DF8C-6FC1-4882-8151-924820FDBC05}"
ProjectSection(ProjectDependencies) = postProject
{786D71E7-4D92-43E4-A9EB-4E07FFE36F70} = {786D71E7-4D92-43E4-A9EB-4E07FFE36F70}
Expand All @@ -20,9 +18,11 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Elatec.NET", "..\Elatec.NET
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Log4CSharp", "..\Log4CSharp\Log4CSharp.csproj", "{786D71E7-4D92-43E4-A9EB-4E07FFE36F70}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "PluginSystem", "..\PluginSystem\PluginSystem.csproj", "{E99B606A-25B8-4113-9E75-5016CCFDB410}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "MVVMDialogs", "..\MVVMDialogs\MVVMDialogs.csproj", "{EF56252E-257F-41D1-974B-C9015071CE7E}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "PluginSystem", "..\PluginSystem\PluginSystem.csproj", "{E99B606A-25B8-4113-9E75-5016CCFDB410}"
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "VCNEditor", "..\VCNEditor\VCNEditor.csproj", "{909DB876-4A74-42AC-BACF-C681017D0C77}"
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Expand Down Expand Up @@ -62,18 +62,6 @@ Global
{5A7DF993-C696-4958-B7C9-9396122DFF21}.Release|x64.ActiveCfg = Release|x86
{5A7DF993-C696-4958-B7C9-9396122DFF21}.Release|x86.ActiveCfg = Release|x86
{5A7DF993-C696-4958-B7C9-9396122DFF21}.Release|x86.Build.0 = Release|x86
{909DB876-4A74-42AC-BACF-C681017D0C77}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{909DB876-4A74-42AC-BACF-C681017D0C77}.Debug|Any CPU.Build.0 = Debug|Any CPU
{909DB876-4A74-42AC-BACF-C681017D0C77}.Debug|x64.ActiveCfg = Debug|x64
{909DB876-4A74-42AC-BACF-C681017D0C77}.Debug|x64.Build.0 = Debug|x64
{909DB876-4A74-42AC-BACF-C681017D0C77}.Debug|x86.ActiveCfg = Debug|Any CPU
{909DB876-4A74-42AC-BACF-C681017D0C77}.Debug|x86.Build.0 = Debug|Any CPU
{909DB876-4A74-42AC-BACF-C681017D0C77}.Release|Any CPU.ActiveCfg = Release|Any CPU
{909DB876-4A74-42AC-BACF-C681017D0C77}.Release|Any CPU.Build.0 = Release|Any CPU
{909DB876-4A74-42AC-BACF-C681017D0C77}.Release|x64.ActiveCfg = Release|x64
{909DB876-4A74-42AC-BACF-C681017D0C77}.Release|x64.Build.0 = Release|x64
{909DB876-4A74-42AC-BACF-C681017D0C77}.Release|x86.ActiveCfg = Release|Any CPU
{909DB876-4A74-42AC-BACF-C681017D0C77}.Release|x86.Build.0 = Release|Any CPU
{BDD5DF8C-6FC1-4882-8151-924820FDBC05}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{BDD5DF8C-6FC1-4882-8151-924820FDBC05}.Debug|Any CPU.Build.0 = Debug|Any CPU
{BDD5DF8C-6FC1-4882-8151-924820FDBC05}.Debug|x64.ActiveCfg = Debug|x64
Expand Down Expand Up @@ -110,18 +98,6 @@ Global
{786D71E7-4D92-43E4-A9EB-4E07FFE36F70}.Release|x64.Build.0 = Release|x64
{786D71E7-4D92-43E4-A9EB-4E07FFE36F70}.Release|x86.ActiveCfg = Release|x86
{786D71E7-4D92-43E4-A9EB-4E07FFE36F70}.Release|x86.Build.0 = Release|x86
{EF56252E-257F-41D1-974B-C9015071CE7E}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{EF56252E-257F-41D1-974B-C9015071CE7E}.Debug|Any CPU.Build.0 = Debug|Any CPU
{EF56252E-257F-41D1-974B-C9015071CE7E}.Debug|x64.ActiveCfg = Debug|x64
{EF56252E-257F-41D1-974B-C9015071CE7E}.Debug|x64.Build.0 = Debug|x64
{EF56252E-257F-41D1-974B-C9015071CE7E}.Debug|x86.ActiveCfg = Debug|Any CPU
{EF56252E-257F-41D1-974B-C9015071CE7E}.Debug|x86.Build.0 = Debug|Any CPU
{EF56252E-257F-41D1-974B-C9015071CE7E}.Release|Any CPU.ActiveCfg = Release|Any CPU
{EF56252E-257F-41D1-974B-C9015071CE7E}.Release|Any CPU.Build.0 = Release|Any CPU
{EF56252E-257F-41D1-974B-C9015071CE7E}.Release|x64.ActiveCfg = Release|x64
{EF56252E-257F-41D1-974B-C9015071CE7E}.Release|x64.Build.0 = Release|x64
{EF56252E-257F-41D1-974B-C9015071CE7E}.Release|x86.ActiveCfg = Release|Any CPU
{EF56252E-257F-41D1-974B-C9015071CE7E}.Release|x86.Build.0 = Release|Any CPU
{E99B606A-25B8-4113-9E75-5016CCFDB410}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{E99B606A-25B8-4113-9E75-5016CCFDB410}.Debug|Any CPU.Build.0 = Debug|Any CPU
{E99B606A-25B8-4113-9E75-5016CCFDB410}.Debug|x64.ActiveCfg = Debug|x64
Expand All @@ -134,6 +110,30 @@ Global
{E99B606A-25B8-4113-9E75-5016CCFDB410}.Release|x64.Build.0 = Release|x64
{E99B606A-25B8-4113-9E75-5016CCFDB410}.Release|x86.ActiveCfg = Release|Any CPU
{E99B606A-25B8-4113-9E75-5016CCFDB410}.Release|x86.Build.0 = Release|Any CPU
{EF56252E-257F-41D1-974B-C9015071CE7E}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{EF56252E-257F-41D1-974B-C9015071CE7E}.Debug|Any CPU.Build.0 = Debug|Any CPU
{EF56252E-257F-41D1-974B-C9015071CE7E}.Debug|x64.ActiveCfg = Debug|x64
{EF56252E-257F-41D1-974B-C9015071CE7E}.Debug|x64.Build.0 = Debug|x64
{EF56252E-257F-41D1-974B-C9015071CE7E}.Debug|x86.ActiveCfg = Debug|Any CPU
{EF56252E-257F-41D1-974B-C9015071CE7E}.Debug|x86.Build.0 = Debug|Any CPU
{EF56252E-257F-41D1-974B-C9015071CE7E}.Release|Any CPU.ActiveCfg = Release|Any CPU
{EF56252E-257F-41D1-974B-C9015071CE7E}.Release|Any CPU.Build.0 = Release|Any CPU
{EF56252E-257F-41D1-974B-C9015071CE7E}.Release|x64.ActiveCfg = Release|x64
{EF56252E-257F-41D1-974B-C9015071CE7E}.Release|x64.Build.0 = Release|x64
{EF56252E-257F-41D1-974B-C9015071CE7E}.Release|x86.ActiveCfg = Release|Any CPU
{EF56252E-257F-41D1-974B-C9015071CE7E}.Release|x86.Build.0 = Release|Any CPU
{909DB876-4A74-42AC-BACF-C681017D0C77}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{909DB876-4A74-42AC-BACF-C681017D0C77}.Debug|Any CPU.Build.0 = Debug|Any CPU
{909DB876-4A74-42AC-BACF-C681017D0C77}.Debug|x64.ActiveCfg = Debug|x64
{909DB876-4A74-42AC-BACF-C681017D0C77}.Debug|x64.Build.0 = Debug|x64
{909DB876-4A74-42AC-BACF-C681017D0C77}.Debug|x86.ActiveCfg = Debug|x86
{909DB876-4A74-42AC-BACF-C681017D0C77}.Debug|x86.Build.0 = Debug|x86
{909DB876-4A74-42AC-BACF-C681017D0C77}.Release|Any CPU.ActiveCfg = Release|Any CPU
{909DB876-4A74-42AC-BACF-C681017D0C77}.Release|Any CPU.Build.0 = Release|Any CPU
{909DB876-4A74-42AC-BACF-C681017D0C77}.Release|x64.ActiveCfg = Release|x64
{909DB876-4A74-42AC-BACF-C681017D0C77}.Release|x64.Build.0 = Release|x64
{909DB876-4A74-42AC-BACF-C681017D0C77}.Release|x86.ActiveCfg = Release|x86
{909DB876-4A74-42AC-BACF-C681017D0C77}.Release|x86.Build.0 = Release|x86
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -114,6 +114,8 @@ public void StartMonitoring()
if (_localConfig != null)
{
Log.Write("Starting monitoring every {0}s.", _localConfig.CheckInterval);
Check(null);

_timer = new Timer(Check, null, 5000, _localConfig.CheckInterval * 1000);
}

Expand Down
8 changes: 5 additions & 3 deletions RFiDGear/DataAccessLayer/Local/ResourceLoader.cs
Original file line number Diff line number Diff line change
Expand Up @@ -150,7 +150,7 @@ public object Convert(object value, Type targetType, object parameter, CultureIn
}
catch (Exception e)
{
LogWriter.CreateLogEntry(string.Format("{0}; {1}; {2}", DateTime.Now, e.Message, e.InnerException != null ? e.InnerException.Message : ""), FacilityName);
LogWriter.CreateLogEntry(e, FacilityName);

throw new ArgumentOutOfRangeException(
string.Format("parameter:{0}\nvalue:{1}",
Expand Down Expand Up @@ -208,14 +208,16 @@ public static string GetResource(string resName)
{
settings.ReadSettings();

return new ResourceManager("RFiDGear.Resources.Manifest", System.Reflection.Assembly.GetExecutingAssembly())
string ressource = new ResourceManager("RFiDGear.Resources.Manifest", System.Reflection.Assembly.GetExecutingAssembly())
.GetString(resName, (settings.DefaultSpecification.DefaultLanguage == "german") ? new CultureInfo("de") : new CultureInfo("en"));

return ressource.Replace("%NEWLINE", "\n");
}

}
catch (Exception e)
{
LogWriter.CreateLogEntry(string.Format("{0}; {1}; {2}", DateTime.Now, e.Message, e.InnerException != null ? e.InnerException.Message : ""), FacilityName);
LogWriter.CreateLogEntry(e, FacilityName);
return string.Empty;
}
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -140,6 +140,7 @@ public void SetReportField(string _field, string _value)
{
form.GetField(_field).SetBorderWidth(1);
form.GetField(_field).SetVisibility(PdfFormField.VISIBLE);
form.GetField(_field).SetReadOnly(false);
form.GetField(_field).SetValue(_value);

if (form.GetField(_field) is PdfButtonFormField)
Expand Down
13 changes: 9 additions & 4 deletions RFiDGear/DataAccessLayer/Remote/FromIO/ElatecNetProvider.cs
Original file line number Diff line number Diff line change
Expand Up @@ -51,17 +51,18 @@ public override ERROR ReadChipPublic()
{
try
{
if (readerDevice.ConnectTWN4())
if (readerDevice != null)
{
readerDevice.Beep();
readerDevice.GreenLED(true);

card = readerDevice.GetSingleChip();

if (card?.ChipIdentifier != null)
if (!string.IsNullOrWhiteSpace(card?.ChipIdentifier))
{
try
{
readerDevice.Beep(1, 200, 2000, 50);

GenericChip = new GenericChipModel(card.ChipIdentifier, (CARD_TYPE)card.CardType);

if ((CARD_TYPE)card.CardType == CARD_TYPE.DESFire || (CARD_TYPE)card.CardType == CARD_TYPE.DESFireEV1)
Expand Down Expand Up @@ -91,6 +92,9 @@ public override ERROR ReadChipPublic()
}
else
{
readerDevice.Beep(3, 50, 2000, 50);
GenericChip = null;

return ERROR.NotReadyError;
}
}
Expand Down Expand Up @@ -226,7 +230,7 @@ protected override void Dispose(bool disposing)
{
if (disposing)
{
TWN4ReaderDevice.Instance?.DisconnectTWN4();

}

_disposed = true;
Expand All @@ -237,6 +241,7 @@ public override void Dispose()
{
_disposed = false;
Dispose(true);
GC.SuppressFinalize(this);
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -2464,6 +2464,7 @@ public override void Dispose()
{
_disposed = false;
Dispose(true);
GC.SuppressFinalize(this);
}
}
}
12 changes: 10 additions & 2 deletions RFiDGear/DataAccessLayer/Remote/FromIO/ReaderDevice.cs
Original file line number Diff line number Diff line change
Expand Up @@ -20,13 +20,16 @@ public static ReaderDevice Instance
instance = new LibLogicalAccessProvider(Reader);
return instance;
}
else if (instance != null && !(instance is LibLogicalAccessProvider))
{
instance = new LibLogicalAccessProvider(Reader);
return instance;
}
else
{
return instance;
}

}

case ReaderTypes.Elatec:
lock (syncRoot)
{
Expand All @@ -35,6 +38,11 @@ public static ReaderDevice Instance
instance = new ElatecNetProvider(PortNumber);
return instance;
}
else if (instance != null && !(instance is ElatecNetProvider))
{
instance = new ElatecNetProvider(PortNumber);
return instance;
}
else
{
return instance;
Expand Down
69 changes: 51 additions & 18 deletions RFiDGear/Resources/Manifest.de.resx
Original file line number Diff line number Diff line change
Expand Up @@ -437,16 +437,16 @@ ein Kartenlesegerät auswählen</value>
<value>_Aufgabenstatus zurücksetzen</value>
</data>
<data name="menuItemRunAllTasksAutomatically" xml:space="preserve">
<value>_Alle Aufgaben automatisch abarbeiten</value>
<value>_Alle Aufgaben automatisch ausführen</value>
</data>
<data name="menuItemRunSelectedTaskAutomatically" xml:space="preserve">
<value>_Markierte Aufgabe automatisch abarbeiten</value>
<value>_Markierte Aufgabe automatisch ausführen</value>
</data>
<data name="menuItemRunSelectedTaskOnce" xml:space="preserve">
<value>Markierte Aufgaben _einmalig abarbeiten</value>
<value>Markierte Aufgaben _einmalig ausführen</value>
</data>
<data name="menuItemRunAllTasksOnce" xml:space="preserve">
<value>Alle A_ufgaben einmalig abarbeiten</value>
<value>Alle A_ufgaben einmalig ausführen</value>
</data>
<data name="menuItemOpenProject" xml:space="preserve">
<value>Projektdatei _öffnen...</value>
Expand Down Expand Up @@ -523,10 +523,10 @@ Soll die Aktualisierung jetzt herunter geladen und installiert werden?</value>
<value>_RFiD Aufgaben</value>
</data>
<data name="menuItemMifareHeader" xml:space="preserve">
<value>Mifare</value>
<value>Mifare Aufgabe</value>
</data>
<data name="menuItemRemoveCardsHeader" xml:space="preserve">
<value>Karten entfernen</value>
<value>Alle Karten entfernen</value>
</data>
<data name="menuItemAddEditMifareUltralightTaskHeader" xml:space="preserve">
<value>Mifare _Ultralight Aufgabe hinzufügen/bearbeiten</value>
Expand Down Expand Up @@ -854,7 +854,7 @@ Wird benötigt von:
<value>PDF Dateien (*.pdf)|*.pdf</value>
</data>
<data name="menuItemCreateGenericTaskHeader" xml:space="preserve">
<value>_Allgemeine (nicht-RFID) Aufgabe erstellen...</value>
<value>_Allgemeine Aufgabe erstellen / bearbeiten...</value>
</data>
<data name="labelAddTestPoint" xml:space="preserve">
<value>Testpunkt erstellen / bearbeiten</value>
Expand Down Expand Up @@ -905,7 +905,7 @@ Wird benötigt von:
<value>Kein</value>
</data>
<data name="menuItemCreateGenericChipTaskHeader" xml:space="preserve">
<value>Generischen Typ erstellen / bearbeiten....</value>
<value>Typunabhängige RFiD Aufgabe erstellen / bearbeiten....</value>
</data>
<data name="labelSelectIsChipOfType" xml:space="preserve">
<value>Kartentyp</value>
Expand Down Expand Up @@ -998,7 +998,7 @@ Wird benötigt von:
<value>ISONAS</value>
</data>
<data name="ENUM.CARD_TYPE.MIFARE" xml:space="preserve">
<value>MIFARE</value>
<value>MIFARE (Generisch)</value>
</data>
<data name="ENUM.CARD_TYPE.ISO14443B" xml:space="preserve">
<value>ISO14443B</value>
Expand Down Expand Up @@ -1037,13 +1037,13 @@ Wird benötigt von:
<value>Mifare Mini</value>
</data>
<data name="ENUM.CARD_TYPE.Mifare1K" xml:space="preserve">
<value>Mifare 1K</value>
<value>Mifare Classic 1K</value>
</data>
<data name="ENUM.CARD_TYPE.Mifare2K" xml:space="preserve">
<value>Mifare 2K</value>
<value>Mifare Classic 2K</value>
</data>
<data name="ENUM.CARD_TYPE.Mifare4K" xml:space="preserve">
<value>Mifare 4K</value>
<value>Mifare Classic 4K</value>
</data>
<data name="ENUM.CARD_TYPE.SAM_AV1" xml:space="preserve">
<value>SAM_AV1</value>
Expand Down Expand Up @@ -1088,16 +1088,16 @@ Wird benötigt von:
<value>Mifare Plus SL3 4K</value>
</data>
<data name="ENUM.CARD_TYPE.DESFire" xml:space="preserve">
<value>Desfire EV0</value>
<value>Mifare Desfire EV0</value>
</data>
<data name="ENUM.CARD_TYPE.DESFireEV1" xml:space="preserve">
<value>Desfire EV1</value>
<value>Mifare Desfire EV1</value>
</data>
<data name="ENUM.CARD_TYPE.DESFireEV2" xml:space="preserve">
<value>Desfire EV2</value>
<value>Mifare Desfire EV2</value>
</data>
<data name="ENUM.CARD_TYPE.DESFireEV3" xml:space="preserve">
<value>Desfire EV3</value>
<value>Mifare Desfire EV3</value>
</data>
<data name="ENUM.CARD_TYPE.SmartMX_Mifare_2K" xml:space="preserve">
<value>SmartMX MifareClassic 2K</value>
Expand Down Expand Up @@ -1145,10 +1145,10 @@ Wird benötigt von:
<value>Logische Zustandsprüfung</value>
</data>
<data name="labelContentExecuteConditionErrorType" xml:space="preserve">
<value>Soll - Ergebnis</value>
<value>Ziel Aufgabenergebnis</value>
</data>
<data name="labelContentExecuteConditionTaskIndex" xml:space="preserve">
<value>Ziel Taskindex</value>
<value>Ziel Aufgabennummer</value>
</data>
<data name="ENUM.TaskType_MifareDesfireTask.ReadAppSettings" xml:space="preserve">
<value>App Konfiguration lesen</value>
Expand Down Expand Up @@ -1355,4 +1355,37 @@ https://github.com/c3rebro/rfidgear</value>
<data name="ENUM.TaskType_MifareClassicTask.EmptyCheck" xml:space="preserve">
<value>Sektor-Unbenutzt Prüfung</value>
</data>
<data name="contextMenuItemReadChipPublic" xml:space="preserve">
<value>Chip erkennen</value>
</data>
<data name="dataGridColumnHeaderCommonTaskCompareValue" xml:space="preserve">
<value>Vergleichs-%NEWLINEausdruck</value>
</data>
<data name="dataGridColumnHeaderCommonTaskContent" xml:space="preserve">
<value>Inhalt</value>
</data>
<data name="dataGridColumnHeaderCommonTaskTargetIndex" xml:space="preserve">
<value>Ziel Aufgaben-%NEWLINENummer</value>
</data>
<data name="dataGridColumnHeaderCommonTaskTargetResult" xml:space="preserve">
<value>Ziel Aufgaben-%NEWLINEErgebnis</value>
</data>
<data name="dataGridColumnHeaderCommonTaskTemplateField" xml:space="preserve">
<value>PDF Feldvariablen-%NEWLINEbezeichnung</value>
</data>
<data name="dataGridColumnHeaderCommonTaskTemplateFieldContent" xml:space="preserve">
<value>PDF Feldinhalt</value>
</data>
<data name="groupBoxHeaderCommonTaskCheckpointSetup1" xml:space="preserve">
<value>Prüfpunkteübersicht</value>
</data>
<data name="hierarchicalDataTemplateParentNodeContextMenuDeleteNode" xml:space="preserve">
<value>Knoten löschen</value>
</data>
<data name="hierarchicalDataTemplateParentNodeHeaderChipType" xml:space="preserve">
<value>Chip Typ:</value>
</data>
<data name="windowCaptionAddEditGenericChipTask" xml:space="preserve">
<value>Typunabhängige RFiD Aufgabe erstellen / bearbeiten</value>
</data>
</root>
Loading

0 comments on commit f91aa54

Please sign in to comment.