Author: kwright
Date: Fri Jun 7 12:55:04 2013
New Revision: 1490621
URL: http://svn.apache.org/r1490621
Log:
Fix for CONNECTORS-701.
Added:
manifoldcf/trunk/connectors/dropbox/connector/src/main/resources/org/apache/manifoldcf/crawler/connectors/dropbox/editSpecification_Security.html
(with props)
Modified:
manifoldcf/trunk/CHANGES.txt
manifoldcf/trunk/connectors/dropbox/connector/src/main/java/org/apache/manifoldcf/crawler/connectors/dropbox/DropboxRepositoryConnector.java
manifoldcf/trunk/connectors/dropbox/connector/src/main/java/org/apache/manifoldcf/crawler/connectors/dropbox/DropboxSession.java
manifoldcf/trunk/connectors/dropbox/connector/src/main/native2ascii/org/apache/manifoldcf/crawler/connectors/dropbox/common_en_US.properties
manifoldcf/trunk/connectors/dropbox/connector/src/main/resources/org/apache/manifoldcf/crawler/connectors/dropbox/editConfiguration_Server.html
manifoldcf/trunk/connectors/dropbox/connector/src/main/resources/org/apache/manifoldcf/crawler/connectors/dropbox/editSpecification.js
manifoldcf/trunk/connectors/dropbox/connector/src/main/resources/org/apache/manifoldcf/crawler/connectors/dropbox/editSpecification_DropboxPath.html
manifoldcf/trunk/connectors/dropbox/connector/src/main/resources/org/apache/manifoldcf/crawler/connectors/dropbox/viewConfiguration.html
manifoldcf/trunk/connectors/dropbox/connector/src/main/resources/org/apache/manifoldcf/crawler/connectors/dropbox/viewSpecification.html
Modified: manifoldcf/trunk/CHANGES.txt
URL:
http://svn.apache.org/viewvc/manifoldcf/trunk/CHANGES.txt?rev=1490621&r1=1490620&r2=1490621&view=diff
==============================================================================
--- manifoldcf/trunk/CHANGES.txt (original)
+++ manifoldcf/trunk/CHANGES.txt Fri Jun 7 12:55:04 2013
@@ -3,6 +3,11 @@ $Id$
======================= 1.3-dev =====================
+CONNECTORS-701: Add forced ACLs to DropBox connector. Fixed a
+few UI-related other problems as well.
+WARNING: This is a non-backwards-compatible change!!
+(Karl Wright)
+
CONNECTORS-702: Add forced ACLs to GoogleDrive connector. Also
fixed a number of UI-related issues.
(Karl Wright)
Modified:
manifoldcf/trunk/connectors/dropbox/connector/src/main/java/org/apache/manifoldcf/crawler/connectors/dropbox/DropboxRepositoryConnector.java
URL:
http://svn.apache.org/viewvc/manifoldcf/trunk/connectors/dropbox/connector/src/main/java/org/apache/manifoldcf/crawler/connectors/dropbox/DropboxRepositoryConnector.java?rev=1490621&r1=1490620&r2=1490621&view=diff
==============================================================================
---
manifoldcf/trunk/connectors/dropbox/connector/src/main/java/org/apache/manifoldcf/crawler/connectors/dropbox/DropboxRepositoryConnector.java
(original)
+++
manifoldcf/trunk/connectors/dropbox/connector/src/main/java/org/apache/manifoldcf/crawler/connectors/dropbox/DropboxRepositoryConnector.java
Fri Jun 7 12:55:04 2013
@@ -28,9 +28,12 @@ import java.io.InputStream;
import java.io.InterruptedIOException;
import java.util.HashMap;
import java.util.HashSet;
+import java.util.ArrayList;
import java.util.List;
import java.util.Locale;
import java.util.Map;
+import java.util.Set;
+import java.util.Iterator;
import org.apache.manifoldcf.crawler.system.Logging;
import org.apache.manifoldcf.crawler.connectors.BaseRepositoryConnector;
import org.apache.manifoldcf.agents.interfaces.ServiceInterruption;
@@ -57,10 +60,23 @@ public class DropboxRepositoryConnector
protected final static String ACTIVITY_READ = "read document";
public final static String ACTIVITY_FETCH = "fetch";
protected static final String RELATIONSHIP_CHILD = "child";
+
+ /** Deny access token for default authority */
+ private final static String defaultAuthorityDenyToken = "DEAD_AUTHORITY";
+
+ // Nodes and attributes
private static final String JOB_STARTPOINT_NODE_TYPE = "startpoint";
+ private static final String JOB_PATH_ATTRIBUTE = "path";
+ private static final String JOB_ACCESS_NODE_TYPE = "access";
+ private static final String JOB_TOKEN_ATTRIBUTE = "token";
+
+ // Tab properties
private static final String DROPBOX_SERVER_TAB_PROPERTY =
"DropboxRepositoryConnector.Server";
private static final String DROPBOX_PATH_TAB_PROPERTY =
"DropboxRepositoryConnector.DropboxPath";
+ private static final String DROPBOX_SECURITY_TAB_PROPERTY =
"DropboxRepositoryConnector.Security";
+
// Template names
+
/**
* Forward to the javascript to check the configuration parameters
*/
@@ -70,6 +86,11 @@ public class DropboxRepositoryConnector
*/
private static final String EDIT_CONFIG_FORWARD_SERVER =
"editConfiguration_Server.html";
/**
+ * Forward to the HTML template to view the configuration parameters
+ */
+ private static final String VIEW_CONFIG_FORWARD = "viewConfiguration.html";
+
+ /**
* Forward to the javascript to check the specification parameters for the
* job
*/
@@ -79,13 +100,14 @@ public class DropboxRepositoryConnector
*/
private static final String EDIT_SPEC_FORWARD_DROPBOXPATH =
"editSpecification_DropboxPath.html";
/**
- * Forward to the HTML template to view the configuration parameters
+ * Forward to the template to edit the configuration parameters for the job
*/
- private static final String VIEW_CONFIG_FORWARD = "viewConfiguration.html";
+ private static final String EDIT_SPEC_FORWARD_SECURITY =
"editSpecification_Security.html";
/**
* Forward to the template to view the specification parameters for the job
*/
- private static final String VIEW_SPEC_FORWARD = "viewSpecification.html";
+ private static final String VIEW_SPEC_FORWARD = "viewSpecification.html";
+
/**
* Endpoint server name
*/
@@ -167,9 +189,9 @@ public class DropboxRepositoryConnector
super.connect(configParams);
app_key=params.getParameter(DropboxConfig.APP_KEY_PARAM);
- app_secret=params.getParameter(DropboxConfig.APP_SECRET_PARAM);
+ app_secret=params.getObfuscatedParameter(DropboxConfig.APP_SECRET_PARAM);
key = params.getParameter(DropboxConfig.KEY_PARAM);
- secret = params.getParameter(DropboxConfig.SECRET_PARAM);
+ secret = params.getObfuscatedParameter(DropboxConfig.SECRET_PARAM);
}
@@ -277,16 +299,7 @@ public class DropboxRepositoryConnector
// Create a session
- Map<String, String> parameters = new HashMap<String, String>();
-
- // user credentials
- parameters.put(DropboxConfig.APP_KEY_PARAM, app_key);
- parameters.put(DropboxConfig.APP_SECRET_PARAM, app_secret);
-
- parameters.put(DropboxConfig.KEY_PARAM, key);
- parameters.put(DropboxConfig.SECRET_PARAM, secret);
-
- session = new DropboxSession(parameters);
+ session = new DropboxSession(app_key, app_secret, key, secret);
lastSessionFetch = System.currentTimeMillis();
}
}
@@ -334,13 +347,13 @@ public class DropboxRepositoryConnector
* @param newMap is the map to fill in
* @param parameters is the current set of configuration parameters
*/
- private static void fillInServerConfigurationMap(Map<String, String> newMap,
ConfigParams parameters) {
+ private static void fillInServerConfigurationMap(Map<String, Object> newMap,
ConfigParams parameters) {
String app_key = parameters.getParameter(DropboxConfig.APP_KEY_PARAM);
- String app_secret =
parameters.getParameter(DropboxConfig.APP_SECRET_PARAM);
+ String app_secret =
parameters.getObfuscatedParameter(DropboxConfig.APP_SECRET_PARAM);
String username = parameters.getParameter(DropboxConfig.KEY_PARAM);
- String password = parameters.getParameter(DropboxConfig.SECRET_PARAM);
+ String password =
parameters.getObfuscatedParameter(DropboxConfig.SECRET_PARAM);
if (app_key == null) {
app_key = StringUtils.EMPTY;
@@ -357,10 +370,10 @@ public class DropboxRepositoryConnector
password = StringUtils.EMPTY;
}
- newMap.put(DropboxConfig.APP_KEY_PARAM, app_key);
- newMap.put(DropboxConfig.APP_SECRET_PARAM, app_secret);
- newMap.put(DropboxConfig.KEY_PARAM, username);
- newMap.put(DropboxConfig.SECRET_PARAM, password);
+ newMap.put("APP_KEY", app_key);
+ newMap.put("APP_SECRET", app_secret);
+ newMap.put("KEY", username);
+ newMap.put("SECRET", password);
}
@@ -379,25 +392,12 @@ public class DropboxRepositoryConnector
@Override
public void viewConfiguration(IThreadContext threadContext, IHTTPOutput out,
Locale locale, ConfigParams parameters) throws ManifoldCFException,
IOException {
- Map<String, String> paramMap = new HashMap<String, String>();
+ Map<String, Object> paramMap = new HashMap<String, Object>();
// Fill in map from each tab
fillInServerConfigurationMap(paramMap, parameters);
- outputResource(VIEW_CONFIG_FORWARD, out, locale, paramMap);
- }
-
- /**
- * Read the content of a resource, replace the variable ${PARAMNAME} with
- * the value and copy it to the out.
- *
- * @param resName
- * @param out
- * @throws ManifoldCFException
- */
- private static void outputResource(String resName, IHTTPOutput out,
- Locale locale, Map<String, String> paramMap) throws ManifoldCFException {
- Messages.outputResourceWithVelocity(out, locale, resName, paramMap, true);
+
Messages.outputResourceWithVelocity(out,locale,VIEW_CONFIG_FORWARD,paramMap);
}
/**
@@ -420,14 +420,15 @@ public class DropboxRepositoryConnector
throws ManifoldCFException, IOException {
// Add the Server tab
tabsArray.add(Messages.getString(locale, DROPBOX_SERVER_TAB_PROPERTY));
+
// Map the parameters
- Map<String, String> paramMap = new HashMap<String, String>();
+ Map<String, Object> paramMap = new HashMap<String, Object>();
// Fill in the parameters from each tab
fillInServerConfigurationMap(paramMap, parameters);
// Output the Javascript - only one Velocity template for all tabs
- outputResource(EDIT_CONFIG_HEADER_FORWARD, out, locale, paramMap);
+
Messages.outputResourceWithVelocity(out,locale,EDIT_CONFIG_HEADER_FORWARD,paramMap);
}
@Override
@@ -438,12 +439,12 @@ public class DropboxRepositoryConnector
// Call the Velocity templates for each tab
// Server tab
- Map<String, String> paramMap = new HashMap<String, String>();
+ Map<String, Object> paramMap = new HashMap<String, Object>();
// Set the tab name
paramMap.put("TabName", tabName);
// Fill in the parameters
fillInServerConfigurationMap(paramMap, parameters);
- outputResource(EDIT_CONFIG_FORWARD_SERVER, out, locale, paramMap);
+
Messages.outputResourceWithVelocity(out,locale,EDIT_CONFIG_FORWARD_SERVER,paramMap);
}
@@ -470,24 +471,24 @@ public class DropboxRepositoryConnector
throws ManifoldCFException {
- String app_key = variableContext.getParameter(DropboxConfig.APP_KEY_PARAM);
+ String app_key = variableContext.getParameter("app_key");
if (app_key != null) {
parameters.setParameter(DropboxConfig.APP_KEY_PARAM, app_key);
}
- String app_secret =
variableContext.getParameter(DropboxConfig.APP_SECRET_PARAM);
+ String app_secret = variableContext.getParameter("app_secret");
if (app_secret != null) {
- parameters.setParameter(DropboxConfig.APP_SECRET_PARAM, app_secret);
+ parameters.setObfuscatedParameter(DropboxConfig.APP_SECRET_PARAM,
app_secret);
}
- String key = variableContext.getParameter(DropboxConfig.KEY_PARAM);
+ String key = variableContext.getParameter("key");
if (key != null) {
parameters.setParameter(DropboxConfig.KEY_PARAM, key);
}
- String secret = variableContext.getParameter(DropboxConfig.SECRET_PARAM);
+ String secret = variableContext.getParameter("secret");
if (secret != null) {
- parameters.setParameter(DropboxConfig.SECRET_PARAM, secret);
+ parameters.setObfuscatedParameter(DropboxConfig.SECRET_PARAM, secret);
}
return null;
@@ -496,17 +497,34 @@ public class DropboxRepositoryConnector
/**
* Fill in specification Velocity parameter map for DROPBOXPath tab.
*/
- private static void fillInDropboxPathSpecificationMap(Map<String, String>
newMap, DocumentSpecification ds) {
+ private static void fillInDropboxPathSpecificationMap(Map<String, Object>
newMap, DocumentSpecification ds) {
int i = 0;
String DropboxPath = DropboxConfig.DROPBOX_PATH_PARAM_DEFAULT_VALUE;
while (i < ds.getChildCount()) {
SpecificationNode sn = ds.getChild(i);
if (sn.getType().equals(JOB_STARTPOINT_NODE_TYPE)) {
- DropboxPath = sn.getAttributeValue(DropboxConfig.DROPBOX_PATH_PARAM);
+ DropboxPath = sn.getAttributeValue(JOB_PATH_ATTRIBUTE);
}
i++;
}
- newMap.put(DropboxConfig.DROPBOX_PATH_PARAM, DropboxPath);
+ newMap.put("DROPBOXPATH", DropboxPath);
+ }
+
+ /**
+ * Fill in specification Velocity parameter map for Dropbox Security tab.
+ */
+ private static void fillInDropboxSecuritySpecificationMap(Map<String,
Object> newMap, DocumentSpecification ds) {
+ List<Map<String,String>> accessTokenList = new
ArrayList<Map<String,String>>();
+ for (int i = 0; i < ds.getChildCount(); i++) {
+ SpecificationNode sn = ds.getChild(i);
+ if (sn.getType().equals(JOB_ACCESS_NODE_TYPE)) {
+ String token = sn.getAttributeValue(JOB_TOKEN_ATTRIBUTE);
+ Map<String,String> accessMap = new HashMap<String,String>();
+ accessMap.put("TOKEN",token);
+ accessTokenList.add(accessMap);
+ }
+ }
+ newMap.put("ACCESSTOKENS", accessTokenList);
}
/**
@@ -523,12 +541,13 @@ public class DropboxRepositoryConnector
public void viewSpecification(IHTTPOutput out, Locale locale,
DocumentSpecification ds)
throws ManifoldCFException, IOException {
- Map<String, String> paramMap = new HashMap<String, String>();
+ Map<String, Object> paramMap = new HashMap<String, Object>();
// Fill in the map with data from all tabs
fillInDropboxPathSpecificationMap(paramMap, ds);
-
- outputResource(VIEW_SPEC_FORWARD, out, locale, paramMap);
+ fillInDropboxSecuritySpecificationMap(paramMap, ds);
+
+ Messages.outputResourceWithVelocity(out,locale,VIEW_SPEC_FORWARD,paramMap);
}
/**
@@ -548,7 +567,7 @@ public class DropboxRepositoryConnector
@Override
public String processSpecificationPost(IPostParameters variableContext,
DocumentSpecification ds) throws ManifoldCFException {
- String dropboxPath =
variableContext.getParameter(DropboxConfig.DROPBOX_PATH_PARAM);
+ String dropboxPath = variableContext.getParameter("dropboxpath");
if (dropboxPath != null) {
int i = 0;
while (i < ds.getChildCount()) {
@@ -560,10 +579,50 @@ public class DropboxRepositoryConnector
i++;
}
SpecificationNode node = new SpecificationNode(JOB_STARTPOINT_NODE_TYPE);
- node.setAttribute(DropboxConfig.DROPBOX_PATH_PARAM, dropboxPath);
- variableContext.setParameter(DropboxConfig.DROPBOX_PATH_PARAM,
dropboxPath);
+ node.setAttribute(JOB_PATH_ATTRIBUTE, dropboxPath);
ds.addChild(ds.getChildCount(), node);
}
+ String xc = variableContext.getParameter("tokencount");
+ if (xc != null) {
+ // Delete all tokens first
+ int i = 0;
+ while (i < ds.getChildCount()) {
+ SpecificationNode sn = ds.getChild(i);
+ if (sn.getType().equals(JOB_ACCESS_NODE_TYPE))
+ ds.removeChild(i);
+ else
+ i++;
+ }
+
+ int accessCount = Integer.parseInt(xc);
+ i = 0;
+ while (i < accessCount) {
+ String accessDescription = "_"+Integer.toString(i);
+ String accessOpName = "accessop"+accessDescription;
+ xc = variableContext.getParameter(accessOpName);
+ if (xc != null && xc.equals("Delete")) {
+ // Next row
+ i++;
+ continue;
+ }
+ // Get the stuff we need
+ String accessSpec =
variableContext.getParameter("spectoken"+accessDescription);
+ SpecificationNode node = new SpecificationNode(JOB_ACCESS_NODE_TYPE);
+ node.setAttribute(JOB_TOKEN_ATTRIBUTE,accessSpec);
+ ds.addChild(ds.getChildCount(),node);
+ i++;
+ }
+
+ String op = variableContext.getParameter("accessop");
+ if (op != null && op.equals("Add"))
+ {
+ String accessspec = variableContext.getParameter("spectoken");
+ SpecificationNode node = new SpecificationNode(JOB_ACCESS_NODE_TYPE);
+ node.setAttribute(JOB_TOKEN_ATTRIBUTE,accessspec);
+ ds.addChild(ds.getChildCount(),node);
+ }
+ }
+
return null;
}
@@ -585,10 +644,13 @@ public class DropboxRepositoryConnector
IOException {
// Output DROPBOXPath tab
- Map<String, String> paramMap = new HashMap<String, String>();
+ Map<String, Object> paramMap = new HashMap<String, Object>();
paramMap.put("TabName", tabName);
fillInDropboxPathSpecificationMap(paramMap, ds);
- outputResource(EDIT_SPEC_FORWARD_DROPBOXPATH, out, locale, paramMap);
+ fillInDropboxSecuritySpecificationMap(paramMap, ds);
+
+
Messages.outputResourceWithVelocity(out,locale,EDIT_SPEC_FORWARD_DROPBOXPATH,paramMap);
+
Messages.outputResourceWithVelocity(out,locale,EDIT_SPEC_FORWARD_SECURITY,paramMap);
}
/**
@@ -608,13 +670,15 @@ public class DropboxRepositoryConnector
Locale locale, DocumentSpecification ds, List<String> tabsArray)
throws ManifoldCFException, IOException {
tabsArray.add(Messages.getString(locale, DROPBOX_PATH_TAB_PROPERTY));
+ tabsArray.add(Messages.getString(locale, DROPBOX_SECURITY_TAB_PROPERTY));
- Map<String, String> paramMap = new HashMap<String, String>();
+ Map<String, Object> paramMap = new HashMap<String, Object>();
// Fill in the specification header map, using data from all tabs.
fillInDropboxPathSpecificationMap(paramMap, ds);
+ fillInDropboxSecuritySpecificationMap(paramMap, ds);
- outputResource(EDIT_SPEC_HEADER_FORWARD, out, locale, paramMap);
+
Messages.outputResourceWithVelocity(out,locale,EDIT_SPEC_HEADER_FORWARD,paramMap);
}
/**
@@ -833,9 +897,28 @@ public class DropboxRepositoryConnector
if (!scanOnly[i]) {
doLog = true;
+ // Unpack the version string
+ ArrayList acls = new ArrayList();
+ StringBuilder denyAclBuffer = new StringBuilder();
+ int index = unpackList(acls,version,0,'+');
+ if (index < version.length() && version.charAt(index++) == '+') {
+ index = unpack(denyAclBuffer,version,index,'+');
+ }
+
// content ingestion
RepositoryDocument rd = new RepositoryDocument();
+ // Turn into acls and add into description
+ String[] aclArray = new String[acls.size()];
+ for (int j = 0; j < aclArray.length; j++) {
+ aclArray[j] = (String)acls.get(j);
+ }
+ rd.setACL(aclArray);
+ if (denyAclBuffer.length() > 0) {
+ String[] denyAclArray = new String[]{denyAclBuffer.toString()};
+ rd.setDenyACL(denyAclArray);
+ }
+
// Length in bytes
long fileLength = dropboxObject.bytes;
//documentURI
@@ -1088,6 +1171,12 @@ public class DropboxRepositoryConnector
@Override
public String[] getDocumentVersions(String[] documentIdentifiers,
DocumentSpecification spec) throws ManifoldCFException,
ServiceInterruption {
+
+ // Forced acls
+ String[] acls = getAcls(spec);
+ // Sort it,
+ java.util.Arrays.sort(acls);
+
String[] rval = new String[documentIdentifiers.length];
for (int i = 0; i < rval.length; i++) {
getSession();
@@ -1110,10 +1199,22 @@ public class DropboxRepositoryConnector
if (dropboxObject.isDeleted) {
rval[i] = null;
} else if (StringUtils.isNotEmpty(dropboxObject.rev)) {
- rval[i] = dropboxObject.rev;
+ StringBuilder sb = new StringBuilder();
+
+ // Acls
+ packList(sb,acls,'+');
+ if (acls.length > 0) {
+ sb.append('+');
+ pack(sb,defaultAuthorityDenyToken,'+');
+ }
+ else
+ sb.append('-');
+
+ sb.append(dropboxObject.rev);
+ rval[i] = sb.toString();
} else {
- //a document that doesn't contain versioning information will always
be processed
- rval[i] = StringUtils.EMPTY;
+ //a document that doesn't contain versioning information will never
be processed
+ rval[i] = null;
}
} else {
//a folder will always be processed
@@ -1123,6 +1224,29 @@ public class DropboxRepositoryConnector
return rval;
}
+ /** Grab forced acl out of document specification.
+ *@param spec is the document specification.
+ *@return the acls.
+ */
+ protected static String[] getAcls(DocumentSpecification spec) {
+ Set<String> map = new HashSet<String>();
+ for (int i = 0; i < spec.getChildCount(); i++) {
+ SpecificationNode sn = spec.getChild(i);
+ if (sn.getType().equals(JOB_ACCESS_NODE_TYPE)) {
+ String token = sn.getAttributeValue(JOB_TOKEN_ATTRIBUTE);
+ map.add(token);
+ }
+ }
+
+ String[] rval = new String[map.size()];
+ Iterator<String> iter = map.iterator();
+ int i = 0;
+ while (iter.hasNext()) {
+ rval[i++] = (String)iter.next();
+ }
+ return rval;
+ }
+
/** Handle a dropbox exception. */
protected static void handleDropboxException(DropboxException e)
throws ManifoldCFException, ServiceInterruption {
Modified:
manifoldcf/trunk/connectors/dropbox/connector/src/main/java/org/apache/manifoldcf/crawler/connectors/dropbox/DropboxSession.java
URL:
http://svn.apache.org/viewvc/manifoldcf/trunk/connectors/dropbox/connector/src/main/java/org/apache/manifoldcf/crawler/connectors/dropbox/DropboxSession.java?rev=1490621&r1=1490620&r2=1490621&view=diff
==============================================================================
---
manifoldcf/trunk/connectors/dropbox/connector/src/main/java/org/apache/manifoldcf/crawler/connectors/dropbox/DropboxSession.java
(original)
+++
manifoldcf/trunk/connectors/dropbox/connector/src/main/java/org/apache/manifoldcf/crawler/connectors/dropbox/DropboxSession.java
Fri Jun 7 12:55:04 2013
@@ -54,10 +54,10 @@ public class DropboxSession {
private DropboxAPI<?> client;
- public DropboxSession(Map<String, String> parameters) {
- AppKeyPair appKeyPair = new
AppKeyPair(parameters.get(DropboxConfig.APP_KEY_PARAM),
parameters.get(DropboxConfig.APP_SECRET_PARAM));
+ public DropboxSession(String app_key, String app_secret, String key, String
secret) {
+ AppKeyPair appKeyPair = new AppKeyPair(app_key, app_secret);
WebAuthSession session = new WebAuthSession(appKeyPair,
WebAuthSession.AccessType.DROPBOX);
- AccessTokenPair ac = new
AccessTokenPair(parameters.get(DropboxConfig.KEY_PARAM),
parameters.get(DropboxConfig.SECRET_PARAM));
+ AccessTokenPair ac = new AccessTokenPair(key, secret);
session.setAccessTokenPair(ac);
client = new DropboxAPI<WebAuthSession>(session);
}
Modified:
manifoldcf/trunk/connectors/dropbox/connector/src/main/native2ascii/org/apache/manifoldcf/crawler/connectors/dropbox/common_en_US.properties
URL:
http://svn.apache.org/viewvc/manifoldcf/trunk/connectors/dropbox/connector/src/main/native2ascii/org/apache/manifoldcf/crawler/connectors/dropbox/common_en_US.properties?rev=1490621&r1=1490620&r2=1490621&view=diff
==============================================================================
---
manifoldcf/trunk/connectors/dropbox/connector/src/main/native2ascii/org/apache/manifoldcf/crawler/connectors/dropbox/common_en_US.properties
(original)
+++
manifoldcf/trunk/connectors/dropbox/connector/src/main/native2ascii/org/apache/manifoldcf/crawler/connectors/dropbox/common_en_US.properties
Fri Jun 7 12:55:04 2013
@@ -14,40 +14,26 @@
# limitations under the License.
DropboxRepositoryConnector.Server=Server
-
+DropboxRepositoryConnector.Security=Security
+DropboxRepositoryConnector.DropboxPath=Folder
DropboxRepositoryConnector.AppKeyColon=Application Key:
DropboxRepositoryConnector.AppSecretColon=Application Secret:
-
DropboxRepositoryConnector.KeyColon=Key:
DropboxRepositoryConnector.SecretColon=Secret:
-DropboxRepositoryConnector.RepositoryIDColon=Repository ID:
-DropboxRepositoryConnector.Optional=(optional)
-
DropboxRepositoryConnector.TheAppKeyMustNotBeNull=The Application Key must not
be null
DropboxRepositoryConnector.TheAppSecretMustNotBeNull=The Application Secret
must not be null
-
-
DropboxRepositoryConnector.TheKeyMustNotBeNull=The Key must not be null
DropboxRepositoryConnector.TheSecretMustNotBeNull=The Secret must not be null
DropboxRepositoryConnector.PathMustNotBeNull=Path must be not null
+DropboxRepositoryConnector.TypeInAnAccessToken=Type in an access token
-DropboxRepositoryConnector.DropboxPath=Dropbox Folder to Index
-
-DropboxRepositoryConnector.DropboxPathColon=Dropbox Folder to Index:
-
-DropboxRepositoryConnector.ParametersColon=Parameters:
-DropboxRepositoryConnector.KeyEquals=key=
-DropboxRepositoryConnector.SecretEquals=secret=
-DropboxRepositoryConnector.AppKeyEquals=app_key=
-DropboxRepositoryConnector.AppSecretEquals=app_secret=
-DropboxRepositoryConnector.BindingEquals=binding=
-DropboxRepositoryConnector.ProtocolEquals=protocol=
-DropboxRepositoryConnector.ServerEquals=server=
-DropboxRepositoryConnector.PortEquals=port=
-DropboxRepositoryConnector.RepositoryIdEquals=repositoryId=
-
-DropboxRepositoryConnector.Repository=Repository
-DropboxRepositoryConnector.UserMapping=User Mapping
+DropboxRepositoryConnector.DropboxPathColon=Dropbox folder to index:
+DropboxRepositoryConnector.NoAccessTokensPresent=No access tokens present
+DropboxRepositoryConnector.Add=Add
+DropboxRepositoryConnector.AddAccessToken=Add access token
+DropboxRepositoryConnector.Delete=Delete
+DropboxRepositoryConnector.DeleteToken=Delete token #
+DropboxRepositoryConnector.AccessTokensColon=Access tokens:
Modified:
manifoldcf/trunk/connectors/dropbox/connector/src/main/resources/org/apache/manifoldcf/crawler/connectors/dropbox/editConfiguration_Server.html
URL:
http://svn.apache.org/viewvc/manifoldcf/trunk/connectors/dropbox/connector/src/main/resources/org/apache/manifoldcf/crawler/connectors/dropbox/editConfiguration_Server.html?rev=1490621&r1=1490620&r2=1490621&view=diff
==============================================================================
---
manifoldcf/trunk/connectors/dropbox/connector/src/main/resources/org/apache/manifoldcf/crawler/connectors/dropbox/editConfiguration_Server.html
(original)
+++
manifoldcf/trunk/connectors/dropbox/connector/src/main/resources/org/apache/manifoldcf/crawler/connectors/dropbox/editConfiguration_Server.html
Fri Jun 7 12:55:04 2013
@@ -15,60 +15,50 @@
limitations under the License.
-->
-#if($TABNAME == $ResourceBundle.getString('DropboxRepositoryConnector.Server'))
+#if($TabName == $ResourceBundle.getString('DropboxRepositoryConnector.Server'))
<table class="displaytable">
<tr><td class="separator" colspan="2"><hr/></td></tr>
<tr>
<td class="description">
- <nobr>
-
$Encoder.bodyEscape($ResourceBundle.getString('DropboxRepositoryConnector.AppKeyColon'))
- </nobr>
+
<nobr>$Encoder.bodyEscape($ResourceBundle.getString('DropboxRepositoryConnector.AppKeyColon'))</nobr>
</td>
<td class="value">
<input type="text" id="app_key" name="app_key"
value="$Encoder.attributeEscape($APP_KEY)" />
</td>
</tr>
-
- <tr>
+ <tr>
<td class="description">
- <nobr>
-
$Encoder.bodyEscape($ResourceBundle.getString('DropboxRepositoryConnector.AppSecretColon'))
- </nobr>
+
<nobr>$Encoder.bodyEscape($ResourceBundle.getString('DropboxRepositoryConnector.AppSecretColon'))</nobr>
</td>
<td class="value">
- <input type="text" id="app_secret" name="app_secret"
value="$Encoder.attributeEscape($APP_SECRET)" />
+ <input type="password" id="app_secret" name="app_secret"
value="$Encoder.attributeEscape($APP_SECRET)" />
</td>
</tr>
-
<tr>
<td class="description">
- <nobr>
-
$Encoder.bodyEscape($ResourceBundle.getString('DropboxRepositoryConnector.KeyColon'))
- </nobr>
+
<nobr>$Encoder.bodyEscape($ResourceBundle.getString('DropboxRepositoryConnector.KeyColon'))</nobr>
</td>
<td class="value">
<input type="text" id="key" name="key"
value="$Encoder.attributeEscape($KEY)" />
</td>
</tr>
+
<tr>
<td class="description">
- <nobr>
-
$Encoder.bodyEscape($ResourceBundle.getString('DropboxRepositoryConnector.SecretColon'))
- </nobr>
+
<nobr>$Encoder.bodyEscape($ResourceBundle.getString('DropboxRepositoryConnector.SecretColon'))</nobr>
</td>
<td class="value">
- <input type="text" id="secret" name="secret"
value="$Encoder.attributeEscape($SECRET)" />
+ <input type="password" id="secret" name="secret"
value="$Encoder.attributeEscape($SECRET)" />
</td>
</tr>
</table>
#else
-
<input type="hidden" name="app_key" value="$Encoder.attributeEscape($APP_KEY)"
/>
<input type="hidden" name="app_secret"
value="$Encoder.attributeEscape($APP_SECRET)" />
<input type="hidden" name="key" value="$Encoder.attributeEscape($KEY)" />
Modified:
manifoldcf/trunk/connectors/dropbox/connector/src/main/resources/org/apache/manifoldcf/crawler/connectors/dropbox/editSpecification.js
URL:
http://svn.apache.org/viewvc/manifoldcf/trunk/connectors/dropbox/connector/src/main/resources/org/apache/manifoldcf/crawler/connectors/dropbox/editSpecification.js?rev=1490621&r1=1490620&r2=1490621&view=diff
==============================================================================
---
manifoldcf/trunk/connectors/dropbox/connector/src/main/resources/org/apache/manifoldcf/crawler/connectors/dropbox/editSpecification.js
(original)
+++
manifoldcf/trunk/connectors/dropbox/connector/src/main/resources/org/apache/manifoldcf/crawler/connectors/dropbox/editSpecification.js
Fri Jun 7 12:55:04 2013
@@ -19,25 +19,41 @@
<!--
function checkSpecification()
{
- return true;
+ return true;
}
-
- function checkSpecificationForSave
- {
- if(editconnection.path.value == ""){
+function checkSpecificationForSave()
+{
+ if(editjob.dropboxpath.value == "") {
alert("$Encoder.bodyJavascriptEscape($ResourceBundle.getString('DropboxRepositoryConnector.PathMustNotBeNull'))");
SelectTab("$Encoder.bodyJavascriptEscape($ResourceBundle.getString('DropboxRepositoryConnector.Server'))");
- editconnection.path.focus();
+ editjob.dropboxpath.focus();
return false;
}
return true;
- }
+}
function SpecOp(n, opValue, anchorvalue)
{
eval("editjob."+n+".value = \""+opValue+"\"");
postFormSetAnchor(anchorvalue);
}
+
+function SpecDeleteToken(i)
+{
+ SpecOp("accessop_"+i,"Delete","token_"+i);
+}
+
+function SpecAddToken(i)
+{
+ if (editjob.spectoken.value == "")
+ {
+
alert("$Encoder.bodyJavascriptEscape($ResourceBundle.getString('DropboxRepositoryConnector.TypeInAnAccessToken'))");
+ editjob.spectoken.focus();
+ return;
+ }
+ SpecOp("accessop","Add","token_"+i);
+}
+
//-->
</script>
\ No newline at end of file
Modified:
manifoldcf/trunk/connectors/dropbox/connector/src/main/resources/org/apache/manifoldcf/crawler/connectors/dropbox/editSpecification_DropboxPath.html
URL:
http://svn.apache.org/viewvc/manifoldcf/trunk/connectors/dropbox/connector/src/main/resources/org/apache/manifoldcf/crawler/connectors/dropbox/editSpecification_DropboxPath.html?rev=1490621&r1=1490620&r2=1490621&view=diff
==============================================================================
---
manifoldcf/trunk/connectors/dropbox/connector/src/main/resources/org/apache/manifoldcf/crawler/connectors/dropbox/editSpecification_DropboxPath.html
(original)
+++
manifoldcf/trunk/connectors/dropbox/connector/src/main/resources/org/apache/manifoldcf/crawler/connectors/dropbox/editSpecification_DropboxPath.html
Fri Jun 7 12:55:04 2013
@@ -14,20 +14,16 @@
See the License for the specific language governing permissions and
limitations under the License.
-->
-#if($TABNAME ==
$ResourceBundle.getString('DropboxRepositoryConnector.DropboxPath'))
+#if($TabName ==
$ResourceBundle.getString('DropboxRepositoryConnector.DropboxPath'))
<table class="displaytable">
<tr><td class="separator" colspan="2"><hr/></td></tr>
<tr>
<td class="description">
- <nobr>
-
$Encoder.bodyEscape($ResourceBundle.getString('DropboxRepositoryConnector.DropboxPathColon'))
- </nobr>
+
<nobr>$Encoder.bodyEscape($ResourceBundle.getString('DropboxRepositoryConnector.DropboxPathColon'))</nobr>
</td>
<td class="value">
- <nobr>
- <input type="text" size="120" name="dropboxpath"
value="$Encoder.attributeEscape($DROPBOXPATH)" />
- </nobr>
+ <nobr><input type="text" size="80" name="dropboxpath"
value="$Encoder.attributeEscape($DROPBOXPATH)" /></nobr>
</td>
</tr>
</table>
Added:
manifoldcf/trunk/connectors/dropbox/connector/src/main/resources/org/apache/manifoldcf/crawler/connectors/dropbox/editSpecification_Security.html
URL:
http://svn.apache.org/viewvc/manifoldcf/trunk/connectors/dropbox/connector/src/main/resources/org/apache/manifoldcf/crawler/connectors/dropbox/editSpecification_Security.html?rev=1490621&view=auto
==============================================================================
---
manifoldcf/trunk/connectors/dropbox/connector/src/main/resources/org/apache/manifoldcf/crawler/connectors/dropbox/editSpecification_Security.html
(added)
+++
manifoldcf/trunk/connectors/dropbox/connector/src/main/resources/org/apache/manifoldcf/crawler/connectors/dropbox/editSpecification_Security.html
Fri Jun 7 12:55:04 2013
@@ -0,0 +1,73 @@
+<!--
+ Licensed to the Apache Software Foundation (ASF) under one or more
+ contributor license agreements. See the NOTICE file distributed with
+ this work for additional information regarding copyright ownership.
+ The ASF licenses this file to You under the Apache License, Version 2.0
+ (the "License"); you may not use this file except in compliance with
+ the License. You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+-->
+
+#if($TabName ==
$ResourceBundle.getString('DropboxRepositoryConnector.Security'))
+
+<table class="displaytable">
+ <tr><td class="separator" colspan="2"><hr/></td></tr>
+
+ #set($atcounter = 0)
+ #foreach($atoken in $ACCESSTOKENS)
+
+ <tr>
+ <td class="description">
+ <input type="hidden" name="accessop_$atcounter" value=""/>
+ <input type="hidden" name="spectoken_$atcounter"
value="$Encoder.attributeEscape($atoken.get('TOKEN'))"/>
+ <a name="token_$atcounter">
+ <input type="button"
value="$Encoder.attributeEscape($ResourceBundle.getString('DropboxRepositoryConnector.Delete'))"
onClick='Javascript:SpecDeleteToken($atcounter)'
alt="$Encoder.attributeEscape($ResourceBundle.getString('DropboxRepositoryConnector.DeleteToken'))$atcounter"/>
+ </a>
+ </td>
+ <td class="value">$Encoder.bodyEscape($atoken.get('TOKEN'))</td>
+ </tr>
+
+ #set($atcounter = $atcounter + 1)
+ #end
+
+ #set($nexttoken = $atcounter + 1)
+
+ #if($atcounter == 0)
+ <tr>
+ <td class="message"
colspan="2">$Encoder.bodyEscape($ResourceBundle.getString('DropboxRepositoryConnector.NoAccessTokensPresent'))</td>
+ </tr>
+ #end
+
+ <tr><td class="lightseparator" colspan="2"><hr/></td></tr>
+
+ <tr>
+ <td class="description">
+ <input type="hidden" name="tokencount" value="$atcounter"/>
+ <input type="hidden" name="accessop" value=""/>
+ <a name="token_$atcounter">
+ <input type="button"
value="$Encoder.attributeEscape($ResourceBundle.getString('DropboxRepositoryConnector.Add'))"
onClick='Javascript:SpecAddToken($nexttoken)'
alt="$Encoder.attributeEscape($ResourceBundle.getString('DropboxRepositoryConnector.AddAccessToken'))"/>
+ </a>
+ </td>
+ <td class="value">
+ <input type="text" size="30" name="spectoken" value=""/>
+ </td>
+ </tr>
+</table>
+
+#else
+
+ #set($atcounter = 0)
+ #foreach($atoken in $ACCESSTOKENS)
+<input type="hidden" name="spectoken_$atcounter"
value="$Encoder.attributeEscape($atoken.get('TOKEN'))"/>
+ #set($atcounter = $atcounter + 1)
+ #end
+<input type="hidden" name="tokencount" value="$atcounter"/>
+
+#end
Propchange:
manifoldcf/trunk/connectors/dropbox/connector/src/main/resources/org/apache/manifoldcf/crawler/connectors/dropbox/editSpecification_Security.html
------------------------------------------------------------------------------
svn:eol-style = native
Propchange:
manifoldcf/trunk/connectors/dropbox/connector/src/main/resources/org/apache/manifoldcf/crawler/connectors/dropbox/editSpecification_Security.html
------------------------------------------------------------------------------
svn:keywords = Id
Modified:
manifoldcf/trunk/connectors/dropbox/connector/src/main/resources/org/apache/manifoldcf/crawler/connectors/dropbox/viewConfiguration.html
URL:
http://svn.apache.org/viewvc/manifoldcf/trunk/connectors/dropbox/connector/src/main/resources/org/apache/manifoldcf/crawler/connectors/dropbox/viewConfiguration.html?rev=1490621&r1=1490620&r2=1490621&view=diff
==============================================================================
---
manifoldcf/trunk/connectors/dropbox/connector/src/main/resources/org/apache/manifoldcf/crawler/connectors/dropbox/viewConfiguration.html
(original)
+++
manifoldcf/trunk/connectors/dropbox/connector/src/main/resources/org/apache/manifoldcf/crawler/connectors/dropbox/viewConfiguration.html
Fri Jun 7 12:55:04 2013
@@ -17,27 +17,35 @@
<table class="displaytable">
<tr>
- <td class="description" colspan="1">
- <nobr>
-
$Encoder.bodyEscape($ResourceBundle.getString('DropboxRepositoryConnector.ParametersColon'))
- </nobr>
- </td>
- <td class="value" colspan="3">
- <nobr>
-
$Encoder.bodyEscape($ResourceBundle.getString('DropboxRepositoryConnector.AppKeyEquals'))$Encoder.bodyEscape($APP_KEY)
- </nobr>
- <br />
- <nobr>
-
$Encoder.bodyEscape($ResourceBundle.getString('DropboxRepositoryConnector.AppSecretEquals'))$Encoder.bodyEscape($APP_SECRET)
- </nobr>
- <br />
- <nobr>
-
$Encoder.bodyEscape($ResourceBundle.getString('DropboxRepositoryConnector.KeyEquals'))$Encoder.bodyEscape($KEY)
- </nobr>
- <br />
- <nobr>
-
$Encoder.bodyEscape($ResourceBundle.getString('DropboxRepositoryConnector.SecretEquals'))$Encoder.bodyEscape($SECRET)
- </nobr>
+ <td class="description">
+
<nobr>$Encoder.bodyEscape($ResourceBundle.getString('DropboxRepositoryConnector.AppKeyColon'))</nobr>
+ </td>
+ <td class="value">
+ <nobr>$Encoder.bodyEscape($APP_KEY)</nobr>
+ </td>
+ </tr>
+ <tr>
+ <td class="description">
+
<nobr>$Encoder.bodyEscape($ResourceBundle.getString('DropboxRepositoryConnector.AppSecretColon'))</nobr>
+ </td>
+ <td class="value">
+ <nobr>********</nobr>
+ </td>
+ </tr>
+ <tr>
+ <td class="description">
+
<nobr>$Encoder.bodyEscape($ResourceBundle.getString('DropboxRepositoryConnector.KeyColon'))</nobr>
+ </td>
+ <td class="value">
+ <nobr>$Encoder.bodyEscape($KEY)</nobr>
+ </td>
+ </tr>
+ <tr>
+ <td class="description">
+
<nobr>$Encoder.bodyEscape($ResourceBundle.getString('DropboxRepositoryConnector.SecretColon'))</nobr>
+ </td>
+ <td class="value">
+ <nobr>********</nobr>
</td>
</tr>
</table>
Modified:
manifoldcf/trunk/connectors/dropbox/connector/src/main/resources/org/apache/manifoldcf/crawler/connectors/dropbox/viewSpecification.html
URL:
http://svn.apache.org/viewvc/manifoldcf/trunk/connectors/dropbox/connector/src/main/resources/org/apache/manifoldcf/crawler/connectors/dropbox/viewSpecification.html?rev=1490621&r1=1490620&r2=1490621&view=diff
==============================================================================
---
manifoldcf/trunk/connectors/dropbox/connector/src/main/resources/org/apache/manifoldcf/crawler/connectors/dropbox/viewSpecification.html
(original)
+++
manifoldcf/trunk/connectors/dropbox/connector/src/main/resources/org/apache/manifoldcf/crawler/connectors/dropbox/viewSpecification.html
Fri Jun 7 12:55:04 2013
@@ -18,10 +18,29 @@
<table class="displaytable">
<tr>
<td class="description">
-
$Encoder.bodyEscape($ResourceBundle.getString('DropboxRepositoryConnector.DropboxPathColon'))
+
<nobr>$Encoder.bodyEscape($ResourceBundle.getString('DropboxRepositoryConnector.DropboxPathColon'))</nobr>
</td>
<td class="value">
- $Encoder.bodyEscape($DROPBOXPATH)
+ <nobr>$Encoder.bodyEscape($DROPBOXPATH)</nobr>
</td>
</tr>
+ <tr><td class="separator" colspan="2"><hr/></td></tr>
+ <tr>
+#if($ACCESSTOKENS.size() == 0)
+ <td class="message" colspan="2">
+
$Encoder.bodyEscape($ResourceBundle.getString('DropboxRepositoryConnector.NoAccessTokensPresent'))
+ </td>
+#else
+ <td class="description">
+
<nobr>$Encoder.bodyEscape($ResourceBundle.getString('DropboxRepositoryConnector.AccessTokensColon'))</nobr>
+ </td>
+ <td class="value">
+ #set($atcounter = 0)
+ #foreach($atoken in $ACCESSTOKENS)
+ <nobr>$Encoder.bodyEscape($atoken.get('TOKEN'))</nobr><br/>
+ #set($atcounter = $atcounter + 1)
+ #end
+ </td>
+#end
+ </tr>
</table>