亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? baseftpconnection.java

?? 一個利用Java語言實現的ftp程序
?? JAVA
字號:
/*
 * Copyright (C) The Apache Software Foundation. All rights reserved.
 *
 * This software is published under the terms of the Apache Software License
 * version 1.1, a copy of which has been included with this distribution in
 * the LICENSE file.
 */
package server.ftp;

import java.io.IOException;
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.net.Socket;
import java.net.InetAddress;
import java.lang.reflect.Method;
import java.lang.reflect.InvocationTargetException;

import util.Message;
import io.IoUtils;
import io.StreamConnectorObserver;

/**
 * This is a generic ftp connection handler. It delegates 
 * the request to appropriate methods in subclasses.
 *
 * @author <a href="mailto:rana_b@yahoo.com">Rana Bhattacharyya</a>
 */
public
class BaseFtpConnection implements Runnable, StreamConnectorObserver {
    
    protected final static Class[] METHOD_INPUT_SIG = new Class[] {FtpRequest.class, FtpWriter.class};
    
    protected FtpConfig mConfig                 = null;
    protected FtpStatus mFtpStatus              = null;
    protected FtpDataConnection mDataConnection = null;
    protected FtpUser mUser                     = null;
    protected SpyConnectionInterface mSpy       = null;
    protected FtpConnectionObserver mObserver   = null;
    protected Socket mControlSocket             = null;
    protected FtpWriter mWriter                 = null;
    protected boolean mbStopRequest             = false;


    /**
     * Set configuration file and the control socket.
     */
    public BaseFtpConnection(FtpConfig ftpConfig, Socket soc) {
        mConfig = ftpConfig;
        mFtpStatus = mConfig.getStatus();
        mControlSocket = soc;
        mUser = new FtpUser();
    }

    /**
     * Server one FTP connection.
     */
    public void run() {
        InetAddress clientAddress = mControlSocket.getInetAddress();
        mConfig.getLogger().info("Handling new request from " + clientAddress.getHostAddress());
        mDataConnection = new FtpDataConnection(mConfig);
        mUser.setClientAddress(clientAddress);
        mConfig.getConnectionService().newConnection(this);
        
        BufferedReader in = null;
        try {
            in = new BufferedReader(new InputStreamReader(mControlSocket.getInputStream())); 
            mWriter = new FtpWriter(mControlSocket, mConfig);                    
            
            // permission check
            if( !mConfig.getIpRestrictor().hasPermission(mControlSocket.getInetAddress()) ) {
                mWriter.write(mFtpStatus.getResponse(530, null, mUser, null));
                return;
            }
            mWriter.write(mFtpStatus.getResponse(220, null, mUser, null));
            
            do {
                notifyObserver();
                String commandLine = in.readLine();
                
                // test command line
                if(commandLine == null) {
                    break;
                }
                
                spyRequest(commandLine);
                if(commandLine.equals("")) {
                    continue;
                }
                
                FtpRequest request = new FtpRequest(commandLine);
                if(!hasPermission(request)) {
                    mWriter.write(mFtpStatus.getResponse(530, request, mUser, null));
                    break;
                }
                    
                // execute command
                service(request, mWriter);
            }
            while(!mbStopRequest);
        }
        catch(Exception ex) {
        }
        finally {
            IoUtils.close(in);
            IoUtils.close(mWriter);
            ConnectionService conService = mConfig.getConnectionService();
            if (conService != null) {
                conService.closeConnection(mUser.getSessionId());
            }
        }
    }
    
    
    /**
     * Execute the ftp command.
     */
    public void service(FtpRequest request, FtpWriter writer) throws IOException {
        try {
             String metName = "do" + request.getCommand();
             Method actionMet = getClass().getDeclaredMethod(metName, METHOD_INPUT_SIG);
             actionMet.invoke(this, new Object[] {request, writer});
         }
         catch(NoSuchMethodException ex) {
             writer.write(mFtpStatus.getResponse(502, request, mUser, null));
         }
         catch(InvocationTargetException ex) {
             writer.write(mFtpStatus.getResponse(500, request, mUser, null));
             Throwable th = ex.getTargetException();
             if (th instanceof java.io.IOException) {
                throw (IOException)th;
             }
             else {
                mConfig.getLogger().warn(th);
             }
         }
         catch(Exception ex) {
             writer.write(mFtpStatus.getResponse(500, request, mUser, null));
             if (ex instanceof java.io.IOException) {
                throw (IOException)ex;
             }
             else {
                mConfig.getLogger().warn(ex);
             }
         }
    }   
          
    /**
     * Check permission - default implementation - does nothing.
     */
    protected boolean hasPermission(FtpRequest request) {
        return true;
    }
    
