-<?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
\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
<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
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
<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
--- /dev/null
+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
--- /dev/null
+{\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
{\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
{\r
- "title": "Ellenőrzés",\r
+ "title": "Adáslebony",\r
"active": true,\r
"startInTray": false,\r
"enableCustomMetadataId": true,\r
"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
{\r
- "title": "Lebonyolítás",\r
+ "title": "Stúdió",\r
"active": true,\r
"startInTray": false,\r
"enableCustomMetadataId": true,\r
"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
{\r
- "title": "Betöltés",\r
+ "title": "SxS",\r
"active": true,\r
"startInTray": false,\r
"enableCustomMetadataId": true,\r
],\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
--- /dev/null
+<?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
</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
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
using System.Net;\r
using System.Windows.Forms;\r
using Model;\r
+using System.Threading;\r
\r
namespace Maestro.Targets {\r
\r
}\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
\r
protected void TerminateClient(FtpClient ftpClient) {\r
if (ftpClient != null) {\r
+ Thread.Sleep(500);\r
ftpClient.Disconnect();\r
ftpClient.Dispose();\r
}\r
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
\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