commit d3b0130655acd2e95bd4e3add14a05d38f662f95
Author: Christoph Haas
Date: Mon Jul 16 19:30:19 2012 +0000
VPN-Management-GUI 2.0.3 porting start
diff --git a/.project b/.project
new file mode 100644
index 0000000..dee727b
--- /dev/null
+++ b/.project
@@ -0,0 +1,11 @@
+
+
+ vpnmanager
+
+
+
+
+
+
+
+
diff --git a/Admin/Modules/Home/img/openvpn.png b/Admin/Modules/Home/img/openvpn.png
new file mode 100755
index 0000000..517589b
Binary files /dev/null and b/Admin/Modules/Home/img/openvpn.png differ
diff --git a/Admin/Modules/Home/img/tux.png b/Admin/Modules/Home/img/tux.png
new file mode 100755
index 0000000..0756cc7
Binary files /dev/null and b/Admin/Modules/Home/img/tux.png differ
diff --git a/Admin/Modules/Home/index.php b/Admin/Modules/Home/index.php
new file mode 100755
index 0000000..6a9843a
--- /dev/null
+++ b/Admin/Modules/Home/index.php
@@ -0,0 +1,30 @@
+
+
+Administration Center
+
+
+
+Actions:
+
+ # ".$modtitle."
+ ";
+ }
+?>
+# PhpMyAdmin
+
+
+
+
+
+
+
diff --git a/Admin/Modules/Logviewer/index.php b/Admin/Modules/Logviewer/index.php
new file mode 100755
index 0000000..218a0cc
--- /dev/null
+++ b/Admin/Modules/Logviewer/index.php
@@ -0,0 +1,171 @@
+";
+ exit;
+ }
+
+ $sort = mysql_real_escape_string($_POST["dirsort"]); //$_GET["sort"];
+ $by = mysql_real_escape_string($_POST["sortby"]); //$_GET["by"];
+ $table = mysql_real_escape_string($_POST["table"]); //$_GET["table"];
+ $client= mysql_real_escape_string($_POST["client"]);
+
+?>
+
+
+
+
+
+
+ // MYsql befehl basteln
+ $sql = "SELECT * FROM $table ORDER BY $by $sort;";
+ $result = mysql_query($sql);
+
+ echo "";
+ if($table=='connections')
+ {
+ echo "Start Time Stop Time Client Name Client IP Download
+ Upload \n";
+ }
+ else if($table=='month')
+ {
+ echo "Month Year Connection Time Client Name Download
+ Upload \n";
+ }
+ else if($table=='year')
+ {
+ echo "Year Connection Time Client Name Download
+ Upload \n";
+ }
+ else
+ {
+ }
+// ------------------------------------------------ Mysql lesen
+ if ($result)
+ {
+ while ($ar=mysql_fetch_array($result,MYSQL_ASSOC))
+ {
+ if($ar["sent"]>1024)
+ {
+ $sentbytes = round($ar["sent"]/1024,2) . " KiB";
+ if($ar["sent"]>1048576)
+ {
+ $sentbytes = round($ar["sent"]/1024/1024,2) . " MiB";
+ if($ar["sent"]>1073741824)
+ {
+ $sentbytes = round($ar["sent"]/1024/1024/1024,2) . " GiB";
+ }
+ }
+ }
+ else
+ {
+ $sentbytes = $ar["sent"]. " Byte";
+ }
+
+ if($ar["received"]>1024)
+ {
+ $receivedbytes = round($ar["received"]/1024,2) . " KiB";
+ if($ar["received"]>1048576)
+ {
+ $receivedbytes = round($ar["received"]/1024/1024,2) . " MiB";
+ if($ar["received"]>1073741824)
+ {
+ $receivedbytes = round($ar["received"]/1024/1024/1024,2) . " GiB";
+ }
+ }
+ }
+ else
+ {
+ $receivedbytes = $ar["received"]. " Byte";
+ }
+
+ if($table=='connections')
+ {
+ if($ar["stop"] != 0)
+ {
+ $stop = date("r",$ar["stop"]);
+ }
+ else
+ {
+ $stop = "running session";
+ }
+
+ if($client == "" || $ar["client"] == $client)
+ {
+ echo "",date("r",$ar["start"])," ",$stop," ",$ar["client"],
+ " ",$ar["ip"],
+ " ",$sentbytes,
+ " ",$receivedbytes,
+ " \n";
+ }
+ }
+ else if($table=='month')
+ {
+ $hour = floor($ar["time"]/3600);
+ $min = floor($ar["time"]/60 - $hour *60);
+ $sec = $ar["time"]-$hour*3600-$min*60;
+ $timestring = $hour .":". $min .":". $sec;
+
+ if($client == "" || $ar["client"] == $client)
+ {
+ echo "",$ar["month"]," ",$ar["year"]," ",$timestring,
+ " ",$ar["client"],
+ " ",$sentbytes," ",$receivedbytes,
+ " \n";
+ }
+ }
+ else if($table=='year')
+ {
+ $hour = floor($ar["time"]/3600);
+ $min = floor($ar["time"]/60 - $hour *60);
+ $sec = $ar["time"]-$hour*3600-$min*60;
+ $timestring = $hour .":". $min .":". $sec;
+
+ if($client == "" || $ar["client"] == $client)
+ {
+ echo "",$ar["year"]," ",$timestring,
+ " ",$ar["client"],
+ " ",$sentbytes," ",$receivedbytes,
+ " \n";
+ }
+ }
+ else
+ {
+ }
+ }
+ }
+ else
+ {
+ echo " ";
+ }
+ echo "
";
+ mysql_close();
+?>
+
diff --git a/Admin/Modules/Munin/index.php b/Admin/Modules/Munin/index.php
new file mode 100755
index 0000000..2fc02d6
--- /dev/null
+++ b/Admin/Modules/Munin/index.php
@@ -0,0 +1,10 @@
+
+
diff --git a/Admin/Modules/Settings/change.php b/Admin/Modules/Settings/change.php
new file mode 100644
index 0000000..e6a5bad
--- /dev/null
+++ b/Admin/Modules/Settings/change.php
@@ -0,0 +1,42 @@
+FAIL ] ");
+}
+
+if(is_null($_REQUEST["withsquid"]))
+{
+ $_REQUEST["withsquid"] = "0";
+}
+if(is_null($_REQUEST["withmail"]))
+{
+ $_REQUEST["withmail"] = "0";
+}
+if(is_null($_REQUEST["withusersquid"]))
+{
+ $_REQUEST["withusersquid"] = "0";
+}
+
+// Daten eintragen
+while (list ($attr, $value) = each ($_REQUEST))
+{
+ if($attr != "path")
+ {
+ // SQL-Anweisung erstellen
+ $sql = "UPDATE ".
+ "config SET value='".mysql_real_escape_string($value)."' WHERE attr = '".mysql_real_escape_string($attr)."'";
+ mysql_query ($sql);
+ }
+}
+
+
+header ("Location: ".$moduleurl."&uebergabe=1");
+
+?>
diff --git a/Admin/Modules/Settings/index.php b/Admin/Modules/Settings/index.php
new file mode 100755
index 0000000..eb1894c
--- /dev/null
+++ b/Admin/Modules/Settings/index.php
@@ -0,0 +1,242 @@
+ 0)
+{
+ $moduleurl = substr($moduleurl,0,$urlcut);
+}
+else
+{
+ if(strpos($moduleurl, "?") == 0)
+ {
+ $moduleurl = $_SERVER["REQUEST_URI"]."?site=1";
+ }
+}
+$url = $moduleurl;
+include ($_SERVER["DOCUMENT_ROOT"]."/Site/checkadmin.php");
+$status = $_REQUEST["uebergabe"];
+?>
+
+Settings
+Settings saved successfully!";
+ break;
+ case 2:
+ echo "Domain ACL saved successfully! ";
+ break;
+ case 3:
+ echo "Blocked Client ACL saved successfully! ";
+ break;
+ case 4:
+ echo "Allowed Client ACL saved successfully! ";
+ break;
+ default:
+ break;
+}
+
+echo "
+ ";
+
+ if(db_getconfval("withsquid")=="1")
+ {
+ echo"
+
+
+ ";
+
+ echo "
+
+
+ Squid Client ACL (blocked Clients):
+ ";
+
+ include(db_getconfval("sqdir")."/denied_clients.acl");
+
+ echo "
+
+
+
+
+ ";
+
+ echo "
+
+
+ Squid Client ACL (allowed Clients):
+ ";
+
+ include(db_getconfval("sqdir")."/allowed_clients.acl");
+
+ echo "
+
+
+
+
+ ";
+
+ if ($_REQUEST["submit"] == "Speichern")
+ {
+ $fp = fopen(db_getconfval("sqdir")."/denied_domains.acl","w");
+ $data =$_REQUEST["inhalt"];
+ $data = str_replace("\r","",$data);
+ exec("touch /var/vpn/squid_restart");
+ fputs($fp,$data);
+ fclose($fp);
+
+ echo " ";
+ }
+
+ if ($_REQUEST["submitc"] == "Speichern")
+ {
+ $fp = fopen(db_getconfval("sqdir")."/denied_clients.acl","w");
+ $data =$_REQUEST["inhaltc"];
+ $data = str_replace("\r","",$data);
+ exec("touch /var/vpn/squid_restart");
+ fputs($fp,$data);
+ fclose($fp);
+
+ echo " ";
+ }
+
+ if ($_REQUEST["submita"] == "Speichern")
+ {
+ $fp = fopen(db_getconfval("sqdir")."/allowed_clients.acl","w");
+ $data =$_REQUEST["inhalta"];
+ $data = str_replace("\r","",$data);
+ exec("touch /var/vpn/squid_restart");
+ fputs($fp,$data);
+ fclose($fp);
+
+ echo " ";
+ }
+ }
+?>
diff --git a/Admin/Modules/Squid/changesquid.php b/Admin/Modules/Squid/changesquid.php
new file mode 100755
index 0000000..8563fdc
--- /dev/null
+++ b/Admin/Modules/Squid/changesquid.php
@@ -0,0 +1,14 @@
+
diff --git a/Admin/Modules/Squid/delbl.php b/Admin/Modules/Squid/delbl.php
new file mode 100755
index 0000000..8265214
--- /dev/null
+++ b/Admin/Modules/Squid/delbl.php
@@ -0,0 +1,9 @@
+ ".db_getconfval("sqddir")."/blacklist");
+echo $ret;
+header ("Location: ".$path."&uebergabe=1&uebergabe2=2");
+?>
diff --git a/Admin/Modules/Squid/include/config.inc b/Admin/Modules/Squid/include/config.inc
new file mode 100755
index 0000000..89ed528
--- /dev/null
+++ b/Admin/Modules/Squid/include/config.inc
@@ -0,0 +1,66 @@
+
diff --git a/Admin/Modules/Squid/include/functions.inc b/Admin/Modules/Squid/include/functions.inc
new file mode 100755
index 0000000..870fa96
--- /dev/null
+++ b/Admin/Modules/Squid/include/functions.inc
@@ -0,0 +1,251 @@
+ $PluginData)
+ {
+ // Check if the config.inc for a plugin exists
+ if (file_exists ($_SERVER["DOCUMENT_ROOT"]."/Admin/Modules/VPNconfig/plugins/". $PluginData['Folder'] ."/config.inc"))
+ {
+ include ($_SERVER["DOCUMENT_ROOT"]."/Admin/Modules/VPNconfig/plugins/". $PluginData['Folder'] ."/config.inc");
+
+ // Check if claimed inc files do exist
+ if (isset ($config['Plugins'][$PluginName]['Action']['Include']) &&
+ !file_exists ($_SERVER["DOCUMENT_ROOT"]."/Admin/Modules/VPNconfig/plugins/". $PluginData['Folder'] ."/".
+ $config['Plugins'][$PluginName]['Action']['Include']))
+ $config['Plugins'][$PluginName]['Action']['Include'] = NULL;
+
+ if (isset ($config['Plugins'][$PluginName]['Left']['Menu']) &&
+ !file_exists ($_SERVER["DOCUMENT_ROOT"]."/Admin/Modules/VPNconfig/plugins/". $PluginData['Folder'] ."/".
+ $config['Plugins'][$PluginName]['Left']['Menu']))
+ $config['Plugins'][$PluginName]['Left']['Menu'] = NULL;
+
+ if (isset ($config['Plugins'][$PluginName]['Left']['Status']) &&
+ !file_exists ($_SERVER["DOCUMENT_ROOT"]."/Admin/Modules/VPNconfig/plugins/". $PluginData['Folder'] ."/".
+ $config['Plugins'][$PluginName]['Left']['Status']))
+ $config['Plugins'][$PluginName]['Left']['Status'] = NULL;
+ }
+ }
+ }
+}
+
+// ----------------------------------------------
+function seconds_string ($seconds, $periods = null)
+{
+ $Wanted = '';
+
+ // Define time periods
+ if (!is_array ($periods))
+ {
+ $periods = array (
+ 'years' => 31556926,
+ 'months' => 2629743,
+ 'weeks' => 604800,
+ 'days' => 86400,
+ 'hours' => 3600,
+ 'minutes' => 60,
+ 'seconds' => 1
+ );
+ }
+
+ // Wanted
+ if (empty ($seconds))
+ { $Wanted = ''; }
+ else
+ {
+ // Loop
+ $seconds = (int) $seconds;
+ foreach ($periods as $period => $value)
+ {
+ $count = floor ($seconds / $value);
+
+ if ($count == 0)
+ continue;
+ elseif ($count == 1)
+ $Wanted .= ($count . ' ' . substr ($period, 0, strlen ($period) - 1) . ' ');
+ else
+ $Wanted .= ($count . ' ' . $period . ' ');
+
+ $seconds = $seconds % $value;
+ }
+ }
+
+ return rtrim ($Wanted);
+}
+
+// ----------------------------------------------
+function chomp (&$string)
+{
+ if (is_array ($string))
+ {
+ foreach ($string as $i => $val)
+ { $endchar = chomp ($string[$i]); }
+ }
+ else
+ {
+ $endchar = substr ("$string", strlen("$string") - 1, 1);
+ if ($endchar == "\n")
+ { $string = substr ("$string", 0, -1); }
+ }
+ return $endchar;
+}
+
+// ----------------------------------------------
+function str_strip_spaces ($aline)
+{
+ while (strpos ($aline, "\t") != FALSE) $aline = str_replace ("\t", ' ', $aline);
+ while (strpos ($aline, ' ') != FALSE) $aline = str_replace (' ', ' ', $aline);
+
+ return $aline;
+}
+
+// ----------------------------------------------
+// Returns $afile only if it is the full name, or prefixed by $apath
+function str_file_fullname ($apath, $afile)
+{
+ if (substr ($afile, 0, 1) != '/')
+ $afile = ($apath . $afile);
+
+ return $afile;
+}
+
+// ----------------------------------------------
+// Returns $afile only if it is the full name, or prefixed by $apath
+function str_openssldata_to_string ($adata)
+{
+ $Return = '';
+ $amonth = array ('Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec');
+
+ if (substr ($adata, -1, 1) == 'Z')
+ {
+ $Return = sprintf ("%s %d %s%02d, %02d:%02d:%02d",
+ $amonth [substr ($adata, 2, 2) - 1],
+ substr ($adata, 4, 2),
+ (substr ($adata, 0, 2) > 50 ? '19' : '20'),
+ substr ($adata, 0, 2),
+ substr ($adata, 6, 2),
+ substr ($adata, 8, 2),
+ substr ($adata, 10, 2));
+ }
+
+ return $Return;
+}
+
+// ----------------------------------------------
+function str_get_sometag ($aline, $sometag)
+{
+ if (eregi ($sometag, $aline, $anarray))
+ return $anarray[1];
+ else
+ return '';
+}
+
+// ----------------------------------------------
+// Writes content into file
+// Optionally sames old file into backup file.
+// The Backup File has to reside on the same partition!
+function writefile ($afile, $adata, $abackup = NULL)
+{
+ // Move the old file into Backup one
+ if ($abackup != NULL)
+ {
+ if (file_exists ($afile))
+ {
+ if (file_exists ($abackup))
+ if (!unlink ($abackup))
+ exit;
+ if (!rename ($afile, $abackup))
+ exit;
+ }
+ }
+
+ $fp = fopen ($afile, "w", 0);
+ if (!$fp)
+ exit;
+
+ fputs ($fp, $adata);
+ fclose ($fp);
+}
+
+
+// ----------------------------------------------
+// Guess the full file name
+function if_file_exists (&$sFileName, $bFix = FALSE)
+{
+ global $config;
+
+ if (strpos ($sFileName, '/') == FALSE)
+ {
+ $sLongFileName = $config['openvpn']['folder'] . $sFileName;
+ if (file_exists ($sLongFileName) && $bFix)
+ $sFileName = $sLongFileName;
+ }
+
+ return file_exists ($sFileName);
+}
+
+// ----------------------------------------------
+function zlib_check_functions ()
+{
+ $Result = '';
+ $ZLibs = array
+ (
+ 'gzcompress'
+ );
+
+ foreach ($ZLibs as $Function)
+ {
+ $Result .= $Function . ': ' . (function_exists ($Function) ?
+ 'OK ' :
+ 'DOES NOT EXIST ') . ' ';
+ }
+
+ return $Result;
+}
+
+// ----------------------------------------------
+function html_dump ($aname, $athing)
+{
+ echo ''. $aname .' : ';
+ print_r ($athing);
+ echo " \n";
+}
+
+// ----------------------------------------------
+function html_error ($amessage, $ifexit = true)
+{
+ global $config;
+ echo $amessage;
+ if ($ifexit)
+ exit;
+}
+
+// ----------------------------------------------
+function html_postredir ($url)
+{
+ header ('HTTP/1.1 303 REDIRECT');
+ header ('Location: '. $url);
+#header ('Status: 303'); // if 1st header generates 500, then commend it out and use this one as 2nd
+}
+
+// ----------------------------------------------
+// ----------------------------------------------
+function html_download ($sFile, $sName)
+{
+ header ('Content-type: application/octet-stream');
+ header ('Content-Disposition: attachment; filename="'. $sName . '"');
+ readfile ($sFile);
+}
+
+// ----------------------------------------------
+function html_download_data ($sData, $sName)
+{
+ header ('Content-type: application/octet-stream');
+ header ('Content-Disposition: attachment; filename="'. $sName . '"');
+ echo $sData;
+}
+?>
diff --git a/Admin/Modules/Squid/include/openssl-functions.inc b/Admin/Modules/Squid/include/openssl-functions.inc
new file mode 100755
index 0000000..a10701a
--- /dev/null
+++ b/Admin/Modules/Squid/include/openssl-functions.inc
@@ -0,0 +1,377 @@
+: ' . (function_exists ($Function) ?
+ 'OK ' :
+ 'DOES NOT EXIST ') . ' ';
+ }
+
+ return $Result;
+}
+
+// ----------------------------------------------
+function openssl_load_database ($afile = '')
+{
+ global $config;
+ global $openssl;
+
+ $afile = ($afile == '' ? $config['openssl']['database'] : $afile);
+ $lines = file ($afile);
+
+ if (!is_array ($lines))
+ exit;
+
+ foreach ($lines as $line_num => $line)
+ {
+ chomp ($line);
+ $linetokens = explode ("\t", $line);
+
+ // Ensure that all the fields are set
+ if (count ($linetokens) == 6)
+ {
+ // Decode the openssl's database. See apps/apps.h
+ $openssl['Database'][] = array ('Status' => $linetokens[0],
+ 'ExpDate' => $linetokens[1],
+ 'RevDate' => $linetokens[2],
+ 'Serial' => $linetokens[3],
+ 'File' => $linetokens[4],
+ 'Name' => $linetokens[5],
+ 'Country' => openssl_get_country ($linetokens[5]),
+ 'State' => openssl_get_state ($linetokens[5]),
+ 'City' => openssl_get_city ($linetokens[5]),
+ 'Company' => openssl_get_company ($linetokens[5]),
+ 'Department' => openssl_get_department ($linetokens[5]),
+ 'CN' => openssl_get_CN ($linetokens[5]),
+ 'Email' => openssl_get_email ($linetokens[5])
+ );
+ }
+ }
+}
+
+// ----------------------------------------------
+function openssl_write_database ($afile = '')
+{
+ global $config;
+ global $openssl;
+
+ $afile = ($afile == '' ? $config['openssl']['database'] : $afile);
+
+ $atext = '';
+ for ($i = 0; $i < count ($openssl['Database']); $i++)
+ {
+ $atext .= ($atext == '' ? '' : "\n");
+ $atext .= $openssl['Database'][$i]['Status'] ."\t".
+ $openssl['Database'][$i]['ExpDate'] ."\t".
+ $openssl['Database'][$i]['RevDate'] ."\t".
+ $openssl['Database'][$i]['Serial'] ."\t".
+ $openssl['Database'][$i]['File'] ."\t".
+ $openssl['Database'][$i]['Name'];
+ }
+
+ writefile ($afile, $atext, $afile .'.old');
+}
+
+// ----------------------------------------------
+function openssl_write_database_attr ($atext = '', $afile = '')
+{
+ global $config;
+ global $openssl;
+
+ $afile = ($afile == '' ? $config['openssl']['database'] : $afile) .'.attr';
+ $atext = ($atext == '' ? "unique_subject = yes\n" : $atext);
+
+ if (file_exists ($afile))
+ {
+ ob_start ();
+ readfile ($afile);
+ $atext = ob_get_contents ();
+ ob_end_clean ();
+ }
+
+ writefile ($afile, $atext, $afile .'.old');
+}
+
+// ----------------------------------------------
+// Returns the PEM file with spaces reduced and replaced to
+function openssl_load_cert ($anid)
+{
+ global $config;
+
+ do
+ {
+ $lines = file ($config['openssl']['pubfolder'] . $anid . '.pem');
+
+ if (!is_array ($lines))
+ {
+ $Return = '';
+ break;
+ }
+
+ foreach ($lines as $line_num => $line)
+ {
+ chomp ($line);
+ $Return[] = str_replace (' ', ' ', htmlspecialchars (str_replace (' ', ' ', $line)));
+ }
+ } while (FALSE);
+
+ return $Return;
+}
+
+// ----------------------------------------------
+function openssl_load_serial ($afile = '')
+{
+ global $config;
+
+ $afile = ($afile == '' ? $config['openssl']['serial'] : $afile);
+
+ $lines = file ($afile);
+
+ if (!is_array ($lines))
+ exit;
+
+ $Return = sscanf ($lines[0], "%X");
+
+ return $Return[0];
+}
+
+// ----------------------------------------------
+function openssl_write_serial ($iNumber, $afile = '')
+{
+ global $config;
+
+ $afile = ($afile == '' ? $config['openssl']['serial'] : $afile);
+
+ writefile ($afile, openssl_hex_serial ($iNumber) . "\n", $afile .'.old');
+}
+
+// ----------------------------------------------
+// Supports up to 999,999 serials
+function openssl_hex_serial ($iNumber)
+{
+ if ($iNumber < 100)
+ $sString = sprintf ("%02X", $iNumber);
+ elseif ($iNumber < 10000)
+ $sString = sprintf ("%04X", $iNumber);
+ else
+ $sString = sprintf ("%06X", $iNumber);
+
+ return $sString;
+}
+
+// ----------------------------------------------
+// Builds User Private Key, CSR and Public Certificate
+function openssl_build_key (&$anoutput, $adn, $validdays = NULL)
+{
+ global $config;
+ global $openssl;
+
+ $anoutput = '';
+ $Return = FALSE;
+
+ // Allow to override default value
+ $validdays = ($validdays == NULL ? $config['openssl']['default']['expiration'] : $validdays);
+
+ do
+ {
+ if (!isset ($adn) ||
+ !isset ($adn['countryName']) ||
+ !isset ($adn['stateOrProvinceName']) ||
+ !isset ($adn['localityName']) ||
+ !isset ($adn['organizationName']) ||
+ !isset ($adn['organizationalUnitName']) ||
+ !isset ($adn['commonName']) ||
+ !isset ($adn['emailAddress'])
+ )
+ { $anoutput .= "- ERROR on ". __LINE__ ." line: incomplete DN information\n"; break; }
+ $anoutput .= "+ OK got the valid input\n";
+
+ // Get the new User Private Key
+ $UserPrivKey = openssl_pkey_new (array($config['openssl']['config'],0));
+ if ($UserPrivKey == FALSE)
+ { $anoutput .= "- ERROR on ". (__LINE__ - 2) ." line (openssl_pkey_new):\n ". openssl_error_strings () ." (that might usually mean that the openssl.cnf file is unavailable)"; break; }
+ $anoutput .= "+ OK got the User Private Key\n";
+
+ // Generate the User Certificate Request
+ $UserReq = openssl_csr_new ($adn,
+ $UserPrivKey,
+ $config['openssl']['config']);
+ if ($UserReq == FALSE)
+ { $anoutput .= "- ERROR on ". (__LINE__ - 4) ." line (openssl_csr_new):\n ". openssl_error_strings (); break; }
+ $anoutput .= "+ OK generated the User Certificate Request\n";
+
+ // Read the openssl serial
+ $CAserial = openssl_load_serial ($config['openssl']['serial']);
+ $anoutput .= "+ OK read current openssl serial (". openssl_hex_serial ($CAserial) .")\n";
+
+ $UserPubCertFile = $config['openssl']['pubfolder'] . openssl_hex_serial ($CAserial) .'.pem';
+ $UserCertReqFile = $config['openssl']['reqfolder'] . openssl_hex_serial ($CAserial) .'.csr';
+ $UserPrivKeyFile = $config['openssl']['prvfolder'] . openssl_hex_serial ($CAserial) .'.key';
+
+ // Read the openssl database
+ openssl_load_database ($config['openssl']['database']);
+ $anoutput .= "+ OK read the openssl database (". count ($openssl['Database']) ." items)\n";
+
+ // Get CA's Private Key
+ $CAPrivKey = openssl_pkey_get_private ($config['openssl']['CA']['priv']);
+
+ if ($CAPrivKey == FALSE)
+ { $anoutput .= "- ERROR on ". (__LINE__ - 2) ." line (openssl_pkey_get_private)\n ". openssl_error_strings (); break; }
+ $anoutput .= "+ OK read the CA Private Key\n";
+
+ // Get a CA-signed cert that lasts for 1 year
+ $UserPubCert = openssl_csr_sign ($UserReq,
+ $config['openssl']['CA']['pub'],
+ $CAPrivKey,
+ $validdays,
+ $config['openssl']['config'],
+ $CAserial);
+ if ($UserPubCert == FALSE)
+ { $anoutput .= "- ERROR on ". (__LINE__ - 7) ." line (openssl_csr_sign)\n ". openssl_error_strings (); break; }
+ $anoutput .= "+ OK signed the User Certificate Request with CA Private Key\n";
+
+ // Add the new row into openssl database
+ $openssl['Database'][] = array ('Status' => 'V',
+ 'ExpDate' => date ('ymdHis',
+ time() +
+ date ('Z') +
+ ($validdays * 24 * 60 * 60)) .'Z',
+ 'RevDate' => '',
+ 'Serial' => openssl_hex_serial ($CAserial),
+ 'File' => openssl_hex_serial ($CAserial) .'.crt',
+ 'Name' => openssl_make_name ($adn)
+ );
+
+ // Create files
+
+ $OldUMask = umask (0007);
+
+ // Write User Private Key
+ if (!openssl_pkey_export_to_file ($UserPrivKey, $UserPrivKeyFile, NULL, $config['openssl']['config']))
+ { $anoutput .= "- ERROR on ". (__LINE__ - 1) ." line (openssl_pkey_export_to_file)\n ". openssl_error_strings () ." (That might mean that the key folder is not write enabled for www user)"; break; }
+ $anoutput .= "+ OK wrote User Private Key into file $UserPrivKeyFile\n";
+
+ // Write User Public Certificate
+ if (!openssl_x509_export_to_file ($UserPubCert, $UserPubCertFile, FALSE))
+ { $anoutput .= "- ERROR on ". (__LINE__ - 1) ." line (openssl_x509_export_to_file)\n ". openssl_error_strings (); break; }
+ $anoutput .= "+ OK wrote User Public Certificate into file $UserPubCertFile\n";
+
+ // Write User Certificate Request
+ if (!openssl_csr_export_to_file ($UserReq, $UserCertReqFile))
+ { $anoutput .= "- ERROR on ". (__LINE__ - 1) ." line (openssl_csr_export_to_file)\n ". openssl_error_strings (); break; }
+ $anoutput .= "+ OK wrote User Certificate Request into file $UserCertReqFile\n";
+
+ // Write new openssl database
+ openssl_write_database ($config['openssl']['database']);
+ openssl_write_database_attr ('', $config['openssl']['database']);
+ $anoutput .= "+ OK wrote new openssl database\n";
+
+ // Write new openssl serial
+ openssl_write_serial ($CAserial + 1, $config['openssl']['serial']);
+ $anoutput .= "+ OK wrote new openssl serial\n";
+
+ umask ($OldUMask);
+
+ $Return = openssl_hex_serial ($CAserial);
+ } while (FALSE);
+
+ return $Return;
+}
+
+// ----------------------------------------------
+function openssl_error_strings ()
+{
+ $sString = '';
+ while ($msg = openssl_error_string ())
+ $sString .= $msg ."\n";
+
+ return $sString;
+}
+
+// ----------------------------------------------
+function openssl_make_name ($adn)
+{
+ $sString = '';
+
+ if (strlen ($adn['countryName']) > 0) $sString .= '/C=' . $adn['countryName'];
+ if (strlen ($adn['stateOrProvinceName']) > 0) $sString .= '/ST=' . $adn['stateOrProvinceName'];
+ if (strlen ($adn['localityName']) > 0) $sString .= '/L=' . $adn['localityName'];
+ if (strlen ($adn['organizationName']) > 0) $sString .= '/O=' . $adn['organizationName'];
+ if (strlen ($adn['organizationalUnitName']) > 0) $sString .= '/OU=' . $adn['organizationalUnitName'];
+ if (strlen ($adn['commonName']) > 0) $sString .= '/CN=' . $adn['commonName'];
+ if (strlen ($adn['emailAddress']) > 0) $sString .= '/emailAddress='. $adn['emailAddress'];
+
+ return $sString;
+}
+
+// ----------------------------------------------
+function openssl_get_country ($aline)
+{ return str_get_sometag ($aline . '/', '\/C=([^/]*)\/'); }
+
+// ----------------------------------------------
+function openssl_get_state ($aline)
+{ return str_get_sometag ($aline . '/', '\/ST=([^/]*)\/'); }
+
+// ----------------------------------------------
+function openssl_get_city ($aline)
+{ return str_get_sometag ($aline . '/', '\/L=([^/]*)\/'); }
+
+// ----------------------------------------------
+function openssl_get_company ($aline)
+{ return str_get_sometag ($aline . '/', '\/O=([^/]*)\/'); }
+
+// ----------------------------------------------
+function openssl_get_department ($aline)
+{ return str_get_sometag ($aline . '/', '\/OU=([^/]*)\/'); }
+
+// ----------------------------------------------
+function openssl_get_CN ($aline)
+{ return str_get_sometag ($aline . '/', '\/CN=([^/]*)\/'); }
+
+// ----------------------------------------------
+function openssl_get_email ($aline)
+{ return str_get_sometag ($aline . '/', '\/emailAddress=([^/]*)\/'); }
+
+// ----------------------------------------------
+// Guess the full file name
+function openssl_get_filename ($iSerial, $sExt)
+{
+ global $config;
+
+ $sReturn = $config['openssl']['folder'] . openssl_hex_serial ($iSerial) . $sExt;
+ if (!file_exists ($sReturn))
+ {
+ $sReturn = $config['openssl']['pubfolder'] . openssl_hex_serial ($iSerial) . $sExt;
+ if (!file_exists ($sReturn))
+ {
+ $sReturn = $config['openssl']['reqfolder'] . openssl_hex_serial ($iSerial) . $sExt;
+ if (!file_exists ($sReturn))
+ {
+ $sReturn = $config['openssl']['prvfolder'] . openssl_hex_serial ($iSerial) . $sExt;
+ if (!file_exists ($sReturn))
+ {
+ $sReturn = '';
+ }
+ }
+ }
+ }
+
+ return $sReturn;
+}
+
+
+?>
diff --git a/Admin/Modules/Squid/include/restartsquid.php b/Admin/Modules/Squid/include/restartsquid.php
new file mode 100755
index 0000000..2f8e2b4
--- /dev/null
+++ b/Admin/Modules/Squid/include/restartsquid.php
@@ -0,0 +1,11 @@
+
diff --git a/Admin/Modules/Squid/include/startsquid.php b/Admin/Modules/Squid/include/startsquid.php
new file mode 100755
index 0000000..29c59d1
--- /dev/null
+++ b/Admin/Modules/Squid/include/startsquid.php
@@ -0,0 +1,11 @@
+
diff --git a/Admin/Modules/Squid/include/stopsquid.php b/Admin/Modules/Squid/include/stopsquid.php
new file mode 100755
index 0000000..6398d38
--- /dev/null
+++ b/Admin/Modules/Squid/include/stopsquid.php
@@ -0,0 +1,11 @@
+
diff --git a/Admin/Modules/Squid/index.php b/Admin/Modules/Squid/index.php
new file mode 100755
index 0000000..0e26f59
--- /dev/null
+++ b/Admin/Modules/Squid/index.php
@@ -0,0 +1,45 @@
+ 0)
+{
+ $moduleurl = substr($moduleurl,0,$urlcut);
+}
+else
+{
+ if(strpos($moduleurl, "?") == 0)
+ {
+ $moduleurl = $_SERVER["REQUEST_URI"]."?site=1";
+ }
+}
+
+$mode = $_REQUEST["uebergabe"];
+$status = $_REQUEST["uebergabe2"];
+
+echo" Home
+ | Config
+ | Logviewer
";
+switch($status)
+{
+ default:
+ break;
+}
+
+switch($mode)
+{
+ case 1:
+ include ($_SERVER["DOCUMENT_ROOT"]."/Admin/Modules/Squid/index_config.php");
+ break;
+ case 2:
+ include ($_SERVER["DOCUMENT_ROOT"]."/Admin/Modules/Squid/index_log.php");
+ break;
+ default:
+ echo"Squid Management
+ Choose an action:
+ # Config
+ # Logviewer
";
+ break;
+}
+?>
diff --git a/Admin/Modules/Squid/index_config.php b/Admin/Modules/Squid/index_config.php
new file mode 100755
index 0000000..37f692d
--- /dev/null
+++ b/Admin/Modules/Squid/index_config.php
@@ -0,0 +1,297 @@
+";
+ exit;
+}
+ $sort = mysql_real_escape_string($_POST["dirsort"]); //$_GET["sort"];
+ $by = mysql_real_escape_string($_POST["sortby"]); //$_GET["by"];
+ $userid = mysql_real_escape_string($_POST["userid"]); //$_GET["userid"];
+ $search = mysql_real_escape_string($_POST["search"]); //$_GET["search"];
+
+$moduleurl = $_SERVER["REQUEST_URI"];
+$urlcut = strpos($moduleurl, "&");
+$moduleurl = substr($moduleurl,0,$urlcut);
+?>
+
+Squid Config
+Squid is currently: running ";
+}
+else
+{
+ echo "Squid is currently: stopped ";
+}
+
+ if ($_REQUEST["uebergabe2"]=="3")
+ {
+ echo "Squid restarted successfully! ";
+ echo " ";
+ }
+ if ($_REQUEST["uebergabe2"]=="4")
+ {
+ echo "Squid started successfully! ";
+ echo " ";
+ }
+ if ($_REQUEST["uebergabe2"]=="5")
+ {
+ echo "Squid stopped successfully! ";
+ echo " ";
+ }
+ ?>
+
+
+Change Proxy Account:
+Changed Squid Account successfully!";
+ }
+ ?>
+
+
+
+ Squid ID (HEX):
+
+
+
+
+
+
+Current Squid User:
+ 0, 1 => 1, 2 => 2, 3 => 3, 4 => 4, 5 => 5,
+ 6 => 6, 7 => 7, 8 => 8, 9 => 9, 10 => 'A',
+ 11 => 'B', 12 => 'C', 13 => 'D', 14 => 'E',
+ 15 => 'F' );
+
+ do
+ {
+ $h = $hex[($dec%16)] . $h;
+ $dec /= 16;
+ }
+ while( $dec >= 1 );
+
+ return $sign . $h;
+}
+
+ $zeile = exec(escapeshellcmd("cat ".db_getconfval("sqddir")."/vpnid"));
+ $zeile = dec_to_hex($zeile);
+ //echo $zeile;
+ if(strlen ($zeile) <2)
+ {
+ $zeile = "0".$zeile;
+ }
+ if(strlen ($zeile) >2)
+ {
+ $zeile=substr($zeile, 0, -1);
+ }
+ @$y = mysql_connect($MYSQL_HOST,$MYSQL_USER,$MYSQL_PASS);
+ @$x = mysql_select_db($MYSQL_DATABASE);
+ if (empty($x))
+ {
+ echo "ERROR 0x01, Failed to connect to database! ";
+ exit;
+ }
+ $sql4 = "SELECT * FROM userdata WHERE VPNId = '".$zeile."';";
+ $result4 = mysql_query($sql4);
+ //echo $sql4;
+ $ar4=mysql_fetch_array($result4,MYSQL_ASSOC);
+ echo "" . $ar4["Vorname"] . " " . $ar4["Nachname"] . " VPNId: " . $ar4["VPNId"]." ";
+ mysql_close();
+?>
+
+
+
+
+Blacklisted Accounts:
+Blacklist cleared successfully!";
+ }
+ ?>
+
+ Squid ID Nickname Vorname Nachname
+";
+ exit;
+ }
+
+ $hascontent = true;
+ if (strlen($zeile) >2)
+ {
+ $zeile=substr($zeile, 0, -1);
+ }
+ $sql3 = "SELECT * FROM userdata WHERE VPNId = '".$zeile."';";
+ $result3 = mysql_query($sql3);
+ $ar3=mysql_fetch_array($result3,MYSQL_ASSOC);
+ $nick = $ar3["Nickname"];
+ if($nick == "")
+ $hascontent=false;
+ $vor = $ar3["Vorname"];
+ if($vor == "")
+ $hascontent=false;
+ $nach = $ar3["Nachname"];
+ if($nach == "")
+ $hascontent=false;
+
+ if($hascontent == true)
+ {
+ $blindex = $blindex+1;
+ echo "".$zeile." ".$nick." ".$vor." ".$nach." ";
+ }
+ mysql_close();
+ }
+
+?>
+
+ Blacklisted accounts:
+
+ out of:
+ ';
+ elseif (count($openssl['Database'])-1 == 1)
+ {
+ echo '1 certificate';
+ }
+ elseif (count($openssl['Database'])-1 > 1)
+ {
+ echo '';
+ echo count($openssl['Database'])-1;
+ echo ' certificates';
+ }?>
+
+
+
+
+
+
+
+
+
+User changed Proxy Accounts:
+
+
+
+ value="ASC">Up
+ value="DESC">Down
+
+
+ value="Id">ID
+ value="VPNId">VPNId
+ value="Time">Time
+ value="IP">IP
+ value="Nickname">Nickname
+
+Search User: >
+
+
+
+
+";
+ exit;
+ }
+ // MYsql befehl basteln
+
+
+ if($by == "Nickname")
+ {
+ $sql = "SELECT * FROM proxyrepair;";
+ }
+ else
+ {
+ $sql = "SELECT * FROM proxyrepair ORDER BY $by $sort;";
+ }
+
+ $result = mysql_query($sql);
+ echo "";
+ echo "User ID VPN Id Nickname Vorname Nachname Client IP Time Dead VPN ID \n";
+// ------------------------------------------------ Mysql lesen
+ if ($result)
+ {
+ while ($ar=mysql_fetch_array($result,MYSQL_ASSOC))
+ {
+
+ $sql = "SELECT * FROM userdata WHERE Id = '".$ar["Id"]."' AND (Nickname LIKE '%".$search."%' OR Vorname LIKE '%".$search."%' OR Id LIKE '%".$search."%' OR VPNId LIKE '%".$search."%');";
+ $result2 = mysql_query($sql);
+ $ar2=mysql_fetch_array($result2,MYSQL_ASSOC);
+
+ if($ar2["Nickname"] != "")
+ echo "",$ar["Id"]," ",$ar["VPNId"]," ",$ar2["Nickname"]," ",$ar2["Vorname"]," ",$ar2["Nachname"],
+ " ", $ar["IP"]," ",$ar["Time"]," ",$ar["RepID"]," \n";
+ }
+ }
+ else
+ {
+ echo " ";
+ }
+ echo "
";
+ mysql_close();
+?>
+
diff --git a/Admin/Modules/Squid/index_log.php b/Admin/Modules/Squid/index_log.php
new file mode 100644
index 0000000..625f00e
--- /dev/null
+++ b/Admin/Modules/Squid/index_log.php
@@ -0,0 +1,30 @@
+";
+ exit;
+}
+ $sort = mysql_real_escape_string($_POST["dirsort"]); //$_GET["sort"];
+ $by = mysql_real_escape_string($_POST["sortby"]); //$_GET["by"];
+ $userid = mysql_real_escape_string($_POST["userid"]); //$_GET["userid"];
+ $search = mysql_real_escape_string($_POST["search"]); //$_GET["search"];
+
+$moduleurl = $_SERVER["REQUEST_URI"];
+$urlcut = strpos($moduleurl, "&");
+$moduleurl = substr($moduleurl,0,$urlcut);
+?>
+
+Squid Logs
+
+
diff --git a/Admin/Modules/Squid/squid_dynamic/README b/Admin/Modules/Squid/squid_dynamic/README
new file mode 100644
index 0000000..6f55fcd
--- /dev/null
+++ b/Admin/Modules/Squid/squid_dynamic/README
@@ -0,0 +1,3 @@
+export CPATH=..:$HOME/include:/usr/local/include:/usr/include:/usr/include/mysql
+needed: libmysqlclient-dev
+gcc -l mysqlclient -o traffic Traffic.c
diff --git a/Admin/Modules/Squid/squid_dynamic/db.conf b/Admin/Modules/Squid/squid_dynamic/db.conf
new file mode 100755
index 0000000..f902996
--- /dev/null
+++ b/Admin/Modules/Squid/squid_dynamic/db.conf
@@ -0,0 +1,4 @@
+user: openvpn
+passwd: openvpnlog
+database: openvpn
+host: localhost
diff --git a/Admin/Modules/Squid/squid_dynamic/hexer b/Admin/Modules/Squid/squid_dynamic/hexer
new file mode 100755
index 0000000..6a24092
--- /dev/null
+++ b/Admin/Modules/Squid/squid_dynamic/hexer
@@ -0,0 +1,7 @@
+#!/bin/bash
+let x=0x3f
+echo $x
+
+
+let x=0xfffe
+echo $x
diff --git a/Admin/Modules/Squid/squid_dynamic/squid_dyn.c b/Admin/Modules/Squid/squid_dynamic/squid_dyn.c
new file mode 100644
index 0000000..6fa1665
--- /dev/null
+++ b/Admin/Modules/Squid/squid_dynamic/squid_dyn.c
@@ -0,0 +1,134 @@
+/* OpenVPN - Squid Load Balancer*
+ *------------------------------*
+ * Version 1.0 *
+ * Written by Christoph Haas *
+ * License: LGPL *
+ * 12.10.2010 *
+ */
+
+#include
+#include
+
+#include
+#include
+#include
+#include
+
+#define __MAX_LINE__ 100
+#define __MAX_FIELD__ 255
+#define false 0
+#define true 1
+
+
+MYSQL mysql;
+
+int connect_db(char *config)
+{
+ FILE *db_data = NULL;
+ regex_t reg;
+ char user[__MAX_LINE__] = "";
+ char passwd[__MAX_LINE__] = "";
+ char database[__MAX_LINE__] = "";
+ char host[__MAX_LINE__] = "";
+ int port = 0;
+ char tmp[__MAX_LINE__];
+ char buf[__MAX_LINE__];
+ int a, b;
+ int length;
+
+ if((db_data = fopen(config, "r")) == NULL)
+ {
+ fprintf(stderr, "Can't open %s for reading.\n", config);
+ return false;
+ }
+ regcomp(®, "^([a-zA-Z0-9:]+)[ ][a-zA-Z0-9]+$", REG_EXTENDED | REG_NEWLINE);
+ while(fgets(buf, __MAX_LINE__, db_data))
+ {
+ length = strlen(buf);
+ if(length < 3)continue;
+ if(length >= __MAX_LINE__)
+ {
+ fclose(db_data);
+ regfree(®);
+ fprintf(stderr, "To long line in config file.\n");
+ return false;
+ }
+ if(buf[0] == '#')continue;
+ if(regexec(®, buf, 0, 0, 0))
+ {
+ fclose(db_data);
+ regfree(®);
+ fprintf(stderr, "Syntax error in config file.\n");
+ return false;
+ }
+ for(a = 0, b = 0; a < strlen(buf); a++)
+ {
+ if(buf[a] == ' ')b++;
+ }
+ if(b != 1)
+ {
+ fclose(db_data);
+ regfree(®);
+ fprintf(stderr, "Syntax error in config file.\n");
+ return false;
+ }
+ if((strncmp(buf, "user: ", 6)) == 0)sscanf(buf, "%s %s", tmp, user);
+ if((strncmp(buf, "passwd: ", 8)) == 0)sscanf(buf, "%s %s", tmp, passwd);
+ if((strncmp(buf, "database: ", 10)) == 0)sscanf(buf, "%s %s", tmp, database);
+ if((strncmp(buf, "host: ", 6)) == 0)sscanf(buf, "%s %s", tmp, host);
+ if((strncmp(buf, "port: ", 6)) == 0)sscanf(buf, "%s %d", tmp, &port);
+ }
+ fclose(db_data);
+ regfree(®);
+ if((strlen(user) < 1) || (strlen(passwd) < 1) ||
+ (strlen(database) < 1) || (strlen(host) < 1))
+ {
+ fprintf(stderr, "One value for MySQL connection isn't set. \
+ Please set user, passwd, database and host.\n");
+ return false;
+ }
+
+
+ mysql_init(&mysql);
+ if((mysql_real_connect(&mysql, host, user, passwd, database, port, NULL, 0)) == NULL)
+ {
+ fprintf(stderr, "%s\n", mysql_error(&mysql));
+ return false;
+ }
+ return true;
+}
+
+int main(int argc, char **argv)
+{
+ MYSQL_RES *result;
+ MYSQL_ROW row;
+ char Query[200]= "SELECT * FROM userdata WHERE VPNId = '\0";
+
+ if(argc == 2)
+ {
+ /*iID = atoi(argv[1]);
+ printf("Int:%d\n", iID);
+ sprintf(ID,"%-#10x",iID);
+ printf("String:%s\n", ID);*/
+
+ connect_db("/home/christoph/squid_dynamic/db.conf"); // Datenbank Verbindung aufbauen
+
+ strcat(Query, argv[1]); // Query builden
+ strcat(Query,"'"); //
+
+ mysql_query(&mysql, Query); // Query abschicken
+ result = mysql_store_result(&mysql); // Result speichern
+
+ while ((row = mysql_fetch_row(result))) // Alle Datensätze auslesen (in dem Fall eh nur einer)
+ {
+ printf("%s:%s\n", row[9], row[10]); // Feld 9 und 10 (login/pass) aus dem datensatz ausgeben
+ }
+
+ mysql_free_result(result); // Result wieder löschen
+ mysql_close(&mysql); // Datenbank Verbindung schliesen
+ }
+ else
+ {
+ printf("USAGE: sqidy xx | xx = VPNId\n"); // bei flascheingabe der Parameter
+ }
+}
diff --git a/Admin/Modules/Squid/squid_dynamic/squidy b/Admin/Modules/Squid/squid_dynamic/squidy
new file mode 100755
index 0000000..677c5da
Binary files /dev/null and b/Admin/Modules/Squid/squid_dynamic/squidy differ
diff --git a/Admin/Modules/Squid/squid_dynamic/squidy.bak b/Admin/Modules/Squid/squid_dynamic/squidy.bak
new file mode 100755
index 0000000..726712c
Binary files /dev/null and b/Admin/Modules/Squid/squid_dynamic/squidy.bak differ
diff --git a/Admin/Modules/Squid/squid_dynamic/vpnid b/Admin/Modules/Squid/squid_dynamic/vpnid
new file mode 100644
index 0000000..4daddb7
--- /dev/null
+++ b/Admin/Modules/Squid/squid_dynamic/vpnid
@@ -0,0 +1 @@
+00
diff --git a/Admin/Modules/Squid/squid_dynamic/write_conf b/Admin/Modules/Squid/squid_dynamic/write_conf
new file mode 100755
index 0000000..9e3e244
--- /dev/null
+++ b/Admin/Modules/Squid/squid_dynamic/write_conf
@@ -0,0 +1,115 @@
+#!/bin/bash
+
+# Zaehlvariable einlesen
+id=$ID_VPN
+
+# Abfrage ob Stringlaenge von id NULL ist
+if [ ${#ID_VPN} == 0 ];
+then id=0
+fi
+
+# id inkrementieren
+let id=$id+1
+
+# 255 Overflow verhindern
+if [ $id -gt 254 ]
+then id=0
+fi
+
+# Variable id fuer naechsten Durchlauf speichern
+export ID_VPN=$id
+
+# id HEX wandeln
+hex=$(echo "obase=16; $id" |bc)
+
+# Abfrage ob Strinlaenge von hex kleiner als 2
+if [ ${#hex} -lt 2 ];
+then hex=0$hex
+fi
+
+# Login-Daten aus Datenbank holen
+credentials=$(./squidy $hex)
+# Abfrage ob Datensatz leer :
+zero="0"
+
+if [ "$credentials" == ":" ];
+then
+ . write_conf &
+ zero="1"
+fi
+if [ ${#credentials} == 0 ];
+then
+ . write_conf &
+ zero="1"
+fi
+
+######################################################################################
+
+# Config- Datei schreiben.
+if [ $zero == "0" ]
+then
+echo "
+# Squid config by h44z
+
+# TAG: http_port
+# Usage: port
+# hostname:port
+# 1.2.3.4:port
+http_port 10.8.0.1:3128 transparent
+http_port 10.8.0.1:8080
+#https_port 10.8.0.1:8181 key=/etc/apache2/ssl/apache.pem
+
+
+visible_hostname vpnrack
+
+# TAG: icp_port
+icp_port 0
+
+# TAG: no_cache
+acl QUERY urlpath_regex cgi-bin \\?
+no_cache deny QUERY
+
+# TAG: cache_mem (bytes)
+cache_mem 32 MB
+
+# TAG: cache_dir
+cache_dir ufs /var/cache/squid 100 16 256
+
+# TAG: cache_access_log
+cache_access_log /var/log/squid/access.log
+
+# TAG: cache_log
+cache_log /var/log/squid/cache.log
+
+# TAG: cache_store_log
+cache_store_log /var/log/squid/store.log
+
+# TAG: emulate_httpd_log on|off
+emulate_httpd_log on
+
+# TAG: pid_filename
+pid_filename /var/run/squid.pid
+
+# TAG: cache_mgr
+cache_mgr christoph.haas2@students.htlinn.ac.at
+
+
+http_access allow all
+acl https port 443
+http_access allow https
+
+
+# TAG: http_reply_access
+# Allow replies to client requests. This is complementary to http_access.
+#http_reply_access allow all
+
+cache_peer 192.168.195.101 parent 8080 7 no-query default no-digest login=$credentials
+
+never_direct allow all
+" > /etc/squid3/squid.conf
+
+######################################################################################
+#restart squid
+killall -9 squid
+squid -D -YC -f /etc/squid3/squid.conf
+fi
diff --git a/Admin/Modules/Squid/squid_dynamic/write_conf_file b/Admin/Modules/Squid/squid_dynamic/write_conf_file
new file mode 100755
index 0000000..1e05d8e
--- /dev/null
+++ b/Admin/Modules/Squid/squid_dynamic/write_conf_file
@@ -0,0 +1,132 @@
+#!/bin/bash
+# Script um die cache_peer funktion von Squid upzudaten.
+# V1.0
+# 13.10.2010
+# Stoeckholzer, Haas
+
+if [ ${#1} == 0 ];
+then
+ echo "USAGE: write_conf_file updatetime"
+ exit 0
+fi
+
+while [ "1" == "1" ] ;
+do
+ sleep $1
+ zero="1"
+
+ while [ $zero == "1" ] ;
+ do
+
+ # Zaehlvariable einlesen
+ id=$(cat /var/vpn/vpnid)
+
+ # id inkrementieren
+ let id=$id+1
+
+ # 255 Overflow verhindern
+ if [ $id -gt 254 ]
+ then
+ id=0
+ fi
+
+ # Variable id fuer naechsten Durchlauf speichern
+ echo $id > /var/vpn/vpnid
+
+ # id HEX wandeln
+ hex=$(echo "obase=16; $id" |bc)
+
+
+ # Abfrage ob Strinlaenge von hex kleiner als 2
+ if [ ${#hex} -lt 2 ];
+ then
+ hex=0$hex
+ fi
+
+ black=$(cat /var/vpn/blacklist | grep $hex)
+
+ if [ ${#black} -lt 2 ];
+ then
+ # Login-Daten aus Datenbank holen
+ credentials=$(/home/christoph/squid_dynamic/squidy $hex)
+ # Abfrage ob Datensatz leer :
+
+ if [ ${#credentials} -gt 10 ];
+ then
+ zero="0"
+ fi
+ fi
+ done
+ echo "USING credentials: $credentials"
+
+ sudo killall -9 unlinkd
+ sudo killall -9 squid
+
+ sudo rm /etc/squid3/squid.conf
+######################################################################################
+
+# Config- Datei schreiben.
+sudo echo -e -n "
+# Squid config by h44z
+
+# TAG: http_port
+# Usage: port
+# hostname:port
+# 1.2.3.4:port
+http_port 10.8.0.1:3128 transparent
+http_port 10.8.0.1:8080
+#https_port 10.8.0.1:8181 key=/etc/apache2/ssl/apache.pem
+
+
+visible_hostname vpnrack
+
+# TAG: icp_port
+icp_port 0
+
+# TAG: no_cache
+acl QUERY urlpath_regex cgi-bin \\?
+no_cache deny QUERY
+
+# TAG: cache_mem (bytes)
+cache_mem 32 MB
+
+# TAG: cache_dir
+cache_dir ufs /var/cache/squid 100 16 256
+
+# TAG: cache_access_log
+cache_access_log /var/log/squid/access.log
+
+# TAG: cache_log
+cache_log /var/log/squid/cache.log
+
+# TAG: cache_store_log
+cache_store_log /var/log/squid/store.log
+
+# TAG: emulate_httpd_log on|off
+emulate_httpd_log on
+
+# TAG: pid_filename
+pid_filename /var/run/squid.pid
+
+# TAG: cache_mgr
+cache_mgr christoph.haas2@students.htlinn.ac.at
+#blubber
+
+http_access allow all
+acl https port 443
+http_access allow https
+
+
+# TAG: http_reply_access
+# Allow replies to client requests. This is complementary to http_access.
+#http_reply_access allow all
+
+cache_peer 192.168.195.101 parent 8080 7 no-query default no-digest login=$credentials
+
+never_direct allow all
+" > /etc/squid3/squid.conf
+echo "Written credentials: $credentials"
+######################################################################################
+ #restart squid
+ sudo squid -D -YC -f /etc/squid3/squid.conf
+done
diff --git a/Admin/Modules/Squid/squid_dynamic/write_conf_file.bak b/Admin/Modules/Squid/squid_dynamic/write_conf_file.bak
new file mode 100755
index 0000000..d3648c6
--- /dev/null
+++ b/Admin/Modules/Squid/squid_dynamic/write_conf_file.bak
@@ -0,0 +1,130 @@
+#!/bin/bash
+# Script um die cache_peer funktion von Squid upzudaten.
+# V1.0
+# 13.10.2010
+# Stoeckholzer, Haas
+
+if [ ${#1} == 0 ];
+then
+echo "USAGE: write_conf_file updatetime"
+exit 0
+fi
+
+while [ "1" == "1" ] ; do
+
+sleep $1
+zero="1"
+
+while [ $zero == "1" ] ; do
+
+# Zaehlvariable einlesen
+id=$(cat /var/vpn/vpnid)
+
+# id inkrementieren
+let id=$id+1
+
+# 255 Overflow verhindern
+if [ $id -gt 254 ]
+then id=0
+fi
+
+# Variable id fuer naechsten Durchlauf speichern
+echo $id > /var/vpn/vpnid
+
+# id HEX wandeln
+hex=$(echo "obase=16; $id" |bc)
+
+# Abfrage ob Strinlaenge von hex kleiner als 2
+if [ ${#hex} -lt 2 ];
+then hex=0$hex
+fi
+
+# Login-Daten aus Datenbank holen
+credentials=$(/home/christoph/squid_dynamic/squidy $hex)
+# Abfrage ob Datensatz leer :
+
+if [ ${#credentials} -gt 10 ];
+then
+ zero="0"
+fi
+echo "Schleife zero: $zero"
+echo "Schleife id: $id"
+echo "Schleife hex: $hex"
+done
+echo "USING zero: $zero"
+echo "USING id: $id"
+echo "USING hex: $hex"
+echo "USING credentials: $credentials"
+
+sudo killall -9 unlinkd
+sudo killall -9 squid
+
+sudo rm /etc/squid3/squid.conf
+######################################################################################
+
+# Config- Datei schreiben.
+sudo echo -e -n "
+# Squid config by h44z
+
+# TAG: http_port
+# Usage: port
+# hostname:port
+# 1.2.3.4:port
+http_port 10.8.0.1:3128 transparent
+http_port 10.8.0.1:8080
+#https_port 10.8.0.1:8181 key=/etc/apache2/ssl/apache.pem
+
+
+visible_hostname vpnrack
+
+# TAG: icp_port
+icp_port 0
+
+# TAG: no_cache
+acl QUERY urlpath_regex cgi-bin \\?
+no_cache deny QUERY
+
+# TAG: cache_mem (bytes)
+cache_mem 32 MB
+
+# TAG: cache_dir
+cache_dir ufs /var/cache/squid 100 16 256
+
+# TAG: cache_access_log
+cache_access_log /var/log/squid/access.log
+
+# TAG: cache_log
+cache_log /var/log/squid/cache.log
+
+# TAG: cache_store_log
+cache_store_log /var/log/squid/store.log
+
+# TAG: emulate_httpd_log on|off
+emulate_httpd_log on
+
+# TAG: pid_filename
+pid_filename /var/run/squid.pid
+
+# TAG: cache_mgr
+cache_mgr christoph.haas2@students.htlinn.ac.at
+#blubber
+
+http_access allow all
+acl https port 443
+http_access allow https
+
+
+# TAG: http_reply_access
+# Allow replies to client requests. This is complementary to http_access.
+#http_reply_access allow all
+
+cache_peer 192.168.195.101 parent 8080 7 no-query default no-digest login=$credentials
+
+never_direct allow all
+" > /etc/squid3/squid.conf
+echo "Written credentials: $credentials"
+######################################################################################
+#restart squid
+sudo squid -D -YC -f /etc/squid3/squid.conf
+
+done
diff --git a/Admin/Modules/Squid/squid_dynamic/write_conf_manuell b/Admin/Modules/Squid/squid_dynamic/write_conf_manuell
new file mode 100755
index 0000000..c42e48e
--- /dev/null
+++ b/Admin/Modules/Squid/squid_dynamic/write_conf_manuell
@@ -0,0 +1,183 @@
+#!/bin/bash
+# Script um die cache_peer funktion von Squid manuell von der Website aus upzudaten.
+# V1.0
+# 13.10.2010
+# Stoeckholzer, Haas
+
+while [ "1" == "1" ];
+do
+
+ write=1
+ zero=0
+ # ueberpruefen ob file vpnid_man vorhanden
+ if [ -e /var/vpn/vpnid_man ];
+ then
+ echo 1
+ zero=1
+ fi
+
+ # ueberpruefen ob file vpnid_next vorhanden
+ if [ -e /var/vpn/vpnid_next ];
+ then
+ echo 2
+ zero=2
+ fi
+
+
+
+ if [ "$zero" == "1" ];
+ then
+ # Manuelle ID als hex einlesen einlesen
+ hex=$(cat /var/vpn/vpnid_man)
+ id=$(printf "%d\n" 0x$hex)
+ echo $id > /var/vpn/vpnid
+ rm /var/vpn/vpnid_man
+ echo $hex
+ # Login-Daten aus Datenbank holen
+ credentials=$(/home/christoph/squid_dynamic/squidy $hex)
+ fi
+
+ if [ "$zero" == "2" ];
+ then
+ schleife="1"
+ rm /var/vpn/vpnid_next
+
+ while [ $schleife == "1" ] ;
+ do
+ # Zaehlvariable einlesen
+ id_alt=$(cat /var/vpn/vpnid)
+
+ # alte id HEX wandeln zum BLacklisten
+ hex_alt=$(echo "obase=16; $id_alt" |bc)
+
+ # Abfrage ob Strinlaenge von hex kleiner als 2
+ if [ ${#hex_alt} -lt 2 ];
+ then
+ hex_alt=0$hex_alt
+ fi
+
+ # alte id BLacklisten
+ if [ $write == 1 ];
+ then
+ echo $hex_alt >> /var/vpn/blacklist
+ fi
+
+ # id inkrementieren
+ let id=$id_alt+1
+
+ # 255 Overflow verhindern
+ if [ $id -gt 254 ]
+ then
+ id=0
+ fi
+
+ # Variable id fuer naechsten Durchlauf speichern
+ echo $id > /var/vpn/vpnid
+
+ # id HEX wandeln
+ hex=$(echo "obase=16; $id" |bc)
+
+ # Abfrage ob Strinlaenge von hex kleiner als 2
+ if [ ${#hex} -lt 2 ];
+ then
+ hex=0$hex
+ fi
+
+ # hole id_hex aus BLacklist?
+ black=$(cat /var/vpn/blacklist|grep $hex)
+
+ # Abfrage ob id_hex in BLacklist
+ if [ ${#black} -lt 2 ];
+ then
+ # Login-Daten aus Datenbank holen
+ credentials=$(/home/christoph/squid_dynamic/squidy $hex)
+
+ # Abfrage ob Datensatz leer :
+ if [ ${#credentials} -gt 10 ];
+ then
+ schleife="0"
+ fi
+ else write=0
+ fi
+ done
+ fi
+
+
+ # Abfrage ob Datensatz leer (zur Sicherheit):
+ if [ ${#credentials} -gt 10 ] && [ $zero != "0" ];
+ then
+
+ # stop squid
+ sudo killall -9 unlinkd
+ sudo killall -9 squid
+
+ sudo rm /etc/squid3/squid.conf
+######################################################################################
+ # Config- Datei schreiben.
+sudo echo -e -n "
+# Squid config by h44z
+
+# TAG: http_port
+# Usage: port
+# hostname:port
+# 1.2.3.4:port
+http_port 10.8.0.1:3128 transparent
+http_port 10.8.0.1:8080
+#https_port 10.8.0.1:8181 key=/etc/apache2/ssl/apache.pem
+
+
+visible_hostname vpnrack
+
+# TAG: icp_port
+icp_port 0
+
+# TAG: no_cache
+acl QUERY urlpath_regex cgi-bin \\?
+no_cache deny QUERY
+
+# TAG: cache_mem (bytes)
+cache_mem 32 MB
+
+# TAG: cache_dir
+cache_dir ufs /var/cache/squid 100 16 256
+
+# TAG: cache_access_log
+cache_access_log /var/log/squid/access.log
+
+# TAG: cache_log
+cache_log /var/log/squid/cache.log
+
+# TAG: cache_store_log
+cache_store_log /var/log/squid/store.log
+
+# TAG: emulate_httpd_log on|off
+emulate_httpd_log on
+
+# TAG: pid_filename
+pid_filename /var/run/squid.pid
+
+# TAG: cache_mgr
+cache_mgr christoph.haas2@students.htlinn.ac.at
+
+http_access allow all
+acl https port 443
+http_access allow https
+
+
+# TAG: http_reply_access
+# Allow replies to client requests. This is complementary to http_access.
+#http_reply_access allow all
+
+cache_peer 192.168.195.101 parent 8080 7 no-query default no-digest login=$credentials
+
+never_direct allow all
+" > /etc/squid3/squid.conf
+######################################################################################
+
+ echo "Written: $credentials"
+
+ #start squid
+ squid -D -YC -f /etc/squid3/squid.conf
+fi
+sleep 2
+done
diff --git a/Admin/Modules/Squid/squid_dynamic/write_conf_manuell.bak b/Admin/Modules/Squid/squid_dynamic/write_conf_manuell.bak
new file mode 100755
index 0000000..fc83012
--- /dev/null
+++ b/Admin/Modules/Squid/squid_dynamic/write_conf_manuell.bak
@@ -0,0 +1,158 @@
+#!/bin/bash
+# Script um die cache_peer funktion von Squid manuell von der Website aus upzudaten.
+# V1.0
+# 13.10.2010
+# Stoeckholzer, Haas
+
+while [ "1" == "1" ];
+do
+
+ zero=0
+ # ueberpruefen ob file vpnid_man vorhanden
+ if [ -e /var/vpn/vpnid_man ];
+ then
+ echo 1
+ zero=1
+ fi
+
+ # ueberpruefen ob file vpnid_next vorhanden
+ if [ -e /var/vpn/vpnid_next ];
+ then
+ echo 2
+ zero=2
+ fi
+
+
+
+ if [ "$zero" == "1" ];
+ then
+ # Manuelle ID als hex einlesen einlesen
+ hex=$(cat /var/vpn/vpnid_man)
+ id=$(printf "%d\n" $hex)
+ echo $id > /var/vpn/vpnid
+ rm /var/vpn/vpnid_man
+ echo $hex
+ # Login-Daten aus Datenbank holen
+ credentials=$(/home/christoph/squid_dynamic/squidy $hex)
+ fi
+
+ if [ "$zero" == "2" ];
+ then
+ schleife="1"
+ rm /var/vpn/vpnid_next
+
+ while [ $schleife == "1" ] ;
+ do
+ # Zaehlvariable einlesen
+ id=$(cat /var/vpn/vpnid)
+ # id inkrementieren
+ let id=$id+1
+
+ # 255 Overflow verhindern
+ if [ $id -gt 254 ]
+ then
+ id=0
+ fi
+
+ # Variable id fuer naechsten Durchlauf speichern
+ echo $id > /var/vpn/vpnid
+
+ # id HEX wandeln
+ hex=$(echo "obase=16; $id" |bc)
+
+ # Abfrage ob Strinlaenge von hex kleiner als 2
+ if [ ${#hex} -lt 2 ];
+ then
+ hex=0$hex
+ fi
+
+ # Login-Daten aus Datenbank holen
+ credentials=$(/home/christoph/squid_dynamic/squidy $hex)
+
+ # Abfrage ob Datensatz leer :
+ if [ ${#credentials} -gt 10 ];
+ then
+ schleife="0"
+ fi
+ done
+ fi
+
+
+ # Abfrage ob Datensatz leer (zur Sicherheit):
+ if [ ${#credentials} -gt 10 ] && [ $zero != "0" ];
+ then
+
+ # stop squid
+ sudo killall -9 unlinkd
+ sudo killall -9 squid
+
+ sudo rm /etc/squid3/squid.conf
+######################################################################################
+ # Config- Datei schreiben.
+sudo echo -e -n "
+# Squid config by h44z
+
+# TAG: http_port
+# Usage: port
+# hostname:port
+# 1.2.3.4:port
+http_port 10.8.0.1:3128 transparent
+http_port 10.8.0.1:8080
+#https_port 10.8.0.1:8181 key=/etc/apache2/ssl/apache.pem
+
+
+visible_hostname vpnrack
+
+# TAG: icp_port
+icp_port 0
+
+# TAG: no_cache
+acl QUERY urlpath_regex cgi-bin \\?
+no_cache deny QUERY
+
+# TAG: cache_mem (bytes)
+cache_mem 32 MB
+
+# TAG: cache_dir
+cache_dir ufs /var/cache/squid 100 16 256
+
+# TAG: cache_access_log
+cache_access_log /var/log/squid/access.log
+
+# TAG: cache_log
+cache_log /var/log/squid/cache.log
+
+# TAG: cache_store_log
+cache_store_log /var/log/squid/store.log
+
+# TAG: emulate_httpd_log on|off
+emulate_httpd_log on
+
+# TAG: pid_filename
+pid_filename /var/run/squid.pid
+
+# TAG: cache_mgr
+cache_mgr christoph.haas2@students.htlinn.ac.at
+
+http_access allow all
+acl https port 443
+http_access allow https
+
+
+# TAG: http_reply_access
+# Allow replies to client requests. This is complementary to http_access.
+#http_reply_access allow all
+
+cache_peer 192.168.195.101 parent 8080 7 no-query default no-digest login=$credentials
+
+never_direct allow all
+" > /etc/squid3/squid.conf
+######################################################################################
+
+ echo "Written: $credentials"
+
+ #start squid
+ squid -D -YC -f /etc/squid3/squid.conf
+fi
+sleep 2
+done
diff --git a/Admin/Modules/Squid/startsquid b/Admin/Modules/Squid/startsquid
new file mode 100755
index 0000000..4dccfde
--- /dev/null
+++ b/Admin/Modules/Squid/startsquid
@@ -0,0 +1,5 @@
+/home/christoph/stopsquid
+
+#iptables -t nat -A PREROUTING -i tap0 -p tcp --dport 80 -j REDIRECT --to-ports 3128
+#iptables -t nat -A PREROUTING -i tap0 -p tcp --dport 443 -j REDIRECT --to-ports 3128
+squid -D -YC -f /etc/squid3/squid.conf
diff --git a/Admin/Modules/Squid/stopsquid b/Admin/Modules/Squid/stopsquid
new file mode 100755
index 0000000..91187a6
--- /dev/null
+++ b/Admin/Modules/Squid/stopsquid
@@ -0,0 +1,6 @@
+#iptables -t nat -D PREROUTING -i tap0 -p tcp --dport 80 -j REDIRECT --to-ports 3128
+#iptables -t nat -D PREROUTING -i tap0 -p tcp --dport 443 -j REDIRECT --to-ports 3128
+
+killall squid
+killall squid
+killall squid
diff --git a/Admin/Modules/Squid_old/changesquid.php b/Admin/Modules/Squid_old/changesquid.php
new file mode 100755
index 0000000..c5b81b5
--- /dev/null
+++ b/Admin/Modules/Squid_old/changesquid.php
@@ -0,0 +1,14 @@
+
diff --git a/Admin/Modules/Squid_old/delbl.php b/Admin/Modules/Squid_old/delbl.php
new file mode 100755
index 0000000..827a9b0
--- /dev/null
+++ b/Admin/Modules/Squid_old/delbl.php
@@ -0,0 +1,9 @@
+ ".db_getconfval("sqddir")."/blacklist");
+echo $ret;
+header ("Location: ".$path."&uebergabe=2");
+?>
diff --git a/Admin/Modules/Squid_old/include/config.inc b/Admin/Modules/Squid_old/include/config.inc
new file mode 100755
index 0000000..89ed528
--- /dev/null
+++ b/Admin/Modules/Squid_old/include/config.inc
@@ -0,0 +1,66 @@
+
diff --git a/Admin/Modules/Squid_old/include/functions.inc b/Admin/Modules/Squid_old/include/functions.inc
new file mode 100755
index 0000000..870fa96
--- /dev/null
+++ b/Admin/Modules/Squid_old/include/functions.inc
@@ -0,0 +1,251 @@
+ $PluginData)
+ {
+ // Check if the config.inc for a plugin exists
+ if (file_exists ($_SERVER["DOCUMENT_ROOT"]."/Admin/Modules/VPNconfig/plugins/". $PluginData['Folder'] ."/config.inc"))
+ {
+ include ($_SERVER["DOCUMENT_ROOT"]."/Admin/Modules/VPNconfig/plugins/". $PluginData['Folder'] ."/config.inc");
+
+ // Check if claimed inc files do exist
+ if (isset ($config['Plugins'][$PluginName]['Action']['Include']) &&
+ !file_exists ($_SERVER["DOCUMENT_ROOT"]."/Admin/Modules/VPNconfig/plugins/". $PluginData['Folder'] ."/".
+ $config['Plugins'][$PluginName]['Action']['Include']))
+ $config['Plugins'][$PluginName]['Action']['Include'] = NULL;
+
+ if (isset ($config['Plugins'][$PluginName]['Left']['Menu']) &&
+ !file_exists ($_SERVER["DOCUMENT_ROOT"]."/Admin/Modules/VPNconfig/plugins/". $PluginData['Folder'] ."/".
+ $config['Plugins'][$PluginName]['Left']['Menu']))
+ $config['Plugins'][$PluginName]['Left']['Menu'] = NULL;
+
+ if (isset ($config['Plugins'][$PluginName]['Left']['Status']) &&
+ !file_exists ($_SERVER["DOCUMENT_ROOT"]."/Admin/Modules/VPNconfig/plugins/". $PluginData['Folder'] ."/".
+ $config['Plugins'][$PluginName]['Left']['Status']))
+ $config['Plugins'][$PluginName]['Left']['Status'] = NULL;
+ }
+ }
+ }
+}
+
+// ----------------------------------------------
+function seconds_string ($seconds, $periods = null)
+{
+ $Wanted = '';
+
+ // Define time periods
+ if (!is_array ($periods))
+ {
+ $periods = array (
+ 'years' => 31556926,
+ 'months' => 2629743,
+ 'weeks' => 604800,
+ 'days' => 86400,
+ 'hours' => 3600,
+ 'minutes' => 60,
+ 'seconds' => 1
+ );
+ }
+
+ // Wanted
+ if (empty ($seconds))
+ { $Wanted = ''; }
+ else
+ {
+ // Loop
+ $seconds = (int) $seconds;
+ foreach ($periods as $period => $value)
+ {
+ $count = floor ($seconds / $value);
+
+ if ($count == 0)
+ continue;
+ elseif ($count == 1)
+ $Wanted .= ($count . ' ' . substr ($period, 0, strlen ($period) - 1) . ' ');
+ else
+ $Wanted .= ($count . ' ' . $period . ' ');
+
+ $seconds = $seconds % $value;
+ }
+ }
+
+ return rtrim ($Wanted);
+}
+
+// ----------------------------------------------
+function chomp (&$string)
+{
+ if (is_array ($string))
+ {
+ foreach ($string as $i => $val)
+ { $endchar = chomp ($string[$i]); }
+ }
+ else
+ {
+ $endchar = substr ("$string", strlen("$string") - 1, 1);
+ if ($endchar == "\n")
+ { $string = substr ("$string", 0, -1); }
+ }
+ return $endchar;
+}
+
+// ----------------------------------------------
+function str_strip_spaces ($aline)
+{
+ while (strpos ($aline, "\t") != FALSE) $aline = str_replace ("\t", ' ', $aline);
+ while (strpos ($aline, ' ') != FALSE) $aline = str_replace (' ', ' ', $aline);
+
+ return $aline;
+}
+
+// ----------------------------------------------
+// Returns $afile only if it is the full name, or prefixed by $apath
+function str_file_fullname ($apath, $afile)
+{
+ if (substr ($afile, 0, 1) != '/')
+ $afile = ($apath . $afile);
+
+ return $afile;
+}
+
+// ----------------------------------------------
+// Returns $afile only if it is the full name, or prefixed by $apath
+function str_openssldata_to_string ($adata)
+{
+ $Return = '';
+ $amonth = array ('Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec');
+
+ if (substr ($adata, -1, 1) == 'Z')
+ {
+ $Return = sprintf ("%s %d %s%02d, %02d:%02d:%02d",
+ $amonth [substr ($adata, 2, 2) - 1],
+ substr ($adata, 4, 2),
+ (substr ($adata, 0, 2) > 50 ? '19' : '20'),
+ substr ($adata, 0, 2),
+ substr ($adata, 6, 2),
+ substr ($adata, 8, 2),
+ substr ($adata, 10, 2));
+ }
+
+ return $Return;
+}
+
+// ----------------------------------------------
+function str_get_sometag ($aline, $sometag)
+{
+ if (eregi ($sometag, $aline, $anarray))
+ return $anarray[1];
+ else
+ return '';
+}
+
+// ----------------------------------------------
+// Writes content into file
+// Optionally sames old file into backup file.
+// The Backup File has to reside on the same partition!
+function writefile ($afile, $adata, $abackup = NULL)
+{
+ // Move the old file into Backup one
+ if ($abackup != NULL)
+ {
+ if (file_exists ($afile))
+ {
+ if (file_exists ($abackup))
+ if (!unlink ($abackup))
+ exit;
+ if (!rename ($afile, $abackup))
+ exit;
+ }
+ }
+
+ $fp = fopen ($afile, "w", 0);
+ if (!$fp)
+ exit;
+
+ fputs ($fp, $adata);
+ fclose ($fp);
+}
+
+
+// ----------------------------------------------
+// Guess the full file name
+function if_file_exists (&$sFileName, $bFix = FALSE)
+{
+ global $config;
+
+ if (strpos ($sFileName, '/') == FALSE)
+ {
+ $sLongFileName = $config['openvpn']['folder'] . $sFileName;
+ if (file_exists ($sLongFileName) && $bFix)
+ $sFileName = $sLongFileName;
+ }
+
+ return file_exists ($sFileName);
+}
+
+// ----------------------------------------------
+function zlib_check_functions ()
+{
+ $Result = '';
+ $ZLibs = array
+ (
+ 'gzcompress'
+ );
+
+ foreach ($ZLibs as $Function)
+ {
+ $Result .= $Function . ': ' . (function_exists ($Function) ?
+ 'OK ' :
+ 'DOES NOT EXIST ') . ' ';
+ }
+
+ return $Result;
+}
+
+// ----------------------------------------------
+function html_dump ($aname, $athing)
+{
+ echo ''. $aname .' : ';
+ print_r ($athing);
+ echo " \n";
+}
+
+// ----------------------------------------------
+function html_error ($amessage, $ifexit = true)
+{
+ global $config;
+ echo $amessage;
+ if ($ifexit)
+ exit;
+}
+
+// ----------------------------------------------
+function html_postredir ($url)
+{
+ header ('HTTP/1.1 303 REDIRECT');
+ header ('Location: '. $url);
+#header ('Status: 303'); // if 1st header generates 500, then commend it out and use this one as 2nd
+}
+
+// ----------------------------------------------
+// ----------------------------------------------
+function html_download ($sFile, $sName)
+{
+ header ('Content-type: application/octet-stream');
+ header ('Content-Disposition: attachment; filename="'. $sName . '"');
+ readfile ($sFile);
+}
+
+// ----------------------------------------------
+function html_download_data ($sData, $sName)
+{
+ header ('Content-type: application/octet-stream');
+ header ('Content-Disposition: attachment; filename="'. $sName . '"');
+ echo $sData;
+}
+?>
diff --git a/Admin/Modules/Squid_old/include/openssl-functions.inc b/Admin/Modules/Squid_old/include/openssl-functions.inc
new file mode 100755
index 0000000..a10701a
--- /dev/null
+++ b/Admin/Modules/Squid_old/include/openssl-functions.inc
@@ -0,0 +1,377 @@
+: ' . (function_exists ($Function) ?
+ 'OK ' :
+ 'DOES NOT EXIST ') . ' ';
+ }
+
+ return $Result;
+}
+
+// ----------------------------------------------
+function openssl_load_database ($afile = '')
+{
+ global $config;
+ global $openssl;
+
+ $afile = ($afile == '' ? $config['openssl']['database'] : $afile);
+ $lines = file ($afile);
+
+ if (!is_array ($lines))
+ exit;
+
+ foreach ($lines as $line_num => $line)
+ {
+ chomp ($line);
+ $linetokens = explode ("\t", $line);
+
+ // Ensure that all the fields are set
+ if (count ($linetokens) == 6)
+ {
+ // Decode the openssl's database. See apps/apps.h
+ $openssl['Database'][] = array ('Status' => $linetokens[0],
+ 'ExpDate' => $linetokens[1],
+ 'RevDate' => $linetokens[2],
+ 'Serial' => $linetokens[3],
+ 'File' => $linetokens[4],
+ 'Name' => $linetokens[5],
+ 'Country' => openssl_get_country ($linetokens[5]),
+ 'State' => openssl_get_state ($linetokens[5]),
+ 'City' => openssl_get_city ($linetokens[5]),
+ 'Company' => openssl_get_company ($linetokens[5]),
+ 'Department' => openssl_get_department ($linetokens[5]),
+ 'CN' => openssl_get_CN ($linetokens[5]),
+ 'Email' => openssl_get_email ($linetokens[5])
+ );
+ }
+ }
+}
+
+// ----------------------------------------------
+function openssl_write_database ($afile = '')
+{
+ global $config;
+ global $openssl;
+
+ $afile = ($afile == '' ? $config['openssl']['database'] : $afile);
+
+ $atext = '';
+ for ($i = 0; $i < count ($openssl['Database']); $i++)
+ {
+ $atext .= ($atext == '' ? '' : "\n");
+ $atext .= $openssl['Database'][$i]['Status'] ."\t".
+ $openssl['Database'][$i]['ExpDate'] ."\t".
+ $openssl['Database'][$i]['RevDate'] ."\t".
+ $openssl['Database'][$i]['Serial'] ."\t".
+ $openssl['Database'][$i]['File'] ."\t".
+ $openssl['Database'][$i]['Name'];
+ }
+
+ writefile ($afile, $atext, $afile .'.old');
+}
+
+// ----------------------------------------------
+function openssl_write_database_attr ($atext = '', $afile = '')
+{
+ global $config;
+ global $openssl;
+
+ $afile = ($afile == '' ? $config['openssl']['database'] : $afile) .'.attr';
+ $atext = ($atext == '' ? "unique_subject = yes\n" : $atext);
+
+ if (file_exists ($afile))
+ {
+ ob_start ();
+ readfile ($afile);
+ $atext = ob_get_contents ();
+ ob_end_clean ();
+ }
+
+ writefile ($afile, $atext, $afile .'.old');
+}
+
+// ----------------------------------------------
+// Returns the PEM file with spaces reduced and replaced to
+function openssl_load_cert ($anid)
+{
+ global $config;
+
+ do
+ {
+ $lines = file ($config['openssl']['pubfolder'] . $anid . '.pem');
+
+ if (!is_array ($lines))
+ {
+ $Return = '';
+ break;
+ }
+
+ foreach ($lines as $line_num => $line)
+ {
+ chomp ($line);
+ $Return[] = str_replace (' ', ' ', htmlspecialchars (str_replace (' ', ' ', $line)));
+ }
+ } while (FALSE);
+
+ return $Return;
+}
+
+// ----------------------------------------------
+function openssl_load_serial ($afile = '')
+{
+ global $config;
+
+ $afile = ($afile == '' ? $config['openssl']['serial'] : $afile);
+
+ $lines = file ($afile);
+
+ if (!is_array ($lines))
+ exit;
+
+ $Return = sscanf ($lines[0], "%X");
+
+ return $Return[0];
+}
+
+// ----------------------------------------------
+function openssl_write_serial ($iNumber, $afile = '')
+{
+ global $config;
+
+ $afile = ($afile == '' ? $config['openssl']['serial'] : $afile);
+
+ writefile ($afile, openssl_hex_serial ($iNumber) . "\n", $afile .'.old');
+}
+
+// ----------------------------------------------
+// Supports up to 999,999 serials
+function openssl_hex_serial ($iNumber)
+{
+ if ($iNumber < 100)
+ $sString = sprintf ("%02X", $iNumber);
+ elseif ($iNumber < 10000)
+ $sString = sprintf ("%04X", $iNumber);
+ else
+ $sString = sprintf ("%06X", $iNumber);
+
+ return $sString;
+}
+
+// ----------------------------------------------
+// Builds User Private Key, CSR and Public Certificate
+function openssl_build_key (&$anoutput, $adn, $validdays = NULL)
+{
+ global $config;
+ global $openssl;
+
+ $anoutput = '';
+ $Return = FALSE;
+
+ // Allow to override default value
+ $validdays = ($validdays == NULL ? $config['openssl']['default']['expiration'] : $validdays);
+
+ do
+ {
+ if (!isset ($adn) ||
+ !isset ($adn['countryName']) ||
+ !isset ($adn['stateOrProvinceName']) ||
+ !isset ($adn['localityName']) ||
+ !isset ($adn['organizationName']) ||
+ !isset ($adn['organizationalUnitName']) ||
+ !isset ($adn['commonName']) ||
+ !isset ($adn['emailAddress'])
+ )
+ { $anoutput .= "- ERROR on ". __LINE__ ." line: incomplete DN information\n"; break; }
+ $anoutput .= "+ OK got the valid input\n";
+
+ // Get the new User Private Key
+ $UserPrivKey = openssl_pkey_new (array($config['openssl']['config'],0));
+ if ($UserPrivKey == FALSE)
+ { $anoutput .= "- ERROR on ". (__LINE__ - 2) ." line (openssl_pkey_new):\n ". openssl_error_strings () ." (that might usually mean that the openssl.cnf file is unavailable)"; break; }
+ $anoutput .= "+ OK got the User Private Key\n";
+
+ // Generate the User Certificate Request
+ $UserReq = openssl_csr_new ($adn,
+ $UserPrivKey,
+ $config['openssl']['config']);
+ if ($UserReq == FALSE)
+ { $anoutput .= "- ERROR on ". (__LINE__ - 4) ." line (openssl_csr_new):\n ". openssl_error_strings (); break; }
+ $anoutput .= "+ OK generated the User Certificate Request\n";
+
+ // Read the openssl serial
+ $CAserial = openssl_load_serial ($config['openssl']['serial']);
+ $anoutput .= "+ OK read current openssl serial (". openssl_hex_serial ($CAserial) .")\n";
+
+ $UserPubCertFile = $config['openssl']['pubfolder'] . openssl_hex_serial ($CAserial) .'.pem';
+ $UserCertReqFile = $config['openssl']['reqfolder'] . openssl_hex_serial ($CAserial) .'.csr';
+ $UserPrivKeyFile = $config['openssl']['prvfolder'] . openssl_hex_serial ($CAserial) .'.key';
+
+ // Read the openssl database
+ openssl_load_database ($config['openssl']['database']);
+ $anoutput .= "+ OK read the openssl database (". count ($openssl['Database']) ." items)\n";
+
+ // Get CA's Private Key
+ $CAPrivKey = openssl_pkey_get_private ($config['openssl']['CA']['priv']);
+
+ if ($CAPrivKey == FALSE)
+ { $anoutput .= "- ERROR on ". (__LINE__ - 2) ." line (openssl_pkey_get_private)\n ". openssl_error_strings (); break; }
+ $anoutput .= "+ OK read the CA Private Key\n";
+
+ // Get a CA-signed cert that lasts for 1 year
+ $UserPubCert = openssl_csr_sign ($UserReq,
+ $config['openssl']['CA']['pub'],
+ $CAPrivKey,
+ $validdays,
+ $config['openssl']['config'],
+ $CAserial);
+ if ($UserPubCert == FALSE)
+ { $anoutput .= "- ERROR on ". (__LINE__ - 7) ." line (openssl_csr_sign)\n ". openssl_error_strings (); break; }
+ $anoutput .= "+ OK signed the User Certificate Request with CA Private Key\n";
+
+ // Add the new row into openssl database
+ $openssl['Database'][] = array ('Status' => 'V',
+ 'ExpDate' => date ('ymdHis',
+ time() +
+ date ('Z') +
+ ($validdays * 24 * 60 * 60)) .'Z',
+ 'RevDate' => '',
+ 'Serial' => openssl_hex_serial ($CAserial),
+ 'File' => openssl_hex_serial ($CAserial) .'.crt',
+ 'Name' => openssl_make_name ($adn)
+ );
+
+ // Create files
+
+ $OldUMask = umask (0007);
+
+ // Write User Private Key
+ if (!openssl_pkey_export_to_file ($UserPrivKey, $UserPrivKeyFile, NULL, $config['openssl']['config']))
+ { $anoutput .= "- ERROR on ". (__LINE__ - 1) ." line (openssl_pkey_export_to_file)\n ". openssl_error_strings () ." (That might mean that the key folder is not write enabled for www user)"; break; }
+ $anoutput .= "+ OK wrote User Private Key into file $UserPrivKeyFile\n";
+
+ // Write User Public Certificate
+ if (!openssl_x509_export_to_file ($UserPubCert, $UserPubCertFile, FALSE))
+ { $anoutput .= "- ERROR on ". (__LINE__ - 1) ." line (openssl_x509_export_to_file)\n ". openssl_error_strings (); break; }
+ $anoutput .= "+ OK wrote User Public Certificate into file $UserPubCertFile\n";
+
+ // Write User Certificate Request
+ if (!openssl_csr_export_to_file ($UserReq, $UserCertReqFile))
+ { $anoutput .= "- ERROR on ". (__LINE__ - 1) ." line (openssl_csr_export_to_file)\n ". openssl_error_strings (); break; }
+ $anoutput .= "+ OK wrote User Certificate Request into file $UserCertReqFile\n";
+
+ // Write new openssl database
+ openssl_write_database ($config['openssl']['database']);
+ openssl_write_database_attr ('', $config['openssl']['database']);
+ $anoutput .= "+ OK wrote new openssl database\n";
+
+ // Write new openssl serial
+ openssl_write_serial ($CAserial + 1, $config['openssl']['serial']);
+ $anoutput .= "+ OK wrote new openssl serial\n";
+
+ umask ($OldUMask);
+
+ $Return = openssl_hex_serial ($CAserial);
+ } while (FALSE);
+
+ return $Return;
+}
+
+// ----------------------------------------------
+function openssl_error_strings ()
+{
+ $sString = '';
+ while ($msg = openssl_error_string ())
+ $sString .= $msg ."\n";
+
+ return $sString;
+}
+
+// ----------------------------------------------
+function openssl_make_name ($adn)
+{
+ $sString = '';
+
+ if (strlen ($adn['countryName']) > 0) $sString .= '/C=' . $adn['countryName'];
+ if (strlen ($adn['stateOrProvinceName']) > 0) $sString .= '/ST=' . $adn['stateOrProvinceName'];
+ if (strlen ($adn['localityName']) > 0) $sString .= '/L=' . $adn['localityName'];
+ if (strlen ($adn['organizationName']) > 0) $sString .= '/O=' . $adn['organizationName'];
+ if (strlen ($adn['organizationalUnitName']) > 0) $sString .= '/OU=' . $adn['organizationalUnitName'];
+ if (strlen ($adn['commonName']) > 0) $sString .= '/CN=' . $adn['commonName'];
+ if (strlen ($adn['emailAddress']) > 0) $sString .= '/emailAddress='. $adn['emailAddress'];
+
+ return $sString;
+}
+
+// ----------------------------------------------
+function openssl_get_country ($aline)
+{ return str_get_sometag ($aline . '/', '\/C=([^/]*)\/'); }
+
+// ----------------------------------------------
+function openssl_get_state ($aline)
+{ return str_get_sometag ($aline . '/', '\/ST=([^/]*)\/'); }
+
+// ----------------------------------------------
+function openssl_get_city ($aline)
+{ return str_get_sometag ($aline . '/', '\/L=([^/]*)\/'); }
+
+// ----------------------------------------------
+function openssl_get_company ($aline)
+{ return str_get_sometag ($aline . '/', '\/O=([^/]*)\/'); }
+
+// ----------------------------------------------
+function openssl_get_department ($aline)
+{ return str_get_sometag ($aline . '/', '\/OU=([^/]*)\/'); }
+
+// ----------------------------------------------
+function openssl_get_CN ($aline)
+{ return str_get_sometag ($aline . '/', '\/CN=([^/]*)\/'); }
+
+// ----------------------------------------------
+function openssl_get_email ($aline)
+{ return str_get_sometag ($aline . '/', '\/emailAddress=([^/]*)\/'); }
+
+// ----------------------------------------------
+// Guess the full file name
+function openssl_get_filename ($iSerial, $sExt)
+{
+ global $config;
+
+ $sReturn = $config['openssl']['folder'] . openssl_hex_serial ($iSerial) . $sExt;
+ if (!file_exists ($sReturn))
+ {
+ $sReturn = $config['openssl']['pubfolder'] . openssl_hex_serial ($iSerial) . $sExt;
+ if (!file_exists ($sReturn))
+ {
+ $sReturn = $config['openssl']['reqfolder'] . openssl_hex_serial ($iSerial) . $sExt;
+ if (!file_exists ($sReturn))
+ {
+ $sReturn = $config['openssl']['prvfolder'] . openssl_hex_serial ($iSerial) . $sExt;
+ if (!file_exists ($sReturn))
+ {
+ $sReturn = '';
+ }
+ }
+ }
+ }
+
+ return $sReturn;
+}
+
+
+?>
diff --git a/Admin/Modules/Squid_old/include/restartsquid.php b/Admin/Modules/Squid_old/include/restartsquid.php
new file mode 100755
index 0000000..e60d11c
--- /dev/null
+++ b/Admin/Modules/Squid_old/include/restartsquid.php
@@ -0,0 +1,11 @@
+
diff --git a/Admin/Modules/Squid_old/include/startsquid.php b/Admin/Modules/Squid_old/include/startsquid.php
new file mode 100755
index 0000000..e4aac29
--- /dev/null
+++ b/Admin/Modules/Squid_old/include/startsquid.php
@@ -0,0 +1,11 @@
+
diff --git a/Admin/Modules/Squid_old/include/stopsquid.php b/Admin/Modules/Squid_old/include/stopsquid.php
new file mode 100755
index 0000000..710c8df
--- /dev/null
+++ b/Admin/Modules/Squid_old/include/stopsquid.php
@@ -0,0 +1,11 @@
+
diff --git a/Admin/Modules/Squid_old/index.php b/Admin/Modules/Squid_old/index.php
new file mode 100755
index 0000000..768a080
--- /dev/null
+++ b/Admin/Modules/Squid_old/index.php
@@ -0,0 +1,297 @@
+";
+ exit;
+}
+ $sort = mysql_real_escape_string($_POST["dirsort"]); //$_GET["sort"];
+ $by = mysql_real_escape_string($_POST["sortby"]); //$_GET["by"];
+ $userid = mysql_real_escape_string($_POST["userid"]); //$_GET["userid"];
+ $search = mysql_real_escape_string($_POST["search"]); //$_GET["search"];
+
+$moduleurl = $_SERVER["REQUEST_URI"];
+$urlcut = strpos($moduleurl, "&");
+$moduleurl = substr($moduleurl,0,$urlcut);
+?>
+
+Squid Config
+Squid is currently: running ";
+}
+else
+{
+ echo "Squid is currently: stopped ";
+}
+
+ if ($_REQUEST["uebergabe"]=="3")
+ {
+ echo "Squid restarted successfully! ";
+ echo " ";
+ }
+ if ($_REQUEST["uebergabe"]=="4")
+ {
+ echo "Squid started successfully! ";
+ echo " ";
+ }
+ if ($_REQUEST["uebergabe"]=="5")
+ {
+ echo "Squid stopped successfully! ";
+ echo " ";
+ }
+ ?>
+
+
+Change Proxy Account:
+Changed Squid Account successfully!";
+ }
+ ?>
+
+
+
+ Squid ID (HEX):
+
+
+
+
+
+
+Current Squid User:
+ 0, 1 => 1, 2 => 2, 3 => 3, 4 => 4, 5 => 5,
+ 6 => 6, 7 => 7, 8 => 8, 9 => 9, 10 => 'A',
+ 11 => 'B', 12 => 'C', 13 => 'D', 14 => 'E',
+ 15 => 'F' );
+
+ do
+ {
+ $h = $hex[($dec%16)] . $h;
+ $dec /= 16;
+ }
+ while( $dec >= 1 );
+
+ return $sign . $h;
+}
+
+ $zeile = exec(escapeshellcmd("cat ".db_getconfval("sqddir")."/vpnid"));
+ $zeile = dec_to_hex($zeile);
+ //echo $zeile;
+ if(strlen ($zeile) <2)
+ {
+ $zeile = "0".$zeile;
+ }
+ if(strlen ($zeile) >2)
+ {
+ $zeile=substr($zeile, 0, -1);
+ }
+ @$y = mysql_connect($MYSQL_HOST,$MYSQL_USER,$MYSQL_PASS);
+ @$x = mysql_select_db($MYSQL_DATABASE);
+ if (empty($x))
+ {
+ echo "ERROR 0x01, Failed to connect to database! ";
+ exit;
+ }
+ $sql4 = "SELECT * FROM userdata WHERE VPNId = '".$zeile."';";
+ $result4 = mysql_query($sql4);
+ //echo $sql4;
+ $ar4=mysql_fetch_array($result4,MYSQL_ASSOC);
+ echo "" . $ar4["Vorname"] . " " . $ar4["Nachname"] . " VPNId: " . $ar4["VPNId"]." ";
+ mysql_close();
+?>
+
+
+
+
+Blacklisted Accounts:
+Blacklist cleared successfully!";
+ }
+ ?>
+
+ Squid ID Nickname Vorname Nachname
+";
+ exit;
+ }
+
+ $hascontent = true;
+ if (strlen($zeile) >2)
+ {
+ $zeile=substr($zeile, 0, -1);
+ }
+ $sql3 = "SELECT * FROM userdata WHERE VPNId = '".$zeile."';";
+ $result3 = mysql_query($sql3);
+ $ar3=mysql_fetch_array($result3,MYSQL_ASSOC);
+ $nick = $ar3["Nickname"];
+ if($nick == "")
+ $hascontent=false;
+ $vor = $ar3["Vorname"];
+ if($vor == "")
+ $hascontent=false;
+ $nach = $ar3["Nachname"];
+ if($nach == "")
+ $hascontent=false;
+
+ if($hascontent == true)
+ {
+ $blindex = $blindex+1;
+ echo "".$zeile." ".$nick." ".$vor." ".$nach." ";
+ }
+ mysql_close();
+ }
+
+?>
+
+ Blacklisted accounts:
+
+ out of:
+ ';
+ elseif (count($openssl['Database'])-1 == 1)
+ {
+ echo '1 certificate';
+ }
+ elseif (count($openssl['Database'])-1 > 1)
+ {
+ echo '';
+ echo count($openssl['Database'])-1;
+ echo ' certificates';
+ }?>
+
+
+
+
+
+
+
+
+
+User changed Proxy Accounts:
+
+
+
+ value="ASC">Up
+ value="DESC">Down
+
+
+ value="Id">ID
+ value="VPNId">VPNId
+ value="Time">Time
+ value="IP">IP
+ value="Nickname">Nickname
+
+Search User: >
+
+
+
+
+";
+ exit;
+ }
+ // MYsql befehl basteln
+
+
+ if($by == "Nickname")
+ {
+ $sql = "SELECT * FROM proxyrepair;";
+ }
+ else
+ {
+ $sql = "SELECT * FROM proxyrepair ORDER BY $by $sort;";
+ }
+
+ $result = mysql_query($sql);
+ echo "";
+ echo "User ID VPN Id Nickname Vorname Nachname Client IP Time Dead VPN ID \n";
+// ------------------------------------------------ Mysql lesen
+ if ($result)
+ {
+ while ($ar=mysql_fetch_array($result,MYSQL_ASSOC))
+ {
+
+ $sql = "SELECT * FROM userdata WHERE Id = '".$ar["Id"]."' AND (Nickname LIKE '%".$search."%' OR Vorname LIKE '%".$search."%' OR Id LIKE '%".$search."%' OR VPNId LIKE '%".$search."%');";
+ $result2 = mysql_query($sql);
+ $ar2=mysql_fetch_array($result2,MYSQL_ASSOC);
+
+ if($ar2["Nickname"] != "")
+ echo "",$ar["Id"]," ",$ar["VPNId"]," ",$ar2["Nickname"]," ",$ar2["Vorname"]," ",$ar2["Nachname"],
+ " ", $ar["IP"]," ",$ar["Time"]," ",$ar["RepID"]," \n";
+ }
+ }
+ else
+ {
+ echo " ";
+ }
+ echo "
";
+ mysql_close();
+?>
+
diff --git a/Admin/Modules/Squid_old/squid_dynamic/README b/Admin/Modules/Squid_old/squid_dynamic/README
new file mode 100644
index 0000000..6f55fcd
--- /dev/null
+++ b/Admin/Modules/Squid_old/squid_dynamic/README
@@ -0,0 +1,3 @@
+export CPATH=..:$HOME/include:/usr/local/include:/usr/include:/usr/include/mysql
+needed: libmysqlclient-dev
+gcc -l mysqlclient -o traffic Traffic.c
diff --git a/Admin/Modules/Squid_old/squid_dynamic/db.conf b/Admin/Modules/Squid_old/squid_dynamic/db.conf
new file mode 100755
index 0000000..f902996
--- /dev/null
+++ b/Admin/Modules/Squid_old/squid_dynamic/db.conf
@@ -0,0 +1,4 @@
+user: openvpn
+passwd: openvpnlog
+database: openvpn
+host: localhost
diff --git a/Admin/Modules/Squid_old/squid_dynamic/hexer b/Admin/Modules/Squid_old/squid_dynamic/hexer
new file mode 100755
index 0000000..6a24092
--- /dev/null
+++ b/Admin/Modules/Squid_old/squid_dynamic/hexer
@@ -0,0 +1,7 @@
+#!/bin/bash
+let x=0x3f
+echo $x
+
+
+let x=0xfffe
+echo $x
diff --git a/Admin/Modules/Squid_old/squid_dynamic/squid_dyn.c b/Admin/Modules/Squid_old/squid_dynamic/squid_dyn.c
new file mode 100644
index 0000000..6fa1665
--- /dev/null
+++ b/Admin/Modules/Squid_old/squid_dynamic/squid_dyn.c
@@ -0,0 +1,134 @@
+/* OpenVPN - Squid Load Balancer*
+ *------------------------------*
+ * Version 1.0 *
+ * Written by Christoph Haas *
+ * License: LGPL *
+ * 12.10.2010 *
+ */
+
+#include
+#include
+
+#include
+#include
+#include
+#include
+
+#define __MAX_LINE__ 100
+#define __MAX_FIELD__ 255
+#define false 0
+#define true 1
+
+
+MYSQL mysql;
+
+int connect_db(char *config)
+{
+ FILE *db_data = NULL;
+ regex_t reg;
+ char user[__MAX_LINE__] = "";
+ char passwd[__MAX_LINE__] = "";
+ char database[__MAX_LINE__] = "";
+ char host[__MAX_LINE__] = "";
+ int port = 0;
+ char tmp[__MAX_LINE__];
+ char buf[__MAX_LINE__];
+ int a, b;
+ int length;
+
+ if((db_data = fopen(config, "r")) == NULL)
+ {
+ fprintf(stderr, "Can't open %s for reading.\n", config);
+ return false;
+ }
+ regcomp(®, "^([a-zA-Z0-9:]+)[ ][a-zA-Z0-9]+$", REG_EXTENDED | REG_NEWLINE);
+ while(fgets(buf, __MAX_LINE__, db_data))
+ {
+ length = strlen(buf);
+ if(length < 3)continue;
+ if(length >= __MAX_LINE__)
+ {
+ fclose(db_data);
+ regfree(®);
+ fprintf(stderr, "To long line in config file.\n");
+ return false;
+ }
+ if(buf[0] == '#')continue;
+ if(regexec(®, buf, 0, 0, 0))
+ {
+ fclose(db_data);
+ regfree(®);
+ fprintf(stderr, "Syntax error in config file.\n");
+ return false;
+ }
+ for(a = 0, b = 0; a < strlen(buf); a++)
+ {
+ if(buf[a] == ' ')b++;
+ }
+ if(b != 1)
+ {
+ fclose(db_data);
+ regfree(®);
+ fprintf(stderr, "Syntax error in config file.\n");
+ return false;
+ }
+ if((strncmp(buf, "user: ", 6)) == 0)sscanf(buf, "%s %s", tmp, user);
+ if((strncmp(buf, "passwd: ", 8)) == 0)sscanf(buf, "%s %s", tmp, passwd);
+ if((strncmp(buf, "database: ", 10)) == 0)sscanf(buf, "%s %s", tmp, database);
+ if((strncmp(buf, "host: ", 6)) == 0)sscanf(buf, "%s %s", tmp, host);
+ if((strncmp(buf, "port: ", 6)) == 0)sscanf(buf, "%s %d", tmp, &port);
+ }
+ fclose(db_data);
+ regfree(®);
+ if((strlen(user) < 1) || (strlen(passwd) < 1) ||
+ (strlen(database) < 1) || (strlen(host) < 1))
+ {
+ fprintf(stderr, "One value for MySQL connection isn't set. \
+ Please set user, passwd, database and host.\n");
+ return false;
+ }
+
+
+ mysql_init(&mysql);
+ if((mysql_real_connect(&mysql, host, user, passwd, database, port, NULL, 0)) == NULL)
+ {
+ fprintf(stderr, "%s\n", mysql_error(&mysql));
+ return false;
+ }
+ return true;
+}
+
+int main(int argc, char **argv)
+{
+ MYSQL_RES *result;
+ MYSQL_ROW row;
+ char Query[200]= "SELECT * FROM userdata WHERE VPNId = '\0";
+
+ if(argc == 2)
+ {
+ /*iID = atoi(argv[1]);
+ printf("Int:%d\n", iID);
+ sprintf(ID,"%-#10x",iID);
+ printf("String:%s\n", ID);*/
+
+ connect_db("/home/christoph/squid_dynamic/db.conf"); // Datenbank Verbindung aufbauen
+
+ strcat(Query, argv[1]); // Query builden
+ strcat(Query,"'"); //
+
+ mysql_query(&mysql, Query); // Query abschicken
+ result = mysql_store_result(&mysql); // Result speichern
+
+ while ((row = mysql_fetch_row(result))) // Alle Datensätze auslesen (in dem Fall eh nur einer)
+ {
+ printf("%s:%s\n", row[9], row[10]); // Feld 9 und 10 (login/pass) aus dem datensatz ausgeben
+ }
+
+ mysql_free_result(result); // Result wieder löschen
+ mysql_close(&mysql); // Datenbank Verbindung schliesen
+ }
+ else
+ {
+ printf("USAGE: sqidy xx | xx = VPNId\n"); // bei flascheingabe der Parameter
+ }
+}
diff --git a/Admin/Modules/Squid_old/squid_dynamic/squidy b/Admin/Modules/Squid_old/squid_dynamic/squidy
new file mode 100755
index 0000000..677c5da
Binary files /dev/null and b/Admin/Modules/Squid_old/squid_dynamic/squidy differ
diff --git a/Admin/Modules/Squid_old/squid_dynamic/squidy.bak b/Admin/Modules/Squid_old/squid_dynamic/squidy.bak
new file mode 100755
index 0000000..726712c
Binary files /dev/null and b/Admin/Modules/Squid_old/squid_dynamic/squidy.bak differ
diff --git a/Admin/Modules/Squid_old/squid_dynamic/vpnid b/Admin/Modules/Squid_old/squid_dynamic/vpnid
new file mode 100644
index 0000000..4daddb7
--- /dev/null
+++ b/Admin/Modules/Squid_old/squid_dynamic/vpnid
@@ -0,0 +1 @@
+00
diff --git a/Admin/Modules/Squid_old/squid_dynamic/write_conf b/Admin/Modules/Squid_old/squid_dynamic/write_conf
new file mode 100755
index 0000000..9e3e244
--- /dev/null
+++ b/Admin/Modules/Squid_old/squid_dynamic/write_conf
@@ -0,0 +1,115 @@
+#!/bin/bash
+
+# Zaehlvariable einlesen
+id=$ID_VPN
+
+# Abfrage ob Stringlaenge von id NULL ist
+if [ ${#ID_VPN} == 0 ];
+then id=0
+fi
+
+# id inkrementieren
+let id=$id+1
+
+# 255 Overflow verhindern
+if [ $id -gt 254 ]
+then id=0
+fi
+
+# Variable id fuer naechsten Durchlauf speichern
+export ID_VPN=$id
+
+# id HEX wandeln
+hex=$(echo "obase=16; $id" |bc)
+
+# Abfrage ob Strinlaenge von hex kleiner als 2
+if [ ${#hex} -lt 2 ];
+then hex=0$hex
+fi
+
+# Login-Daten aus Datenbank holen
+credentials=$(./squidy $hex)
+# Abfrage ob Datensatz leer :
+zero="0"
+
+if [ "$credentials" == ":" ];
+then
+ . write_conf &
+ zero="1"
+fi
+if [ ${#credentials} == 0 ];
+then
+ . write_conf &
+ zero="1"
+fi
+
+######################################################################################
+
+# Config- Datei schreiben.
+if [ $zero == "0" ]
+then
+echo "
+# Squid config by h44z
+
+# TAG: http_port
+# Usage: port
+# hostname:port
+# 1.2.3.4:port
+http_port 10.8.0.1:3128 transparent
+http_port 10.8.0.1:8080
+#https_port 10.8.0.1:8181 key=/etc/apache2/ssl/apache.pem
+
+
+visible_hostname vpnrack
+
+# TAG: icp_port
+icp_port 0
+
+# TAG: no_cache
+acl QUERY urlpath_regex cgi-bin \\?
+no_cache deny QUERY
+
+# TAG: cache_mem (bytes)
+cache_mem 32 MB
+
+# TAG: cache_dir
+cache_dir ufs /var/cache/squid 100 16 256
+
+# TAG: cache_access_log
+cache_access_log /var/log/squid/access.log
+
+# TAG: cache_log
+cache_log /var/log/squid/cache.log
+
+# TAG: cache_store_log
+cache_store_log /var/log/squid/store.log
+
+# TAG: emulate_httpd_log on|off
+emulate_httpd_log on
+
+# TAG: pid_filename
+pid_filename /var/run/squid.pid
+
+# TAG: cache_mgr
+cache_mgr christoph.haas2@students.htlinn.ac.at
+
+
+http_access allow all
+acl https port 443
+http_access allow https
+
+
+# TAG: http_reply_access
+# Allow replies to client requests. This is complementary to http_access.
+#http_reply_access allow all
+
+cache_peer 192.168.195.101 parent 8080 7 no-query default no-digest login=$credentials
+
+never_direct allow all
+" > /etc/squid3/squid.conf
+
+######################################################################################
+#restart squid
+killall -9 squid
+squid -D -YC -f /etc/squid3/squid.conf
+fi
diff --git a/Admin/Modules/Squid_old/squid_dynamic/write_conf_file b/Admin/Modules/Squid_old/squid_dynamic/write_conf_file
new file mode 100755
index 0000000..1e05d8e
--- /dev/null
+++ b/Admin/Modules/Squid_old/squid_dynamic/write_conf_file
@@ -0,0 +1,132 @@
+#!/bin/bash
+# Script um die cache_peer funktion von Squid upzudaten.
+# V1.0
+# 13.10.2010
+# Stoeckholzer, Haas
+
+if [ ${#1} == 0 ];
+then
+ echo "USAGE: write_conf_file updatetime"
+ exit 0
+fi
+
+while [ "1" == "1" ] ;
+do
+ sleep $1
+ zero="1"
+
+ while [ $zero == "1" ] ;
+ do
+
+ # Zaehlvariable einlesen
+ id=$(cat /var/vpn/vpnid)
+
+ # id inkrementieren
+ let id=$id+1
+
+ # 255 Overflow verhindern
+ if [ $id -gt 254 ]
+ then
+ id=0
+ fi
+
+ # Variable id fuer naechsten Durchlauf speichern
+ echo $id > /var/vpn/vpnid
+
+ # id HEX wandeln
+ hex=$(echo "obase=16; $id" |bc)
+
+
+ # Abfrage ob Strinlaenge von hex kleiner als 2
+ if [ ${#hex} -lt 2 ];
+ then
+ hex=0$hex
+ fi
+
+ black=$(cat /var/vpn/blacklist | grep $hex)
+
+ if [ ${#black} -lt 2 ];
+ then
+ # Login-Daten aus Datenbank holen
+ credentials=$(/home/christoph/squid_dynamic/squidy $hex)
+ # Abfrage ob Datensatz leer :
+
+ if [ ${#credentials} -gt 10 ];
+ then
+ zero="0"
+ fi
+ fi
+ done
+ echo "USING credentials: $credentials"
+
+ sudo killall -9 unlinkd
+ sudo killall -9 squid
+
+ sudo rm /etc/squid3/squid.conf
+######################################################################################
+
+# Config- Datei schreiben.
+sudo echo -e -n "
+# Squid config by h44z
+
+# TAG: http_port
+# Usage: port
+# hostname:port
+# 1.2.3.4:port
+http_port 10.8.0.1:3128 transparent
+http_port 10.8.0.1:8080
+#https_port 10.8.0.1:8181 key=/etc/apache2/ssl/apache.pem
+
+
+visible_hostname vpnrack
+
+# TAG: icp_port
+icp_port 0
+
+# TAG: no_cache
+acl QUERY urlpath_regex cgi-bin \\?
+no_cache deny QUERY
+
+# TAG: cache_mem (bytes)
+cache_mem 32 MB
+
+# TAG: cache_dir
+cache_dir ufs /var/cache/squid 100 16 256
+
+# TAG: cache_access_log
+cache_access_log /var/log/squid/access.log
+
+# TAG: cache_log
+cache_log /var/log/squid/cache.log
+
+# TAG: cache_store_log
+cache_store_log /var/log/squid/store.log
+
+# TAG: emulate_httpd_log on|off
+emulate_httpd_log on
+
+# TAG: pid_filename
+pid_filename /var/run/squid.pid
+
+# TAG: cache_mgr
+cache_mgr christoph.haas2@students.htlinn.ac.at
+#blubber
+
+http_access allow all
+acl https port 443
+http_access allow https
+
+
+# TAG: http_reply_access
+# Allow replies to client requests. This is complementary to http_access.
+#http_reply_access allow all
+
+cache_peer 192.168.195.101 parent 8080 7 no-query default no-digest login=$credentials
+
+never_direct allow all
+" > /etc/squid3/squid.conf
+echo "Written credentials: $credentials"
+######################################################################################
+ #restart squid
+ sudo squid -D -YC -f /etc/squid3/squid.conf
+done
diff --git a/Admin/Modules/Squid_old/squid_dynamic/write_conf_file.bak b/Admin/Modules/Squid_old/squid_dynamic/write_conf_file.bak
new file mode 100755
index 0000000..d3648c6
--- /dev/null
+++ b/Admin/Modules/Squid_old/squid_dynamic/write_conf_file.bak
@@ -0,0 +1,130 @@
+#!/bin/bash
+# Script um die cache_peer funktion von Squid upzudaten.
+# V1.0
+# 13.10.2010
+# Stoeckholzer, Haas
+
+if [ ${#1} == 0 ];
+then
+echo "USAGE: write_conf_file updatetime"
+exit 0
+fi
+
+while [ "1" == "1" ] ; do
+
+sleep $1
+zero="1"
+
+while [ $zero == "1" ] ; do
+
+# Zaehlvariable einlesen
+id=$(cat /var/vpn/vpnid)
+
+# id inkrementieren
+let id=$id+1
+
+# 255 Overflow verhindern
+if [ $id -gt 254 ]
+then id=0
+fi
+
+# Variable id fuer naechsten Durchlauf speichern
+echo $id > /var/vpn/vpnid
+
+# id HEX wandeln
+hex=$(echo "obase=16; $id" |bc)
+
+# Abfrage ob Strinlaenge von hex kleiner als 2
+if [ ${#hex} -lt 2 ];
+then hex=0$hex
+fi
+
+# Login-Daten aus Datenbank holen
+credentials=$(/home/christoph/squid_dynamic/squidy $hex)
+# Abfrage ob Datensatz leer :
+
+if [ ${#credentials} -gt 10 ];
+then
+ zero="0"
+fi
+echo "Schleife zero: $zero"
+echo "Schleife id: $id"
+echo "Schleife hex: $hex"
+done
+echo "USING zero: $zero"
+echo "USING id: $id"
+echo "USING hex: $hex"
+echo "USING credentials: $credentials"
+
+sudo killall -9 unlinkd
+sudo killall -9 squid
+
+sudo rm /etc/squid3/squid.conf
+######################################################################################
+
+# Config- Datei schreiben.
+sudo echo -e -n "
+# Squid config by h44z
+
+# TAG: http_port
+# Usage: port
+# hostname:port
+# 1.2.3.4:port
+http_port 10.8.0.1:3128 transparent
+http_port 10.8.0.1:8080
+#https_port 10.8.0.1:8181 key=/etc/apache2/ssl/apache.pem
+
+
+visible_hostname vpnrack
+
+# TAG: icp_port
+icp_port 0
+
+# TAG: no_cache
+acl QUERY urlpath_regex cgi-bin \\?
+no_cache deny QUERY
+
+# TAG: cache_mem (bytes)
+cache_mem 32 MB
+
+# TAG: cache_dir
+cache_dir ufs /var/cache/squid 100 16 256
+
+# TAG: cache_access_log
+cache_access_log /var/log/squid/access.log
+
+# TAG: cache_log
+cache_log /var/log/squid/cache.log
+
+# TAG: cache_store_log
+cache_store_log /var/log/squid/store.log
+
+# TAG: emulate_httpd_log on|off
+emulate_httpd_log on
+
+# TAG: pid_filename
+pid_filename /var/run/squid.pid
+
+# TAG: cache_mgr
+cache_mgr christoph.haas2@students.htlinn.ac.at
+#blubber
+
+http_access allow all
+acl https port 443
+http_access allow https
+
+
+# TAG: http_reply_access
+# Allow replies to client requests. This is complementary to http_access.
+#http_reply_access allow all
+
+cache_peer 192.168.195.101 parent 8080 7 no-query default no-digest login=$credentials
+
+never_direct allow all
+" > /etc/squid3/squid.conf
+echo "Written credentials: $credentials"
+######################################################################################
+#restart squid
+sudo squid -D -YC -f /etc/squid3/squid.conf
+
+done
diff --git a/Admin/Modules/Squid_old/squid_dynamic/write_conf_manuell b/Admin/Modules/Squid_old/squid_dynamic/write_conf_manuell
new file mode 100755
index 0000000..c42e48e
--- /dev/null
+++ b/Admin/Modules/Squid_old/squid_dynamic/write_conf_manuell
@@ -0,0 +1,183 @@
+#!/bin/bash
+# Script um die cache_peer funktion von Squid manuell von der Website aus upzudaten.
+# V1.0
+# 13.10.2010
+# Stoeckholzer, Haas
+
+while [ "1" == "1" ];
+do
+
+ write=1
+ zero=0
+ # ueberpruefen ob file vpnid_man vorhanden
+ if [ -e /var/vpn/vpnid_man ];
+ then
+ echo 1
+ zero=1
+ fi
+
+ # ueberpruefen ob file vpnid_next vorhanden
+ if [ -e /var/vpn/vpnid_next ];
+ then
+ echo 2
+ zero=2
+ fi
+
+
+
+ if [ "$zero" == "1" ];
+ then
+ # Manuelle ID als hex einlesen einlesen
+ hex=$(cat /var/vpn/vpnid_man)
+ id=$(printf "%d\n" 0x$hex)
+ echo $id > /var/vpn/vpnid
+ rm /var/vpn/vpnid_man
+ echo $hex
+ # Login-Daten aus Datenbank holen
+ credentials=$(/home/christoph/squid_dynamic/squidy $hex)
+ fi
+
+ if [ "$zero" == "2" ];
+ then
+ schleife="1"
+ rm /var/vpn/vpnid_next
+
+ while [ $schleife == "1" ] ;
+ do
+ # Zaehlvariable einlesen
+ id_alt=$(cat /var/vpn/vpnid)
+
+ # alte id HEX wandeln zum BLacklisten
+ hex_alt=$(echo "obase=16; $id_alt" |bc)
+
+ # Abfrage ob Strinlaenge von hex kleiner als 2
+ if [ ${#hex_alt} -lt 2 ];
+ then
+ hex_alt=0$hex_alt
+ fi
+
+ # alte id BLacklisten
+ if [ $write == 1 ];
+ then
+ echo $hex_alt >> /var/vpn/blacklist
+ fi
+
+ # id inkrementieren
+ let id=$id_alt+1
+
+ # 255 Overflow verhindern
+ if [ $id -gt 254 ]
+ then
+ id=0
+ fi
+
+ # Variable id fuer naechsten Durchlauf speichern
+ echo $id > /var/vpn/vpnid
+
+ # id HEX wandeln
+ hex=$(echo "obase=16; $id" |bc)
+
+ # Abfrage ob Strinlaenge von hex kleiner als 2
+ if [ ${#hex} -lt 2 ];
+ then
+ hex=0$hex
+ fi
+
+ # hole id_hex aus BLacklist?
+ black=$(cat /var/vpn/blacklist|grep $hex)
+
+ # Abfrage ob id_hex in BLacklist
+ if [ ${#black} -lt 2 ];
+ then
+ # Login-Daten aus Datenbank holen
+ credentials=$(/home/christoph/squid_dynamic/squidy $hex)
+
+ # Abfrage ob Datensatz leer :
+ if [ ${#credentials} -gt 10 ];
+ then
+ schleife="0"
+ fi
+ else write=0
+ fi
+ done
+ fi
+
+
+ # Abfrage ob Datensatz leer (zur Sicherheit):
+ if [ ${#credentials} -gt 10 ] && [ $zero != "0" ];
+ then
+
+ # stop squid
+ sudo killall -9 unlinkd
+ sudo killall -9 squid
+
+ sudo rm /etc/squid3/squid.conf
+######################################################################################
+ # Config- Datei schreiben.
+sudo echo -e -n "
+# Squid config by h44z
+
+# TAG: http_port
+# Usage: port
+# hostname:port
+# 1.2.3.4:port
+http_port 10.8.0.1:3128 transparent
+http_port 10.8.0.1:8080
+#https_port 10.8.0.1:8181 key=/etc/apache2/ssl/apache.pem
+
+
+visible_hostname vpnrack
+
+# TAG: icp_port
+icp_port 0
+
+# TAG: no_cache
+acl QUERY urlpath_regex cgi-bin \\?
+no_cache deny QUERY
+
+# TAG: cache_mem (bytes)
+cache_mem 32 MB
+
+# TAG: cache_dir
+cache_dir ufs /var/cache/squid 100 16 256
+
+# TAG: cache_access_log
+cache_access_log /var/log/squid/access.log
+
+# TAG: cache_log
+cache_log /var/log/squid/cache.log
+
+# TAG: cache_store_log
+cache_store_log /var/log/squid/store.log
+
+# TAG: emulate_httpd_log on|off
+emulate_httpd_log on
+
+# TAG: pid_filename
+pid_filename /var/run/squid.pid
+
+# TAG: cache_mgr
+cache_mgr christoph.haas2@students.htlinn.ac.at
+
+http_access allow all
+acl https port 443
+http_access allow https
+
+
+# TAG: http_reply_access
+# Allow replies to client requests. This is complementary to http_access.
+#http_reply_access allow all
+
+cache_peer 192.168.195.101 parent 8080 7 no-query default no-digest login=$credentials
+
+never_direct allow all
+" > /etc/squid3/squid.conf
+######################################################################################
+
+ echo "Written: $credentials"
+
+ #start squid
+ squid -D -YC -f /etc/squid3/squid.conf
+fi
+sleep 2
+done
diff --git a/Admin/Modules/Squid_old/squid_dynamic/write_conf_manuell.bak b/Admin/Modules/Squid_old/squid_dynamic/write_conf_manuell.bak
new file mode 100755
index 0000000..fc83012
--- /dev/null
+++ b/Admin/Modules/Squid_old/squid_dynamic/write_conf_manuell.bak
@@ -0,0 +1,158 @@
+#!/bin/bash
+# Script um die cache_peer funktion von Squid manuell von der Website aus upzudaten.
+# V1.0
+# 13.10.2010
+# Stoeckholzer, Haas
+
+while [ "1" == "1" ];
+do
+
+ zero=0
+ # ueberpruefen ob file vpnid_man vorhanden
+ if [ -e /var/vpn/vpnid_man ];
+ then
+ echo 1
+ zero=1
+ fi
+
+ # ueberpruefen ob file vpnid_next vorhanden
+ if [ -e /var/vpn/vpnid_next ];
+ then
+ echo 2
+ zero=2
+ fi
+
+
+
+ if [ "$zero" == "1" ];
+ then
+ # Manuelle ID als hex einlesen einlesen
+ hex=$(cat /var/vpn/vpnid_man)
+ id=$(printf "%d\n" $hex)
+ echo $id > /var/vpn/vpnid
+ rm /var/vpn/vpnid_man
+ echo $hex
+ # Login-Daten aus Datenbank holen
+ credentials=$(/home/christoph/squid_dynamic/squidy $hex)
+ fi
+
+ if [ "$zero" == "2" ];
+ then
+ schleife="1"
+ rm /var/vpn/vpnid_next
+
+ while [ $schleife == "1" ] ;
+ do
+ # Zaehlvariable einlesen
+ id=$(cat /var/vpn/vpnid)
+ # id inkrementieren
+ let id=$id+1
+
+ # 255 Overflow verhindern
+ if [ $id -gt 254 ]
+ then
+ id=0
+ fi
+
+ # Variable id fuer naechsten Durchlauf speichern
+ echo $id > /var/vpn/vpnid
+
+ # id HEX wandeln
+ hex=$(echo "obase=16; $id" |bc)
+
+ # Abfrage ob Strinlaenge von hex kleiner als 2
+ if [ ${#hex} -lt 2 ];
+ then
+ hex=0$hex
+ fi
+
+ # Login-Daten aus Datenbank holen
+ credentials=$(/home/christoph/squid_dynamic/squidy $hex)
+
+ # Abfrage ob Datensatz leer :
+ if [ ${#credentials} -gt 10 ];
+ then
+ schleife="0"
+ fi
+ done
+ fi
+
+
+ # Abfrage ob Datensatz leer (zur Sicherheit):
+ if [ ${#credentials} -gt 10 ] && [ $zero != "0" ];
+ then
+
+ # stop squid
+ sudo killall -9 unlinkd
+ sudo killall -9 squid
+
+ sudo rm /etc/squid3/squid.conf
+######################################################################################
+ # Config- Datei schreiben.
+sudo echo -e -n "
+# Squid config by h44z
+
+# TAG: http_port
+# Usage: port
+# hostname:port
+# 1.2.3.4:port
+http_port 10.8.0.1:3128 transparent
+http_port 10.8.0.1:8080
+#https_port 10.8.0.1:8181 key=/etc/apache2/ssl/apache.pem
+
+
+visible_hostname vpnrack
+
+# TAG: icp_port
+icp_port 0
+
+# TAG: no_cache
+acl QUERY urlpath_regex cgi-bin \\?
+no_cache deny QUERY
+
+# TAG: cache_mem (bytes)
+cache_mem 32 MB
+
+# TAG: cache_dir
+cache_dir ufs /var/cache/squid 100 16 256
+
+# TAG: cache_access_log
+cache_access_log /var/log/squid/access.log
+
+# TAG: cache_log
+cache_log /var/log/squid/cache.log
+
+# TAG: cache_store_log
+cache_store_log /var/log/squid/store.log
+
+# TAG: emulate_httpd_log on|off
+emulate_httpd_log on
+
+# TAG: pid_filename
+pid_filename /var/run/squid.pid
+
+# TAG: cache_mgr
+cache_mgr christoph.haas2@students.htlinn.ac.at
+
+http_access allow all
+acl https port 443
+http_access allow https
+
+
+# TAG: http_reply_access
+# Allow replies to client requests. This is complementary to http_access.
+#http_reply_access allow all
+
+cache_peer 192.168.195.101 parent 8080 7 no-query default no-digest login=$credentials
+
+never_direct allow all
+" > /etc/squid3/squid.conf
+######################################################################################
+
+ echo "Written: $credentials"
+
+ #start squid
+ squid -D -YC -f /etc/squid3/squid.conf
+fi
+sleep 2
+done
diff --git a/Admin/Modules/Squid_old/startsquid b/Admin/Modules/Squid_old/startsquid
new file mode 100755
index 0000000..4dccfde
--- /dev/null
+++ b/Admin/Modules/Squid_old/startsquid
@@ -0,0 +1,5 @@
+/home/christoph/stopsquid
+
+#iptables -t nat -A PREROUTING -i tap0 -p tcp --dport 80 -j REDIRECT --to-ports 3128
+#iptables -t nat -A PREROUTING -i tap0 -p tcp --dport 443 -j REDIRECT --to-ports 3128
+squid -D -YC -f /etc/squid3/squid.conf
diff --git a/Admin/Modules/Squid_old/stopsquid b/Admin/Modules/Squid_old/stopsquid
new file mode 100755
index 0000000..91187a6
--- /dev/null
+++ b/Admin/Modules/Squid_old/stopsquid
@@ -0,0 +1,6 @@
+#iptables -t nat -D PREROUTING -i tap0 -p tcp --dport 80 -j REDIRECT --to-ports 3128
+#iptables -t nat -D PREROUTING -i tap0 -p tcp --dport 443 -j REDIRECT --to-ports 3128
+
+killall squid
+killall squid
+killall squid
diff --git a/Admin/Modules/Usermanagement/include/adduser.php b/Admin/Modules/Usermanagement/include/adduser.php
new file mode 100755
index 0000000..601ec04
--- /dev/null
+++ b/Admin/Modules/Usermanagement/include/adduser.php
@@ -0,0 +1,119 @@
+ 0)
+{
+ mysql_close();
+// Send Confirmation Mail
+
+if(db_getconfval("withmail") == "1")
+{
+ require_once "Mail.php";
+
+ $from = $mrecv." <".$mname.">";
+ $to = $benutzer["Vorname"]." ".$benutzer["Nachname"]." <".$benutzer["Email"].">";
+ $subject = "VPN Account created!";
+ $body =
+"Dear ".$benutzer["Vorname"]." ".$benutzer["Nachname"].",\n\nyour ".$mrecv." account has been created!\nYou can now login on with this credentials:\n\n#########################################################\nUsername: ".$benutzer["Nickname"]."\nPassword: ".$benutzer["Kennwort"]."\n#########################################################\nYou can change your password in the user section.\n\nAll files, programms and other stuff can be found on the homepage!\nTo start using your VPN Connection you have to download your config-file and your certificates!\nInstall everything as it is described in the README.txt!\n\nHave fun!!!\n\nIf you have questions write me an email!\n\n".$mrecv."\n";
+
+ $host = $mserv;
+ $username = $muser;
+ $password = $mpass;
+
+ $headers = array ( 'From' => $from,
+ 'To' => $to,
+ 'Subject' => $subject);
+ $smtp = Mail::factory('smtp',
+ array ( 'host' => $host,
+ 'auth' => true,
+ 'username' => $username,
+ 'password' => $password));
+
+ $mail = $smtp->send($to, $headers, $body);
+
+ if (PEAR::isError($mail))
+ {
+ // evt deaktivieren
+ echo("" . $mail->getMessage() . "
");
+ }
+}
+// Finish
+ mysql_close();
+ header ("Location: ".$moduleurl."&uebergabe2=1");
+}
+else
+{
+ mysql_close();
+ echo "Fehler beim Anlegen des Benutzers. \n";
+}
+?>
diff --git a/Admin/Modules/Usermanagement/include/adduser_index.php b/Admin/Modules/Usermanagement/include/adduser_index.php
new file mode 100755
index 0000000..b05d6dd
--- /dev/null
+++ b/Admin/Modules/Usermanagement/include/adduser_index.php
@@ -0,0 +1,66 @@
+
+
+
+
+User Management
+
+ Add new User:
+
+
+
+
+
+
+ Back
+
+
diff --git a/Admin/Modules/Usermanagement/include/deleteuser.php b/Admin/Modules/Usermanagement/include/deleteuser.php
new file mode 100755
index 0000000..6076b9e
--- /dev/null
+++ b/Admin/Modules/Usermanagement/include/deleteuser.php
@@ -0,0 +1,51 @@
+ 0)
+{
+ mysql_close();
+ header ("Location: ".$moduleurl."&uebergabe2=3");
+}
+else
+{
+ mysql_close();
+ echo "Fehler beim Loeschen des Benutzers. \n";
+}
+?>
diff --git a/Admin/Modules/Usermanagement/include/deleteuser_index.php b/Admin/Modules/Usermanagement/include/deleteuser_index.php
new file mode 100755
index 0000000..3d620a8
--- /dev/null
+++ b/Admin/Modules/Usermanagement/include/deleteuser_index.php
@@ -0,0 +1,21 @@
+
+
+
+User Management
+ Delete User:
+
+
+
+
+
+
+ Back
+
+
diff --git a/Admin/Modules/Usermanagement/include/edituser.php b/Admin/Modules/Usermanagement/include/edituser.php
new file mode 100755
index 0000000..121dc0e
--- /dev/null
+++ b/Admin/Modules/Usermanagement/include/edituser.php
@@ -0,0 +1,113 @@
+ 0)
+{
+ mysql_close();
+ header ("Location: ".$moduleurl."&uebergabe2=2");
+}
+else
+{
+ mysql_close();
+ echo "Fehler beim Editieren des Benutzers. (Nothing changed?) \n";
+}
+?>
diff --git a/Admin/Modules/Usermanagement/include/edituser_index.php b/Admin/Modules/Usermanagement/include/edituser_index.php
new file mode 100755
index 0000000..3c740b9
--- /dev/null
+++ b/Admin/Modules/Usermanagement/include/edituser_index.php
@@ -0,0 +1,61 @@
+
+
+
+User Management
+ Edit User:
+
+
+
+
+
+ * = Required
+
+ Back
+
+
diff --git a/Admin/Modules/Usermanagement/include/viewuser_index.php b/Admin/Modules/Usermanagement/include/viewuser_index.php
new file mode 100755
index 0000000..3c13cba
--- /dev/null
+++ b/Admin/Modules/Usermanagement/include/viewuser_index.php
@@ -0,0 +1,95 @@
+";
+ exit;
+ }
+
+ $sort = mysql_real_escape_string($_POST["dirsort"]); //$_GET["sort"];
+ $by = mysql_real_escape_string($_POST["sortby"]); //$_GET["by"];
+ $search= mysql_real_escape_string($_POST["search"]);
+
+ if($sort== "") $sort = "DESC"; //$_GET["sort"];
+ if($by=="") $by = "Id"; //$_GET["by"];
+?>
+
+
+
+
+
+ value="ASC">Up
+ value="DESC">Down
+
+
+
+ value="Id">ID
+ value="IsAdmin">IsAdmin
+ value="VPNId">VPNId
+ value="Vorname">First Name
+ value="Nachname">Last Name
+ value="Nickname">Nickname
+ value="Email">Email Address
+
+Search User: >
+
+
+
+
+";
+ if($by != "")
+ {
+ echo "ID IsAdmin VPNId Nickname Firstname Lastname Email Address
+ Novell Login Edit Delete
+ \n";
+ }
+// ------------------------------------------------ Mysql lesen
+ if ($result)
+ {
+ while ($ar=mysql_fetch_array($result,MYSQL_ASSOC))
+ {
+ echo "", $ar["Id"],
+ " ",$ar["IsAdmin"],
+ " ",$ar["VPNId"],
+ " ",$ar["Nickname"],
+ " ",$ar["Vorname"],
+ " ",$ar["Nachname"],
+ " ",$ar["Email"],
+ " ",$ar["NovLogin"],
+ " ",
+ "",
+ "",
+ " ",
+ "",
+ "",
+ " ",
+ "",
+ " ",
+ "",
+ " \n";
+
+ }
+ }
+ else
+ {
+ echo " ";
+ }
+ echo "
";
+ mysql_close();
+?>
+ Back
+
+
+
diff --git a/Admin/Modules/Usermanagement/index.php b/Admin/Modules/Usermanagement/index.php
new file mode 100755
index 0000000..4370272
--- /dev/null
+++ b/Admin/Modules/Usermanagement/index.php
@@ -0,0 +1,64 @@
+ 0)
+{
+ $moduleurl = substr($moduleurl,0,$urlcut);
+}
+else
+{
+ if(strpos($moduleurl, "?") == 0)
+ {
+ $moduleurl = $_SERVER["REQUEST_URI"]."?site=1";
+ }
+}
+
+$mode = $_REQUEST["uebergabe"];
+$status = $_REQUEST["uebergabe2"];
+
+echo" Home
+ | Add new User
+ | Edit User
+ | Delete User
+ | View Users
";
+switch($status)
+{
+ case 1:
+ echo "User added successfully! ";
+ break;
+ case 2:
+ echo "User edited successfully! ";
+ break;
+ case 3:
+ echo "User deleted successfully! ";
+ break;
+ default:
+ break;
+}
+
+switch($mode)
+{
+ case 1:
+ include ($_SERVER["DOCUMENT_ROOT"]."/Admin/Modules/Usermanagement/include/adduser_index.php");
+ break;
+ case 2:
+ include ($_SERVER["DOCUMENT_ROOT"]."/Admin/Modules/Usermanagement/include/edituser_index.php");
+ break;
+ case 3:
+ include ($_SERVER["DOCUMENT_ROOT"]."/Admin/Modules/Usermanagement/include/deleteuser_index.php");
+ break;
+ case 4:
+ include ($_SERVER["DOCUMENT_ROOT"]."/Admin/Modules/Usermanagement/include/viewuser_index.php");
+ break;
+ default:
+ echo"User Management
+ Choose an action:
+ # Add new User
+ # Edit User
+ # Delete User
+ # View Users
";
+ break;
+}
+?>
diff --git a/Admin/Modules/VPNconfig/config.inc b/Admin/Modules/VPNconfig/config.inc
new file mode 100755
index 0000000..89ed528
--- /dev/null
+++ b/Admin/Modules/VPNconfig/config.inc
@@ -0,0 +1,66 @@
+
diff --git a/Admin/Modules/VPNconfig/include/certs (Kopie).php b/Admin/Modules/VPNconfig/include/certs (Kopie).php
new file mode 100644
index 0000000..1251e13
--- /dev/null
+++ b/Admin/Modules/VPNconfig/include/certs (Kopie).php
@@ -0,0 +1,86 @@
+
+
+
+
+
+
+#
+
+Common Name
+Department
+e-mail
+Serial
+Status
+Download
+
+
+ 0 ? 0 : $openvpn['i']['loop']-1;
+if ($openvpn['i']['show']) {
+ $openvpn['i']['total'] = $openvpn['i']['loop'];
+ if ($openvpn['i']['total'] == 0)
+ $openvpn['i']['show'] = false;
+} else
+ $openvpn['i']['total'] = 0;
+if ($openvpn['i']['show']):
+
+ for ($openvpn['i']['index'] = $openvpn['i']['start'], $openvpn['i']['iteration'] = 1;
+ $openvpn['i']['iteration'] <= $openvpn['i']['total'];
+ $openvpn['i']['index'] += $openvpn['i']['step'], $openvpn['i']['iteration']++):
+$openvpn['i']['rownum'] = $openvpn['i']['iteration'];
+$openvpn['i']['index_prev'] = $openvpn['i']['index'] - $openvpn['i']['step'];
+$openvpn['i']['index_next'] = $openvpn['i']['index'] + $openvpn['i']['step'];
+$openvpn['i']['first'] = ($openvpn['i']['iteration'] == 1);
+$openvpn['i']['last'] = ($openvpn['i']['iteration'] == $openvpn['i']['total']);
+?>
+
+
+
+>
+
+
+'; ?># '; ?>'; ?>
+
+'; ?>'; ?>
+
+'; ?>'; ?>
+
+'; ?>'; ?>'; ?>'; ?>
+
+'; ?>'; ?>
+
+'; ?>'; ?>
+
+[ zip ]'; ?>
+ crt]'; ?>
+ key]'; ?>
+ csr]'; ?>
+
+'; ?>
+
+
+
+ There are no certificates made at the minute
+
+
+
diff --git a/Admin/Modules/VPNconfig/include/certs.php b/Admin/Modules/VPNconfig/include/certs.php
new file mode 100644
index 0000000..eb8364a
--- /dev/null
+++ b/Admin/Modules/VPNconfig/include/certs.php
@@ -0,0 +1,98 @@
+
+
+
+
+
+
+#
+
+Common Name
+Department
+e-mail
+Serial
+Status
+Download
+
+
+ 0 ? 0 : $openvpn['i']['loop']-1;
+if ($openvpn['i']['show']) {
+ $openvpn['i']['total'] = $openvpn['i']['loop'];
+ if ($openvpn['i']['total'] == 0)
+ $openvpn['i']['show'] = false;
+} else
+ $openvpn['i']['total'] = 0;
+if ($openvpn['i']['show']):
+
+ for ($openvpn['i']['index'] = $openvpn['i']['start'], $openvpn['i']['iteration'] = 1;
+ $openvpn['i']['iteration'] <= $openvpn['i']['total'];
+ $openvpn['i']['index'] += $openvpn['i']['step'], $openvpn['i']['iteration']++):
+$openvpn['i']['rownum'] = $openvpn['i']['iteration'];
+$openvpn['i']['index_prev'] = $openvpn['i']['index'] - $openvpn['i']['step'];
+$openvpn['i']['index_next'] = $openvpn['i']['index'] + $openvpn['i']['step'];
+$openvpn['i']['first'] = ($openvpn['i']['iteration'] == 1);
+$openvpn['i']['last'] = ($openvpn['i']['iteration'] == $openvpn['i']['total']);
+?>
+
+
+
+>
+
+
+';
+
+if ($openvpn['Certificates'][$openvpn['i']['index']]['Connected'] && $openvpn['Certificates'][$openvpn['i']['index']]['Status'] != 'R')
+{
+ echo '# ';
+}
+else
+{
+ echo ' ';
+}
+
+echo ''; ?>
+
+'; ?>'; ?>
+
+'; ?>'; ?>
+
+'; ?>'; ?>'; ?>'; ?>
+
+'; ?>'; ?>
+
+'; ?>'; ?>
+
+[ zip ]'; ?>
+ crt]'; ?>
+ key]'; ?>
+ csr]'; ?>
+
+'; ?>
+
+
+
+ There are no certificates made at the minute
+
+
+
diff --git a/Admin/Modules/VPNconfig/include/config-edit.php b/Admin/Modules/VPNconfig/include/config-edit.php
new file mode 100644
index 0000000..563ed05
--- /dev/null
+++ b/Admin/Modules/VPNconfig/include/config-edit.php
@@ -0,0 +1,41 @@
+ Die Daten wurden erfolgreich gespeichert!";
+ echo $check_ok;
+ }
+if ($_REQUEST["submit"] == "Speichern")
+ {
+ $fp = fopen($ovpnconfdir."/".$ovpnconffile,"w");
+ $data =$_REQUEST["inhalt"];
+ $data = str_replace("\r","",$data);
+ fputs($fp,$data);
+ fclose($fp);
+
+ echo " ";
+ $check_ok = " Ihre Daten wurden erfolgreich geändert! Bitte warten sie bis die Daten aktualisiert werden. ";
+ echo $check_ok;
+ }
+echo "
+
+";
+
+include($ovpnconfdir."/".$ovpnconffile);
+
+echo "
+
+
+
+
+ ";
+
+?>
diff --git a/Admin/Modules/VPNconfig/include/config.php b/Admin/Modules/VPNconfig/include/config.php
new file mode 100644
index 0000000..94459f1
--- /dev/null
+++ b/Admin/Modules/VPNconfig/include/config.php
@@ -0,0 +1,149 @@
+VPN Server is currently: running ";
+}
+else
+{
+ echo "VPN Server is currently: stopped ";
+}
+
+if ($_REQUEST["uebergabe3"]=="1")
+ {
+ echo "VPN Server restarted successfully! ";
+ echo " ";
+ }
+if ($_REQUEST["uebergabe3"]=="2")
+ {
+ echo "VPN Server started successfully! ";
+ echo " ";
+ }
+if ($_REQUEST["uebergabe3"]=="3")
+ {
+ echo "VPN Server stopped successfully! ";
+ echo " ";
+ }
+ ?>
+
+
+
+
+
+
+Server Settings
+
+
+Mode
+
+
+
+
+
+Uses device
+
+
+
+
+
+Listens on
+
+:
+ (
+)
+
+
+
+Maximum Clients
+
+
+
+
+Certificate Files
+
+
+DH
+
+ download]'; ?>does not exist]'; ?>
+
+
+
+
+CA Certificate
+
+ download]'; ?>does not exist]'; ?>
+
+
+
+
+Server Certificate
+
+ download]'; ?>does not exist]'; ?>
+
+
+
+
+Server Private Key
+
+ download]'; ?>does not exist]'; ?>
+
+
+
+
+TLS Authentication
+
+ download]'; ?>does not exist]'; ?>
+
+
+
+
+CRL Verify File
+
+ download]'; ?>does not exist]'; ?>
+
+
+
diff --git a/Admin/Modules/VPNconfig/include/functions.inc b/Admin/Modules/VPNconfig/include/functions.inc
new file mode 100755
index 0000000..870fa96
--- /dev/null
+++ b/Admin/Modules/VPNconfig/include/functions.inc
@@ -0,0 +1,251 @@
+ $PluginData)
+ {
+ // Check if the config.inc for a plugin exists
+ if (file_exists ($_SERVER["DOCUMENT_ROOT"]."/Admin/Modules/VPNconfig/plugins/". $PluginData['Folder'] ."/config.inc"))
+ {
+ include ($_SERVER["DOCUMENT_ROOT"]."/Admin/Modules/VPNconfig/plugins/". $PluginData['Folder'] ."/config.inc");
+
+ // Check if claimed inc files do exist
+ if (isset ($config['Plugins'][$PluginName]['Action']['Include']) &&
+ !file_exists ($_SERVER["DOCUMENT_ROOT"]."/Admin/Modules/VPNconfig/plugins/". $PluginData['Folder'] ."/".
+ $config['Plugins'][$PluginName]['Action']['Include']))
+ $config['Plugins'][$PluginName]['Action']['Include'] = NULL;
+
+ if (isset ($config['Plugins'][$PluginName]['Left']['Menu']) &&
+ !file_exists ($_SERVER["DOCUMENT_ROOT"]."/Admin/Modules/VPNconfig/plugins/". $PluginData['Folder'] ."/".
+ $config['Plugins'][$PluginName]['Left']['Menu']))
+ $config['Plugins'][$PluginName]['Left']['Menu'] = NULL;
+
+ if (isset ($config['Plugins'][$PluginName]['Left']['Status']) &&
+ !file_exists ($_SERVER["DOCUMENT_ROOT"]."/Admin/Modules/VPNconfig/plugins/". $PluginData['Folder'] ."/".
+ $config['Plugins'][$PluginName]['Left']['Status']))
+ $config['Plugins'][$PluginName]['Left']['Status'] = NULL;
+ }
+ }
+ }
+}
+
+// ----------------------------------------------
+function seconds_string ($seconds, $periods = null)
+{
+ $Wanted = '';
+
+ // Define time periods
+ if (!is_array ($periods))
+ {
+ $periods = array (
+ 'years' => 31556926,
+ 'months' => 2629743,
+ 'weeks' => 604800,
+ 'days' => 86400,
+ 'hours' => 3600,
+ 'minutes' => 60,
+ 'seconds' => 1
+ );
+ }
+
+ // Wanted
+ if (empty ($seconds))
+ { $Wanted = ''; }
+ else
+ {
+ // Loop
+ $seconds = (int) $seconds;
+ foreach ($periods as $period => $value)
+ {
+ $count = floor ($seconds / $value);
+
+ if ($count == 0)
+ continue;
+ elseif ($count == 1)
+ $Wanted .= ($count . ' ' . substr ($period, 0, strlen ($period) - 1) . ' ');
+ else
+ $Wanted .= ($count . ' ' . $period . ' ');
+
+ $seconds = $seconds % $value;
+ }
+ }
+
+ return rtrim ($Wanted);
+}
+
+// ----------------------------------------------
+function chomp (&$string)
+{
+ if (is_array ($string))
+ {
+ foreach ($string as $i => $val)
+ { $endchar = chomp ($string[$i]); }
+ }
+ else
+ {
+ $endchar = substr ("$string", strlen("$string") - 1, 1);
+ if ($endchar == "\n")
+ { $string = substr ("$string", 0, -1); }
+ }
+ return $endchar;
+}
+
+// ----------------------------------------------
+function str_strip_spaces ($aline)
+{
+ while (strpos ($aline, "\t") != FALSE) $aline = str_replace ("\t", ' ', $aline);
+ while (strpos ($aline, ' ') != FALSE) $aline = str_replace (' ', ' ', $aline);
+
+ return $aline;
+}
+
+// ----------------------------------------------
+// Returns $afile only if it is the full name, or prefixed by $apath
+function str_file_fullname ($apath, $afile)
+{
+ if (substr ($afile, 0, 1) != '/')
+ $afile = ($apath . $afile);
+
+ return $afile;
+}
+
+// ----------------------------------------------
+// Returns $afile only if it is the full name, or prefixed by $apath
+function str_openssldata_to_string ($adata)
+{
+ $Return = '';
+ $amonth = array ('Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec');
+
+ if (substr ($adata, -1, 1) == 'Z')
+ {
+ $Return = sprintf ("%s %d %s%02d, %02d:%02d:%02d",
+ $amonth [substr ($adata, 2, 2) - 1],
+ substr ($adata, 4, 2),
+ (substr ($adata, 0, 2) > 50 ? '19' : '20'),
+ substr ($adata, 0, 2),
+ substr ($adata, 6, 2),
+ substr ($adata, 8, 2),
+ substr ($adata, 10, 2));
+ }
+
+ return $Return;
+}
+
+// ----------------------------------------------
+function str_get_sometag ($aline, $sometag)
+{
+ if (eregi ($sometag, $aline, $anarray))
+ return $anarray[1];
+ else
+ return '';
+}
+
+// ----------------------------------------------
+// Writes content into file
+// Optionally sames old file into backup file.
+// The Backup File has to reside on the same partition!
+function writefile ($afile, $adata, $abackup = NULL)
+{
+ // Move the old file into Backup one
+ if ($abackup != NULL)
+ {
+ if (file_exists ($afile))
+ {
+ if (file_exists ($abackup))
+ if (!unlink ($abackup))
+ exit;
+ if (!rename ($afile, $abackup))
+ exit;
+ }
+ }
+
+ $fp = fopen ($afile, "w", 0);
+ if (!$fp)
+ exit;
+
+ fputs ($fp, $adata);
+ fclose ($fp);
+}
+
+
+// ----------------------------------------------
+// Guess the full file name
+function if_file_exists (&$sFileName, $bFix = FALSE)
+{
+ global $config;
+
+ if (strpos ($sFileName, '/') == FALSE)
+ {
+ $sLongFileName = $config['openvpn']['folder'] . $sFileName;
+ if (file_exists ($sLongFileName) && $bFix)
+ $sFileName = $sLongFileName;
+ }
+
+ return file_exists ($sFileName);
+}
+
+// ----------------------------------------------
+function zlib_check_functions ()
+{
+ $Result = '';
+ $ZLibs = array
+ (
+ 'gzcompress'
+ );
+
+ foreach ($ZLibs as $Function)
+ {
+ $Result .= $Function . ': ' . (function_exists ($Function) ?
+ 'OK ' :
+ 'DOES NOT EXIST ') . ' ';
+ }
+
+ return $Result;
+}
+
+// ----------------------------------------------
+function html_dump ($aname, $athing)
+{
+ echo ''. $aname .' : ';
+ print_r ($athing);
+ echo " \n";
+}
+
+// ----------------------------------------------
+function html_error ($amessage, $ifexit = true)
+{
+ global $config;
+ echo $amessage;
+ if ($ifexit)
+ exit;
+}
+
+// ----------------------------------------------
+function html_postredir ($url)
+{
+ header ('HTTP/1.1 303 REDIRECT');
+ header ('Location: '. $url);
+#header ('Status: 303'); // if 1st header generates 500, then commend it out and use this one as 2nd
+}
+
+// ----------------------------------------------
+// ----------------------------------------------
+function html_download ($sFile, $sName)
+{
+ header ('Content-type: application/octet-stream');
+ header ('Content-Disposition: attachment; filename="'. $sName . '"');
+ readfile ($sFile);
+}
+
+// ----------------------------------------------
+function html_download_data ($sData, $sName)
+{
+ header ('Content-type: application/octet-stream');
+ header ('Content-Disposition: attachment; filename="'. $sName . '"');
+ echo $sData;
+}
+?>
diff --git a/Admin/Modules/VPNconfig/include/getfile.php b/Admin/Modules/VPNconfig/include/getfile.php
new file mode 100755
index 0000000..69081ef
--- /dev/null
+++ b/Admin/Modules/VPNconfig/include/getfile.php
@@ -0,0 +1,74 @@
+addFile (implode ('', file ($File2zip)), $File2name);
+ }
+ }
+
+ // Add the extra files
+ foreach ($config['Download']['ZIP']['Others'] as $File2zip)
+ {
+ if (is_file (db_getconfval("publicdown")."/". $File2zip))
+ $zipData->addFile (implode ('', file (db_getconfval("publicdown")."/". $File2zip)), $File2zip);
+ }
+
+ // Flush the ZIP file to the client
+ html_download_data ($zipData -> file (), openssl_hex_serial ($GETidDEC[0]) .'.zip');
+ //echo " file () target=_blank>Direktlink zur Datei
+}
+else
+{
+// echo "ID: " .$GETidDEC[0] . "Ext: " .$sExt;
+ if (($sCertificateFile = openssl_get_filename ($GETidDEC[0], $sExt)) == '') html_error ("Can't find requested file..FU");
+
+ // Cheat the extension
+ if ($sExt == '.pem') $sExt = '.crt';
+
+ // Download
+ html_download ($sCertificateFile, openssl_hex_serial ($GETidDEC[0]) . $sExt);
+ //html_dump ('$GLOBALS', $GLOBALS);
+}
+
+?>
diff --git a/Admin/Modules/VPNconfig/include/ipp.php b/Admin/Modules/VPNconfig/include/ipp.php
new file mode 100644
index 0000000..b25b7f9
--- /dev/null
+++ b/Admin/Modules/VPNconfig/include/ipp.php
@@ -0,0 +1,41 @@
+ Die Daten wurden erfolgreich gespeichert!";
+ echo $check_ok;
+ }
+if ($_REQUEST["submit"] == "Speichern")
+ {
+ $fp = fopen($sqddir."/ipp.txt","w");
+ $data =$_REQUEST["inhalt"];
+ $data = str_replace("\r","",$data);
+ fputs($fp,$data);
+ fclose($fp);
+
+ echo " ";
+ $check_ok = " Ihre Daten wurden erfolgreich geändert! Bitte warten sie bis die Daten aktualisiert werden. ";
+ echo $check_ok;
+ }
+echo "
+
+";
+
+include($ovpnconfdir."/ipp.txt");
+
+echo "
+
+
+
+
+ ";
+
+?>
diff --git a/Admin/Modules/VPNconfig/include/openssl-functions.inc b/Admin/Modules/VPNconfig/include/openssl-functions.inc
new file mode 100755
index 0000000..a10701a
--- /dev/null
+++ b/Admin/Modules/VPNconfig/include/openssl-functions.inc
@@ -0,0 +1,377 @@
+: ' . (function_exists ($Function) ?
+ 'OK ' :
+ 'DOES NOT EXIST ') . ' ';
+ }
+
+ return $Result;
+}
+
+// ----------------------------------------------
+function openssl_load_database ($afile = '')
+{
+ global $config;
+ global $openssl;
+
+ $afile = ($afile == '' ? $config['openssl']['database'] : $afile);
+ $lines = file ($afile);
+
+ if (!is_array ($lines))
+ exit;
+
+ foreach ($lines as $line_num => $line)
+ {
+ chomp ($line);
+ $linetokens = explode ("\t", $line);
+
+ // Ensure that all the fields are set
+ if (count ($linetokens) == 6)
+ {
+ // Decode the openssl's database. See apps/apps.h
+ $openssl['Database'][] = array ('Status' => $linetokens[0],
+ 'ExpDate' => $linetokens[1],
+ 'RevDate' => $linetokens[2],
+ 'Serial' => $linetokens[3],
+ 'File' => $linetokens[4],
+ 'Name' => $linetokens[5],
+ 'Country' => openssl_get_country ($linetokens[5]),
+ 'State' => openssl_get_state ($linetokens[5]),
+ 'City' => openssl_get_city ($linetokens[5]),
+ 'Company' => openssl_get_company ($linetokens[5]),
+ 'Department' => openssl_get_department ($linetokens[5]),
+ 'CN' => openssl_get_CN ($linetokens[5]),
+ 'Email' => openssl_get_email ($linetokens[5])
+ );
+ }
+ }
+}
+
+// ----------------------------------------------
+function openssl_write_database ($afile = '')
+{
+ global $config;
+ global $openssl;
+
+ $afile = ($afile == '' ? $config['openssl']['database'] : $afile);
+
+ $atext = '';
+ for ($i = 0; $i < count ($openssl['Database']); $i++)
+ {
+ $atext .= ($atext == '' ? '' : "\n");
+ $atext .= $openssl['Database'][$i]['Status'] ."\t".
+ $openssl['Database'][$i]['ExpDate'] ."\t".
+ $openssl['Database'][$i]['RevDate'] ."\t".
+ $openssl['Database'][$i]['Serial'] ."\t".
+ $openssl['Database'][$i]['File'] ."\t".
+ $openssl['Database'][$i]['Name'];
+ }
+
+ writefile ($afile, $atext, $afile .'.old');
+}
+
+// ----------------------------------------------
+function openssl_write_database_attr ($atext = '', $afile = '')
+{
+ global $config;
+ global $openssl;
+
+ $afile = ($afile == '' ? $config['openssl']['database'] : $afile) .'.attr';
+ $atext = ($atext == '' ? "unique_subject = yes\n" : $atext);
+
+ if (file_exists ($afile))
+ {
+ ob_start ();
+ readfile ($afile);
+ $atext = ob_get_contents ();
+ ob_end_clean ();
+ }
+
+ writefile ($afile, $atext, $afile .'.old');
+}
+
+// ----------------------------------------------
+// Returns the PEM file with spaces reduced and replaced to
+function openssl_load_cert ($anid)
+{
+ global $config;
+
+ do
+ {
+ $lines = file ($config['openssl']['pubfolder'] . $anid . '.pem');
+
+ if (!is_array ($lines))
+ {
+ $Return = '';
+ break;
+ }
+
+ foreach ($lines as $line_num => $line)
+ {
+ chomp ($line);
+ $Return[] = str_replace (' ', ' ', htmlspecialchars (str_replace (' ', ' ', $line)));
+ }
+ } while (FALSE);
+
+ return $Return;
+}
+
+// ----------------------------------------------
+function openssl_load_serial ($afile = '')
+{
+ global $config;
+
+ $afile = ($afile == '' ? $config['openssl']['serial'] : $afile);
+
+ $lines = file ($afile);
+
+ if (!is_array ($lines))
+ exit;
+
+ $Return = sscanf ($lines[0], "%X");
+
+ return $Return[0];
+}
+
+// ----------------------------------------------
+function openssl_write_serial ($iNumber, $afile = '')
+{
+ global $config;
+
+ $afile = ($afile == '' ? $config['openssl']['serial'] : $afile);
+
+ writefile ($afile, openssl_hex_serial ($iNumber) . "\n", $afile .'.old');
+}
+
+// ----------------------------------------------
+// Supports up to 999,999 serials
+function openssl_hex_serial ($iNumber)
+{
+ if ($iNumber < 100)
+ $sString = sprintf ("%02X", $iNumber);
+ elseif ($iNumber < 10000)
+ $sString = sprintf ("%04X", $iNumber);
+ else
+ $sString = sprintf ("%06X", $iNumber);
+
+ return $sString;
+}
+
+// ----------------------------------------------
+// Builds User Private Key, CSR and Public Certificate
+function openssl_build_key (&$anoutput, $adn, $validdays = NULL)
+{
+ global $config;
+ global $openssl;
+
+ $anoutput = '';
+ $Return = FALSE;
+
+ // Allow to override default value
+ $validdays = ($validdays == NULL ? $config['openssl']['default']['expiration'] : $validdays);
+
+ do
+ {
+ if (!isset ($adn) ||
+ !isset ($adn['countryName']) ||
+ !isset ($adn['stateOrProvinceName']) ||
+ !isset ($adn['localityName']) ||
+ !isset ($adn['organizationName']) ||
+ !isset ($adn['organizationalUnitName']) ||
+ !isset ($adn['commonName']) ||
+ !isset ($adn['emailAddress'])
+ )
+ { $anoutput .= "- ERROR on ". __LINE__ ." line: incomplete DN information\n"; break; }
+ $anoutput .= "+ OK got the valid input\n";
+
+ // Get the new User Private Key
+ $UserPrivKey = openssl_pkey_new (array($config['openssl']['config'],0));
+ if ($UserPrivKey == FALSE)
+ { $anoutput .= "- ERROR on ". (__LINE__ - 2) ." line (openssl_pkey_new):\n ". openssl_error_strings () ." (that might usually mean that the openssl.cnf file is unavailable)"; break; }
+ $anoutput .= "+ OK got the User Private Key\n";
+
+ // Generate the User Certificate Request
+ $UserReq = openssl_csr_new ($adn,
+ $UserPrivKey,
+ $config['openssl']['config']);
+ if ($UserReq == FALSE)
+ { $anoutput .= "- ERROR on ". (__LINE__ - 4) ." line (openssl_csr_new):\n ". openssl_error_strings (); break; }
+ $anoutput .= "+ OK generated the User Certificate Request\n";
+
+ // Read the openssl serial
+ $CAserial = openssl_load_serial ($config['openssl']['serial']);
+ $anoutput .= "+ OK read current openssl serial (". openssl_hex_serial ($CAserial) .")\n";
+
+ $UserPubCertFile = $config['openssl']['pubfolder'] . openssl_hex_serial ($CAserial) .'.pem';
+ $UserCertReqFile = $config['openssl']['reqfolder'] . openssl_hex_serial ($CAserial) .'.csr';
+ $UserPrivKeyFile = $config['openssl']['prvfolder'] . openssl_hex_serial ($CAserial) .'.key';
+
+ // Read the openssl database
+ openssl_load_database ($config['openssl']['database']);
+ $anoutput .= "+ OK read the openssl database (". count ($openssl['Database']) ." items)\n";
+
+ // Get CA's Private Key
+ $CAPrivKey = openssl_pkey_get_private ($config['openssl']['CA']['priv']);
+
+ if ($CAPrivKey == FALSE)
+ { $anoutput .= "- ERROR on ". (__LINE__ - 2) ." line (openssl_pkey_get_private)\n ". openssl_error_strings (); break; }
+ $anoutput .= "+ OK read the CA Private Key\n";
+
+ // Get a CA-signed cert that lasts for 1 year
+ $UserPubCert = openssl_csr_sign ($UserReq,
+ $config['openssl']['CA']['pub'],
+ $CAPrivKey,
+ $validdays,
+ $config['openssl']['config'],
+ $CAserial);
+ if ($UserPubCert == FALSE)
+ { $anoutput .= "- ERROR on ". (__LINE__ - 7) ." line (openssl_csr_sign)\n ". openssl_error_strings (); break; }
+ $anoutput .= "+ OK signed the User Certificate Request with CA Private Key\n";
+
+ // Add the new row into openssl database
+ $openssl['Database'][] = array ('Status' => 'V',
+ 'ExpDate' => date ('ymdHis',
+ time() +
+ date ('Z') +
+ ($validdays * 24 * 60 * 60)) .'Z',
+ 'RevDate' => '',
+ 'Serial' => openssl_hex_serial ($CAserial),
+ 'File' => openssl_hex_serial ($CAserial) .'.crt',
+ 'Name' => openssl_make_name ($adn)
+ );
+
+ // Create files
+
+ $OldUMask = umask (0007);
+
+ // Write User Private Key
+ if (!openssl_pkey_export_to_file ($UserPrivKey, $UserPrivKeyFile, NULL, $config['openssl']['config']))
+ { $anoutput .= "- ERROR on ". (__LINE__ - 1) ." line (openssl_pkey_export_to_file)\n ". openssl_error_strings () ." (That might mean that the key folder is not write enabled for www user)"; break; }
+ $anoutput .= "+ OK wrote User Private Key into file $UserPrivKeyFile\n";
+
+ // Write User Public Certificate
+ if (!openssl_x509_export_to_file ($UserPubCert, $UserPubCertFile, FALSE))
+ { $anoutput .= "- ERROR on ". (__LINE__ - 1) ." line (openssl_x509_export_to_file)\n ". openssl_error_strings (); break; }
+ $anoutput .= "+ OK wrote User Public Certificate into file $UserPubCertFile\n";
+
+ // Write User Certificate Request
+ if (!openssl_csr_export_to_file ($UserReq, $UserCertReqFile))
+ { $anoutput .= "- ERROR on ". (__LINE__ - 1) ." line (openssl_csr_export_to_file)\n ". openssl_error_strings (); break; }
+ $anoutput .= "+ OK wrote User Certificate Request into file $UserCertReqFile\n";
+
+ // Write new openssl database
+ openssl_write_database ($config['openssl']['database']);
+ openssl_write_database_attr ('', $config['openssl']['database']);
+ $anoutput .= "+ OK wrote new openssl database\n";
+
+ // Write new openssl serial
+ openssl_write_serial ($CAserial + 1, $config['openssl']['serial']);
+ $anoutput .= "+ OK wrote new openssl serial\n";
+
+ umask ($OldUMask);
+
+ $Return = openssl_hex_serial ($CAserial);
+ } while (FALSE);
+
+ return $Return;
+}
+
+// ----------------------------------------------
+function openssl_error_strings ()
+{
+ $sString = '';
+ while ($msg = openssl_error_string ())
+ $sString .= $msg ."\n";
+
+ return $sString;
+}
+
+// ----------------------------------------------
+function openssl_make_name ($adn)
+{
+ $sString = '';
+
+ if (strlen ($adn['countryName']) > 0) $sString .= '/C=' . $adn['countryName'];
+ if (strlen ($adn['stateOrProvinceName']) > 0) $sString .= '/ST=' . $adn['stateOrProvinceName'];
+ if (strlen ($adn['localityName']) > 0) $sString .= '/L=' . $adn['localityName'];
+ if (strlen ($adn['organizationName']) > 0) $sString .= '/O=' . $adn['organizationName'];
+ if (strlen ($adn['organizationalUnitName']) > 0) $sString .= '/OU=' . $adn['organizationalUnitName'];
+ if (strlen ($adn['commonName']) > 0) $sString .= '/CN=' . $adn['commonName'];
+ if (strlen ($adn['emailAddress']) > 0) $sString .= '/emailAddress='. $adn['emailAddress'];
+
+ return $sString;
+}
+
+// ----------------------------------------------
+function openssl_get_country ($aline)
+{ return str_get_sometag ($aline . '/', '\/C=([^/]*)\/'); }
+
+// ----------------------------------------------
+function openssl_get_state ($aline)
+{ return str_get_sometag ($aline . '/', '\/ST=([^/]*)\/'); }
+
+// ----------------------------------------------
+function openssl_get_city ($aline)
+{ return str_get_sometag ($aline . '/', '\/L=([^/]*)\/'); }
+
+// ----------------------------------------------
+function openssl_get_company ($aline)
+{ return str_get_sometag ($aline . '/', '\/O=([^/]*)\/'); }
+
+// ----------------------------------------------
+function openssl_get_department ($aline)
+{ return str_get_sometag ($aline . '/', '\/OU=([^/]*)\/'); }
+
+// ----------------------------------------------
+function openssl_get_CN ($aline)
+{ return str_get_sometag ($aline . '/', '\/CN=([^/]*)\/'); }
+
+// ----------------------------------------------
+function openssl_get_email ($aline)
+{ return str_get_sometag ($aline . '/', '\/emailAddress=([^/]*)\/'); }
+
+// ----------------------------------------------
+// Guess the full file name
+function openssl_get_filename ($iSerial, $sExt)
+{
+ global $config;
+
+ $sReturn = $config['openssl']['folder'] . openssl_hex_serial ($iSerial) . $sExt;
+ if (!file_exists ($sReturn))
+ {
+ $sReturn = $config['openssl']['pubfolder'] . openssl_hex_serial ($iSerial) . $sExt;
+ if (!file_exists ($sReturn))
+ {
+ $sReturn = $config['openssl']['reqfolder'] . openssl_hex_serial ($iSerial) . $sExt;
+ if (!file_exists ($sReturn))
+ {
+ $sReturn = $config['openssl']['prvfolder'] . openssl_hex_serial ($iSerial) . $sExt;
+ if (!file_exists ($sReturn))
+ {
+ $sReturn = '';
+ }
+ }
+ }
+ }
+
+ return $sReturn;
+}
+
+
+?>
diff --git a/Admin/Modules/VPNconfig/include/openvpn-functions.inc b/Admin/Modules/VPNconfig/include/openvpn-functions.inc
new file mode 100755
index 0000000..bbf38a5
--- /dev/null
+++ b/Admin/Modules/VPNconfig/include/openvpn-functions.inc
@@ -0,0 +1,176 @@
+ $line)
+ {
+ chomp ($line);
+ $linetokens = explode (' ', str_strip_spaces ($line));
+
+ switch (strtolower ($linetokens[0]))
+ {
+ case 'local': $openvpn['Server']['Local'] = $linetokens[1]; break;
+ case 'proto': $openvpn['Server']['Proto'] = $linetokens[1]; break;
+ case 'port': $openvpn['Server']['Port'] = $linetokens[1]; break;
+ case 'dev': $openvpn['Server']['Dev'] = $linetokens[1]; break;
+ case 'mode': $openvpn['Server']['Mode'] = $linetokens[1]; break;
+ case 'max-clients': $openvpn['Server']['MaxClients'] = $linetokens[1]; break;
+ case 'status':
+ $openvpn['Server']['Status']['Exists'] = if_file_exists ($linetokens[1], true);
+ $openvpn['Server']['Status']['File'] = $linetokens[1];
+ break;
+ case 'status-version': $openvpn['Server']['Status']['Version'] = $linetokens[1]; break;
+ case 'ca':
+ $openssl['Server']['CA']['Exists'] = if_file_exists ($linetokens[1], true);
+ $openssl['Server']['CA']['File'] = $linetokens[1];
+ break;
+ case 'dh':
+ $openvpn['Server']['DH']['Exists'] = if_file_exists ($linetokens[1], true);
+ $openvpn['Server']['DH']['File'] = $linetokens[1];
+ break;
+ case 'cert':
+ $openvpn['Server']['Certificate']['Exists'] = if_file_exists ($linetokens[1], true);
+ $openvpn['Server']['Certificate']['File'] = $linetokens[1];
+ break;
+ case 'key':
+ $openvpn['Server']['Private_Key']['Exists'] = if_file_exists ($linetokens[1], true);
+ $openvpn['Server']['Private_Key']['File'] = $linetokens[1];
+ break;
+ case 'tls-auth':
+ $openvpn['Server']['TLS_Auth']['Exists'] = if_file_exists ($linetokens[1], true);
+ $openvpn['Server']['TLS_Auth']['File'] = $linetokens[1];
+ $openvpn['Server']['TLS_Auth']['Key'] = $linetokens[2];
+ break;
+ case 'crl-verify':
+ $openvpn['Server']['CRL_Verify']['Exists'] = if_file_exists ($linetokens[1], true);
+ $openvpn['Server']['CRL_Verify']['File'] = $linetokens[1];
+ break;
+ }
+ }
+}
+
+// ----------------------------------------------
+function openvpn_load_status ()
+{
+ global $config;
+ global $openvpn;
+
+ $stop_reading = FALSE;
+
+ if (!isset ($openvpn['Server']['Status']['File']))
+ {
+ echo "Config file not found";
+ exit;
+ }
+ $lines = file (str_file_fullname ($config['openvpn']['folder'], $openvpn['Server']['Status']['File']));
+
+ if (!is_array ($lines))
+ {
+ echo "Status file empty";
+ exit;
+ }
+
+ foreach ($lines as $line_num => $line)
+ {
+ chomp ($line);
+ $linetokens = explode (',', $line);
+
+ if ($linetokens[0] == 'TITLE')
+ $openvpn['Server']['Title'] = $linetokens[1];
+ else if ($linetokens[0] == 'TIME')
+ {
+ $openvpn['Server']['DateTime'] = $linetokens[1];
+ $openvpn['Server']['Time'] = $linetokens[2];
+ }
+ else if ($linetokens[0] == 'HEADER' && $linetokens[1] == 'CLIENT_LIST')
+ {
+ // We will need to know what field is what ?
+ }
+ else if ($linetokens[0] == 'HEADER' && $linetokens[1] == 'ROUTING_TABLE')
+ {
+ // We will need to know what field is what ?
+ }
+ else if ($linetokens[0] == 'CLIENT_LIST')
+ {
+ $openvpn['Client'][] = array ('CN' => str_replace ('_', ' ', $linetokens[1]),
+ 'REALADDR' => $linetokens[2],
+ 'VIRTADDR' => $linetokens[3],
+ 'BYTESRCV' => $linetokens[4],
+ 'BYTESSND' => $linetokens[5],
+ 'SINCE' => $linetokens[6],
+ 'SINCEUT' => $linetokens[7],
+ 'Seconds_Ago' => seconds_string (time () - $linetokens[7])
+ );
+ }
+ else if ($linetokens[0] == 'ROUTING_TABLE')
+ {
+ $openvpn['Routing'][] = array ('VIRTADDR' => $linetokens[1],
+ 'CN' => str_replace ('_', ' ', $linetokens[2]),
+ 'REALADDR' => $linetokens[3],
+ 'LAST' => $linetokens[4],
+ 'Seconds_Ago' => seconds_string (time () - $linetokens[4])
+ );
+ }
+ }
+}
+
+// ----------------------------------------------
+/*function openvpn_find_connected ()
+{
+ global $openvpn;
+ global $openssl;
+
+ // find who is connected
+ if (isset ($openvpn['Client']))
+ $cnconnected = count ($openvpn['Client']);
+ else
+ $cnconnected = 0;
+ $cntotal = count ($openssl['Database']);
+
+ if ($cnconnected > 0)
+ for ($i = 0; $i < $cnconnected; $i++)
+ for ($j = 0; $j < $cntotal; $j++)
+ if ($openvpn['Client'][$i]['CN'] == $openssl['Database'][$j]['CN'])
+ {
+ $openssl['Database'][$j]['Connected'] = true;
+ break;
+ }
+}*/
+
+function openvpn_find_connected ()
+{
+ global $openvpn;
+ global $openssl;
+
+ // find who is connected
+ if (isset ($openvpn['Client']))
+ $cnconnected = count ($openvpn['Client']);
+ else
+ $cnconnected = 0;
+ $cntotal = count ($openssl['Database']);
+
+ if ($cnconnected > 0)
+ {
+ for ($i = 0; $i < $cntotal; $i++)
+ {
+ for ($j = 0; $j < $cnconnected; $j++)
+ {
+ if ($openvpn['Client'][$j]['CN'] == $openssl['Database'][$i]['CN'] && $openssl['Database'][$i]['Status'] != "R")
+ {
+ $openssl['Database'][$i]['Connected'] = true;
+ // break;
+ }
+ }
+ }
+ }
+}
+?>
diff --git a/Admin/Modules/VPNconfig/include/restartvpn.php b/Admin/Modules/VPNconfig/include/restartvpn.php
new file mode 100755
index 0000000..23d51e5
--- /dev/null
+++ b/Admin/Modules/VPNconfig/include/restartvpn.php
@@ -0,0 +1,11 @@
+
diff --git a/Admin/Modules/VPNconfig/include/startvpn.php b/Admin/Modules/VPNconfig/include/startvpn.php
new file mode 100755
index 0000000..bfc932e
--- /dev/null
+++ b/Admin/Modules/VPNconfig/include/startvpn.php
@@ -0,0 +1,11 @@
+
diff --git a/Admin/Modules/VPNconfig/include/status.php b/Admin/Modules/VPNconfig/include/status.php
new file mode 100644
index 0000000..b16840c
--- /dev/null
+++ b/Admin/Modules/VPNconfig/include/status.php
@@ -0,0 +1,108 @@
+
+
+
+
+
+
+
+
+
+
+
+ Server Status
+
+
+
+
+ The OpenVPN server version is
+
+
+
+
+ The last status was recorded at
+
+
+
+
+ ';
+ elseif ($openvpn['Client'] == 1)
+ echo 'Connected 1 client';
+ elseif ($openvpn['Client'] > 1)
+ {
+ echo 'Connected ';
+ echo count($openvpn['Client']);
+ echo ' clients';
+ }?>
+
+
+
+
+ OpenSSL has
+ ';
+ elseif (count($openssl['Database']) == 1)
+ {
+ echo '1 certificate ';
+ }
+ elseif (count($openssl['Database']) > 1)
+ {
+ echo '';
+ echo count($openssl['Database']);
+ echo ' certificates ';
+ }?>
+
+
+
+
+
+
+
+
+ #
+ Common Name
+ Connected since
+ Connected Time
+ Virtual Address
+ Real Address
+ Upload
+ Download
+
+
+ '.$count.'
+ '.$client["CN"].'
+ '.$client["SINCE"].'
+ '.$client["Seconds_Ago"].'
+ '.$client["VIRTADDR"].'
+ '.$client["REALADDR"].'
+ '.$client["BYTESRCV"].'
+ '.$client["BYTESSND"].'
+ ';
+ }
+ ?>
+
+
+
+
diff --git a/Admin/Modules/VPNconfig/include/stopvpn.php b/Admin/Modules/VPNconfig/include/stopvpn.php
new file mode 100755
index 0000000..60bb00c
--- /dev/null
+++ b/Admin/Modules/VPNconfig/include/stopvpn.php
@@ -0,0 +1,11 @@
+
diff --git a/Admin/Modules/VPNconfig/include/sys.php b/Admin/Modules/VPNconfig/include/sys.php
new file mode 100644
index 0000000..a3f039f
--- /dev/null
+++ b/Admin/Modules/VPNconfig/include/sys.php
@@ -0,0 +1,31 @@
+
+
+
+
+
+PHP Libraries
+
+
+PHP5 OpenSSL Functions
+
+
+
+
+
+PHP5 ZLib Functions
+
+
+
+
diff --git a/Admin/Modules/VPNconfig/include/viewcert.php b/Admin/Modules/VPNconfig/include/viewcert.php
new file mode 100644
index 0000000..aae9fc7
--- /dev/null
+++ b/Admin/Modules/VPNconfig/include/viewcert.php
@@ -0,0 +1,128 @@
+
+
+
+
+Certificate Information
+
+
+Serial
+
+
+
+
+
+Status
+'; ?>'; ?>
+
+
+
+
+'; ?>
+
+ '; ?>
+
+
+
+
+Common Name
+
+
+
+
+
+e-mail
+'; ?>'; ?> '; ?>
+
+
+
+
+Country
+
+
+
+
+
+State or Province
+
+
+
+
+
+City
+
+
+
+
+
+Company
+
+
+
+
+
+Department
+
+
+
+
+Certificate Files
+
+
+Public Certificate
+Download'; ?>
+
+
+
+
+Private Key
+Download'; ?>
+
+
+
+
+Certificate Request
+Download'; ?>
+
+
+
+
+Archive
+Download'; ?>
+
+
+
+
diff --git a/Admin/Modules/VPNconfig/include/zip.lib.php b/Admin/Modules/VPNconfig/include/zip.lib.php
new file mode 100755
index 0000000..8df2216
--- /dev/null
+++ b/Admin/Modules/VPNconfig/include/zip.lib.php
@@ -0,0 +1,113 @@
+
+* http://www.zend.com/codex.php?id=535&single=1
+*
+* Denis125
+* http://www.zend.com/codex.php?id=470&single=1
+*
+* Peter Listiak
+*
+* PK ZIP
+* http://www.pkware.com/appnote.txt
+*/
+
+class zipfile
+{
+ var $datasec = array ();
+ var $ctrl_dir = array ();
+ var $eof_ctrl_dir = "\x50\x4b\x05\x06\x00\x00\x00\x00";
+ var $old_offset = 0;
+
+ function unix2DosTime ($unixtime = 0)
+ {
+ $timearray = ($unixtime == 0) ?
+ getdate () :
+ getdate ($unixtime);
+
+ if ($timearray['year'] < 1980)
+ {
+ $timearray['year'] = 1980;
+ $timearray['mon'] = 1;
+ $timearray['mday'] = 1;
+ $timearray['hours'] = 0;
+ $timearray['minutes'] = 0;
+ $timearray['seconds'] = 0;
+ }
+
+ return (($timearray['year'] - 1980) << 25) |
+ ($timearray['mon'] << 21) |
+ ($timearray['mday'] << 16) |
+ ($timearray['hours'] << 11) |
+ ($timearray['minutes'] << 5) |
+ ($timearray['seconds'] >> 1);
+ }
+
+ function addFile ($data, $name, $time = 0)
+ {
+ $name = str_replace ('\\', '/', $name);
+
+ $dtime = dechex ($this->unix2DosTime ($time));
+ $hexdtime = '\x' . $dtime[6] . $dtime[7] .
+ '\x' . $dtime[4] . $dtime[5] .
+ '\x' . $dtime[2] . $dtime[3] .
+ '\x' . $dtime[0] . $dtime[1];
+ eval ('$hexdtime = "' . $hexdtime . '";');
+
+ $unc_len = strlen ($data);
+ $crc = crc32 ($data);
+ $zdata = gzcompress ($data);
+ $zdata = substr (substr ($zdata, 0, strlen ($zdata) - 4), 2);
+ $c_len = strlen ($zdata);
+
+ $fr = "\x50\x4b\x03\x04\x14\x00\x00\x00\x08\x00" .
+ $hexdtime .
+ pack ('V', $crc) .
+ pack ('V', $c_len) .
+ pack ('V', $unc_len) .
+ pack ('v', strlen ($name)) .
+ pack ('v', 0) .
+ $name .
+ $zdata .
+ pack ('V', $crc) .
+ pack ('V', $c_len) .
+ pack ('V', $unc_len);
+
+ $this -> datasec[] = $fr;
+
+ $cdrec = "\x50\x4b\x01\x02\x00\x00\x14\x00\x00\x00\x08\x00" .
+ $hexdtime .
+ pack ('V', $crc) .
+ pack ('V', $c_len) .
+ pack ('V', $unc_len) .
+ pack ('v', strlen ($name)) .
+ pack ('v', 0 ) .
+ pack ('v', 0 ) .
+ pack ('v', 0 ) .
+ pack ('v', 0 ) .
+ pack ('V', 32 ) .
+ pack ('V', $this -> old_offset ) .
+ $name;
+
+ $this -> old_offset += strlen ($fr);
+ $this -> ctrl_dir[] = $cdrec;
+ }
+
+ function file ()
+ {
+ $data = implode ('', $this -> datasec);
+ $ctrldir = implode ('', $this -> ctrl_dir);
+
+ return $data .
+ $ctrldir .
+ $this -> eof_ctrl_dir .
+ pack ('v', sizeof ($this -> ctrl_dir)) .
+ pack ('v', sizeof ($this -> ctrl_dir)) .
+ pack ('V', strlen ($ctrldir)) .
+ pack ('V', strlen ($data)) .
+ "\x00\x00";
+ }
+}
+?>
diff --git a/Admin/Modules/VPNconfig/index.php b/Admin/Modules/VPNconfig/index.php
new file mode 100755
index 0000000..75fb833
--- /dev/null
+++ b/Admin/Modules/VPNconfig/index.php
@@ -0,0 +1,65 @@
+ 0)
+{
+ $moduleurl = substr($moduleurl,0,$urlcut);
+}
+else
+{
+ if(strpos($moduleurl, "?") == 0)
+ {
+ $moduleurl = $_SERVER["REQUEST_URI"]."?site=1";
+ }
+}
+
+include ($_SERVER["DOCUMENT_ROOT"]."/Site/checkadmin.php");
+//include_once ($_SERVER["DOCUMENT_ROOT"]."/Admin/Modules/VPNconfig/config.inc");
+//include_once ($_SERVER["DOCUMENT_ROOT"]."/Admin/Modules/VPNconfig/include/functions.inc");
+
+$mode = $_REQUEST["uebergabe"];
+$cert = $_REQUEST["uebergabe2"];
+
+echo" Home
+ | Status
+ | Config
+ | Certificates
+ | IP-List
+ | Config-Editor
+ | Systemcheck
";
+
+switch($mode)
+{
+ case 1:
+ include ($_SERVER["DOCUMENT_ROOT"]."/Admin/Modules/VPNconfig/include/status.php");
+ break;
+ case 2:
+ include ($_SERVER["DOCUMENT_ROOT"]."/Admin/Modules/VPNconfig/include/config.php");
+ break;
+ case 3:
+ include ($_SERVER["DOCUMENT_ROOT"]."/Admin/Modules/VPNconfig/include/certs.php");
+ break;
+ case 4:
+ include ($_SERVER["DOCUMENT_ROOT"]."/Admin/Modules/VPNconfig/include/sys.php");
+ break;
+ case 5:
+ include ($_SERVER["DOCUMENT_ROOT"]."/Admin/Modules/VPNconfig/include/viewcert.php");
+ break;
+ case 6:
+ include ($_SERVER["DOCUMENT_ROOT"]."/Admin/Modules/VPNconfig/include/ipp.php");
+ break;
+ case 7:
+ include ($_SERVER["DOCUMENT_ROOT"]."/Admin/Modules/VPNconfig/include/config-edit.php");
+ break;
+ default:
+ echo"VPN Configuration
+ Choose an action:
+ # Status
+ # Config
+ # Certificates
+ # IP-List
+ # Config Editor
+ # Systemcheck
";
+ break;
+}
+?>
diff --git a/Admin/index.php b/Admin/index.php
new file mode 100755
index 0000000..16be9b5
--- /dev/null
+++ b/Admin/index.php
@@ -0,0 +1,50 @@
+
diff --git a/Config/_dbconfig_.php b/Config/_dbconfig_.php
new file mode 100755
index 0000000..3382b89
--- /dev/null
+++ b/Config/_dbconfig_.php
@@ -0,0 +1,5 @@
+
diff --git a/Config/_siteconfig_.php b/Config/_siteconfig_.php
new file mode 100755
index 0000000..704e365
--- /dev/null
+++ b/Config/_siteconfig_.php
@@ -0,0 +1,48 @@
+
diff --git a/Images/BlockContent-h.png b/Images/BlockContent-h.png
new file mode 100755
index 0000000..095a606
Binary files /dev/null and b/Images/BlockContent-h.png differ
diff --git a/Images/BlockContent-s.png b/Images/BlockContent-s.png
new file mode 100755
index 0000000..5b2e261
Binary files /dev/null and b/Images/BlockContent-s.png differ
diff --git a/Images/BlockContent-v.png b/Images/BlockContent-v.png
new file mode 100755
index 0000000..b3805df
Binary files /dev/null and b/Images/BlockContent-v.png differ
diff --git a/Images/BlockContentBullets.png b/Images/BlockContentBullets.png
new file mode 100755
index 0000000..f8fa6e6
Binary files /dev/null and b/Images/BlockContentBullets.png differ
diff --git a/Images/BlockHeaderIcon.png b/Images/BlockHeaderIcon.png
new file mode 100755
index 0000000..7f72994
Binary files /dev/null and b/Images/BlockHeaderIcon.png differ
diff --git a/Images/Button.png b/Images/Button.png
new file mode 100755
index 0000000..ef9764c
Binary files /dev/null and b/Images/Button.png differ
diff --git a/Images/Footer.png b/Images/Footer.png
new file mode 100755
index 0000000..56f8ec8
Binary files /dev/null and b/Images/Footer.png differ
diff --git a/Images/Header.jpg b/Images/Header.jpg
new file mode 100755
index 0000000..b4e122f
Binary files /dev/null and b/Images/Header.jpg differ
diff --git a/Images/Header_.jpg b/Images/Header_.jpg
new file mode 100755
index 0000000..e53003e
Binary files /dev/null and b/Images/Header_.jpg differ
diff --git a/Images/Header_old.jpg b/Images/Header_old.jpg
new file mode 100755
index 0000000..e302e98
Binary files /dev/null and b/Images/Header_old.jpg differ
diff --git a/Images/MenuItem.png b/Images/MenuItem.png
new file mode 100755
index 0000000..2c41792
Binary files /dev/null and b/Images/MenuItem.png differ
diff --git a/Images/Page-BgSimpleGradient.jpg b/Images/Page-BgSimpleGradient.jpg
new file mode 100755
index 0000000..d9f5faf
Binary files /dev/null and b/Images/Page-BgSimpleGradient.jpg differ
diff --git a/Images/PostBullets.png b/Images/PostBullets.png
new file mode 100755
index 0000000..ab64214
Binary files /dev/null and b/Images/PostBullets.png differ
diff --git a/Images/PostQuote.png b/Images/PostQuote.png
new file mode 100755
index 0000000..b287cd4
Binary files /dev/null and b/Images/PostQuote.png differ
diff --git a/Images/Sheet-h.png b/Images/Sheet-h.png
new file mode 100755
index 0000000..7efb4fc
Binary files /dev/null and b/Images/Sheet-h.png differ
diff --git a/Images/Sheet-s.png b/Images/Sheet-s.png
new file mode 100755
index 0000000..5d3e425
Binary files /dev/null and b/Images/Sheet-s.png differ
diff --git a/Images/Sheet-v.png b/Images/Sheet-v.png
new file mode 100755
index 0000000..5bb60e0
Binary files /dev/null and b/Images/Sheet-v.png differ
diff --git a/Images/down-arrow.gif b/Images/down-arrow.gif
new file mode 100644
index 0000000..6a2cf11
Binary files /dev/null and b/Images/down-arrow.gif differ
diff --git a/Images/nav.png b/Images/nav.png
new file mode 100755
index 0000000..5819157
Binary files /dev/null and b/Images/nav.png differ
diff --git a/Images/rssIcon.png b/Images/rssIcon.png
new file mode 100755
index 0000000..df92704
Binary files /dev/null and b/Images/rssIcon.png differ
diff --git a/Images/spacer.gif b/Images/spacer.gif
new file mode 100755
index 0000000..1d11fa9
Binary files /dev/null and b/Images/spacer.gif differ
diff --git a/Images/spectacles.gif b/Images/spectacles.gif
new file mode 100755
index 0000000..3eef54f
Binary files /dev/null and b/Images/spectacles.gif differ
diff --git a/Images/subitem-bg.png b/Images/subitem-bg.png
new file mode 100755
index 0000000..506b67c
Binary files /dev/null and b/Images/subitem-bg.png differ
diff --git a/Images/tux_root.gif b/Images/tux_root.gif
new file mode 100755
index 0000000..5fd8dc9
Binary files /dev/null and b/Images/tux_root.gif differ
diff --git a/Images/up-arrow.gif b/Images/up-arrow.gif
new file mode 100644
index 0000000..3d15253
Binary files /dev/null and b/Images/up-arrow.gif differ
diff --git a/Modules/Contact/img/avatar_christoph.gif b/Modules/Contact/img/avatar_christoph.gif
new file mode 100755
index 0000000..3bc06ad
Binary files /dev/null and b/Modules/Contact/img/avatar_christoph.gif differ
diff --git a/Modules/Contact/img/avatar_josua.png b/Modules/Contact/img/avatar_josua.png
new file mode 100755
index 0000000..1f55e5a
Binary files /dev/null and b/Modules/Contact/img/avatar_josua.png differ
diff --git a/Modules/Contact/img/avatar_mario.png b/Modules/Contact/img/avatar_mario.png
new file mode 100755
index 0000000..4133a65
Binary files /dev/null and b/Modules/Contact/img/avatar_mario.png differ
diff --git a/Modules/Contact/index.php b/Modules/Contact/index.php
new file mode 100755
index 0000000..7a4099a
--- /dev/null
+++ b/Modules/Contact/index.php
@@ -0,0 +1,66 @@
+
+
+
+
+
+
+
+
+
+
+
+ Christoph Haas
+ # Initiator des Projekts
+ # Webprogrammierung
+ # Serverkonfiguration
+ Klasse: 5bHELT
+ Email:
+ Christoph Haas
+
+
+
+
+
+
+
+
+
+
+ Mario Stöckholzer
+ # Serverkonfiguration
+ # Scriptentwickung
+ Klasse: 5bHELT
+ Email:
+ Mario Stöckholzer
+
+
+
+
+
+
+
+
+
+ Josua Kucher
+ # Beta-tester
+ # Serverbesitzer
+ # Art and Design
+ Klasse: 5bHELT
+ Email:
+ Josua Kucher
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/Modules/Downloads/config/.htaccess b/Modules/Downloads/config/.htaccess
new file mode 100755
index 0000000..e019832
--- /dev/null
+++ b/Modules/Downloads/config/.htaccess
@@ -0,0 +1 @@
+deny from all
diff --git a/Modules/Downloads/config/.htusers.php b/Modules/Downloads/config/.htusers.php
new file mode 100755
index 0000000..956afca
--- /dev/null
+++ b/Modules/Downloads/config/.htusers.php
@@ -0,0 +1,3 @@
+
\ No newline at end of file
diff --git a/Modules/Downloads/config/conf.php b/Modules/Downloads/config/conf.php
new file mode 100755
index 0000000..3a2c209
--- /dev/null
+++ b/Modules/Downloads/config/conf.php
@@ -0,0 +1,37 @@
+ Only (experimental) Zip-support
+ $GLOBALS["zip"] = false; //function_exists("gzcompress");
+ $GLOBALS["tar"] = false;
+ $GLOBALS["tgz"] = false;
+
+ // QuiXplorer version:
+ $GLOBALS["version"] = "2.3";
+//------------------------------------------------------------------------------
+// Global User Variables (used when $require_login==false)
+
+ // the home directory for the filemanager: (use '/', not '\' or '\\', no trailing '/')
+ $GLOBALS["home_dir"] = db_getconfval("downdir");
+
+ // the url corresponding with the home directory: (no trailing '/')
+ $GLOBALS["home_url"] = "http://localhost/explorer";
+
+ // show hidden files in QuiXplorer: (hide files starting with '.', as in Linux/UNIX)
+ $GLOBALS["show_hidden"] = false;
+
+ // filenames not allowed to access: (uses PCRE regex syntax)
+ $GLOBALS["no_access"] = "^\.ht";
+
+ // user permissions bitfield: (1=modify, 2=password, 4=admin, add the numbers)
+ $GLOBALS["permissions"] = 7;
+?>
diff --git a/Modules/Downloads/config/mimes.php b/Modules/Downloads/config/mimes.php
new file mode 100755
index 0000000..282a85e
--- /dev/null
+++ b/Modules/Downloads/config/mimes.php
@@ -0,0 +1,78 @@
+ array($GLOBALS["mimes"]["dir"],"dir.gif"),
+ "exe" => array($GLOBALS["mimes"]["exe"],"exe.gif","\.exe$|\.com$|\.bin$"),
+ "file" => array($GLOBALS["mimes"]["file"],"file.gif")
+);
+$GLOBALS["used_mime_types"]=array(
+ // text
+ "text" => array($GLOBALS["mimes"]["text"],"txt.gif","\.txt$"),
+
+ // programming
+ "php" => array($GLOBALS["mimes"]["php"],"php.gif","\.php$|\.php3$|\.phtml$|\.inc$"),
+ "sql" => array($GLOBALS["mimes"]["sql"],"src.gif","\.sql$"),
+ "perl" => array($GLOBALS["mimes"]["perl"],"pl.gif","\.pl$"),
+ "html" => array($GLOBALS["mimes"]["html"],"html.gif","\.htm$|\.html$|\.shtml$|\.dhtml$|\.xml$"),
+ "js" => array($GLOBALS["mimes"]["js"],"js.gif","\.js$"),
+ "css" => array($GLOBALS["mimes"]["css"],"src.gif","\.css$"),
+ "cgi" => array($GLOBALS["mimes"]["cgi"],"exe.gif","\.cgi$"),
+ //"py" => array($GLOBALS["mimes"]["py"],"py.gif","\.py$"),
+ //"sh" => array($GLOBALS["mimes"]["sh"],"sh.gif","\.sh$"),
+ // C++
+ "cpps" => array($GLOBALS["mimes"]["cpps"],"cpp.gif","\.cpp$|\.c$|\.cc$|\.cxx$"),
+ "cpph" => array($GLOBALS["mimes"]["cpph"],"h.gif","\.hpp$|\.h$"),
+ // Java
+ "javas" => array($GLOBALS["mimes"]["javas"],"java.gif","\.java$"),
+ "javac" => array($GLOBALS["mimes"]["javac"],"java.gif","\.class$|\.jar$"),
+ // Pascal
+ "pas" => array($GLOBALS["mimes"]["pas"],"src.gif","\.p$|\.pas$"),
+
+ // images
+ "gif" => array($GLOBALS["mimes"]["gif"],"image.gif","\.gif$"),
+ "jpg" => array($GLOBALS["mimes"]["jpg"],"image.gif","\.jpg$|\.jpeg$"),
+ "bmp" => array($GLOBALS["mimes"]["bmp"],"image.gif","\.bmp$"),
+ "png" => array($GLOBALS["mimes"]["png"],"image.gif","\.png$"),
+
+ // compressed
+ "zip" => array($GLOBALS["mimes"]["zip"],"zip.gif","\.zip$"),
+ "tar" => array($GLOBALS["mimes"]["tar"],"tar.gif","\.tar$"),
+ "gzip" => array($GLOBALS["mimes"]["gzip"],"tgz.gif","\.tgz$|\.gz$"),
+ "bzip2" => array($GLOBALS["mimes"]["bzip2"],"tgz.gif","\.bz2$"),
+ "rar" => array($GLOBALS["mimes"]["rar"],"tgz.gif","\.rar$"),
+ //"deb" => array($GLOBALS["mimes"]["deb"],"package.gif","\.deb$"),
+ //"rpm" => array($GLOBALS["mimes"]["rpm"],"package.gif","\.rpm$"),
+
+ // music
+ "mp3" => array($GLOBALS["mimes"]["mp3"],"mp3.gif","\.mp3$"),
+ "wav" => array($GLOBALS["mimes"]["wav"],"sound.gif","\.wav$"),
+ "midi" => array($GLOBALS["mimes"]["midi"],"midi.gif","\.mid$"),
+ "real" => array($GLOBALS["mimes"]["real"],"real.gif","\.rm$|\.ra$|\.ram$"),
+ //"play" => array($GLOBALS["mimes"]["play"],"mp3.gif","\.pls$|\.m3u$"),
+
+ // movie
+ "mpg" => array($GLOBALS["mimes"]["mpg"],"video.gif","\.mpg$|\.mpeg$"),
+ "mov" => array($GLOBALS["mimes"]["mov"],"video.gif","\.mov$"),
+ "avi" => array($GLOBALS["mimes"]["avi"],"video.gif","\.avi$"),
+ "flash" => array($GLOBALS["mimes"]["flash"],"flash.gif","\.swf$"),
+
+ // Micosoft / Adobe
+ "word" => array($GLOBALS["mimes"]["word"],"word.gif","\.doc$"),
+ "excel" => array($GLOBALS["mimes"]["excel"],"spread.gif","\.xls$"),
+ "pdf" => array($GLOBALS["mimes"]["pdf"],"pdf.gif","\.pdf$")
+);
+//------------------------------------------------------------------------------
+?>
diff --git a/Modules/Downloads/getdown.php b/Modules/Downloads/getdown.php
new file mode 100755
index 0000000..98dbc9a
--- /dev/null
+++ b/Modules/Downloads/getdown.php
@@ -0,0 +1,10 @@
+
diff --git a/Modules/Downloads/getfile.php b/Modules/Downloads/getfile.php
new file mode 100755
index 0000000..0bef161
--- /dev/null
+++ b/Modules/Downloads/getfile.php
@@ -0,0 +1,123 @@
+DONT TRY TO HACK! ";
+ echo "Your IP is logged, an administrator has been informed! ";
+ echo "Script written by h44z";
+ exit;
+}
+elseif(down_home($abs_dir)==true)
+{
+ $abs_dir = "DONTTRYTOHACK";
+ echo "DONT TRY TO HACK! ";
+ echo "Your IP is logged, an administrator has been informed! ";
+ echo "Script written by h44z";
+ exit;
+}
+//SECURITY FIXX ------------------------------
+else
+{
+ $abs_dir = $abs_dir;
+}
+
+
+ob_start();
+ $browser=id_browser();
+ header('Content-Type: '.(($browser=='IE' || $browser=='OPERA')?
+ 'application/octetstream':'application/octet-stream'));
+ header('Expires: '.gmdate('D, d M Y H:i:s').' GMT');
+ header('Content-Transfer-Encoding: binary');
+ header('Content-Length: '.filesize($abs_item));
+ if($browser=='IE') {
+ header('Content-Disposition: attachment; filename="'.$item.'"');
+ header('Cache-Control: must-revalidate, post-check=0, pre-check=0');
+ header('Pragma: public');
+ } else {
+ header('Content-Disposition: attachment; filename="'.$item.'"');
+ header('Cache-Control: no-cache, must-revalidate');
+ header('Pragma: no-cache');
+ }
+ob_end_flush();
+
+
+
+function get_abs_dir($dir)
+{ // get absolute path
+ $abs_dir="/home/christoph/explorer";
+ if($dir!="") $abs_dir.="/".$dir;
+ return $abs_dir;
+}
+
+function get_abs_item($dir, $item)
+{ // get absolute file+path
+ return get_abs_dir($dir)."/".$item;
+}
+
+function id_browser() {
+ $browser=$GLOBALS['__SERVER']['HTTP_USER_AGENT'];
+
+ if(ereg('Opera(/| )([0-9].[0-9]{1,2})', $browser)) {
+ return 'OPERA';
+ } else if(ereg('MSIE ([0-9].[0-9]{1,2})', $browser)) {
+ return 'IE';
+ } else if(ereg('OmniWeb/([0-9].[0-9]{1,2})', $browser)) {
+ return 'OMNIWEB';
+ } else if(ereg('(Konqueror/)(.*)', $browser)) {
+ return 'KONQUEROR';
+ } else if(ereg('Mozilla/([0-9].[0-9]{1,2})', $browser)) {
+ return 'MOZILLA';
+ } else {
+ return 'OTHER';
+ }
+}
+
+
+//String contains funktion
+function contains($str, $content, $ignorecase=true)
+{
+ if ($ignorecase){
+ $str = strtolower($str);
+ $content = strtolower($content);
+ }
+ return strpos($content,$str) ? true : false;
+}
+
+function get_show_item($dir, $item) { // show this file?
+ if($item == "..") return false;
+
+ if("^\.ht"!="" && @eregi("^\.ht",$item)) return false;
+
+ if(false==false) {
+ $dirs=explode("/",$dir);
+ foreach($dirs as $i) if(substr($i,0,1)==".") return false;
+ }
+
+ return true;
+}
+
+function down_home($abs_dir) { // dir deeper than home?
+ $real_home = @realpath("/home/christoph/explorer");
+ $real_dir = @realpath($abs_dir);
+
+ if($real_home===false || $real_dir===false) {
+ if(@eregi("\\.\\.",$abs_dir)) return false;
+ } else if(strcmp($real_home,@substr($real_dir,0,strlen($real_home)))) {
+ return false;
+ }
+ return true;
+}
+
+@readfile($abs_item);
+exit;
+
+?>
diff --git a/Modules/Downloads/img/_.gif b/Modules/Downloads/img/_.gif
new file mode 100644
index 0000000..f44a942
Binary files /dev/null and b/Modules/Downloads/img/_.gif differ
diff --git a/Modules/Downloads/img/__copy.gif b/Modules/Downloads/img/__copy.gif
new file mode 100644
index 0000000..49c935f
Binary files /dev/null and b/Modules/Downloads/img/__copy.gif differ
diff --git a/Modules/Downloads/img/__cut.gif b/Modules/Downloads/img/__cut.gif
new file mode 100644
index 0000000..6ea7928
Binary files /dev/null and b/Modules/Downloads/img/__cut.gif differ
diff --git a/Modules/Downloads/img/__paste.gif b/Modules/Downloads/img/__paste.gif
new file mode 100644
index 0000000..beb1cfb
Binary files /dev/null and b/Modules/Downloads/img/__paste.gif differ
diff --git a/Modules/Downloads/img/_archive.gif b/Modules/Downloads/img/_archive.gif
new file mode 100644
index 0000000..a8bade5
Binary files /dev/null and b/Modules/Downloads/img/_archive.gif differ
diff --git a/Modules/Downloads/img/_arrowdown.gif b/Modules/Downloads/img/_arrowdown.gif
new file mode 100644
index 0000000..1191cc5
Binary files /dev/null and b/Modules/Downloads/img/_arrowdown.gif differ
diff --git a/Modules/Downloads/img/_arrowup.gif b/Modules/Downloads/img/_arrowup.gif
new file mode 100644
index 0000000..b7c7db6
Binary files /dev/null and b/Modules/Downloads/img/_arrowup.gif differ
diff --git a/Modules/Downloads/img/_copy.gif b/Modules/Downloads/img/_copy.gif
new file mode 100644
index 0000000..83e03c1
Binary files /dev/null and b/Modules/Downloads/img/_copy.gif differ
diff --git a/Modules/Downloads/img/_copy_.gif b/Modules/Downloads/img/_copy_.gif
new file mode 100644
index 0000000..9f623cd
Binary files /dev/null and b/Modules/Downloads/img/_copy_.gif differ
diff --git a/Modules/Downloads/img/_delete.gif b/Modules/Downloads/img/_delete.gif
new file mode 100644
index 0000000..399146f
Binary files /dev/null and b/Modules/Downloads/img/_delete.gif differ
diff --git a/Modules/Downloads/img/_delete_.gif b/Modules/Downloads/img/_delete_.gif
new file mode 100644
index 0000000..e5e8d02
Binary files /dev/null and b/Modules/Downloads/img/_delete_.gif differ
diff --git a/Modules/Downloads/img/_download.gif b/Modules/Downloads/img/_download.gif
new file mode 100644
index 0000000..81a4894
Binary files /dev/null and b/Modules/Downloads/img/_download.gif differ
diff --git a/Modules/Downloads/img/_download_.gif b/Modules/Downloads/img/_download_.gif
new file mode 100644
index 0000000..b6d62fb
Binary files /dev/null and b/Modules/Downloads/img/_download_.gif differ
diff --git a/Modules/Downloads/img/_edit.gif b/Modules/Downloads/img/_edit.gif
new file mode 100644
index 0000000..b172f9a
Binary files /dev/null and b/Modules/Downloads/img/_edit.gif differ
diff --git a/Modules/Downloads/img/_edit_.gif b/Modules/Downloads/img/_edit_.gif
new file mode 100644
index 0000000..2541e1e
Binary files /dev/null and b/Modules/Downloads/img/_edit_.gif differ
diff --git a/Modules/Downloads/img/_home.gif b/Modules/Downloads/img/_home.gif
new file mode 100644
index 0000000..b32cf44
Binary files /dev/null and b/Modules/Downloads/img/_home.gif differ
diff --git a/Modules/Downloads/img/_info.gif b/Modules/Downloads/img/_info.gif
new file mode 100644
index 0000000..adb62fb
Binary files /dev/null and b/Modules/Downloads/img/_info.gif differ
diff --git a/Modules/Downloads/img/_logout.gif b/Modules/Downloads/img/_logout.gif
new file mode 100644
index 0000000..c8247d8
Binary files /dev/null and b/Modules/Downloads/img/_logout.gif differ
diff --git a/Modules/Downloads/img/_move.gif b/Modules/Downloads/img/_move.gif
new file mode 100644
index 0000000..1769363
Binary files /dev/null and b/Modules/Downloads/img/_move.gif differ
diff --git a/Modules/Downloads/img/_move_.gif b/Modules/Downloads/img/_move_.gif
new file mode 100644
index 0000000..0a142aa
Binary files /dev/null and b/Modules/Downloads/img/_move_.gif differ
diff --git a/Modules/Downloads/img/_refresh.gif b/Modules/Downloads/img/_refresh.gif
new file mode 100644
index 0000000..6c206d9
Binary files /dev/null and b/Modules/Downloads/img/_refresh.gif differ
diff --git a/Modules/Downloads/img/_search.gif b/Modules/Downloads/img/_search.gif
new file mode 100644
index 0000000..4165f4c
Binary files /dev/null and b/Modules/Downloads/img/_search.gif differ
diff --git a/Modules/Downloads/img/_up.gif b/Modules/Downloads/img/_up.gif
new file mode 100644
index 0000000..9a8e55f
Binary files /dev/null and b/Modules/Downloads/img/_up.gif differ
diff --git a/Modules/Downloads/img/_upload.gif b/Modules/Downloads/img/_upload.gif
new file mode 100644
index 0000000..7958f50
Binary files /dev/null and b/Modules/Downloads/img/_upload.gif differ
diff --git a/Modules/Downloads/img/_upload_.gif b/Modules/Downloads/img/_upload_.gif
new file mode 100644
index 0000000..a9f5f2f
Binary files /dev/null and b/Modules/Downloads/img/_upload_.gif differ
diff --git a/Modules/Downloads/img/cpp.gif b/Modules/Downloads/img/cpp.gif
new file mode 100644
index 0000000..ae41e61
Binary files /dev/null and b/Modules/Downloads/img/cpp.gif differ
diff --git a/Modules/Downloads/img/dir.gif b/Modules/Downloads/img/dir.gif
new file mode 100644
index 0000000..4d0f352
Binary files /dev/null and b/Modules/Downloads/img/dir.gif differ
diff --git a/Modules/Downloads/img/exe.gif b/Modules/Downloads/img/exe.gif
new file mode 100644
index 0000000..b6b4123
Binary files /dev/null and b/Modules/Downloads/img/exe.gif differ
diff --git a/Modules/Downloads/img/file.gif b/Modules/Downloads/img/file.gif
new file mode 100644
index 0000000..fbdfa97
Binary files /dev/null and b/Modules/Downloads/img/file.gif differ
diff --git a/Modules/Downloads/img/flash.gif b/Modules/Downloads/img/flash.gif
new file mode 100644
index 0000000..2644783
Binary files /dev/null and b/Modules/Downloads/img/flash.gif differ
diff --git a/Modules/Downloads/img/h.gif b/Modules/Downloads/img/h.gif
new file mode 100644
index 0000000..9b43353
Binary files /dev/null and b/Modules/Downloads/img/h.gif differ
diff --git a/Modules/Downloads/img/html.gif b/Modules/Downloads/img/html.gif
new file mode 100644
index 0000000..734c9ac
Binary files /dev/null and b/Modules/Downloads/img/html.gif differ
diff --git a/Modules/Downloads/img/image.gif b/Modules/Downloads/img/image.gif
new file mode 100644
index 0000000..e318124
Binary files /dev/null and b/Modules/Downloads/img/image.gif differ
diff --git a/Modules/Downloads/img/java.gif b/Modules/Downloads/img/java.gif
new file mode 100644
index 0000000..2a5a5ca
Binary files /dev/null and b/Modules/Downloads/img/java.gif differ
diff --git a/Modules/Downloads/img/js.gif b/Modules/Downloads/img/js.gif
new file mode 100644
index 0000000..d8468a9
Binary files /dev/null and b/Modules/Downloads/img/js.gif differ
diff --git a/Modules/Downloads/img/midi.gif b/Modules/Downloads/img/midi.gif
new file mode 100644
index 0000000..8803fd1
Binary files /dev/null and b/Modules/Downloads/img/midi.gif differ
diff --git a/Modules/Downloads/img/mp3.gif b/Modules/Downloads/img/mp3.gif
new file mode 100644
index 0000000..93cb293
Binary files /dev/null and b/Modules/Downloads/img/mp3.gif differ
diff --git a/Modules/Downloads/img/pdf.gif b/Modules/Downloads/img/pdf.gif
new file mode 100644
index 0000000..53f2c6c
Binary files /dev/null and b/Modules/Downloads/img/pdf.gif differ
diff --git a/Modules/Downloads/img/php.gif b/Modules/Downloads/img/php.gif
new file mode 100644
index 0000000..cc390a9
Binary files /dev/null and b/Modules/Downloads/img/php.gif differ
diff --git a/Modules/Downloads/img/pl.gif b/Modules/Downloads/img/pl.gif
new file mode 100644
index 0000000..e696888
Binary files /dev/null and b/Modules/Downloads/img/pl.gif differ
diff --git a/Modules/Downloads/img/real.gif b/Modules/Downloads/img/real.gif
new file mode 100644
index 0000000..7587902
Binary files /dev/null and b/Modules/Downloads/img/real.gif differ
diff --git a/Modules/Downloads/img/sound.gif b/Modules/Downloads/img/sound.gif
new file mode 100644
index 0000000..2dad21b
Binary files /dev/null and b/Modules/Downloads/img/sound.gif differ
diff --git a/Modules/Downloads/img/spacer.gif b/Modules/Downloads/img/spacer.gif
new file mode 100644
index 0000000..1d11fa9
Binary files /dev/null and b/Modules/Downloads/img/spacer.gif differ
diff --git a/Modules/Downloads/img/spread.gif b/Modules/Downloads/img/spread.gif
new file mode 100644
index 0000000..05afecf
Binary files /dev/null and b/Modules/Downloads/img/spread.gif differ
diff --git a/Modules/Downloads/img/src.gif b/Modules/Downloads/img/src.gif
new file mode 100644
index 0000000..726199b
Binary files /dev/null and b/Modules/Downloads/img/src.gif differ
diff --git a/Modules/Downloads/img/tar.gif b/Modules/Downloads/img/tar.gif
new file mode 100644
index 0000000..5134e16
Binary files /dev/null and b/Modules/Downloads/img/tar.gif differ
diff --git a/Modules/Downloads/img/tgz.gif b/Modules/Downloads/img/tgz.gif
new file mode 100644
index 0000000..a8bade5
Binary files /dev/null and b/Modules/Downloads/img/tgz.gif differ
diff --git a/Modules/Downloads/img/txt.gif b/Modules/Downloads/img/txt.gif
new file mode 100644
index 0000000..428b469
Binary files /dev/null and b/Modules/Downloads/img/txt.gif differ
diff --git a/Modules/Downloads/img/video.gif b/Modules/Downloads/img/video.gif
new file mode 100644
index 0000000..4ab8dc8
Binary files /dev/null and b/Modules/Downloads/img/video.gif differ
diff --git a/Modules/Downloads/img/word.gif b/Modules/Downloads/img/word.gif
new file mode 100644
index 0000000..c9e3e66
Binary files /dev/null and b/Modules/Downloads/img/word.gif differ
diff --git a/Modules/Downloads/img/zip.gif b/Modules/Downloads/img/zip.gif
new file mode 100644
index 0000000..3658fa4
Binary files /dev/null and b/Modules/Downloads/img/zip.gif differ
diff --git a/Modules/Downloads/include/.htaccess b/Modules/Downloads/include/.htaccess
new file mode 100755
index 0000000..e019832
--- /dev/null
+++ b/Modules/Downloads/include/.htaccess
@@ -0,0 +1 @@
+deny from all
diff --git a/Modules/Downloads/include/error.php b/Modules/Downloads/include/error.php
new file mode 100755
index 0000000..eeecace
--- /dev/null
+++ b/Modules/Downloads/include/error.php
@@ -0,0 +1,51 @@
+ ".$GLOBALS["error_msg"]["error"].":"." \n";
+ echo $error."\n";
+ echo $GLOBALS["error_msg"]["back"]." ";
+ if($extra!=NULL) echo " - ".$extra;
+ echo " \n";
+ exit;
+}
+//------------------------------------------------------------------------------
+?>
\ No newline at end of file
diff --git a/Modules/Downloads/include/fun_down.php b/Modules/Downloads/include/fun_down.php
new file mode 100755
index 0000000..6089f29
--- /dev/null
+++ b/Modules/Downloads/include/fun_down.php
@@ -0,0 +1,32 @@
+
diff --git a/Modules/Downloads/include/fun_extra.php b/Modules/Downloads/include/fun_extra.php
new file mode 100755
index 0000000..95b0ee8
--- /dev/null
+++ b/Modules/Downloads/include/fun_extra.php
@@ -0,0 +1,259 @@
+= 1073741824) {
+ $size = round($size / 1073741824 * 100) / 100 . " GB";
+ } elseif($size >= 1048576) {
+ $size = round($size / 1048576 * 100) / 100 . " MB";
+ } elseif($size >= 1024) {
+ $size = round($size / 1024 * 100) / 100 . " KB";
+ } else $size = $size . " Bytes";
+ if($size==0) $size="-";
+
+ return $size;
+}
+//------------------------------------------------------------------------------
+function get_file_date($dir, $item) { // file date
+ return @filemtime(get_abs_item($dir, $item));
+}
+//------------------------------------------------------------------------------
+function parse_file_date($date) { // parsed file date
+ return @date($GLOBALS["date_fmt"],$date);
+}
+//------------------------------------------------------------------------------
+function get_is_image($dir, $item) { // is this file an image?
+ if(!get_is_file($dir, $item)) return false;
+ return @eregi($GLOBALS["images_ext"], $item);
+}
+//-----------------------------------------------------------------------------
+function get_is_editable($dir, $item) { // is this file editable?
+ if(!get_is_file($dir, $item)) return false;
+ foreach($GLOBALS["editable_ext"] as $pat) if(@eregi($pat,$item)) return true;
+ return false;
+}
+//-----------------------------------------------------------------------------
+function get_mime_type($dir, $item, $query) { // get file's mimetype
+ if(get_is_dir($dir, $item)) { // directory
+ $mime_type = $GLOBALS["super_mimes"]["dir"][0];
+ $image = $GLOBALS["super_mimes"]["dir"][1];
+
+ if($query=="img") return $image;
+ else return $mime_type;
+ }
+ // mime_type
+ foreach($GLOBALS["used_mime_types"] as $mime) {
+ list($desc,$img,$ext) = $mime;
+ if(@eregi($ext,$item)) {
+ $mime_type = $desc;
+ $image = $img;
+ if($query=="img") return $image;
+ else return $mime_type;
+ }
+ }
+
+ if((function_exists("is_executable") &&
+ @is_executable(get_abs_item($dir,$item))) ||
+ @eregi($GLOBALS["super_mimes"]["exe"][2],$item))
+ { // executable
+ $mime_type = $GLOBALS["super_mimes"]["exe"][0];
+ $image = $GLOBALS["super_mimes"]["exe"][1];
+ } else { // unknown file
+ $mime_type = $GLOBALS["super_mimes"]["file"][0];
+ $image = $GLOBALS["super_mimes"]["file"][1];
+ }
+
+ if($query=="img") return $image;
+ else return $mime_type;
+}
+//------------------------------------------------------------------------------
+function get_show_item($dir, $item) { // show this file?
+ if($item == "." || $item == ".." ||
+ (substr($item,0,1)=="." && $GLOBALS["show_hidden"]==false)) return false;
+
+ if($GLOBALS["no_access"]!="" && @eregi($GLOBALS["no_access"],$item)) return false;
+
+ if($GLOBALS["show_hidden"]==false) {
+ $dirs=explode("/",$dir);
+ foreach($dirs as $i) if(substr($i,0,1)==".") return false;
+ }
+
+ return true;
+}
+//------------------------------------------------------------------------------
+function copy_dir($source,$dest) { // copy dir
+ $ok = true;
+
+ if(!@mkdir($dest,0777)) return false;
+ if(($handle=@opendir($source))===false) show_error(basename($source).": ".$GLOBALS["error_msg"]["opendir"]);
+
+ while(($file=readdir($handle))!==false) {
+ if(($file==".." || $file==".")) continue;
+
+ $new_source = $source."/".$file;
+ $new_dest = $dest."/".$file;
+ if(@is_dir($new_source)) {
+ $ok=copy_dir($new_source,$new_dest);
+ } else {
+ $ok=@copy($new_source,$new_dest);
+ }
+ }
+ closedir($handle);
+ return $ok;
+}
+//------------------------------------------------------------------------------
+function remove($item) { // remove file / dir
+ $ok = true;
+ if(@is_link($item) || @is_file($item)) $ok=@unlink($item);
+ elseif(@is_dir($item)) {
+ if(($handle=@opendir($item))===false) show_error(basename($item).": ".$GLOBALS["error_msg"]["opendir"]);
+
+ while(($file=readdir($handle))!==false) {
+ if(($file==".." || $file==".")) continue;
+
+ $new_item = $item."/".$file;
+ if(!@file_exists($new_item)) show_error(basename($item).": ".$GLOBALS["error_msg"]["readdir"]);
+ //if(!get_show_item($item, $new_item)) continue;
+
+ if(@is_dir($new_item)) {
+ $ok=remove($new_item);
+ } else {
+ $ok=@unlink($new_item);
+ }
+ }
+
+ closedir($handle);
+ $ok=@rmdir($item);
+ }
+ return $ok;
+}
+//------------------------------------------------------------------------------
+function get_max_file_size() { // get php max_upload_file_size
+ $max = get_cfg_var("upload_max_filesize");
+ if(@eregi("G$",$max)) {
+ $max = substr($max,0,-1);
+ $max = round($max*1073741824);
+ } elseif(@eregi("M$",$max)) {
+ $max = substr($max,0,-1);
+ $max = round($max*1048576);
+ } elseif(@eregi("K$",$max)) {
+ $max = substr($max,0,-1);
+ $max = round($max*1024);
+ }
+
+ return $max;
+}
+//------------------------------------------------------------------------------
+function down_home($abs_dir) { // dir deeper than home?
+ $real_home = @realpath($GLOBALS["home_dir"]);
+ $real_dir = @realpath($abs_dir);
+
+ if($real_home===false || $real_dir===false) {
+ if(@eregi("\\.\\.",$abs_dir)) return false;
+ } else if(strcmp($real_home,@substr($real_dir,0,strlen($real_home)))) {
+ return false;
+ }
+ return true;
+}
+//------------------------------------------------------------------------------
+function id_browser() {
+ $browser=$GLOBALS['__SERVER']['HTTP_USER_AGENT'];
+
+ if(ereg('Opera(/| )([0-9].[0-9]{1,2})', $browser)) {
+ return 'OPERA';
+ } else if(ereg('MSIE ([0-9].[0-9]{1,2})', $browser)) {
+ return 'IE';
+ } else if(ereg('OmniWeb/([0-9].[0-9]{1,2})', $browser)) {
+ return 'OMNIWEB';
+ } else if(ereg('(Konqueror/)(.*)', $browser)) {
+ return 'KONQUEROR';
+ } else if(ereg('Mozilla/([0-9].[0-9]{1,2})', $browser)) {
+ return 'MOZILLA';
+ } else {
+ return 'OTHER';
+ }
+}
+//------------------------------------------------------------------------------
+?>
diff --git a/Modules/Downloads/include/fun_list.php b/Modules/Downloads/include/fun_list.php
new file mode 100755
index 0000000..c983320
--- /dev/null
+++ b/Modules/Downloads/include/fun_list.php
@@ -0,0 +1,241 @@
+ ".@readlink($abs_item);
+ if(is_dir($abs_item)) {
+ $link = make_link("list",get_rel_item($dir, $item),NULL);
+ } else { //if(get_is_editable($dir,$item) || get_is_image($dir,$item)) {
+ $link = make_link("download",$dir,$item);
+ $target = "_blank";
+ } //else $link = "";
+
+ echo "\n";
+ // Icon + Link
+ echo "";
+ /*if($link!="") */ echo"";
+ //else echo " ";
+ echo " ";
+ $s_item=$item; if(strlen($s_item)>50) $s_item=substr($s_item,0,47)."...";
+ echo htmlspecialchars($s_item)." \n"; // ...$extra...
+ // Size
+ echo "".parse_file_size(get_file_size($dir,$item))." \n";
+ // Type
+ echo "".get_mime_type($dir, $item, "type")." \n";
+ // Modified
+ echo "".parse_file_date(get_file_date($dir,$item))." \n";
+ // Permissions
+// echo "";
+
+// echo parse_file_type($dir,$item).parse_file_perms(get_file_perms($dir,$item));
+// if($allow) echo "";
+// echo " \n";
+ // Actions
+ echo "\n\n";
+ // DOWNLOAD
+ if(get_is_file($dir,$item)) {
+ if($allow) {
+ echo "";
+ echo " \n";
+ } else if(!$allow) {
+ echo " \n";
+ }
+ } else {
+ echo " \n";
+ }
+ echo "
\n \n";
+ }
+}
+//------------------------------------------------------------------------------
+// MAIN FUNCTION
+function list_dir($dir) { // list directory contents
+ $allow=($GLOBALS["permissions"]&01)==01;
+ $admin=((($GLOBALS["permissions"]&04)==04) || (($GLOBALS["permissions"]&02)==02));
+
+ $dir_up = dirname($dir);
+ if($dir_up==".") $dir_up = "";
+
+ if(!get_show_item($dir_up,basename($dir))) show_error($dir." : ".$GLOBALS["error_msg"]["accessdir"]);
+
+ // make file & dir tables, & get total filesize & number of items
+ make_tables($dir, $dir_list, $file_list, $tot_file_size, $num_items);
+
+ $s_dir=$dir; if(strlen($s_dir)>50) $s_dir="...".substr($s_dir,-47);
+ echo "Directory: /".get_rel_item("",$s_dir);
+
+ // Javascript functions:
+ include $_SERVER["DOCUMENT_ROOT"]."/Modules/Downloads/include/javascript.php";
+
+
+ // Toolbar
+ echo "\n";
+
+ // PARENT DIR
+ echo "";
+ echo " \n";
+ // HOME DIR
+ echo "";
+ echo " \n";
+ // RELOAD
+ echo " \n";
+
+ echo "
\n";
+
+ echo "
\n";
+
+ // End Toolbar
+
+
+ // Begin Table + Form for checkboxes
+ echo"\n";
+
+ // Table Header
+ echo "\n";
+ echo "\n\n\n\n";
+ echo " \n";
+ echo " \n";
+
+ // make & print Table using lists
+ print_table($dir, make_list($dir_list, $file_list), $allow);
+
+ // print number of items & total filesize
+ echo "\n";
+ echo "\n";
+ echo "\n";
+ for($i=0;$i<3;++$i) echo"";
+ echo " \n
\n";
+
+
+}
+//------------------------------------------------------------------------------
+?>
diff --git a/Modules/Downloads/include/init.php b/Modules/Downloads/include/init.php
new file mode 100755
index 0000000..71eb568
--- /dev/null
+++ b/Modules/Downloads/include/init.php
@@ -0,0 +1,67 @@
+ERROR: Your PHP version is too old ".
+ "You need at least PHP 4.0.0, preferably PHP 4.3.1 or higher.");
+}
+//------------------------------------------------------------------------------
+// Get Action
+$GLOBALS['__GET']["action"] = $GLOBALS['__GET']["uebergabe"];
+
+if(isset($GLOBALS['__GET']["action"])) $GLOBALS["action"]=$GLOBALS['__GET']["action"];
+else $GLOBALS["action"]="list";
+if($GLOBALS["action"]=="post" && isset($GLOBALS['__POST']["do_action"])) {
+ $GLOBALS["action"]=$GLOBALS['__POST']["do_action"];
+}
+if($GLOBALS["action"]=="") $GLOBALS["action"]="list";
+$GLOBALS["action"]=stripslashes($GLOBALS["action"]);
+// Default Dir
+if(isset($GLOBALS['__GET']["dir"])) $GLOBALS["dir"]=stripslashes($GLOBALS['__GET']["dir"]);
+else $GLOBALS["dir"]="";
+if($GLOBALS["dir"]==".") $GLOBALS["dir"]=="";
+// Get Item
+if(isset($GLOBALS['__GET']["item"])) $GLOBALS["item"]=stripslashes($GLOBALS['__GET']["item"]);
+else $GLOBALS["item"]="";
+// Get Sort
+if(isset($GLOBALS['__GET']["order"])) $GLOBALS["order"]=stripslashes($GLOBALS['__GET']["order"]);
+else $GLOBALS["order"]="name";
+if($GLOBALS["order"]=="") $GLOBALS["order"]=="name";
+// Get Sortorder (yes==up)
+if(isset($GLOBALS['__GET']["srt"])) $GLOBALS["srt"]=stripslashes($GLOBALS['__GET']["srt"]);
+else $GLOBALS["srt"]="yes";
+if($GLOBALS["srt"]=="") $GLOBALS["srt"]=="yes";
+// Get Language
+if(isset($GLOBALS['__GET']["lang"])) $GLOBALS["lang"]=$GLOBALS['__GET']["lang"];
+elseif(isset($GLOBALS['__POST']["lang"])) $GLOBALS["lang"]=$GLOBALS['__POST']["lang"];
+//------------------------------------------------------------------------------
+// Necessary files
+ob_start(); // prevent unwanted output
+require $_SERVER["DOCUMENT_ROOT"]."/Modules/Downloads/config/conf.php";
+if(isset($GLOBALS["lang"])) $GLOBALS["language"]=$GLOBALS["lang"];
+require $_SERVER["DOCUMENT_ROOT"]."/Modules/Downloads/lang/".$GLOBALS["language"].".php";
+require $_SERVER["DOCUMENT_ROOT"]."/Modules/Downloads/lang/".$GLOBALS["language"]."_mimes.php";
+require $_SERVER["DOCUMENT_ROOT"]."/Modules/Downloads/config/mimes.php";
+require $_SERVER["DOCUMENT_ROOT"]."/Modules/Downloads/include/fun_extra.php";
+require $_SERVER["DOCUMENT_ROOT"]."/Modules/Downloads/include/error.php";
+ob_end_clean(); // get rid of cached unwanted output
+//------------------------------------------------------------------------------
+$abs_dir=get_abs_dir($GLOBALS["dir"]);
+if(!@file_exists($GLOBALS["home_dir"])) {
+ $extra=NULL;
+ show_error($GLOBALS["error_msg"]["home"],$extra);
+}
+if(!down_home($abs_dir)) show_error($GLOBALS["dir"]." : ".$GLOBALS["error_msg"]["abovehome"]);
+if(!is_dir($abs_dir)) show_error($GLOBALS["dir"]." : ".$GLOBALS["error_msg"]["direxist"]);
+//------------------------------------------------------------------------------
+?>
diff --git a/Modules/Downloads/include/javascript.php b/Modules/Downloads/include/javascript.php
new file mode 100755
index 0000000..df0352f
--- /dev/null
+++ b/Modules/Downloads/include/javascript.php
@@ -0,0 +1,137 @@
+
\ No newline at end of file
diff --git a/Modules/Downloads/index.php b/Modules/Downloads/index.php
new file mode 100644
index 0000000..896966a
--- /dev/null
+++ b/Modules/Downloads/index.php
@@ -0,0 +1,40 @@
+
+
+
+
+
diff --git a/Modules/Downloads/lang/_info.php b/Modules/Downloads/lang/_info.php
new file mode 100644
index 0000000..18821c9
--- /dev/null
+++ b/Modules/Downloads/lang/_info.php
@@ -0,0 +1,6 @@
+English
+Deutsch
+Español
+Français
+Nederlands
+Russian
\ No newline at end of file
diff --git a/Modules/Downloads/lang/de.php b/Modules/Downloads/lang/de.php
new file mode 100644
index 0000000..546c448
--- /dev/null
+++ b/Modules/Downloads/lang/de.php
@@ -0,0 +1,158 @@
+ "FEHLER",
+ "back" => "Zurück",
+
+ // root
+ "home" => "Das Home-Verzeichnis existiert nicht, kontrollieren sie ihre Einstellungen.",
+ "abovehome" => "Das aktuelle Verzeichnis darf nicht höher liegen als das Home-Verzeichnis.",
+ "targetabovehome" => "Das Zielverzeichnis darf nicht höher liegen als das Home-Verzeichnis.",
+
+ // exist
+ "direxist" => "Dieses Verzeichnis existiert nicht.",
+ //"filedoesexist" => "Diese Datei existiert bereits.",
+ "fileexist" => "Diese Datei existiert nicht.",
+ "itemdoesexist" => "Dieses Objekt existiert bereits.",
+ "itemexist" => "Dieses Objekt existiert nicht.",
+ "targetexist" => "Das Zielverzeichnis existiert nicht.",
+ "targetdoesexist" => "Das Zielobjekt existiert bereits.",
+
+ // open
+ "opendir" => "Kann Verzeichnis nicht öffnen.",
+ "readdir" => "Kann Verzeichnis nicht lesen",
+
+ // access
+ "accessdir" => "Zugriff auf dieses Verzeichnis verweigert.",
+ "accessfile" => "Zugriff auf diese Datei verweigert.",
+ "accessitem" => "Zugriff auf dieses Objekt verweigert.",
+ "accessfunc" => "Zugriff auf diese Funktion verweigert.",
+ "accesstarget" => "Zugriff auf das Zielverzeichnis verweigert.",
+
+ // actions
+ "permread" => "Rechte lesen fehlgeschlagen.",
+ "permchange" => "Rechte ändern fehlgeschlagen.",
+ "openfile" => "Datei öffnen fehlgeschlagen.",
+ "savefile" => "Datei speichern fehlgeschlagen.",
+ "createfile" => "Datei anlegen fehlgeschlagen.",
+ "createdir" => "Verzeichnis anlegen fehlgeschlagen.",
+ "uploadfile" => "Datei hochladen fehlgeschlagen.",
+ "copyitem" => "Kopieren fehlgeschlagen.",
+ "moveitem" => "Versetzen fehlgeschlagen.",
+ "delitem" => "Löschen fehlgeschlagen.",
+ "chpass" => "Passwort ändern fehlgeschlagen.",
+ "deluser" => "Benutzer löschen fehlgeschlagen.",
+ "adduser" => "Benutzer hinzufügen fehlgeschlagen.",
+ "saveuser" => "Benutzer speichern fehlgeschlagen.",
+ "searchnothing" => "Sie müssen etwas zum suchen eintragen.",
+
+ // misc
+ "miscnofunc" => "Funktion nicht vorhanden.",
+ "miscfilesize" => "Datei ist größer als die maximale Größe.",
+ "miscfilepart" => "Datei wurde nur zum Teil hochgeladen.",
+ "miscnoname" => "Sie müssen einen Namen eintragen",
+ "miscselitems" => "Sie haben keine Objekt(e) ausgewählt.",
+ "miscdelitems" => "Sollen die \"+num+\" markierten Objekt(e) gelöscht werden?",
+ "miscdeluser" => "Soll der Benutzer '\"+user+\"' gelöscht werden?",
+ "miscnopassdiff" => "Das neue und das heutige Passwort sind nicht verschieden.",
+ "miscnopassmatch" => "Passwörter sind nicht gleich.",
+ "miscfieldmissed" => "Sie haben ein wichtiges Eingabefeld vergessen auszufüllen",
+ "miscnouserpass" => "Benutzer oder Passwort unbekannt.",
+ "miscselfremove" => "Sie können sich selbst nicht löschen.",
+ "miscuserexist" => "Der Benutzer existiert bereits.",
+ "miscnofinduser" => "Kann Benutzer nicht finden.",
+);
+$GLOBALS["messages"] = array(
+ // links
+ "permlink" => "RECHTE ÄNDERN",
+ "editlink" => "BEARBEITEN",
+ "downlink" => "HERUNTERLADEN",
+ "uplink" => "HÖHER",
+ "homelink" => "HOME",
+ "reloadlink" => "ERNEUERN",
+ "copylink" => "KOPIEREN",
+ "movelink" => "VERSETZEN",
+ "dellink" => "LÖSCHEN",
+ "comprlink" => "ARCHIVIEREN",
+ "adminlink" => "ADMINISTRATION",
+ "logoutlink" => "ABMELDEN",
+ "uploadlink" => "HOCHLADEN",
+ "searchlink" => "SUCHEN",
+
+ // list
+ "nameheader" => "Name",
+ "sizeheader" => "Größe",
+ "typeheader" => "Typ",
+ "modifheader" => "Geändert",
+ "permheader" => "Rechte",
+ "actionheader" => "Aktionen",
+ "pathheader" => "Pfad",
+
+ // buttons
+ "btncancel" => "Abbrechen",
+ "btnsave" => "Speichern",
+ "btnchange" => "Ändern",
+ "btnreset" => "Zurücksetzen",
+ "btnclose" => "Schließen",
+ "btncreate" => "Anlegen",
+ "btnsearch" => "Suchen",
+ "btnupload" => "Hochladen",
+ "btncopy" => "Kopieren",
+ "btnmove" => "Verschieben",
+ "btnlogin" => "Anmelden",
+ "btnlogout" => "Abmelden",
+ "btnadd" => "Hinzufügen",
+ "btnedit" => "Ändern",
+ "btnremove" => "Löschen",
+
+ // actions
+ "actdir" => "Verzeichnis",
+ "actperms" => "Rechte ändern",
+ "actedit" => "Datei bearbeiten",
+ "actsearchresults" => "Suchergebnisse",
+ "actcopyitems" => "Objekt(e) kopieren",
+ "actcopyfrom" => "Kopiere von /%s nach /%s ",
+ "actmoveitems" => "Objekt(e) verschieben",
+ "actmovefrom" => "Versetze von /%s nach /%s ",
+ "actlogin" => "Anmelden",
+ "actloginheader" => "Melden sie sich an um QuiXplorer zu benutzen",
+ "actadmin" => "Administration",
+ "actchpwd" => "Passwort ändern",
+ "actusers" => "Benutzer",
+ "actarchive" => "Objekt(e) archivieren",
+ "actupload" => "Datei(en) hochladen",
+
+ // misc
+ "miscitems" => "Objekt(e)",
+ "miscfree" => "Freier Speicher",
+ "miscusername" => "Benutzername",
+ "miscpassword" => "Passwort",
+ "miscoldpass" => "Altes Passwort",
+ "miscnewpass" => "Neues Passwort",
+ "miscconfpass" => "Bestätige Passwort",
+ "miscconfnewpass" => "Bestätige neues Passwort",
+ "miscchpass" => "Ändere Passwort",
+ "mischomedir" => "Home-Verzeichnis",
+ "mischomeurl" => "Home URL",
+ "miscshowhidden" => "Versteckte Objekte anzeigen",
+ "mischidepattern" => "Versteck-Filter",
+ "miscperms" => "Rechte",
+ "miscuseritems" => "(Name, Home-Verzeichnis, versteckte Objekte anzeigen, Rechte, aktiviert)",
+ "miscadduser" => "Benutzer hinzufügen",
+ "miscedituser" => "Benutzer '%s' ändern",
+ "miscactive" => "Aktiviert",
+ "misclang" => "Sprache",
+ "miscnoresult" => "Suche ergebnislos.",
+ "miscsubdirs" => "Suche in Unterverzeichnisse",
+ "miscpermnames" => array("Nur ansehen","Ändern","Passwort ändern",
+ "Ändern & Passwort ändern","Administrator"),
+ "miscyesno" => array("Ja","Nein","J","N"),
+ "miscchmod" => array("Besitzer", "Gruppe", "Publik"),
+);
+?>
\ No newline at end of file
diff --git a/Modules/Downloads/lang/de_mimes.php b/Modules/Downloads/lang/de_mimes.php
new file mode 100644
index 0000000..9a382da
--- /dev/null
+++ b/Modules/Downloads/lang/de_mimes.php
@@ -0,0 +1,60 @@
+ "Verzeichnis",
+ "exe" => "Programm",
+ "file" => "Datei",
+
+ // text
+ "text" => "Text Dokument",
+
+ // programming
+ "php" => "PHP Script",
+ "sql" => "SQL Datei",
+ "perl" => "PERL Script",
+ "html" => "HTML Seite",
+ "js" => "Javascript Datei",
+ "css" => "CSS Datei",
+ "cgi" => "CGI Script",
+ // C++
+ "cpps" => "C++ Quellcode",
+ "cpph" => "C++ Header Datei",
+ // Java
+ "javas" => "Java Quellcode",
+ "javac" => "Java Klasse Datei",
+ // Pascal
+ "pas" => "Pascal Quellcode",
+
+ // images
+ "gif" => "GIF Bild",
+ "jpg" => "JPG Bild",
+ "bmp" => "BMP Bild",
+ "png" => "PNG Bild",
+
+ // compressed
+ "zip" => "ZIP Archiv",
+ "tar" => "TAR Archiv",
+ "gzip" => "GZIP Archiv",
+ "bzip2" => "BZIP2 Archiv",
+ "rar" => "RAR Archiv",
+
+ // music
+ "mp3" => "MP3 Audio Datei",
+ "wav" => "WAV Audio Datei",
+ "midi" => "MIDI Audio Datei",
+ "real" => "RealAudio Datei",
+
+ // movie
+ "mpg" => "MPG Video Datei",
+ "mov" => "Movie Datei",
+ "avi" => "AVI Video Datei",
+ "flash" => "Flash Movie Datei",
+
+ // Micosoft / Adobe
+ "word" => "Word Dokument",
+ "excel" => "Excel Dokument",
+ "pdf" => "PDF Datei"
+); ?>
\ No newline at end of file
diff --git a/Modules/Downloads/lang/en.php b/Modules/Downloads/lang/en.php
new file mode 100644
index 0000000..384d09d
--- /dev/null
+++ b/Modules/Downloads/lang/en.php
@@ -0,0 +1,158 @@
+ "ERROR(S)",
+ "back" => "Go Back",
+
+ // root
+ "home" => "The home directory doesn't exist, check your settings.",
+ "abovehome" => "The current directory may not be above the home directory.",
+ "targetabovehome" => "The target directory may not be above the home directory.",
+
+ // exist
+ "direxist" => "This directory doesn't exist.",
+ //"filedoesexist" => "This file already exists.",
+ "fileexist" => "This file doesn't exist.",
+ "itemdoesexist" => "This item already exists.",
+ "itemexist" => "This item doesn't exist.",
+ "targetexist" => "The target directory doesn't exist.",
+ "targetdoesexist" => "The target item already exists.",
+
+ // open
+ "opendir" => "Unable to open directory.",
+ "readdir" => "Unable to read directory.",
+
+ // access
+ "accessdir" => "You are not allowed to access this directory.",
+ "accessfile" => "You are not allowed to access this file.",
+ "accessitem" => "You are not allowed to access this item.",
+ "accessfunc" => "You are not allowed to use this function.",
+ "accesstarget" => "You are not allowed to access the target directory.",
+
+ // actions
+ "permread" => "Getting permissions failed.",
+ "permchange" => "Permission-change failed.",
+ "openfile" => "File opening failed.",
+ "savefile" => "File saving failed.",
+ "createfile" => "File creation failed.",
+ "createdir" => "Directory creation failed.",
+ "uploadfile" => "File upload failed.",
+ "copyitem" => "Copying failed.",
+ "moveitem" => "Moving failed.",
+ "delitem" => "Deleting failed.",
+ "chpass" => "Changing password failed.",
+ "deluser" => "Removing user failed.",
+ "adduser" => "Adding user failed.",
+ "saveuser" => "Saving user failed.",
+ "searchnothing" => "You must supply something to search for.",
+
+ // misc
+ "miscnofunc" => "Function unavailable.",
+ "miscfilesize" => "File exceeds maximum size.",
+ "miscfilepart" => "File was only partially uploaded.",
+ "miscnoname" => "You must supply a name.",
+ "miscselitems" => "You haven't selected any item(s).",
+ "miscdelitems" => "Are you sure you want to delete these \"+num+\" item(s)?",
+ "miscdeluser" => "Are you sure you want to delete user '\"+user+\"'?",
+ "miscnopassdiff" => "New password doesn't differ from current.",
+ "miscnopassmatch" => "Passwords don't match.",
+ "miscfieldmissed" => "You missed an important field.",
+ "miscnouserpass" => "Username or password incorrect.",
+ "miscselfremove" => "You can't remove yourself.",
+ "miscuserexist" => "User already exists.",
+ "miscnofinduser" => "Can't find user.",
+);
+$GLOBALS["messages"] = array(
+ // links
+ "permlink" => "CHANGE PERMISSIONS",
+ "editlink" => "EDIT",
+ "downlink" => "DOWNLOAD",
+ "uplink" => "UP",
+ "homelink" => "HOME",
+ "reloadlink" => "RELOAD",
+ "copylink" => "COPY",
+ "movelink" => "MOVE",
+ "dellink" => "DELETE",
+ "comprlink" => "ARCHIVE",
+ "adminlink" => "ADMIN",
+ "logoutlink" => "LOGOUT",
+ "uploadlink" => "UPLOAD",
+ "searchlink" => "SEARCH",
+
+ // list
+ "nameheader" => "Name",
+ "sizeheader" => "Size",
+ "typeheader" => "Type",
+ "modifheader" => "Modified",
+ "permheader" => "Perm's",
+ "actionheader" => "Actions",
+ "pathheader" => "Path",
+
+ // buttons
+ "btncancel" => "Cancel",
+ "btnsave" => "Save",
+ "btnchange" => "Change",
+ "btnreset" => "Reset",
+ "btnclose" => "Close",
+ "btncreate" => "Create",
+ "btnsearch" => "Search",
+ "btnupload" => "Upload",
+ "btncopy" => "Copy",
+ "btnmove" => "Move",
+ "btnlogin" => "Login",
+ "btnlogout" => "Logout",
+ "btnadd" => "Add",
+ "btnedit" => "Edit",
+ "btnremove" => "Remove",
+
+ // actions
+ "actdir" => "Directory",
+ "actperms" => "Change permissions",
+ "actedit" => "Edit file",
+ "actsearchresults" => "Search results",
+ "actcopyitems" => "Copy item(s)",
+ "actcopyfrom" => "Copy from /%s to /%s ",
+ "actmoveitems" => "Move item(s)",
+ "actmovefrom" => "Move from /%s to /%s ",
+ "actlogin" => "Login",
+ "actloginheader" => "Login to use QuiXplorer",
+ "actadmin" => "Administration",
+ "actchpwd" => "Change password",
+ "actusers" => "Users",
+ "actarchive" => "Archive item(s)",
+ "actupload" => "Upload file(s)",
+
+ // misc
+ "miscitems" => "Item(s)",
+ "miscfree" => "Free",
+ "miscusername" => "Username",
+ "miscpassword" => "Password",
+ "miscoldpass" => "Old password",
+ "miscnewpass" => "New password",
+ "miscconfpass" => "Confirm password",
+ "miscconfnewpass" => "Confirm new password",
+ "miscchpass" => "Change password",
+ "mischomedir" => "Home directory",
+ "mischomeurl" => "Home URL",
+ "miscshowhidden" => "Show hidden items",
+ "mischidepattern" => "Hide pattern",
+ "miscperms" => "Permissions",
+ "miscuseritems" => "(name, home directory, show hidden items, permissions, active)",
+ "miscadduser" => "add user",
+ "miscedituser" => "edit user '%s'",
+ "miscactive" => "Active",
+ "misclang" => "Language",
+ "miscnoresult" => "No results available.",
+ "miscsubdirs" => "Search subdirectories",
+ "miscpermnames" => array("View only","Modify","Change password","Modify & Change password",
+ "Administrator"),
+ "miscyesno" => array("Yes","No","Y","N"),
+ "miscchmod" => array("Owner", "Group", "Public"),
+);
+?>
\ No newline at end of file
diff --git a/Modules/Downloads/lang/en_mimes.php b/Modules/Downloads/lang/en_mimes.php
new file mode 100644
index 0000000..7aab230
--- /dev/null
+++ b/Modules/Downloads/lang/en_mimes.php
@@ -0,0 +1,60 @@
+ "Directory",
+ "exe" => "Executable File",
+ "file" => "File",
+
+ // text
+ "text" => "Text File",
+
+ // programming
+ "php" => "PHP Script",
+ "sql" => "SQL File",
+ "perl" => "PERL Script",
+ "html" => "HTML Page",
+ "js" => "Javascript File",
+ "css" => "CSS File",
+ "cgi" => "CGI Script",
+ // C++
+ "cpps" => "C++ Source File",
+ "cpph" => "C++ Header File",
+ // Java
+ "javas" => "Java Source File",
+ "javac" => "Java Class File",
+ // Pascal
+ "pas" => "Pascal File",
+
+ // images
+ "gif" => "GIF Picture",
+ "jpg" => "JPG Picture",
+ "bmp" => "BMP Picture",
+ "png" => "PNG Picture",
+
+ // compressed
+ "zip" => "ZIP Archive",
+ "tar" => "TAR Archive",
+ "gzip" => "GZIP Archive",
+ "bzip2" => "BZIP2 Archive",
+ "rar" => "RAR Archive",
+
+ // music
+ "mp3" => "MP3 Audio File",
+ "wav" => "WAV Audio File",
+ "midi" => "MIDI Audio File",
+ "real" => "RealAudio File",
+
+ // movie
+ "mpg" => "MPG Video File",
+ "mov" => "Movie File",
+ "avi" => "AVI Video File",
+ "flash" => "Flash Movie File",
+
+ // Micosoft / Adobe
+ "word" => "Word Document",
+ "excel" => "Excel Document",
+ "pdf" => "PDF File"
+); ?>
\ No newline at end of file
diff --git a/Modules/Downloads/lang/es.php b/Modules/Downloads/lang/es.php
new file mode 100644
index 0000000..165d0a2
--- /dev/null
+++ b/Modules/Downloads/lang/es.php
@@ -0,0 +1,157 @@
+ "ERROR(ES)",
+ "back" => "Ir Atrás",
+
+ // root
+ "home" => "El directorio home no existe, revise su configuración.",
+ "abovehome" => "El directorio actual no puede estar arriba del directorio home.",
+ "targetabovehome" => "El directorio objetivo no puede estar arriba del directorio home.",
+
+ // exist
+ "direxist" => "Este directorio no existe.",
+ //"filedoesexist" => "Este archivo ya existe.",
+ "fileexist" => "Este archivo no existe.",
+ "itemdoesexist" => "Este artículo ya existe.",
+ "itemexist" => "Este artículo no existe.",
+ "targetexist" => "El directorio objetivo no existe.",
+ "targetdoesexist" => "El artículo objetivo ya existe.",
+
+ // open
+ "opendir" => "Incapaz de abrir directorio.",
+ "readdir" => "Incapaz de leer directorio.",
+
+ // access
+ "accessdir" => "Ud. no está permitido accesar este directorio.",
+ "accessfile" => "Ud. no está permitido accesar a este archivo.",
+ "accessitem" => "Ud. no está permitido accesar a este artículo.",
+ "accessfunc" => "Ud. no está permitido usar esta funcion.",
+ "accesstarget" => "Ud. no está permitido accesar al directorio objetivo.",
+
+ // actions
+ "permread" => "Fracaso reuniendo permisos.",
+ "permchange" => "Fracaso en Cambio de permisos.",
+ "openfile" => "Fracaso abriendo archivo.",
+ "savefile" => "Fracaso guardando archivo.",
+ "createfile" => "Fracaso creando archivo.",
+ "createdir" => "Fracaso creando Directorio.",
+ "uploadfile" => "Fracaso subiendo archivo.",
+ "copyitem" => "Fracaso Copiando.",
+ "moveitem" => "Fracaso Moviendo.",
+ "delitem" => "Fracaso Borrando.",
+ "chpass" => "Fracaso Cambiando password.",
+ "deluser" => "Fracaso Removiendo usuario.",
+ "adduser" => "Fracaso Agragando usuario.",
+ "saveuser" => "Fracaso Guardadno usuario.",
+ "searchnothing" => "Ud. debe suministrar algo para la busqueda.",
+
+ // misc
+ "miscnofunc" => "Función no disponible.",
+ "miscfilesize" => "Archivo excede maximo tamaño.",
+ "miscfilepart" => "Archivo fue parcialmente subido.",
+ "miscnoname" => "Ud. debe suministrar un nombre.",
+ "miscselitems" => "Ud. no tiene seleccionado(s) ningun artículo.",
+ "miscdelitems" => "Está seguro de querer borrar este(os) \"+num+\" artículo(s)?",
+ "miscdeluser" => "Está seguro de querer borrar usuario '\"+user+\"'?",
+ "miscnopassdiff" => "Nuevo password no difiere del actual.",
+ "miscnopassmatch" => "No coinciden los Passwords.",
+ "miscfieldmissed" => "Ud. falló en un importante campo.",
+ "miscnouserpass" => "Usuario o password incorrecto.",
+ "miscselfremove" => "Ud. no puede borrarse a si mismo.",
+ "miscuserexist" => "Usuario ya existe.",
+ "miscnofinduser" => "No se puede encontrar usuario.",
+);
+$GLOBALS["messages"] = array(
+ // links
+ "permlink" => "PORMISOS CAMBIADOS",
+ "editlink" => "EDITAR",
+ "downlink" => "DESCARGAR",
+ "uplink" => "ARRIBA",
+ "homelink" => "HOME",
+ "reloadlink" => "RECARGAR",
+ "copylink" => "COPIAR",
+ "movelink" => "MOVER",
+ "dellink" => "BORRAR",
+ "comprlink" => "ARCHIVAR",
+ "adminlink" => "ADMINISTRAR",
+ "logoutlink" => "SALIR",
+ "uploadlink" => "SUBIR",
+ "searchlink" => "BÚSQUEDA",
+
+ // list
+ "nameheader" => "Nombre",
+ "sizeheader" => "Tamaño",
+ "typeheader" => "Tipo",
+ "modifheader" => "Modificado",
+ "permheader" => "Permisos",
+ "actionheader" => "Acciones",
+ "pathheader" => "Ruta",
+
+ // buttons
+ "btncancel" => "Cancelar",
+ "btnsave" => "Grabar",
+ "btnchange" => "Cambiar",
+ "btnreset" => "Restablecer",
+ "btnclose" => "Cerrar",
+ "btncreate" => "Crear",
+ "btnsearch" => "Buscar",
+ "btnupload" => "Subir",
+ "btncopy" => "Copiar",
+ "btnmove" => "Mover",
+ "btnlogin" => "Login",
+ "btnlogout" => "Salir",
+ "btnadd" => "Añadir",
+ "btnedit" => "Editar",
+ "btnremove" => "Remover",
+
+ // actions
+ "actdir" => "Directorio",
+ "actperms" => "Cambiar permisos",
+ "actedit" => "Editar archivo",
+ "actsearchresults" => "Resultado de busqueda.",
+ "actcopyitems" => "Copiar artículos(s)",
+ "actcopyfrom" => "Copia de /%s a /%s ",
+ "actmoveitems" => "Mover artículo(s)",
+ "actmovefrom" => "Mover de /%s a /%s ",
+ "actlogin" => "Login",
+ "actloginheader" => "Login para usar QuiXplorer",
+ "actadmin" => "Administración",
+ "actchpwd" => "Cambiar password",
+ "actusers" => "Usuarios",
+ "actarchive" => "Archivar item(s)",
+ "actupload" => "Subir Archivo(s)",
+
+ // misc
+ "miscitems" => "Artículo(s)",
+ "miscfree" => "Libre",
+ "miscusername" => "Nombre de usuario",
+ "miscpassword" => "Password",
+ "miscoldpass" => "Password Antiguo",
+ "miscnewpass" => "Password Nuevo",
+ "miscconfpass" => "Confirmar password",
+ "miscconfnewpass" => "Confirmar nuevo password",
+ "miscchpass" => "Cambiar password",
+ "mischomedir" => "Directorio Home",
+ "mischomeurl" => "URL Home",
+ "miscshowhidden" => "Mostrar artículos ocultos",
+ "mischidepattern" => "Ocultar patrón",
+ "miscperms" => "Permisos",
+ "miscuseritems" => "(nombre, directorio home, mostrar artículos ocultos, permisos, activar)",
+ "miscadduser" => "añadir usuario",
+ "miscedituser" => "editar usario '%s'",
+ "miscactive" => "Activar",
+ "misclang" => "Lenguaje",
+ "miscnoresult" => "Resultado(s) no disponible(s).",
+ "miscsubdirs" => "Búsqueda de subdirectorios",
+ "miscpermnames" => array("Solo ver","Modificar","Cambiar password","Modificar & Cambiar password", "Administrador"),
+ "miscyesno" => array("Si","No","S","N"),
+ "miscchmod" => array("Propietario", "Grupo", "Público"),
+);
+?>
\ No newline at end of file
diff --git a/Modules/Downloads/lang/es_mimes.php b/Modules/Downloads/lang/es_mimes.php
new file mode 100644
index 0000000..0c2d8d6
--- /dev/null
+++ b/Modules/Downloads/lang/es_mimes.php
@@ -0,0 +1,60 @@
+ "Directorio",
+ "exe" => "Archivo Ejecutable",
+ "file" => "Archivo",
+
+ // text
+ "text" => "Archivo de Texto",
+
+ // programming
+ "php" => "Script PHP",
+ "sql" => "Archivo SQL",
+ "perl" => "Script PERL",
+ "html" => "Pagina HTML",
+ "js" => "Archivo Javascript",
+ "css" => "Archivo CSS",
+ "cgi" => "Script CGI",
+ // C++
+ "cpps" => "Archivo C++ Source",
+ "cpph" => "Archivo C++ Header",
+ // Java
+ "javas" => "Archivo Java Source",
+ "javac" => "Archivo Java Class",
+ // Pascal
+ "pas" => "Archivo Pascal",
+
+ // images
+ "gif" => "Imagen GIF",
+ "jpg" => "Imagen JPG",
+ "bmp" => "Imagen BMP",
+ "png" => "Imagen PNG",
+
+ // compressed
+ "zip" => "Archivo ZIP",
+ "tar" => "Archivo TAR",
+ "gzip" => "Archivo GZIP",
+ "bzip2" => "Archivo BZIP2",
+ "rar" => "Archivo RAR",
+
+ // music
+ "mp3" => "Archivo MP3 Audio",
+ "wav" => "Archivo WAV Audio",
+ "midi" => "Archivo MIDI Audio",
+ "real" => "Archivo RealAudio",
+
+ // movie
+ "mpg" => "Archivo MPG Video",
+ "mov" => "Archivo Movie",
+ "avi" => "Archivo AVI Video",
+ "flash" => "Archivo Flash Movie",
+
+ // Micosoft / Adobe
+ "word" => "Documento Word",
+ "excel" => "Documento Excel",
+ "pdf" => "Archivo PDF"
+); ?>
diff --git a/Modules/Downloads/lang/fr.php b/Modules/Downloads/lang/fr.php
new file mode 100644
index 0000000..4b3b010
--- /dev/null
+++ b/Modules/Downloads/lang/fr.php
@@ -0,0 +1,158 @@
+ "ERREUR(S)",
+ "back" => "Page précédente",
+
+ // root
+ "home" => "Le répertoire home n'existe pas, vérifiez vos préférences.",
+ "abovehome" => "Le répertoire courant n'a pas l'air d'etre au-dessus du répertoire home.",
+ "targetabovehome" => "Le répertoire cible n'a pas l'air d'etre au-dessus du répertoire home.",
+
+ // exist
+ "direxist" => "Ce répertoire n'existe pas.",
+ //"filedoesexist" => "Ce fichier existe deja.",
+ "fileexist" => "Ce fichier n'existe pas.",
+ "itemdoesexist" => "Cet item existe deja.",
+ "itemexist" => "Cet item n'existe pas.",
+ "targetexist" => "Le répertoire cible n'existe pas.",
+ "targetdoesexist" => "L'item cible existe deja.",
+
+ // open
+ "opendir" => "Impossible d'ouvrir le répertoire.",
+ "readdir" => "Impossible de lire le répertoire.",
+
+ // access
+ "accessdir" => "Vous n'etes pas autorisé a acceder a ce répertoire.",
+ "accessfile" => "Vous n'etes pas autorisé a accéder a ce fichier.",
+ "accessitem" => "Vous n'etes pas autorisé a accéder a cet item.",
+ "accessfunc" => "Vous ne pouvez pas utiliser cette fonction.",
+ "accesstarget" => "Vous n'etes pas autorisé a accéder au repertoire cible.",
+
+ // actions
+ "permread" => "Lecture des permissions échouée.",
+ "permchange" => "Changement des permissions échoué.",
+ "openfile" => "Ouverture du fichier échouée.",
+ "savefile" => "Sauvegarde du fichier échouée.",
+ "createfile" => "Création du fichier échouée.",
+ "createdir" => "Création du répertoire échouée.",
+ "uploadfile" => "Envoie du fichier échoué.",
+ "copyitem" => "La copie a échouée.",
+ "moveitem" => "Le déplacement a échoué.",
+ "delitem" => "La supression a échouée.",
+ "chpass" => "Le changement de mot de passe a échoué.",
+ "deluser" => "La supression de l'usager a échouée.",
+ "adduser" => "L'ajout de l'usager a échouée.",
+ "saveuser" => "La sauvegarde de l'usager a échouée.",
+ "searchnothing" => "Vous devez entrez quelquechose à chercher.",
+
+ // misc
+ "miscnofunc" => "Fonctionalité non disponible.",
+ "miscfilesize" => "La taille du fichier excède la taille maximale autorisée.",
+ "miscfilepart" => "L'envoi du fichier n'a pas été complété.",
+ "miscnoname" => "Vous devez entrer un nom.",
+ "miscselitems" => "Vous n'avez sélectionné aucuns item(s).",
+ "miscdelitems" => "Êtes-vous certain de vouloir supprimer ces \"+num+\" item(s)?",
+ "miscdeluser" => "Êtes-vous certain de vouloir supprimer l'usager '\"+user+\"'?",
+ "miscnopassdiff" => "Le nouveau mot de passe est indentique au précédent.",
+ "miscnopassmatch" => "Les mots de passe diffèrent.",
+ "miscfieldmissed" => "Un champs requis n'a pas été rempli.",
+ "miscnouserpass" => "Nom d'usager ou mot de passe invalide.",
+ "miscselfremove" => "Vous ne pouvez pas supprimer votre compte.",
+ "miscuserexist" => "Ce nom d'usager existe déjà.",
+ "miscnofinduser" => "Usager non trouvé.",
+);
+$GLOBALS["messages"] = array(
+ // links
+ "permlink" => "CHANGER LES PERMISSIONS",
+ "editlink" => "ÉDITER",
+ "downlink" => "TÉLÉCHARGER",
+ "uplink" => "PARENT",
+ "homelink" => "HOME",
+ "reloadlink" => "RAFRAÎCHIR",
+ "copylink" => "COPIER",
+ "movelink" => "DÉPLACER",
+ "dellink" => "SUPPRIMER",
+ "comprlink" => "ARCHIVER",
+ "adminlink" => "ADMINISTRATION",
+ "logoutlink" => "DÉCONNECTER",
+ "uploadlink" => "ENVOYER",
+ "searchlink" => "RECHERCHER",
+
+ // list
+ "nameheader" => "Nom",
+ "sizeheader" => "Taille",
+ "typeheader" => "Type",
+ "modifheader" => "Modifié",
+ "permheader" => "Perm's",
+ "actionheader" => "Actions",
+ "pathheader" => "Chemin",
+
+ // buttons
+ "btncancel" => "Annuler",
+ "btnsave" => "Sauver",
+ "btnchange" => "Changer",
+ "btnreset" => "Réinitialiser",
+ "btnclose" => "Fermer",
+ "btncreate" => "Créer",
+ "btnsearch" => "Chercher",
+ "btnupload" => "Envoyer",
+ "btncopy" => "Copier",
+ "btnmove" => "Déplacer",
+ "btnlogin" => "Connecter",
+ "btnlogout" => "Déconnecter",
+ "btnadd" => "Ajouter",
+ "btnedit" => "Éditer",
+ "btnremove" => "Supprimer",
+
+ // actions
+ "actdir" => "Répertoire",
+ "actperms" => "Changer les permissions",
+ "actedit" => "Éditer le fichier",
+ "actsearchresults" => "Résultats de la recherche",
+ "actcopyitems" => "Copier le(s) item(s)",
+ "actcopyfrom" => "Copier de /%s à /%s ",
+ "actmoveitems" => "Déplacer le(s) item(s)",
+ "actmovefrom" => "Déplacer de /%s à /%s ",
+ "actlogin" => "Connecter",
+ "actloginheader" => "Connecter pour utiliser QuiXplorer",
+ "actadmin" => "Administration",
+ "actchpwd" => "Changer le mot de passe",
+ "actusers" => "Usagers",
+ "actarchive" => "Archiver le(s) item(s)",
+ "actupload" => "Envoyer le(s) fichier(s)",
+
+ // misc
+ "miscitems" => "Item(s)",
+ "miscfree" => "Disponible",
+ "miscusername" => "Usager",
+ "miscpassword" => "Mot de passe",
+ "miscoldpass" => "Ancien mot de passe",
+ "miscnewpass" => "Nouveau mot de passe",
+ "miscconfpass" => "Confirmer le mot de passe",
+ "miscconfnewpass" => "Confirmer le nouveau mot de passe",
+ "miscchpass" => "Changer le mot de passe",
+ "mischomedir" => "Répertoire home",
+ "mischomeurl" => "URL home",
+ "miscshowhidden" => "Voir les items cachés",
+ "mischidepattern" => "Cacher pattern",
+ "miscperms" => "Permissions",
+ "miscuseritems" => "(nom, répertoire home, Voir les items cachés, permissions, actif)",
+ "miscadduser" => "ajouter un usager",
+ "miscedituser" => "editer l'usager '%s'",
+ "miscactive" => "Actif",
+ "misclang" => "Langage",
+ "miscnoresult" => "Aucun résultats.",
+ "miscsubdirs" => "Rechercher dans les sous-répertoires",
+ "miscpermnames" => array("Lecture seulement","Modifier","Changement le mot de passe","Modifier & Changer le mot de passe",
+ "Administrateur"),
+ "miscyesno" => array("Oui","Non","O","N"),
+ "miscchmod" => array("Propriétaire", "Groupe", "Publique"),
+);
+?>
\ No newline at end of file
diff --git a/Modules/Downloads/lang/fr_mimes.php b/Modules/Downloads/lang/fr_mimes.php
new file mode 100644
index 0000000..f880a52
--- /dev/null
+++ b/Modules/Downloads/lang/fr_mimes.php
@@ -0,0 +1,60 @@
+ "Répertoire",
+ "exe" => "Exécutable",
+ "file" => "Fichier",
+
+ // text
+ "text" => "Fichier texte",
+
+ // programming
+ "php" => "Script PHP",
+ "sql" => "Fichier SQL",
+ "perl" => "Script PERL",
+ "html" => "Page HTML",
+ "js" => "Fichier Javascript",
+ "css" => "Fichier CSS",
+ "cgi" => "Script CGI",
+ // C++
+ "cpps" => "Fichier source C++",
+ "cpph" => "Fichier source C++",
+ // Java
+ "javas" => "Fichier source Java",
+ "javac" => "Fichier classe Java",
+ // Pascal
+ "pas" => "Fichie Pascal",
+
+ // images
+ "gif" => "Image GIF",
+ "jpg" => "Image JPG",
+ "bmp" => "Image BMP",
+ "png" => "Image PNG",
+
+ // compressed
+ "zip" => "Archive ZIP",
+ "tar" => "Archive TAR",
+ "gzip" => "Archive GZIP",
+ "bzip2" => "Archive BZIP2",
+ "rar" => "Archive RAR",
+
+ // music
+ "mp3" => "Fichier audio MP3",
+ "wav" => "Fichier audio WAV",
+ "midi" => "Fichier audio MIDI",
+ "real" => "Fichier RealAudio",
+
+ // movie
+ "mpg" => "Fichier vidéo MPG",
+ "mov" => "Fichier Vidéo",
+ "avi" => "Fichier vidéo AVI",
+ "flash" => "Fichier vidéo Flash",
+
+ // Micosoft / Adobe
+ "word" => "Document Word",
+ "excel" => "Document Excel",
+ "pdf" => "Fichier PDF"
+); ?>
\ No newline at end of file
diff --git a/Modules/Downloads/lang/nl.php b/Modules/Downloads/lang/nl.php
new file mode 100644
index 0000000..ca5e441
--- /dev/null
+++ b/Modules/Downloads/lang/nl.php
@@ -0,0 +1,158 @@
+ "FOUT(EN)",
+ "back" => "Ga Terug",
+
+ // root
+ "home" => "De thuis map bestaat niet, controleer uw instellingen.",
+ "abovehome" => "De huidige map mag niet hoger liggen dan de thuis map.",
+ "targetabovehome" => "De doel map mag niet hoger liggen dan de thuis map.",
+
+ // exist
+ "direxist" => "Deze map bestaat niet.",
+ //"filedoesexist" => "Dit bestand bestaat al.",
+ "fileexist" => "Dit bestand bestaat niet.",
+ "itemdoesexist" => "Dit item bestaat al.",
+ "itemexist" => "Dit item bestaat niet.",
+ "targetexist" => "De doel map bestaat niet.",
+ "targetdoesexist" => "Het doel item bestaat al.",
+
+ // open
+ "opendir" => "Kan map niet openen.",
+ "readdir" => "Kan map niet lezen.",
+
+ // access
+ "accessdir" => "U hebt geen toegang tot deze map.",
+ "accessfile" => "U hebt geen toegang tot dit bestand.",
+ "accessitem" => "U hebt geen toegang tot dit item.",
+ "accessfunc" => "U hebt geen rechten deze functie te gebruiken.",
+ "accesstarget" => "U hebt geen toegang tot de doel map.",
+
+ // actions
+ "permread" => "Rechten opvragen mislukt.",
+ "permchange" => "Rechten wijzigen mislukt.",
+ "openfile" => "Bestand openen mislukt.",
+ "savefile" => "Bestand opslaan mislukt.",
+ "createfile" => "Bestand maken mislukt.",
+ "createdir" => "Map maken mislukt.",
+ "uploadfile" => "Bestand uploaden mislukt.",
+ "copyitem" => "Kopiëren mislukt.",
+ "moveitem" => "Verplaatsen mislukt.",
+ "delitem" => "Verwijderen mislukt.",
+ "chpass" => "Wachtwoord wijzigen mislukt.",
+ "deluser" => "Gebruiker verwijderen mislukt.",
+ "adduser" => "Gebruiker toevoegen mislukt.",
+ "saveuser" => "Gebruiker opslaan mislukt.",
+ "searchnothing" => "U moet iets te zoeken opgeven.",
+
+ // misc
+ "miscnofunc" => "Functie niet beschikbaar.",
+ "miscfilesize" => "Bestand is groter dan de maximum grootte.",
+ "miscfilepart" => "Bestand is maar gedeeltelijk geupload.",
+ "miscnoname" => "U moet een naam opgeven.",
+ "miscselitems" => "U hebt geen item(s) geselecteerd.",
+ "miscdelitems" => "Weet u zeker dat u deze \"+num+\" item(s) wilt verwijderen?",
+ "miscdeluser" => "Weet u zeker dat u gebruiker '\"+user+\"' wilt verwijderen?",
+ "miscnopassdiff" => "Het nieuwe wachtwoord verschilt niet van het huidige.",
+ "miscnopassmatch" => "Wachtwoorden komen niet overeen.",
+ "miscfieldmissed" => "U bent een belangrijk veld vergeten in te vullen.",
+ "miscnouserpass" => "Gebruiker of wachtwoord onjuist.",
+ "miscselfremove" => "U kunt zichzelf niet verwijderen.",
+ "miscuserexist" => "De gebruiker bestaat al.",
+ "miscnofinduser" => "Kan gebruiker niet vinden.",
+);
+$GLOBALS["messages"] = array(
+ // links
+ "permlink" => "RECHTEN WIJZIGEN",
+ "editlink" => "BEWERKEN",
+ "downlink" => "DOWNLOADEN",
+ "uplink" => "OMHOOG",
+ "homelink" => "THUIS",
+ "reloadlink" => "VERNIEUWEN",
+ "copylink" => "KOPIËREN",
+ "movelink" => "VERPLAATSEN",
+ "dellink" => "VERWIJDEREN",
+ "comprlink" => "ARCHIVEREN",
+ "adminlink" => "BEHEER",
+ "logoutlink" => "AFMELDEN",
+ "uploadlink" => "UPLOADEN",
+ "searchlink" => "ZOEKEN",
+
+ // list
+ "nameheader" => "Naam",
+ "sizeheader" => "Grootte",
+ "typeheader" => "Type",
+ "modifheader" => "Gewijzigd",
+ "permheader" => "Rechten",
+ "actionheader" => "Acties",
+ "pathheader" => "Pad",
+
+ // buttons
+ "btncancel" => "Annuleren",
+ "btnsave" => "Opslaan",
+ "btnchange" => "Wijzigen",
+ "btnreset" => "Opnieuw",
+ "btnclose" => "Sluiten",
+ "btncreate" => "Maken",
+ "btnsearch" => "Zoeken",
+ "btnupload" => "Uploaden",
+ "btncopy" => "Kopiëren",
+ "btnmove" => "Verplaatsen",
+ "btnlogin" => "Aanmelden",
+ "btnlogout" => "Afmelden",
+ "btnadd" => "Toevoegen",
+ "btnedit" => "Bewerken",
+ "btnremove" => "Verwijderen",
+
+ // actions
+ "actdir" => "Map",
+ "actperms" => "Rechten wijzigen",
+ "actedit" => "Bestand bewerken",
+ "actsearchresults" => "Zoek resultaten",
+ "actcopyitems" => "Item(s) kopiëren",
+ "actcopyfrom" => "Kopieer van /%s naar /%s ",
+ "actmoveitems" => "Item(s) verplaatsen",
+ "actmovefrom" => "Verplaats van /%s naar /%s ",
+ "actlogin" => "Aanmelden",
+ "actloginheader" => "Meld u aan om QuiXplorer te gebruiken",
+ "actadmin" => "Beheer",
+ "actchpwd" => "Wachtwoord wijzigen",
+ "actusers" => "Gebruikers",
+ "actarchive" => "Item(s) archiveren",
+ "actupload" => "Bestand(en) uploaden",
+
+ // misc
+ "miscitems" => "Item(s)",
+ "miscfree" => "Beschikbaar",
+ "miscusername" => "Gebruikersnaam",
+ "miscpassword" => "Wachtwoord",
+ "miscoldpass" => "Oud wachtwoord",
+ "miscnewpass" => "Nieuw wachtwoord",
+ "miscconfpass" => "Bevestig wachtwoord",
+ "miscconfnewpass" => "Bevestig nieuw wachtwoord",
+ "miscchpass" => "Wijzig wachtwoord",
+ "mischomedir" => "Thuismap",
+ "mischomeurl" => "Thuis URL",
+ "miscshowhidden" => "Verborgen items weergeven",
+ "mischidepattern" => "Verberg patroon",
+ "miscperms" => "Rechten",
+ "miscuseritems" => "(naam, thuis map, verborgen items weergeven, rechten, geactiveerd)",
+ "miscadduser" => "gebruiker toevoegen",
+ "miscedituser" => "gebruiker '%s' bewerken",
+ "miscactive" => "Geactiveerd",
+ "misclang" => "Taal",
+ "miscnoresult" => "Geen resultaten beschikbaar.",
+ "miscsubdirs" => "Zoek in subdirectories",
+ "miscpermnames" => array("Alleen kijken","Wijzigen","Wachtwoord wijzigen",
+ "Wijzigen & Wachtwoord wijzigen","Beheerder"),
+ "miscyesno" => array("Ja","Nee","J","N"),
+ "miscchmod" => array("Eigenaar", "Groep", "Publiek"),
+);
+?>
\ No newline at end of file
diff --git a/Modules/Downloads/lang/nl_mimes.php b/Modules/Downloads/lang/nl_mimes.php
new file mode 100644
index 0000000..52960ec
--- /dev/null
+++ b/Modules/Downloads/lang/nl_mimes.php
@@ -0,0 +1,60 @@
+ "Map",
+ "exe" => "Programma",
+ "file" => "Bestand",
+
+ // text
+ "text" => "Tekstbestand",
+
+ // programming
+ "php" => "PHP Script",
+ "sql" => "SQL Bestand",
+ "perl" => "PERL Script",
+ "html" => "HTML Pagina",
+ "js" => "Javascript Bestand",
+ "css" => "CSS Bestand",
+ "cgi" => "CGI Script",
+ // C++
+ "cpps" => "C++ Bronbestand",
+ "cpph" => "C++ Header Bestand",
+ // Java
+ "javas" => "Java Bronbestand",
+ "javac" => "Java Class Bestand",
+ // Pascal
+ "pas" => "Pascal Bestand",
+
+ // images
+ "gif" => "GIF Afbeelding",
+ "jpg" => "JPG Afbeelding",
+ "bmp" => "BMP Afbeelding",
+ "png" => "PNG Afbeelding",
+
+ // compressed
+ "zip" => "ZIP Archief",
+ "tar" => "TAR Archief",
+ "gzip" => "GZIP Archief",
+ "bzip2" => "BZIP2 Archief",
+ "rar" => "RAR Archief",
+
+ // music
+ "mp3" => "MP3 Audio Bestand",
+ "wav" => "WAV Audio Bestand",
+ "midi" => "MIDI Audio Bestand",
+ "real" => "RealAudio Bestand",
+
+ // movie
+ "mpg" => "MPG Video Bestand",
+ "mov" => "Movie Bestand",
+ "avi" => "AVI Video Bestand",
+ "flash" => "Flash Movie Bestand",
+
+ // Micosoft / Adobe
+ "word" => "Word Document",
+ "excel" => "Excel Document",
+ "pdf" => "PDF Bestand"
+); ?>
\ No newline at end of file
diff --git a/Modules/Downloads/lang/ru.php b/Modules/Downloads/lang/ru.php
new file mode 100644
index 0000000..7044cb5
--- /dev/null
+++ b/Modules/Downloads/lang/ru.php
@@ -0,0 +1,158 @@
+ "ÎØÈÁÊÀ(È)",
+ "back" => "Âåðíóòüñÿ",
+
+ // root
+ "home" => "Äîìàøíÿÿ äèðåêòîðèÿ íå ñóùåñòâóåò! Ïðîâåðüòå íàñòðîéêè.",
+ "abovehome" => "Òåêóùàÿ äèðåêòîðèÿ íå ìîæåò íàõîäèòñÿ âûøå äîìàøíåãî êàòàëîãà.",
+ "targetabovehome" => "Çàïðîøåííàÿ äèðåêòîðèÿ íå ìîæåò íàõîäèòñÿ âûøå äîìàøíåãî êàòàëîãà.",
+
+ // exist
+ "direxist" => "Äèðåêòîðèÿ íå ñóùåñòâóåò",
+ //"filedoesexist" => "Òàêîé ôàéë óæå ñóùåñòâóåò",
+ "fileexist" => "Òàêîãî ôàéëà íå ñóùåñòâóåò",
+ "itemdoesexist" => "Òàêîé îáúåêò óæå ñóùåñòâóåò",
+ "itemexist" => "Òàêîãî îáúåêòà ñóùåñòâóåò",
+ "targetexist" => "Íàçíà÷åííîé äèðåêòîðèè íå ñóùåñòâóåò",
+ "targetdoesexist" => "Íàçíà÷åííîãî îáúåêòà íå ñóùåñòâóåò",
+
+ // open
+ "opendir" => "Íåâîçìîæíî îòêðûòü äèðåêòîðèþ",
+ "readdir" => "Íåâîçìîæíî ïðî÷èòàòü äèðåêòîðèþ",
+
+ // access
+ "accessdir" => "Âàì çàïðåùåíî çàõîäèòü â äàííóþ äèðåêòîðèþ",
+ "accessfile" => "Âàì çàïðåùåíî èñïîëüçîâàòü äàííûé ôàéë",
+ "accessitem" => "Âàì çàïðåùåíî èñïîëüçîâàòü äàííûé îáúåêò",
+ "accessfunc" => "Âàì çàïðåùåíî èñïîëüçîâàòü äàííóþ ôóíêöèþ",
+ "accesstarget" => "Âàì çàïðåùåíî âõîäèòü â çàäàííóþ äèðåêòîðèþ",
+
+ // actions
+ "permread" => "Îøèáêà â ïîëó÷åíèè ïðàâ äîñòóïà",
+ "permchange" => "Îøèáêà â ñìåíå ïðàâ äîñòóïà",
+ "openfile" => "Ïðîâàë â îòêðûòèè ôàéëà",
+ "savefile" => "Ïðîâàë â ñîõðàíåíèè ôàéëà",
+ "createfile" => "Ïðîâàë â ñîçäàíèè ôàéëà",
+ "createdir" => "Ïðîâàë â ñîçäàíèè äèðåêòîðèè",
+ "uploadfile" => "Ïðîâàë â çàãðóçêå ôàéëà",
+ "copyitem" => "Ïðîâàë â êîïèðîâàíèè",
+ "moveitem" => "Ïðîâàë â ïåðåèìåíîâàíèè",
+ "delitem" => "Ïðîâàë â óäàëåíèè",
+ "chpass" => "Ïðîâàë â ñìåíå ïàðîëÿ",
+ "deluser" => "Ïðîâàë â óäàëåíèè ïîëüçîâàòåëÿ",
+ "adduser" => "Ïðîâàë â óäàëåíèè ïîëüçîâàòåëÿ",
+ "saveuser" => "Ïðîâàë â ñîõðàíåíèè ïîëüçîâàòåëÿ",
+ "searchnothing" => "Ñòðîêà ïîèñêà íå äîëæíà áûòü ïóñòîé",
+
+ // misc
+ "miscnofunc" => "Ôóíêöèÿ íåäîñòóïíà",
+ "miscfilesize" => "Ôàéë ïðåâûøàåò ìàêñèìàëüíûé ðàçìåð",
+ "miscfilepart" => "Ôàéë áûë çàãðóæåí ÷àñòè÷íî",
+ "miscnoname" => "Âû äîëæíû äàòü çàäàòü èìÿ",
+ "miscselitems" => "Âû íå âûáðàëè îáúåêò(û)",
+ "miscdelitems" => "Âû óâåðåíû, ÷òî õîòèòå óäàëèòü \"+num+\" îáúåêò(à/îâ)?",
+ "miscdeluser" => "Âû óâåðåíû, ÷òî õîòèòå óäàëèòü ïîëüçîâàòåëÿ '\"+user+\"'?",
+ "miscnopassdiff" => "Íîâûé ïàðîëü íå îòëè÷àåòñÿ îò òåêóùåãî",
+ "miscnopassmatch" => "Ïàðîëè íå ñîâïàäàþò",
+ "miscfieldmissed" => "Âû ïðîïóñòèëè âàæíîå ïîëå",
+ "miscnouserpass" => "Èìÿ ïîëüçîâàòåëÿ èëè ïàðîëü íå ïðàâèëüíû",
+ "miscselfremove" => "Âû íå ìîæåòå óäàëèòü ñàìîãî ñåáÿ",
+ "miscuserexist" => "Òàêîé ïîëüçîâàòåëü óæå ñóùåñòâóåò",
+ "miscnofinduser" => "Íåâîçìîæíî íàéòè ïîëüçîâàòåëÿ",
+);
+$GLOBALS["messages"] = array(
+ // links
+ "permlink" => "ÏÎÌÅÍßÒÜ ÏÐÀÂÀ ÄÎÑÒÓÏÀ",
+ "editlink" => "ÐÅÄÀÊÒÈÐÎÂÀÒÜ",
+ "downlink" => "ÑÊÀ×ÀÒÜ",
+ "uplink" => "ÍÀÂÅÐÕ",
+ "homelink" => "ÄÎÌÎÉ",
+ "reloadlink" => "ÎÁÍÎÂÈÒÜ",
+ "copylink" => "ÊÎÏÈÐÎÂÀÒÜ",
+ "movelink" => "ÏÅÐÅÌÅÑÒÈÒÜ",
+ "dellink" => "ÓÄÀËÈÒÜ",
+ "comprlink" => "ÀÐÕÈÂÈÐÎÂÀÒÜ",
+ "adminlink" => "ÀÄÌÈÍÈÑÒÐÈÐÎÂÀÍÈÅ",
+ "logoutlink" => "ÂÛÉÒÈ",
+ "uploadlink" => "ÇÀÊÀ×ÀÒÜ",
+ "searchlink" => "ÏÎÈÑÊ",
+
+ // list
+ "nameheader" => "Ôàéë",
+ "sizeheader" => "Ðàçìåð",
+ "typeheader" => "Òèï",
+ "modifheader" => "Èçìåíåí",
+ "permheader" => "Ïðàâà",
+ "actionheader" => "Äåéñòâèÿ",
+ "pathheader" => "Ïóòü",
+
+ // buttons
+ "btncancel" => "Îòìåíÿ",
+ "btnsave" => "Ñîõðàíèòü",
+ "btnchange" => "Èçìåíèòü",
+ "btnreset" => "Î÷èñòèòü",
+ "btnclose" => "Çàêðûòü",
+ "btncreate" => "Ñîçäàòü",
+ "btnsearch" => "Ïîèñê",
+ "btnupload" => "Çàêà÷àòü",
+ "btncopy" => "Êîïèðîâàòü",
+ "btnmove" => "Ïåðåìåñòèòü",
+ "btnlogin" => "Âîéòè",
+ "btnlogout" => "Âûéòè",
+ "btnadd" => "Äîáàâèòü",
+ "btnedit" => "Ðåäàêòèðîâàòü",
+ "btnremove" => "Óäàëèòü",
+
+ // actions
+ "actdir" => "Ïàïêà",
+ "actperms" => "Ïîìåíÿòü ïðàâà",
+ "actedit" => "Ïðàâèò ôàéë",
+ "actsearchresults" => "Ðåçóëüòàòû ïîèñêà",
+ "actcopyitems" => "Êîïèðîâàòü îáúåêò(û)",
+ "actcopyfrom" => "Êîïèðîâàòü èç /%s â /%s ",
+ "actmoveitems" => "Ïåðåìåñòèòü îáúåêò(û)",
+ "actmovefrom" => "Ïåðåìåñòèòü èç /%s â /%s ",
+ "actlogin" => "Âîéòè",
+ "actloginheader" => "Âîéòè, ÷òîáû íà÷àòü èñïîëüçîâàòü QuiXplorer",
+ "actadmin" => "Àäìèíèñòðèðîâàíèå",
+ "actchpwd" => "Ñìåíèòü ïàðîëü",
+ "actusers" => "Ïîëüçîâàòåëè",
+ "actarchive" => "Çààðõèâèðîâàòü îáúåêò(û)",
+ "actupload" => "Çàêà÷àòü ôàéë(û)",
+
+ // misc
+ "miscitems" => "Îáúåêò(à/îâ)",
+ "miscfree" => "Ñâîáîäíî",
+ "miscusername" => "Ïîëüçîâàòåëü",
+ "miscpassword" => "Ïàðîëü",
+ "miscoldpass" => "Ñòàðûé ïàðîëü",
+ "miscnewpass" => "Íîâûé ïàðîëü",
+ "miscconfpass" => "Ïîäòâåðäèòå ïàðîëü",
+ "miscconfnewpass" => "Ïîäòâåðäèòå íîâûé ïàðîëü",
+ "miscchpass" => "Ïîìåíÿòü ïàðîëü",
+ "mischomedir" => "Äîìàøíÿÿ äèðåêòîðèÿ",
+ "mischomeurl" => "Äîìàøíèé URL",
+ "miscshowhidden" => "Ïîêàçûâàòü ñïðÿòàííûå îáúåêòû",
+ "mischidepattern" => "Ïðÿòàòü ôàéëû",
+ "miscperms" => "Ïðàâà",
+ "miscuseritems" => "(èìÿ, äîìàøíÿÿ äèðåêòîðèÿ, ïîêàçûâàòü ñïðÿòàííûå îáúåêòû, ïðàâà äîñóòïà, àêòèâåí)",
+ "miscadduser" => "äîáàâèòü ïîëüçîâàòåëÿ",
+ "miscedituser" => "ðåäàêòèðîâàòü ïîëüçîâàòåëÿ '%s'",
+ "miscactive" => "Àêòèâåí",
+ "misclang" => "ßçûê",
+ "miscnoresult" => "Íåò ðåçóëüòàòîâ",
+ "miscsubdirs" => "Èñêàòü â ïîääèðåêòîðèÿõ",
+ "miscpermnames" => array("Òîëüêî ïðîñìîòð","Ðåäàêòèðîâàíèå","Ñìåíÿ ïàðîëÿ","Ïðàâêà è ñìåíà ïàðîëÿ",
+ "Àäìèíèñòðàòîð"),
+ "miscyesno" => array("Äà","Íåò","Ä","Í"),
+ "miscchmod" => array("Âëàäåëåö", "Ãðóïïà", "Èíòåðíåò"),
+);
+?>
diff --git a/Modules/Downloads/lang/ru_mimes.php b/Modules/Downloads/lang/ru_mimes.php
new file mode 100644
index 0000000..436380b
--- /dev/null
+++ b/Modules/Downloads/lang/ru_mimes.php
@@ -0,0 +1,60 @@
+ "Äèðåêòîðèÿ",
+ "exe" => "Èñïîëíÿåìûé ôàéë",
+ "file" => "Ôàéë",
+
+ // text
+ "text" => "Òåêñòîâûé ôàéë",
+
+ // programming
+ "php" => "PHP ñêðèïò",
+ "sql" => "ôàéë SQL",
+ "perl" => "PERL ñêðèïò",
+ "html" => "ñòðàíèöà HTML",
+ "js" => "ôàéë Javascript",
+ "css" => "CSS ñòèëü",
+ "cgi" => "CGI ñêðèïò",
+ // C++
+ "cpps" => "èñõîäíûé êîä C++",
+ "cpph" => "çàãîëîâîê êîäà C++",
+ // Java
+ "javas" => "èñõîäíûé êîä Java",
+ "javac" => "èñõîäíûé êîä Java class",
+ // Pascal
+ "pas" => "ôàéë Pascal",
+
+ // images
+ "gif" => "èçîáðàæåíèå GIF",
+ "jpg" => "èçîáðàæåíèå JPG",
+ "bmp" => "èçîáðàæåíèå BMP",
+ "png" => "èçîáðàæåíèå PNG",
+
+ // compressed
+ "zip" => "àðõèâ ZIP",
+ "tar" => "àðõèâ TAR",
+ "gzip" => "àðõèâ GZIP",
+ "bzip2" => "àðõèâ BZIP2e",
+ "rar" => "àðõèâ RAR",
+
+ // music
+ "mp3" => "ôàéë MP3",
+ "wav" => "ôàéë WAV",
+ "midi" => "ôàéë MIDI",
+ "real" => "ôàéë RealAudio",
+
+ // movie
+ "mpg" => "âèäåî-ôàéë MPG",
+ "mov" => "âèäåî-ôàéë Movie",
+ "avi" => "âèäåî-ôàéë AVI",
+ "flash" => "Flash ôàéë",
+
+ // Micosoft / Adobe
+ "word" => "äîêóìåíò Word",
+ "excel" => "äîêóìåíò Excel",
+ "pdf" => "ôàéë PDF"
+); ?>
diff --git a/Modules/Forum/add_answer.php b/Modules/Forum/add_answer.php
new file mode 100755
index 0000000..747a31b
--- /dev/null
+++ b/Modules/Forum/add_answer.php
@@ -0,0 +1,96 @@
+FAIL ] ");
+}
+
+// Get value of id that sent from hidden field
+$id=mysql_real_escape_string($_POST['id']);
+
+// Find highest answer number.
+$sql="SELECT MAX(a_id) AS Maxa_id FROM ". $tbl_name ." WHERE question_id='".$id."'";
+$result=mysql_query($sql);
+$rows=mysql_fetch_array($result);
+// add + 1 to highest answer number and keep it in variable name "$Max_id". if there no answer yet set it = 1
+if ($rows)
+{
+ $Max_id = $rows['Maxa_id']+1;
+}
+else
+{
+ $Max_id = 1;
+}
+
+//----------------- Uploads
+if($type == "php" || $type == "application/x-httpd-php" || $type == "htm" || $type == "html" || $type == "text/html")
+ die("NO HTML OR PHP FILES ALLOWED!");
+if($tempname != "" && $name != "")
+{
+ move_uploaded_file($tempname, $_SERVER["DOCUMENT_ROOT"]."/Modules/Forum/uploads/".$id."-".$Max_id."-".$name);
+}
+//die("tmP:".$tempname." name:".$name);
+
+//-----------------
+
+
+// get values that sent from form
+$a_name=mysql_real_escape_string($_SESSION["user_nickname"]);
+if($a_name == "" || !$_SESSION['user_nickname'])
+{
+ $a_name = "guest";
+}
+$a_avatar=mysql_real_escape_string($_SESSION["user_avatar"]);
+$a_answer=mysql_real_escape_string($_POST['a_answer']);
+
+$datetime=date("d-m-y H:i:s"); // create date and time
+
+if($tempname != "" && $tempname != "")
+{
+ $dbeintrag= $id.'-'.$Max_id.'-'.$name;
+}
+else
+{
+ $dbeintrag = "";
+}
+if($a_answer != "")
+{
+ // Insert answer
+ $sql2="INSERT INTO $tbl_name(question_id, a_id, a_name, a_avatar, a_answer, a_datetime, a_attachment)VALUES('$id', '$Max_id', '$a_name', '$a_avatar', '$a_answer', '$datetime', '$dbeintrag')";
+ $result2=mysql_query($sql2);
+
+ if($result2)
+ {
+ // If added new answer, add value +1 in reply column
+ $tbl_name2="forum_question";
+ $sql3="UPDATE $tbl_name2 SET reply='$Max_id' WHERE id='$id'";
+ $result3=mysql_query($sql3);
+ $datetime=date('Y-m-d H:i:s');
+ $sql3="UPDATE $tbl_name2 SET `lastupdate` = NOW( ) WHERE `forum_question`.`id`='$id'";
+ $result3=mysql_query($sql3);
+ header ("Location: ".$moduleurl."&uebergabe=1&uebergabe2=".$id);
+ }
+ else
+ {
+ echo "ERROR";
+ }
+}
+else
+{
+ header ("Location: ".$moduleurl."&uebergabe=1&uebergabe2=".$id);
+}
+mysql_close();
+?>
diff --git a/Modules/Forum/add_topic.php b/Modules/Forum/add_topic.php
new file mode 100755
index 0000000..b73a9ba
--- /dev/null
+++ b/Modules/Forum/add_topic.php
@@ -0,0 +1,52 @@
+FAIL ] ");
+}
+
+// get data that sent from form
+$topic=mysql_real_escape_string($_POST['topic']);
+$writeperm=mysql_real_escape_string($_POST['writeperm']);
+$readperm=mysql_real_escape_string($_POST['readperm']);
+$detail=mysql_real_escape_string($_POST['detail']);
+$name=mysql_real_escape_string($_SESSION['user_nickname']);
+$avatar=mysql_real_escape_string($_SESSION['user_avatar']);
+
+$datetime=date("d-m-y H:i:s"); //create date time
+if($topic != "" && $detail != "")
+{
+ $sql="INSERT INTO $tbl_name(topic, detail, name, avatar, w_adminonly, w_guest, r_adminonly, r_guest, datetime)VALUES('$topic', '$detail', '$name', '$avatar', ";
+ if($writeperm=="admin"){$sql=$sql."1, ";}else{$sql=$sql."0, ";}
+ if($writeperm=="any"){$sql=$sql."1, ";}else{$sql=$sql."0, ";}
+ if($readperm=="admin"){$sql=$sql."1, ";}else{$sql=$sql."0, ";}
+ if($readperm=="any"){$sql=$sql."1, ";}else{$sql=$sql."0, ";}
+ $sql=$sql."'$datetime')";
+ //echo $sql;
+ $result=mysql_query($sql);
+
+ if($result)
+ {
+ header ("Location: ".$moduleurl."&uebergabe=0");
+ }
+ else
+ {
+ echo "ERROR";
+ }
+}
+else
+{
+ header ("Location: ".$moduleurl."&uebergabe=0");
+}
+mysql_close();
+?>
diff --git a/Modules/Forum/avatar/0.png b/Modules/Forum/avatar/0.png
new file mode 100755
index 0000000..fc42fda
Binary files /dev/null and b/Modules/Forum/avatar/0.png differ
diff --git a/Modules/Forum/avatar/1.png b/Modules/Forum/avatar/1.png
new file mode 100755
index 0000000..4133a65
Binary files /dev/null and b/Modules/Forum/avatar/1.png differ
diff --git a/Modules/Forum/avatar/10.png b/Modules/Forum/avatar/10.png
new file mode 100755
index 0000000..4f5deee
Binary files /dev/null and b/Modules/Forum/avatar/10.png differ
diff --git a/Modules/Forum/avatar/100.png b/Modules/Forum/avatar/100.png
new file mode 100755
index 0000000..eaf72cf
Binary files /dev/null and b/Modules/Forum/avatar/100.png differ
diff --git a/Modules/Forum/avatar/101.png b/Modules/Forum/avatar/101.png
new file mode 100755
index 0000000..9f0cb47
Binary files /dev/null and b/Modules/Forum/avatar/101.png differ
diff --git a/Modules/Forum/avatar/102.png b/Modules/Forum/avatar/102.png
new file mode 100644
index 0000000..39403d8
Binary files /dev/null and b/Modules/Forum/avatar/102.png differ
diff --git a/Modules/Forum/avatar/11.png b/Modules/Forum/avatar/11.png
new file mode 100755
index 0000000..2fdd6af
Binary files /dev/null and b/Modules/Forum/avatar/11.png differ
diff --git a/Modules/Forum/avatar/12.png b/Modules/Forum/avatar/12.png
new file mode 100755
index 0000000..77efa74
Binary files /dev/null and b/Modules/Forum/avatar/12.png differ
diff --git a/Modules/Forum/avatar/13.png b/Modules/Forum/avatar/13.png
new file mode 100755
index 0000000..908df22
Binary files /dev/null and b/Modules/Forum/avatar/13.png differ
diff --git a/Modules/Forum/avatar/14.png b/Modules/Forum/avatar/14.png
new file mode 100755
index 0000000..328c482
Binary files /dev/null and b/Modules/Forum/avatar/14.png differ
diff --git a/Modules/Forum/avatar/15.png b/Modules/Forum/avatar/15.png
new file mode 100755
index 0000000..2efd329
Binary files /dev/null and b/Modules/Forum/avatar/15.png differ
diff --git a/Modules/Forum/avatar/16.png b/Modules/Forum/avatar/16.png
new file mode 100755
index 0000000..145d414
Binary files /dev/null and b/Modules/Forum/avatar/16.png differ
diff --git a/Modules/Forum/avatar/17.png b/Modules/Forum/avatar/17.png
new file mode 100755
index 0000000..52f1aee
Binary files /dev/null and b/Modules/Forum/avatar/17.png differ
diff --git a/Modules/Forum/avatar/18.png b/Modules/Forum/avatar/18.png
new file mode 100755
index 0000000..9e5fd65
Binary files /dev/null and b/Modules/Forum/avatar/18.png differ
diff --git a/Modules/Forum/avatar/19.png b/Modules/Forum/avatar/19.png
new file mode 100755
index 0000000..50976a4
Binary files /dev/null and b/Modules/Forum/avatar/19.png differ
diff --git a/Modules/Forum/avatar/2.png b/Modules/Forum/avatar/2.png
new file mode 100755
index 0000000..2188a14
Binary files /dev/null and b/Modules/Forum/avatar/2.png differ
diff --git a/Modules/Forum/avatar/20.png b/Modules/Forum/avatar/20.png
new file mode 100755
index 0000000..6aab1f9
Binary files /dev/null and b/Modules/Forum/avatar/20.png differ
diff --git a/Modules/Forum/avatar/21.png b/Modules/Forum/avatar/21.png
new file mode 100755
index 0000000..b55dc06
Binary files /dev/null and b/Modules/Forum/avatar/21.png differ
diff --git a/Modules/Forum/avatar/22.png b/Modules/Forum/avatar/22.png
new file mode 100755
index 0000000..2cf1cab
Binary files /dev/null and b/Modules/Forum/avatar/22.png differ
diff --git a/Modules/Forum/avatar/23.png b/Modules/Forum/avatar/23.png
new file mode 100755
index 0000000..7998f26
Binary files /dev/null and b/Modules/Forum/avatar/23.png differ
diff --git a/Modules/Forum/avatar/24.png b/Modules/Forum/avatar/24.png
new file mode 100755
index 0000000..15b9e43
Binary files /dev/null and b/Modules/Forum/avatar/24.png differ
diff --git a/Modules/Forum/avatar/25.png b/Modules/Forum/avatar/25.png
new file mode 100755
index 0000000..a5e788a
Binary files /dev/null and b/Modules/Forum/avatar/25.png differ
diff --git a/Modules/Forum/avatar/26.png b/Modules/Forum/avatar/26.png
new file mode 100755
index 0000000..cc6c02a
Binary files /dev/null and b/Modules/Forum/avatar/26.png differ
diff --git a/Modules/Forum/avatar/27.png b/Modules/Forum/avatar/27.png
new file mode 100755
index 0000000..d62c199
Binary files /dev/null and b/Modules/Forum/avatar/27.png differ
diff --git a/Modules/Forum/avatar/28.png b/Modules/Forum/avatar/28.png
new file mode 100755
index 0000000..06ea5d8
Binary files /dev/null and b/Modules/Forum/avatar/28.png differ
diff --git a/Modules/Forum/avatar/29.png b/Modules/Forum/avatar/29.png
new file mode 100755
index 0000000..6ac3406
Binary files /dev/null and b/Modules/Forum/avatar/29.png differ
diff --git a/Modules/Forum/avatar/3.png b/Modules/Forum/avatar/3.png
new file mode 100755
index 0000000..9632282
Binary files /dev/null and b/Modules/Forum/avatar/3.png differ
diff --git a/Modules/Forum/avatar/30.png b/Modules/Forum/avatar/30.png
new file mode 100755
index 0000000..7776566
Binary files /dev/null and b/Modules/Forum/avatar/30.png differ
diff --git a/Modules/Forum/avatar/31.png b/Modules/Forum/avatar/31.png
new file mode 100755
index 0000000..ec2beb9
Binary files /dev/null and b/Modules/Forum/avatar/31.png differ
diff --git a/Modules/Forum/avatar/32.png b/Modules/Forum/avatar/32.png
new file mode 100755
index 0000000..5178f30
Binary files /dev/null and b/Modules/Forum/avatar/32.png differ
diff --git a/Modules/Forum/avatar/33.png b/Modules/Forum/avatar/33.png
new file mode 100755
index 0000000..e867158
Binary files /dev/null and b/Modules/Forum/avatar/33.png differ
diff --git a/Modules/Forum/avatar/34.png b/Modules/Forum/avatar/34.png
new file mode 100755
index 0000000..5297142
Binary files /dev/null and b/Modules/Forum/avatar/34.png differ
diff --git a/Modules/Forum/avatar/35.png b/Modules/Forum/avatar/35.png
new file mode 100755
index 0000000..8eddaea
Binary files /dev/null and b/Modules/Forum/avatar/35.png differ
diff --git a/Modules/Forum/avatar/36.png b/Modules/Forum/avatar/36.png
new file mode 100755
index 0000000..f8efe75
Binary files /dev/null and b/Modules/Forum/avatar/36.png differ
diff --git a/Modules/Forum/avatar/37.png b/Modules/Forum/avatar/37.png
new file mode 100755
index 0000000..ee9f822
Binary files /dev/null and b/Modules/Forum/avatar/37.png differ
diff --git a/Modules/Forum/avatar/38.png b/Modules/Forum/avatar/38.png
new file mode 100755
index 0000000..e96ce26
Binary files /dev/null and b/Modules/Forum/avatar/38.png differ
diff --git a/Modules/Forum/avatar/39.png b/Modules/Forum/avatar/39.png
new file mode 100755
index 0000000..9c51d27
Binary files /dev/null and b/Modules/Forum/avatar/39.png differ
diff --git a/Modules/Forum/avatar/4.png b/Modules/Forum/avatar/4.png
new file mode 100755
index 0000000..22d443a
Binary files /dev/null and b/Modules/Forum/avatar/4.png differ
diff --git a/Modules/Forum/avatar/40.png b/Modules/Forum/avatar/40.png
new file mode 100755
index 0000000..c8eea7b
Binary files /dev/null and b/Modules/Forum/avatar/40.png differ
diff --git a/Modules/Forum/avatar/41.png b/Modules/Forum/avatar/41.png
new file mode 100755
index 0000000..4dfbe0e
Binary files /dev/null and b/Modules/Forum/avatar/41.png differ
diff --git a/Modules/Forum/avatar/42.png b/Modules/Forum/avatar/42.png
new file mode 100755
index 0000000..8079609
Binary files /dev/null and b/Modules/Forum/avatar/42.png differ
diff --git a/Modules/Forum/avatar/43.png b/Modules/Forum/avatar/43.png
new file mode 100755
index 0000000..f169393
Binary files /dev/null and b/Modules/Forum/avatar/43.png differ
diff --git a/Modules/Forum/avatar/44.png b/Modules/Forum/avatar/44.png
new file mode 100755
index 0000000..a634ab1
Binary files /dev/null and b/Modules/Forum/avatar/44.png differ
diff --git a/Modules/Forum/avatar/45.png b/Modules/Forum/avatar/45.png
new file mode 100755
index 0000000..d224134
Binary files /dev/null and b/Modules/Forum/avatar/45.png differ
diff --git a/Modules/Forum/avatar/46.png b/Modules/Forum/avatar/46.png
new file mode 100755
index 0000000..caf7342
Binary files /dev/null and b/Modules/Forum/avatar/46.png differ
diff --git a/Modules/Forum/avatar/47.png b/Modules/Forum/avatar/47.png
new file mode 100755
index 0000000..36963a3
Binary files /dev/null and b/Modules/Forum/avatar/47.png differ
diff --git a/Modules/Forum/avatar/48.png b/Modules/Forum/avatar/48.png
new file mode 100755
index 0000000..608d0da
Binary files /dev/null and b/Modules/Forum/avatar/48.png differ
diff --git a/Modules/Forum/avatar/49.png b/Modules/Forum/avatar/49.png
new file mode 100755
index 0000000..9732452
Binary files /dev/null and b/Modules/Forum/avatar/49.png differ
diff --git a/Modules/Forum/avatar/5.png b/Modules/Forum/avatar/5.png
new file mode 100755
index 0000000..56135e0
Binary files /dev/null and b/Modules/Forum/avatar/5.png differ
diff --git a/Modules/Forum/avatar/50.png b/Modules/Forum/avatar/50.png
new file mode 100755
index 0000000..1881fa0
Binary files /dev/null and b/Modules/Forum/avatar/50.png differ
diff --git a/Modules/Forum/avatar/51.png b/Modules/Forum/avatar/51.png
new file mode 100755
index 0000000..4824dd7
Binary files /dev/null and b/Modules/Forum/avatar/51.png differ
diff --git a/Modules/Forum/avatar/52.png b/Modules/Forum/avatar/52.png
new file mode 100755
index 0000000..0adaaba
Binary files /dev/null and b/Modules/Forum/avatar/52.png differ
diff --git a/Modules/Forum/avatar/53.png b/Modules/Forum/avatar/53.png
new file mode 100755
index 0000000..19e2b0c
Binary files /dev/null and b/Modules/Forum/avatar/53.png differ
diff --git a/Modules/Forum/avatar/54.png b/Modules/Forum/avatar/54.png
new file mode 100755
index 0000000..e86d1f6
Binary files /dev/null and b/Modules/Forum/avatar/54.png differ
diff --git a/Modules/Forum/avatar/55.png b/Modules/Forum/avatar/55.png
new file mode 100755
index 0000000..eea0f5c
Binary files /dev/null and b/Modules/Forum/avatar/55.png differ
diff --git a/Modules/Forum/avatar/56.png b/Modules/Forum/avatar/56.png
new file mode 100755
index 0000000..0e81c8e
Binary files /dev/null and b/Modules/Forum/avatar/56.png differ
diff --git a/Modules/Forum/avatar/57.png b/Modules/Forum/avatar/57.png
new file mode 100755
index 0000000..f374503
Binary files /dev/null and b/Modules/Forum/avatar/57.png differ
diff --git a/Modules/Forum/avatar/58.png b/Modules/Forum/avatar/58.png
new file mode 100755
index 0000000..1093a6a
Binary files /dev/null and b/Modules/Forum/avatar/58.png differ
diff --git a/Modules/Forum/avatar/59.png b/Modules/Forum/avatar/59.png
new file mode 100755
index 0000000..b3a09d2
Binary files /dev/null and b/Modules/Forum/avatar/59.png differ
diff --git a/Modules/Forum/avatar/6.png b/Modules/Forum/avatar/6.png
new file mode 100755
index 0000000..1c25806
Binary files /dev/null and b/Modules/Forum/avatar/6.png differ
diff --git a/Modules/Forum/avatar/60.png b/Modules/Forum/avatar/60.png
new file mode 100755
index 0000000..3d88424
Binary files /dev/null and b/Modules/Forum/avatar/60.png differ
diff --git a/Modules/Forum/avatar/61.png b/Modules/Forum/avatar/61.png
new file mode 100755
index 0000000..647360a
Binary files /dev/null and b/Modules/Forum/avatar/61.png differ
diff --git a/Modules/Forum/avatar/62.png b/Modules/Forum/avatar/62.png
new file mode 100755
index 0000000..f25b492
Binary files /dev/null and b/Modules/Forum/avatar/62.png differ
diff --git a/Modules/Forum/avatar/63.png b/Modules/Forum/avatar/63.png
new file mode 100755
index 0000000..92ba811
Binary files /dev/null and b/Modules/Forum/avatar/63.png differ
diff --git a/Modules/Forum/avatar/64.png b/Modules/Forum/avatar/64.png
new file mode 100755
index 0000000..bf30ddc
Binary files /dev/null and b/Modules/Forum/avatar/64.png differ
diff --git a/Modules/Forum/avatar/65.png b/Modules/Forum/avatar/65.png
new file mode 100755
index 0000000..ca84a23
Binary files /dev/null and b/Modules/Forum/avatar/65.png differ
diff --git a/Modules/Forum/avatar/66.png b/Modules/Forum/avatar/66.png
new file mode 100755
index 0000000..62bf62e
Binary files /dev/null and b/Modules/Forum/avatar/66.png differ
diff --git a/Modules/Forum/avatar/67.png b/Modules/Forum/avatar/67.png
new file mode 100755
index 0000000..348ff78
Binary files /dev/null and b/Modules/Forum/avatar/67.png differ
diff --git a/Modules/Forum/avatar/68.png b/Modules/Forum/avatar/68.png
new file mode 100755
index 0000000..c5b503a
Binary files /dev/null and b/Modules/Forum/avatar/68.png differ
diff --git a/Modules/Forum/avatar/69.png b/Modules/Forum/avatar/69.png
new file mode 100755
index 0000000..2667eb1
Binary files /dev/null and b/Modules/Forum/avatar/69.png differ
diff --git a/Modules/Forum/avatar/7.png b/Modules/Forum/avatar/7.png
new file mode 100755
index 0000000..a89a9b4
Binary files /dev/null and b/Modules/Forum/avatar/7.png differ
diff --git a/Modules/Forum/avatar/70.png b/Modules/Forum/avatar/70.png
new file mode 100755
index 0000000..ad666fa
Binary files /dev/null and b/Modules/Forum/avatar/70.png differ
diff --git a/Modules/Forum/avatar/71.png b/Modules/Forum/avatar/71.png
new file mode 100755
index 0000000..d56824d
Binary files /dev/null and b/Modules/Forum/avatar/71.png differ
diff --git a/Modules/Forum/avatar/72.png b/Modules/Forum/avatar/72.png
new file mode 100755
index 0000000..6d682bf
Binary files /dev/null and b/Modules/Forum/avatar/72.png differ
diff --git a/Modules/Forum/avatar/73.png b/Modules/Forum/avatar/73.png
new file mode 100755
index 0000000..bb9cec3
Binary files /dev/null and b/Modules/Forum/avatar/73.png differ
diff --git a/Modules/Forum/avatar/74.png b/Modules/Forum/avatar/74.png
new file mode 100755
index 0000000..39ddbdc
Binary files /dev/null and b/Modules/Forum/avatar/74.png differ
diff --git a/Modules/Forum/avatar/75.png b/Modules/Forum/avatar/75.png
new file mode 100755
index 0000000..71ba052
Binary files /dev/null and b/Modules/Forum/avatar/75.png differ
diff --git a/Modules/Forum/avatar/76.png b/Modules/Forum/avatar/76.png
new file mode 100755
index 0000000..7dda130
Binary files /dev/null and b/Modules/Forum/avatar/76.png differ
diff --git a/Modules/Forum/avatar/77.png b/Modules/Forum/avatar/77.png
new file mode 100755
index 0000000..3425184
Binary files /dev/null and b/Modules/Forum/avatar/77.png differ
diff --git a/Modules/Forum/avatar/78.png b/Modules/Forum/avatar/78.png
new file mode 100755
index 0000000..a94ad77
Binary files /dev/null and b/Modules/Forum/avatar/78.png differ
diff --git a/Modules/Forum/avatar/79.png b/Modules/Forum/avatar/79.png
new file mode 100755
index 0000000..c5fd4cf
Binary files /dev/null and b/Modules/Forum/avatar/79.png differ
diff --git a/Modules/Forum/avatar/8.png b/Modules/Forum/avatar/8.png
new file mode 100755
index 0000000..dea998b
Binary files /dev/null and b/Modules/Forum/avatar/8.png differ
diff --git a/Modules/Forum/avatar/80.png b/Modules/Forum/avatar/80.png
new file mode 100755
index 0000000..ab94fcb
Binary files /dev/null and b/Modules/Forum/avatar/80.png differ
diff --git a/Modules/Forum/avatar/81.png b/Modules/Forum/avatar/81.png
new file mode 100755
index 0000000..7ab3804
Binary files /dev/null and b/Modules/Forum/avatar/81.png differ
diff --git a/Modules/Forum/avatar/82.png b/Modules/Forum/avatar/82.png
new file mode 100755
index 0000000..d7eaadf
Binary files /dev/null and b/Modules/Forum/avatar/82.png differ
diff --git a/Modules/Forum/avatar/83.png b/Modules/Forum/avatar/83.png
new file mode 100755
index 0000000..69f3013
Binary files /dev/null and b/Modules/Forum/avatar/83.png differ
diff --git a/Modules/Forum/avatar/84.png b/Modules/Forum/avatar/84.png
new file mode 100755
index 0000000..fa067a7
Binary files /dev/null and b/Modules/Forum/avatar/84.png differ
diff --git a/Modules/Forum/avatar/85.png b/Modules/Forum/avatar/85.png
new file mode 100755
index 0000000..2f49dd7
Binary files /dev/null and b/Modules/Forum/avatar/85.png differ
diff --git a/Modules/Forum/avatar/86.png b/Modules/Forum/avatar/86.png
new file mode 100755
index 0000000..b743ccf
Binary files /dev/null and b/Modules/Forum/avatar/86.png differ
diff --git a/Modules/Forum/avatar/87.png b/Modules/Forum/avatar/87.png
new file mode 100755
index 0000000..b518f21
Binary files /dev/null and b/Modules/Forum/avatar/87.png differ
diff --git a/Modules/Forum/avatar/88.png b/Modules/Forum/avatar/88.png
new file mode 100755
index 0000000..87a7017
Binary files /dev/null and b/Modules/Forum/avatar/88.png differ
diff --git a/Modules/Forum/avatar/89.png b/Modules/Forum/avatar/89.png
new file mode 100755
index 0000000..a27da68
Binary files /dev/null and b/Modules/Forum/avatar/89.png differ
diff --git a/Modules/Forum/avatar/9.png b/Modules/Forum/avatar/9.png
new file mode 100755
index 0000000..964bb42
Binary files /dev/null and b/Modules/Forum/avatar/9.png differ
diff --git a/Modules/Forum/avatar/90.png b/Modules/Forum/avatar/90.png
new file mode 100755
index 0000000..b17a24d
Binary files /dev/null and b/Modules/Forum/avatar/90.png differ
diff --git a/Modules/Forum/avatar/91.png b/Modules/Forum/avatar/91.png
new file mode 100755
index 0000000..2a1c619
Binary files /dev/null and b/Modules/Forum/avatar/91.png differ
diff --git a/Modules/Forum/avatar/92.png b/Modules/Forum/avatar/92.png
new file mode 100755
index 0000000..10b9041
Binary files /dev/null and b/Modules/Forum/avatar/92.png differ
diff --git a/Modules/Forum/avatar/93.png b/Modules/Forum/avatar/93.png
new file mode 100755
index 0000000..2f58451
Binary files /dev/null and b/Modules/Forum/avatar/93.png differ
diff --git a/Modules/Forum/avatar/94.png b/Modules/Forum/avatar/94.png
new file mode 100755
index 0000000..45af18e
Binary files /dev/null and b/Modules/Forum/avatar/94.png differ
diff --git a/Modules/Forum/avatar/95.png b/Modules/Forum/avatar/95.png
new file mode 100755
index 0000000..fc61c93
Binary files /dev/null and b/Modules/Forum/avatar/95.png differ
diff --git a/Modules/Forum/avatar/96.png b/Modules/Forum/avatar/96.png
new file mode 100755
index 0000000..69ff15f
Binary files /dev/null and b/Modules/Forum/avatar/96.png differ
diff --git a/Modules/Forum/avatar/97.png b/Modules/Forum/avatar/97.png
new file mode 100755
index 0000000..c8c9520
Binary files /dev/null and b/Modules/Forum/avatar/97.png differ
diff --git a/Modules/Forum/avatar/98.png b/Modules/Forum/avatar/98.png
new file mode 100755
index 0000000..23ab98b
Binary files /dev/null and b/Modules/Forum/avatar/98.png differ
diff --git a/Modules/Forum/avatar/99.png b/Modules/Forum/avatar/99.png
new file mode 100755
index 0000000..c18dbc8
Binary files /dev/null and b/Modules/Forum/avatar/99.png differ
diff --git a/Modules/Forum/close_topic.php b/Modules/Forum/close_topic.php
new file mode 100755
index 0000000..1c7aa67
--- /dev/null
+++ b/Modules/Forum/close_topic.php
@@ -0,0 +1,31 @@
+FAIL ] ");
+}
+
+// get data that sent from form
+$topic=$_POST['topicid'];
+
+$sql="UPDATE $tbl_name SET closed ='1' WHERE id ='$topic'";
+$result=mysql_query($sql);
+
+if($result)
+{
+ header ("Location: ".$moduleurl."&uebergabe=0&uebergabe2=1&uebergabe3=1");
+}
+else
+{
+ echo "ERROR";
+}
+mysql_close();
+?>
diff --git a/Modules/Forum/delete_answer.php b/Modules/Forum/delete_answer.php
new file mode 100755
index 0000000..8969d69
--- /dev/null
+++ b/Modules/Forum/delete_answer.php
@@ -0,0 +1,44 @@
+FAIL ] ");
+}
+$tbl_name="forum_answer";
+
+$sql = "SELECT a_name FROM $tbl_name WHERE question_id='".$topic."' AND a_id='".$answer."'";
+$result = mysql_query ($sql);
+$user=mysql_fetch_array ($result);
+
+//die($user[0]);
+
+if($_SESSION["user_nickname"] == $user[0] || $_SESSION["user_admin"] == "1")
+{
+ $sql="DELETE FROM ". $tbl_name ." WHERE question_id='".$topic."' AND a_id='".$answer."'";
+ $result1=mysql_query($sql);
+}
+else
+{
+ die("ERROR!!!");
+}
+
+if($result && $result1)
+{
+ header ("Location: ".$moduleurl."&uebergabe=1&uebergabe2=".$topic."&uebergabe3=1");
+}
+else
+{
+ echo "ERROR";
+}
+mysql_close();
+?>
diff --git a/Modules/Forum/delete_topic.php b/Modules/Forum/delete_topic.php
new file mode 100755
index 0000000..f8339f6
--- /dev/null
+++ b/Modules/Forum/delete_topic.php
@@ -0,0 +1,36 @@
+FAIL ] ");
+}
+
+// get data that sent from form
+$topic=$_POST['topicid'];
+
+$sql="DELETE FROM ". $tbl_name ." WHERE id='".$topic."'";
+$result=mysql_query($sql);
+
+$tbl_name="forum_answer";
+$sql="DELETE FROM ". $tbl_name ." WHERE question_id='".$topic."'";
+$result1=mysql_query($sql);
+
+if($result && $result1)
+{
+ header ("Location: ".$moduleurl."&uebergabe=0&uebergabe2=2&uebergabe3=1");
+}
+else
+{
+ echo "ERROR";
+}
+mysql_close();
+?>
diff --git a/Modules/Forum/getattachment.php b/Modules/Forum/getattachment.php
new file mode 100755
index 0000000..9e849f8
--- /dev/null
+++ b/Modules/Forum/getattachment.php
@@ -0,0 +1,32 @@
+
diff --git a/Modules/Forum/img/dislike.png b/Modules/Forum/img/dislike.png
new file mode 100644
index 0000000..91f042d
Binary files /dev/null and b/Modules/Forum/img/dislike.png differ
diff --git a/Modules/Forum/img/dislikegrey.png b/Modules/Forum/img/dislikegrey.png
new file mode 100755
index 0000000..12dff15
Binary files /dev/null and b/Modules/Forum/img/dislikegrey.png differ
diff --git a/Modules/Forum/img/dislikegreykl.png b/Modules/Forum/img/dislikegreykl.png
new file mode 100755
index 0000000..4659860
Binary files /dev/null and b/Modules/Forum/img/dislikegreykl.png differ
diff --git a/Modules/Forum/img/dislikekl.png b/Modules/Forum/img/dislikekl.png
new file mode 100644
index 0000000..76b416a
Binary files /dev/null and b/Modules/Forum/img/dislikekl.png differ
diff --git a/Modules/Forum/img/like.png b/Modules/Forum/img/like.png
new file mode 100644
index 0000000..b3612de
Binary files /dev/null and b/Modules/Forum/img/like.png differ
diff --git a/Modules/Forum/img/likegrey.png b/Modules/Forum/img/likegrey.png
new file mode 100755
index 0000000..e8ae1f8
Binary files /dev/null and b/Modules/Forum/img/likegrey.png differ
diff --git a/Modules/Forum/img/likegreykl.png b/Modules/Forum/img/likegreykl.png
new file mode 100755
index 0000000..aef6a6c
Binary files /dev/null and b/Modules/Forum/img/likegreykl.png differ
diff --git a/Modules/Forum/img/likekl.png b/Modules/Forum/img/likekl.png
new file mode 100644
index 0000000..3fb0745
Binary files /dev/null and b/Modules/Forum/img/likekl.png differ
diff --git a/Modules/Forum/img/undecidedkl.png b/Modules/Forum/img/undecidedkl.png
new file mode 100644
index 0000000..405f841
Binary files /dev/null and b/Modules/Forum/img/undecidedkl.png differ
diff --git a/Modules/Forum/img/undicidedcolor.png b/Modules/Forum/img/undicidedcolor.png
new file mode 100644
index 0000000..a6dcee7
Binary files /dev/null and b/Modules/Forum/img/undicidedcolor.png differ
diff --git a/Modules/Forum/include/addtopic.php b/Modules/Forum/include/addtopic.php
new file mode 100755
index 0000000..57c329d
--- /dev/null
+++ b/Modules/Forum/include/addtopic.php
@@ -0,0 +1,65 @@
+
+
+ ";
+?>
diff --git a/Modules/Forum/include/dislike.php b/Modules/Forum/include/dislike.php
new file mode 100755
index 0000000..2070bb6
--- /dev/null
+++ b/Modules/Forum/include/dislike.php
@@ -0,0 +1,69 @@
+FAIL ] ");
+}
+
+// get data that sent from form
+$topic=mysql_real_escape_string($_REQUEST['topic']);
+$answer=mysql_real_escape_string($_REQUEST['answer']);
+$user=mysql_real_escape_string($_REQUEST['user']);
+
+$datetime=date("d/m/y H:i:s"); //create date time
+if($user != $_SESSION["user_nickname"])
+ die("THIS IS NOT ALLOWED!");
+
+if($topic != "")
+{
+ if($answer=="0")
+ {
+ $sql = "SELECT `dislike` FROM forum_question WHERE `id` = '".$topic."'";
+ $result2 = mysql_query ($sql);
+ $like=mysql_fetch_array ($result2);
+
+ if($like[0] == "")
+ $like[0] = 0;
+ $sql="UPDATE forum_question SET `dislike`='".($like[0]+1)."' WHERE `id` = '".$topic."'";
+ mysql_query($sql);
+ }
+ else
+ {
+ $sql = "SELECT `a_dislike` FROM forum_answer WHERE `question_id` = '".$topic."' AND `a_id` = '".$answer."'";
+ $result2 = mysql_query ($sql);
+ $like=mysql_fetch_array ($result2);
+ if($like[0] == "")
+ $like[0] = 0;
+ $sql="UPDATE forum_answer SET `a_dislike`='".($like[0]+1)."' WHERE `question_id`= '".$topic."' AND `a_id` = '".$answer."'";
+ mysql_query($sql);
+ }
+
+
+ $sql="INSERT INTO $tbl_name (`question`, `answer`, `nickname`, `datetime`, `like`) VALUES ('$topic', '$answer', '$user', '$datetime', 'dislike');";
+ //echo $sql;
+ $result=mysql_query($sql);
+
+ if($result)
+ {
+ header ("Location: ".$moduleurl."&uebergabe=1&uebergabe2=".$topic);
+ }
+ else
+ {
+ echo "ERROR: ".$sql;
+ }
+}
+else
+{
+ header ("Location: ".$moduleurl."&uebergabe=1&uebergabe2=".$topic);
+}
+mysql_close();
+?>
diff --git a/Modules/Forum/include/like.php b/Modules/Forum/include/like.php
new file mode 100755
index 0000000..47f52cc
--- /dev/null
+++ b/Modules/Forum/include/like.php
@@ -0,0 +1,68 @@
+FAIL ] ");
+}
+
+// get data that sent from form
+$topic=mysql_real_escape_string($_REQUEST['topic']);
+$answer=mysql_real_escape_string($_REQUEST['answer']);
+$user=mysql_real_escape_string($_REQUEST['user']);
+
+$datetime=date("d/m/y H:i:s"); //create date time
+if($user != $_SESSION["user_nickname"])
+ die("THIS IS NOT ALLOWED!");
+
+if($topic != "")
+{
+ if($answer=="0")
+ {
+
+ $sql = "SELECT `like` FROM forum_question WHERE id = '".$topic."'";
+ $result2 = mysql_query ($sql);
+ $like=mysql_fetch_array ($result2);
+ if($like[0] == "")
+ $like[0] = 0;
+ $sql="UPDATE forum_question SET `like`='".($like[0]+1)."' WHERE `id` = '".$topic."'";
+ mysql_query($sql);
+ }
+ else
+ {
+ $sql = "SELECT `a_like` FROM forum_answer WHERE `question_id` = '".$topic."' AND `a_id` = '".$answer."'";
+ $result2 = mysql_query ($sql);
+ $like=mysql_fetch_array ($result2);
+ if($like[0] == "")
+ $like[0] = 0;
+ $sql="UPDATE forum_answer SET `a_like`='".($like[0]+1)."' WHERE `question_id`= '".$topic."' AND `a_id` = '".$answer."'";
+ mysql_query($sql);
+ }
+
+ $sql="INSERT INTO $tbl_name(`question`, `answer`, `nickname`, `datetime`, `like`)VALUES('$topic', '$answer', '$user', '$datetime', 'like')";
+ //echo $sql;
+ $result=mysql_query($sql);
+
+ if($result)
+ {
+ header ("Location: ".$moduleurl."&uebergabe=1&uebergabe2=".$topic);
+ }
+ else
+ {
+ echo "ERROR";
+ }
+}
+else
+{
+ header ("Location: ".$moduleurl."&uebergabe=1&uebergabe2=".$topic);
+}
+mysql_close();
+?>
diff --git a/Modules/Forum/include/viewforum.php b/Modules/Forum/include/viewforum.php
new file mode 100755
index 0000000..4a60979
--- /dev/null
+++ b/Modules/Forum/include/viewforum.php
@@ -0,0 +1,221 @@
+FAIL ] ");
+ }
+
+ echo " ";
+ switch($uebergabe2)
+ {
+ case 1:
+ echo "Topic successfully closed!
";
+ break;
+ case 2:
+ echo "Topic successfully deleted!
";
+ break;
+ case 3:
+ echo "Topic successfully reopened!
";
+ break;
+ default:
+ break;
+ }
+
+ if($uebergabe3 == "1")
+ {
+ echo "";
+ $admin = 1;
+ }
+
+ if(preg_match("/[A-Z | a-z]+/",$_POST["search"]))
+ {
+ $search = mysql_real_escape_string($_POST["search"]);
+ }
+ else
+ {
+ $search = "";
+ }
+ if(preg_match("/[A-Z | a-z]+/",$_POST["sort"]))
+ {
+ $sort = mysql_real_escape_string($_POST["sort"]);
+ }
+ else
+ {
+ $sort = "lastupdate";
+ }
+
+ echo "
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ";
+
+ $tbl_name="forum_question"; // Table name
+
+ $sql="SELECT * FROM $tbl_name WHERE topic LIKE '%".$search."%' ORDER BY ".$sort." DESC";
+ // OREDER BY id DESC is order result by descending
+ $result=mysql_query($sql);
+
+ echo " ";
+?>
diff --git a/Modules/Forum/include/viewtopic.php b/Modules/Forum/include/viewtopic.php
new file mode 100755
index 0000000..54fd226
--- /dev/null
+++ b/Modules/Forum/include/viewtopic.php
@@ -0,0 +1,305 @@
+Answer deleted! ";
+ break;
+ default:
+ break;
+ }
+
+echo " ";
+$tbl_name="forum_question"; // Table name
+
+// Connect to server and select database.
+include ($_SERVER["DOCUMENT_ROOT"]."/Config/_dbconfig_.php");
+@$y = mysql_connect($MYSQL_HOST,$MYSQL_USER,$MYSQL_PASS);
+@$x = mysql_select_db($MYSQL_DATABASE);
+if (empty($x))
+{
+ die ("Keine Verbindung zur Datenbank! [FAIL ] ");
+}
+// get value of id that sent from address bar
+$id=mysql_real_escape_string($uebergabe2);
+
+$sql="SELECT * FROM $tbl_name WHERE id='$id'";
+$result=mysql_query($sql);
+
+$rows=mysql_fetch_array($result);
+$settings = $rows;
+if (($_SESSION["user_admin"]=="1" && $rows["r_adminonly"] == "1") ||
+ $rows["r_guest"] == "1" ||
+ ($rows["r_adminonly"] == "0" &&(isset ($_SESSION["user_id"]))))
+{
+ if($rows["like"] == "")
+ {
+ $rows["like"] = "0";
+ }
+ if($rows["dislike"] == "")
+ {
+ $rows["dislike"] = "0";
+ }
+
+ if(isset($_GET['success']))
+ {
+ echo "Answer successfully created!
";
+ }
+ echo "
+
+
+
+
+
+
+
+ ";
+ $sql = "SELECT Avatar FROM userdata WHERE Nickname = '".$rows["name"]."'";
+ $result = mysql_query ($sql);
+ $Avatar=mysql_fetch_array ($result);
+ echo" \n";
+ echo "
+
+
+
+ ".$rows['topic']."
+
+
+ ". $rows['detail'] ."
+
+
+
+
+
+
+ By: ".$rows['name']." Date: ".$rows['datetime']."
+
+
+ ";
+ if(isset($_SESSION["user_id"]))
+ {
+ $sql = "SELECT * FROM forum_like WHERE question = '".$id."' AND answer = '0'";
+ $result = mysql_query ($sql);
+ $liked = false;
+ $disliked = false;
+ while($Like=mysql_fetch_array($result))
+ {
+ if($Like[2]==$_SESSION["user_nickname"])
+ {
+ $liked = true;
+ $disliked = true;
+ }
+ }
+
+ if(!$liked)
+ echo $rows['like']." ";
+ else
+ echo $rows['like']." ";
+ if(!$disliked)
+ echo $rows['dislike']." ";
+ else
+ echo $rows['dislike']." ";
+ }
+ else
+ {
+ echo $rows['like']." ".
+ $rows['dislike']." ";
+ }
+ echo "
+
+
+
+
+
+
+
+
+
+
+ ";
+ $tbl_name2="forum_answer"; // Switch to table "forum_answer"
+ $sql2="SELECT * FROM $tbl_name2 WHERE question_id='$id' ORDER BY a_id ASC";
+ $result2=mysql_query($sql2);
+
+ while($rows=mysql_fetch_array($result2))
+ {
+ echo "
+
+
+ ";
+
+ $sql = "SELECT Avatar FROM userdata WHERE Nickname = '".$rows["a_name"]."'";
+ $result = mysql_query ($sql);
+ $Avatar=mysql_fetch_array ($result);
+ if($rows["a_name"] == "")
+ {
+ $rows["a_name"] = "guest";
+ }
+
+ if($rows["a_like"] == "")
+ {
+ $rows["a_like"] = "0";
+ }
+ if($rows["a_dislike"] == "")
+ {
+ $rows["a_dislike"] = "0";
+ }
+
+ echo" \n
+
+
+
+
+ #". $rows['a_id']." , by: ".$rows['a_name'];
+
+ if(($_SESSION["user_nickname"] == $rows["a_name"] && $settings["closed"] != 1)|| $_SESSION["user_admin"]=="1")
+ {
+ echo "";
+ }
+ echo "
+
+
+ ". $rows['a_answer']. "
+ ";
+
+ if($rows['a_attachment'] != "")
+ {
+ $pos1 = strpos($rows['a_attachment'], "-");
+ $pos2 = strpos($rows['a_attachment'], "-",$pos1+1);
+ $attname = substr($rows['a_attachment'], $pos2+1);
+ echo "
+
+ Attachment:
+ ".$attname."
+ ";
+ }
+ echo "
+
+
+
+
+
+ Date: ".$rows['a_datetime']."
+
+
+ ";
+ if(isset($_SESSION["user_id"]))
+ {
+ $sql = "SELECT * FROM forum_like WHERE question = '".$id."' AND answer = '".$rows["a_id"]."'";
+ $result = mysql_query ($sql);
+ $liked = false;
+ $disliked = false;
+ while($Like=mysql_fetch_array($result))
+ {
+ if($Like[2]==$_SESSION["user_nickname"])
+ {
+ $liked = true;
+ $disliked = true;
+ }
+ }
+
+ if(!$liked)
+ echo $rows['a_like']." ";
+ else
+ echo $rows['a_like']." ";
+ if(!$disliked)
+ echo $rows['a_dislike']." ";
+ else
+ echo $rows['a_dislike']." ";
+ }
+ else
+ {
+ echo $rows['a_like']." ".
+ $rows['a_dislike']." ";
+ }
+ echo "
+
+
+
+
+
+
+
+
+
+
+ ";
+ }
+
+ $sql3="SELECT view FROM $tbl_name WHERE id='$id'";
+ $result3=mysql_query($sql3);
+
+ $rows=mysql_fetch_array($result3);
+ $view=$rows['view'];
+
+ // if have no counter value set counter = 1
+ if(empty($view))
+ {
+ $view=1;
+ $sql4="INSERT INTO $tbl_name(view) VALUES('$view') WHERE id='$id'";
+ $result4=mysql_query($sql4);
+ }
+
+ // count more value
+ $addview=$view+1;
+ $sql5="update $tbl_name set view='$addview' WHERE id='$id'";
+ $result5=mysql_query($sql5);
+
+ mysql_close();
+ echo "
+
+
+
+ ";
+
+ if (((isset ($_SESSION["user_id"]) && $settings["w_adminonly"]== "0") ||
+ $settings["w_guest"]=="1" ||
+ ($_SESSION["user_admin"]=="1"&&$settings["w_adminonly"]== "1"))
+ && $settings["closed"] != "1")
+ {
+ echo"
+ ";
+ }
+}
+?>
diff --git a/Modules/Forum/index.php b/Modules/Forum/index.php
new file mode 100755
index 0000000..efe4789
--- /dev/null
+++ b/Modules/Forum/index.php
@@ -0,0 +1,43 @@
+ 0)
+{
+ $moduleurl = substr($moduleurl,0,$urlcut);
+}
+else
+{
+ if(strpos($moduleurl, "?") == 0)
+ {
+ $moduleurl = $_SERVER["REQUEST_URI"]."?site=1";
+ }
+ if($_SERVER["REQUEST_URI"] == "/" || is_null($_SERVER["REQUEST_URI"]))
+ {
+ $moduleurl = "/index.php?site=1";
+ }
+}
+$moduleurl1 = $moduleurl;
+
+switch($uebergabe)
+{
+//-----------------------------------------------------------------------------------------------------------------------------------------------------------
+case "0":
+ include($_SERVER["DOCUMENT_ROOT"]."/Modules/Forum/include/viewforum.php");
+ break;
+//-------------------------------------------------------------------------------------------------------------------------
+//view topic---------------------------------------------------------------------------------------------------------------
+case "1":
+ include($_SERVER["DOCUMENT_ROOT"]."/Modules/Forum/include/viewtopic.php");
+ break;
+//-------------------------------------------------------------------------------------------------------------------------
+//add topic----------------------------------------------------------------------------------------------------------------
+case "2":
+ include($_SERVER["DOCUMENT_ROOT"]."/Modules/Forum/include/addtopic.php");
+ break;
+//-------------------------------------------------------------------------------------------------------------------------
+//-------------------------------------------------------------------------------------------------------------------------
+default:
+ include($_SERVER["DOCUMENT_ROOT"]."/Modules/Forum/include/viewforum.php");
+ break;
+}
+
diff --git a/Modules/Forum/reopen_topic.php b/Modules/Forum/reopen_topic.php
new file mode 100755
index 0000000..5ab1174
--- /dev/null
+++ b/Modules/Forum/reopen_topic.php
@@ -0,0 +1,31 @@
+FAIL ] ");
+}
+
+// get data that sent from form
+$topic=$_POST['topicid'];
+
+$sql="UPDATE $tbl_name SET closed ='0' WHERE id ='$topic'";
+$result=mysql_query($sql);
+
+if($result)
+{
+ header ("Location: ".$moduleurl."&uebergabe=0&uebergabe2=3&uebergabe3=1");
+}
+else
+{
+ echo "ERROR";
+}
+mysql_close();
+?>
diff --git a/Modules/Forum/uploads/11-3-Daumen_hoch_90.JPG.zip b/Modules/Forum/uploads/11-3-Daumen_hoch_90.JPG.zip
new file mode 100755
index 0000000..79f9d32
Binary files /dev/null and b/Modules/Forum/uploads/11-3-Daumen_hoch_90.JPG.zip differ
diff --git a/Modules/Forum/uploads/19-1-h44z_64 b/Modules/Forum/uploads/19-1-h44z_64
new file mode 100644
index 0000000..101d8f1
Binary files /dev/null and b/Modules/Forum/uploads/19-1-h44z_64 differ
diff --git a/Modules/Forum/uploads/19-2-h44z_32 b/Modules/Forum/uploads/19-2-h44z_32
new file mode 100755
index 0000000..8a3c923
Binary files /dev/null and b/Modules/Forum/uploads/19-2-h44z_32 differ
diff --git a/Modules/Forum/uploads/2-19-altium-printoutsV1.1.OutJob b/Modules/Forum/uploads/2-19-altium-printoutsV1.1.OutJob
new file mode 100755
index 0000000..86c4257
--- /dev/null
+++ b/Modules/Forum/uploads/2-19-altium-printoutsV1.1.OutJob
@@ -0,0 +1,142 @@
+[OutputJobFile]
+Version=1.0
+
+[OutputGroup1]
+Name=altium-printoutsV1.0.OutJob
+Description=
+TargetOutputMedium=Generate Files
+IncludedInRelease=0
+TargetPrinter=Microsoft XPS Document Writer
+PrinterOptions=Record=PrinterOptions|Copies=1|Duplex=1|TrueTypeOptions=3|Collate=1|PrintWhat=1
+OutputMedium1=Publish To PDF
+OutputMedium1_Type=Publish
+OutputMedium2=Generate Files
+OutputMedium2_Type=GeneratedFiles
+OutputType1=Schematic Print
+OutputName1=Schematic Ausdrucke
+OutputDocumentPath1=[Project Physical Documents]
+OutputVariantName1=[No Variations]
+OutputEnabled1=0
+OutputEnabled1_OutputMedium1=1
+OutputEnabled1_OutputMedium2=0
+OutputDefault1=0
+PageOptions1=Record=PageOptions|CenterHorizontal=True|CenterVertical=True|PrintScale=1.00|XCorrection=1.00|YCorrection=1.00|PrintKind=2|BorderSize=5000000|LeftOffset=0|BottomOffset=0|Orientation=2|PaperLength=1000|PaperWidth=1000|Scale=100|PaperSource=7|PrintQuality=-4|MediaType=1|DitherType=10|PaperKind=A4|PrintScaleMode=1
+Configuration1_Name1=OutputConfigurationParameter1
+Configuration1_Item1=Record=SchPrintView|ShowNoERC=True|ShowParamSet=True|ShowProbe=True|ExpandDesignator=True|ExpandNetLabel=False|ExpandPort=False|ExpandSheetNum=False|ExpandDocNum=False
+OutputType2=BOM_PartType
+OutputName2=Stückliste
+OutputDocumentPath2=
+OutputVariantName2=
+OutputEnabled2=1
+OutputEnabled2_OutputMedium1=0
+OutputEnabled2_OutputMedium2=3
+OutputDefault2=0
+PageOptions2=Record=PageOptions|CenterHorizontal=True|CenterVertical=True|PrintScale=1.00|XCorrection=1.00|YCorrection=1.00|PrintKind=0|BorderSize=5000000|LeftOffset=0|BottomOffset=0|Orientation=2|PaperLength=1000|PaperWidth=1000|Scale=100|PaperSource=7|PrintQuality=-4|MediaType=1|DitherType=10|PaperKind=A4|PrintScaleMode=1
+Configuration2_Name1=Filter
+Configuration2_Item1=545046300E5446696C74657257726170706572000D46696C7465722E416374697665090F46696C7465722E43726974657269610A04000000000000000000
+Configuration2_Name2=General
+Configuration2_Item2=OpenExported=False|AddToProject=True|ForceFit=True|Database=False|IncludePCBData=False|ShowExportOptions=True|TemplateFilename=|BatchMode=0|FormWidth=904|FormHeight=633
+Configuration2_Name3=GroupOrder
+Configuration2_Item3=Comment=True|Footprint=True
+Configuration2_Name4=OutputConfigurationParameter1
+Configuration2_Item4=Record=BOMPrintView|ShowNoERC=True|ShowParamSet=True|ShowProbe=True|ExpandDesignator=True|ExpandNetLabel=False|ExpandPort=False|ExpandSheetNum=False|ExpandDocNum=False
+Configuration2_Name5=PCBDocument
+Configuration2_Item5=
+Configuration2_Name6=SortOrder
+Configuration2_Item6=Quantity=Up
+Configuration2_Name7=VisibleOrder
+Configuration2_Item7=Designator=100|Value=100|Comment=100|Quantity=100|Footprint=100|Description=100
+OutputType3=Gerber
+OutputName3=Gerber Files
+OutputDocumentPath3=
+OutputVariantName3=
+OutputEnabled3=1
+OutputEnabled3_OutputMedium1=0
+OutputEnabled3_OutputMedium2=1
+OutputDefault3=0
+Configuration3_Name1=OutputConfigurationParameter1
+Configuration3_Item1=AddToAllPlots_Mechanical 1=False|AddToAllPlots_Mechanical 10=False|AddToAllPlots_Mechanical 11=False|AddToAllPlots_Mechanical 12=False|AddToAllPlots_Mechanical 13=False|AddToAllPlots_Mechanical 14=False|AddToAllPlots_Mechanical 15=False|AddToAllPlots_Mechanical 16=False|AddToAllPlots_Mechanical 2=False|AddToAllPlots_Mechanical 3=False|AddToAllPlots_Mechanical 4=True|AddToAllPlots_Mechanical 5=False|AddToAllPlots_Mechanical 6=False|AddToAllPlots_Mechanical 7=False|AddToAllPlots_Mechanical 8=False|AddToAllPlots_Mechanical 9=False|CentrePlots=False|DrillDrawingSymbol=GraphicsSymbol|DrillDrawingSymbolSize=500000|EmbeddedApertures=True|FilmBorderSize=10000000|FilmXSize=200000000|FilmYSize=160000000|FlashAllFills=False|FlashPadShapes=True|G54OnApertureChange=False|GenerateDRCRulesFile=True|GenerateReliefShapes=True|GerberUnit=Imperial|IncludeUnconnectedMidLayerPads=False|LeadingAndTrailingZeroesMode=SuppressLeadingZeroes|MaxApertureSize=2500000|MinusApertureTolerance=50|MirrorBottomLayerPlot=False|MirrorBottomOverlayPlot=False|MirrorBottomPadMasterPlot=False|MirrorBottomPastePlot=False|MirrorBottomSolderPlot=False|MirrorDrillDrawingPlots=False|MirrorDrillGuidePlots=False|MirrorInternalPlane10Plot=False|MirrorInternalPlane11Plot=False|MirrorInternalPlane12Plot=False|MirrorInternalPlane13Plot=False|MirrorInternalPlane14Plot=False|MirrorInternalPlane15Plot=False|MirrorInternalPlane16Plot=False|MirrorInternalPlane1Plot=False|MirrorInternalPlane2Plot=False|MirrorInternalPlane3Plot=False|MirrorInternalPlane4Plot=False|MirrorInternalPlane5Plot=False|MirrorInternalPlane6Plot=False|MirrorInternalPlane7Plot=False|MirrorInternalPlane8Plot=False|MirrorInternalPlane9Plot=False|MirrorKeepOutLayerPlot=False|MirrorMechanical10Plot=False|MirrorMechanical11Plot=False|MirrorMechanical12Plot=False|MirrorMechanical13Plot=False|MirrorMechanical14Plot=False|MirrorMechanical15Plot=False|MirrorMechanical16Plot=False|MirrorMechanical1Plot=False|MirrorMechanical2Plot=False|MirrorMechanical3Plot=False|MirrorMechanical4Plot=False|MirrorMechanical5Plot=False|MirrorMechanical6Plot=False|MirrorMechanical7Plot=False|MirrorMechanical8Plot=False|MirrorMechanical9Plot=False|MirrorMidLayer10Plot=False|MirrorMidLayer11Plot=False|MirrorMidLayer12Plot=False|MirrorMidLayer13Plot=False|MirrorMidLayer14Plot=False|MirrorMidLayer15Plot=False|MirrorMidLayer16Plot=False|MirrorMidLayer17Plot=False|MirrorMidLayer18Plot=False|MirrorMidLayer19Plot=False|MirrorMidLayer1Plot=False|MirrorMidLayer20Plot=False|MirrorMidLayer21Plot=False|MirrorMidLayer22Plot=False|MirrorMidLayer23Plot=False|MirrorMidLayer24Plot=False|MirrorMidLayer25Plot=False|MirrorMidLayer26Plot=False|MirrorMidLayer27Plot=False|MirrorMidLayer28Plot=False|MirrorMidLayer29Plot=False|MirrorMidLayer2Plot=False|MirrorMidLayer30Plot=False|MirrorMidLayer3Plot=False|MirrorMidLayer4Plot=False|MirrorMidLayer5Plot=False|MirrorMidLayer6Plot=False|MirrorMidLayer7Plot=False|MirrorMidLayer8Plot=False|MirrorMidLayer9Plot=False|MirrorTopLayerPlot=False|MirrorTopOverlayPlot=False|MirrorTopPadMasterPlot=False|MirrorTopPastePlot=False|MirrorTopSolderPlot=False|NumberOfDecimals=3|OptimizeChangeLocationCommands=True|OriginPosition=Absolute|Panelize=False|PlotBottomLayerPlot=True|PlotBottomOverlayPlot=False|PlotBottomPadMasterPlot=False|PlotBottomPastePlot=False|PlotBottomSolderPlot=False|PlotInternalPlane10Plot=False|PlotInternalPlane11Plot=False|PlotInternalPlane12Plot=False|PlotInternalPlane13Plot=False|PlotInternalPlane14Plot=False|PlotInternalPlane15Plot=False|PlotInternalPlane16Plot=False|PlotInternalPlane1Plot=False|PlotInternalPlane2Plot=False|PlotInternalPlane3Plot=False|PlotInternalPlane4Plot=False|PlotInternalPlane5Plot=False|PlotInternalPlane6Plot=False|PlotInternalPlane7Plot=False|PlotInternalPlane8Plot=False|PlotInternalPlane9Plot=False|PlotKeepOutLayerPlot=False|PlotMechanical10Plot=False|PlotMechanical11Plot=False|PlotMechanical12Plot=False|PlotMechanical13Plot=False|PlotMechanical14Plot=False|PlotMechanical15Plot=False|PlotMechanical16Plot=False|PlotMechanical1Plot=False|PlotMechanical2Plot=False|PlotMechanical3Plot=False|PlotMechanical4Plot=False|PlotMechanical5Plot=False|PlotMechanical6Plot=False|PlotMechanical7Plot=False|PlotMechanical8Plot=False|PlotMechanical9Plot=False|PlotMidLayer10Plot=False|PlotMidLayer11Plot=False|PlotMidLayer12Plot=False|PlotMidLayer13Plot=False|PlotMidLayer14Plot=False|PlotMidLayer15Plot=False|PlotMidLayer16Plot=False|PlotMidLayer17Plot=False|PlotMidLayer18Plot=False|PlotMidLayer19Plot=False|PlotMidLayer1Plot=False|PlotMidLayer20Plot=False|PlotMidLayer21Plot=False|PlotMidLayer22Plot=False|PlotMidLayer23Plot=False|PlotMidLayer24Plot=False|PlotMidLayer25Plot=False|PlotMidLayer26Plot=False|PlotMidLayer27Plot=False|PlotMidLayer28Plot=False|PlotMidLayer29Plot=False|PlotMidLayer2Plot=False|PlotMidLayer30Plot=False|PlotMidLayer3Plot=False|PlotMidLayer4Plot=False|PlotMidLayer5Plot=False|PlotMidLayer6Plot=False|PlotMidLayer7Plot=False|PlotMidLayer8Plot=False|PlotMidLayer9Plot=False|PlotPositivePlaneLayers=False|PlotTopLayerPlot=True|PlotTopOverlayPlot=True|PlotTopPadMasterPlot=False|PlotTopPastePlot=False|PlotTopSolderPlot=False|PlotUsedDrillDrawingLayerPairs=False|PlotUsedDrillGuideLayerPairs=False|PlusApertureTolerance=50|Record=GerberView|SoftwareArcs=False|Sorted=False
+OutputType4=NC Drill
+OutputName4=NC Drill Files
+OutputDocumentPath4=
+OutputVariantName4=
+OutputEnabled4=1
+OutputEnabled4_OutputMedium1=0
+OutputEnabled4_OutputMedium2=2
+OutputDefault4=0
+Configuration4_Name1=OutputConfigurationParameter1
+Configuration4_Item1=BoardEdgeRoutToolDia=2000000|GenerateBoardEdgeRout=False|GenerateDrilledSlotsG85=False|GenerateSeparatePlatedNonPlatedFiles=False|NumberOfDecimals=3|NumberOfUnits=2|OptimizeChangeLocationCommands=True|OriginPosition=Absolute|Record=DrillView|Units=Imperial|ZeroesMode=SuppressLeadingZeroes
+OutputType5=Final
+OutputName5=PCB Ausdrucke
+OutputDocumentPath5=
+OutputVariantName5=
+OutputEnabled5=0
+OutputEnabled5_OutputMedium1=2
+OutputEnabled5_OutputMedium2=0
+OutputDefault5=0
+PageOptions5=Record=PageOptions|CenterHorizontal=True|CenterVertical=True|PrintScale=1.00|XCorrection=1.00|YCorrection=1.00|PrintKind=2|BorderSize=5000000|LeftOffset=0|BottomOffset=0|Orientation=2|PaperLength=1000|PaperWidth=1000|Scale=100|PaperSource=7|PrintQuality=-4|MediaType=1|DitherType=10|PaperKind=A4|PrintScaleMode=0
+Configuration5_Name1=OutputConfigurationParameter1
+Configuration5_Item1=PrintArea=DesignExtent|PrintAreaLowerLeftCornerX=0|PrintAreaLowerLeftCornerY=0|PrintAreaUpperRightCornerX=0|PrintAreaUpperRightCornerY=0|Record=PcbPrintView
+Configuration5_Name2=OutputConfigurationParameter2
+Configuration5_Item2=IncludeBottomLayerComponents=True|IncludeMultiLayerComponents=True|IncludeTopLayerComponents=True|Index=0|Mirror=False|Name=Top Layer (Kupfer)|PadNumberFontSize=14|Record=PcbPrintOut|ShowHoles=True|ShowPadNets=False|ShowPadNumbers=False|SubstituteFonts=False
+Configuration5_Name3=OutputConfigurationParameter3
+Configuration5_Item3=CArc=Full|CFill=Full|Comment=Full|Coordinate=Full|CPad=Full|CRegion=Full|CText=Full|CTrack=Full|CVia=Full|DDSymbolKind=0|DDSymbolSize=500000|DDSymbolSortKind=0|Designator=Full|Dimension=Full|DLayer1=TopLayer|DLayer2=BottomLayer|FArc=Full|FFill=Full|FPad=Full|FRegion=Full|FText=Full|FTrack=Full|FVia=Full|Layer=MultiLayer|Polygon=Full|PrintOutIndex=0|Record=PcbPrintLayer
+Configuration5_Name4=OutputConfigurationParameter4
+Configuration5_Item4=CArc=Full|CFill=Full|Comment=Full|Coordinate=Full|CPad=Full|CRegion=Full|CText=Full|CTrack=Full|CVia=Full|DDSymbolKind=0|DDSymbolSize=500000|DDSymbolSortKind=0|Designator=Full|Dimension=Full|DLayer1=TopLayer|DLayer2=BottomLayer|FArc=Full|FFill=Full|FPad=Full|FRegion=Full|FText=Full|FTrack=Full|FVia=Full|Layer=TopLayer|Polygon=Full|PrintOutIndex=0|Record=PcbPrintLayer
+Configuration5_Name5=OutputConfigurationParameter5
+Configuration5_Item5=CArc=Full|CFill=Full|Comment=Full|Coordinate=Full|CPad=Full|CRegion=Full|CText=Full|CTrack=Full|CVia=Full|DDSymbolKind=0|DDSymbolSize=500000|DDSymbolSortKind=0|Designator=Full|Dimension=Full|DLayer1=TopLayer|DLayer2=BottomLayer|FArc=Full|FFill=Full|FPad=Full|FRegion=Full|FText=Full|FTrack=Full|FVia=Full|Layer=Mechanical4|Polygon=Full|PrintOutIndex=0|Record=PcbPrintLayer
+Configuration5_Name6=OutputConfigurationParameter6
+Configuration5_Item6=IncludeBottomLayerComponents=True|IncludeMultiLayerComponents=True|IncludeTopLayerComponents=True|Index=1|Mirror=True|Name=Bottom Layer (Kupfer)|PadNumberFontSize=14|Record=PcbPrintOut|ShowHoles=True|ShowPadNets=False|ShowPadNumbers=False|SubstituteFonts=False
+Configuration5_Name7=OutputConfigurationParameter7
+Configuration5_Item7=CArc=Full|CFill=Full|Comment=Full|Coordinate=Full|CPad=Full|CRegion=Full|CText=Full|CTrack=Full|CVia=Full|DDSymbolKind=0|DDSymbolSize=500000|DDSymbolSortKind=0|Designator=Full|Dimension=Full|DLayer1=TopLayer|DLayer2=BottomLayer|FArc=Full|FFill=Full|FPad=Full|FRegion=Full|FText=Full|FTrack=Full|FVia=Full|Layer=MultiLayer|Polygon=Full|PrintOutIndex=1|Record=PcbPrintLayer
+Configuration5_Name8=OutputConfigurationParameter8
+Configuration5_Item8=CArc=Full|CFill=Full|Comment=Full|Coordinate=Full|CPad=Full|CRegion=Full|CText=Full|CTrack=Full|CVia=Full|DDSymbolKind=0|DDSymbolSize=500000|DDSymbolSortKind=0|Designator=Full|Dimension=Full|DLayer1=TopLayer|DLayer2=BottomLayer|FArc=Full|FFill=Full|FPad=Full|FRegion=Full|FText=Full|FTrack=Full|FVia=Full|Layer=BottomLayer|Polygon=Full|PrintOutIndex=1|Record=PcbPrintLayer
+Configuration5_Name9=OutputConfigurationParameter9
+Configuration5_Item9=CArc=Full|CFill=Full|Comment=Full|Coordinate=Full|CPad=Full|CRegion=Full|CText=Full|CTrack=Full|CVia=Full|DDSymbolKind=0|DDSymbolSize=500000|DDSymbolSortKind=0|Designator=Full|Dimension=Full|DLayer1=TopLayer|DLayer2=BottomLayer|FArc=Full|FFill=Full|FPad=Full|FRegion=Full|FText=Full|FTrack=Full|FVia=Full|Layer=Mechanical4|Polygon=Full|PrintOutIndex=1|Record=PcbPrintLayer
+Configuration5_Name10=OutputConfigurationParameter10
+Configuration5_Item10=IncludeBottomLayerComponents=True|IncludeMultiLayerComponents=True|IncludeTopLayerComponents=True|Index=2|Mirror=False|Name=Bestückungsplan Top Layer|PadNumberFontSize=14|Record=PcbPrintOut|ShowHoles=False|ShowPadNets=False|ShowPadNumbers=False|SubstituteFonts=False
+Configuration5_Name11=OutputConfigurationParameter11
+Configuration5_Item11=CArc=Full|CFill=Full|Comment=Full|Coordinate=Full|CPad=Full|CRegion=Full|CText=Full|CTrack=Full|CVia=Full|DDSymbolKind=0|DDSymbolSize=500000|DDSymbolSortKind=0|Designator=Full|Dimension=Full|DLayer1=TopLayer|DLayer2=BottomLayer|FArc=Full|FFill=Full|FPad=Full|FRegion=Full|FText=Full|FTrack=Full|FVia=Full|Layer=TopOverlay|Polygon=Full|PrintOutIndex=2|Record=PcbPrintLayer
+Configuration5_Name12=OutputConfigurationParameter12
+Configuration5_Item12=CArc=Full|CFill=Full|Comment=Full|Coordinate=Full|CPad=Full|CRegion=Full|CText=Full|CTrack=Full|CVia=Full|DDSymbolKind=0|DDSymbolSize=500000|DDSymbolSortKind=0|Designator=Full|Dimension=Full|DLayer1=TopLayer|DLayer2=BottomLayer|FArc=Full|FFill=Full|FPad=Full|FRegion=Full|FText=Full|FTrack=Full|FVia=Full|Layer=Mechanical4|Polygon=Full|PrintOutIndex=2|Record=PcbPrintLayer
+Configuration5_Name13=OutputConfigurationParameter13
+Configuration5_Item13=IncludeBottomLayerComponents=True|IncludeMultiLayerComponents=True|IncludeTopLayerComponents=True|Index=3|Mirror=True|Name=Bestückungsplan Bottom Layer|PadNumberFontSize=14|Record=PcbPrintOut|ShowHoles=False|ShowPadNets=False|ShowPadNumbers=False|SubstituteFonts=False
+Configuration5_Name14=OutputConfigurationParameter14
+Configuration5_Item14=CArc=Full|CFill=Full|Comment=Full|Coordinate=Full|CPad=Full|CRegion=Full|CText=Full|CTrack=Full|CVia=Full|DDSymbolKind=0|DDSymbolSize=500000|DDSymbolSortKind=0|Designator=Full|Dimension=Full|DLayer1=TopLayer|DLayer2=BottomLayer|FArc=Full|FFill=Full|FPad=Full|FRegion=Full|FText=Full|FTrack=Full|FVia=Full|Layer=BottomOverlay|Polygon=Full|PrintOutIndex=3|Record=PcbPrintLayer
+Configuration5_Name15=OutputConfigurationParameter15
+Configuration5_Item15=CArc=Full|CFill=Full|Comment=Full|Coordinate=Full|CPad=Full|CRegion=Full|CText=Full|CTrack=Full|CVia=Full|DDSymbolKind=0|DDSymbolSize=500000|DDSymbolSortKind=0|Designator=Full|Dimension=Full|DLayer1=TopLayer|DLayer2=BottomLayer|FArc=Full|FFill=Full|FPad=Full|FRegion=Full|FText=Full|FTrack=Full|FVia=Full|Layer=Mechanical4|Polygon=Full|PrintOutIndex=3|Record=PcbPrintLayer
+Configuration5_Name16=OutputConfigurationParameter16
+Configuration5_Item16=IncludeBottomLayerComponents=True|IncludeMultiLayerComponents=True|IncludeTopLayerComponents=True|Index=4|Mirror=True|Name=Bohrplan (Ansicht von Bottom)|PadNumberFontSize=14|Record=PcbPrintOut|ShowHoles=False|ShowPadNets=False|ShowPadNumbers=False|SubstituteFonts=False
+Configuration5_Name17=OutputConfigurationParameter17
+Configuration5_Item17=CArc=Full|CFill=Full|Comment=Full|Coordinate=Full|CPad=Full|CRegion=Full|CText=Full|CTrack=Full|CVia=Full|DDSymbolKind=0|DDSymbolSize=500000|DDSymbolSortKind=0|Designator=Full|Dimension=Full|DLayer1=TopLayer|DLayer2=BottomLayer|FArc=Full|FFill=Full|FPad=Full|FRegion=Full|FText=Full|FTrack=Full|FVia=Full|Layer=DrillDrawing|Polygon=Full|PrintOutIndex=4|Record=PcbPrintLayer
+Configuration5_Name18=OutputConfigurationParameter18
+Configuration5_Item18=CArc=Full|CFill=Full|Comment=Full|Coordinate=Full|CPad=Full|CRegion=Full|CText=Full|CTrack=Full|CVia=Full|DDSymbolKind=0|DDSymbolSize=500000|DDSymbolSortKind=0|Designator=Full|Dimension=Full|DLayer1=TopLayer|DLayer2=BottomLayer|FArc=Full|FFill=Full|FPad=Full|FRegion=Full|FText=Full|FTrack=Full|FVia=Full|Layer=Mechanical4|Polygon=Full|PrintOutIndex=4|Record=PcbPrintLayer
+
+[PublishSettings]
+PublishMethod1=0
+OpenOutput1=1
+PromptOverwrite1=1
+ZoomLevel1=50
+FitSCHPrintSizeToDoc1=1
+FitPCBPrintSizeToDoc1=1
+GenerateNetsInfo1=1
+MarkPins1=1
+MarkNetLabels1=1
+MarkPortsId1=1
+OutputFilePath1=
+
+[GeneratedFilesSettings]
+RelativeOutputPath2=
+OpenOutputs2=0
+AddToProject2=1
+TimestampFolder2=0
+SeparateFolderForEachOutput2=1
+UseOutputName2=1
+
+[CAMtasticOutputs]
+OpenODBOutput=False
+OpenGerberOutput=False
+OpenNCDrillOutput=False
+OpenIPCOutput=False
+EnableReload=False
+
diff --git a/Modules/Forum/uploads/3-5-hydra.restore b/Modules/Forum/uploads/3-5-hydra.restore
new file mode 100755
index 0000000..f424752
Binary files /dev/null and b/Modules/Forum/uploads/3-5-hydra.restore differ
diff --git a/Modules/Forum/uploads/Daumenh.JPG b/Modules/Forum/uploads/Daumenh.JPG
new file mode 100755
index 0000000..c11c82a
Binary files /dev/null and b/Modules/Forum/uploads/Daumenh.JPG differ
diff --git a/Modules/Forum/uploads/Daumenr.jpg b/Modules/Forum/uploads/Daumenr.jpg
new file mode 100755
index 0000000..2ad8ad1
Binary files /dev/null and b/Modules/Forum/uploads/Daumenr.jpg differ
diff --git a/Modules/Forum/uploads/index.php b/Modules/Forum/uploads/index.php
new file mode 100755
index 0000000..91eefb3
--- /dev/null
+++ b/Modules/Forum/uploads/index.php
@@ -0,0 +1,3 @@
+
diff --git a/Modules/Home/img/01.png b/Modules/Home/img/01.png
new file mode 100755
index 0000000..4469a39
Binary files /dev/null and b/Modules/Home/img/01.png differ
diff --git a/Modules/Home/img/02.png b/Modules/Home/img/02.png
new file mode 100755
index 0000000..f44b541
Binary files /dev/null and b/Modules/Home/img/02.png differ
diff --git a/Modules/Home/img/03.png b/Modules/Home/img/03.png
new file mode 100755
index 0000000..1839083
Binary files /dev/null and b/Modules/Home/img/03.png differ
diff --git a/Modules/Home/img/apache_logo.gif b/Modules/Home/img/apache_logo.gif
new file mode 100755
index 0000000..0db293e
Binary files /dev/null and b/Modules/Home/img/apache_logo.gif differ
diff --git a/Modules/Home/img/contact.jpg b/Modules/Home/img/contact.jpg
new file mode 100755
index 0000000..05dca75
Binary files /dev/null and b/Modules/Home/img/contact.jpg differ
diff --git a/Modules/Home/img/debian_logo.png b/Modules/Home/img/debian_logo.png
new file mode 100755
index 0000000..7a31582
Binary files /dev/null and b/Modules/Home/img/debian_logo.png differ
diff --git a/Modules/Home/img/mysql_logo.png b/Modules/Home/img/mysql_logo.png
new file mode 100755
index 0000000..5c1e3b4
Binary files /dev/null and b/Modules/Home/img/mysql_logo.png differ
diff --git a/Modules/Home/img/openvpn_logo.png b/Modules/Home/img/openvpn_logo.png
new file mode 100755
index 0000000..4ea1df5
Binary files /dev/null and b/Modules/Home/img/openvpn_logo.png differ
diff --git a/Modules/Home/img/schulvpn.png b/Modules/Home/img/schulvpn.png
new file mode 100755
index 0000000..517589b
Binary files /dev/null and b/Modules/Home/img/schulvpn.png differ
diff --git a/Modules/Home/img/ubuntu_logo.png b/Modules/Home/img/ubuntu_logo.png
new file mode 100755
index 0000000..ed938ca
Binary files /dev/null and b/Modules/Home/img/ubuntu_logo.png differ
diff --git a/Modules/Home/index.php b/Modules/Home/index.php
new file mode 100755
index 0000000..c8f0fdd
--- /dev/null
+++ b/Modules/Home/index.php
@@ -0,0 +1,105 @@
+
+
+
+
+
+
+
+
+
Infos über das Projekt:
+
+
Mit Hilfe von OpenVPN wird der gesamte Netzwerkverkehr der ueber das WLAN uebertragen wird verschluesselt.
+ Dies hat den Vorteil, dass private Daten, wie z.B Login-Informationen usw., wirklich privat bleiben.
+
In der HTL wird ein Verschluesselter Tunnel von einem Client (z.B. Schueler-Laptop) zum VPN-Server aufgebaut. Der VPN Server Leitet dann den gesamten
+ Traffic direkt an den Hauptrouter/Proxy der HTL weiter. Die Verbindung vom VPN-Server zum Router erfolgt direkt ueber Kabel und wird somit als "sicher"
+ bezeichnet.
+
+
+
+
+
+
+
+
+
+
+
+
Besteht interresse an einem Account fuer SchulVPN? Dann melde dich einfach
+ bei einen von den Administratoren!
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Du wuerdest gerne mithelfen oder hast Fehler und Anregungen zu melden? Sende uns eine Email oder erstelle einen Forenbeitrag!
+
+
+
+
+
+
+
+
+
+
+
Powered by:
+
+
+
+
+
+
+ Ubuntu 10.04 LTS Server Linux
+
+
+
+
+
+
+
+ Apache 2 Webserver
+
+
+
+
+
+
+
+ MySQL 5.1 Datenbank
+
+
+
+
+
+
+
+ OpenVPN 2.1 Server
+
+
+
+
+
+
+
+
+
+
diff --git a/Modules/Privacy/index.php b/Modules/Privacy/index.php
new file mode 100755
index 0000000..3a85083
--- /dev/null
+++ b/Modules/Privacy/index.php
@@ -0,0 +1,65 @@
+
+
+
+
+
+
+
+
+
+
Consent to Collection of Your Personal Information
+
+When you visit this site, certain kinds of non-personal information, such as the website that referred you to us, your IP address, browser type and language, and access times, may be collected automatically as part of the site's operation. We also may collect navigational information, including information about the pages you view, the links you click, and other actions taken in connection with the site. Demographic information (e.g., your occupation, hobbies, gender, or interests) may also be collected and may be linked to your personal information.
+
+We only collect personal information about you after you have provided us with your consent to collect that specific information. By voluntarily providing this information to us, you consent to the collection and use of your personal information as set out in this privacy policy.
+
+
Personal information includes:
+Information collected when you place the order including your name, billing address, email address, and phone number.
+
+
Please note: we do not collect the credit card details, because we use payment gateways to process your order(s).
+
+You may always choose not to provide personal information, but if you so choose, the offered products and services may not be available to you.
+
+
Use of Your Personal Information
+
+We collect and use your personal information to:
+
* process your transactions;
+
* provide customer service;
+
* perform research and analysis aimed at improving our products, services and technologies;
+
* to display content that is customized to your interests and preferences;
+
* to run contests, select entrants, and choose prize winners;
+
* to communicate with you about your transactions, new products and services. We may send transaction-related communications such as welcome letters, billing reminders, and purchase confirmations. We may also send you surveys or marketing communications to inform you of new products or services or other information or offers that may be of interest.
+
+
Disclosing Your Personal Information
+
+Except as set out in this privacy policy, we do not disclose or sell your personal information to any third-parties.
+
+We may disclose your personal information to third-party service providers who perform services on our behalf. For example, we may hire other companies to handle the processing of payments, to provide data storage, to host websites, to fulfill orders and shipments, to assist in marketing, to conduct audits, etc. Those third-party service providers (i) shall be permitted to obtain only the personal information they need to provide the service, (ii) must protect personal information to the same extent as FlashMint, and (iii) shall be prohibited from using it for any other purpose.
+
+We reserve the right to disclose your personal information if required or permitted to do so by law.
+
+
Security of Your Personal Information
+
+The security of your personal information is important to us. We follow generally accepted industry standards to help protect your personal information including without limitation:
+
* limiting access to your personal information to those of our employees who require it to provide services to you;
+
* requiring employees to sign confidentiality agreements to protect customer and other confidential information;
+
* ensuring that third-party service providers sign confidentiality agreements to maintain the confidentiality of your personal information and not to use it for any unauthorized purposes;
+
* storing your personal information in secure computer systems which protect it from unauthorized access or use.
+
+No method of transmission over the Internet, or method of electronic storage, is 100% secure. Therefore, while we strive to protect your personal information, we cannot guarantee its absolute security.
+
+
Changes to This Privacy Policy
+
+We reserve the right to change the terms of this privacy policy at any time. When we make changes, we will revise the "last updated" date at the top of the policy. If there are material changes to this statement or in how we will use your personal information, we will notify you by prominently posting a notice of such changes here or on our home page, or by sending you an email. We encourage you to review this policy whenever you visit one of our sites.
+
+
+
+Last update: 6. Nov 2009
+
+
+
+
+
+
diff --git a/Modules/ServerTraffic/index.php b/Modules/ServerTraffic/index.php
new file mode 100644
index 0000000..da2462e
--- /dev/null
+++ b/Modules/ServerTraffic/index.php
@@ -0,0 +1,215 @@
+";
+ exit;
+ }
+
+ $by = "id"; //$_GET["by"];
+ if($_POST["dirsort"] != "")
+ {
+ $sort = mysql_real_escape_string($_POST["dirsort"]);
+ }
+ else
+ {
+ $sort = $_POST["dirsort"];
+ }
+ if($_POST["table"] != "")
+ {
+ $table = mysql_real_escape_string($_POST["table"]);
+ }
+ else
+ {
+ $table = $_POST["table"];
+ }
+
+function Potenz($sent_sum)
+{
+ if($sent_sum>1024)
+ {
+ $sent_sum_anz=round($sent_sum/1024,2) . "kiB";
+
+ if($sent_sum>1024*1024)
+ {
+ $sent_sum_anz=round($sent_sum/(1024*1024),2) . "MiB";
+
+ if($sent_sum>1024*1024*1024)
+ {
+ $sent_sum_anz=round($sent_sum/(1024*1024*1024),2) . "GiB";
+ }
+ }
+ }
+ else
+ {
+ $sent_sum_anz=$sent_sum . "Byte";
+ }
+ return $sent_sum_anz;
+}
+?>
+
+
+
+
+
+ value="ASC">Up
+ value="DESC">Down
+
+
+
+ value="year">Year
+ value="month">Month
+ value="connections">All
+
+
+
+
+
+
+
+ // MYsql befehl basteln
+ $sql = "SELECT * FROM $table ORDER BY $by $sort;";
+ $result = mysql_query($sql);
+
+ echo "";
+ if($table=='connections')
+ {
+ echo "Start Time Stop Time Client IP Download
+ Upload \n";
+ }
+ else if($table=='month')
+ {
+ echo "Month Year Connection Time Download
+ Upload \n";
+ }
+ else if($table=='year')
+ {
+ echo "Year Connection Time Download
+ Upload \n";
+ }
+ else
+ {
+ }
+// ------------------------------------------------ Mysql lesen
+ if ($result)
+ {
+//Zusammenzaehlen
+ $time_sum=0;
+ $month=0;
+ $year=0;
+
+ $sent_sum=0;
+ $received_sum=0;
+
+ while ($ar=mysql_fetch_array($result,MYSQL_ASSOC))
+ {
+ if($table=='connections')
+ {
+ if($ar["stop"] != 0)
+ {
+ $stop = date("r",$ar["stop"]);
+ }
+ else
+ {
+ $stop = "running session";
+ }
+ echo "",date("r",$ar["start"])," ",$stop," ",$ar["ip"],
+ " ",Potenz($ar["sent"])," ",Potenz($ar["received"]),
+ " \n";
+ }
+ else if($table=='month')
+ {
+ if($month!=$ar["month"] && $month!=0)
+ {
+ $hour = floor($time_sum/3600);
+ $min = floor($time_sum/60 - $hour *60);
+ $sec = $time_sum-$hour*3600-$min*60;
+ $timestring = $hour .":". $min .":". $sec;
+
+ $sent_sum_anz = Potenz($sent_sum);
+ $received_sum_anz = Potenz($received_sum);
+
+ echo "",$month," ",$year," ",$timestring,
+ " ",$sent_sum_anz," ",$received_sum_anz,
+ " \n";
+ $sent_sum=0;
+ $received_sum=0;
+ $time_sum=0;
+ }
+ else
+ {
+ }
+ $month=$ar["month"];
+ $year=$ar["year"];
+ $time_sum += $ar["time"];
+ $sent_sum += $ar["sent"];
+ $received_sum += $ar["received"];
+ }
+ else if($table=='year')
+ {
+ if($year!=$ar["year"] && $year!=0)
+ {
+ $hour = floor($time_sum/3600);
+ $min = floor($time_sum/60 - $hour *60);
+ $sec = $time_sum-$hour*3600-$min*60;
+ $timestring = $hour .":". $min .":". $sec;
+
+ $sent_sum_anz = Potenz($sent_sum);
+ $received_sum_anz = Potenz($received_sum);
+
+ echo "",$year," ",$timestring,
+ " ",$sent_sum_anz," ",$received_sum_anz,
+ " \n";
+ $sent_sum=0;
+ $received_sum=0;
+ $time_sum=0;
+ }
+ else
+ {
+ }
+ $year=$ar["year"];
+ $time_sum += $ar["time"];
+ $sent_sum += $ar["sent"];
+ $received_sum += $ar["received"];
+ }
+ else
+ {
+ }
+ }
+//letzen Datensatz ausgeben
+ $hour = floor($time_sum/3600);
+ $min = floor($time_sum/60 - $hour *60);
+ $sec = $time_sum-$hour*3600-$min*60;
+ $timestring = $hour .":". $min .":". $sec;
+
+ $sent_sum_anz = Potenz($sent_sum);
+ $received_sum_anz = Potenz($received_sum);
+
+
+ if($table=='year')
+ {
+ echo "",$year," ",$timestring,
+ " ",$sent_sum_anz," ",$received_sum_anz,
+ " \n";
+ }
+ else if($table=='month')
+ {
+ echo "",$month," ",$year," ",$timestring,
+ " ",$sent_sum_anz," ",$received_sum_anz,
+ " \n";
+ }
+ $sent_sum=0;
+ $received_sum=0;
+ $time_sum=0;
+//---------------------------------
+ }
+ else
+ {
+ echo " ";
+ }
+ echo "
";
+ mysql_close();
+?>
+
diff --git a/Modules/Services/download/certinstall.sh b/Modules/Services/download/certinstall.sh
new file mode 100755
index 0000000..6c8cd41
--- /dev/null
+++ b/Modules/Services/download/certinstall.sh
@@ -0,0 +1,232 @@
+#!/bin/bash
+
+echo "Config-Installationsprogramm für SchulVPN"
+
+if [ $USER != "root" ];
+then
+echo Root-Rechte benoetigt!
+read
+exit 0
+fi
+
+
+echo "Geben Sie das Standard-Wireless Interface ein: "
+read WLAN
+echo "Geben Sie die ESSID an, bei dem OpenVPN nicht verbinden soll: "
+read NOVPNESSID
+echo "Geben Sie das Interface an, bei dem OpvenVPN nicht verbinden soll: "
+read NOVPNINT
+echo "Geben Sie Ihren Benutzernamen ein: "
+read BENUTZER
+
+mkdir $HOME/.vpn
+mkdir $HOME/.vpn/keys
+
+##------------------------------------------------------------------------------
+#/etc/NetworkManager/dispatcher.d/02vpn
+##------------------------------------------------------------------------------
+echo "#!/bin/bash
+
+INTERFACE=\$1
+ACTION=\$2
+
+ESSID=\$(iwconfig "$WLAN" | grep ESSID | cut -d':' -f2 | sed -e 's/Nickname//g' | sed -e 's/\"//g'| sed -e 's/ //g')
+
+echo '\$ESSID + \$INTERFACE + \$ACTION' >> /var/log/vpnscript.log
+
+case \$ACTION in
+ up)
+ if [ \$ESSID != "$NOVPNESSID" ]; then
+ if [ \$INTERFACE != "$NOVPNINT" ]; then
+ echo 'starte script' >> /var/log/vpnscript.log
+
+ "$HOME"/.vpn/scriptconn.sh
+ fi
+ fi
+ ;;
+
+ down)
+ if [ '\$(pidof openvpn)' ]; then
+ echo 'killall openvpn' >> /var/log/vpnscript.log
+ killall openvpn
+ fi
+ ;;
+
+ pre-up)
+ ;;
+
+ post-down)
+ ;;
+
+ *)
+ echo 'Usage: \$0 {up|down|pre-up|post-down}'
+ echo 'finish' >> /var/log/vpnscript.log
+ exit 1
+esac
+" > /etc/NetworkManager/dispatcher.d/02vpn
+chown root:root /etc/NetworkManager/dispatcher.d/02vpn
+chmod +x /etc/NetworkManager/dispatcher.d/02vpn
+
+##------------------------------------------------------------------------------
+#~/.vpn/scriptconn.sh
+##------------------------------------------------------------------------------
+
+echo "#!/bin/bash
+
+echo 'Starte Openvpn' >> /var/log/vpnscript.log
+openvpn --config "$HOME"/.vpn/schulvpn.ovpn &
+
+#sudo -u "$BENUTZER" kdialog --title 'OpenVPN' --passivepopup 'Verbindung wird hergestellt!' 4 --display :0
+#echo 'Dialog angezeit - fin' >> /var/log/vpnscript.log
+
+exit 0
+" > $HOME/.vpn/scriptconn.sh
+##------------------------------------------------------------------------------
+#~/.vpn/scriptstate.sh
+##------------------------------------------------------------------------------
+
+echo "#!/bin/bash
+
+if [ \$1 = 'connected' ]
+ then sudo -u "$BENUTZER" kdialog --title 'OpenVPN' --passivepopup 'Verbunden!' 4 --display :0
+ elif [ \$1 = 'disconnected' ]
+ then sudo -u "$BENUTZER" kdialog --title 'OpenVPN' --passivepopup 'Verbindung getrennt!' 4 --display :0
+ else
+ echo 'fail'
+echo 'scriptconn started' >> /var/log/vpnlog.log
+fi
+
+exit 0
+" > $HOME/.vpn/scriptstate.sh
+
+##------------------------------------------------------------------------------
+#CertCopy
+##------------------------------------------------------------------------------
+
+cert=$(ls *.key |cut -d "." -f1 |cut -d "/" -f3)
+#cert=$(echo $cert | cut -d " " -f1)
+
+controll="0"
+
+if [ -z "$cert" ];
+then
+echo "Es wurde kein Zertifikat gefunden"
+controll="1"
+else
+echo "Es wurde ein Zertifikat gefunden: "$cert".key"
+
+cp $cert.key $HOME/.vpn/keys/$cert.key
+cp $cert.crt $HOME/.vpn/keys/$cert.crt
+cp ca.crt $HOME/.vpn/keys/ca.crt
+fi
+
+if [ $controll == "0" ]
+then
+
+test -e "$HOME/.vpn/keys/$cert.crt"
+if [ 1 == $? ];
+then
+echo $cert.crt nicht richtig kopiert
+controll="1"
+fi
+
+
+test -e "$HOME/.vpn/keys/$cert.key"
+if [ 1 == $? ];
+then
+echo $cert.key nicht richtig kopiert
+controll="1"
+fi
+
+
+test -e "$HOME/.vpn/keys/ca.crt"
+if [ 1 == $? ];
+then
+echo ca.crt nicht richtig kopiert
+controll="1"
+fi
+
+
+if [ 0 == $controll ];
+then
+echo "#Konfiguriert by Christoph Haas
+#Copyleft CyberLabs 2008-09
+#Veraendern auf EIGENE GEFAHR...
+
+#Start
+
+##########################################################
+# AENDERUNGEN START
+##########################################################
+#Zertifikate
+ca "$HOME"/.vpn/keys/ca.crt
+cert "$HOME"/.vpn/keys/"$cert".crt
+key "$HOME"/.vpn/keys/"$cert".key
+
+##########################################################
+# AENDERUNGEN ENDE
+#########################################################
+#Modus
+client
+
+#IP Modus
+float
+
+#Tunnel Modus/Device
+dev tap
+
+#MTU laenge
+tun-mtu 1500
+
+#probleme mit windoof clients verhindern
+;fragment 1500 #udp only
+mssfix
+
+#LAN Adapter Name (optional^^)
+;dev-node my-tap
+
+#Protokoll fuern Tunnel (in da schule tcp)
+proto tcp-client
+
+#Pushs vom Server abarbeiten
+pull
+
+#Server IP / PORT
+remote 10.10.63.60 1194
+
+#Server COMMON Name
+#tls-remote VPNServer
+
+#Authentifizierung/Encryption
+;auth SHA1
+cipher aes-256-cbc
+
+#Adress bind verhindern
+nobind
+
+#Komprimierung
+comp-lzo
+
+#LINUX/UNIX only
+;persist-key
+;persist-tun
+
+script-security 2
+
+# eventuelle kde4 integration
+;route-up '"$HOME"/.vpn/scriptstate.sh connected'
+;down '"$HOME"/.vpn/scriptstate.sh disconnected'
+
+#Ende
+" > $HOME/.vpn/schulvpn.ovpn
+chmod +x $HOME/.vpn/*
+echo SchulVPN ist jetzt verwendbar!
+read
+exit 0
+else
+echo "Überprüfen Sie, ob das zip paket richtig entpackt wurde!"
+echo "Führen Sie anschließend das Setup nocheinmal aus!"
+read
+exit 1
+fi
+fi
diff --git a/Modules/Services/download/certinstall.sh.bak b/Modules/Services/download/certinstall.sh.bak
new file mode 100755
index 0000000..a7ea012
--- /dev/null
+++ b/Modules/Services/download/certinstall.sh.bak
@@ -0,0 +1,232 @@
+#!/bin/bash
+
+echo "Config-Installationsprogramm für SchulVPN"
+
+if [ $USER != "root" ];
+then
+echo Root-Rechte benoetigt!
+read
+exit 0
+fi
+
+
+echo "Geben Sie das Standard-Wireless Interface ein: "
+read WLAN
+echo "Geben Sie die ESSID an, bei dem OpenVPN nicht verbinden soll: "
+read NOVPNESSID
+echo "Geben Sie das Interface an, bei dem OpvenVPN nicht verbinden soll: "
+read NOVPNINT
+
+mkdir $HOME/.vpn
+mkdir $HOME/.vpn/keys
+
+##------------------------------------------------------------------------------
+#/etc/NetworkManager/dispatcher.d/02vpn
+##------------------------------------------------------------------------------
+echo "#!/bin/bash
+
+INTERFACE=\$1
+ACTION=\$2
+
+ESSID=\$(iwconfig "$WLAN" | grep ESSID | cut -d':' -f2 | sed -e 's/Nickname//g' | sed -e 's/\"//g'| sed -e 's/ //g')
+
+echo '\$ESSID + \$INTERFACE + \$ACTION' >> /var/log/vpnscript.log
+
+case \$ACTION in
+ up)
+ if [ \$ESSID != \""$NOVPNESSID"\" ]; then
+ if [ \$INTERFACE != \""$NOVPNINT"\" ]; then
+ echo 'starte script' >> /var/log/vpnscript.log
+
+ "$HOME"/.vpn/scriptconn.sh
+ fi
+ fi
+ ;;
+
+ down)
+ if [ '\$(pidof openvpn)' ]; then
+ echo 'killall openvpn' >> /var/log/vpnscript.log
+ killall openvpn
+ fi
+ ;;
+
+ pre-up)
+ ;;
+
+ post-down)
+ ;;
+
+ *)
+ echo $'Usage: \$0 {up|down|pre-up|post-down}'
+ echo 'finish' >> /var/log/vpnscript.log
+ exit 1
+esac
+" > /etc/NetworkManager/dispatcher.d/02vpn
+chown root:root /etc/NetworkManager/dispatcher.d/02vpn
+chmod +x /etc/NetworkManager/dispatcher.d/02vpn
+
+##------------------------------------------------------------------------------
+#~/.vpn/scriptconn.sh
+##------------------------------------------------------------------------------
+
+echo "#!/bin/bash
+
+echo 'Starte Openvpn' >> /var/log/vpnscript.log
+openvpn --config "$HOME"/.vpn/schulvpn.ovpn &
+
+#sudo -u "$USER" kdialog --title 'OpenVPN' --passivepopup 'OpenVPN - Verbindung wird hergestellt!' 4 --display :0
+
+#echo 'Dialog angezeit - fin' >> /var/log/vpnscript.log
+exit 0
+" > $HOME/.vpn/scriptconn.sh
+##------------------------------------------------------------------------------
+#~/.vpn/scriptstate.sh
+##------------------------------------------------------------------------------
+
+echo "#!/bin/bash
+
+BENUTZER=$(cat /etc/passwd |grep 1000 |cut -d ':' -f1)
+
+if [ $1 = 'connected' ]
+ then sudo -u "$BENUTZER" kdialog --title 'OpenVPN' --passivepopup 'OpenVPN - Verbunden!' 4 --display :0
+ elif [ $1 = 'disconnected' ]
+ then sudo -u "$BENUTZER" kdialog --title 'OpenVPN' --passivepopup 'OpenVPN - Verbindung getrennt!' 4 --display :0
+ else
+ echo 'fail'
+echo 'scriptconn started' >> /var/log/vpnlog.log
+fi
+
+exit 0
+" > $HOME/.vpn/scriptstate.sh
+
+##------------------------------------------------------------------------------
+#CertCopy
+##------------------------------------------------------------------------------
+
+cert=$(ls *.key |cut -d "." -f1 |cut -d "/" -f3)
+#cert=$(echo $cert | cut -d " " -f1)
+
+controll="0"
+
+if [ -z "$cert" ];
+then
+echo "Es wurde kein Zertifikat gefunden"
+controll="1"
+else
+echo "Es wurde ein Zertifikat gefunden: "$cert".key"
+
+cp $cert.key $HOME/.vpn/keys/$cert.key
+cp $cert.crt $HOME/.vpn/keys/$cert.crt
+cp ca.crt $HOME/.vpn/keys/ca.crt
+fi
+
+if [ $controll == "0" ]
+then
+
+test -e "$HOME/.vpn/keys/$cert.crt"
+if [ 1 == $? ];
+then
+echo $cert.crt nicht richtig kopiert
+controll="1"
+fi
+
+
+test -e "$HOME/.vpn/keys/$cert.key"
+if [ 1 == $? ];
+then
+echo $cert.key nicht richtig kopiert
+controll="1"
+fi
+
+
+test -e "$HOME/.vpn/keys/ca.crt"
+if [ 1 == $? ];
+then
+echo ca.crt nicht richtig kopiert
+controll="1"
+fi
+
+
+if [ 0 == $controll ];
+then
+echo "#Konfiguriert by Christoph Haas
+#Copyleft CyberLabs 2008-09
+#Veraendern auf EIGENE GEFAHR...
+
+#Start
+
+##########################################################
+# AENDERUNGEN START
+##########################################################
+#Zertifikate
+ca "$HOME"/.vpn/keys/ca.crt
+cert "$HOME"/.vpn/keys/"$cert".crt
+key "$HOME"/.vpn/keys/"$cert".key
+
+##########################################################
+# AENDERUNGEN ENDE
+#########################################################
+#Modus
+client
+
+#IP Modus
+float
+
+#Tunnel Modus/Device
+dev tap
+
+#MTU laenge
+tun-mtu 1500
+
+#probleme mit windoof clients verhindern
+;fragment 1500 #udp only
+mssfix
+
+#LAN Adapter Name (optional^^)
+;dev-node my-tap
+
+#Protokoll fuern Tunnel (in da schule tcp)
+proto tcp-client
+
+#Pushs vom Server abarbeiten
+pull
+
+#Server IP / PORT
+remote 10.10.63.60 1194
+
+#Server COMMON Name
+#tls-remote VPNServer
+
+#Authentifizierung/Encryption
+;auth SHA1
+cipher aes-256-cbc
+
+#Adress bind verhindern
+nobind
+
+#Komprimierung
+comp-lzo
+
+#LINUX/UNIX only
+;persist-key
+;persist-tun
+
+script-security 2
+
+# eventuelle kde4 integration
+;route-up '"$HOME"/.vpn/scriptstate.sh connected'
+;down '"$HOME"/.vpn/scriptstate.sh disconnected'
+
+#Ende
+" > $HOME/.vpn/schulvpn.ovpn
+chmod +x $HOME/.vpn/*
+echo SchulVPN ist jetzt verwendbar!
+read
+exit 0
+else
+echo "Überprüfen Sie, ob das zip paket richtig entpackt wurde!"
+echo "Führen Sie anschließend das Setup nocheinmal aus!"
+read
+exit 1
+fi
+fi
diff --git a/Modules/Services/download/logger.zip b/Modules/Services/download/logger.zip
new file mode 100755
index 0000000..ebb54e4
Binary files /dev/null and b/Modules/Services/download/logger.zip differ
diff --git a/Modules/Services/download/openvpn-2.2-beta3-install.exe b/Modules/Services/download/openvpn-2.2-beta3-install.exe
new file mode 100644
index 0000000..8d00737
Binary files /dev/null and b/Modules/Services/download/openvpn-2.2-beta3-install.exe differ
diff --git a/Modules/Services/download/readme.txt b/Modules/Services/download/readme.txt
new file mode 100755
index 0000000..d108d95
--- /dev/null
+++ b/Modules/Services/download/readme.txt
@@ -0,0 +1,19 @@
+LINUX:
+openvpn installieren (am besten über apt-get oder synaptic)
+
+und einfach:
+ chmod +x certinstall.sh // Script ausfuehrbar machen
+ sudo ./certinstall.sh // Installation starten
+ausfuehren.
+
+WINDOWS:
+OpenVPN-Client herunterladen
+EXE-Ausführen
+Alle Keyfiles ("number".key, "number".crt, ca.crt) ins (evt zuvor angelegte) "keys" Directory im "SchulVPN\config\" Ordner kopieren. (Keys liegen dann zb. unter "C:/Programme/SchulVPN/config/keys/")
+Anschließend die schulvpn.ovpn nach "SchulVPN/config" kopieren und darin die Pfade und Nummern anpassen.
+
+Bsp ordnerstruktur:
+"C:/Programme/SchulVPN/config/schulvpn.ovpn"
+"C:/Programme/SchulVPN/config/keys/01.crt"
+"C:/Programme/SchulVPN/config/keys/01.key"
+"C:/Programme/SchulVPN/config/keys/ca.crt"
diff --git a/Modules/Services/download/schul-vpn-gui-1_1_0_src.tar.gz b/Modules/Services/download/schul-vpn-gui-1_1_0_src.tar.gz
new file mode 100755
index 0000000..8b12714
Binary files /dev/null and b/Modules/Services/download/schul-vpn-gui-1_1_0_src.tar.gz differ
diff --git a/Modules/Services/download/schulvpn-2.1-gui-1.1.1-install.exe b/Modules/Services/download/schulvpn-2.1-gui-1.1.1-install.exe
new file mode 100755
index 0000000..16eb933
Binary files /dev/null and b/Modules/Services/download/schulvpn-2.1-gui-1.1.1-install.exe differ
diff --git a/Modules/Services/download/schulvpn.ovpn b/Modules/Services/download/schulvpn.ovpn
new file mode 100755
index 0000000..f109aa8
--- /dev/null
+++ b/Modules/Services/download/schulvpn.ovpn
@@ -0,0 +1,69 @@
+#Konfiguriert by Christoph Haas
+#Copyleft CyberLabs 2008-10
+#Veraendern auf EIGENE GEFAHR...
+
+#Start
+
+##########################################################
+# AENDERUNGEN START
+##########################################################
+#Zertifikate (evt pfad anpassen)
+ca /pfad/zur/config/ca.crt # pfad anpassen!
+cert /pfad/zur/config/muster.crt # pfad anpassen! & muster zu nummer aendern!
+key /pfad/zur/config/muster.key # pfad anpassen! & muster zu nummer aendern!
+
+##########################################################
+# AENDERUNGEN ENDE
+#########################################################
+#Modus
+client
+
+#IP Modus
+float
+
+#Tunnel Modus/Device
+dev tap
+
+#MTU laenge
+tun-mtu 1500
+
+#probleme mit windoof clients verhindern
+;fragment 1500 #udp only
+mssfix
+
+#LAN Adapter Name (optional^^)
+;dev-node my-tap
+
+#Protokoll fuern Tunnel (in da schule tcp)
+proto tcp-client
+
+#Pushs vom Server abarbeiten
+pull
+
+#Server IP / PORT
+remote 10.10.63.60 1194
+
+#Server COMMON Name
+#tls-remote VPNServer
+
+#Authentifizierung/Encryption
+;auth SHA1
+cipher aes-256-cbc
+
+#Adress bind verhindern
+nobind
+
+#Komprimierung
+comp-lzo
+
+#LINUX/UNIX only
+;persist-key
+;persist-tun
+
+script-security 2
+
+# kde4 notification
+# route-up "/home/christoph/.vpn/scriptstate.sh connected"
+# down "/home/christoph/.vpn/scriptstate.sh disconnected"
+
+#Ende
diff --git a/Modules/Services/download/schulvpn_1-1-0_install_src.tar.gz b/Modules/Services/download/schulvpn_1-1-0_install_src.tar.gz
new file mode 100755
index 0000000..028d8bc
Binary files /dev/null and b/Modules/Services/download/schulvpn_1-1-0_install_src.tar.gz differ
diff --git a/Modules/Services/download/vpn_maverick32.zip b/Modules/Services/download/vpn_maverick32.zip
new file mode 100644
index 0000000..675d570
Binary files /dev/null and b/Modules/Services/download/vpn_maverick32.zip differ
diff --git a/Modules/Services/download/vpn_maverick64.zip b/Modules/Services/download/vpn_maverick64.zip
new file mode 100644
index 0000000..77a9aab
Binary files /dev/null and b/Modules/Services/download/vpn_maverick64.zip differ
diff --git a/Modules/Services/img/Abbildung2.png b/Modules/Services/img/Abbildung2.png
new file mode 100755
index 0000000..0a7fbde
Binary files /dev/null and b/Modules/Services/img/Abbildung2.png differ
diff --git a/Modules/Services/img/Abbildung2.xcf b/Modules/Services/img/Abbildung2.xcf
new file mode 100755
index 0000000..32af6ba
Binary files /dev/null and b/Modules/Services/img/Abbildung2.xcf differ
diff --git a/Modules/Services/img/HTLinn_logo.gif b/Modules/Services/img/HTLinn_logo.gif
new file mode 100755
index 0000000..9ae44b1
Binary files /dev/null and b/Modules/Services/img/HTLinn_logo.gif differ
diff --git a/Modules/Services/index.php b/Modules/Services/index.php
new file mode 100755
index 0000000..5888708
--- /dev/null
+++ b/Modules/Services/index.php
@@ -0,0 +1,78 @@
+
+
+
+
+
+
+
-- OpenVPN -- |
-- Proxy -- |
-- Download --
+
+
+
+
+
+
+ Wir haben neben dem eigentlichen VPN Projekt auch einen kleinen /Modules/Services/downloaderver installiert. Über diesen kann man aktuelle Linux-Distributionen oder Software für den Unterrichtsgebrauch beziehen.
+ Als Unterbau dient uns hier eine Leicht modifizierte Version von QuiXplorer.
+ QuiXplorer Website
+
+
***NEU*** : Ab sofort ist in der Download-Sektion auch jede Menge Quellcode zum Download vorhanden!
+ Also zuschlagen bevor wir dies Aufgrund von Lehrern wieder vom Netz nehmen müssen xD
+
+
+
+
+
+
+
+
+
Wer SchulVPN benützt hat auch die möglichkeit unseren Proxy Server zu verwenden! Dieser übernimmt die Authentifikation am Schulproxy und er hebt das Downloadlimit im Prinzip auf! (Jeder der SchulVPN benutzt stellt sein Downloadvolumen bereit, der Proxy verwendet dann alle Accounts und betreibt ein "loadbalancing". -> User was nicht so viel downloaden "spenden" ihr Downloadvolumen für andere.
+
+
+ Proxy Info:
+ IP Adresse: 10.8.0.1
+ Port: 8080
+ Lokale Adressen müssen aus dem Proxy ausgenommen werden! (zb: 10.10.63.0/24, moodle, luke usw.)
+
+
+
+
+
+
+
diff --git a/Modules/TermesOfUse/index.php b/Modules/TermesOfUse/index.php
new file mode 100755
index 0000000..3590544
--- /dev/null
+++ b/Modules/TermesOfUse/index.php
@@ -0,0 +1,18 @@
+
+
+PLEASE READ THE TERMS AND CONDITIONS OF USE CAREFULLY BEFORE USING THIS SITE.
+This site is free to use by our visitors. And by using this site, you the user are agreeing to comply with and be bound by the following terms of use. After reviewing the following terms and conditions thoroughly, if you do not agree to the terms and conditions, please do not use this site.
+
+ 1. Acceptance of Agreement. You agree to the terms and conditions outlined in this Terms and Conditions of use Agreement (Agreement) with respect to our site (the Site). This Agreement constitutes the entire and only agreement between us and you, and supersedes all prior or contemporaneous agreements, representations, warranties and understandings with respect to the Site, the content, free product samples or freebie offers or services provided by or listed on the Site, and the subject matter of this Agreement. This Agreement may be amended by us at any time and at any frequency without specific notice to you. The latest Agreement will be posted on the Site, and you should review this Agreement prior to using the Site.
+ 2. Copyright. The content, organization, graphics, design, and other matters related to the Site are protected under applicable copyrights and other proprietary laws, including but not limited to intellectual property laws. The copying, reproduction, use, modification or publication by you of any such matters or any part of the Site is strictly prohibited, without our express prior written permission.
+ 3. Deleting and Modification. We reserve the right in our sole discretion, without any obligation and without any notice requirement to you, to edit or delete any documents, information or other content appearing on the Site, including this Agreement.
+ 4. Indemnification. You agree to indemnify, defend and hold us, our officers, our share holders, our partners, attorneys and employees harmless from any and all liability, loss, damages, claim and expense, including reasonable attorney's fees, related to your violation of this Agreement or use of the Site.
+ 5. Disclaimer. THE CONTENT, SERVICES, FREE PRODUCT SAMPLES AND FREEBIE OFFERS FROM OR LISTED THROUGH THE SITE ARE PROVIDED "AS-IS," "AS AVAILABLE," AND ALL WARRANTIES, EXPRESS OR IMPLIED, ARE DISCLAIMED, INCLUDING BUT NOT LIMITED TO THE DISCLAIMER OF ANY IMPLIED WARRANTIES OF TITLE, NON-INFRINGEMENT, MERCHANTABILITY, QUALITY AND FITNESS FOR A PARTICULAR PURPOSE, WITH RESPECT TO THIS SITE AND ANY WEBSITE WITH WHICH IT IS LINKED. THE INFORMATION AND SERVICES MAY CONTAIN BUGS, ERRORS, PROBLEMS OR OTHER LIMITATIONS. WE HAVE NO LIABILITY WHATSOEVER FOR YOUR USE OF ANY INFORMATION OR SERVICE. IN PARTICULAR, BUT NOT AS A LIMITATION, WE ARE NOT LIABLE FOR ANY INDIRECT, INCIDENTAL OR CONSEQUENTIAL DAMAGES (INCLUDING DAMAGES FOR LOSS OF BUSINESS, LOSS OF PROFITS, LOSS OF MONEY, LITIGATION, OR THE LIKE), WHETHER BASED ON BREACH OF CONTRACT, BREACH OF WARRANTY, NEGLIGENCE, PRODUCT LIABILITY OR OTHERWISE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. THE NEGATION OF DAMAGES SET FORTH ABOVE ARE FUNDAMENTAL ELEMENTS OF THE BASIS OF THE BARGAIN BETWEEN US AND YOU THE USER. THIS SITE AND THE INFORMATION WOULD NOT BE PROVIDED WITHOUT SUCH LIMITATIONS. NO ADVICE OR INFORMATION, WHETHER ORAL OR WRITTEN, OBTAINED BY YOU FROM US THROUGH THE SITE SHALL CREATE ANY WARRANTY, REPRESENTATION OR GUARANTEE NOT EXPRESSLY STATED IN THIS AGREEMENT. THE INFORMATION AND ALL OTHER MATERIALS ON THE SITE ARE PROVIDED FOR GENERAL INFORMATION PURPOSES ONLY AND DO NOT CONSTITUTE PROFESSIONAL ADVICE. IT IS YOUR RESPONSIBILITY TO EVALUATE THE ACCURACY AND COMPLETENESS OF ALL INFORMATION AVAILABLE ON THIS SITE OR ANY WEBSITE WITH WHICH IT IS LINKED.
+ 6. Limits. All responsibility or liability for any damages caused by viruses contained within the electronic file containing the form or document is disclaimed. We will not be liable to you for any incidental, special or consequential damages of any kind that may result from use of or inability to use the site.
+ 7. Third-Party Website. All rules, terms and conditions, other policies (including privacy policies) and operating procedures of third-party linked websites will apply to you while on such websites. We are not responsible for the content, accuracy or opinions express in such Websites, and such Websites are not investigated, monitored or checked for accuracy or completeness by us. Inclusion of any linked Website on our Site does not imply approval or endorsement of the linked Website by us. This Site and the third-party linked websites are independent entities and neither party has authority to make any representations or commitments on behalf of the other. If you decide to leave our Site and access these third-party linked sites, you do so at your own risk.
+ 8. Third-Party Products and Services. We advertise third-party linked websites from which you may purchase or otherwise obtain certain sample goods, freebie offerings or free trial services. You understand that we do not operate or control the products, free offerings or services offered by third-party linked websites. Third-party linked websites are responsible for all aspects of order processing, fulfillment, billing and customer service. We are not a party to the transactions entered into between you and third-party linked websites. You agree that use of such third-party linked websites is at your sole risk and is without warranties of any kind by us, expressed, implied or otherwise. Under no circumstances are we liable for any damages arising from the transactions between you and third-party linked websites or for any information appearing on third-party linked websites or any other site linked to or from our site.
+ 9. Submissions. All suggestions, ideas, notes, concepts and other information you may send to us (collectively, "Submissions") shall be deemed and shall remain our sole property and shall not be subject to any obligation of confidence on our part. Without limiting the foregoing, we shall be deemed to own all known and hereafter existing rights of every kind and nature regarding the Submissions and shall be entitled to unrestricted use of the Submissions for any purpose, without compensation to the provider of the Submissions.
+ 10. General. You agree that all actions or proceedings arising directly or indirectly out of this agreement, or your use of the site or any sample products, freebie offers or services obtained by you through such use, shall be litigated in the circuit court of Los Angeles County, California or the United States District Court for the Central District of California. you are expressly submitting and consenting in advance to such jurisdiction in any action or proceeding in any of such courts, and are waiving any claim that Los Angeles, California or the central district of California is an inconvenient forum or an improper forum based on lack of venue. This site is controlled by Perfect Insight, Inc. in the State of California, USA. As such, the laws of California will govern the terms and conditions contained in this Agreement and elsewhere throughout the Site, without giving effect to any principles of conflicts of laws.
+
+ Last update: 21.06.2010
+
diff --git a/Modules/UserControl/avatar/0.png b/Modules/UserControl/avatar/0.png
new file mode 100755
index 0000000..fc42fda
Binary files /dev/null and b/Modules/UserControl/avatar/0.png differ
diff --git a/Modules/UserControl/avatar/1.png b/Modules/UserControl/avatar/1.png
new file mode 100755
index 0000000..4133a65
Binary files /dev/null and b/Modules/UserControl/avatar/1.png differ
diff --git a/Modules/UserControl/avatar/10.png b/Modules/UserControl/avatar/10.png
new file mode 100755
index 0000000..4f5deee
Binary files /dev/null and b/Modules/UserControl/avatar/10.png differ
diff --git a/Modules/UserControl/avatar/100.png b/Modules/UserControl/avatar/100.png
new file mode 100755
index 0000000..eaf72cf
Binary files /dev/null and b/Modules/UserControl/avatar/100.png differ
diff --git a/Modules/UserControl/avatar/101.png b/Modules/UserControl/avatar/101.png
new file mode 100755
index 0000000..9f0cb47
Binary files /dev/null and b/Modules/UserControl/avatar/101.png differ
diff --git a/Modules/UserControl/avatar/102.png b/Modules/UserControl/avatar/102.png
new file mode 100644
index 0000000..39403d8
Binary files /dev/null and b/Modules/UserControl/avatar/102.png differ
diff --git a/Modules/UserControl/avatar/11.png b/Modules/UserControl/avatar/11.png
new file mode 100755
index 0000000..2fdd6af
Binary files /dev/null and b/Modules/UserControl/avatar/11.png differ
diff --git a/Modules/UserControl/avatar/12.png b/Modules/UserControl/avatar/12.png
new file mode 100755
index 0000000..77efa74
Binary files /dev/null and b/Modules/UserControl/avatar/12.png differ
diff --git a/Modules/UserControl/avatar/13.png b/Modules/UserControl/avatar/13.png
new file mode 100755
index 0000000..908df22
Binary files /dev/null and b/Modules/UserControl/avatar/13.png differ
diff --git a/Modules/UserControl/avatar/14.png b/Modules/UserControl/avatar/14.png
new file mode 100755
index 0000000..328c482
Binary files /dev/null and b/Modules/UserControl/avatar/14.png differ
diff --git a/Modules/UserControl/avatar/15.png b/Modules/UserControl/avatar/15.png
new file mode 100755
index 0000000..2efd329
Binary files /dev/null and b/Modules/UserControl/avatar/15.png differ
diff --git a/Modules/UserControl/avatar/16.png b/Modules/UserControl/avatar/16.png
new file mode 100755
index 0000000..145d414
Binary files /dev/null and b/Modules/UserControl/avatar/16.png differ
diff --git a/Modules/UserControl/avatar/17.png b/Modules/UserControl/avatar/17.png
new file mode 100755
index 0000000..52f1aee
Binary files /dev/null and b/Modules/UserControl/avatar/17.png differ
diff --git a/Modules/UserControl/avatar/18.png b/Modules/UserControl/avatar/18.png
new file mode 100755
index 0000000..9e5fd65
Binary files /dev/null and b/Modules/UserControl/avatar/18.png differ
diff --git a/Modules/UserControl/avatar/19.png b/Modules/UserControl/avatar/19.png
new file mode 100755
index 0000000..50976a4
Binary files /dev/null and b/Modules/UserControl/avatar/19.png differ
diff --git a/Modules/UserControl/avatar/2.png b/Modules/UserControl/avatar/2.png
new file mode 100755
index 0000000..2188a14
Binary files /dev/null and b/Modules/UserControl/avatar/2.png differ
diff --git a/Modules/UserControl/avatar/20.png b/Modules/UserControl/avatar/20.png
new file mode 100755
index 0000000..6aab1f9
Binary files /dev/null and b/Modules/UserControl/avatar/20.png differ
diff --git a/Modules/UserControl/avatar/21.png b/Modules/UserControl/avatar/21.png
new file mode 100755
index 0000000..b55dc06
Binary files /dev/null and b/Modules/UserControl/avatar/21.png differ
diff --git a/Modules/UserControl/avatar/22.png b/Modules/UserControl/avatar/22.png
new file mode 100755
index 0000000..2cf1cab
Binary files /dev/null and b/Modules/UserControl/avatar/22.png differ
diff --git a/Modules/UserControl/avatar/23.png b/Modules/UserControl/avatar/23.png
new file mode 100755
index 0000000..7998f26
Binary files /dev/null and b/Modules/UserControl/avatar/23.png differ
diff --git a/Modules/UserControl/avatar/24.png b/Modules/UserControl/avatar/24.png
new file mode 100755
index 0000000..15b9e43
Binary files /dev/null and b/Modules/UserControl/avatar/24.png differ
diff --git a/Modules/UserControl/avatar/25.png b/Modules/UserControl/avatar/25.png
new file mode 100755
index 0000000..a5e788a
Binary files /dev/null and b/Modules/UserControl/avatar/25.png differ
diff --git a/Modules/UserControl/avatar/26.png b/Modules/UserControl/avatar/26.png
new file mode 100755
index 0000000..cc6c02a
Binary files /dev/null and b/Modules/UserControl/avatar/26.png differ
diff --git a/Modules/UserControl/avatar/27.png b/Modules/UserControl/avatar/27.png
new file mode 100755
index 0000000..d62c199
Binary files /dev/null and b/Modules/UserControl/avatar/27.png differ
diff --git a/Modules/UserControl/avatar/28.png b/Modules/UserControl/avatar/28.png
new file mode 100755
index 0000000..06ea5d8
Binary files /dev/null and b/Modules/UserControl/avatar/28.png differ
diff --git a/Modules/UserControl/avatar/29.png b/Modules/UserControl/avatar/29.png
new file mode 100755
index 0000000..6ac3406
Binary files /dev/null and b/Modules/UserControl/avatar/29.png differ
diff --git a/Modules/UserControl/avatar/3.png b/Modules/UserControl/avatar/3.png
new file mode 100755
index 0000000..9632282
Binary files /dev/null and b/Modules/UserControl/avatar/3.png differ
diff --git a/Modules/UserControl/avatar/30.png b/Modules/UserControl/avatar/30.png
new file mode 100755
index 0000000..7776566
Binary files /dev/null and b/Modules/UserControl/avatar/30.png differ
diff --git a/Modules/UserControl/avatar/31.png b/Modules/UserControl/avatar/31.png
new file mode 100755
index 0000000..ec2beb9
Binary files /dev/null and b/Modules/UserControl/avatar/31.png differ
diff --git a/Modules/UserControl/avatar/32.png b/Modules/UserControl/avatar/32.png
new file mode 100755
index 0000000..5178f30
Binary files /dev/null and b/Modules/UserControl/avatar/32.png differ
diff --git a/Modules/UserControl/avatar/33.png b/Modules/UserControl/avatar/33.png
new file mode 100755
index 0000000..e867158
Binary files /dev/null and b/Modules/UserControl/avatar/33.png differ
diff --git a/Modules/UserControl/avatar/34.png b/Modules/UserControl/avatar/34.png
new file mode 100755
index 0000000..5297142
Binary files /dev/null and b/Modules/UserControl/avatar/34.png differ
diff --git a/Modules/UserControl/avatar/35.png b/Modules/UserControl/avatar/35.png
new file mode 100755
index 0000000..8eddaea
Binary files /dev/null and b/Modules/UserControl/avatar/35.png differ
diff --git a/Modules/UserControl/avatar/36.png b/Modules/UserControl/avatar/36.png
new file mode 100755
index 0000000..f8efe75
Binary files /dev/null and b/Modules/UserControl/avatar/36.png differ
diff --git a/Modules/UserControl/avatar/37.png b/Modules/UserControl/avatar/37.png
new file mode 100755
index 0000000..ee9f822
Binary files /dev/null and b/Modules/UserControl/avatar/37.png differ
diff --git a/Modules/UserControl/avatar/38.png b/Modules/UserControl/avatar/38.png
new file mode 100755
index 0000000..e96ce26
Binary files /dev/null and b/Modules/UserControl/avatar/38.png differ
diff --git a/Modules/UserControl/avatar/39.png b/Modules/UserControl/avatar/39.png
new file mode 100755
index 0000000..9c51d27
Binary files /dev/null and b/Modules/UserControl/avatar/39.png differ
diff --git a/Modules/UserControl/avatar/4.png b/Modules/UserControl/avatar/4.png
new file mode 100755
index 0000000..22d443a
Binary files /dev/null and b/Modules/UserControl/avatar/4.png differ
diff --git a/Modules/UserControl/avatar/40.png b/Modules/UserControl/avatar/40.png
new file mode 100755
index 0000000..c8eea7b
Binary files /dev/null and b/Modules/UserControl/avatar/40.png differ
diff --git a/Modules/UserControl/avatar/41.png b/Modules/UserControl/avatar/41.png
new file mode 100755
index 0000000..4dfbe0e
Binary files /dev/null and b/Modules/UserControl/avatar/41.png differ
diff --git a/Modules/UserControl/avatar/42.png b/Modules/UserControl/avatar/42.png
new file mode 100755
index 0000000..8079609
Binary files /dev/null and b/Modules/UserControl/avatar/42.png differ
diff --git a/Modules/UserControl/avatar/43.png b/Modules/UserControl/avatar/43.png
new file mode 100755
index 0000000..f169393
Binary files /dev/null and b/Modules/UserControl/avatar/43.png differ
diff --git a/Modules/UserControl/avatar/44.png b/Modules/UserControl/avatar/44.png
new file mode 100755
index 0000000..a634ab1
Binary files /dev/null and b/Modules/UserControl/avatar/44.png differ
diff --git a/Modules/UserControl/avatar/45.png b/Modules/UserControl/avatar/45.png
new file mode 100755
index 0000000..d224134
Binary files /dev/null and b/Modules/UserControl/avatar/45.png differ
diff --git a/Modules/UserControl/avatar/46.png b/Modules/UserControl/avatar/46.png
new file mode 100755
index 0000000..caf7342
Binary files /dev/null and b/Modules/UserControl/avatar/46.png differ
diff --git a/Modules/UserControl/avatar/47.png b/Modules/UserControl/avatar/47.png
new file mode 100755
index 0000000..36963a3
Binary files /dev/null and b/Modules/UserControl/avatar/47.png differ
diff --git a/Modules/UserControl/avatar/48.png b/Modules/UserControl/avatar/48.png
new file mode 100755
index 0000000..608d0da
Binary files /dev/null and b/Modules/UserControl/avatar/48.png differ
diff --git a/Modules/UserControl/avatar/49.png b/Modules/UserControl/avatar/49.png
new file mode 100755
index 0000000..9732452
Binary files /dev/null and b/Modules/UserControl/avatar/49.png differ
diff --git a/Modules/UserControl/avatar/5.png b/Modules/UserControl/avatar/5.png
new file mode 100755
index 0000000..56135e0
Binary files /dev/null and b/Modules/UserControl/avatar/5.png differ
diff --git a/Modules/UserControl/avatar/50.png b/Modules/UserControl/avatar/50.png
new file mode 100755
index 0000000..1881fa0
Binary files /dev/null and b/Modules/UserControl/avatar/50.png differ
diff --git a/Modules/UserControl/avatar/51.png b/Modules/UserControl/avatar/51.png
new file mode 100755
index 0000000..4824dd7
Binary files /dev/null and b/Modules/UserControl/avatar/51.png differ
diff --git a/Modules/UserControl/avatar/52.png b/Modules/UserControl/avatar/52.png
new file mode 100755
index 0000000..0adaaba
Binary files /dev/null and b/Modules/UserControl/avatar/52.png differ
diff --git a/Modules/UserControl/avatar/53.png b/Modules/UserControl/avatar/53.png
new file mode 100755
index 0000000..19e2b0c
Binary files /dev/null and b/Modules/UserControl/avatar/53.png differ
diff --git a/Modules/UserControl/avatar/54.png b/Modules/UserControl/avatar/54.png
new file mode 100755
index 0000000..e86d1f6
Binary files /dev/null and b/Modules/UserControl/avatar/54.png differ
diff --git a/Modules/UserControl/avatar/55.png b/Modules/UserControl/avatar/55.png
new file mode 100755
index 0000000..eea0f5c
Binary files /dev/null and b/Modules/UserControl/avatar/55.png differ
diff --git a/Modules/UserControl/avatar/56.png b/Modules/UserControl/avatar/56.png
new file mode 100755
index 0000000..0e81c8e
Binary files /dev/null and b/Modules/UserControl/avatar/56.png differ
diff --git a/Modules/UserControl/avatar/57.png b/Modules/UserControl/avatar/57.png
new file mode 100755
index 0000000..f374503
Binary files /dev/null and b/Modules/UserControl/avatar/57.png differ
diff --git a/Modules/UserControl/avatar/58.png b/Modules/UserControl/avatar/58.png
new file mode 100755
index 0000000..1093a6a
Binary files /dev/null and b/Modules/UserControl/avatar/58.png differ
diff --git a/Modules/UserControl/avatar/59.png b/Modules/UserControl/avatar/59.png
new file mode 100755
index 0000000..b3a09d2
Binary files /dev/null and b/Modules/UserControl/avatar/59.png differ
diff --git a/Modules/UserControl/avatar/6.png b/Modules/UserControl/avatar/6.png
new file mode 100755
index 0000000..1c25806
Binary files /dev/null and b/Modules/UserControl/avatar/6.png differ
diff --git a/Modules/UserControl/avatar/60.png b/Modules/UserControl/avatar/60.png
new file mode 100755
index 0000000..3d88424
Binary files /dev/null and b/Modules/UserControl/avatar/60.png differ
diff --git a/Modules/UserControl/avatar/61.png b/Modules/UserControl/avatar/61.png
new file mode 100755
index 0000000..647360a
Binary files /dev/null and b/Modules/UserControl/avatar/61.png differ
diff --git a/Modules/UserControl/avatar/62.png b/Modules/UserControl/avatar/62.png
new file mode 100755
index 0000000..f25b492
Binary files /dev/null and b/Modules/UserControl/avatar/62.png differ
diff --git a/Modules/UserControl/avatar/63.png b/Modules/UserControl/avatar/63.png
new file mode 100755
index 0000000..92ba811
Binary files /dev/null and b/Modules/UserControl/avatar/63.png differ
diff --git a/Modules/UserControl/avatar/64.png b/Modules/UserControl/avatar/64.png
new file mode 100755
index 0000000..bf30ddc
Binary files /dev/null and b/Modules/UserControl/avatar/64.png differ
diff --git a/Modules/UserControl/avatar/65.png b/Modules/UserControl/avatar/65.png
new file mode 100755
index 0000000..ca84a23
Binary files /dev/null and b/Modules/UserControl/avatar/65.png differ
diff --git a/Modules/UserControl/avatar/66.png b/Modules/UserControl/avatar/66.png
new file mode 100755
index 0000000..62bf62e
Binary files /dev/null and b/Modules/UserControl/avatar/66.png differ
diff --git a/Modules/UserControl/avatar/67.png b/Modules/UserControl/avatar/67.png
new file mode 100755
index 0000000..348ff78
Binary files /dev/null and b/Modules/UserControl/avatar/67.png differ
diff --git a/Modules/UserControl/avatar/68.png b/Modules/UserControl/avatar/68.png
new file mode 100755
index 0000000..c5b503a
Binary files /dev/null and b/Modules/UserControl/avatar/68.png differ
diff --git a/Modules/UserControl/avatar/69.png b/Modules/UserControl/avatar/69.png
new file mode 100755
index 0000000..2667eb1
Binary files /dev/null and b/Modules/UserControl/avatar/69.png differ
diff --git a/Modules/UserControl/avatar/7.png b/Modules/UserControl/avatar/7.png
new file mode 100755
index 0000000..a89a9b4
Binary files /dev/null and b/Modules/UserControl/avatar/7.png differ
diff --git a/Modules/UserControl/avatar/70.png b/Modules/UserControl/avatar/70.png
new file mode 100755
index 0000000..ad666fa
Binary files /dev/null and b/Modules/UserControl/avatar/70.png differ
diff --git a/Modules/UserControl/avatar/71.png b/Modules/UserControl/avatar/71.png
new file mode 100755
index 0000000..d56824d
Binary files /dev/null and b/Modules/UserControl/avatar/71.png differ
diff --git a/Modules/UserControl/avatar/72.png b/Modules/UserControl/avatar/72.png
new file mode 100755
index 0000000..6d682bf
Binary files /dev/null and b/Modules/UserControl/avatar/72.png differ
diff --git a/Modules/UserControl/avatar/73.png b/Modules/UserControl/avatar/73.png
new file mode 100755
index 0000000..bb9cec3
Binary files /dev/null and b/Modules/UserControl/avatar/73.png differ
diff --git a/Modules/UserControl/avatar/74.png b/Modules/UserControl/avatar/74.png
new file mode 100755
index 0000000..39ddbdc
Binary files /dev/null and b/Modules/UserControl/avatar/74.png differ
diff --git a/Modules/UserControl/avatar/75.png b/Modules/UserControl/avatar/75.png
new file mode 100755
index 0000000..71ba052
Binary files /dev/null and b/Modules/UserControl/avatar/75.png differ
diff --git a/Modules/UserControl/avatar/76.png b/Modules/UserControl/avatar/76.png
new file mode 100755
index 0000000..7dda130
Binary files /dev/null and b/Modules/UserControl/avatar/76.png differ
diff --git a/Modules/UserControl/avatar/77.png b/Modules/UserControl/avatar/77.png
new file mode 100755
index 0000000..3425184
Binary files /dev/null and b/Modules/UserControl/avatar/77.png differ
diff --git a/Modules/UserControl/avatar/78.png b/Modules/UserControl/avatar/78.png
new file mode 100755
index 0000000..a94ad77
Binary files /dev/null and b/Modules/UserControl/avatar/78.png differ
diff --git a/Modules/UserControl/avatar/79.png b/Modules/UserControl/avatar/79.png
new file mode 100755
index 0000000..c5fd4cf
Binary files /dev/null and b/Modules/UserControl/avatar/79.png differ
diff --git a/Modules/UserControl/avatar/8.png b/Modules/UserControl/avatar/8.png
new file mode 100755
index 0000000..dea998b
Binary files /dev/null and b/Modules/UserControl/avatar/8.png differ
diff --git a/Modules/UserControl/avatar/80.png b/Modules/UserControl/avatar/80.png
new file mode 100755
index 0000000..ab94fcb
Binary files /dev/null and b/Modules/UserControl/avatar/80.png differ
diff --git a/Modules/UserControl/avatar/81.png b/Modules/UserControl/avatar/81.png
new file mode 100755
index 0000000..7ab3804
Binary files /dev/null and b/Modules/UserControl/avatar/81.png differ
diff --git a/Modules/UserControl/avatar/82.png b/Modules/UserControl/avatar/82.png
new file mode 100755
index 0000000..d7eaadf
Binary files /dev/null and b/Modules/UserControl/avatar/82.png differ
diff --git a/Modules/UserControl/avatar/83.png b/Modules/UserControl/avatar/83.png
new file mode 100755
index 0000000..69f3013
Binary files /dev/null and b/Modules/UserControl/avatar/83.png differ
diff --git a/Modules/UserControl/avatar/84.png b/Modules/UserControl/avatar/84.png
new file mode 100755
index 0000000..fa067a7
Binary files /dev/null and b/Modules/UserControl/avatar/84.png differ
diff --git a/Modules/UserControl/avatar/85.png b/Modules/UserControl/avatar/85.png
new file mode 100755
index 0000000..2f49dd7
Binary files /dev/null and b/Modules/UserControl/avatar/85.png differ
diff --git a/Modules/UserControl/avatar/86.png b/Modules/UserControl/avatar/86.png
new file mode 100755
index 0000000..b743ccf
Binary files /dev/null and b/Modules/UserControl/avatar/86.png differ
diff --git a/Modules/UserControl/avatar/87.png b/Modules/UserControl/avatar/87.png
new file mode 100755
index 0000000..b518f21
Binary files /dev/null and b/Modules/UserControl/avatar/87.png differ
diff --git a/Modules/UserControl/avatar/88.png b/Modules/UserControl/avatar/88.png
new file mode 100755
index 0000000..87a7017
Binary files /dev/null and b/Modules/UserControl/avatar/88.png differ
diff --git a/Modules/UserControl/avatar/89.png b/Modules/UserControl/avatar/89.png
new file mode 100755
index 0000000..a27da68
Binary files /dev/null and b/Modules/UserControl/avatar/89.png differ
diff --git a/Modules/UserControl/avatar/9.png b/Modules/UserControl/avatar/9.png
new file mode 100755
index 0000000..964bb42
Binary files /dev/null and b/Modules/UserControl/avatar/9.png differ
diff --git a/Modules/UserControl/avatar/90.png b/Modules/UserControl/avatar/90.png
new file mode 100755
index 0000000..b17a24d
Binary files /dev/null and b/Modules/UserControl/avatar/90.png differ
diff --git a/Modules/UserControl/avatar/91.png b/Modules/UserControl/avatar/91.png
new file mode 100755
index 0000000..2a1c619
Binary files /dev/null and b/Modules/UserControl/avatar/91.png differ
diff --git a/Modules/UserControl/avatar/92.png b/Modules/UserControl/avatar/92.png
new file mode 100755
index 0000000..10b9041
Binary files /dev/null and b/Modules/UserControl/avatar/92.png differ
diff --git a/Modules/UserControl/avatar/93.png b/Modules/UserControl/avatar/93.png
new file mode 100755
index 0000000..2f58451
Binary files /dev/null and b/Modules/UserControl/avatar/93.png differ
diff --git a/Modules/UserControl/avatar/94.png b/Modules/UserControl/avatar/94.png
new file mode 100755
index 0000000..45af18e
Binary files /dev/null and b/Modules/UserControl/avatar/94.png differ
diff --git a/Modules/UserControl/avatar/95.png b/Modules/UserControl/avatar/95.png
new file mode 100755
index 0000000..fc61c93
Binary files /dev/null and b/Modules/UserControl/avatar/95.png differ
diff --git a/Modules/UserControl/avatar/96.png b/Modules/UserControl/avatar/96.png
new file mode 100755
index 0000000..69ff15f
Binary files /dev/null and b/Modules/UserControl/avatar/96.png differ
diff --git a/Modules/UserControl/avatar/97.png b/Modules/UserControl/avatar/97.png
new file mode 100755
index 0000000..c8c9520
Binary files /dev/null and b/Modules/UserControl/avatar/97.png differ
diff --git a/Modules/UserControl/avatar/98.png b/Modules/UserControl/avatar/98.png
new file mode 100755
index 0000000..23ab98b
Binary files /dev/null and b/Modules/UserControl/avatar/98.png differ
diff --git a/Modules/UserControl/avatar/99.png b/Modules/UserControl/avatar/99.png
new file mode 100755
index 0000000..c18dbc8
Binary files /dev/null and b/Modules/UserControl/avatar/99.png differ
diff --git a/Modules/UserControl/change.php b/Modules/UserControl/change.php
new file mode 100755
index 0000000..f704298
--- /dev/null
+++ b/Modules/UserControl/change.php
@@ -0,0 +1,171 @@
+Welcome ".$_SESSION["user_vorname"]." ".$_SESSION["user_nachname"]."!
+
+ Current User Information:
+
+
+
+ BenutzerId: ".$_SESSION["user_id"]."
+ VPNId: ".$_SESSION["user_vpnid"]."
+ Admin: ".$_SESSION["user_admin"]."
+ Nickname: ".$_SESSION["user_nickname"]."
+ Nachname: ".$_SESSION["user_nachname"]."
+ Vorname: ".$_SESSION["user_vorname"]."
+ Email: ".$_SESSION["user_email"]."
+ Novell Login: ".$_SESSION["user_novlogin"]."
+ Avatar: ".$_SESSION["user_avatar"]."
+
+
+
+
+
+
+ New User Information:
+
+
+
+
+
+";
diff --git a/Modules/UserControl/config.inc b/Modules/UserControl/config.inc
new file mode 100755
index 0000000..d6417cc
--- /dev/null
+++ b/Modules/UserControl/config.inc
@@ -0,0 +1,66 @@
+
diff --git a/Modules/UserControl/deadproxy.php b/Modules/UserControl/deadproxy.php
new file mode 100755
index 0000000..9dc2722
--- /dev/null
+++ b/Modules/UserControl/deadproxy.php
@@ -0,0 +1,49 @@
+ 0)
+{
+// $myFile = db_getconfval("sqddir")."/vpnid_next";
+ $myFile = db_getconfval("sqddir")."/vpnid_auto";
+ $fh = fopen($myFile, 'w') or die("can't open file");
+ fwrite($fh, "NEXT");
+ fclose($fh);
+ mysql_close();
+ header ("Location: ".$moduleurl."&uebergabe=0&uebergabe2=1");
+}
+else
+{
+ mysql_close();
+ echo "Fehler beim Reparieren des Proxys. \n";
+}
+?>
diff --git a/Modules/UserControl/edituser.php b/Modules/UserControl/edituser.php
new file mode 100755
index 0000000..1033adf
--- /dev/null
+++ b/Modules/UserControl/edituser.php
@@ -0,0 +1,126 @@
+ 0)
+{
+ // Benutzerdaten in ein Array auslesen.
+ $data = mysql_fetch_array ($result);
+
+ // Sessionvariablen erstellen und registrieren
+ $_SESSION["user_id"] = $data["Id"];
+ $_SESSION["user_vpnid"] = $data["VPNId"];
+ $_SESSION["user_admin"] = $data["IsAdmin"];
+ $_SESSION["user_nickname"] = $data["Nickname"];
+ $_SESSION["user_nachname"] = $data["Nachname"];
+ $_SESSION["user_vorname"] = $data["Vorname"];
+ $_SESSION["user_email"] = $data["Email"];
+ $_SESSION["user_avatar"] = $data["Avatar"];
+ $_SESSION["user_novlogin"] = $data["NovLogin"];
+ $_SESSION["user_novpass"] = $data["NovPass"];
+ mysql_close();
+ header ("Location: ".$moduleurl."&uebergabe=0");
+}
+else
+{
+ mysql_close();
+ echo "Fehler beim Anlegen der Benutzer. \n";
+}
+?>
diff --git a/Modules/UserControl/getcert.php b/Modules/UserControl/getcert.php
new file mode 100755
index 0000000..ab0e330
--- /dev/null
+++ b/Modules/UserControl/getcert.php
@@ -0,0 +1,83 @@
+addFile (implode ('', file ($File2zip)), $File2name);
+ }
+ }
+
+ // Add the extra files
+ foreach ($config['Download']['ZIP']['Others'] as $File2zip)
+ {
+ if (is_file (db_getconfval("publicdown")."/". $File2zip))
+ $zipData->addFile (implode ('', file (db_getconfval("publicdown")."/". $File2zip)), $File2zip);
+ }
+
+ // Flush the ZIP file to the client
+ html_download_data ($zipData -> file (), openssl_hex_serial ($GETidDEC) .'.zip');
+ //echo " file () target=_blank>Direktlink zur Datei
+}
+else
+{
+// echo "ID: " .$GETidDEC[0] . "Ext: " .$sExt;
+ if (($sCertificateFile = openssl_get_filename ($GETidDEC, $sExt)) == '') html_error ("Can't find requested file..FU");
+
+ // Cheat the extension
+ if ($sExt == '.pem') $sExt = '.crt';
+
+ // Download
+ html_download ($sCertificateFile, openssl_hex_serial ($GETidDEC) . $sExt);
+ //html_dump ('$GLOBALS', $GLOBALS);
+}
+
+?>
diff --git a/Modules/UserControl/include/functions.inc b/Modules/UserControl/include/functions.inc
new file mode 100755
index 0000000..705ab08
--- /dev/null
+++ b/Modules/UserControl/include/functions.inc
@@ -0,0 +1,296 @@
+You need the valid User Name to access the '. $config['AUTH_REALM'] .' !';
+ exit;
+}
+
+// ----------------------------------------------
+function session_defaults ()
+{
+ $_SESSION['logged'] = FALSE;
+ $_SESSION['username'] = '';
+ $_SESSION['password'] = '';
+ $_SESSION['cookie'] = 0;
+ $_SESSION['remember'] = FALSE;
+}
+
+// ----------------------------------------------
+function load_plugins ()
+{
+ global $config;
+
+ if (isset ($config['Plugins']))
+ {
+ foreach ($config['Plugins'] as $PluginName => $PluginData)
+ {
+ // Check if the config.inc for a plugin exists
+ if (file_exists ('plugins/'. $PluginData['Folder'] .'/config.inc'))
+ {
+ include ('plugins/'. $PluginData['Folder'] .'/config.inc');
+
+ // Check if claimed inc files do exist
+ if (isset ($config['Plugins'][$PluginName]['Action']['Include']) &&
+ !file_exists ('plugins/'. $PluginData['Folder'] .'/'.
+ $config['Plugins'][$PluginName]['Action']['Include']))
+ $config['Plugins'][$PluginName]['Action']['Include'] = NULL;
+
+ if (isset ($config['Plugins'][$PluginName]['Left']['Menu']) &&
+ !file_exists ('plugins/'. $PluginData['Folder'] .'/'.
+ $config['Plugins'][$PluginName]['Left']['Menu']))
+ $config['Plugins'][$PluginName]['Left']['Menu'] = NULL;
+
+ if (isset ($config['Plugins'][$PluginName]['Left']['Status']) &&
+ !file_exists ('plugins/'. $PluginData['Folder'] .'/'.
+ $config['Plugins'][$PluginName]['Left']['Status']))
+ $config['Plugins'][$PluginName]['Left']['Status'] = NULL;
+ }
+ }
+ }
+}
+
+// ----------------------------------------------
+function seconds_string ($seconds, $periods = null)
+{
+ $Wanted = '';
+
+ // Define time periods
+ if (!is_array ($periods))
+ {
+ $periods = array (
+ 'years' => 31556926,
+ 'months' => 2629743,
+ 'weeks' => 604800,
+ 'days' => 86400,
+ 'hours' => 3600,
+ 'minutes' => 60,
+ 'seconds' => 1
+ );
+ }
+
+ // Wanted
+ if (empty ($seconds))
+ { $Wanted = ''; }
+ else
+ {
+ // Loop
+ $seconds = (int) $seconds;
+ foreach ($periods as $period => $value)
+ {
+ $count = floor ($seconds / $value);
+
+ if ($count == 0)
+ continue;
+ elseif ($count == 1)
+ $Wanted .= ($count . ' ' . substr ($period, 0, strlen ($period) - 1) . ' ');
+ else
+ $Wanted .= ($count . ' ' . $period . ' ');
+
+ $seconds = $seconds % $value;
+ }
+ }
+
+ return rtrim ($Wanted);
+}
+
+// ----------------------------------------------
+function chomp (&$string)
+{
+ if (is_array ($string))
+ {
+ foreach ($string as $i => $val)
+ { $endchar = chomp ($string[$i]); }
+ }
+ else
+ {
+ $endchar = substr ("$string", strlen("$string") - 1, 1);
+ if ($endchar == "\n")
+ { $string = substr ("$string", 0, -1); }
+ }
+ return $endchar;
+}
+
+// ----------------------------------------------
+function str_strip_spaces ($aline)
+{
+ while (strpos ($aline, "\t") != FALSE) $aline = str_replace ("\t", ' ', $aline);
+ while (strpos ($aline, ' ') != FALSE) $aline = str_replace (' ', ' ', $aline);
+
+ return $aline;
+}
+
+// ----------------------------------------------
+// Returns $afile only if it is the full name, or prefixed by $apath
+function str_file_fullname ($apath, $afile)
+{
+ if (substr ($afile, 0, 1) != '/')
+ $afile = ($apath . $afile);
+
+ return $afile;
+}
+
+// ----------------------------------------------
+// Returns $afile only if it is the full name, or prefixed by $apath
+function str_openssldata_to_string ($adata)
+{
+ $Return = '';
+ $amonth = array ('Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec');
+
+ if (substr ($adata, -1, 1) == 'Z')
+ {
+ $Return = sprintf ("%s %d %s%02d, %02d:%02d:%02d",
+ $amonth [substr ($adata, 2, 2) - 1],
+ substr ($adata, 4, 2),
+ (substr ($adata, 0, 2) > 50 ? '19' : '20'),
+ substr ($adata, 0, 2),
+ substr ($adata, 6, 2),
+ substr ($adata, 8, 2),
+ substr ($adata, 10, 2));
+ }
+
+ return $Return;
+}
+
+// ----------------------------------------------
+function str_get_sometag ($aline, $sometag)
+{
+ if (eregi ($sometag, $aline, $anarray))
+ return $anarray[1];
+ else
+ return '';
+}
+
+// ----------------------------------------------
+// Writes content into file
+// Optionally sames old file into backup file.
+// The Backup File has to reside on the same partition!
+function writefile ($afile, $adata, $abackup = NULL)
+{
+ // Move the old file into Backup one
+ if ($abackup != NULL)
+ {
+ if (file_exists ($afile))
+ {
+ if (file_exists ($abackup))
+ if (!unlink ($abackup))
+ exit;
+ if (!rename ($afile, $abackup))
+ exit;
+ }
+ }
+
+ $fp = fopen ($afile, "w", 0);
+ if (!$fp)
+ exit;
+
+ fputs ($fp, $adata);
+ fclose ($fp);
+}
+
+
+// ----------------------------------------------
+// Guess the full file name
+function if_file_exists (&$sFileName, $bFix = FALSE)
+{
+ global $config;
+
+ if (strpos ($sFileName, '/') == FALSE)
+ {
+ $sLongFileName = $config['openvpn']['folder'] . $sFileName;
+ if (file_exists ($sLongFileName) && $bFix)
+ $sFileName = $sLongFileName;
+ }
+
+ return file_exists ($sFileName);
+}
+
+// ----------------------------------------------
+function zlib_check_functions ()
+{
+ $Result = '';
+ $ZLibs = array
+ (
+ 'gzcompress'
+ );
+
+ foreach ($ZLibs as $Function)
+ {
+ $Result .= $Function . ': ' . (function_exists ($Function) ?
+ 'OK ' :
+ 'DOES NOT EXIST ') . ' ';
+ }
+
+ return $Result;
+}
+
+// ----------------------------------------------
+function html_dump ($aname, $athing)
+{
+ echo ''. $aname .' : ';
+ print_r ($athing);
+ echo " \n";
+}
+
+// ----------------------------------------------
+function html_error ($amessage, $ifexit = true)
+{
+ global $config;
+
+ require('Smarty.class.php');
+ $smarty = new Smarty;
+ $smarty->assign ('Company_Name', $config['Company_Name']);
+ $smarty->assign ('title', 'OpenVPN Web GUI : error');
+ $smarty->assign ('action', 'ERROR');
+ $smarty->assign ('message', $amessage);
+ $smarty->display ('action-error.tpl');
+
+ if ($ifexit)
+ exit;
+}
+
+// ----------------------------------------------
+function html_postredir ($url)
+{
+ header ('HTTP/1.1 303 REDIRECT');
+ header ('Location: '. $url);
+#header ('Status: 303'); // if 1st header generates 500, then commend it out and use this one as 2nd
+}
+
+// ----------------------------------------------
+// ----------------------------------------------
+function html_download ($sFile, $sName)
+{
+ header ('Content-type: application/octet-stream');
+ header ('Content-Disposition: attachment; filename="'. $sName . '"');
+ readfile ($sFile);
+}
+
+// ----------------------------------------------
+function html_download_data ($sData, $sName)
+{
+ header ('Content-type: application/octet-stream');
+ header ('Content-Disposition: attachment; filename="'. $sName . '"');
+ echo $sData;
+}
+?>
diff --git a/Modules/UserControl/include/openssl-functions.inc b/Modules/UserControl/include/openssl-functions.inc
new file mode 100755
index 0000000..0731ec8
--- /dev/null
+++ b/Modules/UserControl/include/openssl-functions.inc
@@ -0,0 +1,380 @@
+: ' . (function_exists ($Function) ?
+ 'OK ' :
+ 'DOES NOT EXIST ') . ' ';
+ }
+
+ return $Result;
+}
+
+// ----------------------------------------------
+function openssl_load_database ($afile = '')
+{
+ global $config;
+ global $openssl;
+
+ $afile = ($afile == '' ? $config['openssl']['database'] : $afile);
+ $lines = file ($afile);
+
+ if (!is_array ($lines))
+ exit;
+
+ foreach ($lines as $line_num => $line)
+ {
+ chomp ($line);
+ $linetokens = explode ("\t", $line);
+
+ // Ensure that all the fields are set
+ if (count ($linetokens) == 6)
+ {
+ // Decode the openssl's database. See apps/apps.h
+ $openssl['Database'][] = array ('Status' => $linetokens[0],
+ 'ExpDate' => $linetokens[1],
+ 'RevDate' => $linetokens[2],
+ 'Serial' => $linetokens[3],
+ 'File' => $linetokens[4],
+ 'Name' => $linetokens[5],
+ 'Country' => openssl_get_country ($linetokens[5]),
+ 'State' => openssl_get_state ($linetokens[5]),
+ 'City' => openssl_get_city ($linetokens[5]),
+ 'Company' => openssl_get_company ($linetokens[5]),
+ 'Department' => openssl_get_department ($linetokens[5]),
+ 'CN' => openssl_get_CN ($linetokens[5]),
+ 'Email' => openssl_get_email ($linetokens[5])
+ );
+ }
+ }
+}
+
+// ----------------------------------------------
+function openssl_write_database ($afile = '')
+{
+ global $config;
+ global $openssl;
+
+ $afile = ($afile == '' ? $config['openssl']['database'] : $afile);
+
+ $atext = '';
+ for ($i = 0; $i < count ($openssl['Database']); $i++)
+ {
+ $atext .= ($atext == '' ? '' : "\n");
+ $atext .= $openssl['Database'][$i]['Status'] ."\t".
+ $openssl['Database'][$i]['ExpDate'] ."\t".
+ $openssl['Database'][$i]['RevDate'] ."\t".
+ $openssl['Database'][$i]['Serial'] ."\t".
+ $openssl['Database'][$i]['File'] ."\t".
+ $openssl['Database'][$i]['Name'];
+ }
+
+ writefile ($afile, $atext, $afile .'.old');
+}
+
+// ----------------------------------------------
+function openssl_write_database_attr ($atext = '', $afile = '')
+{
+ global $config;
+ global $openssl;
+
+ $afile = ($afile == '' ? $config['openssl']['database'] : $afile) .'.attr';
+ $atext = ($atext == '' ? "unique_subject = yes\n" : $atext);
+
+ if (file_exists ($afile))
+ {
+ ob_start ();
+ readfile ($afile);
+ $atext = ob_get_contents ();
+ ob_end_clean ();
+ }
+
+ writefile ($afile, $atext, $afile .'.old');
+}
+
+// ----------------------------------------------
+// Returns the PEM file with spaces reduced and replaced to
+function openssl_load_cert ($anid)
+{
+ global $config;
+
+ do
+ {
+ $lines = file ($config['openssl']['pubfolder'] . $anid . '.pem');
+
+ if (!is_array ($lines))
+ {
+ $Return = '';
+ break;
+ }
+
+ foreach ($lines as $line_num => $line)
+ {
+ chomp ($line);
+ $Return[] = str_replace (' ', ' ', htmlspecialchars (str_replace (' ', ' ', $line)));
+ }
+ } while (FALSE);
+
+ return $Return;
+}
+
+// ----------------------------------------------
+function openssl_load_serial ($afile = '')
+{
+ global $config;
+
+ $afile = ($afile == '' ? $config['openssl']['serial'] : $afile);
+
+ $lines = file ($afile);
+
+ if (!is_array ($lines))
+ exit;
+
+ $Return = sscanf ($lines[0], "%X");
+
+ return $Return[0];
+}
+
+// ----------------------------------------------
+function openssl_write_serial ($iNumber, $afile = '')
+{
+ global $config;
+
+ $afile = ($afile == '' ? $config['openssl']['serial'] : $afile);
+
+ writefile ($afile, openssl_hex_serial ($iNumber) . "\n", $afile .'.old');
+}
+
+// ----------------------------------------------
+// Supports up to 999,999 serials
+function openssl_hex_serial ($iNumber)
+{
+ if ($iNumber < 100)
+ $sString = sprintf ("%02X", $iNumber);
+ elseif ($iNumber < 10000)
+ $sString = sprintf ("%04X", $iNumber);
+ else
+ $sString = sprintf ("%06X", $iNumber);
+
+ return $sString;
+}
+
+// ----------------------------------------------
+// Builds User Private Key, CSR and Public Certificate
+function openssl_build_key (&$anoutput, $adn, $validdays = NULL)
+{
+ global $config;
+ global $openssl;
+
+ $anoutput = '';
+ $Return = FALSE;
+
+ // Allow to override default value
+ $validdays = ($validdays == NULL ? $config['openssl']['default']['expiration'] : $validdays);
+
+ do
+ {
+ if (!isset ($adn) ||
+ !isset ($adn['countryName']) ||
+ !isset ($adn['stateOrProvinceName']) ||
+ !isset ($adn['localityName']) ||
+ !isset ($adn['organizationName']) ||
+ !isset ($adn['organizationalUnitName']) ||
+ !isset ($adn['commonName']) ||
+ !isset ($adn['emailAddress'])
+ )
+ { $anoutput .= "- ERROR on ". __LINE__ ." line: incomplete DN information\n"; break; }
+ $anoutput .= "+ OK got the valid input\n";
+
+ // Get the new User Private Key
+ $UserPrivKey = openssl_pkey_new (array($config['openssl']['config'],0));
+ if ($UserPrivKey == FALSE)
+ { $anoutput .= "- ERROR on ". (__LINE__ - 2) ." line (openssl_pkey_new):\n ". openssl_error_strings () ." (that might usually mean that the openssl.cnf file is unavailable)"; break; }
+ $anoutput .= "+ OK got the User Private Key\n";
+
+ // Generate the User Certificate Request
+ $UserReq = openssl_csr_new ($adn,
+ $UserPrivKey,
+ $config['openssl']['config']);
+ if ($UserReq == FALSE)
+ { $anoutput .= "- ERROR on ". (__LINE__ - 4) ." line (openssl_csr_new):\n ". openssl_error_strings (); break; }
+ $anoutput .= "+ OK generated the User Certificate Request\n";
+
+ // Read the openssl serial
+ $CAserial = openssl_load_serial ($config['openssl']['serial']);
+ $anoutput .= "+ OK read current openssl serial (". openssl_hex_serial ($CAserial) .")\n";
+
+ $UserPubCertFile = $config['openssl']['pubfolder'] . openssl_hex_serial ($CAserial) .'.pem';
+ $UserCertReqFile = $config['openssl']['reqfolder'] . openssl_hex_serial ($CAserial) .'.csr';
+ $UserPrivKeyFile = $config['openssl']['prvfolder'] . openssl_hex_serial ($CAserial) .'.key';
+
+ // Read the openssl database
+ openssl_load_database ($config['openssl']['database']);
+ $anoutput .= "+ OK read the openssl database (". count ($openssl['Database']) ." items)\n";
+
+ // Get CA's Private Key
+ $CAPrivKey = openssl_pkey_get_private ($config['openssl']['CA']['priv']);
+
+ if ($CAPrivKey == FALSE)
+ { $anoutput .= "- ERROR on ". (__LINE__ - 2) ." line (openssl_pkey_get_private)\n ". openssl_error_strings (); break; }
+ $anoutput .= "+ OK read the CA Private Key\n";
+
+ // Get a CA-signed cert that lasts for 1 year
+ $UserPubCert = openssl_csr_sign ($UserReq,
+ $config['openssl']['CA']['pub'],
+ $CAPrivKey,
+ $validdays,
+ $config['openssl']['config'],
+ $CAserial);
+ if ($UserPubCert == FALSE)
+ { $anoutput .= "- ERROR on ". (__LINE__ - 7) ." line (openssl_csr_sign)\n ". openssl_error_strings (); break; }
+ $anoutput .= "+ OK signed the User Certificate Request with CA Private Key\n";
+
+ // Add the new row into openssl database
+ $openssl['Database'][] = array ('Status' => 'V',
+ 'ExpDate' => date ('ymdHis',
+ time() +
+ date ('Z') +
+ ($validdays * 24 * 60 * 60)) .'Z',
+ 'RevDate' => '',
+ 'Serial' => openssl_hex_serial ($CAserial),
+ 'File' => openssl_hex_serial ($CAserial) .'.crt',
+ 'Name' => openssl_make_name ($adn)
+ );
+
+ // Create files
+
+ $OldUMask = umask (0007);
+
+ // Write User Private Key
+ if (!openssl_pkey_export_to_file ($UserPrivKey, $UserPrivKeyFile, NULL, $config['openssl']['config']))
+ { $anoutput .= "- ERROR on ". (__LINE__ - 1) ." line (openssl_pkey_export_to_file)\n ". openssl_error_strings () ." (That might mean that the key folder is not write enabled for www user)"; break; }
+ $anoutput .= "+ OK wrote User Private Key into file $UserPrivKeyFile\n";
+
+ // Write User Public Certificate
+ if (!openssl_x509_export_to_file ($UserPubCert, $UserPubCertFile, FALSE))
+ { $anoutput .= "- ERROR on ". (__LINE__ - 1) ." line (openssl_x509_export_to_file)\n ". openssl_error_strings (); break; }
+ $anoutput .= "+ OK wrote User Public Certificate into file $UserPubCertFile\n";
+
+ // Write User Certificate Request
+ if (!openssl_csr_export_to_file ($UserReq, $UserCertReqFile))
+ { $anoutput .= "- ERROR on ". (__LINE__ - 1) ." line (openssl_csr_export_to_file)\n ". openssl_error_strings (); break; }
+ $anoutput .= "+ OK wrote User Certificate Request into file $UserCertReqFile\n";
+
+ // Write new openssl database
+ openssl_write_database ($config['openssl']['database']);
+ openssl_write_database_attr ('', $config['openssl']['database']);
+ $anoutput .= "+ OK wrote new openssl database\n";
+
+ // Write new openssl serial
+ openssl_write_serial ($CAserial + 1, $config['openssl']['serial']);
+ $anoutput .= "+ OK wrote new openssl serial\n";
+
+ umask ($OldUMask);
+
+ $Return = openssl_hex_serial ($CAserial);
+ } while (FALSE);
+
+ return $Return;
+}
+
+// ----------------------------------------------
+function openssl_error_strings ()
+{
+ $sString = '';
+ while ($msg = openssl_error_string ())
+ $sString .= $msg ."\n";
+
+ return $sString;
+}
+
+// ----------------------------------------------
+function openssl_make_name ($adn)
+{
+ $sString = '';
+
+ if (strlen ($adn['countryName']) > 0) $sString .= '/C=' . $adn['countryName'];
+ if (strlen ($adn['stateOrProvinceName']) > 0) $sString .= '/ST=' . $adn['stateOrProvinceName'];
+ if (strlen ($adn['localityName']) > 0) $sString .= '/L=' . $adn['localityName'];
+ if (strlen ($adn['organizationName']) > 0) $sString .= '/O=' . $adn['organizationName'];
+ if (strlen ($adn['organizationalUnitName']) > 0) $sString .= '/OU=' . $adn['organizationalUnitName'];
+ if (strlen ($adn['commonName']) > 0) $sString .= '/CN=' . $adn['commonName'];
+ if (strlen ($adn['emailAddress']) > 0) $sString .= '/emailAddress='. $adn['emailAddress'];
+
+ return $sString;
+}
+
+// ----------------------------------------------
+function openssl_get_country ($aline)
+{ return str_get_sometag ($aline . '/', '\/C=([^/]*)\/'); }
+
+// ----------------------------------------------
+function openssl_get_state ($aline)
+{ return str_get_sometag ($aline . '/', '\/ST=([^/]*)\/'); }
+
+// ----------------------------------------------
+function openssl_get_city ($aline)
+{ return str_get_sometag ($aline . '/', '\/L=([^/]*)\/'); }
+
+// ----------------------------------------------
+function openssl_get_company ($aline)
+{ return str_get_sometag ($aline . '/', '\/O=([^/]*)\/'); }
+
+// ----------------------------------------------
+function openssl_get_department ($aline)
+{ return str_get_sometag ($aline . '/', '\/OU=([^/]*)\/'); }
+
+// ----------------------------------------------
+function openssl_get_CN ($aline)
+{ return str_get_sometag ($aline . '/', '\/CN=([^/]*)\/'); }
+
+// ----------------------------------------------
+function openssl_get_email ($aline)
+{ return str_get_sometag ($aline . '/', '\/emailAddress=([^/]*)\/'); }
+
+// ----------------------------------------------
+// Guess the full file name
+function openssl_get_filename ($iSerial, $sExt)
+{
+ global $config;
+
+ $sReturn = $config['openssl']['folder'] . openssl_hex_serial ($iSerial) . $sExt;
+ if (!file_exists ($sReturn))
+ {
+ $sReturn = $config['openssl']['pubfolder'] . openssl_hex_serial ($iSerial) . $sExt;
+ if (!file_exists ($sReturn))
+ {
+ $sReturn = $config['openssl']['reqfolder'] . openssl_hex_serial ($iSerial) . $sExt;
+ if (!file_exists ($sReturn))
+ {
+ $sReturn = $config['openssl']['prvfolder'] . openssl_hex_serial ($iSerial) . $sExt;
+ if (!file_exists ($sReturn))
+ {
+ $sReturn = '';
+ }
+ }
+ }
+ }
+
+ return $sReturn;
+}
+
+
+?>
diff --git a/Modules/UserControl/include/openvpn-functions.inc b/Modules/UserControl/include/openvpn-functions.inc
new file mode 100755
index 0000000..f853ea9
--- /dev/null
+++ b/Modules/UserControl/include/openvpn-functions.inc
@@ -0,0 +1,146 @@
+ $line)
+ {
+ chomp ($line);
+ $linetokens = explode (' ', str_strip_spaces ($line));
+
+ switch (strtolower ($linetokens[0]))
+ {
+ case 'local': $openvpn['Server']['Local'] = $linetokens[1]; break;
+ case 'proto': $openvpn['Server']['Proto'] = $linetokens[1]; break;
+ case 'port': $openvpn['Server']['Port'] = $linetokens[1]; break;
+ case 'dev': $openvpn['Server']['Dev'] = $linetokens[1]; break;
+ case 'mode': $openvpn['Server']['Mode'] = $linetokens[1]; break;
+ case 'max-clients': $openvpn['Server']['MaxClients'] = $linetokens[1]; break;
+ case 'status':
+ $openvpn['Server']['Status']['Exists'] = if_file_exists ($linetokens[1], true);
+ $openvpn['Server']['Status']['File'] = $linetokens[1];
+ break;
+ case 'status-version': $openvpn['Server']['Status']['Version'] = $linetokens[1]; break;
+ case 'ca':
+ $openssl['Server']['CA']['Exists'] = if_file_exists ($linetokens[1], true);
+ $openssl['Server']['CA']['File'] = $linetokens[1];
+ break;
+ case 'dh':
+ $openvpn['Server']['DH']['Exists'] = if_file_exists ($linetokens[1], true);
+ $openvpn['Server']['DH']['File'] = $linetokens[1];
+ break;
+ case 'cert':
+ $openvpn['Server']['Certificate']['Exists'] = if_file_exists ($linetokens[1], true);
+ $openvpn['Server']['Certificate']['File'] = $linetokens[1];
+ break;
+ case 'key':
+ $openvpn['Server']['Private_Key']['Exists'] = if_file_exists ($linetokens[1], true);
+ $openvpn['Server']['Private_Key']['File'] = $linetokens[1];
+ break;
+ case 'tls-auth':
+ $openvpn['Server']['TLS_Auth']['Exists'] = if_file_exists ($linetokens[1], true);
+ $openvpn['Server']['TLS_Auth']['File'] = $linetokens[1];
+ $openvpn['Server']['TLS_Auth']['Key'] = $linetokens[2];
+ break;
+ case 'crl-verify':
+ $openvpn['Server']['CRL_Verify']['Exists'] = if_file_exists ($linetokens[1], true);
+ $openvpn['Server']['CRL_Verify']['File'] = $linetokens[1];
+ break;
+ }
+ }
+}
+
+// ----------------------------------------------
+function openvpn_load_status ()
+{
+ global $config;
+ global $openvpn;
+
+ $stop_reading = FALSE;
+
+ if (!isset ($openvpn['Server']['Status']['File']))
+ exit;
+
+ $lines = file (str_file_fullname ($config['openvpn']['folder'], $openvpn['Server']['Status']['File']));
+
+ if (!is_array ($lines))
+ exit;
+
+ foreach ($lines as $line_num => $line)
+ {
+ chomp ($line);
+ $linetokens = explode (',', $line);
+
+ if ($linetokens[0] == 'TITLE')
+ $openvpn['Server']['Title'] = $linetokens[1];
+ else if ($linetokens[0] == 'TIME')
+ {
+ $openvpn['Server']['DateTime'] = $linetokens[1];
+ $openvpn['Server']['Time'] = $linetokens[2];
+ }
+ else if ($linetokens[0] == 'HEADER' && $linetokens[1] == 'CLIENT_LIST')
+ {
+ // We will need to know what field is what ?
+ }
+ else if ($linetokens[0] == 'HEADER' && $linetokens[1] == 'ROUTING_TABLE')
+ {
+ // We will need to know what field is what ?
+ }
+ else if ($linetokens[0] == 'CLIENT_LIST')
+ {
+ $openvpn['Client'][] = array ('CN' => str_replace ('_', ' ', $linetokens[1]),
+ 'REALADDR' => $linetokens[2],
+ 'VIRTADDR' => $linetokens[3],
+ 'BYTESRCV' => $linetokens[4],
+ 'BYTESSND' => $linetokens[5],
+ 'SINCE' => $linetokens[6],
+ 'SINCEUT' => $linetokens[7],
+ 'Seconds_Ago' => seconds_string (time () - $linetokens[7])
+ );
+ }
+ else if ($linetokens[0] == 'ROUTING_TABLE')
+ {
+ $openvpn['Routing'][] = array ('VIRTADDR' => $linetokens[1],
+ 'CN' => str_replace ('_', ' ', $linetokens[2]),
+ 'REALADDR' => $linetokens[3],
+ 'LAST' => $linetokens[4],
+ 'Seconds_Ago' => seconds_string (time () - $linetokens[4])
+ );
+ }
+ }
+}
+
+// ----------------------------------------------
+function openvpn_find_connected ()
+{
+ global $openvpn;
+ global $openssl;
+
+ // find who is connected
+ if (isset ($openvpn['Client']))
+ $cnconnected = count ($openvpn['Client']);
+ else
+ $cnconnected = 0;
+ $cntotal = count ($openssl['Database']);
+
+ if ($cnconnected > 0)
+ for ($i = 0; $i < $cnconnected; $i++)
+ for ($j = 0; $j < $cntotal; $j++)
+ if ($openvpn['Client'][$i]['CN'] == $openssl['Database'][$j]['CN'])
+ {
+ $openssl['Database'][$j]['Connected'] = true;
+ break;
+ }
+}
+?>
diff --git a/Modules/UserControl/include/zip.lib.php b/Modules/UserControl/include/zip.lib.php
new file mode 100755
index 0000000..8df2216
--- /dev/null
+++ b/Modules/UserControl/include/zip.lib.php
@@ -0,0 +1,113 @@
+
+* http://www.zend.com/codex.php?id=535&single=1
+*
+* Denis125
+* http://www.zend.com/codex.php?id=470&single=1
+*
+* Peter Listiak
+*
+* PK ZIP
+* http://www.pkware.com/appnote.txt
+*/
+
+class zipfile
+{
+ var $datasec = array ();
+ var $ctrl_dir = array ();
+ var $eof_ctrl_dir = "\x50\x4b\x05\x06\x00\x00\x00\x00";
+ var $old_offset = 0;
+
+ function unix2DosTime ($unixtime = 0)
+ {
+ $timearray = ($unixtime == 0) ?
+ getdate () :
+ getdate ($unixtime);
+
+ if ($timearray['year'] < 1980)
+ {
+ $timearray['year'] = 1980;
+ $timearray['mon'] = 1;
+ $timearray['mday'] = 1;
+ $timearray['hours'] = 0;
+ $timearray['minutes'] = 0;
+ $timearray['seconds'] = 0;
+ }
+
+ return (($timearray['year'] - 1980) << 25) |
+ ($timearray['mon'] << 21) |
+ ($timearray['mday'] << 16) |
+ ($timearray['hours'] << 11) |
+ ($timearray['minutes'] << 5) |
+ ($timearray['seconds'] >> 1);
+ }
+
+ function addFile ($data, $name, $time = 0)
+ {
+ $name = str_replace ('\\', '/', $name);
+
+ $dtime = dechex ($this->unix2DosTime ($time));
+ $hexdtime = '\x' . $dtime[6] . $dtime[7] .
+ '\x' . $dtime[4] . $dtime[5] .
+ '\x' . $dtime[2] . $dtime[3] .
+ '\x' . $dtime[0] . $dtime[1];
+ eval ('$hexdtime = "' . $hexdtime . '";');
+
+ $unc_len = strlen ($data);
+ $crc = crc32 ($data);
+ $zdata = gzcompress ($data);
+ $zdata = substr (substr ($zdata, 0, strlen ($zdata) - 4), 2);
+ $c_len = strlen ($zdata);
+
+ $fr = "\x50\x4b\x03\x04\x14\x00\x00\x00\x08\x00" .
+ $hexdtime .
+ pack ('V', $crc) .
+ pack ('V', $c_len) .
+ pack ('V', $unc_len) .
+ pack ('v', strlen ($name)) .
+ pack ('v', 0) .
+ $name .
+ $zdata .
+ pack ('V', $crc) .
+ pack ('V', $c_len) .
+ pack ('V', $unc_len);
+
+ $this -> datasec[] = $fr;
+
+ $cdrec = "\x50\x4b\x01\x02\x00\x00\x14\x00\x00\x00\x08\x00" .
+ $hexdtime .
+ pack ('V', $crc) .
+ pack ('V', $c_len) .
+ pack ('V', $unc_len) .
+ pack ('v', strlen ($name)) .
+ pack ('v', 0 ) .
+ pack ('v', 0 ) .
+ pack ('v', 0 ) .
+ pack ('v', 0 ) .
+ pack ('V', 32 ) .
+ pack ('V', $this -> old_offset ) .
+ $name;
+
+ $this -> old_offset += strlen ($fr);
+ $this -> ctrl_dir[] = $cdrec;
+ }
+
+ function file ()
+ {
+ $data = implode ('', $this -> datasec);
+ $ctrldir = implode ('', $this -> ctrl_dir);
+
+ return $data .
+ $ctrldir .
+ $this -> eof_ctrl_dir .
+ pack ('v', sizeof ($this -> ctrl_dir)) .
+ pack ('v', sizeof ($this -> ctrl_dir)) .
+ pack ('V', strlen ($ctrldir)) .
+ pack ('V', strlen ($data)) .
+ "\x00\x00";
+ }
+}
+?>
diff --git a/Modules/UserControl/index.php b/Modules/UserControl/index.php
new file mode 100755
index 0000000..dec4def
--- /dev/null
+++ b/Modules/UserControl/index.php
@@ -0,0 +1,298 @@
+";
+ exit;
+ }
+
+$sort = mysql_real_escape_string($_POST["dirsort"]); //$_GET["sort"];
+$by = mysql_real_escape_string($_POST["sortby"]); //$_GET["by"];
+$table = mysql_real_escape_string($_POST["table"]); //$_GET["table"];
+
+$moduleurl = $_SERVER["REQUEST_URI"];
+$urlcut = strpos($moduleurl, "&");
+if($urlcut > 0)
+{
+ $moduleurl = substr($moduleurl,0,$urlcut);
+}
+else
+{
+ if(strpos($moduleurl, "?") == 0)
+ {
+ $moduleurl = $_SERVER["REQUEST_URI"]."?site=1";
+ }
+ if($_SERVER["REQUEST_URI"] == "/" || is_null($_SERVER["REQUEST_URI"]))
+ {
+ $moduleurl = "/index.php?site=1";
+ }
+}
+
+
+switch($uebergabe2)
+{
+ case 1:
+ echo "Proxy repaired successfully!";
+ break;
+ default:
+ break;
+}
+
+switch($uebergabe)
+{
+case 0:
+
+echo "
+
+
+ Welcome ".$_SESSION["user_vorname"]." ".$_SESSION["user_nachname"]."!
+
+
+
+
+Your Userstatistics:
+
+
+
+ Up
+ Down
+
+
+
+ Year
+ Month
+ All
+
+
+
+ ID
+ Sent
+ Received
+ IP
+
+
+ ";
+
+ // MYsql befehl basteln
+ $sql = "SELECT * FROM $table ORDER BY $by $sort;";
+ $result = mysql_query($sql);
+ echo "";
+ if($table=='connections')
+ {
+ echo "Start Time Stop Time Client IP Download
+ Upload \n";
+ }
+ else if($table=='month')
+ {
+ echo "Month Year Connection Time Download
+ Upload \n";
+ }
+ else if($table=='year')
+ {
+ echo "Year Connection Time Download
+ Upload \n";
+ }
+ else
+ {
+ }
+// ------------------------------------------------ Mysql lesen
+ if ($result)
+ {
+ while ($ar=mysql_fetch_array($result,MYSQL_ASSOC))
+ {
+
+ if($ar["sent"]>1024)
+ {
+ $sentbytes = round($ar["sent"]/1024,2) . " KiB";
+ if($ar["sent"]>1048576)
+ {
+ $sentbytes = round($ar["sent"]/1024/1024,2) . " MiB";
+ if($ar["sent"]>1073741824)
+ {
+ $sentbytes = round($ar["sent"]/1024/1024/1024,2) . " GiB";
+ }
+ }
+ }
+ else
+ {
+ $sentbytes = $ar["sent"]. " Byte";
+ }
+
+ if($ar["received"]>1024)
+ {
+ $receivedbytes = round($ar["received"]/1024,2) . " KiB";
+ if($ar["received"]>1048576)
+ {
+ $receivedbytes = round($ar["received"]/1024/1024,2) . " MiB";
+ if($ar["received"]>1073741824)
+ {
+ $receivedbytes = round($ar["received"]/1024/1024/1024,2) . " GiB";
+ }
+ }
+ }
+ else
+ {
+ $receivedbytes = $ar["received"]. " Byte";
+ }
+
+ if($table=='connections')
+ {
+ if($ar["stop"] != 0)
+ {
+ $stop = date("r",$ar["stop"]);
+ }
+ else
+ {
+ $stop = "running session";
+ }
+ if($ar["client"] == $_SESSION["user_nickname"])
+ {
+ echo "",date("r",$ar["start"])," ",$stop," ",$ar["ip"],
+ " ", $sentbytes," ", $receivedbytes,
+ " \n";
+ }
+ }
+ else if($table=='month')
+ {
+ $hour = floor($ar["time"]/3600);
+ $min = floor($ar["time"]/60 - $hour *60);
+ $sec = $ar["time"]-$hour*3600-$min*60;
+ $timestring = $hour .":". $min .":". $sec;
+
+ if($ar["client"] == $_SESSION["user_nickname"])
+ {
+ echo "",$ar["month"]," ",$ar["year"]," ",$timestring,
+ " ", $sentbytes," ", $receivedbytes,
+ " \n";
+ }
+ }
+ else if($table=='year')
+ {
+ $hour = floor($ar["time"]/3600);
+ $min = floor($ar["time"]/60 - $hour *60);
+ $sec = $ar["time"]-$hour*3600-$min*60;
+ $timestring = $hour .":". $min .":". $sec;
+
+ if($ar["client"] == $_SESSION["user_nickname"])
+ {
+ echo "",$ar["year"]," ",$timestring,
+ " ", $sentbytes," ", $receivedbytes,
+ " \n";
+ }
+ }
+ else
+ {
+ }
+ }
+ }
+ else
+ {
+ echo " ";
+ }
+ echo "
";
+ mysql_close();
+
+echo "
+
+ VPN Config:
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Die SchulVPN Client Software kann unter \"Services\" heruntergeladen werden!
+
+ ";
+
+ if(db_getconfval("withusersquid")=="1")
+ {
+ echo "Proxy tot?: ";
+
+ if (isset ($_REQUEST["proxy"]))
+ {
+ echo "Proxy repaired successfully! ";
+ }
+
+ function dec_to_hex($dec)
+ {
+ $sign = ""; // suppress errors
+ if( $dec < 0){ $sign = "-"; $dec = abs($dec); }
+
+ $hex = Array( 0 => 0, 1 => 1, 2 => 2, 3 => 3, 4 => 4, 5 => 5,
+ 6 => 6, 7 => 7, 8 => 8, 9 => 9, 10 => 'A',
+ 11 => 'B', 12 => 'C', 13 => 'D', 14 => 'E',
+ 15 => 'F' );
+
+ do
+ {
+ $h = $hex[($dec%16)] . $h;
+ $dec /= 16;
+ }
+ while( $dec >= 1 );
+
+ return $sign . $h;
+ }
+
+ $zeile = exec(escapeshellcmd("cat ".db_getconfval("sqddir")."/vpnid"));
+ $zeile = dec_to_hex($zeile);
+
+ echo "
+ Funktioniert der SchulVPN Proxy nicht mehr? Dann klicke auf \"Repair Proxy\".
+ Info: Jeder klick dieses Buttons wird in einer Datenbank mitgeloggt!
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ";
+ }
+
+ echo "
+ User Information:
+ Benutzer Id: ".$_SESSION["user_id"]."
+ VPN Id: ".$_SESSION["user_vpnid"]."
+ Nickname: ".$_SESSION["user_nickname"]."
+ Nachname: ".$_SESSION["user_nachname"]."
+ Vorname: ".$_SESSION["user_vorname"]."
+ Email Adress: ".$_SESSION["user_email"]."
+ Novell Login (Email): ".$_SESSION["user_novlogin"]."
+ Current IP: ".getenv("REMOTE_ADDR")."
+
+
+ ";
+ break;
+
+case 2:
+ include($_SERVER["DOCUMENT_ROOT"]."/Modules/UserControl/change.php");
+ break;
+
+default:
+ break;
+}
diff --git a/README b/README
new file mode 100644
index 0000000..05d5ae2
--- /dev/null
+++ b/README
@@ -0,0 +1,4 @@
+You can enable/disable Modules (such as Squid, Munin, Downloads,...) in this file:
+ Config/_siteconfig_.php
+
+
diff --git a/Site/admin_header.php b/Site/admin_header.php
new file mode 100755
index 0000000..a3ff732
--- /dev/null
+++ b/Site/admin_header.php
@@ -0,0 +1,137 @@
+ 0)
+{
+ $moduleurl = substr($moduleurl,0,$urlcut);
+}
+else
+{
+ if(strpos($moduleurl, "?") == 0)
+ {
+ $moduleurl = $_SERVER["REQUEST_URI"]."?site=1";
+ }
+ if($_SERVER["REQUEST_URI"] == "/Admin/" || is_null($_SERVER["REQUEST_URI"]))
+ {
+ $moduleurl = "/Admin/index.php?site=1";
+ }
+}
+
+include($_SERVER["DOCUMENT_ROOT"]."/Config/_siteconfig_.php");
+
+?>
+
+
+
+
+
+ Designed by Christoph Haas
+ Base template (without user's data) checked by http://validator.w3.org : "This page is valid XHTML 1.0 Transitional"
+ -->
+
+
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/Site/checkadmin.php b/Site/checkadmin.php
new file mode 100755
index 0000000..adecfda
--- /dev/null
+++ b/Site/checkadmin.php
@@ -0,0 +1,59 @@
+
Not authenticated!
+
+
+ You need to be Admin to view this area!
+
+
+
+
+
+
+
+
+
+
+
+
+
+";
+exit;
+}
+?>
diff --git a/Site/checkuser.php b/Site/checkuser.php
new file mode 100755
index 0000000..8a9c236
--- /dev/null
+++ b/Site/checkuser.php
@@ -0,0 +1,57 @@
+Not authenticated!
+
+
+
+
+
+
+
+
+
+
+
+