From b221fe6d74d698af9fb1aa09740f8e7bae738ca4 Mon Sep 17 00:00:00 2001 From: grog Date: Sun, 15 Oct 2023 08:41:07 -0700 Subject: [PATCH 1/3] test pat checkin --- src/main/resources/resource/framework/ivysettings.xml.template | 1 + 1 file changed, 1 insertion(+) diff --git a/src/main/resources/resource/framework/ivysettings.xml.template b/src/main/resources/resource/framework/ivysettings.xml.template index 5abe7d9f04..b329371bf3 100644 --- a/src/main/resources/resource/framework/ivysettings.xml.template +++ b/src/main/resources/resource/framework/ivysettings.xml.template @@ -1,4 +1,5 @@ + From 7edca176b85e5938e5fb123f0059f4c86ca5e3ce Mon Sep 17 00:00:00 2001 From: grog Date: Sun, 15 Oct 2023 08:56:35 -0700 Subject: [PATCH 2/3] failed attempt --- .../org/myrobotlab/framework/repo/Repo.java | 34 ++++--------------- .../service/meta/ChessGameMeta.java | 2 +- .../service/meta/Deeplearning4jMeta.java | 2 +- .../myrobotlab/service/meta/WiiDarMeta.java | 2 +- .../org/myrobotlab/service/meta/WiiMeta.java | 2 +- 5 files changed, 10 insertions(+), 32 deletions(-) diff --git a/src/main/java/org/myrobotlab/framework/repo/Repo.java b/src/main/java/org/myrobotlab/framework/repo/Repo.java index 9262834da1..654f3b2de9 100644 --- a/src/main/java/org/myrobotlab/framework/repo/Repo.java +++ b/src/main/java/org/myrobotlab/framework/repo/Repo.java @@ -140,40 +140,18 @@ protected Repo() { // FIXME reduce down to maven central bintray & repo.myrobotlab.org remotes = new ArrayList(); remotes.add(new RemoteRepo("central", "https://repo.maven.apache.org/maven2", "the mother load")); - // remotes.add(new RemoteRepo("bintray", "https://jcenter.bintray.com", - // "the big kahuna")); - // remotes.add(new RemoteRepo("bintray2", "https://dl.bintray.com", "more - // big kahuna")); + // old repo in AWS EC2 + // remotes.add(new RemoteRepo("myrobotlab", "https://repo.myrobotlab.org/artifactory/myrobotlab", "all other mrl deps")); + + // mrl repo for all other missing deps - requires personal access token to read (what a pain) + // created a read only package token for this purpose remotes.add(new RemoteRepo("myrobotlab", "https://repo.myrobotlab.org/artifactory/myrobotlab", "all other mrl deps")); + remotes.add(new RemoteRepo("sarxos", "https://oss.sonatype.org/content/repositories/snapshots", "for sarxos webcam")); - // DO NOT INCLUDE - messed up repo ! - // remotes.add(new RemoteRepo("dcm4che", "http://www.dcm4che.org/maven2", - // "for - // jai_imageio")); - do not use remotes.add(new RemoteRepo("eclipse-release", "https://repo.eclipse.org/content/groups/releases")); - // remotes.add(new RemoteRepo("jmonkey", - // "https://dl.bintray.com/jmonkeyengine/org.jmonkeyengine", "jmonkey - // simulator")); - remotes.add(new RemoteRepo("oss-snapshots-repo", "https://oss.sonatype.org/content/groups/public", "sphinx")); - // remotes.add(new RemoteRepo("alfresco", - // "https://artifacts.alfresco.com/nexus/content/repositories/public", - // "swinggui mxgraph")); - // remotes.add(new RemoteRepo("talend", - // "https://nexus.talanlabs.com/content/repositories/releases/", "swinggui - // mxgraph")); - - // probably safe to drop this one - maven central should have it - // remotes.add(new RemoteRepo("marytts", "http://mary.dfki.de/repo", "some - // marytts voices")); - - // This one is needed because of a transient dependency of solr - // org.restlet.jee .. not sure where - // remotes.add(new RemoteRepo("maven-restlet", - // "https://maven.restlet.talend.com", "Public online Restlet - // repository")); // This is the repo for the Java Discord API for the Discord Bot service // lives. diff --git a/src/main/java/org/myrobotlab/service/meta/ChessGameMeta.java b/src/main/java/org/myrobotlab/service/meta/ChessGameMeta.java index 4c5e4ed8a2..131f0afb2f 100644 --- a/src/main/java/org/myrobotlab/service/meta/ChessGameMeta.java +++ b/src/main/java/org/myrobotlab/service/meta/ChessGameMeta.java @@ -15,7 +15,7 @@ public class ChessGameMeta extends MetaData { */ public ChessGameMeta() { addCategory("game"); - addDependency("ChessBoard", "ChessBoard", "1.0.0"); + addDependency("ChessBoard", "chessboard", "1.0.0"); addDescription("Would you like to play a game?"); } } diff --git a/src/main/java/org/myrobotlab/service/meta/Deeplearning4jMeta.java b/src/main/java/org/myrobotlab/service/meta/Deeplearning4jMeta.java index 56fe4f8ad5..e0ee410156 100644 --- a/src/main/java/org/myrobotlab/service/meta/Deeplearning4jMeta.java +++ b/src/main/java/org/myrobotlab/service/meta/Deeplearning4jMeta.java @@ -36,7 +36,7 @@ public Deeplearning4jMeta() { addDependency("org.deeplearning4j", "deeplearning4j-modelimport", dl4jVersion); // the miniXCEPTION network / model for emotion detection on detected faces - addDependency("miniXCEPTION", "miniXCEPTION", "0.0", "zip"); + addDependency("miniXCEPTION", "minixception", "0.0", "zip"); if (!cudaEnabled) { // By default support native CPU execution. diff --git a/src/main/java/org/myrobotlab/service/meta/WiiDarMeta.java b/src/main/java/org/myrobotlab/service/meta/WiiDarMeta.java index d02f7e2ef2..a8dce8fe0e 100644 --- a/src/main/java/org/myrobotlab/service/meta/WiiDarMeta.java +++ b/src/main/java/org/myrobotlab/service/meta/WiiDarMeta.java @@ -15,7 +15,7 @@ public class WiiDarMeta extends MetaData { public WiiDarMeta() { addDescription("WiiDar.... who dar? WiiDar!"); - addDependency("wiiusej", "wiiusej", "wiiusej"); + addDependency("wiiusej", "wiiusej", "0.0.1"); addCategory("sensors"); // no longer have hardware for this ... setAvailable(false); diff --git a/src/main/java/org/myrobotlab/service/meta/WiiMeta.java b/src/main/java/org/myrobotlab/service/meta/WiiMeta.java index 416ce26990..2dd35f9190 100644 --- a/src/main/java/org/myrobotlab/service/meta/WiiMeta.java +++ b/src/main/java/org/myrobotlab/service/meta/WiiMeta.java @@ -17,7 +17,7 @@ public WiiMeta() { addDescription("Wii mote control and sensor info"); addCategory("control", "sensors"); - addDependency("wiiusej", "wiiusej", "wiiusej"); + addDependency("wiiusej", "wiiusej", "0.0.1"); // } From b5b2fefe35b687558d10f1b44327b44ac84957b2 Mon Sep 17 00:00:00 2001 From: grog Date: Mon, 16 Oct 2023 07:10:51 -0700 Subject: [PATCH 3/3] encrypt package reader key - so githubbot can't findit --- .../java/org/myrobotlab/service/Runtime.java | 1 + .../java/org/myrobotlab/service/Security.java | 73 ++++++++++++++++++- 2 files changed, 72 insertions(+), 2 deletions(-) diff --git a/src/main/java/org/myrobotlab/service/Runtime.java b/src/main/java/org/myrobotlab/service/Runtime.java index 721524f38b..e36a3c79da 100644 --- a/src/main/java/org/myrobotlab/service/Runtime.java +++ b/src/main/java/org/myrobotlab/service/Runtime.java @@ -1532,6 +1532,7 @@ synchronized static public void install(String serviceType, Boolean blocking) { @Override public void run() { try { + // r.getRepo().setKey(Runtime.getSecurity().getRepoKey()); if (serviceType == null) { r.getRepo().install(); } else { diff --git a/src/main/java/org/myrobotlab/service/Security.java b/src/main/java/org/myrobotlab/service/Security.java index 0219c7ca53..c05255c593 100644 --- a/src/main/java/org/myrobotlab/service/Security.java +++ b/src/main/java/org/myrobotlab/service/Security.java @@ -16,6 +16,7 @@ import java.security.NoSuchAlgorithmException; import java.security.cert.CertificateException; import java.security.cert.X509Certificate; +import java.util.Base64; import java.util.HashMap; import java.util.HashSet; import java.util.List; @@ -28,6 +29,7 @@ import javax.crypto.Cipher; import javax.crypto.KeyGenerator; import javax.crypto.SecretKey; +import javax.crypto.spec.IvParameterSpec; import javax.crypto.spec.SecretKeySpec; import javax.net.ssl.SSLContext; import javax.net.ssl.SSLException; @@ -142,15 +144,17 @@ public static void main(String[] args) throws Exception { // LoggingFactory.init(Level.INFO); Runtime.getInstance(args); + + Security security = Runtime.getSecurity(); + System.out.println(security.encrypt("repo-key")); + System.out.println(security.getRepoKey()); - Runtime.start("gui", "SwingGui"); // Security security = Security.getInstance(); // initializeStore("im a rockin rocker"); Runtime.getSecurity().setKey("myKeyName", "XXDDLKERIOEJKLJ##$KJKJ#LJ@@"); String key = Runtime.getSecurity().getKey("myKeyName"); log.info("key is {}", key); - Security security = Runtime.getSecurity(); security.setKey("amazon.polly.user.key", "XXXXXXXXXXXXXX"); security.setKey("amazon.polly.user.secret", "XXXXXXXXXXXXXXXXXXXXXXXXXXXX"); @@ -221,6 +225,10 @@ public Security(String n, String id) { public boolean addGroup(String groupId) { return addGroup(groupId, false); } + + public String getRepoKey() { + return decrypt(encryptedRepoKey); + } public boolean addGroup(String groupId, boolean defaultAccess) { Group g = new Group(); @@ -784,5 +792,66 @@ public ServiceConfig apply(ServiceConfig c) { public ServiceConfig getConfig() { return config; } + + /** + * 16 byte initialization vector + */ + private String initVector = "myrobotlabrocks!"; + + /** + * At some point this could be replaced by the users key, but + * currently we only need this to decrypt repo reader personal access token + * to download dependency libraries from github, which SHOULD NOT require a + * PAT anyway + */ + private String key = "replcewthuserkey"; + + private String encryptedRepoKey = "yKPc6MH7zpRVE58Utji8uq26At64qn6fmDbXMhObcLHWVp451ONpXu6MHNUZj5Lp"; + + public String encrypt(String toEncrypt) { + return encrypt(key, initVector, toEncrypt); + } + + + public String encrypt(String key, String initVector, String toEncrypt) { + try { + IvParameterSpec iv = new IvParameterSpec(initVector.getBytes("UTF-8")); + SecretKeySpec skeySpec = new SecretKeySpec(key.getBytes("UTF-8"), "AES"); + + Cipher cipher = Cipher.getInstance("AES/CBC/PKCS5PADDING"); + cipher.init(Cipher.ENCRYPT_MODE, skeySpec, iv); + + byte[] encrypted = cipher.doFinal(toEncrypt.getBytes()); + + return Base64.getEncoder().encodeToString(encrypted); + } catch (Exception e) { + e.printStackTrace(); + } + + return null; +} + + public String decrypt(String encrypted) { + return decrypt(key, initVector, encrypted); + } + +public String decrypt(String key, String initVector, String encrypted) { + try { + IvParameterSpec iv = new IvParameterSpec(initVector.getBytes("UTF-8")); + SecretKeySpec skeySpec = new SecretKeySpec(key.getBytes("UTF-8"), "AES"); + + Cipher cipher = Cipher.getInstance("AES/CBC/PKCS5PADDING"); + cipher.init(Cipher.DECRYPT_MODE, skeySpec, iv); + + byte[] original = cipher.doFinal(Base64.getDecoder().decode(encrypted)); + + return new String(original); + } catch (Exception e) { + e.printStackTrace(); + } + + return null; +} + }