##############################################################################
# if you can read this in your web browser, there are some security risk, or
# this Server can't handle php.
##############################################################################
#################################################
# podblogger 0.5 #
# by Christian Rotzoll #
# and Hagen Christian Toennies #
# #
# christian.rotzoll@medien.uni-weimar.de #
# Doku unter http://www.rotzoll.de/podblogger #
# #
#################################################
# Konfugurationsüberprüfung #
#################################################
##############################################################################
# This script will automaticaly executet when the podblogger is just
# installed or updatet it is needed to check if the system is runable or
# after update look if all changes where successfull an html output is
# generated if the check failed or the hole check had success.
##############################################################################
$installcheck = TRUE;
/**
* Needed files:
*
* require("include/funktions_sammlung.inc.php");
* require("include/cgiRelais.class.php");
* require("include/article.class.php");
*/
require("include/funktions_sammlung.inc.php");
require("include/cgiRelais.class.php");
require("include/article.class.php");
// Session start and load
session_start();
if (!isset($_SESSION['admin']))
{
$_SESSION['admin'] = "notADMIN";
}
/*
hier verschiende Vorgänge durchlaufen:
- Sprachauswahl
- Verzeichnisse
//- Cgi-Upload-(Auto)-Konfiguration
- andere Autoeinstellungen
- Dann Begrüßungstext / passwort .... und ab in den ADMIN bereich
*/
// -----------configure Systems language----------
// -----------------------------------------------
// If the language is still set as "default"
// than the user has to choose the systemlanguage
if (($GLOBALS['ADMIN_LANGUAGE']=="default") && (!isset($_GET['language'])))
{
$langs = getAllAvailableLanguages();
if (count($langs)!=0)
{
if (count($langs) > 1)
{
if (FALSE) //($PODBLOGGER_VERSION=="0.4")
{
$ADMIN_LANGUAGE = "deutsch";
updateValueInConfigFile("ADMIN_LANGUAGE");
}
else
{
// print out selector
';
printEndline("");
exit();
}
}
else
{
//case== only one language is avalible
$ADMIN_LANGUAGE = $langs[0];
updateValueInConfigFile("ADMIN_LANGUAGE");
write_weiterleitung("http://".HTTP_BASISADRESSE."installcheck.php");
}
}
else
{
print "ERROR: Keine Sprachdateien im Verzeichnis 'include' vorhanden / no language files in directory 'include'";
exit();
}
}
elseif (isset($_GET['language']))
{
// switsch to selected language
$ADMIN_LANGUAGE = $_GET['language'];
updateValueInConfigFile("ADMIN_LANGUAGE");
write_weiterleitung("http://".HTTP_BASISADRESSE."installcheck.php");
}
// maybe change also the Layout-Plugin to the selected language
if ($LAYOUT_ID = languageLayoutExists($ADMIN_LANGUAGE)) updateValueInConfigFile("LAYOUT_ID");
// ------ TEST 1 - folder and file rights --------
// -----------------------------------------------
// check for folder and file rights in the systems Webspace
$verzeichnisse = array();
//array_push($verzeichnisse, array("dir" => "", "chmod" => "777", "despription" => "podblogger-Installationsverzeichnis"));
array_push($verzeichnisse, array("dir" => "uploadData/", "chmod" => "777", "despription" => "'uploadData'-Verzeichnis"));
array_push($verzeichnisse, array("dir" => "publicData/", "chmod" => "777", "despription" => "'publicData'-Verzeichnis"));
array_push($verzeichnisse, array("dir" => "podbloggerData/", "chmod" => "777", "despription" => "'podbloggerData'-Verzeichnis"));
array_push($verzeichnisse, array("dir" => "podbloggerData/stats/", "chmod" => "777", "despription" => "'stats'-Unterverzeichnis im 'podbloggerData'-Hauptverzeichnis"));
array_push($verzeichnisse, array("dir" => "podbloggerData/layoutConfigs/", "chmod" => "777", "despription" => "'layoutConfigs'-Unterverzeichnis im 'podbloggerData'-Hauptverzeichnis"));
array_push($verzeichnisse, array("dir" => "podbloggerData/smarty_cache/", "chmod" => "777", "despription" => "'smarty_cache'-Unterverzeichnis im 'podbloggerData'-Hauptverzeichnis"));
array_push($verzeichnisse, array("dir" => "podbloggerData/smarty_compile/", "chmod" => "777", "despription" => "'smarty_compile'-Unterverzeichnis im 'podbloggerData'-Hauptverzeichnis"));
//check
$verzeichniss_mit_problemen = array();
foreach($verzeichnisse as $verzeichnis)
{
//if ($verzeichnis['dir'] != "") @chmod($verzeichnis['dir'],$verzeichnis['chmod']);
if (!checkVerzeichnis($verzeichnis['dir']))
{ array_push($verzeichniss_mit_problemen,$verzeichnis); }
}
// if there are problems
if (count($verzeichniss_mit_problemen) > 0)
{
printHeadline();
printBaiscinfoOnFirstRun();
print get_lang('installcheck_followingdirs').":
\n";
foreach($verzeichniss_mit_problemen as $verzeichnis)
{
print "- ".$verzeichnis['despription']." ".get_lang('installcheck_needrights').": ".$verzeichnis['chmod']."
";
}
print "
".get_lang('installcheck_moreinfo')."
";
print "";
printEndline(menuButtonStr(get_lang('installcheck_checkagain1'), "installcheck.php"));
exit();
}
// ------ TEST 2 - IS password set? ------------
// ---------------------------------------------
if ($ADMIN_PASSWORD=="")
{
// check if a password were set
if ( isset($_POST['pass_new']) )
{$new_pass = htmlspecialchars($_POST['pass_new']);}
else if ( isset($_GET['pass_new']) )
{$new_pass = htmlspecialchars($_GET['pass_new']);}
if (!isset($new_pass))
{
//printout password check
printHeadline();
printBaiscinfoOnFirstRun();
print get_lang('installcheck_choosepass').":
\n";
print "";
print "".get_lang('installcheck_passinfo')."";
print "";
printEndline("");
exit();
}
else
{
//recheck password and save if it is ok
if (strlen($new_pass) > 5)
{
$ADMIN_PASSWORD = $new_pass;
updateValueInConfigFile("ADMIN_PASSWORD");
$_SESSION['admin'] = "ADMIN";
}
else
{
printHeadline();
print_lang('installcheck_passlength');
printEndline(menuButtonStr(get_lang('installcheck_enternewpass'), "installcheck.php"));
exit();
}
}
}
/*
// ---------------------------------------------
// ------ TEST 3 - fopen-testen ----------------
// ---------------------------------------------
// prüfen, ob fopen ignoriert werden soll
if ( isset($_POST['fopen']) )
{$fopen_test = htmlspecialchars($_POST['fopen']);}
else if ( isset($_GET['fopen']) )
{$fopen_test = htmlspecialchars($_GET['fopen']);}
if (($UPLOADRELAIS_MODE != "off") && (!isset($fopen_test)))
{
// 1. Versuch - Internet: Ist Zugriff auf CGI-Upload-Relais Vermittlungstelle möglich ?
if (@fopen(AUTO_RELAIS_SCRIPT,"r"))
{
$fopen_possible = TRUE;
}
else
{
// 2. Versuch - eigener Server : Ist Zugriff auf die eigene Indexseite möglich ?
if (@fopen("http://".HTTP_BASISADRESSE."/index.php","r"))
{$fopen_possible = TRUE;}
else
{$fopen_possible = FALSE;}
}
// Wenn kein Zugriff möglich war Fehlermeldung ausgeben ...
if (!$fopen_possible)
{
printHeadline();
printBaiscinfoOnFirstRun();
print get_lang('installcheck_nofopen1')."
\n";
print_lang('installcheck_nofopen');
print "";
printEndline(menuButtonStr(get_lang('installcheck_checkagain2'), "installcheck.php")." ".menuButtonStr(get_lang('installcheck_withoutCGI'), "installcheck.php?fopen=no"));
exit();
}
}
else
{
if ($UPLOADRELAIS_MODE != "off")
{
// Der Benutzer will vorerst ohne Relais arbeiten (weil fopen nicht funktioniert)
$UPLOADRELAIS_MODE = "off";
updateValueInConfigFile("UPLOADRELAIS_MODE");
}
}
// ---------------------------------------------
// ------ TEST 3 - CGI-Uploadrelais-Konfig -----
// ---------------------------------------------
// prüfen, ob fopen ignoriert werden soll
if ( isset($_POST['relais']) )
{$relais_test = htmlspecialchars($_POST['relais']);}
else if ( isset($_GET['relais']) )
{$relais_test = htmlspecialchars($_GET['relais']);}
if (($UPLOADRELAIS_MODE == "auto") && (!isset($relais_test)))
{
if ($LOKAL_PERL == "TRUE")
{
// Testen, ob Perl im verzeichnis 'cgi-perl' funktioniert
$perlantwort = "FALSE";
$fp = @fopen("http://".HTTP_BASISADRESSE."cgi-perl/download.cgi?request=perltest","r");
$perlantwort = @fread($fp,128);
@fclose($fp);
if ($perlantwort=="TRUE")
{
// Das lokale CGI-Upload-Relais funktioniert
// lokale CGI-Upload-Relais in Konfig eintragen
$UPLOADRELAIS_UP_ADRESS = "http://".HTTP_BASISADRESSE."cgi-perl/upload.cgi";
updateValueInConfigFile("UPLOADRELAIS_UP_ADRESS");
$UPLOADRELAIS_DOWN_ADRESS = "http://".HTTP_BASISADRESSE."cgi-perl/download.cgi";
updateValueInConfigFile("UPLOADRELAIS_DOWN_ADRESS");
}
else
{
// Das lokale CGI-Upload-Relais hat nicht geantwortet
// prüfen, ob podblogger auf einem localhost ausgeführt wird
if ( (strstr(strtolower(HTTP_BASISADRESSE),'localhost') != FALSE) || (strstr(strtolower(HTTP_BASISADRESSE),'127.0.0.1') != FALSE))
{
// podblogger wird auf einer localen Maschine ausgeführt
// daher kann es nicht mit externen Upload-Relais kommunizieren
printHeadline();
printBaiscinfoOnFirstRun();
print get_lang('installcheck_noCGI')."
";
print_lang('installcheck_nofopen');
print "";
printEndline(menuButtonStr(get_lang('installcheck_checkagain2'), "installcheck.php")." ".menuButtonStr(get_lang('installcheck_withoutCGI'), "installcheck.php?relais=no"));
exit();
}
// Versuchen externes CGI-Upload-Relais automatisch zu konfigurieren
elseif ($relais = cgiRelais::getRelaisFromNet($PODBLOGGER_VERSION))
{
// es konnte ein externes Relais von der Vermittlungsstelle geladen werden
// externes CGI-Upload-Relais in Konfig eintragen
$UPLOADRELAIS_UP_ADRESS = $relais->getHttpAdress_Uploadscript();
updateValueInConfigFile("UPLOADRELAIS_UP_ADRESS");
$UPLOADRELAIS_DOWN_ADRESS = $relais->getHttpAdress_Downloadscript();
updateValueInConfigFile("UPLOADRELAIS_DOWN_ADRESS");
// Lokales Perl deaktivieren
$LOKAL_PERL = "FALSE";
updateValueInConfigFile("LOKAL_PERL");
}
else
{
// es war keine Verbindung zur Relais-Vermittlungsstelle möglich
printHeadline();
printBaiscinfoOnFirstRun();
print get_lang('installcheck_noAutoCGI')."
";
print "Das bedeutet: Ihr podblogger ist zwar einsatzfähig, doch kann es beim Einladen von großen MP3-Dateien (über 2MB) zu Problemen kommen.
".
"- Wählen Sie die Option 'weiter', um podblogger ohne Upload-Erweiterung (CGI-Upload-Relais) zu verwenden.
".
"- Wählen Sie die Option 'erneut versuchen', die automatische Konfiguration zu wiederholen.";
print "";
printEndline(menuButtonStr(get_lang('installcheck_checkagain2'), "installcheck.php")." ".menuButtonStr(get_lang('installcheck_withoutCGI'), "installcheck.php?relais=no"));
exit();
}
}
}
}
else
{
if ($UPLOADRELAIS_MODE == "auto")
{
// Der Benutzer will vorerst ohne Relais arbeiten
$UPLOADRELAIS_MODE = "off";
updateValueInConfigFile("UPLOADRELAIS_MODE");
}
// Lokales Perl deaktivieren
$LOKAL_PERL = "FALSE";
updateValueInConfigFile("LOKAL_PERL");
}
*/
// ------ Update and convertig older files------
// ---------------------------------------------
// If there are older aticle files ergo convert
convert_mp3Inf();
// reset version number
$PODBLOGGER_VERSION = "0.5";
updateValueInConfigFile("PODBLOGGER_VERSION");
// ------ finish ouput -------------------------
// ---------------------------------------------
printHeadline();
print_lang('installcheck_done');
// mark that the finish output was printed
$PODBLOGGER_STATUS = "READY";
updateValueInConfigFile("PODBLOGGER_STATUS");
$PODBLOGGER_NEXTSTEP = "DONE";
updateValueInConfigFile("PODBLOGGER_NEXTSTEP");
printEndline(menuButtonStr(get_lang('installcheck_tostartsite'), "index.php")." ".menuButtonStr(get_lang('installcheck_toadmin'), "admin.php?aktion=config&mode=menu"));
// ------ FUNKTIONEN --------------------------
// --------------------------------------------
/**
* Name:checkVerzeichnis($verzeichnispfad)
*
* Check if file and folder rights were set
* return TRUE or FALSE
*/
function checkVerzeichnis($verzeichnispfad)
{
if ($fp = @fopen($verzeichnispfad."test.tst","w"))
{
//write test file read and delete
fwrite($fp,"TEST");
fclose($fp);
$fp = @fopen($verzeichnispfad."test.tst","r");
$text = @fread($fp,1024);
@fclose($fp);
@unlink($verzeichnispfad."test.tst");
// evaluate test
if ($text == "TEST")
{ return TRUE; }
}
// If is negativ
return FALSE;
}
/**
* Name:convert_insertTemplates()
*
* Check if file and folder rights were set
* return TRUE or FALSE
*/
// Konvertiert die alten mp3Inf-Dateien (Array) zu aktuellen article-Objekten
function convert_insertTemplates()
{
return FALSE;
}
/**
* Name:convert_mp3Inf()
*
* converts older mp3INF to article Objects
*/
function convert_mp3Inf()
{
// folder publicData
$files = getFilesFromDirWithEnding("publicData","inf");
//print serialize($files);
$i = 0;
foreach ($files as $file)
{
$i++;
article::convert_ArrayInf_2_ObjectInf("publicData/".$file, (article::createUniqueID())."old".$i);
}
// folder uploadData
$files = getFilesFromDirWithEnding("uploadData","inf");
foreach ($files as $file)
{
$i++;
article::convert_ArrayInf_2_ObjectInf("uploadData/".$file,article::createUniqueID().$i);
}
return TRUE;
}
/**
* Name: printBaiscinfoOnFirstRun()
*
* when the podblogger is just installed or updatet this
* function prints out the info text
*/
function printBaiscinfoOnFirstRun()
{
if ($GLOBALS['PODBLOGGER_NEXTSTEP'] == "INSTALLCHECK_FIRST")
{
if ($GLOBALS['PODBLOGGER_STATUS'] == "INSTALL")
{
// infotext fo the very first Install
print_lang('installcheck_welcome1');
}
elseif ($GLOBALS['PODBLOGGER_STATUS'] == "UPDATE")
{
// infotext for Update
print_lang('installcheck_welcome2');
}
// mark that infotext was printed
$GLOBALS['PODBLOGGER_NEXTSTEP'] = "INSTALLCHECK";
updateValueInConfigFile("PODBLOGGER_NEXTSTEP");
}
else
{
// start text if installcheck found another error
print "".get_lang('installcheck_testdone').date("H:i:s").")
";
}
}
/**
* Name: printHeadline()
*
* This funktion prints a html HEADLINE
*
*/
function printHeadline()
{
?>
podblogger installcheck
 |
Installcheck |
|
|
}
/**
* Name: printEndline($content)
*
* This funktion prints a html ENDLINE
*
*/
function printEndline($content)
{
?>
|
print $content; ?>
|
programmed
by
christian rotzoll |
|
}
// prüft ob es ein layout mit dem namen "std_{eingestellte Sprache}" gibt
function languageLayoutExists($lang)
{
$includeDir = dir("layoutPlugins");
while ( $entry = $includeDir->read() )
{
if ($entry=="std_".$lang) return "std_".$lang;
}
return FALSE;
}
?>