diff --git a/bigbluebutton-web/.classpath b/bigbluebutton-web/.classpath index a413207646ba6547d7f7439cf97f9a8535fcb4aa..1778a370d14de5c2e0fd290d545cd10496409c24 100644 --- a/bigbluebutton-web/.classpath +++ b/bigbluebutton-web/.classpath @@ -1,96 +1,95 @@ <?xml version="1.0" encoding="UTF-8"?> <classpath> - <classpathentry kind="src" path="src/java"/> - <classpathentry kind="src" path="src/groovy"/> - <classpathentry kind="src" path="grails-app/conf"/> - <classpathentry kind="src" path="grails-app/controllers"/> - <classpathentry kind="src" path="grails-app/domain"/> - <classpathentry kind="src" path="grails-app/services"/> - <classpathentry kind="src" path="grails-app/taglib"/> - <classpathentry kind="src" path="test/integration"/> - <classpathentry kind="src" path="test/unit"/> - <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"/> - <classpathentry kind="lib" path="lib/asterisk-java-0.3.1.jar"/> - <classpathentry kind="lib" path="lib/groovy-all-1.5.4.jar"/> - <classpathentry kind="lib" path="lib/mysql-connector-java-5.1.6-bin.jar"/> - <classpathentry kind="lib" path="lib/commons-httpclient.jar"/> - <classpathentry kind="lib" path="lib/commons-codec-1.3.jar"/> - <classpathentry kind="var" path="GRAILS_HOME/ant/lib/ant.jar"/> - <classpathentry kind="var" path="GRAILS_HOME/lib/ant-junit.jar"/> - <classpathentry kind="var" path="GRAILS_HOME/lib/ant-launcher.jar"/> - <classpathentry kind="var" path="GRAILS_HOME/lib/ant-nodeps.jar"/> - <classpathentry kind="var" path="GRAILS_HOME/lib/ant-trax.jar"/> - <classpathentry kind="var" path="GRAILS_HOME/lib/ant.jar"/> - <classpathentry kind="var" path="GRAILS_HOME/lib/antlr-2.7.6.jar"/> - <classpathentry kind="var" path="GRAILS_HOME/lib/backport-util-concurrent-3.0.jar"/> - <classpathentry kind="var" path="GRAILS_HOME/lib/cglib-nodep-2.1_3.jar"/> - <classpathentry kind="var" path="GRAILS_HOME/lib/commons-beanutils-1.7.0.jar"/> - <classpathentry kind="var" path="GRAILS_HOME/lib/commons-cli-1.0.jar"/> - <classpathentry kind="var" path="GRAILS_HOME/lib/commons-codec-1.3.jar"/> - <classpathentry kind="var" path="GRAILS_HOME/lib/commons-collections-3.2.jar"/> - <classpathentry kind="var" path="GRAILS_HOME/lib/commons-dbcp-1.2.1.jar"/> - <classpathentry kind="var" path="GRAILS_HOME/lib/commons-el-1.0.jar"/> - <classpathentry kind="var" path="GRAILS_HOME/lib/commons-fileupload-1.1.1.jar"/> - <classpathentry kind="var" path="GRAILS_HOME/lib/commons-io-1.4.jar"/> - <classpathentry kind="var" path="GRAILS_HOME/lib/commons-lang-2.1.jar"/> - <classpathentry kind="var" path="GRAILS_HOME/lib/commons-logging-1.1.jar"/> - <classpathentry kind="var" path="GRAILS_HOME/lib/commons-pool-1.2.jar"/> - <classpathentry kind="var" path="GRAILS_HOME/lib/commons-validator-1.3.0.jar"/> - <classpathentry kind="var" path="GRAILS_HOME/lib/dom4j-1.6.1.jar"/> - <classpathentry kind="var" path="GRAILS_HOME/lib/ehcache-1.5.0.jar"/> - <classpathentry kind="var" path="GRAILS_HOME/lib/ejb3-persistence.jar"/> - <classpathentry kind="var" path="GRAILS_HOME/lib/groovy-all-1.5.6.jar"/> - <classpathentry kind="var" path="GRAILS_HOME/lib/hibernate-annotations.jar"/> - <classpathentry kind="var" path="GRAILS_HOME/lib/hibernate-commons-annotations.jar"/> - <classpathentry kind="var" path="GRAILS_HOME/lib/hibernate3.jar"/> - <classpathentry kind="var" path="GRAILS_HOME/lib/hsqldb-1.8.0.5.jar"/> - <classpathentry kind="var" path="GRAILS_HOME/lib/jasper-compiler-5.5.15.jar"/> - <classpathentry kind="var" path="GRAILS_HOME/lib/jasper-compiler-jdt-5.5.15.jar"/> - <classpathentry kind="var" path="GRAILS_HOME/lib/jasper-runtime-5.5.15.jar"/> - <classpathentry kind="var" path="GRAILS_HOME/lib/jaxen-1.1-beta-11.jar"/> - <classpathentry kind="var" path="GRAILS_HOME/lib/jdbc2_0-stdext.jar"/> - <classpathentry kind="var" path="GRAILS_HOME/lib/jetty-6.1.12.jar"/> - <classpathentry kind="var" path="GRAILS_HOME/lib/jetty-naming-6.1.12.jar"/> - <classpathentry kind="var" path="GRAILS_HOME/lib/jetty-plus-6.1.12.jar"/> - <classpathentry kind="var" path="GRAILS_HOME/lib/jetty-util-6.1.12.jar"/> - <classpathentry kind="var" path="GRAILS_HOME/lib/jline-0.9.91.jar"/> - <classpathentry kind="var" path="GRAILS_HOME/lib/jsp-api-2.0.jar"/> - <classpathentry kind="var" path="GRAILS_HOME/lib/jsr107cache-1.0.jar"/> - <classpathentry kind="var" path="GRAILS_HOME/lib/jstl-2.3.jar"/> - <classpathentry kind="var" path="GRAILS_HOME/lib/jstl-2.4.jar"/> - <classpathentry kind="var" path="GRAILS_HOME/lib/jta.jar"/> - <classpathentry kind="var" path="GRAILS_HOME/lib/junit-3.8.2.jar"/> - <classpathentry kind="var" path="GRAILS_HOME/lib/log4j-1.2.15.jar"/> - <classpathentry kind="var" path="GRAILS_HOME/lib/ognl-2.6.9.jar"/> - <classpathentry kind="var" path="GRAILS_HOME/lib/oro-2.0.8.jar"/> - <classpathentry kind="var" path="GRAILS_HOME/lib/oscache-2.4.1.jar"/> - <classpathentry kind="var" path="GRAILS_HOME/lib/serializer.jar"/> - <classpathentry kind="var" path="GRAILS_HOME/lib/servlet-api-2.5-6.1.4.jar"/> - <classpathentry kind="var" path="GRAILS_HOME/lib/sitemesh-2.3.jar"/> - <classpathentry kind="var" path="GRAILS_HOME/lib/spring-2.5.6.jar"/> - <classpathentry kind="var" path="GRAILS_HOME/lib/spring-binding-2.0-m1.jar"/> - <classpathentry kind="var" path="GRAILS_HOME/lib/spring-test.jar"/> - <classpathentry kind="var" path="GRAILS_HOME/lib/spring-webflow-2.0-m1.jar"/> - <classpathentry kind="var" path="GRAILS_HOME/lib/spring-webmvc.jar"/> - <classpathentry kind="var" path="GRAILS_HOME/lib/standard-2.3.jar"/> - <classpathentry kind="var" path="GRAILS_HOME/lib/standard-2.4.jar"/> - <classpathentry kind="var" path="GRAILS_HOME/lib/start.jar"/> - <classpathentry kind="var" path="GRAILS_HOME/lib/svnkit-1.2.0.jar"/> - <classpathentry kind="var" path="GRAILS_HOME/lib/xalan.jar"/> - <classpathentry kind="var" path="GRAILS_HOME/lib/xercesImpl.jar"/> - <classpathentry kind="var" path="GRAILS_HOME/lib/xpp3_min-1.1.3.4.O.jar"/> - <classpathentry kind="var" path="GRAILS_HOME/lib/xstream-1.2.1.jar"/> - <classpathentry kind="var" path="GRAILS_HOME/dist/grails-cli-1.0.4.jar"/> - <classpathentry kind="var" path="GRAILS_HOME/dist/grails-core-1.0.4.jar"/> - <classpathentry kind="var" path="GRAILS_HOME/dist/grails-crud-1.0.4.jar"/> - <classpathentry kind="var" path="GRAILS_HOME/dist/grails-gorm-1.0.4.jar"/> - <classpathentry kind="var" path="GRAILS_HOME/dist/grails-spring-1.0.4.jar"/> - <classpathentry kind="var" path="GRAILS_HOME/dist/grails-test-1.0.4.jar"/> - <classpathentry kind="var" path="GRAILS_HOME/dist/grails-web-1.0.4.jar"/> - <classpathentry kind="var" path="GRAILS_HOME/dist/grails-webflow-1.0.4.jar"/> - <classpathentry kind="lib" path="plugins/jsecurity-0.3/lib/jsecurity-jdk14.jar"/> - <classpathentry kind="lib" path="lib/activemq-core-5.1.0.jar"/> - <classpathentry kind="lib" path="lib/geronimo-j2ee-management_1.0_spec-1.0.jar"/> - <classpathentry kind="lib" path="lib/geronimo-jms_1.1_spec-1.0.jar"/> - <classpathentry kind="output" path="web-app/WEB-INF/classes"/> +<classpathentry kind="src" path="src/java"/> +<classpathentry kind="src" path="src/groovy"/> +<classpathentry kind="src" path="grails-app/conf"/> +<classpathentry kind="src" path="grails-app/controllers"/> +<classpathentry kind="src" path="grails-app/domain"/> +<classpathentry kind="src" path="grails-app/services"/> +<classpathentry kind="src" path="grails-app/taglib"/> +<classpathentry kind="src" path="test/integration"/> +<classpathentry kind="src" path="test/unit"/> +<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"/> +<classpathentry kind="lib" path="lib/asterisk-java-0.3.1.jar"/> +<classpathentry kind="lib" path="lib/groovy-all-1.5.4.jar"/> +<classpathentry kind="lib" path="lib/mysql-connector-java-5.1.6-bin.jar"/> +<classpathentry kind="lib" path="lib/commons-httpclient.jar"/> +<classpathentry kind="lib" path="lib/commons-codec-1.3.jar"/> +<classpathentry kind="lib" path="plugins/jsecurity-0.3/lib/jsecurity-jdk14.jar"/> +<classpathentry kind="lib" path="lib/activemq-core-5.1.0.jar"/> +<classpathentry kind="lib" path="lib/geronimo-j2ee-management_1.0_spec-1.0.jar"/> +<classpathentry kind="lib" path="lib/geronimo-jms_1.1_spec-1.0.jar"/> +<classpathentry kind="output" path="web-app/WEB-INF/classes"/> +<classpathentry kind="var" path="GRAILS_HOME/ant/lib/ant.jar"/> +<classpathentry kind="var" path="GRAILS_HOME/lib/commons-pool-1.2.jar" /> +<classpathentry kind="var" path="GRAILS_HOME/lib/xpp3_min-1.1.3.4.O.jar" /> +<classpathentry kind="var" path="GRAILS_HOME/lib/spring-webmvc-2.5.6.jar" /> +<classpathentry kind="var" path="GRAILS_HOME/lib/sitemesh-2.4.jar" /> +<classpathentry kind="var" path="GRAILS_HOME/lib/ehcache-1.5.0.jar" /> +<classpathentry kind="var" path="GRAILS_HOME/lib/commons-beanutils-1.7.0.jar" /> +<classpathentry kind="var" path="GRAILS_HOME/lib/servlet-api-2.5-6.1.14.jar" /> +<classpathentry kind="var" path="GRAILS_HOME/lib/jetty-6.1.14.jar" /> +<classpathentry kind="var" path="GRAILS_HOME/lib/slf4j-log4j12-1.5.6.jar" /> +<classpathentry kind="var" path="GRAILS_HOME/lib/org.springframework.webflow-2.0.3.RELEASE.jar" /> +<classpathentry kind="var" path="GRAILS_HOME/lib/commons-cli-1.0.jar" /> +<classpathentry kind="var" path="GRAILS_HOME/lib/standard-2.4.jar" /> +<classpathentry kind="var" path="GRAILS_HOME/lib/commons-codec-1.3.jar" /> +<classpathentry kind="var" path="GRAILS_HOME/lib/serializer.jar" /> +<classpathentry kind="var" path="GRAILS_HOME/lib/commons-lang-2.4.jar" /> +<classpathentry kind="var" path="GRAILS_HOME/lib/ant-nodeps-1.7.0.jar" /> +<classpathentry kind="var" path="GRAILS_HOME/lib/commons-validator-1.3.0.jar" /> +<classpathentry kind="var" path="GRAILS_HOME/lib/spring-test-2.5.6.jar" /> +<classpathentry kind="var" path="GRAILS_HOME/lib/backport-util-concurrent-3.0.jar" /> +<classpathentry kind="var" path="GRAILS_HOME/lib/svnkit-1.2.0.jar" /> +<classpathentry kind="var" path="GRAILS_HOME/lib/slf4j-api-1.5.6.jar" /> +<classpathentry kind="var" path="GRAILS_HOME/lib/commons-io-1.4.jar" /> +<classpathentry kind="var" path="GRAILS_HOME/lib/junit-3.8.2.jar" /> +<classpathentry kind="var" path="GRAILS_HOME/lib/ant-launcher-1.7.0.jar" /> +<classpathentry kind="var" path="GRAILS_HOME/lib/spring-2.5.6.jar" /> +<classpathentry kind="var" path="GRAILS_HOME/lib/jstl-2.3.jar" /> +<classpathentry kind="var" path="GRAILS_HOME/lib/org.springframework.js-2.0.3.RELEASE.jar" /> +<classpathentry kind="var" path="GRAILS_HOME/lib/ant-1.7.0.jar" /> +<classpathentry kind="var" path="GRAILS_HOME/lib/gant_groovy1.6-1.6.0.jar" /> +<classpathentry kind="var" path="GRAILS_HOME/lib/ant-trax.jar" /> +<classpathentry kind="var" path="GRAILS_HOME/lib/ognl-2.6.9.jar" /> +<classpathentry kind="var" path="GRAILS_HOME/lib/jetty-util-6.1.14.jar" /> +<classpathentry kind="var" path="GRAILS_HOME/lib/jline-0.9.91.jar" /> +<classpathentry kind="var" path="GRAILS_HOME/lib/jasper-compiler-jdt-5.5.15.jar" /> +<classpathentry kind="var" path="GRAILS_HOME/lib/hsqldb-1.8.0.5.jar" /> +<classpathentry kind="var" path="GRAILS_HOME/lib/antlr-2.7.6.jar" /> +<classpathentry kind="var" path="GRAILS_HOME/lib/org.springframework.binding-2.0.3.RELEASE.jar" /> +<classpathentry kind="var" path="GRAILS_HOME/lib/jasper-compiler-5.5.15.jar" /> +<classpathentry kind="var" path="GRAILS_HOME/lib/log4j-1.2.15.jar" /> +<classpathentry kind="var" path="GRAILS_HOME/lib/commons-dbcp-1.2.1.jar" /> +<classpathentry kind="var" path="GRAILS_HOME/lib/oro-2.0.8.jar" /> +<classpathentry kind="var" path="GRAILS_HOME/lib/jstl-2.4.jar" /> +<classpathentry kind="var" path="GRAILS_HOME/lib/commons-collections-3.2.jar" /> +<classpathentry kind="var" path="GRAILS_HOME/lib/jsr107cache-1.0.jar" /> +<classpathentry kind="var" path="GRAILS_HOME/lib/jsp-api-2.1.jar" /> +<classpathentry kind="var" path="GRAILS_HOME/lib/jetty-naming-6.1.14.jar" /> +<classpathentry kind="var" path="GRAILS_HOME/lib/ivy-2.0.0.jar" /> +<classpathentry kind="var" path="GRAILS_HOME/lib/jasper-runtime-5.5.15.jar" /> +<classpathentry kind="var" path="GRAILS_HOME/lib/start.jar" /> +<classpathentry kind="var" path="GRAILS_HOME/lib/ejb3-persistence-3.3.0.jar" /> +<classpathentry kind="var" path="GRAILS_HOME/lib/jetty-plus-6.1.14.jar" /> +<classpathentry kind="var" path="GRAILS_HOME/lib/commons-el-1.0.jar" /> +<classpathentry kind="var" path="GRAILS_HOME/lib/cglib-nodep-2.1_3.jar" /> +<classpathentry kind="var" path="GRAILS_HOME/lib/jsp-api-2.0.jar" /> +<classpathentry kind="var" path="GRAILS_HOME/lib/commons-fileupload-1.2.1.jar" /> +<classpathentry kind="var" path="GRAILS_HOME/lib/oscache-2.4.1.jar" /> +<classpathentry kind="var" path="GRAILS_HOME/lib/standard-2.3.jar" /> +<classpathentry kind="var" path="GRAILS_HOME/lib/groovy-all-1.6.3.jar" /> +<classpathentry kind="var" path="GRAILS_HOME/lib/ant-junit-1.7.0.jar" /> +<classpathentry kind="var" path="GRAILS_HOME/lib/jta-1.1.jar" /> +<classpathentry kind="var" path="GRAILS_HOME/lib/jcl-over-slf4j-1.5.6.jar" /> +<classpathentry kind="var" path="GRAILS_HOME/dist/grails-gorm-1.1.1.jar" /> +<classpathentry kind="var" path="GRAILS_HOME/dist/grails-scripts-1.1.1.jar" /> +<classpathentry kind="var" path="GRAILS_HOME/dist/grails-webflow-1.1.1.jar" /> +<classpathentry kind="var" path="GRAILS_HOME/dist/grails-core-1.1.1.jar" /> +<classpathentry kind="var" path="GRAILS_HOME/dist/grails-test-1.1.1.jar" /> +<classpathentry kind="var" path="GRAILS_HOME/dist/grails-crud-1.1.1.jar" /> +<classpathentry kind="var" path="GRAILS_HOME/dist/grails-spring-1.1.1.jar" /> +<classpathentry kind="var" path="GRAILS_HOME/dist/grails-bootstrap-1.1.1.jar" /> +<classpathentry kind="var" path="GRAILS_HOME/dist/grails-resources-1.1.1.jar" /> +<classpathentry kind="var" path="GRAILS_HOME/dist/grails-web-1.1.1.jar" /> </classpath> diff --git a/bigbluebutton-web/application.properties b/bigbluebutton-web/application.properties index 1c1611e8fecbaaad87d01b0127efcf97b82bf67f..4f03899aa76d910fceeae350edb4486a89f0c765 100644 --- a/bigbluebutton-web/application.properties +++ b/bigbluebutton-web/application.properties @@ -1,5 +1,8 @@ -#Fri May 08 11:03:16 EDT 2009 -app.version=0.1 -app.servlet.version=2.4 -app.grails.version=1.0.4 -app.name=bigbluebutton +#utf-8 +#Wed Sep 16 13:51:44 EDT 2009 +app.version=0.1 +app.servlet.version=2.4 +app.grails.version=1.1.1 +plugins.hibernate=1.1.1 +plugins.jsecurity=0.4.1 +app.name=bigbluebutton diff --git a/bigbluebutton-web/bigbluebutton.launch b/bigbluebutton-web/bigbluebutton.launch index c211c2f25f965cb49e84d801728c23e5873704cd..99e07b1b16cad9c5e1971953857572334f0cf3d3 100644 --- a/bigbluebutton-web/bigbluebutton.launch +++ b/bigbluebutton-web/bigbluebutton.launch @@ -1,20 +1,19 @@ <?xml version="1.0" encoding="UTF-8"?> <launchConfiguration type="org.eclipse.jdt.launching.localJavaApplication"> -<booleanAttribute key="org.eclipse.jdt.launching.DEFAULT_CLASSPATH" value="false"/> -<stringAttribute key="org.eclipse.jdt.launching.MAIN_TYPE" value="grails.util.GrailsMain"/> -<booleanAttribute key="org.eclipse.jdt.debug.ui.INCLUDE_EXTERNAL_JARS" value="true"/> -<listAttribute key="org.eclipse.jdt.launching.CLASSPATH"> -<listEntry value="<?xml version="1.0" encoding="UTF-8"?> <runtimeClasspathEntry containerPath="org.eclipse.jdt.launching.JRE_CONTAINER" javaProject="bigbluebutton" path="1" type="4"/> "/> -<listEntry value="<?xml version="1.0" encoding="UTF-8"?> <runtimeClasspathEntry id="org.eclipse.jdt.launching.classpathentry.defaultClasspath"> <memento exportedEntriesOnly="false" project="bigbluebutton"/> </runtimeClasspathEntry> "/> -<listEntry value="<?xml version="1.0" encoding="UTF-8"?> <runtimeClasspathEntry internalArchive="/bigbluebutton" path="3" type="2"/> "/> +<listAttribute key="org.eclipse.debug.core.MAPPED_RESOURCE_PATHS"> +<listEntry value="/bigbluebutton"/> </listAttribute> <listAttribute key="org.eclipse.debug.core.MAPPED_RESOURCE_TYPES"> <listEntry value="4"/> </listAttribute> -<stringAttribute key="org.eclipse.jdt.launching.PROJECT_ATTR" value="bigbluebutton"/> -<stringAttribute key="org.eclipse.jdt.launching.VM_ARGUMENTS" value="-Dbase.dir=${project_loc} -Dserver.port=8080 -Dgrails.env=development"/> -<listAttribute key="org.eclipse.debug.core.MAPPED_RESOURCE_PATHS"> -<listEntry value="/bigbluebutton"/> -</listAttribute> <booleanAttribute key="org.eclipse.debug.core.appendEnvironmentVariables" value="true"/> +<listAttribute key="org.eclipse.jdt.launching.CLASSPATH"> +<listEntry value="<?xml version="1.0" encoding="UTF-8"?> <runtimeClasspathEntry containerPath="org.eclipse.jdt.launching.JRE_CONTAINER" javaProject="bigbluebutton" path="1" type="4"/> "/> +<listEntry value="<?xml version="1.0" encoding="UTF-8"?> <runtimeClasspathEntry containerPath="GRAILS_HOME/dist/grails-bootstrap-1.1.1.jar" path="3" type="3"/> "/> +<listEntry value="<?xml version="1.0" encoding="UTF-8"?> <runtimeClasspathEntry containerPath="GRAILS_HOME/lib/groovy-all-1.6.3.jar" path="3" type="3"/> "/> +</listAttribute> +<booleanAttribute key="org.eclipse.jdt.launching.DEFAULT_CLASSPATH" value="false"/> +<stringAttribute key="org.eclipse.jdt.launching.MAIN_TYPE" value="grails.util.GrailsMain"/> +<stringAttribute key="org.eclipse.jdt.launching.PROJECT_ATTR" value="bigbluebutton"/> +<stringAttribute key="org.eclipse.jdt.launching.VM_ARGUMENTS" value="-Dbase.dir="${project_loc:bigbluebutton}" -Dserver.port=8080 -Dgrails.env=development"/> </launchConfiguration> diff --git a/bigbluebutton-web/grails-app/conf/Config.groovy b/bigbluebutton-web/grails-app/conf/Config.groovy index 5f773131c89cb3099bbd23ef8353bdb240808a83..ebe67438cbdabbbd9eba9c7f84792fcea5739a97 100644 --- a/bigbluebutton-web/grails-app/conf/Config.groovy +++ b/bigbluebutton-web/grails-app/conf/Config.groovy @@ -102,7 +102,7 @@ environments { * grails.app.controller="debug, stdout, logfile" * } */ - logger.grails.app="debug, stdout, logfile" + //logger.grails.app="debug, stdout, logfile" } } production { @@ -114,7 +114,7 @@ environments { * grails.app.controller="debug, stdout, logfile" * } */ - logger.grails.app="debug, stdout, logfile" + //logger.grails.app="debug, stdout, logfile" } } test { @@ -125,7 +125,7 @@ environments { * grails.app.controller="debug, stdout, logfile" * } */ - logger.grails.app="debug, stdout, logfile" + //logger.grails.app="debug, stdout, logfile" } } } diff --git a/bigbluebutton-web/grails-app/conf/SecurityFilters.groovy b/bigbluebutton-web/grails-app/conf/SecurityFilters.groovy index c53a72c37f1118f26b99994cd50277d454776c05..7748fe37091884cf3d0122a28600a44697fbd4ab 100644 --- a/bigbluebutton-web/grails-app/conf/SecurityFilters.groovy +++ b/bigbluebutton-web/grails-app/conf/SecurityFilters.groovy @@ -1,22 +1,22 @@ -/* - * BigBlueButton - http://www.bigbluebutton.org - * - * Copyright (c) 2008-2009 by respective authors (see below). All rights reserved. - * - * BigBlueButton is free software; you can redistribute it and/or modify it under the - * terms of the GNU Lesser General Public License as published by the Free Software - * Foundation; either version 3 of the License, or (at your option) any later - * version. - * - * BigBlueButton 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 Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public License along - * with BigBlueButton; if not, If not, see <http://www.gnu.org/licenses/>. - * - * $Id: $ - */ +/* + * BigBlueButton - http://www.bigbluebutton.org + * + * Copyright (c) 2008-2009 by respective authors (see below). All rights reserved. + * + * BigBlueButton is free software; you can redistribute it and/or modify it under the + * terms of the GNU Lesser General Public License as published by the Free Software + * Foundation; either version 3 of the License, or (at your option) any later + * version. + * + * BigBlueButton 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 Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public License along + * with BigBlueButton; if not, If not, see <http://www.gnu.org/licenses/>. + * + * $Id: $ + */ class SecurityFilters { def filters = { // Ensure that all controllers and actions require an authenticated user, @@ -27,7 +27,9 @@ class SecurityFilters { //if ((controllerName == "join") || (controllerName == "presentation")) return true switch (controllerName) { - case 'join': + case 'portal': + case 'join': + case 'adhoc': case 'presentation': return true break diff --git a/bigbluebutton-web/grails-app/conf/UrlMappings.groovy b/bigbluebutton-web/grails-app/conf/UrlMappings.groovy index 93b41fffb447cccf5d217007cb58f59706a46a2b..adef496b28a66865e00c0f1c12b580eba9c32662 100644 --- a/bigbluebutton-web/grails-app/conf/UrlMappings.groovy +++ b/bigbluebutton-web/grails-app/conf/UrlMappings.groovy @@ -1,61 +1,68 @@ -/* - * BigBlueButton - http://www.bigbluebutton.org - * - * Copyright (c) 2008-2009 by respective authors (see below). All rights reserved. - * - * BigBlueButton is free software; you can redistribute it and/or modify it under the - * terms of the GNU Lesser General Public License as published by the Free Software - * Foundation; either version 3 of the License, or (at your option) any later - * version. - * - * BigBlueButton 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 Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public License along - * with BigBlueButton; if not, If not, see <http://www.gnu.org/licenses/>. - * - * $Id: $ - */ -class UrlMappings { - static mappings = { -// "/presentation/$presentation_name"(controller:"presentation") { - // println 'executing /presentation/default mapping' - // action = [GET:'show', POST:'upload', DELETE:'delete'] - // } - "/presentation/upload"(controller:"presentation") { - action = [GET:'show', POST:'upload', DELETE:'delete'] - } - - "/presentation/$conference/$room/$presentation_name/slides"(controller:"presentation") { - action = [GET:'numberOfSlides'] - } - - "/presentation/$conference/$room/$presentation_name/slide/$id"(controller:"presentation") { - action = [GET:'showSlide'] - } - - "/presentation/$conference/$room/$presentation_name/thumbnails"(controller:"presentation") { - action = [GET:'numberOfThumbnails'] - } - - "/presentation/$conference/$room/$presentation_name/thumbnail/$id"(controller:"presentation") { - action = [GET:'showThumbnail'] - } - - "/conference-session/$action?/$id?"(controller:"publicScheduledSession") - - "/schedule/$action?/$id?"(controller:"scheduledSession") { -// action = [GET:'show', POST:'create', DELETE:'delete'] - } - - "/$controller/$action?/$id?"{ - constraints { - // apply constraints here - } - } - "500"(view:'/error') - - "/" (controller: 'conference', action: 'list') - } -} +/* + * BigBlueButton - http://www.bigbluebutton.org + * + * Copyright (c) 2008-2009 by respective authors (see below). All rights reserved. + * + * BigBlueButton is free software; you can redistribute it and/or modify it under the + * terms of the GNU Lesser General Public License as published by the Free Software + * Foundation; either version 3 of the License, or (at your option) any later + * version. + * + * BigBlueButton 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 Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public License along + * with BigBlueButton; if not, If not, see <http://www.gnu.org/licenses/>. + * + * $Id: $ + */ +class UrlMappings { + static mappings = { +// "/presentation/$presentation_name"(controller:"presentation") { + // println 'executing /presentation/default mapping' + // action = [GET:'show', POST:'upload', DELETE:'delete'] + // } + "/presentation/upload"(controller:"presentation") { + action = [GET:'show', POST:'upload', DELETE:'delete'] + } + + "/presentation/$conference/$room/$presentation_name/slides"(controller:"presentation") { + action = [GET:'numberOfSlides'] + } + + "/presentation/$conference/$room/$presentation_name/slide/$id"(controller:"presentation") { + action = [GET:'showSlide'] + } + + "/presentation/$conference/$room/$presentation_name/thumbnails"(controller:"presentation") { + action = [GET:'numberOfThumbnails'] + } + + "/presentation/$conference/$room/$presentation_name/thumbnail/$id"(controller:"presentation") { + action = [GET:'showThumbnail'] + } + + "/portal/$action"(controller:"portal") + + "/api/conference"(controller:"adhoc") { + format = 'xml' + action = [GET:'show', POST:'create', DELETE:'delete'] + } + + "/conference-session/$action?/$id?"(controller:"publicScheduledSession") + + "/schedule/$action?/$id?"(controller:"scheduledSession") { +// action = [GET:'show', POST:'create', DELETE:'delete'] + } + + "/$controller/$action?/$id?"{ + constraints { + // apply constraints here + } + } + "500"(view:'/error') + + "/" (controller: 'conference', action: 'list') + } +} diff --git a/bigbluebutton-web/grails-app/controllers/org/bigbluebutton/web/controllers/AdhocController.groovy b/bigbluebutton-web/grails-app/controllers/org/bigbluebutton/web/controllers/AdhocController.groovy new file mode 100644 index 0000000000000000000000000000000000000000..6471f8f4f706082657f66db93b8476e6e5fa5a0d --- /dev/null +++ b/bigbluebutton-web/grails-app/controllers/org/bigbluebutton/web/controllers/AdhocController.groovy @@ -0,0 +1,107 @@ +/* BigBlueButton - http://www.bigbluebutton.org + * + * + * Copyright (c) 2008-2009 by respective authors (see below). All rights reserved. + * + * BigBlueButton is free software; you can redistribute it and/or modify it under the + * terms of the GNU Lesser General Public License as published by the Free Software + * Foundation; either version 3 of the License, or (at your option) any later + * version. + * + * BigBlueButton 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 Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public License along + * with BigBlueButton; if not, If not, see <http://www.gnu.org/licenses/>. + * + * @version $Id: $ + */ +package org.bigbluebutton.web.controllers + +import grails.converters.* +import org.codehaus.groovy.grails.commons.* + +import org.bigbluebutton.presentation.service.AdhocConference +import org.bigbluebutton.web.services.AdhocConferenceService + +class AdhocController { + + AdhocConferenceService adhocConferenceService + + def index = { + log.info "AdhocController#index" + redirect(action:invalid) + } + + def invalid = { + log.info "AdhocController#invalid" + response.addHeader("Cache-Control", "no-cache") + withFormat { + xml { + render(contentType:"text/xml") { + 'response'() { + returncode("FAILED") + messageKey("invalidRequest") + message("Invalid request.") + } + } + } + } + } + + def create = { + println "AdhocController#create" +// if (!adhocConferenceService.enabled) redirect(action:invalid); + + println "Got voiceBridge ${params.voiceBridge}" + adhocConferenceService.createConference(params.voiceBridge) + + AdhocConference conf = adhocConferenceService.getConferenceWithVoiceBridge(params.voiceBridge) + + response.addHeader("Cache-Control", "no-cache") + withFormat { + xml { + println "Rendering as xml" + render(contentType:"text/xml") { + 'response'() { + returncode("SUCCESS") + moderatorToken("${conf.moderatorToken}") + attendeeToken("${conf.attendeeToken}") + } + } + } + } + +// render "Hello world" + } + + def show = { + println "AdhocController#show" + if (!adhocConferenceService.enabled) redirect(action:invalid); + + // println "Got voiceBridge ${params.voiceBridge}" + + AdhocConference conf = adhocConferenceService.getConferenceWithVoiceBridge('85115') + + response.addHeader("Cache-Control", "no-cache") + withFormat { + xml { + render(contentType:"text/xml") { + 'response'() { + returncode("SUCCESS") + moderatorToken("${conf.moderatorToken}") + attendeeToken("${conf.attendeeToken}") + } + } + } + } + + } + + def join = { + String authToken = params.authToken + String fullname = params.fullname + } + +} diff --git a/bigbluebutton-web/grails-app/controllers/org/bigbluebutton/web/controllers/ConferenceController.groovy b/bigbluebutton-web/grails-app/controllers/org/bigbluebutton/web/controllers/ConferenceController.groovy index 02330df786deb34f9d329a2e777336f289ae53f9..0b72cd5871f16aab5c12c526e9f5e8c2946f246c 100644 --- a/bigbluebutton-web/grails-app/controllers/org/bigbluebutton/web/controllers/ConferenceController.groovy +++ b/bigbluebutton-web/grails-app/controllers/org/bigbluebutton/web/controllers/ConferenceController.groovy @@ -30,7 +30,7 @@ class ConferenceController { def index = { redirect(action:list,params:params) } // the delete, save and update actions only accept POST requests - def allowedMethods = [delete:'POST', save:'POST', update:'POST'] + static def allowedMethods = [delete:'POST', save:'POST', update:'POST'] def list = { if(!params.max) params.max = 10 diff --git a/bigbluebutton-web/grails-app/controllers/org/bigbluebutton/web/controllers/PortalController.groovy b/bigbluebutton-web/grails-app/controllers/org/bigbluebutton/web/controllers/PortalController.groovy new file mode 100644 index 0000000000000000000000000000000000000000..d87405fd0277f60d48882da1424960d1df9519f8 --- /dev/null +++ b/bigbluebutton-web/grails-app/controllers/org/bigbluebutton/web/controllers/PortalController.groovy @@ -0,0 +1,300 @@ +/* BigBlueButton - http://www.bigbluebutton.org + * + * + * Copyright (c) 2008-2009 by respective authors (see below). All rights reserved. + * + * BigBlueButton is free software; you can redistribute it and/or modify it under the + * terms of the GNU Lesser General Public License as published by the Free Software + * Foundation; either version 3 of the License, or (at your option) any later + * version. + * + * BigBlueButton 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 Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public License along + * with BigBlueButton; if not, If not, see <http://www.gnu.org/licenses/>. + * + * @author Jeremy Thomerson <jthomerson@genericconf.com> + * @version $Id: $ + */ +package org.bigbluebutton.web.controllers + +import org.jsecurity.authc.UnknownAccountException +import org.bigbluebutton.web.domain.ScheduledSession +import org.bigbluebutton.web.domain.Conference +import org.bigbluebutton.web.domain.User +import grails.converters.* +import org.codehaus.groovy.grails.commons.* +import org.mortbay.log.Log; + +class PortalController { + + def index = { + log.info "PortalController#index" + redirect(action:invalid) + } + + def invalid = { + log.info "PortalController#invalid" + response.addHeader("Cache-Control", "no-cache") + withFormat { + xml { + render(contentType:"text/xml") { + 'response'() { + returncode("FAILED") + messageKey("invalidRequest") + message("Invalid request.") + } + } + } + } + } + + def create = { + log.info "PortalController#create" + Integer atts = Integer.valueOf(params.maxAtts) + def num = params.confNum + def creator = params.creator + def name = params.name + String voiceConferenceBridge = params.voiceConfBridge + String hostPassword = params.hostPW + String moderatorPassword = params.moderatorPW + String attendeePassword = params.attendeePW + + log.info "checking for duplicate conference" + + def existing = Conference.findByConferenceNumber(num) + if (existing != null) { + existing.sessions.each { + if (it.hostPassword == hostPassword && it.attendeePassword == attendeePassword + && it.moderatorPassword == moderatorPassword) { + + // found the one that's attempting to be created + // TODO: this needs more thought - need to better understand the conf number purpose, etc... + log.info "found matching duplicate - returning success w/ warning" + def sess = it + def conf = existing + response.addHeader("Cache-Control", "no-cache") + withFormat { + xml { + render(contentType:"text/xml") { + 'createresp'() { + returncode("SUCCESS") + session("$sess.sessionId") + token("$sess.tokenId") + confID("$conf.id") + messageKey("duplicateWarning") + message("This may be a duplicate. It was retrieved, not created.") + } + } + } + } + } + } + } else { + + def username = "admin@test.com" + User user = User.findByUsername("${username}") + if (!user) { + throw new UnknownAccountException("No account found for user [${username}]") + } + + def conf = new Conference( + name: name, conferenceNumber: num, + user: user, createdBy: creator, updatedBy: creator) + log.info "conf.save() = " + conf.save() + + log.info "conf has errors: " + conf.hasErrors() + if (conf.hasErrors()) { + conf.errors.each { + log.info it + } + } + log.info "conf id: " + conf.id + + String sessionId = UUID.randomUUID() + String tokenId = UUID.randomUUID() + Integer numberOfAttendees = atts + Boolean timeLimited = false + Date startDateTime = new Date() + //Date endDateTime = calendar.getTime() + Date endDateTime = null + + def sess = new ScheduledSession( + name: name, description: name, + createdBy: creator, modifiedBy: creator, sessionId: sessionId, tokenId: tokenId, + numberOfAttendees: atts, timeLimited: timeLimited, startDateTime: startDateTime, + endDateTime: startDateTime, record: false, passwordProtect: true, hostPassword: hostPassword, + moderatorPassword: moderatorPassword, attendeePassword: attendeePassword, + voiceConferenceBridge: voiceConferenceBridge, conference: conf + ) + log.info "sess.save() = " + sess.save() + + log.info "sess has errors: " + sess.hasErrors() + if (sess.hasErrors()) { + sess.errors.each { + log.info it + } + } + log.info "sess id: " + sess.id + + if (sess.id != null) { + log.info "sending success" + response.addHeader("Cache-Control", "no-cache") + withFormat { + xml { + render(contentType:"text/xml") { + 'createresp'() { + returncode("SUCCESS") + session("$sess.sessionId") + token("$sess.tokenId") + confID("$conf.id") + } + } + } + } + } else { + log.info "sending fail" + // TODO: obviously need much better error handling here + response.addHeader("Cache-Control", "no-cache") + withFormat { + xml { + render(contentType:"text/xml") { + 'createresp'() { + returncode("FAIL") + messageKey("generalError") + message("error creating conf") + } + } + } + } + } + } + } + + def join = { + def sess = ScheduledSession.findByTokenId(params.tokenId) + + if(!sess) { + response.addHeader("Cache-Control", "no-cache") + withFormat { + xml { + render(contentType:"text/xml") { + 'joinresp'() { + returncode("FAIL") + messageKey("badTokenId") + message("no session with that tokenId") + } + } + } + } + } else { + def config = ConfigurationHolder.config + def hostURL = config.bigbluebutton.web.serverURL + log.debug "serverURL $hostURL" + def now = new Date().time + def signedIn = false + def role = '' + switch (params.password) { + case sess.hostPassword: + log.debug "Logged in as host" + // Let us set role to MODERATOR for now as we don't support HOST yet + role = "MODERATOR" + signedIn = true + break + case sess.moderatorPassword: + log.debug "Logged in as as moderator" + role = "MODERATOR" + signedIn = true + break + case sess.attendeePassword: + log.debug "Logged in as viewer" + role = "VIEWER" + signedIn = true + break + } + + if (signedIn) { + log.debug "Login successful...setting in session information" + log.info "fullname = " + params.fullname + session["fullname"] = params.fullname + session["role"] = role + session["conference"] = sess.tokenId + session["room"] = sess.sessionId + session["voicebridge"] = sess.voiceConferenceBridge + + session["mode"] = "LIVE" + session["record"] = false + if (sess.record) { + session["record"] = true + } + log.debug "Joining LIVE and recording is ${sess.record}" + log.debug "Displaying session information" + //redirect(action:show) + redirect(url:"${hostURL}/client/BigBlueButton.html") + } else { + response.addHeader("Cache-Control", "no-cache") + withFormat { + xml { + render(contentType:"text/xml") { + 'joinresp'() { + returncode("FAIL") + messageKey("badPass") + message("incorrect password") + } + } + } + } + } + } + } + + def getToken = { + log.info "PortalController#getToken" + def num = params.confNum + String attendeePassword = params.attendeePW + + def conf = Conference.findByConferenceNumber(num) + def found = false + if (conf != null) { + conf.sessions.each { + if (it.attendeePassword == attendeePassword) { + // found the one that's attempting to be created + // TODO: this needs more thought - need to better understand the conf number purpose, etc... + log.info "found matching duplicate - returning success w/ warning" + def sess = it + found = true + response.addHeader("Cache-Control", "no-cache") + withFormat { + xml { + render(contentType:"text/xml") { + 'createresp'() { + returncode("SUCCESS") + session("$sess.sessionId") + token("$sess.tokenId") + confID("$conf.id") + } + } + } + } + } + } + } + + if (!found) { + response.addHeader("Cache-Control", "no-cache") + withFormat { + xml { + render(contentType:"text/xml") { + 'joinresp'() { + returncode("FAIL") + messageKey("confNotFound") + message("no conference found with that number and attendee password") + } + } + } + } + } + } +} diff --git a/bigbluebutton-web/grails-app/controllers/org/bigbluebutton/web/controllers/ScheduledSessionController.groovy b/bigbluebutton-web/grails-app/controllers/org/bigbluebutton/web/controllers/ScheduledSessionController.groovy index 05df418cef513b36902ebedf58ec62a8ae90f143..53d32ad84c35cde76774bb87ee462d0162dd019e 100644 --- a/bigbluebutton-web/grails-app/controllers/org/bigbluebutton/web/controllers/ScheduledSessionController.groovy +++ b/bigbluebutton-web/grails-app/controllers/org/bigbluebutton/web/controllers/ScheduledSessionController.groovy @@ -31,7 +31,7 @@ class ScheduledSessionController { def index = { redirect(action:list,params:params) } // the delete, save and update actions only accept POST requests - def allowedMethods = [delete:'POST', save:'POST', update:'POST'] + static def allowedMethods = [delete:'POST', save:'POST', update:'POST'] def list = { if(!params.max) params.max = 10 diff --git a/bigbluebutton-web/grails-app/controllers/org/bigbluebutton/web/controllers/UserController.groovy b/bigbluebutton-web/grails-app/controllers/org/bigbluebutton/web/controllers/UserController.groovy index 64d06bf46193d696d9ed1aebe02df03f0e7cfe3f..586791f9570df13eb2094db4333b8eb8f34a4f1a 100644 --- a/bigbluebutton-web/grails-app/controllers/org/bigbluebutton/web/controllers/UserController.groovy +++ b/bigbluebutton-web/grails-app/controllers/org/bigbluebutton/web/controllers/UserController.groovy @@ -29,7 +29,7 @@ class UserController { def index = { redirect(action:list,params:params) } // the delete, save and update actions only accept POST requests - def allowedMethods = [delete:'POST', save:'POST', update:'POST'] + static def allowedMethods = [delete:'POST', save:'POST', update:'POST'] def list = { if(!params.max) params.max = 10 diff --git a/bigbluebutton-web/grails-app/services/org/bigbluebutton/web/services/AdhocConferenceService.groovy b/bigbluebutton-web/grails-app/services/org/bigbluebutton/web/services/AdhocConferenceService.groovy new file mode 100644 index 0000000000000000000000000000000000000000..cb8a2b58b96c01d66a4c2412d0d354c0a9313ab9 --- /dev/null +++ b/bigbluebutton-web/grails-app/services/org/bigbluebutton/web/services/AdhocConferenceService.groovy @@ -0,0 +1,113 @@ +/* BigBlueButton - http://www.bigbluebutton.org + * + * + * Copyright (c) 2008-2009 by respective authors (see below). All rights reserved. + * + * BigBlueButton is free software; you can redistribute it and/or modify it under the + * terms of the GNU Lesser General Public License as published by the Free Software + * Foundation; either version 3 of the License, or (at your option) any later + * version. + * + * BigBlueButton 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 Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public License along + * with BigBlueButton; if not, If not, see <http://www.gnu.org/licenses/>. + * + * @version $Id: $ + */ +package org.bigbluebutton.web.services + +import org.bigbluebutton.presentation.service.AdhocConference +import java.util.concurrent.ConcurrentHashMap + +public class AdhocConferenceService{ + + boolean enabled = false + + private final Map<String, AdhocConference> conferences + + public AdhocConferenceService() { + conferences = new ConcurrentHashMap<String, AdhocConference>() + } + + public void createConference(String voiceBridge) { + AdhocConference conference = new AdhocConference(voiceBridge) + if (!conferences.containsKey(conference.voiceBridge)) + conferences.put(conference.voiceBridge, conference) + } + + public void createConference(AdhocConference conference) { + if (!conferences.containsKey(conference.voiceBridge)) + conferences.put(conference.voiceBridge, conference) + } + + public boolean conferenceExistWithVoiceBridge(String voiceBridge) { + return conferences.containsKey(voiceBridge) + } + + /* + * Returns the AdhocConference if present, + * or null if absent. + */ + public AdhocConference getConferenceWithVoiceBridge(String voiceBridge) { + return conferences.get(voiceBridge) + } + + public boolean conferenceExistWithModeratorToken(String token) { + for (Iterator iter = conferences.values().iterator(); iter.hasNext();) { + AdhocConference conf = (AdhocConference) iter.next() + println conf.moderatorToken + if (conf.moderatorToken == token) { + return true + } + } + + return false + } + + /* + * Returns the AdhocConference if present, + * or null if absent. + */ + public AdhocConference getConferenceWithModeratorToken(String token) { + for (Iterator iter = conferences.values().iterator(); iter.hasNext();) { + AdhocConference conf = (AdhocConference) iter.next() + println conf.moderatorToken + if (conf.moderatorToken == token) { + return conf + } + } + + return null + } + + public boolean conferenceExistWithAttendeeToken(String token) { + for (Iterator iter = conferences.values().iterator(); iter.hasNext();) { + AdhocConference conf = (AdhocConference) iter.next() + println conf.attendeeToken + if (conf.attendeeToken == token) { + return true + } + } + + return false + } + + /* + * Returns the AdhocConference if present, + * or null if absent. + */ + public AdhocConference getConferenceWithAttendeeToken(String token) { + for (Iterator iter = conferences.values().iterator(); iter.hasNext();) { + AdhocConference conf = (AdhocConference) iter.next() + println conf.attendeeToken + if (conf.attendeeToken == token) { + return conf + } + } + + return null + } +} diff --git a/bigbluebutton-web/ivy.xml b/bigbluebutton-web/ivy.xml new file mode 100644 index 0000000000000000000000000000000000000000..84e90708e56ae8b5dfc9a6c9be7d21a78af08da6 --- /dev/null +++ b/bigbluebutton-web/ivy.xml @@ -0,0 +1,28 @@ +<ivy-module version="2.0"> + <info organisation="org.example" module="bigbluebutton"/> + <configurations defaultconfmapping="build->default;compile->compile(*),master(*);test,runtime->runtime(*),master(*)"> + <conf name="build"/> + <conf name="compile"/> + <conf name="test" extends="compile"/> + <conf name="runtime" extends="compile"/> + </configurations> + <dependencies> + <dependency org="org.grails" name="grails-bootstrap" rev="1.1.1" conf="build"/> + <dependency org="org.grails" name="grails-scripts" rev="1.1.1" conf="build"/> + <dependency org="org.grails" name="grails-gorm" rev="1.1.1" conf="compile"/> + <dependency org="org.grails" name="grails-web" rev="1.1.1" conf="compile"/> + <dependency org="org.grails" name="grails-test" rev="1.1.1" conf="test"/> + <dependency org="org.slf4j" name="slf4j-log4j12" rev="1.5.5" conf="runtime"/> + <dependency org="opensymphony" name="oscache" rev="2.4" conf="runtime"> + <exclude org="javax.jms" module="jms" name="*" type="*" ext="*" conf="" matcher="exact"/> + <exclude org="commons-logging" module="commons-logging" name="*" type="*" ext="*" conf="" matcher="exact"/> + <exclude org="javax.servlet" module="servlet-api" name="*" type="*" ext="*" conf="" matcher="exact"/> + </dependency> + <dependency org="hsqldb" name="hsqldb" rev="1.8.0.5" conf="runtime"/> + <dependency org="net.sf.ehcache" name="ehcache" rev="1.5.0" conf="runtime"/> + <!-- + <dependency org="mysql" name="mysql-connector-java" rev="5.1.6" conf="runtime"/> + <dependency org="postgresql" name="postgresql" rev="8.3-603.jdbc3" conf="runtime"/> + --> + </dependencies> +</ivy-module> diff --git a/bigbluebutton-web/ivysettings.xml b/bigbluebutton-web/ivysettings.xml new file mode 100644 index 0000000000000000000000000000000000000000..5972c9ad7d9e31576c537cbdc639778d46a71fe6 --- /dev/null +++ b/bigbluebutton-web/ivysettings.xml @@ -0,0 +1,15 @@ +<ivysettings> + <settings defaultResolver="codehaus-plus"/> + <include url="${ivy.default.settings.dir}/ivysettings-public.xml" /> + <include url="${ivy.default.settings.dir}/ivysettings-shared.xml"/> + <include url="${ivy.default.settings.dir}/ivysettings-local.xml" /> + <include url="${ivy.default.settings.dir}/ivysettings-main-chain.xml"/> + <resolvers> + <chain name="codehaus-plus" dual="true"> + <ibiblio name="codehaus-snapshots" root="http://snapshots.repository.codehaus.org" m2compatible="true" changingPattern=".*SNAPSHOT"/> + <ibiblio name="codehaus" root="http://repository.codehaus.org" m2compatible="true"/> + <ibiblio name="javanet" root="http://download.java.net/maven/2/" m2compatible="true"/> + <resolver ref="public"/> + </chain> + </resolvers> +</ivysettings> diff --git a/bigbluebutton-web/src/groovy/org/bigbluebutton/presentation/service/AdhocConference.groovy b/bigbluebutton-web/src/groovy/org/bigbluebutton/presentation/service/AdhocConference.groovy new file mode 100644 index 0000000000000000000000000000000000000000..8b7e5dd7608992d6fe70c19ef5296be0cd981639 --- /dev/null +++ b/bigbluebutton-web/src/groovy/org/bigbluebutton/presentation/service/AdhocConference.groovy @@ -0,0 +1,41 @@ +/* BigBlueButton - http://www.bigbluebutton.org + * + * + * Copyright (c) 2008-2009 by respective authors (see below). All rights reserved. + * + * BigBlueButton is free software; you can redistribute it and/or modify it under the + * terms of the GNU Lesser General Public License as published by the Free Software + * Foundation; either version 3 of the License, or (at your option) any later + * version. + * + * BigBlueButton 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 Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public License along + * with BigBlueButton; if not, If not, see <http://www.gnu.org/licenses/>. + * + * @version $Id: $ + */ +package org.bigbluebutton.presentation.service + + +public final class AdhocConference{ + + final String room + final String moderatorToken + final String attendeeToken + final String voiceBridge + + public AdhocConference(String voiceBridge) { + this(voiceBridge, UUID.randomUUID().toString(), UUID.randomUUID().toString(), UUID.randomUUID().toString()) + } + + public AdhocConference(String voiceBridge, String room, String modToken, String attToken) { + this.voiceBridge = voiceBridge + this.room = room + this.moderatorToken = modToken + this.attendeeToken = attToken + } + +} diff --git a/bigbluebutton-web/test/integration/org/bigbluebutton/web/services/AdhocConferenceServiceTests.groovy b/bigbluebutton-web/test/integration/org/bigbluebutton/web/services/AdhocConferenceServiceTests.groovy new file mode 100644 index 0000000000000000000000000000000000000000..2a9884b0d7236be4fc57889abe64264da06f0e42 --- /dev/null +++ b/bigbluebutton-web/test/integration/org/bigbluebutton/web/services/AdhocConferenceServiceTests.groovy @@ -0,0 +1,47 @@ +package org.bigbluebutton.web.services + +import grails.test.* +import org.bigbluebutton.presentation.service.AdhocConference + +class AdhocConferenceServiceTests extends GrailsUnitTestCase { + protected void setUp() { + super.setUp() + } + + protected void tearDown() { + super.tearDown() + } + + void testConferenceRoomExist() { + AdhocConferenceService service = new AdhocConferenceService() + service.createConference('85115'); + + assertTrue service.conferenceExistWithVoiceBridge('85115') + } + + void testConferenceExistWithModeratorToken() { + AdhocConferenceService service = new AdhocConferenceService() + AdhocConference conf = new AdhocConference('85115', 'test-room', 'modToken', 'attToken') + service.createConference(conf); + + assertTrue service.conferenceExistWithModeratorToken('modToken') + } + + void testGetConferenceExistWithModeratorToken() { + AdhocConferenceService service = new AdhocConferenceService() + AdhocConference conf = new AdhocConference('85115', 'test-room', 'modToken', 'attToken') + service.createConference(conf); + + AdhocConference conf1 = service.getConferenceWithModeratorToken('modToken') + assertEquals conf1.moderatorToken, 'modToken' + } + + void testGetConferenceWithAttendeeToken() { + AdhocConferenceService service = new AdhocConferenceService() + AdhocConference conf = new AdhocConference('85115', 'test-room', 'modToken', 'attToken') + service.createConference(conf); + + AdhocConference conf1 = service.getConferenceWithAttendeeToken('attToken') + assertEquals conf1.attendeeToken, 'attToken' + } +} diff --git a/bigbluebutton-web/test/unit/org/bigbluebutton/presentation/service/AdhocConferenceTests.groovy b/bigbluebutton-web/test/unit/org/bigbluebutton/presentation/service/AdhocConferenceTests.groovy new file mode 100644 index 0000000000000000000000000000000000000000..8378a239bfc2068ecae9f385fa1fa98355543faf --- /dev/null +++ b/bigbluebutton-web/test/unit/org/bigbluebutton/presentation/service/AdhocConferenceTests.groovy @@ -0,0 +1,18 @@ +package org.bigbluebutton.presentation.service + +import grails.test.* + +class AdhocConferenceTests extends GrailsUnitTestCase { + protected void setUp() { + super.setUp() + } + + protected void tearDown() { + super.tearDown() + } + + void testCreateAdhocConference() { + def conf = new AdhocConference('85115', 'test-room', 'modToken', 'attToken') + assertEquals 'modToken', conf.moderatorToken + } +} diff --git a/bigbluebutton-web/web-app/WEB-INF/applicationContext.xml b/bigbluebutton-web/web-app/WEB-INF/applicationContext.xml index c081da0c32e383dfdde2eefbfaee17e2833d8004..038251b2c2dc4fe6191e2efe1699b28ea70c7f72 100644 --- a/bigbluebutton-web/web-app/WEB-INF/applicationContext.xml +++ b/bigbluebutton-web/web-app/WEB-INF/applicationContext.xml @@ -17,7 +17,8 @@ http://www.springframework.org/schema/beans http://www.springframework.org/schem </bean> <bean id="pluginMetaManager" class="org.codehaus.groovy.grails.plugins.DefaultPluginMetaManager"> - <constructor-arg value="classpath*:**/plugins/*/plugin.xml" /> + <property name="grailsApplication" ref="grailsApplication" /> + <property name="resourcePattern" value="/WEB-INF/plugins/*/plugin.xml" /> </bean> <bean id="grailsConfigurator" class="org.codehaus.groovy.grails.commons.spring.GrailsRuntimeConfigurator"> diff --git a/bigbluebutton-web/web-app/WEB-INF/sitemesh.xml b/bigbluebutton-web/web-app/WEB-INF/sitemesh.xml index e1a3a28efd9876801a1a89200bf5749b92e706c4..95943f14564acb1558b3cdc4a51aa47f69da0baa 100644 --- a/bigbluebutton-web/web-app/WEB-INF/sitemesh.xml +++ b/bigbluebutton-web/web-app/WEB-INF/sitemesh.xml @@ -1,11 +1,11 @@ <sitemesh> <page-parsers> <parser content-type="text/html" - class="com.opensymphony.module.sitemesh.parser.FastPageParser" /> + class="com.opensymphony.module.sitemesh.parser.HTMLPageParser" /> <parser content-type="text/html;charset=ISO-8859-1" - class="com.opensymphony.module.sitemesh.parser.FastPageParser" /> + class="com.opensymphony.module.sitemesh.parser.HTMLPageParser" /> <parser content-type="text/html;charset=UTF-8" - class="com.opensymphony.module.sitemesh.parser.FastPageParser" /> + class="com.opensymphony.module.sitemesh.parser.HTMLPageParser" /> </page-parsers> <decorator-mappers> diff --git a/bigbluebutton-web/web-app/WEB-INF/tld/grails.tld b/bigbluebutton-web/web-app/WEB-INF/tld/grails.tld index d2e561f41041b4c5cdb7089c0269964a5d056b29..d3acc1ca1560b73a0c5b1ac8b8ee95ea907b6053 100644 --- a/bigbluebutton-web/web-app/WEB-INF/tld/grails.tld +++ b/bigbluebutton-web/web-app/WEB-INF/tld/grails.tld @@ -9,414 +9,6 @@ <short-name>grails</short-name> <uri>http://grails.codehaus.org/tags</uri> - <tag> - <description> - Includes a javascript src file, library or inline script - if the tag has no src or library attributes its assumed to be an inline script - </description> - <name>javascript</name> - <tag-class>org.codehaus.groovy.grails.plugins.web.taglib.JavascriptTagLib</tag-class> - <body-content>JSP</body-content> - <attribute> - <description>A predefined JavaScript or AJAX library to load</description> - <name>library</name> - <required>false</required> - <rtexprvalue>true</rtexprvalue> - </attribute> - <attribute> - <description>A custom (or unknown to Grails) JavaScript source file</description> - <name>src</name> - <required>false</required> - <rtexprvalue>true</rtexprvalue> - </attribute> - <attribute> - <description>Since 0.6 Specifies the full base url to prepend to the library name</description> - <name>base</name> - <required>false</required> - <rtexprvalue>true</rtexprvalue> - </attribute> - <dynamic-attributes>false</dynamic-attributes> - </tag> - - <!-- - <tag> - <description> - </description> - <name></name> - <tag-class></tag-class> - <body-content></body-content> - <attribute> - <description></description> - <name></name> - <required></required> - <rtexprvalue></rtexprvalue> - </attribute> - </tag> - --> - <tag> - <description>Escapes a javasacript string replacing single/double quotes and new lines - </description> - <name>escapeJavascript</name> - <tag-class>org.codehaus.groovy.grails.plugins.web.taglib.JavascriptTagLib</tag-class> - <body-content>JSP</body-content> - </tag> - - <tag> - <description>Creates a form submit button that submits the current form to a remote ajax call - </description> - <name>submitToRemote</name> - <tag-class>org.codehaus.groovy.grails.plugins.web.taglib.JavascriptTagLib</tag-class> - <body-content>JSP</body-content> - <attribute> - <name>name</name> - <required>true</required> - <rtexprvalue>true</rtexprvalue> - </attribute> - <attribute> - <name>value</name> - <required>false</required> - <rtexprvalue>true</rtexprvalue> - </attribute> - <attribute> - <name>id</name> - <required>false</required> - <rtexprvalue>true</rtexprvalue> - </attribute> - <attribute> - <name>class</name> - <required>false</required> - <rtexprvalue>true</rtexprvalue> - </attribute> - </tag> - - <tag> - <description>A field that sends its value to a remote link - </description> - <name>remoteField</name> - <tag-class>org.codehaus.groovy.grails.plugins.web.taglib.JavascriptTagLib</tag-class> - <body-content>JSP</body-content> - <attribute> - <name>name</name> - <required>true</required> - <rtexprvalue>true</rtexprvalue> - </attribute> - <attribute> - <name>value</name> - <required>false</required> - <rtexprvalue>true</rtexprvalue> - </attribute> - <attribute> - <name>paramName</name> - <required>false</required> - <rtexprvalue>true</rtexprvalue> - </attribute> - <attribute> - <name>before</name> - <required>false</required> - <rtexprvalue>true</rtexprvalue> - </attribute> - <attribute> - <name>after</name> - <required>false</required> - <rtexprvalue>true</rtexprvalue> - </attribute> - <attribute> - <name>action</name> - <required>false</required> - <rtexprvalue>true</rtexprvalue> - </attribute> - <attribute> - <name>controller</name> - <required>false</required> - <rtexprvalue>true</rtexprvalue> - </attribute> - <attribute> - <name>id</name> - <required>false</required> - <rtexprvalue>true</rtexprvalue> - </attribute> - <attribute> - <name>params</name> - <required>false</required> - <rtexprvalue>true</rtexprvalue> - </attribute> - <attribute> - <name>asynchronous</name> - <required>false</required> - <rtexprvalue>true</rtexprvalue> - </attribute> - <attribute> - <name>method</name> - <required>false</required> - <rtexprvalue>true</rtexprvalue> - </attribute> - <attribute> - <name>update</name> - <required>false</required> - <rtexprvalue>true</rtexprvalue> - </attribute> - <attribute> - <name>onSuccess</name> - <required>false</required> - <rtexprvalue>true</rtexprvalue> - </attribute> - <attribute> - <name>onFailure</name> - <required>false</required> - <rtexprvalue>true</rtexprvalue> - </attribute> - <attribute> - <name>onComplete</name> - <required>false</required> - <rtexprvalue>true</rtexprvalue> - </attribute> - <attribute> - <name>onLoading</name> - <required>false</required> - <rtexprvalue>true</rtexprvalue> - </attribute> - <attribute> - <name>onLoaded</name> - <required>false</required> - <rtexprvalue>true</rtexprvalue> - </attribute> - <attribute> - <name>onUninitialized</name> - <required>false</required> - <rtexprvalue>true</rtexprvalue> - </attribute> - <attribute> - <name>on_ERROR_CODE</name> - <required>false</required> - <rtexprvalue>true</rtexprvalue> - </attribute> - <dynamic-attributes>true</dynamic-attributes> - </tag> - <tag> - <description> - Enables the storing of a value into the given ${var} - </description> - <name>set</name> - <tag-class>org.codehaus.groovy.grails.web.taglib.GroovySetTag</tag-class> - <body-content>JSP</body-content> - <attribute> - <description>The value to store</description> - <name>value</name> - <required>true</required> - <rtexprvalue>true</rtexprvalue> - </attribute> - <attribute> - <description>The name of the variable to store the value in</description> - <name>var</name> - <required>true</required> - <rtexprvalue>true</rtexprvalue> - </attribute> - <dynamic-attributes>false</dynamic-attributes> - </tag> - - <tag> - <description> - Enables the storing of a value into the given ${var} into the page context - </description> - <name>def</name> - <tag-class>org.codehaus.groovy.grails.web.taglib.GroovyDefTag</tag-class> - <body-content>JSP</body-content> - <attribute> - <description>The value to store</description> - <name>value</name> - <required>true</required> - <rtexprvalue>true</rtexprvalue> - </attribute> - <attribute> - <description>The name of the variable to store the value in</description> - <name>var</name> - <required>true</required> - <rtexprvalue>true</rtexprvalue> - </attribute> - <dynamic-attributes>false</dynamic-attributes> - </tag> - - <tag> - <description> - Logical if tag to test whether the given condition is true - </description> - <name>if</name> - <tag-class>org.codehaus.groovy.grails.web.taglib.GroovyIfTag</tag-class> - <body-content>JSP</body-content> - <attribute> - <description>The condition to test</description> - <name>test</name> - <required>true</required> - <rtexprvalue>true</rtexprvalue> - </attribute> - <dynamic-attributes>false</dynamic-attributes> - </tag> - - <tag> - <description> - Logical else tag as fallback if the if condition fails - </description> - <name>else</name> - <tag-class>org.codehaus.groovy.grails.web.taglib.GroovyElseTag</tag-class> - <body-content>JSP</body-content> - <dynamic-attributes>false</dynamic-attributes> - </tag> - - <tag> - <description> - Logical elseif tag to test whether the given condition is true - </description> - <name>elseif</name> - <tag-class>org.codehaus.groovy.grails.web.taglib.GroovyElseIfTag</tag-class> - <body-content>JSP</body-content> - <attribute> - <description>The condition to test</description> - <name>test</name> - <required>true</required> - <rtexprvalue>true</rtexprvalue> - </attribute> - <dynamic-attributes>false</dynamic-attributes> - </tag> - - <tag> - <description> - Tag to loop over a collection while the test expression returns true - </description> - <name>while</name> - <tag-class>org.codehaus.groovy.grails.web.taglib.GroovyWhileTag</tag-class> - <body-content>JSP</body-content> - <attribute> - <description>The condition to test</description> - <name>test</name> - <required>true</required> - <rtexprvalue>true</rtexprvalue> - </attribute> - <dynamic-attributes>false</dynamic-attributes> - </tag> - - <tag> - <description>Iterates over the given collection</description> - <name>each</name> - <tag-class>org.codehaus.groovy.grails.web.taglib.GroovyEachTag</tag-class> - <body-content>JSP</body-content> - <attribute> - <description>The collection to iterate over</description> - <name>in</name> - <required>true</required> - <rtexprvalue>true</rtexprvalue> - </attribute> - <attribute> - <description>An optional var-name to reference onto the elements</description> - <name>var</name> - <required>false</required> - <rtexprvalue>true</rtexprvalue> - </attribute> - <attribute> - <name>status</name> - <required>false</required> - <rtexprvalue>true</rtexprvalue> - </attribute> - <dynamic-attributes>true</dynamic-attributes> - </tag> - - <tag> - <description>Iterates over the given collection</description> - <name>findAll</name> - <tag-class>org.codehaus.groovy.grails.web.taglib.GroovyFindAllTag</tag-class> - <body-content>JSP</body-content> - <attribute> - <description>The collection to iterate over</description> - <name>in</name> - <required>true</required> - <rtexprvalue>true</rtexprvalue> - </attribute> - <attribute> - <description>An optional var-name to reference onto the elements</description> - <name>var</name> - <required>false</required> - <rtexprvalue>true</rtexprvalue> - </attribute> - <attribute> - <description>The expression to filter the elements to iterate over</description> - <name>expr</name> - <required>true</required> - <rtexprvalue>true</rtexprvalue> - </attribute> - <attribute> - <name>status</name> - <required>false</required> - <rtexprvalue>true</rtexprvalue> - </attribute> - <dynamic-attributes>true</dynamic-attributes> - </tag> - - <tag> - <description>Iterates over the given collection and collects the elements - you want to work with</description> - <name>collect</name> - <tag-class>org.codehaus.groovy.grails.web.taglib.GroovyCollectTag</tag-class> - <body-content>JSP</body-content> - <attribute> - <description>The collection to iterate over</description> - <name>in</name> - <required>true</required> - <rtexprvalue>true</rtexprvalue> - </attribute> - <attribute> - <description>An optional var-name to reference onto the elements</description> - <name>var</name> - <required>false</required> - <rtexprvalue>true</rtexprvalue> - </attribute> - <attribute> - <description>The expression to use to collect the elements. The - expression must retur true to add the element to the - collection</description> - <name>expr</name> - <required>true</required> - <rtexprvalue>true</rtexprvalue> - </attribute> - <attribute> - <name>status</name> - <required>false</required> - <rtexprvalue>true</rtexprvalue> - </attribute> - <dynamic-attributes>false</dynamic-attributes> - </tag> - - <tag> - <description>Iterates over the given collection and filters the elements - with a regular expression</description> - <name>grep</name> - <tag-class>org.codehaus.groovy.grails.web.taglib.GroovyGrepTag</tag-class> - <body-content>JSP</body-content> - <attribute> - <description>The collection to iterate over</description> - <name>in</name> - <required>true</required> - <rtexprvalue>true</rtexprvalue> - </attribute> - <attribute> - <description>An optional var-name to reference onto the elements</description> - <name>var</name> - <required>false</required> - <rtexprvalue>true</rtexprvalue> - </attribute> - <attribute> - <description>The regular expression to filter the element with. The - filter is a simple Groovy Regex</description> - <name>filter</name> - <required>true</required> - <rtexprvalue>true</rtexprvalue> - </attribute> - <attribute> - <name>status</name> - <required>false</required> - <rtexprvalue>true</rtexprvalue> - </attribute> - <dynamic-attributes>false</dynamic-attributes> - </tag> - <tag> <name>link</name> diff --git a/bigbluebutton-web/web-app/WEB-INF/tld/spring.tld b/bigbluebutton-web/web-app/WEB-INF/tld/spring.tld index a6f7bffac625ac8a117acbdd35e03cc10841b1ba..1bc7091f03c98e4c6182a154aafddef0c4ff78e6 100644 --- a/bigbluebutton-web/web-app/WEB-INF/tld/spring.tld +++ b/bigbluebutton-web/web-app/WEB-INF/tld/spring.tld @@ -1,311 +1,311 @@ -<?xml version="1.0" encoding="ISO-8859-1" ?> -<!DOCTYPE taglib PUBLIC "-//Sun Microsystems, Inc.//DTD JSP Tag Library 1.2//EN" "http://java.sun.com/dtd/web-jsptaglibrary_1_2.dtd"> - -<taglib> - - <tlib-version>1.1.1</tlib-version> - - <jsp-version>1.2</jsp-version> - - <short-name>Spring</short-name> - - <uri>http://www.springframework.org/tags</uri> - - <description>Spring Framework JSP Tag Library. Authors: Rod Johnson, Juergen Hoeller</description> - - - <tag> - - <name>htmlEscape</name> - <tag-class>org.springframework.web.servlet.tags.HtmlEscapeTag</tag-class> - <body-content>JSP</body-content> - - <description> - Sets default HTML escape value for the current page. - Overrides a "defaultHtmlEscape" context-param in web.xml, if any. - </description> - - <attribute> - <name>defaultHtmlEscape</name> - <required>true</required> - <rtexprvalue>true</rtexprvalue> - </attribute> - - </tag> - - - <tag> - - <name>escapeBody</name> - <tag-class>org.springframework.web.servlet.tags.EscapeBodyTag</tag-class> - <body-content>JSP</body-content> - - <description> - Escapes its enclosed body content, applying HTML escaping and/or JavaScript escaping. - The HTML escaping flag participates in a page-wide or application-wide setting - (i.e. by HtmlEscapeTag or a "defaultHtmlEscape" context-param in web.xml). - </description> - - <attribute> - <name>htmlEscape</name> - <required>false</required> - <rtexprvalue>true</rtexprvalue> - </attribute> - - <attribute> - <name>javaScriptEscape</name> - <required>false</required> - <rtexprvalue>true</rtexprvalue> - </attribute> - - </tag> - - - <tag> - - <name>message</name> - <tag-class>org.springframework.web.servlet.tags.MessageTag</tag-class> - <body-content>JSP</body-content> - - <description> - Retrieves the message with the given code, or text if code isn't resolvable. - The HTML escaping flag participates in a page-wide or application-wide setting - (i.e. by HtmlEscapeTag or a "defaultHtmlEscape" context-param in web.xml). - </description> - - <attribute> - <name>code</name> - <required>false</required> - <rtexprvalue>true</rtexprvalue> - </attribute> - - <attribute> - <name>arguments</name> - <required>false</required> - <rtexprvalue>true</rtexprvalue> - </attribute> - - <attribute> - <name>text</name> - <required>false</required> - <rtexprvalue>true</rtexprvalue> - </attribute> - - <attribute> - <name>var</name> - <required>false</required> - <rtexprvalue>true</rtexprvalue> - </attribute> - - <attribute> - <name>scope</name> - <required>false</required> - <rtexprvalue>true</rtexprvalue> - </attribute> - - <attribute> - <name>htmlEscape</name> - <required>false</required> - <rtexprvalue>true</rtexprvalue> - </attribute> - - <attribute> - <name>javaScriptEscape</name> - <required>false</required> - <rtexprvalue>true</rtexprvalue> - </attribute> - - </tag> - - - <tag> - - <name>theme</name> - <tag-class>org.springframework.web.servlet.tags.ThemeTag</tag-class> - <body-content>JSP</body-content> - - <description> - Retrieves the theme message with the given code, or text if code isn't resolvable. - The HTML escaping flag participates in a page-wide or application-wide setting - (i.e. by HtmlEscapeTag or a "defaultHtmlEscape" context-param in web.xml). - </description> - - <attribute> - <name>code</name> - <required>false</required> - <rtexprvalue>true</rtexprvalue> - </attribute> - - <attribute> - <name>arguments</name> - <required>false</required> - <rtexprvalue>true</rtexprvalue> - </attribute> - - <attribute> - <name>text</name> - <required>false</required> - <rtexprvalue>true</rtexprvalue> - </attribute> - - <attribute> - <name>var</name> - <required>false</required> - <rtexprvalue>true</rtexprvalue> - </attribute> - - <attribute> - <name>scope</name> - <required>false</required> - <rtexprvalue>true</rtexprvalue> - </attribute> - - <attribute> - <name>htmlEscape</name> - <required>false</required> - <rtexprvalue>true</rtexprvalue> - </attribute> - - <attribute> - <name>javaScriptEscape</name> - <required>false</required> - <rtexprvalue>true</rtexprvalue> - </attribute> - - </tag> - - - <tag> - - <name>hasBindErrors</name> - <tag-class>org.springframework.web.servlet.tags.BindErrorsTag</tag-class> - <body-content>JSP</body-content> - - <description> - Provides Errors instance in case of bind errors. - The HTML escaping flag participates in a page-wide or application-wide setting - (i.e. by HtmlEscapeTag or a "defaultHtmlEscape" context-param in web.xml). - </description> - - <variable> - <name-given>errors</name-given> - <variable-class>org.springframework.validation.Errors</variable-class> - </variable> - - <attribute> - <name>name</name> - <required>true</required> - <rtexprvalue>true</rtexprvalue> - </attribute> - - <attribute> - <name>htmlEscape</name> - <required>false</required> - <rtexprvalue>true</rtexprvalue> - </attribute> - - </tag> - - - <tag> - - <name>nestedPath</name> - <tag-class>org.springframework.web.servlet.tags.NestedPathTag</tag-class> - <body-content>JSP</body-content> - - <description> - Sets a nested path to be used by the bind tag's path. - </description> - - <variable> - <name-given>nestedPath</name-given> - <variable-class>java.lang.String</variable-class> - </variable> - - <attribute> - <name>path</name> - <required>true</required> - <rtexprvalue>true</rtexprvalue> - </attribute> - - </tag> - - - <tag> - - <name>bind</name> - <tag-class>org.springframework.web.servlet.tags.BindTag</tag-class> - <body-content>JSP</body-content> - - <description> - Provides BindStatus object for the given bind path. - The HTML escaping flag participates in a page-wide or application-wide setting - (i.e. by HtmlEscapeTag or a "defaultHtmlEscape" context-param in web.xml). - </description> - - <variable> - <name-given>status</name-given> - <variable-class>org.springframework.web.servlet.support.BindStatus</variable-class> - </variable> - - <attribute> - <name>path</name> - <required>true</required> - <rtexprvalue>true</rtexprvalue> - </attribute> - - <attribute> - <name>ignoreNestedPath</name> - <required>false</required> - <rtexprvalue>true</rtexprvalue> - </attribute> - - <attribute> - <name>htmlEscape</name> - <required>false</required> - <rtexprvalue>true</rtexprvalue> - </attribute> - - </tag> - - - <tag> - - <name>transform</name> - <tag-class>org.springframework.web.servlet.tags.TransformTag</tag-class> - <body-content>JSP</body-content> - - <description> - Provides transformation of variables to Strings, using an appropriate - custom PropertyEditor from BindTag (can only be used inside BindTag). - The HTML escaping flag participates in a page-wide or application-wide setting - (i.e. by HtmlEscapeTag or a "defaultHtmlEscape" context-param in web.xml). - </description> - - <attribute> - <name>value</name> - <required>true</required> - <rtexprvalue>true</rtexprvalue> - </attribute> - - <attribute> - <name>var</name> - <required>false</required> - <rtexprvalue>true</rtexprvalue> - </attribute> - - <attribute> - <name>scope</name> - <required>false</required> - <rtexprvalue>true</rtexprvalue> - </attribute> - - <attribute> - <name>htmlEscape</name> - <required>false</required> - <rtexprvalue>true</rtexprvalue> - </attribute> - - </tag> - -</taglib> +<?xml version="1.0" encoding="ISO-8859-1" ?> +<!DOCTYPE taglib PUBLIC "-//Sun Microsystems, Inc.//DTD JSP Tag Library 1.2//EN" "http://java.sun.com/dtd/web-jsptaglibrary_1_2.dtd"> + +<taglib> + + <tlib-version>1.1.1</tlib-version> + + <jsp-version>1.2</jsp-version> + + <short-name>Spring</short-name> + + <uri>http://www.springframework.org/tags</uri> + + <description>Spring Framework JSP Tag Library. Authors: Rod Johnson, Juergen Hoeller</description> + + + <tag> + + <name>htmlEscape</name> + <tag-class>org.springframework.web.servlet.tags.HtmlEscapeTag</tag-class> + <body-content>JSP</body-content> + + <description> + Sets default HTML escape value for the current page. + Overrides a "defaultHtmlEscape" context-param in web.xml, if any. + </description> + + <attribute> + <name>defaultHtmlEscape</name> + <required>true</required> + <rtexprvalue>true</rtexprvalue> + </attribute> + + </tag> + + + <tag> + + <name>escapeBody</name> + <tag-class>org.springframework.web.servlet.tags.EscapeBodyTag</tag-class> + <body-content>JSP</body-content> + + <description> + Escapes its enclosed body content, applying HTML escaping and/or JavaScript escaping. + The HTML escaping flag participates in a page-wide or application-wide setting + (i.e. by HtmlEscapeTag or a "defaultHtmlEscape" context-param in web.xml). + </description> + + <attribute> + <name>htmlEscape</name> + <required>false</required> + <rtexprvalue>true</rtexprvalue> + </attribute> + + <attribute> + <name>javaScriptEscape</name> + <required>false</required> + <rtexprvalue>true</rtexprvalue> + </attribute> + + </tag> + + + <tag> + + <name>message</name> + <tag-class>org.springframework.web.servlet.tags.MessageTag</tag-class> + <body-content>JSP</body-content> + + <description> + Retrieves the message with the given code, or text if code isn't resolvable. + The HTML escaping flag participates in a page-wide or application-wide setting + (i.e. by HtmlEscapeTag or a "defaultHtmlEscape" context-param in web.xml). + </description> + + <attribute> + <name>code</name> + <required>false</required> + <rtexprvalue>true</rtexprvalue> + </attribute> + + <attribute> + <name>arguments</name> + <required>false</required> + <rtexprvalue>true</rtexprvalue> + </attribute> + + <attribute> + <name>text</name> + <required>false</required> + <rtexprvalue>true</rtexprvalue> + </attribute> + + <attribute> + <name>var</name> + <required>false</required> + <rtexprvalue>true</rtexprvalue> + </attribute> + + <attribute> + <name>scope</name> + <required>false</required> + <rtexprvalue>true</rtexprvalue> + </attribute> + + <attribute> + <name>htmlEscape</name> + <required>false</required> + <rtexprvalue>true</rtexprvalue> + </attribute> + + <attribute> + <name>javaScriptEscape</name> + <required>false</required> + <rtexprvalue>true</rtexprvalue> + </attribute> + + </tag> + + + <tag> + + <name>theme</name> + <tag-class>org.springframework.web.servlet.tags.ThemeTag</tag-class> + <body-content>JSP</body-content> + + <description> + Retrieves the theme message with the given code, or text if code isn't resolvable. + The HTML escaping flag participates in a page-wide or application-wide setting + (i.e. by HtmlEscapeTag or a "defaultHtmlEscape" context-param in web.xml). + </description> + + <attribute> + <name>code</name> + <required>false</required> + <rtexprvalue>true</rtexprvalue> + </attribute> + + <attribute> + <name>arguments</name> + <required>false</required> + <rtexprvalue>true</rtexprvalue> + </attribute> + + <attribute> + <name>text</name> + <required>false</required> + <rtexprvalue>true</rtexprvalue> + </attribute> + + <attribute> + <name>var</name> + <required>false</required> + <rtexprvalue>true</rtexprvalue> + </attribute> + + <attribute> + <name>scope</name> + <required>false</required> + <rtexprvalue>true</rtexprvalue> + </attribute> + + <attribute> + <name>htmlEscape</name> + <required>false</required> + <rtexprvalue>true</rtexprvalue> + </attribute> + + <attribute> + <name>javaScriptEscape</name> + <required>false</required> + <rtexprvalue>true</rtexprvalue> + </attribute> + + </tag> + + + <tag> + + <name>hasBindErrors</name> + <tag-class>org.springframework.web.servlet.tags.BindErrorsTag</tag-class> + <body-content>JSP</body-content> + + <description> + Provides Errors instance in case of bind errors. + The HTML escaping flag participates in a page-wide or application-wide setting + (i.e. by HtmlEscapeTag or a "defaultHtmlEscape" context-param in web.xml). + </description> + + <variable> + <name-given>errors</name-given> + <variable-class>org.springframework.validation.Errors</variable-class> + </variable> + + <attribute> + <name>name</name> + <required>true</required> + <rtexprvalue>true</rtexprvalue> + </attribute> + + <attribute> + <name>htmlEscape</name> + <required>false</required> + <rtexprvalue>true</rtexprvalue> + </attribute> + + </tag> + + + <tag> + + <name>nestedPath</name> + <tag-class>org.springframework.web.servlet.tags.NestedPathTag</tag-class> + <body-content>JSP</body-content> + + <description> + Sets a nested path to be used by the bind tag's path. + </description> + + <variable> + <name-given>nestedPath</name-given> + <variable-class>java.lang.String</variable-class> + </variable> + + <attribute> + <name>path</name> + <required>true</required> + <rtexprvalue>true</rtexprvalue> + </attribute> + + </tag> + + + <tag> + + <name>bind</name> + <tag-class>org.springframework.web.servlet.tags.BindTag</tag-class> + <body-content>JSP</body-content> + + <description> + Provides BindStatus object for the given bind path. + The HTML escaping flag participates in a page-wide or application-wide setting + (i.e. by HtmlEscapeTag or a "defaultHtmlEscape" context-param in web.xml). + </description> + + <variable> + <name-given>status</name-given> + <variable-class>org.springframework.web.servlet.support.BindStatus</variable-class> + </variable> + + <attribute> + <name>path</name> + <required>true</required> + <rtexprvalue>true</rtexprvalue> + </attribute> + + <attribute> + <name>ignoreNestedPath</name> + <required>false</required> + <rtexprvalue>true</rtexprvalue> + </attribute> + + <attribute> + <name>htmlEscape</name> + <required>false</required> + <rtexprvalue>true</rtexprvalue> + </attribute> + + </tag> + + + <tag> + + <name>transform</name> + <tag-class>org.springframework.web.servlet.tags.TransformTag</tag-class> + <body-content>JSP</body-content> + + <description> + Provides transformation of variables to Strings, using an appropriate + custom PropertyEditor from BindTag (can only be used inside BindTag). + The HTML escaping flag participates in a page-wide or application-wide setting + (i.e. by HtmlEscapeTag or a "defaultHtmlEscape" context-param in web.xml). + </description> + + <attribute> + <name>value</name> + <required>true</required> + <rtexprvalue>true</rtexprvalue> + </attribute> + + <attribute> + <name>var</name> + <required>false</required> + <rtexprvalue>true</rtexprvalue> + </attribute> + + <attribute> + <name>scope</name> + <required>false</required> + <rtexprvalue>true</rtexprvalue> + </attribute> + + <attribute> + <name>htmlEscape</name> + <required>false</required> + <rtexprvalue>true</rtexprvalue> + </attribute> + + </tag> + +</taglib>