FTP File Server

Howdy. I do produce video and audio for people. I am doing a project now where the clients dont even live in the same town or state. I would like to have a Mac Mini set up in the future where i can put the file on the hard drive and then send a link in an email to the client and then have a link or instructions on there to tell them how to get to the file they are supposed to get. That way i can send multi gig files to them and they can down load them on their own time and i dont have to waste discs and postage mailing things over night. I would need something where they can not acess any of the other files for other clients on there only the ones for them. Does anybody know of such a software or how to do it. I am needing something similar to a Digidelivery server made by Digidesign. http://www.digidesign.com/index.cfm?navid=38&langid=100& Thanks for the help.

You might take a look at GroupLogic's MassTransit. Without spending a lot of time comparing features and workflows, it looks like the closest thing on a Mac to the Digidelivery server. If that's overkill, something like Haxial's KDX might work for you.
For additional suggestions, you might try asking in the Mac OS X 10.4 area, since this really isn't hardware related per se, so you don't want to limit just to Mac mini users.
Regards.

Similar Messages

  • MDM FTP File Server - SFTP?

    Looking into what it takes to install and setup MDM.  The Master Guide lists a file server as a required component and states to look at the Configuration guide for details.  The Configuration guide talks about the FTP protocol and other guides mention it as the FTP File Server.
    Can SFTP be implemented instead of FTP?  If not are there options instead of FTP.   FTP is not permitted for internal data movements in my environment.  I saw in the XI forum that XI with the right SP can handle SFTP with a java proxy.
    Thanks

    Hello:
    That FTP Server was just a way to give MDM the files for import, and take the files as export.
    You can use anything you want. The file server could be the MDM server itself. You just have to manage how to give MDM something to import, and what to do with the file that MDM will syndicate
    I hope this helps
    Alejandro

  • How set FTP file server set in my Data carriar   in DMS

    hi
    please say me how i set my FTP file server in in my Data carriar   Of  DMS
    please say me
    Nainesh

    Hi Andreas,
    It depends on your needs. If you want to provide redundancy to your FTP services, it is recommended to group two VMs in an Availability Set to ensures that during either a planned or unplanned maintenance event, at least one VM will be
    available and meet the 99.95% Azure SLA.
    http://azure.microsoft.com/en-us/documentation/articles/virtual-machines-manage-availability/#configure-each-application-tier-into-separate-availability-sets
    If you want to set up two files servers in Azure VMs to an availability set, you can follow the steps below:
    1. Create a virtual network:
    http://azure.microsoft.com/en-us/documentation/articles/create-virtual-network/
    2. Create a VM in a new cloud service and choose teh virtual network you have created:
    http://azure.microsoft.com/en-us/documentation/articles/virtual-machines-windows-tutorial/
    3. After the VM is running, you can create an availability set on the VM in the Configure page of the VM in the managemeng portal.
    4. Create a new VM into the same cloud service and add it to the availability set.
    Best regards,
    Susie
    Please remember to mark the replies as answers if they help and unmark them if they provide no help. If you have feedback for TechNet Subscriber Support, contact [email protected]

  • Firefox does not show filesystem or FTP file list

    When I type "/"  or "file:///" in the address bar it does not show anything. It should list my the folders in my root drive but it shows nothing. Strangely this is the same for any FTP file server I go to. It shows nothing but claims to be loaded. I think something in Firefox is missing.

    I cleared the cookies and that might have done it. Comment if you have or had this problem.

  • Problem in Archiving File From FTP Server to XI File Server Using FCC

    Hi,
    The scenario is file to IDOc. XI has to read the input file from client FTP server and archive it to XI local file server. Archiving on XI server is working fine without FCC (for xml files). But with FCC, the sender FTP adapter is archiving empty files (0 kb files).
    I've checked SXMB_MONI, even there I can see the file data and the IDoc is getting posted with proper data. But, the archived file is empty. Not sure about the problem.
    Please suggest. Thanks in advance.
    Regards,
    Joe.

    Hi,
    File adapter has the functionality which support the empty file handling.
    Handling of Empty Files
    Specify how empty files (length 0 bytes) are to be handled.
    ○ Do Not Create Message
    No XI messages are created from empty files.
    The files are processed according to the selected Processing Mode.
    For example, if the processing mode is Delete, empty files are deleted in the source directory.
    ○ Process Empty Files
    XI messages are created with an empty main payload.
    The files are processed according to the selected Processing Mode.
    ○ Skip Empty Files
    No XI messages are created from empty files.
    Empty files are skipped and remain in the source directory.
    refer the belwo link:
    http://help.sap.com/saphelp_nw04/helpdata/en/ae/d03341771b4c0de10000000a1550b0/frameset.htm
    reward points if helpful*
    thanks
    SAPXI

  • Sending XML file from SAP to Windows Based file server with FTP function

    Hi Gurus,
    We are using SAP BW 3.0B version.
    I need to convert data in ODS to XML format and send this XML file to remote server which  is not a SAP application server, it is just a Window Based file server with FTP function..
    By writing some ABAP code I have converted ODS data into XML format (which gets saved in my local system)
    (Is that I need to put this file in Application Server to send it to the other servers? )
    Now the thing is how I can send this file to that Windows Based file server.
    plz suggest me.... what can be done......
    Thanks in Advance
    Madhusudhan
    Edited by: Madhusudhan Raju on Dec 3, 2009 4:25 AM

    I dont think the above code support windows OS. Because I always execute this script via UNIX.
    I think you can try this option, go to command prompt, goto the destination path where you have an XML file using cd....
    ftp (destination servername), specify the username and password.
    afterthat, use the command put and filename.
    check whether the file had reached destination successfully or not.
    For automation purpose, you can use the following script like
    ftp: -s: test.txt  (servername)
    In test.txt,
    UserName
    Password
    bin
    cd /files
    put file.xml
    bye
    Also, you can check in SM69, there will be some SAP external commands to automate the file transfer.
    Thanks
    Sat
    http://support.microsoft.com/?kbid=96269

  • FTP to file server - file not reached to file server but in XI success

    Hi
    Scenario is
    XI is picking file from SAP and sending to a file server. In XI ,communication channel and sxi_moni shows message transferred successfully.
    But the file server guys din't receive any file. Can any one tell where the message can be lost. If file is not reaching destination then how come in XI its showing SUCCESSFUL message.
    Regards

    Hi,
    Your communication channel is not able to connect with the FTP sever.
    Check in RWB the communication channel log also user id, password mentioned in communication channel.
    Check whether that user has authorization to create file on FTP sever.

  • NW ftp 550 File Server unavailable

    FTP service running on one NW 6.5 sp8 server (//server6) in the tree.
    I have rights to all servers in the tree.
    All file servers are Netware 6.5 sp8
    My home directory and default ftp directory is //server1/data/home/me.
    Within an ftp session I can
    cd //server2/data/dept
    but when I try
    cd //server3/data/dept
    I get the message "550 File Server unavailable".
    I have a department whose home directories and department share are on //server3 and I need to enable ftp to those areas. The only difference I can think of between Server 2 and Server3 is that server3 also runs AFP - does that get in the way of Netware ftp?
    How do I troubleshoot the ftp connection to Server3?
    TIA
    Anthony

    Thank you, Andrew, for the continued interest.
    I have downloaded and applied the newer nwftpd.nlm, unfortunately it hasn't resolved the problem.
    I aslo found TID 10060796 Error: "550 File Server Unavailable" after FTP cd to another server which suggests slp problems. The test suggested does show the problem server in the available novell.bindery services from the server runing nwftpd. Any clues what or how to troublshoot if ths is an SLP problem aslo appreciated.
    ftpserv.cfg follows
    Anthony
    #FTPSERVER Configuration File
    #Format: A comment line starts with #
    #Each Configuration Parameter is in a single line of form
    #parameter=value.
    #List of Configuration Parameters with their Values:
    #IP address of the host on which FTP Server is being loaded. If parameter
    # not specified, it binds to the local host
    HOST_IP_ADDR = 163.160.107.2
    #The public IP address to be exposed in a passive reply to FTP clients. This
    #address need not to be bound to the NetWare server. It usually binds
    #to a NAT device which routes between a private FTP server and a public FTP client.
    #If remarked out or set to 0.0.0.0, FTP server uses the HOST_IP_ADDR
    FORCE_PASSIVE_ADDR = 0.0.0.0
    #Port Number to which FTP Server should bind and listen for connection requests.
    #Port Number Range = 1-65535
    #If not within the specified range, it binds to the default port 21
    FTP_PORT = 21
    #Maximun number of ftp sessions. Default value is 30
    MAX_FTP_SESSIONS = 30
    #Time duration in seconds for which the session can remain idle. Default value
    #is 600
    IDLE_SESSION_TIMEOUT = 600
    #Default of NO allows both secure and insecure connections. YES
    #requires clients to use secure Control connections (for usernames,
    #passwords, commands) but allows Data connections to be insecure
    #(directory list output, file transfers). STRICT requires both Control
    #and Data connections be secure.
    SECURE_CONNECTIONS_ONLY = No
    #FTP Servers Default NameSpace. Default value is LONG
    DEFAULT_NAMESPACE = LONG
    #Data buffer size specifies the size in kilobytes for transfer buffer.
    #This parameter value can be set based on availability of system memory.
    #The default value is 64 kilobytes. The range allowed is 4 kilobytes
    #to 1020 kilobytes.
    DATA_BUFF_SIZE = 64
    #Keep Alive timeout (in minutes) closes connections which may be broken on one
    #side. This can be varied depending on the usage of the FTP Service. Typically
    #10 minutes is sufficient, but in cases with frequently broken connections (as
    #is common with dial-up connections), the timeout can be decreased to clear
    #broken connections faster. Some FTP clients may process keep alive packets
    #incorrectly, in which case the timeout can be increased or disabled to allow
    #longer sessions without a keep alive check. The range allowed is 5 minutes to
    #120 minutes. Any value less than 0 min will be taken as 0 (zero) which means
    #no keep alive check will be done. Any value between 1 and 4 min (both
    #inclusive) or greater than 120 min will be taken as 120 min. Default value
    #is 10
    KEEPALIVE_TIME = 10
    #Path of welcome banner file. Default value is sys:/etc/welcome.txt
    WELCOME_BANNER = sys:/etc/welcome.txt
    #Message File Name. Default value is message.txt
    MESSAGE_FILE = message.txt
    #Minimum Port Number for Passive Connection. Default value is 1
    PASSIVE_PORT_MIN = 1
    #Maximum Port Number for Passive Connection. Default value is 65534
    PASSIVE_PORT_MAX = 65534
    #Pseudo-Server flag parameter specifies how the Netware FTP server should
    #simulate Unix FTP server behavior. It can take decimal values from 0-3
    #(both inclusive). This value is converted to binary format and each bit
    #is assigned a behavior. The LSB (least significant bit) denotes the
    #format that the permissions should be sent to the FTP client during a
    #directory listing. If it is set to 1, Unix-like format is sent. By
    #default the permissions are sent in NetWare trustee rights format. The
    #previous bit to LSB denotes the reply string that is sent for 'SYST'
    #command. If it is set to 1, the string will be 'UNIX Type: L8'. By
    #default it is 'NETWARE Type: L8'. Default Value is 0.
    PSEUDO_SERVER_FLAG = 3
    #File Permissions parameter specifies the Pseudo permissions displayed for
    #files in the FTP client. This does not impact the actual trustee rights
    #available for the files in any way. This parameter is taken into
    #consideration only when the PSEUDO_SERVER_FLAG parameter's LSB is set to
    #1. (i.e. when it's decimal value is 1 or 3). Otherwise this is ignored.
    #The value must be a three digit octal value.
    #Maximum value is 777. Default value is 644.
    PSEUDO_FILE_PERMISSIONS = 644
    #Directory Permissions parameter specifies the Pseudo permissions displayed
    #for directories in the FTP client. This does not impact the actual trustee
    #rights available for the files in any way. This parameter is taken into
    #consideration only when the PSEUDO_SERVER_FLAG parameter's LSB is set to
    #1. (i.e. when it's decimal value is 1 or 3). Otherwise this is ignored.
    #The value must be a three digit octal value.
    #Maximum value is 777. Default value is 755.
    PSEUDO_DIR_PERMISSIONS = 755
    #Server where the default home of users is present. If not specified
    #it stays on the local server. Specify the server name only
    DEFAULT_USER_HOME_SERVER = LTHSMTP
    #Default home directory of the user. Default value is sys:/public
    DEFAULT_USER_HOME = sys:/public
    #Specifies whether to ignore home directory if it is on remote server
    #and stay on the local server. Default value is NO
    IGNORE_REMOTE_HOME = No
    #Specifies whether to ignore home directory and stay on default directory.
    #Default value is NO
    IGNORE_HOME_DIR = No
    #Default FTP Context specifies the default context in which the users
    #will be searched. Specify this as fully distinguished name (FDN).
    #If you do not set the default FTP context, the bindery context of the server,
    #if available, is set as default FTP context, otherwise the context of the
    #server object is used.
    DEFAULT_FTP_CONTEXT = .OU=ResultsFTP.O=ULTH
    #Search list has a list of full DN names of containers separated by
    #commas, from where the search should start for users. Maximum number of
    #containers allowed is 30. The value should not exceed 2048 bytes. If you
    #do not set any search containers, search will start from the server's
    #default context. To enable searching the user in the subtree under a search
    #container, append ':s' to the search container.
    SEARCH_LIST = .OU=ResultsFTP.O=ULTH,.OU=Medical Illustration.OU=Corporate.O=Leedsth
    #Path of FTP user restrictions file. Default value is sys:/etc/ftprest.txt
    RESTRICT_FILE = sys:/etc/ftprest.txt
    #To Allow or Deny Access to Anonymous Users. Default value is NO
    ANONYMOUS_ACCESS = No
    #Home Directory for Anonymous users. Specify complete path including the
    #volume name <vol:[/dir/...]>. Default value is sys:/public
    ANONYMOUS_HOME = sys:/public
    #Get email address as password for anonymous user access.
    #Default value is YES
    ANONYMOUS_PASSWORD_REQUIRED = No
    #If Intruder checking not required set INTRUDER_USER_ATTEMPTS
    #& INTRUDER_HOST_ATTEMPTS = 0
    #Number of invalid login attempts for intruder host detection.
    #Default value is 20
    INTRUDER_HOST_ATTEMPTS = 20
    #Time interval in Minutes during which the intruder host is not allowed to
    #login. Default value is 5
    HOST_RESET_TIME = 5
    #Number of invalid login attempts for intruder user detection.
    #Default value is 5
    INTRUDER_USER_ATTEMPTS = 5
    #Time interval in Minutes during which the intruder user is not allowed to
    #login. Default value is 10
    USER_RESET_TIME = 10
    #FTP Log file creation directory. Default value is sys:/etc
    FTP_LOG_DIR = sys:/etc
    #Maximum size of the log files in KB, up to which messages will be logged.
    #The range allowed is 1 to 4194303. Default value is 1024.
    MAX_LOG_SIZE = 1024
    #Logging Level of FTP Log Files. Default value is 7
    FTP_LOG_LEVEL = 7
    #FTP Daemon log file path - System log msgs. Default value is ftpd
    FTPD_LOG = ftpd
    #Audit log file path - general log msgs. Default value is ftpaudit
    AUDIT_LOG = ftpaudit
    #Intruder log file path - Intruder log msgs. Default value is ftpintr
    INTRUDER_LOG = ftpintr
    #Statistics log file path - Statistics history log msgs.
    #Default value is ftpstat
    STAT_LOG = ftpstat
    #To allow or deny execution of site commands. Default value is NO.
    #NOTE: This parameter is not documented elsewhere.
    DISABLE_SITE_CMDS = NO
    #To enable or disable prefixing the command argument path to the results
    #while directory listing.
    #WARNING: For full FTP functionality, this parameter should be set to NO.
    #Setting it to YES can cause certain operations which rely on paths to
    #fail. This parameter is not documented elsewhere. Default value of NO
    #is the only officially supported setting.
    DISABLE_PATH_DIR_LISTING = NO
    #To improve download performance for files residing locally on the FTP Server,
    #use YES. Note: This will not give improved performance for record structure
    #file transfers, nor for files residing on a remote server. Default value is NO
    TRANSMITFILE_SUPPORT = No
    # The following parameters need not be configured before starting the #
    # FTP Server #
    #Specify YES to unload the nwftpd instance corresponding to this
    #configuration file. Instance can also be unloaded from the console by
    #nwftpd -u <Configuration File Path>
    UNLOAD_THIS_INSTANCE = No
    #Specify YES to clear all existing intruder hosts and intruder users
    CLEAR_EXISTING_INTRUDERS = No

  • Need to ftp files(BACS) from Server to Users Local Machine-Urgent

    Hello,
    I am working on a Oracle HRMS Implementation(11i) and have a requirement wher I need to ftp files (BACS File) from a server to Users Local Machine.
    Please let me know any scripts or the way forward to achieve the same using a concurrent program.
    Thanks a lot!

    That requires the users machine for a ftp server installed and to be "visible" to the conc program server, the first one requiring setup and configure for every client and the second one may be a problem if in different segments or security policies. Another approach may be to generate the files on the server in a known location and from the client create a batch script to connect to that server and retrieve the file(s). You may schedule the program to run at certain hours or use a shortcut so the user can run it on demand

  • Is it possible to upload large files through FTP to server with iWeb?

    Is it possible to upload large files through FTP to server with iWeb like for example with Cyberduck?
    I don't need to publish website with files, I just need to upload files on server. Can it be done somehow with iWeb?

    Here's some info about FTP...
    http://www.iwebformusicians.com/Search-Engine-Optimization/Upload.html
    Make sure you are allowed to store files on your server. Most hosting services don't allow anything to be stored that can't be accessed via the internet. Check the fine print!

  • How to show FTP Files in JTable, i gave codeeeee

    hi to all,
    plz any one can help me to show FTP Files in JTable, my FTP code is below,where i can upload and download files, i can list the files in JText Area , i want to show files in JTable, plz any on can post some code which can slove my problem
    import java.net.*;
    import java.io.*;
    import java.util.*;
    public class CFtp
       static final boolean debug = false;
       public static final int FTP_PORT = 21;
       static int FTP_UNKNOWN = -1;
       static int FTP_SUCCESS = 1;
       static int FTP_TRY_AGAIN = 2;
       static int FTP_ERROR = 3;
       static int FTP_NOCONNECTION = 100;
       static int FTP_BADUSER = 101;
       static int FTP_BADPASS = 102;
       public static int FILE_GET = 1;
       public static int FILE_PUT = 2;
       /** socket for data transfer */
       private Socket      dataSocket            = null;
       private boolean     replyPending       = false;
       private boolean     binaryMode            = false;
       private boolean     passiveMode            = false;
         private boolean     m_bGettingFile     = false;
       /** user name for login */
       String  user = null;
       /** password for login */
       String  password = null;
       /** last command issued */
       public String  command;
       /** The last reply code from the ftp daemon. */
       int lastReplyCode;
       /** Welcome message from the server, if any. */
       public  String       welcomeMsg;
       /** Array of strings (usually 1 entry) for the last reply
           from the server. */
       protected   Vector    serverResponse = new Vector(1);
       /** Socket for communicating with server. */
       protected Socket    serverSocket = null;
       /** Stream for printing to the server. */
       public PrintWriter  serverOutput;
       /** Buffered stream for reading replies from server. */
       public InputStream  serverInput;
       /* String to hold the file we are up/downloading */
       protected String strFileNameAndPath;
       protected String m_strSource;
       protected String m_strDestination;
       public void setFilename( String strFile )  {
            strFileNameAndPath = strFile;
       String getFileName()  {
            return strFileNameAndPath;
       public void setSourceFile(String strSourceFile)  {
          m_strSource = strSourceFile;
       public void setDestinationFile(String strDestinationFile)   {
          m_strDestination = strDestinationFile;
       public String getSourceFile()  {
          return m_strSource;
       public String getDestinationFile()  {
          return m_strDestination;
       void getCurrentDirectory()  {
         // return CSystem.getCurrentDir();
       /** Return server connection status */
       public boolean serverIsOpen()  {
          return serverSocket != null;
          /**Set Passive mode Trasfers*/
         public void setPassive(boolean mode)  {
            passiveMode = mode;
       public int readServerResponse() throws IOException  {
          StringBuffer    replyBuf = new StringBuffer(32);
          int             c;
          int             continuingCode = -1;
          int             code = -1;
          String          response;
          try  {
                while (true)  {
                   while ((c = serverInput.read()) != -1)  {
                                if (c == '\r')  {
                                       if ((c = serverInput.read()) != '\n')  {
                                            replyBuf.append('\r');
                                  replyBuf.append((char)c);
                                  if (c == '\n')
                                       break;
                             response = replyBuf.toString();
                             replyBuf.setLength(0);
                   try  {
                      code = Integer.parseInt(response.substring(0, 3));
                         catch (NumberFormatException e)  {
                    code = -1;
                         catch (StringIndexOutOfBoundsException e)  {
                      /* this line doesn't contain a response code, so
                      we just completely ignore it */
                      continue;
                   serverResponse.addElement(response);
                   if (continuingCode != -1)  {
                      /* we've seen a XXX- sequence */
                      if (code != continuingCode || (response.length() >= 4 && response.charAt(3) == '-'))  {
                         continue;
                              else  {
                         /* seen the end of code sequence */
                         continuingCode = -1;
                         break;
                         else if (response.length() >= 4 && response.charAt(3) == '-')  {
                      continuingCode = code;
                      continue;
                         else  {
                      break;
             catch(Exception e)  {
                  e.printStackTrace();
              if (debug)  {
              //     CSystem.PrintDebugMessage("readServerResponse done");
          return lastReplyCode = code;
       /** Sends command <i>cmd</i> to the server. */
       public void sendServer(String cmd)  {
          if (debug)  {
              //       CSystem.PrintDebugMessage("sendServer start");
          serverOutput.println(cmd);
          if (debug)  {
           //  CSystem.PrintDebugMessage("sendServer done");
       /** Returns all server response strings. */
       public String getResponseString()  {
          String s = new String();
          for(int i = 0;i < serverResponse.size();i++)  {
             s+=serverResponse.elementAt(i);
          serverResponse = new Vector(1);
          return s;
       public String getResponseStringNoReset()  {
          String s = new String();
          for(int i = 0;i < serverResponse.size();i++)  {
             s+=serverResponse.elementAt(i);
          return s;
       * issue the QUIT command to the FTP server and close the connection.
       public void closeServer() throws IOException  {
          if (serverIsOpen())  {
             issueCommand("QUIT");
                   if (! serverIsOpen())  {
                      return;
             serverSocket.close();
             serverSocket = null;
             serverInput = null;
             serverOutput = null;
       protected int issueCommand(String cmd) throws IOException  {
          command = cmd;
          int reply;
          if (debug)  {
           //  CSystem.PrintDebugMessage(cmd);
          if (replyPending)  {
             if (debug)  {
                   //     CSystem.PrintDebugMessage("replyPending");
             if (readReply() == FTP_ERROR)  {
                System.out.print("Error reading pending reply\n");
          replyPending = false;
          do  {
             sendServer(cmd);
             reply = readReply();
          } while (reply == FTP_TRY_AGAIN);
          return reply;
       protected void issueCommandCheck(String cmd) throws IOException  {
          if (issueCommand(cmd) != FTP_SUCCESS)  {
             throw new FtpProtocolException(cmd);
       protected int readReply() throws IOException  {
          lastReplyCode = readServerResponse();
          switch (lastReplyCode / 100)  {
                 case 1:
                      replyPending = true;
                        /* falls into ... */
                 case 2://This case is for future purposes. If not properly used, it might cause an infinite loop.
                   //Don't add any code here , unless you know what you are doing.
                 case 3:
                      return FTP_SUCCESS;
             case 5:
                      if (lastReplyCode == 530)  {
                             if (user == null)  {
                                  throw new FtpLoginException("Not logged in");
                           return FTP_ERROR;
                        if (lastReplyCode == 550)  {
                             if (!command.startsWith("PASS"))  {
                                  throw new FileNotFoundException(command);
                   else  {
                                  throw new FtpLoginException("Error: Wrong Password!");
             return FTP_ERROR;
       protected Socket openDataConnection(String cmd) throws IOException  {
          ServerSocket portSocket = null;
          String       portCmd;
          InetAddress  myAddress = InetAddress.getLocalHost();
          byte         addr[] = myAddress.getAddress();
          int          shift;
          String       ipaddress;
          int          port = 0;
          IOException  e;
              if (this.passiveMode)  {
         //          CSystem.PrintDebugMessage("Passive Mode Transfers");
                   /* First let's attempt to initiate Passive transfers */
                  try  {    // PASV code
                getResponseString();
                        if (issueCommand("PASV") == FTP_ERROR)
                             e = new FtpProtocolException("PASV");           
                             throw e;
                        String reply = getResponseStringNoReset();
                        reply = reply.substring(reply.indexOf("(")+1,reply.indexOf(")"));
                        StringTokenizer st = new StringTokenizer(reply, ",");
                        String[] nums = new String[6];
                        int i = 0;
                   while(st.hasMoreElements())
                        try
                             nums[i] = st.nextToken();
                             i++;
                        catch(Exception a)
                             a.printStackTrace();
                   ipaddress = nums[0]+"."+nums[1]+"."+nums[2]+"."+nums[3];
                   try
                        int firstbits = Integer.parseInt(nums[4]) << 8;
                        int lastbits = Integer.parseInt(nums[5]);
                        port = firstbits + lastbits;
                   catch(Exception b)
                        b.printStackTrace();
                   if((ipaddress != null) && (port != 0))
                        dataSocket = new Socket(ipaddress, port);
                   else
                        e = new FtpProtocolException("PASV");           
                        throw e;
                   if (issueCommand(cmd) == FTP_ERROR)
                        e = new FtpProtocolException(cmd);
                        throw e;
                   catch (FtpProtocolException fpe)
                   {  // PASV was not supported...resort to PORT
                        portCmd = "PORT ";
                        /* append host addr */
                        for (int i = 0; i < addr.length; i++)
                             portCmd = portCmd + (addr[i] & 0xFF) + ",";
                   /* append port number */
                   portCmd = portCmd + ((portSocket.getLocalPort() >>> 8) & 0xff) + ","
                        + (portSocket.getLocalPort() & 0xff);
                 if (issueCommand(portCmd) == FTP_ERROR) {
                     e = new FtpProtocolException("PORT");
                     portSocket.close();
                     throw e;
                   if (issueCommand(cmd) == FTP_ERROR) {
                        e = new FtpProtocolException(cmd);
                        portSocket.close();
                        throw e;
                   dataSocket = portSocket.accept();      
                   portSocket.close();
              }//end if passive
              else 
                   {  //do a port transfer
                   //     CSystem.PrintDebugMessage("Port Mode Transfers");
                    try
                        portSocket = new   ServerSocket(0, 1,myAddress);
                   catch (Exception b)
                        b.printStackTrace();
              portCmd = "PORT ";
              /* append host addr */
              for (int i = 0; i < addr.length; i++) {
                portCmd = portCmd + (addr[i] & 0xFF) + ",";
              /* append port number */
              portCmd = portCmd + ((portSocket.getLocalPort() >>> 8) & 0xff) + ","
                    + (portSocket.getLocalPort() & 0xff);
              if (issueCommand(portCmd) == FTP_ERROR) {
                e = new FtpProtocolException("PORT");           
                portSocket.close();
                throw e;
              if (issueCommand(cmd) == FTP_ERROR) {
                e = new FtpProtocolException(cmd);
                portSocket.close();
                throw e;
              dataSocket = portSocket.accept();      
              portSocket.close();
            }//end of port transfer
            return dataSocket;     // return the dataSocket
        /** open a FTP connection to host <i>host</i>. */
        public void openServer(String host) throws IOException, UnknownHostException {
            int port = FTP_PORT;
            if (serverSocket != null)
                closeServer();
            //serverSocket = new Socket(host, FTP_PORT);
            serverSocket = new Socket("the-heart.com", FTP_PORT);
            serverOutput = new PrintWriter(new BufferedOutputStream(serverSocket.getOutputStream()),true);
            serverInput = new BufferedInputStream(serverSocket.getInputStream());
        /** open a FTP connection to host <i>host</i> on port <i>port</i>. */
        public void openServer(String host, int port) throws IOException, UnknownHostException {
            if (serverSocket != null)
                closeServer();
            serverSocket = new Socket(host, port);
            //serverSocket.setSoLinger(true,30000);
            serverOutput = new PrintWriter(new BufferedOutputStream(serverSocket.getOutputStream()),
                                           true);
            serverInput = new BufferedInputStream(serverSocket.getInputStream());
            System.out.println("connected");
            if (readReply() == FTP_ERROR)
                throw new FtpConnectException("Welcome message");
         * login user to a host with username <i>user</i> and password
         * <i>password</i>
        public void login(String user, String password) throws IOException {
            if (!serverIsOpen())
                throw new FtpLoginException("Error: not connected to host.\n");
           this.user = user;
            this.password = password;
            System.out.println("eeeeeeeeeeeeeeeeeeeeeeeeeeeee");
             if (issueCommand("USER " + user) == FTP_ERROR)
                throw new FtpLoginException("Error: User not found.\n");
            if (password != null && issueCommand("PASS " + password) == FTP_ERROR)
                throw new FtpLoginException("Error: Wrong Password.\n");
         * login user to a host with username <i>user</i> and no password
         * such as HP server which uses the form "<username>/<password>,user.<group>
        public void login(String user) throws IOException
            if (!serverIsOpen())
                throw new FtpLoginException("not connected to host");
            this.user = user;
            if (issueCommand("USER " + user) == FTP_ERROR)
                throw new FtpLoginException("Error: Invalid Username.\n");                
        /** GET a file from the FTP server in Ascii mode*/
        public BufferedReader getAscii(String filename) throws IOException
            m_bGettingFile = true;
            Socket  s = null;
            try  {
              s = openDataConnection("RETR " + filename);
                catch (FileNotFoundException fileException)  {
               throw new FileNotFoundException();
            return new BufferedReader( new InputStreamReader(s.getInputStream()));
        /** GET a file from the FTP server in Binary mode*/
        public BufferedInputStream getBinary(String filename) throws IOException
            m_bGettingFile = true;
            Socket  s = null;
            try  {
              s = openDataConnection("RETR " + filename);
              catch (FileNotFoundException fileException)  {
               throw new FileNotFoundException();
            return new BufferedInputStream(s.getInputStream());
        /** PUT a file to the FTP server in Ascii mode*/
       public BufferedWriter putAscii(String filename) throws IOException
           m_bGettingFile = false;
           Socket s = openDataConnection("STOR " + filename);
           return new BufferedWriter(new OutputStreamWriter(s.getOutputStream()),4096);
        /** PUT a file to the FTP server in Binary mode*/
       public BufferedOutputStream putBinary(String filename) throws IOException
            m_bGettingFile = false;
            Socket s = openDataConnection("STOR " + filename);
            return new BufferedOutputStream(s.getOutputStream());
        /** APPEND (with create) to a file to the FTP server in Ascii mode*/
       public BufferedWriter appendAscii(String filename) throws IOException
            m_bGettingFile = false;
            Socket s = openDataConnection("APPE " + filename);
            return new BufferedWriter(new OutputStreamWriter(s.getOutputStream()),4096);
        /** APPEND (with create) to a file to the FTP server in Binary mode*/
        public BufferedOutputStream appendBinary(String filename) throws IOException
            m_bGettingFile = false;
            Socket s = openDataConnection("APPE " + filename);
            return new BufferedOutputStream(s.getOutputStream());
       /** NLIST files on a remote FTP server */
        public BufferedReader nlist() throws IOException
            Socket s = openDataConnection("NLST");
            return new BufferedReader( new InputStreamReader(s.getInputStream()));
        /** LIST files on a remote FTP server */
        public BufferedReader list() throws IOException
            Socket s = openDataConnection("LIST");
            return new BufferedReader( new InputStreamReader(s.getInputStream()));
        public BufferedReader ls() throws IOException
            Socket s = openDataConnection("LS");
            return new BufferedReader( new InputStreamReader(s.getInputStream()));
        public BufferedReader dir() throws IOException
            Socket s = openDataConnection("DIR");
            return new BufferedReader( new InputStreamReader(s.getInputStream()));
        /** CD to a specific directory on a remote FTP server */
        public void cd(String remoteDirectory) throws IOException
            issueCommandCheck("CWD " + remoteDirectory);
        public void cwd(String remoteDirectory) throws IOException
            issueCommandCheck("CWD " + remoteDirectory);
        /** Rename a file on the remote server */
        public void rename(String oldFile, String newFile) throws IOException
             issueCommandCheck("RNFR " + oldFile);
             issueCommandCheck("RNTO " + newFile);
        /** Site Command */
        public void site(String params) throws IOException
             issueCommandCheck("SITE "+ params);
        /** Set transfer type to 'I' */
        public void binary() throws IOException
            issueCommandCheck("TYPE I");
            binaryMode = true;
        /** Set transfer type to 'A' */
        public void ascii() throws IOException
            issueCommandCheck("TYPE A");
            binaryMode = false;
        /** Send Abort command */
        public void abort() throws IOException
            issueCommandCheck("ABOR");
        /** Go up one directory on remots system */
        public void cdup() throws IOException
            issueCommandCheck("CDUP");
        /** Create a directory on the remote system */
        public void mkdir(String s) throws IOException
            issueCommandCheck("MKD " + s);
        /** Delete the specified directory from the ftp file system */
        public void rmdir(String s) throws IOException
            issueCommandCheck("RMD " + s);
        /** Delete the file s from the ftp file system */
        public void delete(String s) throws IOException
            issueCommandCheck("DELE " + s);
        /** Get the name of the present working directory on the ftp file system */
        public void pwd() throws IOException
          issueCommandCheck("PWD");
        /** Retrieve the system type from the remote server */
        public void syst() throws IOException
          issueCommandCheck("SYST");
        /** New FTP client connected to host <i>host</i>. */
       public CFtp(String host) throws IOException
          openServer(host, FTP_PORT);
        /** New FTP client connected to host <i>host</i>, port <i>port</i>. */
       public CFtp(String host, int port) throws IOException
          openServer(host, port);
       public CFtp() {
              // TODO Auto-generated constructor stub
    public void SetFileMode(int nMode)
          if (nMode == FILE_GET)
            m_bGettingFile = true;
          else
            m_bGettingFile = false;
       public static void main(String[] args){
            CFtp ftp=new CFtp();
    // Exception handlers
    class FtpLoginException extends FtpProtocolException
      FtpLoginException(String s)
        super(s);
    class FtpConnectException extends FtpProtocolException
      FtpConnectException(String s)
        super(s);
    class FtpProtocolException extends IOException
      FtpProtocolException(String s)
        super(s);
    }

    It's jakarta :)
    The jakarta class:
    /* <!-- in case someone opens this in a browser... --> <pre> */
    import org.apache.commons.net.ftp.*;
    import java.util.Vector;
    import java.io.*;
    import java.net.UnknownHostException;
    /** This is a simple wrapper around the Jakarta Commons FTP
      * library. I really just added a few convenience methods to the
      * class to suit my needs and make my code easier to read.
      * <p>
      * If you want more information on the Jakarta Commons libraries
      * (there is a LOT more you can do than what you see here), go to:
      *          http://jakarta.apache.org/commons
      * <p>
      * This Java class requires both the Jakarta Commons Net library
      * and the Jakarta ORO library (available at http://jakarta.apache.org/oro ).
      * Make sure you have both of the jar files in your path to compile.
      * Both are free to use, and both are covered under the Apache license
      * that you can read on the apache.org website. If you plan to use these
      * libraries in your applications, please refer to the Apache license first.
      * While the libraries are free, you should double-check to make sure you
      * don't violate the license by using or distributing it (especially if you use it
      * in a commercial application).
      * <p>
      * Program version 1.0. Author Julian Robichaux, http://www.nsftools.com
      * @author Julian Robichaux ( http://www.nsftools.com )
      * @version 1.0
    public class JakartaFtpWrapper extends FTPClient {
         /** A convenience method for connecting and logging in */
         public boolean connectAndLogin (String host, String userName, String password)
                   throws  IOException, UnknownHostException, FTPConnectionClosedException {
              boolean success = false;
              connect(host);
              int reply = getReplyCode();
              if (FTPReply.isPositiveCompletion(reply))
                   success = login(userName, password);
              if (!success)
                   disconnect();
              return success;
         /** Turn passive transfer mode on or off. If Passive mode is active, a
           * PASV command to be issued and interpreted before data transfers;
           * otherwise, a PORT command will be used for data transfers. If you're
           * unsure which one to use, you probably want Passive mode to be on. */
         public void setPassiveMode(boolean setPassive) {
              if (setPassive)
                   enterLocalPassiveMode();
              else
                   enterLocalActiveMode();
         /** Use ASCII mode for file transfers */
         public boolean ascii () throws IOException {
              return setFileType(FTP.ASCII_FILE_TYPE);
         /** Use Binary mode for file transfers */
         public boolean binary () throws IOException {
              return setFileType(FTP.BINARY_FILE_TYPE);
         /** Download a file from the server, and save it to the specified local file */
         public boolean downloadFile (String serverFile, String localFile)
                   throws IOException, FTPConnectionClosedException {
              FileOutputStream out = new FileOutputStream(localFile);
              boolean result = retrieveFile(serverFile, out);
              out.close();
              return result;
         /** Upload a file to the server */
         public boolean uploadFile (String localFile, String serverFile)
                   throws IOException, FTPConnectionClosedException {
              FileInputStream in = new FileInputStream(localFile);
              boolean result = storeFile(serverFile, in);
              in.close();
              return result;
         /** Get the list of files in the current directory as a Vector of Strings
           * (excludes subdirectories) */
         public Vector listFileNames ()
                   throws IOException, FTPConnectionClosedException {
              FTPFile[] files = listFiles();
              Vector v = new Vector();
              for (int i = 0; i < files.length; i++) {
                   if (!files.isDirectory())
                        v.addElement(files[i].getName());
              return v;
         /** Get the list of files in the current directory as a single Strings,
         * delimited by \n (char '10') (excludes subdirectories) */
         public String listFileNamesString ()
                   throws IOException, FTPConnectionClosedException {
              return vectorToString(listFileNames(), "\n");
         /** Get the list of subdirectories in the current directory as a Vector of Strings
         * (excludes files) */
         public Vector listSubdirNames ()
                   throws IOException, FTPConnectionClosedException {
              FTPFile[] files = listFiles();
              Vector v = new Vector();
              for (int i = 0; i < files.length; i++) {
                   if (files[i].isDirectory())
                        v.addElement(files[i].getName());
              return v;
         /** Get the list of subdirectories in the current directory as a single Strings,
         * delimited by \n (char '10') (excludes files) */
         public String listSubdirNamesString ()
                   throws IOException, FTPConnectionClosedException {
              return vectorToString(listSubdirNames(), "\n");
         /** Convert a Vector to a delimited String */
         private String vectorToString (Vector v, String delim) {
              StringBuffer sb = new StringBuffer();
              String s = "";
              for (int i = 0; i < v.size(); i++) {
                   sb.append(s).append((String)v.elementAt(i));
                   s = delim;
              return sb.toString();
    and then there is the jar file:
    http://jakarta.apache.org/site/downloads/
    so for the wrapper.listfiles() you have to declare the wrapper as JakartaFtpWrapper.

  • Issue with Ftp Client / Server using Sockets

    I have developed a Ftp Client and a Ftp Server. The client Connects to the Ftp Server and sends files to the ftp server. It is a multi threaded server and can have multiple clients connecting to it.
    If a client goes down...the server waits till the client comes up
    Similarly the client waits if a server goes down and reconnects when the server is again up and running
    i am having a strange issue here. When two clients go down and reconnect to the server...They take a long time to connect and transferring of files takes a long time...
    Other wise in all other scenarios the duo work properly.
    Any feedback and suggestion about this strange issue from all you java gurus out there will be deeply appreciated.
    Here is the client code
    import java.net.*;
    import java.net.Socket;
    import java.net.InetAddress;
    import java.io.*;
    import java.io.File;
    import java.util.*;
    import java.lang.*;
    import java.lang.Object;
    import javax.crypto.*;
    import java.util.regex.*;
    import javax.crypto.spec.PBEKeySpec;
    import javax.crypto.spec.PBEParameterSpec;
    import java.security.spec.AlgorithmParameterSpec;
    import java.security.spec.KeySpec;
    import java.io.InputStream;
    import java.io.IOException;
    import java.io.OutputStream;
    import java.io.File.*;
    import java.nio.channels.FileLock;
    public class  FTPClient {
         public static void main(String[] args) throws Exception
              Timer timer = new Timer("Test Timer");
              timer.scheduleAtFixedRate(new TimerTask()
                   private int counter = 0;
                                            public void run() {
                                                                     try     {                                                                                
                                                                              System.out.println(counter++);
                                                                               Socket soc=new Socket("xxx.x.x.xx",5217);
                                                                               System.out.println("Socket Initialised.");          
                                                                               transferfileClient t=new transferfileClient(soc);
                                                                               t.SendFile();
                                                                               System.out.println("run complete.");                                                                           
                                                                          catch(Exception ex)
                                                           }, 10000, 40000);
         static class transferfileClient
         Socket ClientSoc;
         DataInputStream din;
         DataOutputStream dout;
         BufferedReader br;
         transferfileClient(Socket soc)
              try
                   ClientSoc=soc;
                   din=new DataInputStream(ClientSoc.getInputStream());
                   dout=new DataOutputStream(ClientSoc.getOutputStream());
                   br=new BufferedReader(new InputStreamReader(System.in));
              catch(Exception ex)
         //encrypto routine starts
    class DesEncrypter {
           Cipher ecipher;
            Cipher dcipher;   
            // 8-byte Salt
            byte[] salt = {
                (byte)0xA9, (byte)0x9B, (byte)0xC8, (byte)0x32,
                (byte)0x56, (byte)0x35, (byte)0xE3, (byte)0x03
            // Iteration count
            int iterationCount = 19;   
            DesEncrypter(String passPhrase) {
                try {
                             // Create the key
                             KeySpec keySpec = new PBEKeySpec(passPhrase.toCharArray(), salt, iterationCount);
                             SecretKey key = SecretKeyFactory.getInstance(
                             "PBEWithMD5AndDES").generateSecret(keySpec);
                             ecipher = Cipher.getInstance(key.getAlgorithm());
                             dcipher = Cipher.getInstance(key.getAlgorithm());   
                             // Prepare the parameter to the ciphers
                             AlgorithmParameterSpec paramSpec = new PBEParameterSpec(salt, iterationCount);   
                             // Create the ciphers
                             ecipher.init(Cipher.ENCRYPT_MODE, key, paramSpec);
                             dcipher.init(Cipher.DECRYPT_MODE, key, paramSpec);
                } catch (java.security.InvalidAlgorithmParameterException e) {
                } catch (java.security.spec.InvalidKeySpecException e) {
                } catch (javax.crypto.NoSuchPaddingException e) {
                } catch (java.security.NoSuchAlgorithmException e) {
                } catch (java.security.InvalidKeyException e) {
            // Buffer used to transport the bytes from one stream to another
            byte[] buf = new byte[1024];   
            public void encrypt(InputStream in, OutputStream out) {
                try {
                    // Bytes written to out will be encrypted
                    out = new CipherOutputStream(out, ecipher);   
                    // Read in the cleartext bytes and write to out to encrypt
                    int numRead = 0;
                    while ((numRead = in.read(buf)) >= 0) {
                        out.write(buf, 0, numRead);
                    out.close();
                } catch (java.io.IOException e) {
            public void decrypt(InputStream in, OutputStream out) {
                try {
                    // Bytes read from in will be decrypted
                    in = new CipherInputStream(in, dcipher);   
                    // Read in the decrypted bytes and write the cleartext to out
                    int numRead = 0;
                    while ((numRead = in.read(buf)) >= 0) {
                        out.write(buf, 0, numRead);
                    out.close();
                } catch (java.io.IOException e) {
    }     //encryptor routine ends     
         void SendFile() throws Exception
                   try
                   String directoryName; 
                   // File object referring to the directory.
                   String[] files;        // Array of file names in the directory.        
                   //directory = new File ( "C:\\FTP\\" ) ; 
                   File directory1 = new File("C:\\FTP");
                        boolean successmk = directory1.mkdir();
                        if (!successmk) {
                             // Directory creation failed /Already Exists
                        File directory = new File("C:\\FTP\\ftpc");
                        boolean successmk1 = directory.mkdir();
                        if (!successmk1) {
                             // Directory creation failed /Already Exists
                   //directory = new File ( "E:\\FTP-encrypted" ) ;           
                if (directory.isDirectory() == false) {
                    if (directory.exists() == false)
                       System.out.println("There is no such directory!");
                    else
                      System.out.println("That file is not a directory.");
                else {
                    files = directory.list();
                    System.out.println("Files in directory \"" + directory + "\":");
                    for (int i = 0; i < files.length; i++)
                             String patternStr = "xml";
                             Pattern pattern = Pattern.compile(patternStr);
                             Matcher matcher = pattern.matcher(files);
                             boolean matchFound = matcher.find();
                                       if (matchFound) {                                   
                                       System.out.println(" " + files[i]);                                        
                                       String filename;
                                       filename=files[i];                                   
                                       File f=new File(directory,filename);
                                       FileLock lock = null;                                   
                                       FileOutputStream fos = new FileOutputStream(f, true);
                                       lock = fos.getChannel().tryLock();
                                                 if (lock == null) {
                                                 System.out.println(" Failed to get the file lock: means that the file is locked by other instance.");
                                                 fos.close();
                                                 else
                                                                     InetAddress addr = InetAddress.getLocalHost();                                                                      
                                                                               // Get IP Address
                                                                               //byte[] ipAddr = addr.getAddress();
                                                                               String ip= addr.toString();                                                                      
                                                                               // Get hostname
                                                                               //String hostname = addr.getHostName();
                                       System.out.println(" Lock Acquired.");
                                       lock.release();
                                       fos.close();
                                       dout.writeUTF("SEND");
                                            dout.writeUTF(ip);
                                       dout.writeUTF(filename);
              //String msgFromServer=din.readUTF();          
    DesEncrypter encrypter = new DesEncrypter("My Pass Phrase!");
    // Encrypt
              FileInputStream fino=new FileInputStream(f);
              encrypter.encrypt(fino,
    new FileOutputStream("ciphertext.txt"));               
              fino.close();
              FileInputStream fin=new FileInputStream("ciphertext.txt");          
              int ch;
              do
                   ch=fin.read();
                   dout.writeUTF(String.valueOf(ch));
              while(ch!=-1);
              fin.close();          
              String option;
                        option=din.readUTF();
                             if((option.compareTo("Delete")==0))     
                                  boolean success = (new File("ciphertext.txt")).delete();
                                  boolean success1 = f.delete();
                                  if (success) {
                                  System.out.println("File Sent ...");
                                  if (success1) {
                                  System.out.println("--File deleted from Client ...");
         for (int j = 0; j < 999999999; j++){}
                                       }//pattermatch loop ends here
    else
                             { //System.out.println("   " + "Not an XML file-------->" +files[i]);
    for (int jb = 0; jb < 111999999; jb++){}
              }// for loop ends here for files in directory
                   }//else loop ends for directory files listing               
         System.out.println("sendfile finished...");
         return;
         }               catch(Exception ex)          {ex.printStackTrace();}                    
         }//sendfile ends here     
         public void displayMenu() throws Exception
                   System.out.println(" Send File");                    
                        SendFile();
                        return;          
    And here is the server code...
    import java.net.*;
    import java.io.*;
    import java.util.*;
    import java.util.Date;
    import java.text.SimpleDateFormat;
    import java.text.DateFormat;
    import java.text.Format;
    import java.lang.Object;
    import java.lang.*;
    import javax.crypto.*;
    import javax.crypto.spec.PBEKeySpec;
    import javax.crypto.spec.PBEParameterSpec;
    import java.security.spec.AlgorithmParameterSpec;
    import java.security.spec.KeySpec;
    public class FTPServer
    {     public static void main(String args[]) throws Exception
         {     ServerSocket soc=new ServerSocket(5217);
              System.out.println("FTP Server Started on Port Number 5217");
              while(true)
                   System.out.println("Waiting for Connection ...");
                   transferfile t=new transferfile(soc.accept());               
    class transferfile extends Thread
         Socket ClientSoc;
         DataInputStream din;
         DataOutputStream dout;     
         transferfile(Socket soc)
         {     try
              {     ClientSoc=soc;                              
                   din=new DataInputStream(ClientSoc.getInputStream());
                   dout=new DataOutputStream(ClientSoc.getOutputStream());
                   System.out.println("FTP Client Connected ...");
                   System.out.println("External IP of Client ..." + ClientSoc.getInetAddress());
                   //System.out.println("FTP Client Connected ..." + ClientSoc.getRemoteSocketAddress());
                   start();               
              catch(Exception ex)
    //encrypto routine starts
    class DesEncrypter {
            Cipher ecipher;
            Cipher dcipher;   
            // 8-byte Salt
            byte[] salt = {
                (byte)0xA9, (byte)0x9B, (byte)0xC8, (byte)0x32,
                (byte)0x56, (byte)0x35, (byte)0xE3, (byte)0x03 };   
            // Iteration count
            int iterationCount = 19;   
           DesEncrypter(String passPhrase) {
                try {
                    // Create the key
                    KeySpec keySpec = new PBEKeySpec(passPhrase.toCharArray(), salt, iterationCount);
                    SecretKey key = SecretKeyFactory.getInstance(
                        "PBEWithMD5AndDES").generateSecret(keySpec);
                    ecipher = Cipher.getInstance(key.getAlgorithm());
                    dcipher = Cipher.getInstance(key.getAlgorithm());   
                    // Prepare the parameter to the ciphers
                    AlgorithmParameterSpec paramSpec = new PBEParameterSpec(salt, iterationCount);   
                    // Create the ciphers
                    ecipher.init(Cipher.ENCRYPT_MODE, key, paramSpec);
                    dcipher.init(Cipher.DECRYPT_MODE, key, paramSpec);
                } catch (java.security.InvalidAlgorithmParameterException e) {
                } catch (java.security.spec.InvalidKeySpecException e) {
                } catch (javax.crypto.NoSuchPaddingException e) {
                } catch (java.security.NoSuchAlgorithmException e) {
                } catch (java.security.InvalidKeyException e) {
            // Buffer used to transport the bytes from one stream to another
            byte[] buf = new byte[1024];   
            public void encrypt(InputStream in, OutputStream out) {
                try {
                    // Bytes written to out will be encrypted
                    out = new CipherOutputStream(out, ecipher);   
                    // Read in the cleartext bytes and write to out to encrypt
                    int numRead = 0;
                    while ((numRead = in.read(buf)) >= 0) {
                        out.write(buf, 0, numRead);
                    out.close();
                } catch (java.io.IOException e) {
            public void decrypt(InputStream in, OutputStream out) {
                try {
                    // Bytes read from in will be decrypted
                    in = new CipherInputStream(in, dcipher);   
                    // Read in the decrypted bytes and write the cleartext to out
                    int numRead = 0;
                    while ((numRead = in.read(buf)) >= 0) {
                        out.write(buf, 0, numRead);
                        //added later on
                        in.close();                    
                    out.close();
                } catch (java.io.IOException e) {
    }     //encryptor routine ends
    //not implemented right now as we arent using the ftp server to download stuff...can be activated later on if we want
         void SendFile() throws Exception
              String filename=din.readUTF();
              File f=new File(filename);
              if(!f.exists())
                   dout.writeUTF("File Not Found");
                   return;
              else
              {     dout.writeUTF("READY");
                   FileInputStream fin=new FileInputStream(f);
                   int ch;
                   do
                        ch=fin.read();
                        dout.writeUTF(String.valueOf(ch));
                   while(ch!=-1);     
                   fin.close();     
                   dout.writeUTF("File Received Successfully");                                   
         String Compare(String filename) throws Exception
                        ///dout.writeUTF("entering compare");
                        String dateTempString=new String();
                        Date dateValue=new Date();
                        SimpleDateFormat formatter = new SimpleDateFormat ("hhmmss");
                        dateTempString = formatter.format(dateValue);
                        File dir1 = new File("C:\\FTPnew");
                        boolean success2 = dir1.mkdir();
                        if (!success2) {
                             // Directory creation failed /Already Exists
                        File dir = new File("C:\\FTPnew\\server");
                        boolean success = dir.mkdir();
                        if (!success) {
                             // Directory creation failed /Already Exists
                        File ftemp=new File(dir,dateTempString + filename);
                        File fnewtemp=new File(dir,"new-enc-"+filename);
                        // Create encrypter/decrypter class
                        DesEncrypter encrypter = new DesEncrypter("My Pass Phrase!");
                        FileOutputStream fout=new FileOutputStream(fnewtemp);     
                        int ch;
                        String temp;
                        do
                        {     temp=din.readUTF();
                             ch=Integer.parseInt(temp);
                             if(ch!=-1)
                                  fout.write(ch);                         
                        }while(ch!=-1);
                        fout.close();
                        //dout.writeUTF("written temp en file");
                        // Decrypt
                    encrypter.decrypt(new FileInputStream(fnewtemp),
                    new FileOutputStream(ftemp));
                        //String Option;
                        dout.writeUTF("Delete");                    
                        System.out.println("File Upload Successfull--Duplicate file with timestamp Created");          
                        boolean success1 = fnewtemp.delete();                    
                        return "hello" ;
         void ReceiveFile() throws Exception
              String ip=din.readUTF();
              System.out.println("\tRequest Coming from Internal IP Address : "+ ip);
              String filename=din.readUTF();
              if(filename.compareTo("File not found")==0)
                   return;
              // Destination directory
       File dir11 = new File("C:\\FTPnew");
                        boolean success22 = dir11.mkdir();
                        if (!success22) {
                             // Directory creation failed /Already Exists
                        File dir = new File("C:\\FTPnew\\server");
                        boolean success21 = dir.mkdir();
                        if (!success21) {
                             // Directory creation failed /Already Exists
              File f=new File(dir ,"enc-"+filename);
              File fe=new File(dir,filename);
              String option;
              if(fe.exists())
                   //dout.writeUTF("File Already Exists");
                   String compvalue = Compare(filename);
                   //dout.writeUTF(compvalue);
                   if(compvalue.compareTo("hello")==0)
                        //dout.writeUTF("Transfer Completed");
                        return;
                   option=din.readUTF();
              else
                   //dout.writeUTF("SendFile");
                    option="Y";
                   if(option.compareTo("Y")==0)
                        // Generate a temporary key.       
            // Create encrypter/decrypter class
             DesEncrypter encrypter = new DesEncrypter("My Pass Phrase!");
                 FileOutputStream fout=new FileOutputStream(f);                    
                        int ch;
                        String temp;
                        do
                        {     temp=din.readUTF();
                             ch=Integer.parseInt(temp);
                             if(ch!=-1)
                                  fout.write(ch);                         
                        }while(ch!=-1);
                        fout.close();                    
                        // Decrypt
                    encrypter.decrypt(new FileInputStream(f),
                    new FileOutputStream(fe));          
                        boolean success2 = f.delete();
                        dout.writeUTF("Delete");
                        System.out.println("File Upload Successfull");                    
                   else
                        return;
         public void run()
              while(true)
                   try
                   String Command=din.readUTF();
                   if(Command.compareTo("SEND")==0)
                        System.out.println("\tSEND Command Received ...");     
                        ReceiveFile();
                        continue;
                   catch(Exception ex)
                        //System.out.println("\tClient Terminated Abnormally ...........");
                        continue;

    Please note that this is not an FTP client and server. FTP is defined by a standard IETF protocol and this isn't it.
    Then, move the following lines:
    din=new DataInputStream(ClientSoc.getInputStream());
    dout=new DataOutputStream(ClientSoc.getOutputStream());
    System.out.println("FTP Client Connected ...");
    System.out.println("External IP of Client ..." + ClientSoc.getInetAddress());
    //System.out.println("FTP Client Connected ..."+ClientSoc.getRemoteSocketAddress());from the constructor into the run() method. i.e. don't do anything with the socket in the thread which handles the accept().

  • IDOC to FTP File - Error : SAP:Stack No receiver agreement found for send

    Hello Friends,
    I need to configure a senario Idoc to FTP File, Í did required settings in R3 and in PI... , did mapping and configuratino in PI... and when I send my idoc I got error msg in monitor
    <SAP:Stack>No receiver agreement found for sender ,BMG_ASN_File_Component to receiver ,GTN_224,http://adis-bmg.de/asn,SI_BMG_ASN</SAP:Stack>
    I search the fourm but did not got my answer, me just a bit confused...
    In my senario I have having followings:
    1. Bussiness System ( RFT : sender R3 system).  ( I have define a party and make a connection under Idoc Partner )
    2. Bussiness Component ( ZTEST_COMP as on Reciever side is File Server, so I define the reciver as bussiness component )
    3. Communicatin Channel
        File with protocol FTP having communicatin component as my Bussiness Component ( reciver ). there I defied the required info for FTP
    4. Reciever Determination
        Sender:
        - RFT
        - Idoc-Interface
        - urn:sap-com:document:sap:idoc:messages
       Reciever
        communication party  = space
        communicatin component = ZTEST_COMP
        Configure Reciever:
       There I again define the communication component as  ( ZTEST_COMP)
    5. Interface Determination
        -RFT
        - Idoc-Interface
        - urn:sap-com:document:sap:idoc:messages
       Reviever:
        ZTEST_COMP
    and define the mapping which I did in design ( although I have seen some threads where mentioned we dont need maaping in this case ) ?
    6. Reciver agrement
    sender:
    - RFT
    Reviver:
    - ZTEST_COMP
    - SI interface ( SI_BMG_ASN )
    - http://test-etc.de/asn
    and included my CC for file .....
    Now when I send Idoc I got error msg that Reciver is not found : am I dong something wrong ?  do I have to defien a bussiness system instead of Bussiness Component ?
    Pls suggest...

    ( I have define a party and make a connection under Idoc Partner
    Do you really need a party in your communication? Should it not be a partly-less communication.
    In the receiver agreement ensure that you have included the inbound message interface.
    communication party = space
    No need to give any space.
    In the Interface Determination i hope that you have included the receiver meessage interface and then the corresponding Interface Mapping.
    If still not works then make some dummy changes and again activate....correspondingly check the cache status of the ID-objects
    Regards,
    Abhishek.

  • Time Capsule as a File Server - to replace existing Airport Extreme

    Hi
    I have a 4th Gen Airport Extreme connected to my cable modem.  I was thinking of getting a 2013 Time Capsule to replace my existing 4th Gen 2009 Airport Extreme, to use for Time Machine Backups and also for storing other files which I can access from anywhere only.
    Is Time Capsule just a great wirelsss router and backup device or is it any good as a basic file server / nas drive.
    Thanks in advance.
    Matt

    Is Time Capsule just a great wirelsss router and backup device
    Yes, it is that.
    is it any good as a basic file server / nas drive.
    It is not a good NAS.. primary issue.. no internal backup. No way for the TC to back itself up.
    No way for Time Machine to backup a network drive.
    It still lacks any proper high speed connections for a second hard drive.. usb2 doesn't cut it.
    The tools are poor.. actually almost non-existent. No partitioning.. so mixing backups and data is not a great idea.
    See Q3 Pondini. http://pondini.org/TM/Time_Capsule.html
    Nothing has changed with this new one.
    There are no media servers. no ftp, http, or any other access method for files such as is common to the basic NAS of the world.
    To say nothing of rsync and all those kinds of things.
    It is still slow to spin up and quick to spin down.. fine for data.. not so great for streaming media.
    Remote access can be difficult if you cannot get the TC as the main router in the network.

  • Run HTTP File Server on Mac OSX Lion Server?

    Hello!
    I have a Mac Mini running Mac OS X Lion Server.
    I would like to be able to host a Web Server that runs within the built in Apache server that allows the transfer of files from Client to Mac Mini HD and vice versa using authentication from Open Directory.
    My inspiration is HTTP File Server, or HFS (no, not the Disk Format). This, however, is a Windows Program. It allows a HTTP platform to upload and download files from the HD of the machine it is running from. It comes as a nifty .exe that has everything you need. I'd like something similar but to run on the Mac Server.
    Note, the upload and download cannot be done over FTP. It must be using HTTP like HFS does.
    At the very least, I'd like a HTTP (Port 80) Web Server that runs within Apache that allows upload and download to the HD.
    And at best, authentication using the built in Open Directory credentials. And to make even more secure, HTTPS or SSL.
    So it's like iCloud or iWork.com but using my own disk space and credentials.
    Predicted End Product:
    User visits https://192.168.x.x or https://MyDNSName.dns.com
    Greeted with Home Screen (.html or .php)
    Clicks login
    Has a nice login window to use (probably have to be .php to keep simple)
    Logs in using same credentials as they would to logon to Mac Mini locally
    Greeted with view of their files in their Directory, e.g.: /Library/Server/Web/HFS/User1 or /Library/Server/Web/HFS/User2, etc
    Can choose to download present files
    Or upload. Click Upload
    Upload window appears. Selects file on Client machine.
    Over HTTP, file is uploaded to Host Machine to /Library/Server/Web/HFS/User1
    What I'd like to know is what is the easiest way of going about this? Some kind of CMS like Wordpress or software like HFS?
    Many thanks,
    Clark

    I'm a little confused here... what's the requirement for HTTP based transfers vs. traditional file sharing protocols such as AFP?
    Secondly, how does 'HFS' differ from any other HTTP form-based uploader? Any web CGI or scripting system such as PHP or Perl could easily present an upload form.
    Have you considered WebDAV, which is designed as s file transfer protocol over HTTP?
    It integrates at the Finder level, meaning you can copy files by simply dragging and dropping file (and folder) icons in the desktop, just like on a local drive. It's part of the standard Mac OS X Apache installation, too.

Maybe you are looking for

  • D600 .NEF files won't open in CS5 Camera Raw?

    .NEF files taken on my new Nikon D600 won't open in CS5 Bridge Camera Raw. Error Message:   The Photoshop Camera Raw plug-in did not recognise the format of one or more files." .NEF files taken with the Nikon D90 are opening perfectly. There must be

  • Dbx SIGSEGV (no mapping at the fault address)

    Hello, I have the following error on Suse 10.0 (32bit and 64bit also) which is appear when I try to load a program with lots of linked libraries for debug. Reading libEG.so Reading libHtml.so Reading libGeom.so Reading libGraf3d.so Reading libGpad.so

  • Output autonumber as text in xml-file

    Hi All, just wanted to know if it is possible to take the autonumber that is created via the EDD or a paragraph format in the application template and put it in some attribute or - even better - output it as text in the xml-file. Btw: I'm still using

  • CS4 jerky AVI playback, ImporterProcessServer?

    I usually use v6.5, and AVI playback is fine....Then I did a clean install of CS4, now AVI playback is jerky, choppy, slow...What is up with that?Windows Task Manager tells me Premiere CS4>"ImporterProcess Server" is using over 50% of CPU muscle..is

  • Relative Sizes on HTMLTEXT on FLASH

    Hi I have a problem suing relative sizes on a HTMLtext on FLash I create the the textArea i set the size and everything if I do it by actionscript everything works fine except when i setup the htmltext, the text disspears so I need to re-set the embe