<?xml version="1.0" encoding="UTF-8"?>
<commit>
  <added type="array"/>
  <modified type="array">
    <modified>
      <diff>@@ -16,8 +16,6 @@ Project(&quot;{F184B08F-C81C-45F6-A57F-5ABD9991F28F}&quot;) = &quot;SiphonService&quot;, &quot;SiphonServ
 EndProject
 Project(&quot;{F184B08F-C81C-45F6-A57F-5ABD9991F28F}&quot;) = &quot;SiphonConsole&quot;, &quot;SiphonConsole\SiphonConsole.vbproj&quot;, &quot;{DFD27A39-C804-4589-9DDB-F2C0412B11A0}&quot;
 EndProject
-Project(&quot;{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}&quot;) = &quot;Net&quot;, &quot;..\LumiSoft.Net\Net\Net\Net.csproj&quot;, &quot;{7AB36CCF-5FFD-4780-A54E-A102ECA028B5}&quot;
-EndProject
 Global
 	GlobalSection(SolutionConfigurationPlatforms) = preSolution
 		Debug|Any CPU = Debug|Any CPU
@@ -40,10 +38,6 @@ Global
 		{DFD27A39-C804-4589-9DDB-F2C0412B11A0}.Debug|Any CPU.Build.0 = Debug|Any CPU
 		{DFD27A39-C804-4589-9DDB-F2C0412B11A0}.Release|Any CPU.ActiveCfg = Release|Any CPU
 		{DFD27A39-C804-4589-9DDB-F2C0412B11A0}.Release|Any CPU.Build.0 = Release|Any CPU
-		{7AB36CCF-5FFD-4780-A54E-A102ECA028B5}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
-		{7AB36CCF-5FFD-4780-A54E-A102ECA028B5}.Debug|Any CPU.Build.0 = Debug|Any CPU
-		{7AB36CCF-5FFD-4780-A54E-A102ECA028B5}.Release|Any CPU.ActiveCfg = Release|Any CPU
-		{7AB36CCF-5FFD-4780-A54E-A102ECA028B5}.Release|Any CPU.Build.0 = Release|Any CPU
 	EndGlobalSection
 	GlobalSection(SolutionProperties) = preSolution
 		HideSolutionNode = FALSE</diff>
      <filename>Siphon.sln</filename>
    </modified>
    <modified>
      <diff>@@ -53,6 +53,25 @@ Public Class FtpDirectoryMonitor
     End Sub
 
     ''' &lt;summary&gt;
+    ''' Gets/sets the credentials to use to connect to the ftp server.
+    ''' &lt;/summary&gt;
+    ''' &lt;value&gt;&lt;/value&gt;
+    ''' &lt;returns&gt;NetworkCredential&lt;/returns&gt;
+    ''' &lt;remarks&gt;If no credentials are set in code or in config, the user &quot;anonymous&quot; will be sent.&lt;/remarks&gt;
+    Public Overrides Property Credentials() As System.Net.NetworkCredential
+        Get
+            If MyBase.Credentials Is Nothing Then
+                Me.Credentials = New NetworkCredential(&quot;anonymous&quot;, &quot;anonymous&quot;)
+            End If
+
+            Return MyBase.Credentials
+        End Get
+        Set(ByVal value As System.Net.NetworkCredential)
+            MyBase.Credentials = value
+        End Set
+    End Property
+
+    ''' &lt;summary&gt;
     ''' Create any missing folders during start.
     ''' &lt;/summary&gt;
     ''' &lt;remarks&gt;&lt;/remarks&gt;</diff>
      <filename>Siphon/Monitors/FtpDirectoryMonitor.vb</filename>
    </modified>
    <modified>
      <diff>@@ -40,8 +40,11 @@
   &lt;ItemGroup&gt;
     &lt;Reference Include=&quot;log4net, Version=1.2.10.0, Culture=neutral, PublicKeyToken=1b44e1d426115821, processorArchitecture=MSIL&quot;&gt;
       &lt;SpecificVersion&gt;False&lt;/SpecificVersion&gt;
