Hoi,
Ik hoop dat er hier mensen zijn die mij kunnen helpen. De situatie is als volgt:
Systeem "I" en Systeem "E". Op "I" (Intern) draait een database met hierin VNC wachtwoorden (en VNC poorten). Nou draait hier ook een interne website om deze VNC dozen te maken/beheren.
So far, so good. Het is alleen zo dat deze "vnc console" op een remote host draait, remote host E dus (extern). Deze website wordt ook gebruikt door klanten die uiteraard hun eigen VNCPoort+Password hebben (simpele website met daarop een form die POST naar lokaal. Hier draait dus ook een Java Applet zodat men via een website in kan loggen op hun VNC-doos. Dit gedeelte werkt.
Intern (op systeem I) staan alle wachtwoorden en gezien wij deze niet allemaal willen onthouden (
) hebben ik op ons interne systeem een knopje gemaakt die nu een browser window opent en dus feitelijk een POST uitvoert naar het E-systeem. Klinkt makkelijker dan het is, wat voornamelijk te maken heeft met Java.
Doe ik via php-curl een post bouwen en vervolgens de website openen, begint de Java Applet te zeuren dat de domeinnaam (vnc.bedrijf.nl) niet matcht met lokaal. In de nieuwste Java JRE is dit een bescherming.
Doe ik een POST niet via curl, maar via http_build_query , dan werkt het ook niet.
De broncode van vnc.bedrijf.nl
De headers zijn al reeds getest, maar bieden geen oplossing. De POST werkt wel, alleen wordt de Java Applet gestart vanuit je lokale PC (met een lokale referer??) waardoor deze niet mag/kan verbinden met vnc.bedrijf.nl ..
Ik heb ook al gekeken of dit via een GET op te lossen is en dan werkt het (omdat ik dan rechtstreeks een javascript open window kan doen met GET variabelen). Het grootste en enige bezwaar is dat username/password dan opduiken in de Apache logs en dat willen we niet...
Hier nog een stukje curl-code die ik heb gebruikt (en dus hetzelfde resultaat als bovenstaande code)
Iemand een idee hoe ik dit kan oplossen voordat ik voor elke entry een SUBMIT button moet maken die een POST uitvoert naar de betreffende URL ...
Ik hoop dat er hier mensen zijn die mij kunnen helpen. De situatie is als volgt:
Systeem "I" en Systeem "E". Op "I" (Intern) draait een database met hierin VNC wachtwoorden (en VNC poorten). Nou draait hier ook een interne website om deze VNC dozen te maken/beheren.
So far, so good. Het is alleen zo dat deze "vnc console" op een remote host draait, remote host E dus (extern). Deze website wordt ook gebruikt door klanten die uiteraard hun eigen VNCPoort+Password hebben (simpele website met daarop een form die POST naar lokaal. Hier draait dus ook een Java Applet zodat men via een website in kan loggen op hun VNC-doos. Dit gedeelte werkt.
Intern (op systeem I) staan alle wachtwoorden en gezien wij deze niet allemaal willen onthouden (
Doe ik via php-curl een post bouwen en vervolgens de website openen, begint de Java Applet te zeuren dat de domeinnaam (vnc.bedrijf.nl) niet matcht met lokaal. In de nieuwste Java JRE is dit een bescherming.
Doe ik een POST niet via curl, maar via http_build_query , dan werkt het ook niet.
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
| $data = array('vncport'=>$port,'vncpassword'=>$pass); $url = "http://vnc.bedrijf.nl/"; $post = http_build_query($data); $context = stream_context_create(array("http"=>array( "method" => "POST", "header" => "Content-Type: application/x-www-form-urlencoded\r\n" . "Content-Length: ". strlen($post) . "\r\n" . "Status: 200 \r\n" . "Referer: http://vnc.bedrijf.nl \r\n". "Location: http://vnc.bedrijf.nl \r\n", "content" => $post, ))); $page = file_get_contents($url, false, $context); header("Cache-Control: no-cache, must-revalidate"); // HTTP/1.1 header("Expires: Sat, 26 Jul 1997 05:00:00 GMT"); // Date in the past echo $page; |
De broncode van vnc.bedrijf.nl
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
| <? echo '<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> <head> <meta http-equiv="Content-type" content="text/html; charset=utf-8" /> <title>Toegang VPS-platform</title> </head> '; // Display form if there's no data to process. if (empty($_POST)) { // Announce we're going to send UTF-8 HTML. Header("Content-Type: text/html; charset=utf-8"); // Output HTML form. echo '<body> <form action="index.php" method="post"> VNC-poort: <input type="text" name="vncport" /><br /> VNC-wachtwoord: <input type="text" name="vncpassword" /><br /> <input type="submit" name="submit" value="Maak verbinding!" /> </form> </body> </html>'; exit(1); } // Check for an entered VNC port. if (empty($_POST["vncport"])) { echo "Geef een geldige VNC-poort op.."; exit(1); } // Check for an entered VNC password. if (empty($_POST["vncpassword"])) { echo "Geeft een geldig VNC-wachtwoord op."; exit(1); } // Store variables. $vncport = $_POST["vncport"]; $vncpassword = $_POST["vncpassword"]; echo '<applet code="com.tigervnc.vncviewer.VncViewer" archive="VncViewer.jar" width="1024px" height="768px"> <param name="HOST" value="vnc.bedrijf.nl"> <param name="PORT" value="' . $vncport . '"> <param name="PASSWORD" value="' .$vncpassword . '"> </body> </html>'; ?> |
De headers zijn al reeds getest, maar bieden geen oplossing. De POST werkt wel, alleen wordt de Java Applet gestart vanuit je lokale PC (met een lokale referer??) waardoor deze niet mag/kan verbinden met vnc.bedrijf.nl ..
Ik heb ook al gekeken of dit via een GET op te lossen is en dan werkt het (omdat ik dan rechtstreeks een javascript open window kan doen met GET variabelen). Het grootste en enige bezwaar is dat username/password dan opduiken in de Apache logs en dat willen we niet...
Hier nog een stukje curl-code die ik heb gebruikt (en dus hetzelfde resultaat als bovenstaande code)
PHP:
1
2
3
4
5
6
7
8
9
10
| $fields = "vncport=".$port."&vncpassword=".$pass; $url = "http://vnc.bedrijf.nl"; $ch = curl_init($url); curl_setopt($ch, CURLOPT_HEADER, 0); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 0); curl_setopt($ch, CURLOPT_FRESH_CONNECT, 1); curl_setopt($ch, CURLOPT_POSTFIELDS, $fields); $response = curl_exec($ch); echo $response; curl_close ($ch); |
Iemand een idee hoe ik dit kan oplossen voordat ik voor elke entry een SUBMIT button moet maken die een POST uitvoert naar de betreffende URL ...
HomeComputerMuseum - Interactief computermuseum waar wij de geschiedenis van de thuiscomputer preserveren. Centraal gelegen in de Benelux.