git-tfs-id: [http://tfs.userrendszerhaz.hu:8080/tfs/DefaultCollection]$/MediaCube...
authorVásáry Dániel <daniel.vasary@userrendszerhaz.hu>
Fri, 13 Oct 2017 15:07:37 +0000 (15:07 +0000)
committerVásáry Dániel <daniel.vasary@userrendszerhaz.hu>
Fri, 13 Oct 2017 15:07:37 +0000 (15:07 +0000)
15 files changed:
client/IntegrationTests/App.config
client/IntegrationTests/IntegrationTests.csproj
client/IntegrationTests/MaestroIT.cs
client/IntegrationTests/packages.config
client/Maestro/Commons/SambaClient.cs [new file with mode: 0644]
client/Maestro/Configuration/configuration-editor.json [new file with mode: 0644]
client/Maestro/Configuration/configuration-nle.json [moved from client/Maestro/Configuration/configuration-ingest2.json with 77% similarity]
client/Maestro/Configuration/configuration-playout.json
client/Maestro/Configuration/configuration-studio.json [moved from client/Maestro/Configuration/configuration-control.json with 90% similarity]
client/Maestro/Configuration/configuration-sxs.json [moved from client/Maestro/Configuration/configuration-ingest.json with 73% similarity]
client/Maestro/Connected Services/packages.config [new file with mode: 0644]
client/Maestro/Maestro.csproj
client/Maestro/MaestroForm.Target.cs
client/Maestro/Targets/FTPTargetProcessor.cs
client/Maestro/Targets/UNCTargetProcessor.cs

index 302730416f1050715981bf7d2179835d8b1f614d..c7ada3f311e00b35faa86556295147d31e382aba 100644 (file)
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="utf-8" ?>\r
+<?xml version="1.0" encoding="utf-8"?>\r
 <configuration>\r
   <configSections>\r
     <section name="nlog" type="NLog.Config.ConfigSectionHandler, NLog" />\r
@@ -6,10 +6,38 @@
 \r
   <nlog xmlns="http://www.nlog-project.org/schemas/NLog.xsd" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">\r
     <targets>\r
-      <target name="console" xsi:type="Console" layout="${date:format=yyyy.MM.dd HH\:mm\:ss} ${level} ${message}"/>\r
+      <target name="console" xsi:type="Console" layout="${date:format=yyyy.MM.dd HH\:mm\:ss} ${level} ${message}" />\r
     </targets>\r
     <rules>\r
-      <logger name="*" minlevel="Trace" writeTo="console"/>\r
+      <logger name="*" minlevel="Trace" writeTo="console" />\r
     </rules>\r
   </nlog>\r
+  <runtime>\r
+    <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">\r
+      <dependentAssembly>\r
+        <assemblyIdentity name="System.Net.NameResolution" publicKeyToken="b03f5f7f11d50a3a" culture="neutral" />\r
+        <bindingRedirect oldVersion="0.0.0.0-4.0.1.0" newVersion="4.0.1.0" />\r
+      </dependentAssembly>\r
+      <dependentAssembly>\r
+        <assemblyIdentity name="System.Net.Sockets" publicKeyToken="b03f5f7f11d50a3a" culture="neutral" />\r
+        <bindingRedirect oldVersion="0.0.0.0-4.1.1.0" newVersion="4.1.1.0" />\r
+      </dependentAssembly>\r
+      <dependentAssembly>\r
+        <assemblyIdentity name="System.Net.NetworkInformation" publicKeyToken="b03f5f7f11d50a3a" culture="neutral" />\r
+        <bindingRedirect oldVersion="0.0.0.0-4.1.1.0" newVersion="4.1.1.0" />\r
+      </dependentAssembly>\r
+      <dependentAssembly>\r
+        <assemblyIdentity name="System.Security.Cryptography.Primitives" publicKeyToken="b03f5f7f11d50a3a" culture="neutral" />\r
+        <bindingRedirect oldVersion="0.0.0.0-4.0.1.0" newVersion="4.0.1.0" />\r
+      </dependentAssembly>\r
+      <dependentAssembly>\r
+        <assemblyIdentity name="System.Console" publicKeyToken="b03f5f7f11d50a3a" culture="neutral" />\r
+        <bindingRedirect oldVersion="0.0.0.0-4.0.1.0" newVersion="4.0.1.0" />\r
+      </dependentAssembly>\r
+      <dependentAssembly>\r
+        <assemblyIdentity name="System.Security.Cryptography.Algorithms" publicKeyToken="b03f5f7f11d50a3a" culture="neutral" />\r
+        <bindingRedirect oldVersion="0.0.0.0-4.1.0.0" newVersion="4.1.0.0" />\r
+      </dependentAssembly>\r
+    </assemblyBinding>\r
+  </runtime>\r
 </configuration>\r
index 32dd0456349a802be2f4dc2f3c908831a351989c..de381e8a793e7046d3e1f1c6ae1779dc49dca7cf 100644 (file)
     <Reference Include="RestSharp, Version=105.2.3.0, Culture=neutral, processorArchitecture=MSIL">\r
       <HintPath>..\packages\RestSharp.105.2.3\lib\net46\RestSharp.dll</HintPath>\r
     </Reference>\r
+    <Reference Include="SharpCifs.Std, Version=0.2.11.0, Culture=neutral, PublicKeyToken=7071e1dce0b7c6b0, processorArchitecture=MSIL">\r
+      <HintPath>..\packages\SharpCifs.Std.0.2.11\lib\netstandard1.3\SharpCifs.Std.dll</HintPath>\r
+    </Reference>\r
     <Reference Include="System" />\r
+    <Reference Include="System.Console, Version=4.0.1.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">\r
+      <HintPath>..\packages\System.Console.4.3.0\lib\net46\System.Console.dll</HintPath>\r
+    </Reference>\r
     <Reference Include="System.Core" />\r
+    <Reference Include="System.Net.NameResolution, Version=4.0.1.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">\r
+      <HintPath>..\packages\System.Net.NameResolution.4.3.0\lib\net46\System.Net.NameResolution.dll</HintPath>\r
+    </Reference>\r
+    <Reference Include="System.Net.NetworkInformation, Version=4.1.1.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">\r
+      <HintPath>..\packages\System.Net.NetworkInformation.4.3.0\lib\net46\System.Net.NetworkInformation.dll</HintPath>\r
+    </Reference>\r
+    <Reference Include="System.Net.Sockets, Version=4.1.1.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">\r
+      <HintPath>..\packages\System.Net.Sockets.4.3.0\lib\net46\System.Net.Sockets.dll</HintPath>\r
+    </Reference>\r
     <Reference Include="System.Runtime.InteropServices.RuntimeInformation, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">\r
       <HintPath>..\packages\System.Runtime.InteropServices.RuntimeInformation.4.0.0\lib\net45\System.Runtime.InteropServices.RuntimeInformation.dll</HintPath>\r
     </Reference>\r
+    <Reference Include="System.Security.Cryptography.Algorithms, Version=4.1.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">\r
+      <HintPath>..\packages\System.Security.Cryptography.Algorithms.4.3.0\lib\net461\System.Security.Cryptography.Algorithms.dll</HintPath>\r
+    </Reference>\r
+    <Reference Include="System.Security.Cryptography.Primitives, Version=4.0.1.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">\r
+      <HintPath>..\packages\System.Security.Cryptography.Primitives.4.3.0\lib\net46\System.Security.Cryptography.Primitives.dll</HintPath>\r
+    </Reference>\r
     <Reference Include="System.Windows.Forms" />\r
     <Reference Include="websocket-sharp, Version=1.0.2.42480, Culture=neutral, PublicKeyToken=5660b08a1845a91e" />\r
   </ItemGroup>\r
index 3cea20c3f6f4355161797640b8f8901ae90cf3dd..4ccfe3d732004f45e3c6ea6c64cc5278953ea68e 100644 (file)
@@ -3,11 +3,43 @@ using Maestro.Targets;
 using Maestro;\r
 using Microsoft.VisualStudio.TestTools.UnitTesting;\r
 using System;\r
+using Commons;\r
+using Maestro.Commons;\r
+using System.Diagnostics;\r
+using SharpCifs.Smb;\r
 \r
 namespace IntegrationTests {\r
     [TestClass]\r
     public class MaestroTests {\r
 \r
+        private CopyProgressResult CopyProgressHandler(long total, long transferred, long streamSize, long StreamByteTrans, uint dwStreamNumber, CopyProgressCallbackReason reason, IntPtr hSourceFile, IntPtr hDestinationFile, IntPtr lpData) {\r
+            if (transferred > 0)\r
+                Debug.WriteLine((int)((double)transferred * 100 / total));\r
+            return CopyProgressResult.PROGRESS_CONTINUE;\r
+        }\r
+\r
+        protected virtual void UploadFile() {\r
+            int pbCancel = 0;\r
+            Win32File.CopyFileEx("\\\\10.10.1.100\\BRAAVOS\\_TEST_\\_ECHO\\magazin\\170806_korkep_itthonrol.MXF", "\\\\10.10.1.100\\BRAAVOS\\_TEST_\\_ECHO\\magazin\\170806_korkep_itthonrol1.MXF", new CopyProgressRoutine(this.CopyProgressHandler), IntPtr.Zero, ref pbCancel, CopyFileFlags.COPY_FILE_RESTARTABLE);\r
+        }\r
+\r
+        [TestMethod]\r
+        public void TestSambaClient() {\r
+            //SambaClient.Impersonate(null, "root", "Broadca5T", delegate\r
+            //{\r
+            //    UploadFile();\r
+            //});\r
+\r
+            SmbFile from = new SmbFile("smb://mediacube:Broadca5T@10.10.1.100/BRAAVOS/_TEST_/_ECHO/magazin/170806_korkep_itthonrol.MXF");\r
+            SmbFile to = new SmbFile("smb://mediacube:Broadca5T@10.10.1.100/BRAAVOS/_TEST_/_ECHO/magazin/170806_korkep_itthonrol1.MXF");\r
+            try {\r
+                long l = from.Length();\r
+                from.CopyTo(to);\r
+            }\r
+            catch (Exception e) {\r
+            }\r
+        }\r
+\r
         [TestMethod]\r
         public void TestFTPTarget() {\r
             Target configuration = new Target() {\r
index 9d5a51e0f07b01d011163a7b3aee044a000942d1..6d7e4746feff1958b32f176d7e6e391db37ff593 100644 (file)
@@ -7,5 +7,13 @@
   <package id="MSTest.TestFramework" version="1.1.11" targetFramework="net461" />\r
   <package id="Newtonsoft.Json" version="10.0.3" targetFramework="net461" />\r
   <package id="RestSharp" version="105.2.3" targetFramework="net461" />\r
+  <package id="SharpCifs.Std" version="0.2.11" targetFramework="net461" />\r
+  <package id="System.Console" version="4.3.0" targetFramework="net461" />\r
+  <package id="System.Net.NameResolution" version="4.3.0" targetFramework="net461" />\r
+  <package id="System.Net.NetworkInformation" version="4.3.0" targetFramework="net461" />\r
+  <package id="System.Net.Sockets" version="4.3.0" targetFramework="net461" />\r
   <package id="System.Runtime.InteropServices.RuntimeInformation" version="4.0.0" targetFramework="net461" />\r
+  <package id="System.Security.Cryptography.Algorithms" version="4.3.0" targetFramework="net461" />\r
+  <package id="System.Security.Cryptography.Primitives" version="4.3.0" targetFramework="net461" />\r
+  <package id="System.Threading.Tasks" version="4.3.0" targetFramework="net461" />\r
 </packages>
\ No newline at end of file
diff --git a/client/Maestro/Commons/SambaClient.cs b/client/Maestro/Commons/SambaClient.cs
new file mode 100644 (file)
index 0000000..30b1097
--- /dev/null
@@ -0,0 +1,84 @@
+using System;\r
+using System.Runtime.ConstrainedExecution;\r
+using System.Runtime.InteropServices;\r
+using System.Security;\r
+using System.Security.Permissions;\r
+using System.Security.Principal;\r
+using Microsoft.Win32.SafeHandles;\r
+\r
+\r
+namespace Commons {\r
+    public sealed class SafeTokenHandle : SafeHandleZeroOrMinusOneIsInvalid {\r
+        private SafeTokenHandle()\r
+            : base(true) {\r
+        }\r
+\r
+        [DllImport("kernel32.dll")]\r
+        [ReliabilityContract(Consistency.WillNotCorruptState, Cer.Success)]\r
+        [SuppressUnmanagedCodeSecurity]\r
+        [return: MarshalAs(UnmanagedType.Bool)]\r
+        private static extern bool CloseHandle(IntPtr handle);\r
+\r
+        protected override bool ReleaseHandle() {\r
+            return CloseHandle(handle);\r
+        }\r
+    }\r
+\r
+    public class SambaClient {\r
+        [DllImport("advapi32.dll", SetLastError = true, CharSet = CharSet.Unicode)]\r
+        private static extern bool LogonUser(String lpszUsername, String lpszDomain, String lpszPassword,\r
+        int dwLogonType, int dwLogonProvider, out SafeTokenHandle phToken);\r
+\r
+        [DllImport("kernel32.dll", CharSet = CharSet.Auto)]\r
+        private extern static bool CloseHandle(IntPtr handle);\r
+\r
+        [PermissionSet(SecurityAction.Demand, Name = "FullTrust")]\r
+        public static void Impersonate(string domainName, string userName, string userPassword, Action actionToExecute) {\r
+            SafeTokenHandle safeTokenHandle;\r
+            try {\r
+\r
+                const int LOGON32_PROVIDER_DEFAULT = 0;\r
+                //This parameter causes LogonUser to create a primary token.\r
+                const int LOGON32_LOGON_INTERACTIVE = 2;\r
+\r
+                // Call LogonUser to obtain a handle to an access token.\r
+                bool returnValue = LogonUser(userName, domainName, userPassword,\r
+                    LOGON32_LOGON_INTERACTIVE, LOGON32_PROVIDER_DEFAULT,\r
+                    out safeTokenHandle);\r
+                //Facade.Instance.Trace("LogonUser called.");\r
+\r
+                if (returnValue == false) {\r
+                    int ret = Marshal.GetLastWin32Error();\r
+                    //Facade.Instance.Trace($"LogonUser failed with error code : {ret}");\r
+\r
+                    throw new System.ComponentModel.Win32Exception(ret);\r
+                }\r
+\r
+                using (safeTokenHandle) {\r
+                    //Facade.Instance.Trace($"Value of Windows NT token: {safeTokenHandle}");\r
+                    //Facade.Instance.Trace($"Before impersonation: {WindowsIdentity.GetCurrent().Name}");\r
+\r
+                    // Use the token handle returned by LogonUser.\r
+                    using (WindowsIdentity newId = new WindowsIdentity(safeTokenHandle.DangerousGetHandle())) {\r
+                        using (WindowsImpersonationContext impersonatedUser = newId.Impersonate()) {\r
+                            //Facade.Instance.Trace($"After impersonation: {WindowsIdentity.GetCurrent().Name}");\r
+                            //Facade.Instance.Trace("Start executing an action");\r
+\r
+                            actionToExecute();\r
+\r
+                            //Facade.Instance.Trace("Finished executing an action");\r
+                        }\r
+                    }\r
+                    //Facade.Instance.Trace($"After closing the context: {WindowsIdentity.GetCurrent().Name}");\r
+                }\r
+\r
+            }\r
+            catch (Exception ex) {\r
+                //Facade.Instance.Trace("Oh no! Impersonate method failed.");\r
+                //ex.HandleException();\r
+                //On purpose: we want to notify a caller about the issue /Pavel Kovalev 9/16/2016 2:15:23 PM)/\r
+                throw;\r
+            }\r
+        }\r
+    }\r
+}
\ No newline at end of file
diff --git a/client/Maestro/Configuration/configuration-editor.json b/client/Maestro/Configuration/configuration-editor.json
new file mode 100644 (file)
index 0000000..d142ae2
--- /dev/null
@@ -0,0 +1,117 @@
+{\r
+  "title": "Szerkesztő",\r
+  "active": true,\r
+  "startInTray": false,\r
+  "enableCustomMetadataId": true,\r
+  "player": {\r
+    "enabled": true,\r
+    "autoStart": false,\r
+    "segmentEditor": true\r
+  },\r
+  "source": {\r
+    "$type": "UNCSource",\r
+    "filter": "avi,wav,mxf",\r
+    "local": {\r
+      "address": "file://c:/x"\r
+    }\r
+  },\r
+  "metadatas": [\r
+    {\r
+      "$type": "OctopusMetadata",\r
+      "server": {\r
+        "address": "http://10.10.1.28/services/rest/octopus/",\r
+        "timeout": 1000\r
+      }\r
+    },\r
+    {\r
+      "$type": "TrafficMetadata",\r
+      "server": {\r
+        "address": "Data Source=10.10.1.45\\sql16;Initial Catalog=PA_Echo;Persist Security Info=True;",\r
+        "userName": "MAM",\r
+        "password": "Echotv.hu",\r
+        "timeout": 1000\r
+      }\r
+    },\r
+    {\r
+      "$type": "MediaCubeMetadata",\r
+      "server": {\r
+        "address": "http://10.10.1.28/services/rest/jobengine/",\r
+        "timeout": 1000\r
+      }\r
+    }\r
+  ],\r
+  "targets": [\r
+    {\r
+      "label": "Nyersanyag betöltés",\r
+      "processor": "UNCTargetProcessor",\r
+      "outputFormat": "%ID%-%SOURCENAME%",\r
+      "tag": "Betöltés",\r
+      "createSubFolder": true,\r
+      "killDateDays": 7,\r
+      "remote": {\r
+        "address": "file://10.10.1.100/BRAAVOS/OCTOPUS",\r
+        "timeout": 1000\r
+      }\r
+    },\r
+    {\r
+      "label": "Stúdióba küldés",\r
+      "processor": "FTPTargetProcessor",\r
+      "outputFormat": "%ID%",\r
+      "tag": "Betöltés",\r
+      "remote": {\r
+        "address": "ftp://10.10.1.56:2098",\r
+        "userName": "administaror",\r
+        "password": "system",\r
+        "timeout": 1000\r
+      }\r
+    },\r
+    {\r
+      "label": "Hír nyersanyag betöltés",\r
+      "processor": "UNCTargetProcessor",\r
+      "outputFormat": "%ID%-%SOURCENAME%",\r
+      "tag": "Betöltés",\r
+      "createSubFolder": true,\r
+      "killDateDays": 7,\r
+      "useMetadata": false,\r
+      "remote": {\r
+        "address": "file://10.10.1.100/BRAAVOS/OCTOPUS",\r
+        "timeout": 1000\r
+      }\r
+    },\r
+    {\r
+      "label": "Magazin nyersanyag betöltés",\r
+      "processor": "UNCTargetProcessor",\r
+      "outputFormat": "%ID%-%SOURCENAME%",\r
+      "tag": "Betöltés",\r
+      "createSubFolder": true,\r
+      "killDateDays": 7,\r
+      "useMetadata": false,\r
+      "remote": {\r
+        "address": "file://10.10.1.100/BRAAVOS/PLAYOUT_NLE",\r
+        "timeout": 1000\r
+      }\r
+    },\r
+    {\r
+      "label": "Lebonyba küldés",\r
+      "processor": "UNCTargetProcessor",\r
+      "outputFormat": "%ID%",\r
+      "tag": "Betöltés",\r
+      "killDateDays": 7,\r
+      "remote": {\r
+        "address": "file://10.10.1.100/BRAAVOS/PLAYOUT_CHECK",\r
+        "timeout": 1000\r
+      }\r
+    },\r
+    {\r
+      "label": "Archiválás",\r
+      "processor": "UNCTargetProcessor",\r
+      "outputFormat": "%ID%",\r
+      "tag": "Archiválás",\r
+      "useMetadata": true,\r
+      "remote": {\r
+        "address": "file://10.10.1.100/BRAAVOS/ARCHIVE",\r
+        "timeout": 1000\r
+      }\r
+    }\r
+  ]\r
+}\r
similarity index 77%
rename from client/Maestro/Configuration/configuration-ingest2.json
rename to client/Maestro/Configuration/configuration-nle.json
index f9eed359dfe057eae73392dc24c32176342595e3..04a2d15ccab7cea1d75802abddbc918dce63cb22 100644 (file)
@@ -1,5 +1,5 @@
 {\r
-  "title": "Betöltés",\r
+  "title": "NLE",\r
   "active": true,\r
   "startInTray": false,\r
   "enableCustomMetadataId": true,\r
   ],\r
   "targets": [\r
     {\r
-      "label": "Híranyag betöltés",\r
+      "label": "Nyersanyag betöltés",\r
       "processor": "UNCTargetProcessor",\r
       "outputFormat": "%ID%-%SOURCENAME%",\r
       "tag": "Betöltés",\r
       "createSubFolder": true,\r
       "killDateDays": 7,\r
-      "useMetadata": false,\r
       "remote": {\r
         "address": "file://10.10.1.100/BRAAVOS/OCTOPUS",\r
         "timeout": 1000\r
       }\r
     },\r
     {\r
-      "label": "Adásanyag betöltés",\r
+      "label": "Stúdióba küldés",\r
+      "processor": "FTPTargetProcessor",\r
+      "outputFormat": "%ID%",\r
+      "tag": "Betöltés",\r
+      "remote": {\r
+        "address": "ftp://10.10.1.56:2098",\r
+        "userName": "administaror",\r
+        "password":  "system",\r
+        "timeout": 1000\r
+      }\r
+    },\r
+    {\r
+      "label": "Lebonyba küldés",\r
       "processor": "UNCTargetProcessor",\r
       "outputFormat": "%ID%",\r
       "tag": "Betöltés",\r
index fa5e1cb176e86591227a2b7af1af141873aab880..fd0ad3b2b7dc6e73eb1d3ad1da53fb74ae3adefe 100644 (file)
@@ -1,5 +1,5 @@
 {\r
-  "title": "Ellenőrzés",\r
+  "title": "Adáslebony",\r
   "active": true,\r
   "startInTray": false,\r
   "enableCustomMetadataId": true,\r
@@ -56,7 +56,7 @@
       "outputFormat": "%ID%",\r
       "tag": "Újravágás",\r
       "remote": {\r
-        "address": "file://10.10.1.100/BRAAVOS/PLAYOUT_NLE1"\r
+        "address": "file://10.10.1.100/BRAAVOS/PLAYOUT_NLE"\r
       },\r
       "sendSEmailOnSuccess" : true, \r
       "successEmailRecipient": "vasary@elgekko.net",\r
similarity index 90%
rename from client/Maestro/Configuration/configuration-control.json
rename to client/Maestro/Configuration/configuration-studio.json
index e232a9422bd745a19b8e0bdfef128f5dfebadd19..2933e81373c347caef3ee457334de1b35992b665 100644 (file)
@@ -1,5 +1,5 @@
 {\r
-  "title": "Lebonyolítás",\r
+  "title": "Stúdió",\r
   "active": true,\r
   "startInTray": false,\r
   "enableCustomMetadataId": true,\r
@@ -49,7 +49,7 @@
       "outputFormat": "%ID%",\r
       "tag": "Adáskész",\r
       "remote": {\r
-        "address": "ftp://10.10.1.100:21/PLAYOUT_CHECK1",\r
+        "address": "ftp://10.10.1.100:21/PLAYOUT_CHECK",\r
         "userName": "mediacube",\r
         "password":  "Broadca5T"\r
       }\r
similarity index 73%
rename from client/Maestro/Configuration/configuration-ingest.json
rename to client/Maestro/Configuration/configuration-sxs.json
index 196bf69420d47e3836e9a227f64f2383a15dcaf5..40127a920999b88317ab580ed82462cc92141a67 100644 (file)
@@ -1,5 +1,5 @@
 {\r
-  "title": "Betöltés",\r
+  "title": "SxS",\r
   "active": true,\r
   "startInTray": false,\r
   "enableCustomMetadataId": true,\r
@@ -42,7 +42,7 @@
   ],\r
   "targets": [\r
     {\r
-      "label": "Híranyag betöltés",\r
+      "label": "Hír nyersanyag betöltés",\r
       "processor": "UNCTargetProcessor",\r
       "outputFormat": "%ID%-%SOURCENAME%",\r
       "tag": "Betöltés",\r
       }\r
     },\r
     {\r
-      "label": "Adásanyag betöltés",\r
+      "label": "Magazin nyersanyag betöltés",\r
       "processor": "UNCTargetProcessor",\r
-      "outputFormat": "%ID%",\r
+      "outputFormat": "%ID%-%SOURCENAME%",\r
       "tag": "Betöltés",\r
+      "createSubFolder": true,\r
+      "killDateDays": 7,\r
+      "useMetadata": false,\r
+      "remote": {\r
+        "address": "file://10.10.1.100/BRAAVOS/PLAYOUT_NLE",\r
+        "timeout": 1000\r
+      }\r
+    },\r
+    {\r
+      "label": "Lebonyba küldés",\r
+      "processor": "UNCTargetProcessor",\r
+      "outputFormat": "%ID%",\r
+      "tag": "Lebony",\r
       "killDateDays": 7,\r
       "remote": {\r
-        "address": "file://10.10.1.100/BRAAVOS/PLAYOUT_CHECK1",\r
+        "address": "file://10.10.1.100/BRAAVOS/PLAYOUT_CHECK",\r
         "timeout": 1000\r
       }\r
     },\r
diff --git a/client/Maestro/Connected Services/packages.config b/client/Maestro/Connected Services/packages.config
new file mode 100644 (file)
index 0000000..9d5a51e
--- /dev/null
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="utf-8"?>\r
+<packages>\r
+  <package id="MongoDB.Bson" version="2.4.4" targetFramework="net461" />\r
+  <package id="MongoDB.Driver" version="2.4.4" targetFramework="net461" />\r
+  <package id="MongoDB.Driver.Core" version="2.4.4" targetFramework="net461" />\r
+  <package id="MSTest.TestAdapter" version="1.1.11" targetFramework="net461" />\r
+  <package id="MSTest.TestFramework" version="1.1.11" targetFramework="net461" />\r
+  <package id="Newtonsoft.Json" version="10.0.3" targetFramework="net461" />\r
+  <package id="RestSharp" version="105.2.3" targetFramework="net461" />\r
+  <package id="System.Runtime.InteropServices.RuntimeInformation" version="4.0.0" targetFramework="net461" />\r
+</packages>
\ No newline at end of file
index 89dd49a8520aee892c73b9a49d2d38cf65bf7453..829a37f0b57ec323a8dc3283a9db7faea6b340c2 100644 (file)
     </Compile>\r
     <Compile Include="Commons\DataGridViewProgressColumn.cs" />\r
     <Compile Include="Commons\ObjectExtensions.cs" />\r
+    <Compile Include="Commons\SambaClient.cs" />\r
     <Compile Include="Commons\Win32File.cs" />\r
     <Compile Include="Configuration\ConfigurationInfo.cs" />\r
     <Compile Include="Configuration\KeysJsonConverter.cs" />\r
     <Compile Include="MaestroForm.Source.cs">\r
       <SubType>Form</SubType>\r
     </Compile>\r
-    <None Include="Configuration\configuration-ingest2.json">\r
+    <None Include="Configuration\configuration-editor.json">\r
       <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>\r
     </None>\r
+    <None Include="Configuration\configuration-nle.json">\r
+      <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>\r
+    </None>\r
+    <None Include="Connected Services\packages.config" />\r
     <None Include="Maestro_TemporaryKey.pfx" />\r
     <None Include="nlog.config">\r
       <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>\r
     <None Include="Resources\configuration-unc.json">\r
       <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>\r
     </None>\r
-    <None Include="Configuration\configuration-ingest.json">\r
+    <None Include="Configuration\configuration-sxs.json">\r
       <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>\r
     </None>\r
-    <None Include="Configuration\configuration-control.json">\r
+    <None Include="Configuration\configuration-studio.json">\r
       <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>\r
     </None>\r
   </ItemGroup>\r
index 71c25848661c0a7eb13ebf343b248c4de26cc9ba..8fbc5258aa15c1c8d4d82171c308042e1b2988b1 100644 (file)
@@ -44,7 +44,7 @@ namespace Maestro {
         private void CreateTarget(Target target) {\r
             logger.Debug("Creating target {0}", target);\r
             CheckBox checkBox = new CheckBox() {\r
-                Appearance = Appearance.Button,\r
+                Appearance = Appearance.Normal,\r
                 Text = target.Label,\r
                 UseVisualStyleBackColor = true,\r
                 Dock = DockStyle.Top\r
index ca068c9039cadb2e27156681eb2c6b87a964ee3c..a7c0cc2534ae3983547b40758ab0c2e5bcac88be 100644 (file)
@@ -6,6 +6,7 @@ using System.IO;
 using System.Net;\r
 using System.Windows.Forms;\r
 using Model;\r
+using System.Threading;\r
 \r
 namespace Maestro.Targets {\r
 \r
@@ -43,7 +44,14 @@ namespace Maestro.Targets {
         }\r
 \r
         protected override bool FileExists(string path) {\r
-            return targetFTP.FileExists(path);\r
+            long x = -1;\r
+            try {\r
+                x = targetFTP.GetFileSize(path);\r
+            }\r
+            catch (Exception e) {\r
+                logger.Warn(e.Message);\r
+            }\r
+            return x > -1;\r
         }\r
 \r
         protected override void EnsureDirectoryExistence(string path) {\r
@@ -68,6 +76,7 @@ namespace Maestro.Targets {
 \r
         protected void TerminateClient(FtpClient ftpClient) {\r
             if (ftpClient != null) {\r
+                Thread.Sleep(500);\r
                 ftpClient.Disconnect();\r
                 ftpClient.Dispose();\r
             }\r
index 7d751ab81189e4555dd4bab285d0b160fb8976c9..6dc8c9b2b5a9fb0b9adac4a956d467ec38a72116 100644 (file)
@@ -52,7 +52,7 @@ namespace Maestro.Targets {
                 workingDir = DetermineWorkingDirectory(parameters.TargetConfig.Remote);\r
                 EnsureDirectoryExistence(workingDir);\r
                 OutputName = CreateOutputFileName();\r
-                Output = Path.Combine(workingDir, OutputName);\r
+                Output = "/".Equals(workingDir) ? OutputName : Path.Combine(workingDir, OutputName);\r
                 workFlowAction.source = Input;\r
                 workFlowAction.destination = Output;\r
                 Status = "Folyamatban";\r
@@ -191,14 +191,15 @@ namespace Maestro.Targets {
 \r
         protected virtual string CreateOutputFileName() {\r
             string nameWithoutExtension = parameters.TargetConfig.OutputFormat.Replace("%ID%", ID).Replace("%SOURCENAME%", Path.GetFileNameWithoutExtension(InputName));\r
-\r
             string extension = InputName.Contains(".") ? InputName.Substring(InputName.LastIndexOf(".")) : DEFAULT_EXTENSION;\r
             string result = String.Format(FILENAME, nameWithoutExtension, extension);\r
             int version = 1;\r
-            while (FileExists(Path.Combine(workingDir, result))) {\r
+            string target = "/".Equals(workingDir) ? result : Path.Combine(workingDir, result);\r
+            while (FileExists(target)) {\r
                 string versioned = String.Format(VERSIONED_FILENAME, nameWithoutExtension, version, extension);\r
                 logger.Debug(ALREADY_EXISTS, result, versioned);\r
                 result = versioned;\r
+                target = "/".Equals(workingDir) ? result : Path.Combine(workingDir, result);\r
                 version++;\r
             }\r
             return result;\r