-      &lt;HintPath&gt;bin\log4net.dll&lt;/HintPath&gt;
-      &lt;Private&gt;True&lt;/Private&gt;
+      &lt;HintPath&gt;..\bin\log4net.dll&lt;/HintPath&gt;
+    &lt;/Reference&gt;
+    &lt;Reference Include=&quot;LumiSoft.Net, Version=2.0.3342.39610, Culture=neutral, PublicKeyToken=0576062738dd7ad9, processorArchitecture=MSIL&quot;&gt;
+      &lt;SpecificVersion&gt;False&lt;/SpecificVersion&gt;
+      &lt;HintPath&gt;..\bin\LumiSoft.Net.dll&lt;/HintPath&gt;
     &lt;/Reference&gt;
     &lt;Reference Include=&quot;System&quot; /&gt;
     &lt;Reference Include=&quot;System.configuration&quot; /&gt;
@@ -135,12 +138,6 @@
       &lt;LastGenOutput&gt;Settings.Designer.vb&lt;/LastGenOutput&gt;
     &lt;/None&gt;
   &lt;/ItemGroup&gt;
-  &lt;ItemGroup&gt;
-    &lt;ProjectReference Include=&quot;..\..\LumiSoft.Net\Net\Net\Net.csproj&quot;&gt;
-      &lt;Project&gt;{7AB36CCF-5FFD-4780-A54E-A102ECA028B5}&lt;/Project&gt;
-      &lt;Name&gt;Net&lt;/Name&gt;
-    &lt;/ProjectReference&gt;
-  &lt;/ItemGroup&gt;
   &lt;Import Project=&quot;$(MSBuildToolsPath)\Microsoft.VisualBasic.targets&quot; /&gt;
   &lt;!-- To modify your build process, add your task inside one of the targets below and uncomment it. 
        Other similar extension points exist, see Microsoft.Common.targets.</diff>
      <filename>Siphon/Siphon.vbproj</filename>
    </modified>
    <modified>
      <diff>@@ -41,8 +41,7 @@
   &lt;ItemGroup&gt;
     &lt;Reference Include=&quot;log4net, Version=1.2.10.0, Culture=neutral, PublicKeyToken=1b44e1d426115821, processorArchitecture=MSIL&quot;&gt;
       &lt;SpecificVersion&gt;False&lt;/SpecificVersion&gt;
-      &lt;HintPath&gt;bin\log4net.dll&lt;/HintPath&gt;
-      &lt;Private&gt;True&lt;/Private&gt;
+      &lt;HintPath&gt;..\bin\log4net.dll&lt;/HintPath&gt;
     &lt;/Reference&gt;
     &lt;Reference Include=&quot;System&quot; /&gt;
     &lt;Reference Include=&quot;System.configuration&quot; /&gt;</diff>
      <filename>SiphonConsole/SiphonConsole.vbproj</filename>
    </modified>
    <modified>
      <diff>@@ -57,8 +57,7 @@
   &lt;ItemGroup&gt;
     &lt;Reference Include=&quot;log4net, Version=1.2.10.0, Culture=neutral, PublicKeyToken=1b44e1d426115821, processorArchitecture=MSIL&quot;&gt;
       &lt;SpecificVersion&gt;False&lt;/SpecificVersion&gt;
