Knowledge:Script Utilities
From OpenKM Documentation
Contents
Get principals
import com.openkm.spring.PrincipalUtils;
import java.util.*;
HashSet roles = PrincipalUtils.getRoles();
for (Iterator it = roles.iterator(); it.hasNext();) {
String role = (String) it.next();
print("{"+role+"}<br/>");
}
print(PrincipalUtils.getRoles());
List missing datastore document
import com.openkm.module.db.stuff.*;
import com.openkm.dao.bean.*;
import com.openkm.dao.*;
for (NodeDocumentVersion ndv : NodeDocumentVersionDAO.getInstance().findAll()) {
String verUuid = ndv.getUuid();
File file = FsDataStore.resolveFile(verUuid);
if (!file.exists()) {
String docUuid = ndv.getParent();
String docPath = NodeBaseDAO.getInstance().getPathFromUuid(docUuid);
print("File: " + file + "<br/>");
print("Path: " + docPath + "<br/>");
}
}
Force text extraction from a folder
import com.openkm.dao.bean.*;
import com.openkm.dao.*;
void changeNodes(String parentUuid) {
for (NodeFolder nFld : NodeFolderDAO.getInstance().findByParent(parentUuid)) {
print("Folder: " + nFld.getUuid() + "<br/>");
changeNodes(nFld.getUuid());
}
for (NodeDocument nDoc : NodeDocumentDAO.getInstance().findByParent(parentUuid)) {
print("Document: " + nDoc.getUuid() + "<br/>");
NodeDocumentDAO.getInstance().resetPendingExtractionFlag(nDoc.getUuid());
}
}
changeNodes("folder-uuid");
LDAP connection test
import java.util.*;
import javax.naming.*;
import javax.naming.directory.*;
try {
Hashtable env = new Hashtable();
env.put(Context.INITIAL_CONTEXT_FACTORY, "com.sun.jndi.ldap.LdapCtxFactory");
env.put(Context.PROVIDER_URL, "ldap://192.168.100.5");
env.put(Context.SECURITY_AUTHENTICATION, "simple");
env.put(Context.SECURITY_PRINCIPAL, "CN=openkm,CN=Users,DC=possehlelectronics,DC=nl");
env.put(Context.SECURITY_CREDENTIALS, "****");
DirContext ctx = new InitialDirContext(env);
print ("autentificado<br/>");
List searchBases = new ArrayList();
searchBases.add("cn=Users,DC=possehlelectronics,DC=nl");
String searchFilter = "(&(objectClass=person)(|(memberOf=CN=ROLE_ADMIN,OU=Groups,DC=possehlelectronics,DC=nl)(memberOf=CN=ROLE_USER,OU=Groups,DC=possehlelectronics,DC=nl)))";
String attribute = "cn";
SearchControls searchCtls = new SearchControls();
searchCtls.setSearchScope(SearchControls.SUBTREE_SCOPE);
for (String searchBase : searchBases) {
NamingEnumeration results = ctx.search(searchBase, searchFilter, searchCtls);
while (results.hasMore()) {
print("Resultado:");
SearchResult searchResult = (SearchResult) results.next();
Attributes attributes = searchResult.getAttributes();
if (attribute.equals("")) {
StringBuilder sb = new StringBuilder();
for (NamingEnumeration ne = attributes.getAll(); ne.hasMore();) {
Attribute attr = (Attribute) ne.nextElement();
sb.append(attr.toString());
sb.append("\n");
}
al.add(sb.toString());
print(sb.toString()+"<br/>");
} else {
Attribute attrib = attributes.get(attribute);
if (attrib != null) {
String item = (String) attrib.get();
print("Item:"+item+"<br/>");
}
}
}
}
ctx.close();
} catch(NamingException ne) {
print("Error authenticating user:");
print(ne.getMessage());
}