2016-12-25

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! :(

Show more