-      &lt;HintPath&gt;bin\log4net.dll&lt;/HintPath&gt;
-      &lt;Private&gt;True&lt;/Private&gt;
+      &lt;HintPath&gt;..\bin\log4net.dll&lt;/HintPath&gt;
     &lt;/Reference&gt;
     &lt;Reference Include=&quot;System&quot; /&gt;
     &lt;Reference Include=&quot;System.configuration&quot; /&gt;</diff>
      <filename>SiphonService/SiphonService.vbproj</filename>
    </modified>
    <modified>
      <diff></diff>
      <filename>SiphonTests/Database/SiphonTests.sdf</filename>
    </modified>
    <modified>
      <diff>@@ -23,6 +23,32 @@ Imports ChrisLaco.Siphon
         Dim monitor As New FtpDirectoryMonitor(String.Empty, &quot;C:\temp&quot;, New IntervalSchedule, New MockProcessor)
     End Sub
 
+    &lt;Test(Description:=&quot;Test anonymous user&quot;)&gt; _
+    Public Sub AnonymousUser()
+        CreateSuccessFile()
+
+        Using schedule = New DailySchedule(DateTime.Now.AddSeconds(2).TimeOfDay)
+            Using processor = New MockProcessor
+                Using monitor As FtpDirectoryMonitor = New FtpDirectoryMonitor(&quot;FtpMonitor&quot;, Uri.AbsoluteUri, schedule, processor)
+                    AddHandler monitor.ProcessComplete, AddressOf Monitor_ProcessComplete
+                    AddHandler monitor.ProcessFailure, AddressOf Monitor_ProcessFailure
+
+                    Assert.AreEqual(&quot;anonymous&quot;, monitor.Credentials.UserName)
+                    Assert.AreEqual(&quot;anonymous&quot;, monitor.Credentials.Password)
+
+                    monitor.Filter = String.Empty
+                    monitor.Start()
+                    Threading.Thread.Sleep(5000)
+                    monitor.Stop()
+
+                    Assert.AreEqual(1, processor.Count, &quot;Has processed 1 file&quot;)
+                    Assert.IsTrue(Me.ProcessComplete)
+                    Assert.IsFalse(Me.ProcessFailure)
+                End Using
+            End Using
+        End Using
+    End Sub
+
     &lt;Test(Description:=&quot;Test successful directory monitor&quot;)&gt; _
     Public Sub DirectoryMonitor()
         CreateSuccessFile()
@@ -384,26 +410,37 @@ Imports ChrisLaco.Siphon
         Dim newdir As String = Path.GetRandomFileName
         Dim tempdir As String = Path.Combine(TestDirectory.FullName, newdir)
 
-        Using schedule = New DailySchedule(DateTime.Now.AddSeconds(1).TimeOfDay)
+        Using schedule = New DailySchedule(DateTime.Now.AddSeconds(6).TimeOfDay)
             Using processor = New MockProcessor
-                Using monitor As FtpDirectoryMonitor = New FtpDirectoryMonitor(&quot;FtpMonitor&quot;, Path.Combine(Path.Combine(Uri.AbsoluteUri, TestDirectory.Name), newdir), schedule, processor)
+                Using monitor As FtpDirectoryMonitor = New FtpDirectoryMonitor(&quot;FtpMonitor&quot;, Path.Combine(Uri.AbsoluteUri, newdir), schedule, processor)
                     AddHandler monitor.ProcessComplete, AddressOf Monitor_ProcessComplete
                     AddHandler monitor.ProcessFailure, AddressOf Monitor_ProcessFailure
 
                     monitor.CreateMissingFolders = True
                     monitor.CompletePath = &quot;../Processed&quot;
                     monitor.FailurePath = &quot;../Failed&quot;
+                    monitor.ProcessFailureActions = DataActions.Move
+                    monitor.Credentials = Me.Credentials
 
                     monitor.Start()
+                    CreateFailureFile(tempdir &amp; &quot;\FAILURE&quot;)
+                    Threading.Thread.Sleep(10000)
                     monitor.Stop()
 
