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

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

?? ftpcontrol.java

?? 非常棒的java數據庫
?? JAVA
?? 第 1 頁 / 共 2 頁
字號:
/*
 * Copyright 2004-2008 H2 Group. Licensed under the H2 License, Version 1.0
 * (http://h2database.com/html/license.html).
 * Initial Developer: H2 Group
 */
package org.h2.server.ftp;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.io.PrintWriter;
import java.net.InetAddress;
import java.net.ServerSocket;
import java.net.Socket;
import java.sql.SQLException;

import org.h2.engine.Constants;
import org.h2.store.fs.FileSystem;
import org.h2.util.StringUtils;

/**
 * The implementation of the control channel of the FTP server.
 */
public class FtpControl extends Thread {

    private static final String SERVER_NAME = "Small FTP Server";

    private FtpServer server;
    private FileSystem fs;
    private Socket control;
    private FtpData data;
    private PrintWriter output;
    private String userName;
    private boolean connected, readonly;
    private String currentDir = "/";
    private String serverIpAddress;
    private boolean stop;
    private String renameFrom;
    private boolean replied;
    private long restart;

    public FtpControl(Socket control, FtpServer server, boolean stop) {
        this.server = server;
        this.fs = server.getFileSystem();
        this.control = control;
        this.stop = stop;
    }

    public void run() {
        try {
            output = new PrintWriter(new OutputStreamWriter(control.getOutputStream(), Constants.UTF8));
            if (stop) {
                reply(421, "Too many users");
            } else {
                reply(220, SERVER_NAME);
                // TODO need option to configure the serverIpAddress
                serverIpAddress = control.getLocalAddress().getHostAddress().replace('.', ',');
                BufferedReader input = new BufferedReader(new InputStreamReader(control.getInputStream()));
                while (!stop) {
                    String command = null;
                    try {
                        command = input.readLine();
                    } catch (IOException e) {
                        // ignore
                    }
                    if (command == null) {
                        break;
                    }
                    process(command);
                }
                if (data != null) {
                    data.close();
                }
            }
        } catch (Throwable t) {
            server.logError(t);
        }
        server.closeConnection();
    }

    private void process(String command) throws SQLException, IOException {
        int idx = command.indexOf(' ');
        String param = "";
        if (idx >= 0) {
            param = command.substring(idx).trim();
            command = command.substring(0, idx);
        }
        command = StringUtils.toUpperEnglish(command);
        if (command.length() == 0) {
            reply(506, "No command");
            return;
        }
        server.log(">" + command);
        FtpEventListener listener = server.getEventListener();
        FtpEvent event = null;
        if (listener != null) {
            event = new FtpEvent(this, command, param);
            listener.beforeCommand(event);
        }
        replied = false;
        if (connected) {
            processConnected(command, param);
        }
        if (!replied) {
            if ("USER".equals(command)) {
                userName = param;
                reply(331, "Need password");
            } else if ("QUIT".equals(command)) {
                reply(221, "Bye");
                stop = true;
            } else if ("PASS".equals(command)) {
                if (userName == null) {
                    reply(332, "Need username");
                } else if (server.checkUserPassword(userName, param)) {
                    reply(230, "Ok");
                    readonly = false;
                    connected = true;
                } else if (server.checkUserPasswordReadOnly(userName, param)) {
                    reply(230, "Ok, readonly");
                    readonly = true;
                    connected = true;
                } else {
                    reply(431, "Wrong user/password");
                }
            } else if ("REIN".equals(command)) {
                userName = null;
                connected = false;
                currentDir = "/";
                reply(200, "Ok");
            } else if ("HELP".equals(command)) {
                reply(214, SERVER_NAME);
            }
        }
        if (!replied) {
            listener.onUnsupportedCommand(event);
            reply(506, "Invalid command");
        }
        if (listener != null) {
            listener.afterCommand(event);
        }
    }

