Hey!
I've been trying to get autocachedownloader working on vencillio (im not aiming to get it online and leech it, just trying to learn)
- Ive uploaded both the cache and the cache version (.zip and .text). It does the following:
When i start the client for the first time, this is what pops up: http://prntscr.com/dnon1v
After clicking the OK button, this pops up almost instantly: http://prntscr.com/dnon84
The client then closes after clicking OK. When I check if the cache has been downloaded, these files show up - http://prntscr.com/dnondj
(I have covered the names because its a name I would like to use for a server in the future - Don't want other people using it! :P)
Im not sure what the error could be - I know this can be caused by not zipping the cache properly, but im 100% sure I have done it.
Here are my signlink and cachedownloader files:
Spoiler for Cachedownloader:
import java.awt.Color;
import java.io.BufferedInputStream;
import java.io.BufferedReader;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.net.URL;
import java.net.URLConnection;
import java.util.zip.ZipEntry;
import java.util.zip.ZipInputStream;
import javax.swing.JOptionPane;
import javax.swing.JProgressBar;
import javax.swing.border.EmptyBorder;
import javax.swing.plaf.basic.BasicProgressBarUI;
@SuppressWarnings("all")
public class CacheDownloader implements Runnable {
public static final String ZIP_URL = "http://dl.dropboxusercontent.com/s/8hedeawhf9tszgs/VencillioCache.zip";
public static final String VERSION_URL = "https://dl.dropboxusercontent.com/s/i3kkw5rwwfiwqsi/cacheVersion.text";
public static final String VERSION_FILE = ClientConstants.CACHE_LOCATION + "cacheVersion.dat";
private Client client;
private Client frame;
public CacheDownloader(Client client) {
this.client = client;
}
public double getCurrentVersion() {
try {
BufferedReader br = new BufferedReader(new InputStreamReader(new FileInputStream(VERSION_FILE)));
return Double.parseDouble(br.readLine());
} catch (Exception e) {
return 0.1;
}
}
public double getNewestVersion() {
try {
URL tmp = new URL(VERSION_URL);
BufferedReader br = new BufferedReader(new InputStreamReader(tmp.openStream()));
return Double.parseDouble(br.readLine());
} catch (Exception e) {
handleException(e);
return -1;
}
}
private void handleException(Exception e) {
StringBuilder strBuff = new StringBuilder();
strBuff.append("Something went wrong downloading your cache!\r\n");
strBuff.append("Please copy the error code and contact us via forums for assistantce.\r\n");
strBuff.append("http://www.rsps.com\r\n\r\n");
strBuff.append("Error Code: [" + e.getClass().getSimpleName() + "]");
alert("Vencillio", strBuff.toString(), true);
int option = JOptionPane.showConfirmDialog(null, "Would you like to visit our forums?", "Error", JOptionPane.YES_NO_OPTION);
if (option == 0) {
client.openURL("http://www.rsps.com");
} else {
System.exit(0);
}
}
private void alert(String msg) {
alert("Message", msg, false);
}
private void alert(String title, String msg, boolean error) {
JOptionPane.showMessageDialog(null, msg, title, (error ? JOptionPane.ERROR_MESSAGE : JOptionPane.PLAIN_MESSAGE));
}
@Override
public void run() {
client.drawLoadingText(0, "Checking Versions");
try {
double newest = getNewestVersion();
if (newest > this.getCurrentVersion()) {
client.drawLoadingText(0, "Update found!");
StringBuilder strBuff = new StringBuilder();
strBuff.append("Update version " + newest + " has been found!\n");
strBuff.append("Client will now automatically update.");
alert("Server", strBuff.toString(), true);
new ProgressBar();
updateClient();
client.drawLoadingText(0, "Server has been updated!");
alert("Server", "Download finished! Restart the Client to start playing!", false);
OutputStream out = new FileOutputStream(VERSION_FILE);
out.write(String.valueOf(newest).getBytes());
Runtime.getRuntime().exec("java -jar myApp.jar");
System.exit(0);
} else {
}
} catch (Exception e) {
handleException(e);
}
}
private void updateClient() {
File clientZip = downloadClient();
if (clientZip != null) {
unZip(clientZip);
}
}
private void unZip(File clientZip) {
try {
unZipFile(clientZip, new File(ClientConstants.CACHE_LOCATION));
clientZip.delete();
} catch (IOException e) {
handleException(e);
}
}
private void unZipFile(File zipFile, File outFile) throws IOException {
ZipInputStream zin = new ZipInputStream(new BufferedInputStream(new FileInputStream(zipFile)));
ZipEntry e;
long max = 0;
long curr = 0;
while ((e = zin.getNextEntry()) != null)
max += e.getSize();
zin.close();
ZipInputStream in = new ZipInputStream(new BufferedInputStream(new FileInputStream(zipFile)));
while ((e = in.getNextEntry()) != null) {
if (e.isDirectory())
new File(outFile, e.getName()).mkdirs();
else {
FileOutputStream out = new FileOutputStream(new File(outFile, e.getName()));
byte[] b = new byte[1024];
int len;
while ((len = in.read(b, 0, b.length)) > -1) {
curr += len;
out.write(b, 0, len);
setUnzipPercent((int) ((curr * 100) / max));
}
out.flush();
out.close();
}
}
}
public int percent = 0;
public void setDownloadPercent(int amount) {
percent = amount;
ProgressBar.updateValue(amount);
ProgressBar.updateString("(1/2) Downloading cache - " + ProgressBar.getValue() + "%");
client.drawLoadingText(amount, "(1/2) Downloading VencillioCache" + " - " + amount + "%");
}
public int percent2 = 0;
public void setUnzipPercent(int amount2) {
percent2 = amount2;
ProgressBar.updateValue(amount2);
ProgressBar.updateString("(2/2) Extracting cache - " + ProgressBar.getValue() + "%");
client.drawLoadingText(amount2, "(2/2) Extracting VencillioCache" + " - " + amount2 + "%");
}
private File downloadClient() {
File ret = new File(ClientConstants.CACHE_LOCATION + "cache.zip");
try {
OutputStream out = new FileOutputStream(ret);
URLConnection conn = new URL(ZIP_URL).openConnection();
InputStream in = conn.getInputStream();
long max = conn.getContentLength();
long curr = 0;
byte[] b = new byte[1024];
int len;
while ((len = in.read(b, 0, b.length)) > -1) {
out.write(b, 0, len);
curr += len;
setDownloadPercent((int) ((curr * 100) / max));
}
out.flush();
out.close();
in.close();
return ret;
} catch (Exception e) {
handleException(e);
ret.delete();
return null;
}
}
}
Spoiler for Signlink:
import java.applet.Applet;
import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.RandomAccessFile;
import java.net.InetAddress;
import java.net.Socket;
import java.net.URL;
public final class Signlink implements Runnable {
public static void startpriv(InetAddress inetaddress) {
threadliveid = (int) (Math.random() * 99999999D);
if (active) {
try {
Thread.sleep(500L);
} catch (Exception _ex) {
}
active = false;
}
socketreq = 0;
threadreq = null;
dnsreq = null;
savereq = null;
urlreq = null;
socketip = inetaddress;
Thread thread = new Thread(new Signlink());
thread.setDaemon(true);
thread.start();
while (!active) {
try {
Thread.sleep(50L);
} catch (Exception _ex) { }
}
}
public void run() {
active = true;
uid = getuid(findcachedir());
try {
cache_dat = new RandomAccessFile(findcachedir() + "main_file_cache.dat", "rw");
for (int j = 0; j < 6; j++) {
cache_idx[j] = new RandomAccessFile(findcachedir() + "main_file_cache.idx" + j, "rw");
}
} catch (Exception exception) {
exception.printStackTrace();
}
for (int i = threadliveid; threadliveid == i;) {
if (socketreq != 0) {
try {
socket = new Socket(socketip, socketreq);
} catch (Exception _ex) {
socket = null;
}
socketreq = 0;
} else if (threadreq != null) {
Thread thread = new Thread(threadreq);
thread.setDaemon(true);
thread.start();
thread.setPriority(threadreqpri);
threadreq = null;
} else if (dnsreq != null) {
try {
dns = InetAddress.getByName(dnsreq).getHostName();
} catch (Exception _ex) {
dns = "unknown";
}
dnsreq = null;
} else if (savereq != null) {
if (savebuf != null)
try {
FileOutputStream fileoutputstream = new FileOutputStream(findcachedir() + savereq);
fileoutputstream.write(savebuf, 0, savelen);
fileoutputstream.close();
} catch (Exception _ex) {
}
if (waveplay) {
waveplay = false;
}
if (midiplay) {
midi = findcachedir() + savereq;
midiplay = false;
}
savereq = null;
} else if (urlreq != null) {
try {
System.out.println("urlstream");
urlstream = new DataInputStream((new URL(mainapp.getCodeBase(), urlreq)).openStream());
} catch (Exception _ex) {
urlstream = null;
}
urlreq = null;
}
try {
Thread.sleep(50L);
} catch (Exception _ex) {
}
}
}
public static String findcachedir() {
File file = new File(System.getProperty("user.home") + "/VencillioCache/");
if (!file.exists()) {
if (!file.mkdir())
return secondDir();
}
return System.getProperty("user.home") + "/VencillioCache/";
//return "c:/VencillioCache/";
}
public static String secondDir() {
File file = new File("c:/VencillioCache/");
if (!file.exists())
file.mkdir();
return file.toString();
}
private static int getuid(String s) {
try {
File file = new File(s + "uid.dat");
if (!file.exists() || file.length() < 4L) {
DataOutputStream dataoutputstream = new DataOutputStream(new FileOutputStream(s + "uid.dat"));
dataoutputstream.writeInt((int) (Math.random() * 99999999D));
dataoutputstream.close();
}
} catch (Exception _ex) { }
try {
DataInputStream datainputstream = new DataInputStream(new FileInputStream(s + "uid.dat"));
int i = datainputstream.readInt();
datainputstream.close();
return i + 1;
} catch (Exception _ex) {
return 0;
}
}
public static synchronized Socket opensocket(int i) throws IOException {
for (socketreq = i; socketreq != 0;)
try {
Thread.sleep(50L);
} catch (Exception _ex) {
}
if (socket == null)
throw new IOException("could not open socket");
else
return socket;
}
public static synchronized DataInputStream openurl(String s) throws IOException {
for (urlreq = s; urlreq != null;)
try {
Thread.sleep(50L);
} catch (Exception _ex) {
}
if (urlstream == null)
throw new IOException("could not open: " + s);
else
return urlstream;
}
public static synchronized void dnslookup(String s) {
dns = s;
dnsreq = s;
}
public static synchronized void startthread(Runnable runnable, int i) {
threadreqpri = i;
threadreq = runnable;
}
public static synchronized boolean wavesave(byte abyte0[], int i) {
if (i > 0x1e8480)
return false;
if (savereq != null) {
return false;
} else {
wavepos = (wavepos + 1) % 5;
savelen = i;
savebuf = abyte0;
waveplay = true;
savereq = "sound" + wavepos + ".wav";
return true;
}
}
public static synchronized boolean wavereplay() {
if (savereq != null) {
return false;
} else {
savebuf = null;
waveplay = true;
savereq = "sound" + wavepos + ".wav";
return true;
}
}
public static synchronized void midisave(byte abyte0[], int i) {
if (i > 0x1e8480)
return;
if (savereq != null) {
} else {
midipos = (midipos + 1) % 5;
savelen = i;
savebuf = abyte0;
midiplay = true;
savereq = "jingle" + midipos + ".mid";
}
}
public static void reporterror(String s) {
System.out.println("Error: " + s);
}
private Signlink() {
}
public static final int clientversion = 317;
public static int uid;
public static int storeid = 32;
public static RandomAccessFile cache_dat = null;
public static final RandomAccessFile[] cache_idx = new RandomAccessFile[6];
public static boolean sunjava;
public static Applet mainapp = null;
private static boolean active;
private static int threadliveid;
private static InetAddress socketip;
private static int socketreq;
private static Socket socket = null;
private static int threadreqpri = 1;
private static Runnable threadreq = null;
private static String dnsreq = null;
public static String dns = null;
private static String urlreq = null;
private static DataInputStream urlstream = null;
private static int savelen;
private static String savereq = null;
private static byte[] savebuf = null;
private static boolean midiplay;
private static int midipos;
public static String midi = null;
public static int midivol;
public static int midifade;
private static boolean waveplay;
private static int wavepos;
public static int wavevol;
public static boolean reporterror = true;
public static String errorname = "";
}
Any advice where to look for problems? Thanks!
Bump, please help! :(