- Migrate users and groups (If users were not imported automatically via LDAP)
Package users and groups (2 separate packages) on the old system (excluding admin and anonymous OOTB users)
- Go to CRXDE lite app /crx/de/index.jsp and log in as admin user (on the old system)
- Go to "Tools" => "Query"
- In the bottom "Query" box enter this query to find the admin user: /jcr:root/home/users//element(*,rep:User)[@rep:principalName="admin"]
- Click "Execute" and copy the path of the admin user node in the results to a text file
- Repeat step 3 with a query for anonymous user: /jcr:root/home/users//element(*,rep:User)[@rep:principalName="anonymous"]
- Click "Execute" and copy the path of the anonymous user node in the results to a text file (so now you should have two paths, one for "admin" and one for "anonymous")
View User-Group-ACL-Migration.md
View INSTRUCTIONS.md
To run this script:
- Download the oak-run version matching the version of Oak installed in AEM: http://repo1.maven.org/maven2/org/apache/jackrabbit/oak-run
- Download the attached adminUtils.groovy script
- Upload the adminUtils.groovy script and the oak-run jar to your AEM server
- Run the command to start the oak-run console. For example:
java -Xmx2048m -jar /tmp/oak-run-1.6.1.jar console /app/aem/aem63/crx-quickstart/repository/segmentstore --read-write
- Once the oak-run console is open then load the groovy script using this command:
View 1 Instructions - Find Oak Corruptions.md
- Go to http://host:port/system/console/bundles and install these two bundles
- Go to http://host/system/console/configMgr/org.apache.sling.jcr.base.internal.LoginAdminWhitelist
- Add org.apache.felix.webconsole.plugins.scriptconsole to "Whitelist regexp" and save
- After the two bundles fully install then go to http://host:port/system/console/sc
- Select "Groovy" as the language
- Copy/Paste the contents of countNodes-*.groovy script below which matches your oak version to the script console
- Click "Execute"
- Don't close the browser, the output is displayed in the console UI
View 1-Oak SegmentNotFoundException repair scenario.md
The objective here is to find all SegmentNotFoundException type corruption and remove it (as we don't have a valid backup)
Before running any of the below steps we created an index.json file (see the file below) which contains only the index definitions of the corrupted indexes.
- This generates the file indexing-results\index-definities.json
java -Xmx8g -jar oak-run-1.8.12.jar index --fds-path=crx-quickstart\repository\datastore crx-quickstart\repository\segmentstore --index-definitions
- From that file we copied only the definitions we needed and created index.json (file attached here )
View gist:e467515f8814fdc59de7511e836205ae
# Contributor: Joey Smith <joeysmith@gmail.com> | |
# Maintainer: | |
pkgname=flif | |
pkgver=0.3 | |
pkgrel=0 | |
pkgdesc="FLIF is a lossless image format which outperforms PNG, lossless WebP, lossless BPG, lossless JPEG2000, and lossless JPEG XR." | |
url="https://flif.info" | |
arch="all" | |
license="LGPLv3+" | |
depends="libpng" |
View checkBlobs.groovy
import ch.qos.logback.classic.Level | |
import com.google.common.base.Stopwatch | |
import org.apache.jackrabbit.oak.api.Blob | |
import org.apache.jackrabbit.oak.api.PropertyState | |
import org.apache.jackrabbit.oak.api.Type | |
import org.apache.jackrabbit.oak.commons.PathUtils | |
import org.apache.jackrabbit.oak.spi.state.ChildNodeEntry | |
import org.apache.jackrabbit.oak.spi.state.NodeState | |
import org.apache.jackrabbit.oak.spi.state.NodeStateUtils | |
import org.apache.jackrabbit.oak.spi.state.NodeStore |
View gist:5fac802de028b8e8024ebf95902b9951
root@ip-172-31-19-81:~# cat >> .bash_profile <<EOT | |
> echo "I ran the .bash_profile for root" | |
> EOT | |
root@ip-172-31-19-81:~# logout | |
(main) 23:33:16 [ joey@ip-172-31-19-81:0 ] ~ 2126 -->sudo -s | |
23:33:20 [ root@ip-172-31-19-81:0 ] ~ 494 -->exit | |
(main) 23:33:21 [ joey@ip-172-31-19-81:0 ] ~ 2127 -->sudo -i | |
I ran the .bash_profile for root |
View path-debugger.php
<?php | |
$path = ''; | |
foreach(array_filter(explode('/', '/var/run/memcached/memcached.socket')) as $p) { | |
$path .= '/'.$p; | |
if (file_exists($path)) { | |
echo "{ '$path' : ", json_encode(stat($path)), "} \n"; | |
} else { | |
echo "PHP cannot see $path.\n"; | |
exit(1); | |
} |
View u_filter.py
def u_filter(func, iterable): | |
if f is None: | |
return (item for item in iterable if item) | |
return (item for item in iterable if func(item)) |
View gist:fb4b8ac960f66eddbb12dd97d2626402
https://blogs.msdn.microsoft.com/scottdensmore/2004/05/25/why-singletons-are-evil/ | |
http://steve.yegge.googlepages.com/singleton-considered-stupid | |
http://googletesting.blogspot.com/2008/11/clean-code-talks-global-state-and.html | |
https://www.alainschlesser.com/singletons-shared-instances/ | |
http://misko.hevery.com/2008/08/17/singletons-are-pathological-liars/ |