+                    Assert.AreEqual(1, processor.Count, &quot;Has processed 1 file&quot;)
+                    Assert.IsFalse(Me.ProcessComplete)
+                    Assert.IsTrue(Me.ProcessFailure)
+
                     Dim temp As New DirectoryInfo(tempdir)
                     Assert.IsTrue(Directory.Exists(tempdir), &quot;Monitor path exista&quot;)
                     Assert.IsTrue(Directory.Exists(Path.Combine(temp.Parent.FullName, &quot;Processed&quot;)), &quot;Processed child path exists&quot;)
                     Assert.IsTrue(Directory.Exists(Path.Combine(temp.Parent.FullName, &quot;Failed&quot;)), &quot;Failed child path exists&quot;)
                     Assert.IsTrue(Directory.Exists(tempdir), &quot;Monitor path exista&quot;)
-                    Assert.IsFalse(Me.ProcessComplete)
-                    Assert.IsFalse(Me.ProcessFailure)
+
+                    Assert.IsFalse(File.Exists(Path.Combine(tempdir, &quot;FAILURE&quot;)))
+                    Assert.IsTrue(File.Exists(Path.Combine(Path.Combine(tempdir, &quot;..\Failed&quot;), &quot;FAILURE&quot;)))
+                    Assert.AreEqual(0, Directory.GetFiles(tempdir).Length)
+                    Assert.AreEqual(1, Directory.GetFiles(Path.Combine(tempdir, &quot;..\Failed&quot;)).Length)
                 End Using
             End Using
         End Using
@@ -416,13 +453,14 @@ Imports ChrisLaco.Siphon
 
         Using schedule = New DailySchedule(DateTime.Now.AddSeconds(2).TimeOfDay)
             Using processor = New MockProcessor
-                Using monitor As FtpDirectoryMonitor = New FtpDirectoryMonitor(&quot;FtpMonitor&quot;, Path.Combine(Uri.AbsoluteUri, TestDirectory.Name), schedule, processor)
+                Using monitor As FtpDirectoryMonitor = New FtpDirectoryMonitor(&quot;FtpMonitor&quot;, Uri.AbsoluteUri, schedule, processor)
                     AddHandler monitor.ProcessComplete, AddressOf Monitor_ProcessComplete
                     AddHandler monitor.ProcessFailure, AddressOf Monitor_ProcessFailure
                     monitor.Filter = &quot;*.csv&quot;
+                    monitor.Credentials = Me.Credentials
 
                     monitor.Start()
-                    Threading.Thread.Sleep(3000)
+                    Threading.Thread.Sleep(5000)
                     monitor.Stop()
 
                     Assert.AreEqual(1, processor.Count, &quot;Has processed 1 files&quot;)
@@ -437,14 +475,15 @@ Imports ChrisLaco.Siphon
     Public Sub DirectoryMonitorStillProcessing()
         CreateSuccessFile()
 
-        Using schedule = New IntervalSchedule(2)
+        Using schedule = New DailySchedule(DateTime.Now.AddSeconds(2).TimeOfDay)
             Using processor = New MockProcessor
-                Using monitor As FtpDirectoryMonitor = New FtpDirectoryMonitor(&quot;FtpMonitor&quot;, Path.Combine(Uri.AbsoluteUri, TestDirectory.Name), schedule, processor)
+                Using monitor As FtpDirectoryMonitor = New FtpDirectoryMonitor(&quot;FtpMonitor&quot;, Uri.AbsoluteUri, schedule, processor)
                     AddHandler monitor.ProcessComplete, AddressOf Monitor_ProcessComplete
                     AddHandler monitor.ProcessFailure, AddressOf Monitor_ProcessFailure
+                    monitor.Credentials = Me.Credentials
                     processor.Delay = 10
                     monitor.Start()
-                    Threading.Thread.Sleep(3000)
+                    Threading.Thread.Sleep(5000)
 
                     Assert.IsTrue(monitor.Processing, &quot;Processing is true when a worker processor is still running&quot;)
                     Dim pre As DateTime = DateTime.Now
@@ -643,15 +682,16 @@ Imports ChrisLaco.Siphon
 
         Using schedule = New DailySchedule(DateTime.Now.AddSeconds(2).TimeOfDay)
             Using processor = New MockProcessor
