import java.net.*;

import java.io.*;

import java.util.Date;

 

class serverFTP

{

  private static String LogFile="Azioni.log";

  private static String workDir="c:\\Ftpdir";

   

public static void main(String args[])

{

  //Socket del server FTP

  ServerSocket socket;

   

  //porta utilizzata dal protocollo FTP per la comunicazione dei comandi

  final int portaFTP_PI=21;

   

  //Scrittore del file di log

  FileWriter scrittoreLog;

  Date data=new Date();

 

  //File che gestisce la directory di lavoro

  File workingPath;

  String lista_file[]=new String[60];

  String temp_lista[]=new String[60];

 

  //Test sugli argomenti: bisogna passare il nome del coordinatore

  if(args.length!=1)

  {

    System.out.println("Uso: severFTP <coordinatore>");

    System.exit(1);

  }

   

  //Test sulla esistenza della directory

  workingPath=new File(workDir);

  if(!workingPath.exists())

  {

    System.err.println("Directory "+workDir+" inesistente");

    System.exit(1);

  }

  temp_lista=workingPath.list();

  for(int i=0;i<temp_lista.length;i++)

  {

    if(temp_lista[i]==null)break;

    lista_file[i]=temp_lista[i];

  }

  registramiFTP register=new registramiFTP(args[0],lista_file);

  register.start();

 

  try

  {

    socket=new ServerSocket(portaFTP_PI);

    System.out.println("Server in ascolto sulla porta "+socket.getLocalPort());

    System.out.println(data.toString());

    scrittoreLog=new FileWriter(LogFile,true);

    scrittoreLog.write("\r\nServer attivato alle "+data.toString()+"\r\n");

    scrittoreLog.write("In ascolto per eventuali richieste\r\n");

    scrittoreLog.flush();

    scrittoreLog.close();

    try

    {

      while(true)

      {

       //processo che gestisce le connessioni

       new Thread(new serverRichiesteFTP(socket.accept(),register.serverReg,args[0])).start();

      }

    }

    catch(Exception e)

    {

      System.out.println("Connessione non accettata!");

      System.err.println(e);

    }//CATCH 2

  }

  catch(Exception e)

  {

    System.out.println("Errore durante l\' avvio del server FTP");

    System.err.println(e);

   System.exit(1);

  }//CATCH 1

 

}//MAIN

 

 

}//class serverFTP