1 19 20 package com.sslexplorer.networkplaces; 21 22 import javax.servlet.http.HttpServletRequest ; 23 24 import org.apache.commons.logging.Log; 25 import org.apache.commons.logging.LogFactory; 26 import org.apache.commons.vfs.FileSystemException; 27 import org.apache.commons.vfs.VFS; 28 import org.apache.commons.vfs.impl.StandardFileSystemManager; 29 import org.apache.commons.vfs.provider.bzip2.Bzip2FileProvider; 30 import org.apache.commons.vfs.provider.gzip.GzipFileProvider; 31 import org.apache.commons.vfs.provider.jar.JarFileProvider; 32 import org.apache.commons.vfs.provider.tar.TarFileProvider; 33 import org.apache.commons.vfs.provider.tar.Tbz2FileProvider; 34 import org.apache.commons.vfs.provider.tar.TgzFileProvider; 35 import org.apache.commons.vfs.provider.temp.TemporaryFileProvider; 36 import org.apache.commons.vfs.provider.zip.ZipFileProvider; 37 38 import com.sslexplorer.agent.DefaultAgentManager; 39 import com.sslexplorer.boot.ContextHolder; 40 import com.sslexplorer.boot.Util; 41 import com.sslexplorer.core.CoreMenuTree; 42 import com.sslexplorer.core.CoreServlet; 43 import com.sslexplorer.core.CoreUtil; 44 import com.sslexplorer.core.MenuItem; 45 import com.sslexplorer.core.PageTaskMenuTree; 46 import com.sslexplorer.extensions.ExtensionException; 47 import com.sslexplorer.extensions.types.DefaultPlugin; 48 import com.sslexplorer.navigation.MenuTree; 49 import com.sslexplorer.navigation.NavigationManager; 50 import com.sslexplorer.networkplaces.forms.FileSystemForm; 51 import com.sslexplorer.networkplaces.itemactions.FavoriteOpenWebFolderAction; 52 import com.sslexplorer.networkplaces.itemactions.OpenWebFolderAction; 53 import com.sslexplorer.networkplaces.store.cifs.CIFSProvider; 54 import com.sslexplorer.networkplaces.store.cifs.CIFSStore; 55 import com.sslexplorer.networkplaces.store.file.FileProvider; 56 import com.sslexplorer.networkplaces.store.file.FileStore; 57 import com.sslexplorer.networkplaces.store.ftp.FTPProvider; 58 import com.sslexplorer.networkplaces.store.ftp.FTPStore; 59 import com.sslexplorer.networkplaces.store.jar.JarProvider; 60 import com.sslexplorer.networkplaces.store.jar.JarStore; 61 import com.sslexplorer.networkplaces.store.tar.TarProvider; 62 import com.sslexplorer.networkplaces.store.tar.TarStore; 63 import com.sslexplorer.networkplaces.store.webdav.WebDAVStore; 64 import com.sslexplorer.networkplaces.store.zip.ZipProvider; 65 import com.sslexplorer.networkplaces.store.zip.ZipStore; 66 import com.sslexplorer.policyframework.Permission; 67 import com.sslexplorer.policyframework.PolicyConstants; 68 import com.sslexplorer.policyframework.PolicyDatabase; 69 import com.sslexplorer.policyframework.PolicyDatabaseFactory; 70 import com.sslexplorer.policyframework.PolicyUtil; 71 import com.sslexplorer.policyframework.ResourceType; 72 import com.sslexplorer.policyframework.itemactions.AddToFavoritesAction; 73 import com.sslexplorer.policyframework.itemactions.CloneResourceAction; 74 import com.sslexplorer.policyframework.itemactions.EditResourceAction; 75 import com.sslexplorer.policyframework.itemactions.RemoveFromFavoritesAction; 76 import com.sslexplorer.policyframework.itemactions.RemoveResourceAction; 77 import com.sslexplorer.security.SessionInfo; 78 import com.sslexplorer.table.TableItemActionMenuTree; 79 import com.sslexplorer.vfs.VFSProviderManager; 80 import com.sslexplorer.vfs.utils.UploadHandlerFactory; 81 82 87 public class NetworkPlacePlugin extends DefaultPlugin { 88 89 92 public final static int NETWORK_PLACE_RESOURCE_TYPE_ID = 2; 93 94 97 public final static ResourceType NETWORK_PLACE_RESOURCE_TYPE = new NetworkPlaceResourceType(); 98 99 102 public static final String BUNDLE_ID = "sslexplorer-community-network-places"; 103 104 final static Log log = LogFactory.getLog(NetworkPlacePlugin.class); 105 106 109 public static final String MESSAGE_RESOURCES_KEY = "networkPlaces"; 110 111 114 public NetworkPlacePlugin() { 115 super("/WEB-INF/sslexplorer-community-network-places-tiles-defs.xml", true); 116 } 117 118 123 public void activatePlugin() throws ExtensionException { 124 super.activatePlugin(); 125 try { 126 initDatabase(); 127 initPolicyFramework(); 128 initTableItemActions(); 129 initMainMenu(); 130 initPageTasks(); 131 initFileSystems(); 132 initUploadHandler(); 133 initTagLib(); 134 initService(); 135 CoreUtil.updateEventsTable(NetworkPlacePlugin.MESSAGE_RESOURCES_KEY, NetworkPlacesEventConstants.class); 136 } catch (Exception e) { 137 throw new ExtensionException(ExtensionException.INTERNAL_ERROR, e, "Failed to start."); 138 } 139 } 140 141 void initDatabase() throws Exception { 142 NetworkPlaceDatabaseFactory.getInstance().open(CoreServlet.getServlet(), this.getPluginDefinition()); 143 } 144 145 void initPolicyFramework() throws Exception { 146 147 PolicyDatabase pdb = PolicyDatabaseFactory.getInstance(); 148 149 pdb.registerResourceType(NETWORK_PLACE_RESOURCE_TYPE); 151 NETWORK_PLACE_RESOURCE_TYPE.addPermission(PolicyConstants.PERM_CREATE_EDIT_AND_ASSIGN); 152 NETWORK_PLACE_RESOURCE_TYPE.addPermission(PolicyConstants.PERM_EDIT_AND_ASSIGN); 153 NETWORK_PLACE_RESOURCE_TYPE.addPermission(PolicyConstants.PERM_DELETE); 154 NETWORK_PLACE_RESOURCE_TYPE.addPermission(PolicyConstants.PERM_ASSIGN); 155 } 156 157 void initService() throws InstantiationException , IllegalAccessException { 158 DefaultAgentManager.getInstance().registerService(NetworkPlaceService.class); 159 } 160 161 void initTableItemActions() throws Exception { 162 MenuTree tree = NavigationManager.getMenuTree(TableItemActionMenuTree.MENU_TABLE_ITEM_ACTION_MENU_TREE); 163 tree.addMenuItem("favorites", new FavoriteOpenWebFolderAction()); 164 165 tree.addMenuItem(null, new MenuItem("networkPlace", 167 NetworkPlacePlugin.MESSAGE_RESOURCES_KEY, 168 null, 169 100, 170 false, 171 SessionInfo.ALL_CONTEXTS)); 172 tree.addMenuItem("networkPlace", new AddToFavoritesAction(NetworkPlacePlugin.MESSAGE_RESOURCES_KEY)); 173 tree.addMenuItem("networkPlace", new RemoveFromFavoritesAction(NetworkPlacePlugin.MESSAGE_RESOURCES_KEY)); 174 tree.addMenuItem("networkPlace", new RemoveResourceAction(SessionInfo.MANAGEMENT_CONSOLE_CONTEXT, 175 NetworkPlacePlugin.MESSAGE_RESOURCES_KEY)); 176 tree.addMenuItem("networkPlace", new EditResourceAction(SessionInfo.MANAGEMENT_CONSOLE_CONTEXT, 177 NetworkPlacePlugin.MESSAGE_RESOURCES_KEY)); 178 tree.addMenuItem("networkPlace", new CloneResourceAction(SessionInfo.MANAGEMENT_CONSOLE_CONTEXT, 179 NetworkPlacePlugin.MESSAGE_RESOURCES_KEY)); 180 tree.addMenuItem("networkPlace", new OpenWebFolderAction(NetworkPlacePlugin.MESSAGE_RESOURCES_KEY)); 181 } 182 183 void initMainMenu() throws Exception { 184 MenuTree tree = NavigationManager.getMenuTree(CoreMenuTree.MENU_ITEM_MENU_TREE); 185 186 tree.addMenuItem("resources", new MenuItem("userNetworkPlaces", 187 NetworkPlacePlugin.MESSAGE_RESOURCES_KEY, 188 "/showUserNetworkPlaces.do", 189 500, 190 true, 191 null, 192 SessionInfo.USER_CONSOLE_CONTEXT, 193 null, 194 null, 195 NETWORK_PLACE_RESOURCE_TYPE)); 196 tree.addMenuItem("globalResources", new MenuItem("networkPlaces", 197 NetworkPlacePlugin.MESSAGE_RESOURCES_KEY, 198 "/showNetworkPlaces.do", 199 200, 200 true, 201 null, 202 SessionInfo.MANAGEMENT_CONSOLE_CONTEXT, 203 NETWORK_PLACE_RESOURCE_TYPE, 204 new Permission[] { PolicyConstants.PERM_CREATE_EDIT_AND_ASSIGN, 205 PolicyConstants.PERM_EDIT_AND_ASSIGN, 206 PolicyConstants.PERM_DELETE, 207 PolicyConstants.PERM_ASSIGN }, 208 null) { 209 public boolean isAvailable(int checkNavigationContext, SessionInfo info, HttpServletRequest request) { 210 boolean available = super.isAvailable(checkNavigationContext, info, request); 211 if (available) { 212 try { 213 PolicyUtil.checkPermissions(NETWORK_PLACE_RESOURCE_TYPE, 214 new Permission[] { PolicyConstants.PERM_CREATE_EDIT_AND_ASSIGN, 215 PolicyConstants.PERM_EDIT_AND_ASSIGN, 216 PolicyConstants.PERM_DELETE, 217 PolicyConstants.PERM_ASSIGN }, 218 request); 219 available = true; 220 } catch (Exception e1) { 221 available = false; 222 } 223 } 224 return available; 225 } 226 }); 227 } 228 229 void initPageTasks() throws Exception { 230 MenuTree tree = NavigationManager.getMenuTree(PageTaskMenuTree.PAGE_TASK_MENU_TREE); 231 232 tree.addMenuItem(null, new MenuItem("showNetworkPlaces", null, null, 100, false, SessionInfo.MANAGEMENT_CONSOLE_CONTEXT)); 234 tree.addMenuItem("showNetworkPlaces", new MenuItem("createNetworkPlace", 235 NetworkPlacePlugin.MESSAGE_RESOURCES_KEY, 236 "/defaultNetworkPlaceDetails.do", 237 100, 238 true, 239 "_self", 240 SessionInfo.MANAGEMENT_CONSOLE_CONTEXT, 241 NETWORK_PLACE_RESOURCE_TYPE, 242 new Permission[] { PolicyConstants.PERM_CREATE_EDIT_AND_ASSIGN })); 243 244
|