-                Using monitor As FtpDirectoryMonitor = New FtpDirectoryMonitor(&quot;FtpMonitor&quot;, Path.Combine(Uri.AbsoluteUri, TestDirectory.Name), schedule, processor)
+                Using monitor As FtpDirectoryMonitor = New FtpDirectoryMonitor(&quot;FtpMonitor&quot;, Uri.AbsoluteUri, schedule, processor)
                     AddHandler monitor.ProcessComplete, AddressOf Monitor_ProcessComplete
                     AddHandler monitor.ProcessFailure, AddressOf Monitor_ProcessFailure
 
                     monitor.DownloadPath = Path.Combine(TestDirectory.FullName, &quot;Downloads&quot;)
+                    monitor.Credentials = Me.Credentials
                     monitor.CreateMissingFolders = True
                     monitor.Filter = String.Empty
                     monitor.Start()
-                    Threading.Thread.Sleep(3000)
+                    Threading.Thread.Sleep(5000)
                     monitor.Stop()
 
                     Assert.AreEqual(1, processor.Count, &quot;Has processed 1 file&quot;)
@@ -669,15 +709,16 @@ Imports ChrisLaco.Siphon
 
         Using schedule = New DailySchedule(DateTime.Now.AddSeconds(2).TimeOfDay)
             Using processor = New MockProcessor
-                Using monitor As FtpDirectoryMonitor = New FtpDirectoryMonitor(&quot;FtpMonitor&quot;, Path.Combine(Uri.AbsoluteUri, TestDirectory.Name), schedule, processor)
+                Using monitor As FtpDirectoryMonitor = New FtpDirectoryMonitor(&quot;FtpMonitor&quot;, Uri.AbsoluteUri, schedule, processor)
                     AddHandler monitor.ProcessComplete, AddressOf Monitor_ProcessComplete
                     AddHandler monitor.ProcessFailure, AddressOf Monitor_ProcessFailure
 
                     monitor.DownloadPath = New Uri(Path.Combine(TestDirectory.FullName, &quot;Downloads&quot;)).AbsoluteUri
                     monitor.CreateMissingFolders = True
+                    monitor.Credentials = Me.Credentials
                     monitor.Filter = String.Empty
                     monitor.Start()
-                    Threading.Thread.Sleep(3000)
+                    Threading.Thread.Sleep(5000)
                     monitor.Stop()
 
                     Assert.AreEqual(1, processor.Count, &quot;Has processed 1 file&quot;)
@@ -704,6 +745,7 @@ Imports ChrisLaco.Siphon
         monitorElement.Settings.Add(New NameValueConfigurationElement(&quot;Username&quot;, &quot;FtpUser&quot;))
         monitorElement.Settings.Add(New NameValueConfigurationElement(&quot;Password&quot;, &quot;FtpPass&quot;))
         monitorElement.Settings.Add(New NameValueConfigurationElement(&quot;Domain&quot;, &quot;FtpDomain&quot;))
+        monitorElement.Settings.Add(New NameValueConfigurationElement(&quot;Passive&quot;, &quot;False&quot;))
 
         Using monitor As FtpDirectoryMonitor = monitorElement.CreateInstance
             Assert.IsInstanceOfType(GetType(FtpDirectoryMonitor), monitor)
@@ -718,6 +760,7 @@ Imports ChrisLaco.Siphon
             Assert.AreEqual(&quot;FtpPass&quot;, monitor.Credentials.Password)
             Assert.AreEqual(&quot;FtpDomain&quot;, monitor.Credentials.Domain)
             Assert.IsTrue(monitor.CreateMissingFolders)
