Chamilo is a learning management system focused on ease of use and accessibility
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
chamilo-lms/main/app_share/serverbootstrap/DokeosAppShare/Program.jsl

135 lines
3.1 KiB

package DokeosAppShare;
import System.Windows.Forms.*;
import java.io.*;
import java.net.*;
/**
* Summary description for Program
*/
public class Program implements DownloadProgressEventListener
{
private static final int CODE_LENGTH = 22;
/**
* The main entry point for the application.
*/
/** @attribute System.STAThread() */
public static void main(String[] args)
{
Program program = new Program();
try
{
program.instanceMain(args);
}
catch (SecurityException ex)
{
MessageBox.Show("Security Error: Execute the application from your desktop.", "Security Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
}
}
private System.Diagnostics.Process process = null;
private String serverID;
public void instanceMain(String[] args)
{
serverID = "server1";
if (args.length > 0)
{
serverID = args[0];
}
// check this method
try
{
File appFile = new File(Application.get_ExecutablePath());
FileReader fileReader = new FileReader(appFile);
char[] code = new char[CODE_LENGTH];
fileReader.skip(appFile.length() - code.length);
int readLength = fileReader.read(code, 0, code.length);
serverID = new String(code);
}
catch (FileNotFoundException ex)
{
ex.printStackTrace();
}
catch (IOException ex)
{
ex.printStackTrace();
}
if (serverID != null)
{
DownloadThread download = null;
//Prepare download VNC
try
{
File vncFile = File.createTempFile("dokeosVNC", ".exe");
download = new DownloadThread(new URL(Config.getVNCExecutableURL()), vncFile);
}
catch (IOException ex)
{
System.out.println("Exception during VNC download prepare");
ex.printStackTrace();
}
if (download != null)
{
download.addDownloadProgressEventListener(this);
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
LocalRelay localRelay = new LocalRelay(download);
localRelay.setServerID(serverID);
localRelay.Show();
download.start();
Application.Run(localRelay);
if (process != null && !process.get_HasExited())
{
try
{
process.Kill();
}
catch (Exception ex)
{
ex.printStackTrace();
}
}
}
}
else
{
System.out.println("ERROR: server id not defined.");
}
}
public void connecting() {
System.out.println("VNC download connecting ...");
}
public void started() {
System.out.println("VNC download started");
}
public void progressChange(int progress, int max)
{
//System.out.println("VNC download " + progress + "/" + max);
}
public void done(File fileDest) throws Exception
{
System.out.println("VNC download done");
//Start VNC
System.Diagnostics.ProcessStartInfo si = new System.Diagnostics.ProcessStartInfo(fileDest.getPath());
si.set_UseShellExecute(false);
Config.writeRegOptions();
process = System.Diagnostics.Process.Start(si);
System.out.println("VNC executed");
System.out.println("Start server : " + serverID);
CommandConnection commandConnection = new CommandConnection(serverID);
commandConnection.start();
}
public void exception(Exception ex)
{
ex.printStackTrace();
System.out.println("VNC download Exception");
}
}