/* * Created on 15-Jul-2004 * Created by Paul Gardner * Copyright (C) 2004, 2005, 2006 Aelitis, All Rights Reserved. * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License * as published by the Free Software Foundation; either version 2 * of the License, or (at your option) any later version. * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. * * AELITIS, SAS au capital de 46,603.30 euros * 8 Allee Lenotre, La Grille Royale, 78600 Le Mesnil le Roi, France. * */ package org.gudy.azureus2.ui.webplugin; import org.gudy.azureus2.plugins.*; import org.gudy.azureus2.plugins.config.ConfigParameter; import org.gudy.azureus2.plugins.config.ConfigParameterListener; import org.gudy.azureus2.pluginsimpl.remote.*; import org.gudy.azureus2.pluginsimpl.remote.rpexceptions.*; /** * @author parg * */ public class WebPluginAccessController implements RPRequestAccessController { protected boolean view_mode; public WebPluginAccessController( final PluginInterface pi ) { ConfigParameter mode_parameter = pi.getPluginconfig().getPluginParameter( WebPlugin.CONFIG_MODE ); if ( mode_parameter == null ){ view_mode = true; }else{ mode_parameter.addConfigParameterListener( new ConfigParameterListener() { public void configParameterChanged( ConfigParameter param ) { setViewMode( pi ); } }); setViewMode( pi ); } } protected void setViewMode( PluginInterface pi ) { String mode_str = pi.getPluginconfig().getPluginStringParameter( WebPlugin.CONFIG_MODE, ((WebPlugin)pi.getPlugin()).CONFIG_MODE_DEFAULT ); view_mode = !mode_str.equalsIgnoreCase( WebPlugin.CONFIG_MODE_FULL ); } public void checkUploadAllowed() { if ( view_mode ){ throw new RPMethodAccessDeniedException(); } } public void checkAccess( String name, RPRequest request ) { String method = request.getMethod(); // System.out.println( "request: " + name + "/" + method ); if ( view_mode ){ /* request: PluginInterface/getDownloadManager request: PluginInterface/getPluginconfig request: PluginConfig/getPluginStringParameter[String,String] request: DownloadManager/getDownloads request: PluginConfig/getPluginIntParameter[String,int] request: PluginInterface/getIPFilter request: PluginConfig/setPluginParameter[String,int] request: PluginConfig/save */ boolean ok = false; if ( name.equals( "PluginInterface" )){ ok = method.equals( "getPluginconfig" ) || method.equals( "getDownloadManager" ) || method.equals( "getIPFilter" ); }else if ( name.equals( "DownloadManager" )){ ok = method.equals( "getDownloads" ); }else if ( name.equals( "PluginConfig" )){ if ( method.startsWith( "getPlugin") || method.equals( "save" )){ ok = true; }else if ( method.equals( "setPluginParameter[String,int]" )){ String param = (String)request.getParams()[0]; ok = param.equals( "MDConfigModel:refresh_period" ); } } if ( !ok ){ throw new RPMethodAccessDeniedException(); } } } }