    /**
     * User logout and stop this thread.
     */
    public void stop() {
        mbStopRequest = true;
        if (mDataConnection != null) {
            mDataConnection.dispose();
            mDataConnection = null;
        }
        if (mControlSocket != null) {
            try {
                mControlSocket.close();
            }
            catch(Exception ex) {
                mConfig.getLogger().warn(ex);
            }
            mControlSocket = null;
        }
        if (mUser.hasLoggedIn()) {
            mUser.logout();        
        }
        mObserver = null;
    }
     
    /**
     * Is the connection closed?
     */
    public boolean isClosed() {
        return mbStopRequest;
    }
    
    /**
     * Monitor the user request.
     */
    protected void spyRequest(final String str) {
        final SpyConnectionInterface spy = mSpy;
        if (spy != null) {
            Message msg = new Message() {
                public void execute() {
                    try {
                        spy.request(str + '\n');
                    }
                    catch(Exception ex) {
                        mSpy = null;
                        mConfig.getLogger().error(ex);
                    }
                }
            };
            mConfig.getMessageQueue().add(msg);
        }
    }
    
    /**
     * Get user object
     */
    public FtpUser getUser() {
        return mUser;
    }
     
    /**
     * Get connection spy object
     */
    public SpyConnectionInterface getSpyObject() {
        return mSpy;
    }
    
    /**
     * Set spy object
     */
    public void setSpyObject(SpyConnectionInterface spy) {
        mWriter.setSpyObject(spy);
        mSpy = spy;
    }
    
    /**
     * Get observer
     */
    public FtpConnectionObserver getObserver() {
        return mObserver;
    }

    /**
     * Set observer
     */
    public void setObserver(FtpConnectionObserver obsr) {
        mObserver = obsr;
    }

    /**
     * Notify observer.
     */
    public void notifyObserver() {
       mUser.hitUser();
       final FtpUser thisUser = mUser; 
       final FtpConnectionObserver obsr = mObserver;

       if (obsr != null) {
            Message msg = new Message() {
                public void execute() {
                    obsr.updateConnection(thisUser);
                }
            };
            mConfig.getMessageQueue().add(msg);
       }
    }
    
    /**
     * This method tracks data transfer.
     */
    public void dataTransferred(int sz) {
         notifyObserver();
    }
         
    /**
     * Get config object
     */
    public FtpConfig getConfig() {
        return mConfig;
    } 
    
