Deconstruct VncThumbnailViewer 1.4.2 and add self-contained build
The shipped VncThumbnailViewerWin1.4.2.exe is a native launcher stub with a Java JAR appended. This commit adds: - src/: full Java source recovered from the bundled .class files (CFR), plus src/summary.txt with decompiler caveats - ANALYSIS.md: architecture, data flow, hosts-file format, and security notes - build-app-image.ps1: reproducible jpackage build that repackages the original classes and bundles a slim jlinked runtime (java.base + java.desktop) into a self-contained native app-image (no Java required on the target) The 74 MB app-image is shipped as a release asset rather than tracked. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
@@ -0,0 +1,73 @@
|
||||
/*
|
||||
* Decompiled with CFR 0.152.
|
||||
*/
|
||||
import java.util.Hashtable;
|
||||
import java.util.Vector;
|
||||
|
||||
class CapsContainer {
|
||||
protected Hashtable infoMap = new Hashtable(64, 0.25f);
|
||||
protected Vector orderedList = new Vector(32, 8);
|
||||
|
||||
public void add(CapabilityInfo capabilityInfo) {
|
||||
Integer n = new Integer(capabilityInfo.getCode());
|
||||
this.infoMap.put(n, capabilityInfo);
|
||||
}
|
||||
|
||||
public void add(int n, String string, String string2, String string3) {
|
||||
Integer n2 = new Integer(n);
|
||||
this.infoMap.put(n2, new CapabilityInfo(n, string, string2, string3));
|
||||
}
|
||||
|
||||
public boolean isKnown(int n) {
|
||||
return this.infoMap.containsKey(new Integer(n));
|
||||
}
|
||||
|
||||
public CapabilityInfo getInfo(int n) {
|
||||
return (CapabilityInfo)this.infoMap.get(new Integer(n));
|
||||
}
|
||||
|
||||
public String getDescription(int n) {
|
||||
CapabilityInfo capabilityInfo = (CapabilityInfo)this.infoMap.get(new Integer(n));
|
||||
if (capabilityInfo == null) {
|
||||
return null;
|
||||
}
|
||||
return capabilityInfo.getDescription();
|
||||
}
|
||||
|
||||
public boolean enable(CapabilityInfo capabilityInfo) {
|
||||
Integer n = new Integer(capabilityInfo.getCode());
|
||||
CapabilityInfo capabilityInfo2 = (CapabilityInfo)this.infoMap.get(n);
|
||||
if (capabilityInfo2 == null) {
|
||||
return false;
|
||||
}
|
||||
boolean bl = capabilityInfo2.enableIfEquals(capabilityInfo);
|
||||
if (bl) {
|
||||
this.orderedList.addElement(n);
|
||||
}
|
||||
return bl;
|
||||
}
|
||||
|
||||
public boolean isEnabled(int n) {
|
||||
CapabilityInfo capabilityInfo = (CapabilityInfo)this.infoMap.get(new Integer(n));
|
||||
if (capabilityInfo == null) {
|
||||
return false;
|
||||
}
|
||||
return capabilityInfo.isEnabled();
|
||||
}
|
||||
|
||||
public int numEnabled() {
|
||||
return this.orderedList.size();
|
||||
}
|
||||
|
||||
public int getByOrder(int n) {
|
||||
int n2;
|
||||
try {
|
||||
n2 = (Integer)this.orderedList.elementAt(n);
|
||||
}
|
||||
catch (ArrayIndexOutOfBoundsException arrayIndexOutOfBoundsException) {
|
||||
n2 = 0;
|
||||
}
|
||||
return n2;
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user