bulk provisioning via ftp and SOAP #5202
[freeside.git] / FS / bin / freeside-selfservice-server
index 2087e71..544f307 100644 (file)
@@ -15,9 +15,11 @@ use FS::Daemon qw(daemonize1 drop_root logfile daemonize2 sigint sigterm);
 use FS::UID qw(adminsuidsetup forksuidsetup);
 use FS::ClientAPI;
 use FS::ClientAPI_SessionCache;
+use FS::Record qw( qsearch qsearchs );
 
 use FS::Conf;
 use FS::cust_svc;
+use FS::agent;
 
 $FREESIDE_LOG = "%%%FREESIDE_LOG%%%";
 $FREESIDE_LOCK = "%%%FREESIDE_LOCK%%%";
@@ -97,7 +99,28 @@ while (1) {
       if ( $keepalives && $keepalive_count++ > 10 ) {
         $keepalive_count = 0;
         lock_write;
+
         nstore_fd( { _token => '_keepalive' }, $writer );
+        foreach my $agent ( qsearch( 'agent', { disabled => '' } ) ) {
+          my $config = qsearchs( 'conf', { name  => 'selfservice-bulk_ftp_dir',
+                                           agentnum => $agent->agentnum,
+                               } )
+            or next;
+
+          my $session =
+            FS::ClientAPI->dispatch( 'Agent/agent_login',
+                                     { username => $agent->username,
+                                       password => $agent->_password,
+                                     }
+            );
+
+          nstore_fd( { _token     => '_ftp_scan',
+                       dir        => $config->value,
+                       session_id => $session->{session_id},
+                     },
+                     $writer
+          );
+        }
         unlock_write;
       }
       next;