    private void processConnected(String command, String param) throws SQLException, IOException {
        switch (command.charAt(0)) {
        case 'C':
            if ("CWD".equals(command)) {
                String path = getPath(param);
                String fileName = getFileName(path);
                if (fs.exists(fileName) && fs.isDirectory(fileName)) {
                    if (!path.endsWith("/")) {
                        path += "/";
                    }
                    currentDir = path;
                    reply(250, "Ok");
                } else {
                    reply(550, "Failed");
                }
            } else if ("CDUP".equals(command)) {
                if (currentDir.length() > 1) {
                    int idx = currentDir.lastIndexOf("/", currentDir.length() - 2);
                    currentDir = currentDir.substring(0, idx + 1);
                    reply(250, "Ok");
                } else {
                    reply(550, "Failed");
                }
            }
            break;
        case 'D':
            if ("DELE".equals(command)) {
                String fileName = getFileName(param);
                if (!readonly && fs.exists(fileName) && !fs.isDirectory(fileName) && fs.tryDelete(fileName)) {
                    if (server.getAllowTask() && fileName.endsWith(FtpServer.TASK_SUFFIX)) {
                        server.stopTask(fileName);
                    }
                    reply(250, "Ok");
                } else {
                    reply(500, "Delete failed");
                }
            }
            break;
        case 'L':
            if ("LIST".equals(command)) {
                processList(param, true);
            }
            break;
        case 'M':
            if ("MKD".equals(command)) {
                processMakeDir(param);
            } else if ("MODE".equals(command)) {
                if ("S".equals(StringUtils.toUpperEnglish(param))) {
                    reply(200, "Ok");
                } else {
                    reply(504, "Invalid");
                }
            } else if ("MDTM".equals(command)) {
                String fileName = getFileName(param);
                if (fs.exists(fileName) && !fs.isDirectory(fileName)) {
                    reply(213, server.formatLastModified(fileName));
                } else {
                    reply(550, "Failed");
                }
            }
            break;
        case 'N':
            if ("NLST".equals(command)) {
                processList(param, false);

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
7777精品伊人久久久大香线蕉的| 91精品国产综合久久久久| 亚洲图片欧美综合| 26uuu欧美| 欧美色网一区二区| 国产寡妇亲子伦一区二区| 亚洲一区二区三区爽爽爽爽爽 | 99久久婷婷国产综合精品| 首页综合国产亚洲丝袜| 欧美国产精品一区| 日韩一本二本av| 日本伦理一区二区| 国产成人精品免费网站| 亚洲aⅴ怡春院| 亚洲丝袜精品丝袜在线| 久久久综合激的五月天| 欧美亚洲国产一区在线观看网站| 国产盗摄一区二区| 麻豆成人免费电影| 亚洲电影一区二区| 亚洲女人小视频在线观看| 国产亚洲欧美中文| 精品欧美一区二区三区精品久久| 欧美在线三级电影| 波多野结衣精品在线| 国产精品亚洲а∨天堂免在线| 日韩黄色免费网站| 亚洲第一在线综合网站| 亚洲精品中文在线观看| 日韩一区中文字幕| 国产精品无遮挡| 久久久久久久久久看片| 精品免费日韩av| 欧美一区二区在线免费播放 | 欧美日韩国产系列| 91久久精品一区二区三| 99re热这里只有精品免费视频| 国产精品亚洲第一区在线暖暖韩国 | 欧美日韩免费不卡视频一区二区三区 | 最新日韩在线视频| 国产欧美日韩在线看| 久久久久久久电影| 久久久久久久av麻豆果冻| 26uuu久久天堂性欧美| 26uuu欧美日本| 久久免费国产精品| 国产色一区二区| 国产日产欧产精品推荐色| 国产视频视频一区| 国产欧美一区二区精品仙草咪| 国产色产综合产在线视频| 国产欧美一区二区精品忘忧草| 国产欧美视频在线观看| 日本一区免费视频| 中文字幕在线观看一区| 亚洲日本在线看| 亚洲一区二区三区四区五区黄| 亚洲va欧美va天堂v国产综合| 午夜视频在线观看一区二区三区| 亚洲成人av免费| 久久黄色级2电影| 国产资源在线一区| 99在线精品免费| 在线观看一区日韩| 91精品国产综合久久久久久| 精品福利一区二区三区| 欧美激情一区二区三区蜜桃视频| 亚洲日本在线看| 无码av中文一区二区三区桃花岛| 美女网站色91| 国产乱码字幕精品高清av| 成人理论电影网| 91国模大尺度私拍在线视频| 制服丝袜中文字幕一区| 精品嫩草影院久久| 国产精品成人免费| 亚洲成人动漫在线免费观看| 经典三级视频一区| 91蜜桃视频在线| 91精品免费观看| 欧美激情综合网| 亚洲h在线观看| 国产寡妇亲子伦一区二区| 色老汉一区二区三区| 日韩亚洲欧美高清| 国产精品久久久久久久久久久免费看 | 精品国产精品网麻豆系列| 国产精品久久99| 爽好久久久欧美精品| 丰满少妇在线播放bd日韩电影| 在线视频你懂得一区| 精品日韩在线观看| 一区二区三区免费网站| 国内精品伊人久久久久av影院| 99久久综合色| 欧美成人精精品一区二区频| 亚洲欧美激情小说另类| 极品销魂美女一区二区三区| 色噜噜偷拍精品综合在线| 久久综合狠狠综合久久综合88| 一区二区在线观看免费| 国产在线精品一区在线观看麻豆| 一道本成人在线| 2020国产精品久久精品美国| 亚洲蜜桃精久久久久久久| 国产一区二区三区黄视频 | 奇米777欧美一区二区| 99久久亚洲一区二区三区青草| 日韩欧美你懂的| 亚洲综合自拍偷拍| 国产宾馆实践打屁股91| 欧美一区二区三区在线观看| 亚洲欧美成aⅴ人在线观看| 国产在线乱码一区二区三区| 欧美欧美欧美欧美首页| 亚洲精品欧美专区| 粗大黑人巨茎大战欧美成人| 精品少妇一区二区三区在线视频| 亚洲福利一区二区| 色综合天天综合狠狠| 亚洲国产精品99久久久久久久久 | 91在线视频18| 亚洲国产精品成人综合| 国产一区在线看| 精品久久久久久久人人人人传媒 | 美女一区二区视频| 欧美精品一卡两卡| 一区二区三区欧美亚洲| 一本色道久久综合亚洲91| 国产精品家庭影院| 成人激情免费视频| 国产欧美一区二区三区鸳鸯浴| 国产一区三区三区| 精品国产a毛片| 久久精品999| 一区二区三区精品视频在线| 成人免费福利片| 国产精品久久一卡二卡| 成人精品gif动图一区| 日本一区二区免费在线观看视频| 国产美女精品在线| 久久这里只有精品6| 国产剧情一区二区三区| 久久久久亚洲综合| 国产v日产∨综合v精品视频| 国产日韩欧美不卡在线| 成人在线视频首页| 1024成人网| 在线影视一区二区三区| 亚洲国产精品一区二区www | caoporen国产精品视频| 国产精品久久久久久久久晋中 | 欧美一级日韩一级| 麻豆成人久久精品二区三区小说| 精品剧情在线观看| 国产成人一区在线| 国产精品高潮呻吟| 日本道色综合久久| 丝袜美腿亚洲色图| 欧美精品一区二区三区一线天视频| 国内精品久久久久影院一蜜桃| 久久久久久久久岛国免费| 成人午夜av电影| 亚洲精品精品亚洲| 制服丝袜中文字幕亚洲| 久久丁香综合五月国产三级网站| 久久久久国产精品免费免费搜索| 波多野结衣在线aⅴ中文字幕不卡| 一色屋精品亚洲香蕉网站| 欧美日韩国产一二三| 激情六月婷婷综合| 国产精品国产三级国产普通话99| 在线日韩一区二区| 青青青伊人色综合久久| 国产日产精品1区| 欧美日韩一本到| 久久精品噜噜噜成人88aⅴ| 国产精品网站在线播放| 欧美性videosxxxxx| 久草中文综合在线| 国产精品久久久久久久久免费相片| 在线亚洲一区观看| 国产综合色视频| 亚洲精品中文字幕乱码三区| 欧美sm极限捆绑bd| 色综合天天综合狠狠| 麻豆视频观看网址久久| 亚洲三级在线播放| 欧美成人综合网站| 欧美在线视频全部完| 国产精品小仙女| 亚洲第一激情av| 国产欧美日韩三级| 欧美日韩性生活| 成人v精品蜜桃久久一区| 日韩av网站免费在线| 综合久久国产九一剧情麻豆| 日韩欧美成人午夜| 91在线porny国产在线看| 精品无人码麻豆乱码1区2区 |