001/* 002 * Stallion Core: A Modern Web Framework 003 * 004 * Copyright (C) 2015 - 2016 Stallion Software LLC. 005 * 006 * This program is free software: you can redistribute it and/or modify it under the terms of the 007 * GNU General Public License as published by the Free Software Foundation, either version 2 of 008 * the License, or (at your option) any later version. This program is distributed in the hope that 009 * it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of 010 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public 011 * License for more details. You should have received a copy of the GNU General Public License 012 * along with this program. If not, see <http://www.gnu.org/licenses/gpl-2.0.html>. 013 * 014 * 015 * 016 */ 017 018package io.stallion.plugins.javascript; 019 020 021import jdk.nashorn.api.scripting.ClassFilter; 022 023 024public class SandboxClassFilter implements ClassFilter { 025 private Sandbox box; 026 private boolean disabled = false; 027 028 public SandboxClassFilter(Sandbox box) { 029 this.box = box; 030 } 031 032 033 @Override 034 public boolean exposeToScripts(String s) { 035 if (disabled) { 036 return true; 037 } 038 if (box.getWhitelist().getClasses().contains(s)) { 039 return true; 040 }; 041 if (SandboxedClassLoader.DEFAULT_WHITE_LIST.contains(s)) { 042 return true; 043 } 044 return false; 045 } 046 047 048 public boolean isDisabled() { 049 return disabled; 050 } 051 052 public SandboxClassFilter setDisabled(boolean disabled) { 053 this.disabled = disabled; 054 return this; 055 } 056 057}