Ejemplo n.º 1
0
        private void ServerSocket_OnCommandReceived(ITFtpCommand command, EndPoint endpoint)
        {
            // Ignore all other commands
            if (!(command is ReadOrWriteRequest))
            {
                return;
            }

            // Open a connection to the client
            ITransferChannel channel = TransferChannelFactory.CreateConnection(endpoint);

            // Create a wrapper for the transfer request
            ReadOrWriteRequest request  = (ReadOrWriteRequest)command;
            ITFtpTransfer      transfer = request is ReadRequest ? (ITFtpTransfer) new LocalReadTransfer(channel, request.Filename, request.Options) : new LocalWriteTransfer(channel, request.Filename, request.Options);

            switch (command)
            {
            case ReadRequest _:
                RaiseOnReadRequest(transfer, endpoint);
                break;

            case WriteRequest _:
                RaiseOnWriteRequest(transfer, endpoint);
                break;

            default:
                throw new Exception($"Unexpected TFTP transfer request: {command}");
            }
        }
Ejemplo n.º 2
0
        internal static void Trace(string message, ITFtpTransfer transfer)
        {
            if (!Enabled)
            {
                return;
            }

            System.Diagnostics.Trace.WriteLine(message, transfer.ToString());
        }
Ejemplo n.º 3
0
 private void RaiseOnReadRequest(ITFtpTransfer transfer, EndPoint client)
 {
     if (OnReadRequest != null)
     {
         OnReadRequest(transfer, client);
     }
     else
     {
         transfer.Cancel(new TFtpErrorPacket(0, "Server did not provide a OnReadRequest handler."));
     }
 }