    /**
     * Get status object
     */
    public FtpStatus getStatus() {
        return mFtpStatus;
    }  
         
}
 

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
午夜精品久久久| 欧美视频一区二| 欧美日韩一区三区| 国产日韩v精品一区二区| 一区二区三区国产精品| 久久av老司机精品网站导航| 99视频精品免费视频| 日韩欧美国产综合| 亚洲精品午夜久久久| 国产成人免费视频网站高清观看视频| 欧美日韩在线播放一区| 亚洲国产精品二十页| 国产专区综合网| 777xxx欧美| 亚洲影院理伦片| 91网站视频在线观看| 久久婷婷国产综合精品青草| 五月激情综合网| 欧美午夜精品一区二区蜜桃| 中文字幕亚洲不卡| 国产精品影视网| 337p粉嫩大胆噜噜噜噜噜91av| 天天色天天爱天天射综合| 在线免费不卡视频| 亚洲免费在线观看视频| proumb性欧美在线观看| 国产欧美一区二区在线观看| 极品美女销魂一区二区三区| 日韩西西人体444www| 老汉av免费一区二区三区| 欧美一区二区视频观看视频| 午夜精品成人在线视频| 欧美日韩免费电影| 午夜伊人狠狠久久| 91精品在线免费观看| 免费在线看成人av| 日韩欧美电影一区| 国产精品正在播放| 国产精品久久久久一区二区三区 | 久久久久久免费网| 国产在线精品一区二区不卡了 | 奇米777欧美一区二区| 欧美精品久久一区二区三区| 丝袜美腿一区二区三区| 6080日韩午夜伦伦午夜伦| 日本特黄久久久高潮| 欧美电影免费提供在线观看| 国产一区高清在线| 国产精品色一区二区三区| 99久久综合精品| 一卡二卡欧美日韩| 欧美一区二区在线不卡| 国产麻豆视频精品| 国产精品夫妻自拍| 欧美私人免费视频| 美女视频一区二区三区| 国产亚洲欧美在线| 色婷婷综合在线| 日韩电影在线一区| 国产视频亚洲色图| 色婷婷久久99综合精品jk白丝| 亚洲最新视频在线观看| 日韩欧美国产一区在线观看| 丰满亚洲少妇av| 亚洲国产日韩一级| 久久亚洲二区三区| 欧洲国内综合视频| 久久97超碰色| 亚洲精品欧美激情| 欧美成人精精品一区二区频| 成人国产一区二区三区精品| 亚洲成人第一页| 国产三级欧美三级| 欧美电影一区二区三区| 国产99久久精品| 免费成人在线观看| 亚洲乱码国产乱码精品精小说| 日韩欧美电影在线| 欧美午夜寂寞影院| 国产精品99久久久久久久vr| 亚洲综合无码一区二区| 久久久无码精品亚洲日韩按摩| 色狠狠色噜噜噜综合网| 国产成人精品网址| 蜜桃久久精品一区二区| 亚洲一区二区三区四区五区中文| 26uuu欧美日本| 欧美福利视频导航| 91在线视频网址| 懂色av中文字幕一区二区三区| 亚洲成人av一区二区| 亚洲四区在线观看| 久久精品亚洲精品国产欧美| 欧美精品丝袜中出| 色婷婷综合久久久| 国产91精品一区二区麻豆网站 | 欧美一区二区视频观看视频| 色综合久久久久久久| 国产suv一区二区三区88区| 日本成人超碰在线观看| 亚洲国产综合91精品麻豆| 欧美国产精品一区| 久久久久九九视频| 亚洲精品一区二区三区99| 日韩一区二区在线看| 欧美顶级少妇做爰| 欧美日韩国产片| 欧美三级欧美一级| 欧美午夜在线一二页| 欧美三级视频在线| 欧美日韩三级一区| 精品视频一区二区不卡| 在线精品视频免费观看| 色综合天天综合狠狠| 91在线小视频| av男人天堂一区| 91老师国产黑色丝袜在线| 99这里都是精品| 96av麻豆蜜桃一区二区| 91蜜桃婷婷狠狠久久综合9色| 成人三级在线视频| 成人免费av资源| 91视频精品在这里| 色婷婷精品久久二区二区蜜臀av| 一本色道久久综合精品竹菊| 色嗨嗨av一区二区三区| 在线精品视频免费观看| 在线观看91精品国产麻豆| 欧美一区二区精美| 欧美精品一区视频| 国产欧美精品一区二区色综合| 国产午夜亚洲精品羞羞网站| 国产精品不卡一区| 亚洲精品久久久蜜桃| 日本欧美肥老太交大片| 国产黑丝在线一区二区三区| 成人精品国产免费网站| 色综合天天综合网天天看片| 91黄色激情网站| 日韩欧美自拍偷拍| 中文字幕第一区二区| 亚洲自拍都市欧美小说| 经典一区二区三区| 99久久久久久| 日韩一区二区三区三四区视频在线观看| 欧美一区二区视频在线观看 | 一区二区三区高清不卡| 五月婷婷综合在线| 国产乱子伦一区二区三区国色天香| 国产成人av一区二区三区在线| 色综合激情久久| 日韩欧美中文一区| 亚洲男人的天堂网| 久久99精品久久久久久国产越南 | 欧美一区午夜精品| 国产精品午夜春色av| 亚洲午夜国产一区99re久久| 国内精品视频666| 91免费视频大全| 精品久久久久99| 亚洲午夜激情av| 成人av在线一区二区三区| 欧美日韩免费观看一区三区| 久久精品人人做人人综合| 亚洲主播在线播放| 成人午夜激情影院| 精品少妇一区二区三区在线播放| 亚洲图片欧美激情| 国产在线一区二区综合免费视频| 在线日韩一区二区| 日本一区二区综合亚洲| 人人超碰91尤物精品国产| 95精品视频在线| 国产欧美精品一区aⅴ影院 | eeuss鲁片一区二区三区在线看 | 欧洲视频一区二区| 国产区在线观看成人精品| 日韩不卡一区二区三区 | 成人黄色a**站在线观看| 欧美一区二区三区免费视频| 最新国产成人在线观看| 国产精品一区免费视频| 欧美一区二区三区在线| 亚洲综合久久av| 一本高清dvd不卡在线观看| 国产视频一区在线观看| 韩国v欧美v亚洲v日本v| 日韩欧美精品三级| 日本美女一区二区三区视频| 欧美视频一区二区三区四区| 夜夜精品视频一区二区| 91亚洲精品一区二区乱码| 国产精品家庭影院| 粉嫩一区二区三区性色av| 2022国产精品视频| 另类小说色综合网站| 日韩三级电影网址| 久久国产精品99精品国产| 日韩一区二区三区高清免费看看| 日欧美一区二区|