⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 applicationstore.java

📁 这是linux下ssl vpn的实现程序
💻 JAVA
字号:
package com.sslexplorer.vfs.store.apps;

import java.io.IOException;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;

import org.apache.commons.vfs.FileObject;

import com.sslexplorer.boot.Util;
import com.sslexplorer.extensions.ExtensionBundle;
import com.sslexplorer.extensions.store.ExtensionStore;
import com.sslexplorer.security.SessionInfo;
import com.sslexplorer.vfs.DefaultNetworkPlace;
import com.sslexplorer.vfs.NetworkPlace;
import com.sslexplorer.vfs.store.file.FileMount;
import com.sslexplorer.vfs.utils.URI;
import com.sslexplorer.vfs.utils.URI.MalformedURIException;
import com.sslexplorer.vfs.webdav.AbstractStore;
import com.sslexplorer.vfs.webdav.DAVMount;
import com.sslexplorer.vfs.webdav.DAVResource;
import com.sslexplorer.vfs.webdav.DAVTransaction;
import com.sslexplorer.vfs.webdav.DAVUtilities;
import com.sslexplorer.vfs.webdav.FileObjectDAVResource;

/**
 * {@link AbstractStore} implementation that creates mounts based on the
 * applications available in the <i>Extension Store</i>.
 * <p>
 * This is used by HTML applications and the Agent (for Java application) to
 * download files required.
 * <p>
 * It hides folders called <i>private</i> or <i>upgrade</i>.
 * 
 * @author Brett Smith <a href="mailto: brett@3sp.com">&lt;brett@3sp.com&gt;</a>
 * @version $Revision: 1.22 $
 */
public class ApplicationStore extends AbstractStore {

    /**
     * Constructor.
     */
    public ApplicationStore() {
        super("apps", "UTF-8");
    }

    /*
     * (non-Javadoc)
     * 
     * @see com.sslexplorer.vfs.webdav.AbstractStore#getMountFromString(java.lang.String,
     *      com.sslexplorer.security.SessionInfo)
     */
    public DAVMount getMountFromString(String mountName, SessionInfo session) {
        try {
            if (ExtensionStore.getInstance().getExtensionBundle(mountName) != null) {
                ExtensionBundle b = ExtensionStore.getInstance().getExtensionBundle(mountName);
                return new ApplicationStoreMount(b);
            } else
                return null;
        } catch (Exception e) {
            return null;
        }

    }

    /* (non-Javadoc)
     * @see com.sslexplorer.vfs.webdav.DAVStore#getMountIterator(com.sslexplorer.vfs.webdav.DAVTransaction)
     */
    public Iterator getMountIterator(DAVTransaction transaction) throws Exception {
        Iterator itr = ExtensionStore.getInstance().getExtensionBundles().iterator();
        List l = new ArrayList();
        while (itr.hasNext()) {
            ExtensionBundle b = (ExtensionBundle) itr.next();
            l.add(new ApplicationStoreMount(b));
        }
        return l.iterator();
    }
    
    /* (non-Javadoc)
     * @see com.sslexplorer.vfs.webdav.DAVStore#validateUserEnteredPath(java.lang.String)
     */
    public String validateUserEnteredPath(String path) throws IllegalArgumentException {
        throw new IllegalArgumentException();
    }

    class ApplicationStoreMount extends FileMount {
        ApplicationStoreMount(ExtensionBundle bundle) throws MalformedURIException {
            super(new DefaultNetworkPlace(0, "apps", bundle.getId(), bundle.getDescription(), bundle.getBaseDir().toURI().toASCIIString(),
                            NetworkPlace.TYPE_HIDDEN, false, false, false, false, 0, null, null), ApplicationStore.this);
        }
        
        public DAVResource getResource(String path, DAVTransaction transaction) throws IOException {
            if(path.equalsIgnoreCase("private") || path.equalsIgnoreCase("upgrade")) {
                throw new IOException("Permission denied.");
            }
            return super.getResource(path, transaction);
        }

        public FileObject createVFSFileObject(String path, DAVTransaction transaction) throws IOException {
            URI uri = new URI(this.getNetworkPlace().getUri());
            uri.setPath(DAVUtilities.concatenatePaths(uri.getPath(), path));
            FileObject root = getStore().getRepository().getFileSystemManager().resolveFile(uri.toString());
            return root;
        }
    }

    public char[] getGuestPassword(DAVTransaction transaction) {
        return null;
    }

    public String getGuestUsername(DAVTransaction transaction) {
        return null;
    }
    
    public boolean isFireEvents() {
        return false;
    }
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -