From 2f5bec7bb67c0050fd66eca072841162afb229af Mon Sep 17 00:00:00 2001 From: Jonathan Jenne Date: Mon, 25 Sep 2023 08:49:26 +0200 Subject: [PATCH] Only allow predefined extensions --- Connectors.Common/Connectors.Common.vbproj | 1 + Connectors.Common/Modules/Constants.vb | 26 +++++++++++++++++ .../Modules/slt/Entities/sltDocument.vb | 29 +++++++++++++++---- Connectors.Test/sltTest.vb | 13 ++++++++- 4 files changed, 63 insertions(+), 6 deletions(-) create mode 100644 Connectors.Common/Modules/Constants.vb diff --git a/Connectors.Common/Connectors.Common.vbproj b/Connectors.Common/Connectors.Common.vbproj index 9add4c6..7c5a5ff 100644 --- a/Connectors.Common/Connectors.Common.vbproj +++ b/Connectors.Common/Connectors.Common.vbproj @@ -84,6 +84,7 @@ + diff --git a/Connectors.Common/Modules/Constants.vb b/Connectors.Common/Modules/Constants.vb new file mode 100644 index 0000000..101e795 --- /dev/null +++ b/Connectors.Common/Modules/Constants.vb @@ -0,0 +1,26 @@ +Public Class Constants + Public Shared Property AllowedExtensions As New List(Of String) From { + "pdf", + "txt", + "pptx", + "docx", + "xlsx", + "ppt", + "doc", + "xls", + "msg", + "csv", + "dxf", + "dwg", + "jpg", + "jpeg", + "png", + "zip", + "7z", + "mp4", + "log", + "jfif", + "bmp", + "eml" + } +End Class diff --git a/Connectors.Common/Modules/slt/Entities/sltDocument.vb b/Connectors.Common/Modules/slt/Entities/sltDocument.vb index dd05c64..8ae0b4b 100644 --- a/Connectors.Common/Modules/slt/Entities/sltDocument.vb +++ b/Connectors.Common/Modules/slt/Entities/sltDocument.vb @@ -1,5 +1,4 @@ Imports System.IO -Imports DigitalData.Modules.Base Namespace slt.Entities Public Class sltDocument @@ -25,13 +24,33 @@ Namespace slt.Entities End Function Private Function GetExtension() As String - If Path.HasExtension(DocOriginalFilename) Then - Return Path.GetExtension(DocOriginalFilename) - ElseIf Path.HasExtension(Name) Then - Return Path.GetExtension(Name) + Dim oExtensionFromName = GetAllowedExtension(Name) + If oExtensionFromName IsNot Nothing Then + Return oExtensionFromName + End If + + Dim oExtensionFromOriginalName = GetAllowedExtension(DocOriginalFilename) + If oExtensionFromOriginalName IsNot Nothing Then + Return oExtensionFromOriginalName + End If + + Return Nothing + End Function + + Private Function GetAllowedExtension(pFilename As String) As String + If Path.HasExtension(pFilename) Then + Dim oExtension = Path.GetExtension(pFilename) + Dim oExtensionWithoutDot = oExtension.Substring(1).ToLower() + + If Common.Constants.AllowedExtensions.Contains(oExtensionWithoutDot) Then + Return oExtension + Else + Return Nothing + End If Else Return Nothing End If End Function + End Class End Namespace diff --git a/Connectors.Test/sltTest.vb b/Connectors.Test/sltTest.vb index 3c4a9f7..6ef55f5 100644 --- a/Connectors.Test/sltTest.vb +++ b/Connectors.Test/sltTest.vb @@ -22,6 +22,12 @@ Namespace Connectors.Test.slt .Name = "Gutschrift-[TITEL].pdf" } + Public oDocument4 As New sltDocument With { + .ExtDocId = "DOCID", + .DocOriginalFilename = "TWZ Einbau - Pilgerweg 8 vom 20.07.2022.jpg", + .Name = "TWZ Einbau - Pilgerweg 8 vom 20.07.2022" + } + Sub GetExtensionTest1() Assert.AreEqual("DOCID.dwg", oDocument1.GetUniqueFilename()) @@ -29,7 +35,7 @@ Namespace Connectors.Test.slt Sub GetExtensionTest2() - Assert.AreEqual("", oDocument2.GetUniqueFilename()) + Assert.AreEqual(Nothing, oDocument2.GetUniqueFilename()) End Sub @@ -37,6 +43,11 @@ Namespace Connectors.Test.slt Assert.AreEqual("DOCID.pdf", oDocument3.GetUniqueFilename()) End Sub + + Sub GetExtensionTest4() + Assert.AreEqual("DOCID.jpg", oDocument4.GetUniqueFilename()) + End Sub + End Class End Namespace