+            Assert.IsFalse(monitor.Passive)
         End Using
     End Sub
 </diff>
      <filename>SiphonTests/Monitors/FtpDirectoryMonitorTests.vb</filename>
    </modified>
    <modified>
      <diff>@@ -53,8 +53,11 @@
   &lt;ItemGroup&gt;
     &lt;Reference Include=&quot;log4net, Version=1.2.10.0, Culture=neutral, PublicKeyToken=1b44e1d426115821, processorArchitecture=MSIL&quot;&gt;
       &lt;SpecificVersion&gt;False&lt;/SpecificVersion&gt;
-      &lt;HintPath&gt;bin\log4net.dll&lt;/HintPath&gt;
-      &lt;Private&gt;True&lt;/Private&gt;
+      &lt;HintPath&gt;..\bin\log4net.dll&lt;/HintPath&gt;
+    &lt;/Reference&gt;
+    &lt;Reference Include=&quot;LumiSoft.Net, Version=2.0.3342.39610, Culture=neutral, PublicKeyToken=0576062738dd7ad9, processorArchitecture=MSIL&quot;&gt;
+      &lt;SpecificVersion&gt;False&lt;/SpecificVersion&gt;
+      &lt;HintPath&gt;..\bin\LumiSoft.Net.dll&lt;/HintPath&gt;
     &lt;/Reference&gt;
     &lt;Reference Include=&quot;nunit.framework, Version=2.4.7.0, Culture=neutral, PublicKeyToken=96d09a1eb7f44a77&quot;&gt;
       &lt;SpecificVersion&gt;False&lt;/SpecificVersion&gt;
@@ -142,10 +145,6 @@
     &lt;/None&gt;
   &lt;/ItemGroup&gt;
   &lt;ItemGroup&gt;
-    &lt;ProjectReference Include=&quot;..\..\LumiSoft.Net\Net\Net\Net.csproj&quot;&gt;
-      &lt;Project&gt;{7AB36CCF-5FFD-4780-A54E-A102ECA028B5}&lt;/Project&gt;
-      &lt;Name&gt;Net&lt;/Name&gt;
-    &lt;/ProjectReference&gt;
     &lt;ProjectReference Include=&quot;..\SiphonConsole\SiphonConsole.vbproj&quot;&gt;
       &lt;Project&gt;{DFD27A39-C804-4589-9DDB-F2C0412B11A0}&lt;/Project&gt;
       &lt;Name&gt;SiphonConsole&lt;/Name&gt;</diff>
      <filename>SiphonTests/SiphonTests.vbproj</filename>
    </modified>
    <modified>
      <diff>@@ -1,5 +1,4 @@
 - Add Monitor.IsRunning to fix double stop/dispose
 - Rename Monitor.Processing to IsProcessing to match IsRunning?
 - FTP Move to different server should delete source, upload to remote
-- Add code to pull user/pass from uri into Credential
-- Add active/passive mode config for FTP Monitor
\ No newline at end of file
+- Refactor remote monitors to use less connections per scan/download/process/move/delete
\ No newline at end of file</diff>
      <filename>TODO</filename>
    </modified>
  </modified>
  <removed type="array"/>
  <parents type="array">
    <parent>
      <id>571fbe9eac6af5d3b00b0682be10edabb7d2fb04</id>
    </parent>
  </parents>
  <author>
    <name>Christopher H. Laco</name>
    <email>claco@chrislaco.com</email>
  </author>
  <url>http://github.com/claco/siphon/commit/b8090642a4342155bdf6ba8ac1a2ccf80c157042</url>
  <id>b8090642a4342155bdf6ba8ac1a2ccf80c157042</id>
  <committed-date>2009-02-26T20:23:52-08:00</committed-date>
  <authored-date>2009-02-26T20:23:52-08:00</authored-date>
  <message>Finished reworking FTP Monitor tests</message>
  <tree>2887447767b25f3421cd08b18af336b4a7d8553e</tree>
  <committer>
    <name>Christopher H. Laco</name>
    <email>claco@chrislaco.com</email>
  </committer>
</commit>
