Revision 109 | Revision 165 | Zur aktuellen Revision | Blame | Vergleich mit vorheriger | Letzte Änderung | Log anzeigen | RSS feed
<?//$Id: functions.php 162 2010-03-12 23:25:46Z lars $/*** @package openvz_admin* @author Lars Tiefland <ltiefland@gmail.com>**/$dir = dirname( $_SERVER["PHP_SELF"] );$host = "http://" . $_SERVER["SERVER_NAME"];$url = $host . $dir;$pear_logger = &create_pear_logger();$php_logger = &create_php_logger();set_error_handler( 'errorHandler_PHP' );PEAR::setErrorHandling( PEAR_ERROR_CALLBACK, 'errorHandler' );$u = null;$a = null;$username = ( isset( $_POST["username"] ) ) ? $_POST["username"] : "";function errorHandler_PHP( $code, $message, $file, $line ){global $php_logger;/* Map the PHP error to a Log priority. */switch ( $code ){case E_WARNING:case E_USER_WARNING:$priority = PEAR_LOG_WARNING;break;case E_NOTICE:case E_USER_NOTICE:$priority = PEAR_LOG_NOTICE;break;case E_ERROR:case E_USER_ERROR:$priority = PEAR_LOG_ERR;break;default:$priotity = PEAR_LOG_INFO;break;}switch ( $code ){case E_WARNING:case E_USER_WARNING:case E_NOTICE:case E_USER_NOTICE:case E_ERROR:case E_USER_ERROR:$php_logger->log( $message . ' in ' . $file . ' in Zeile ' . $line,$priority );break;}}function errorHandler( $error ){global $pear_logger;$message = $error->getUserInfo();if ( ! empty( $error->backtrace[1]['file'] ) ){$message .= ' (' . $error->backtrace[1]['file'];if ( ! empty( $error->backtrace[1]['line'] ) ){$message .= ' in Zeile ' . $error->backtrace[1]['line'];}$message .= ')';}$res = $pear_logger->log( $message, PEAR_LOG_ERR );}function create_logger(){global $db, $u;$params_log["db"] = $db;$params_log["u_id"] = $u->u_id;$logger = &Log::singleton( "lt_sql", "log", "fifa", $params_log );return $logger;}function create_php_logger(){global $url;$file_params["mode"] = "666";$file_params["lineFormat"] = '%1$s %2$s [%3$s] %4$s %5$s %6$s %7$s';$mail_params["from"] = "Lars Tiefland <webmaster@lars-tiefland.de>";$mail_params["subject"] = "PHP Fehler auf $url";$l1 = &Log::factory( "file", "logs/php_errors.log", "fifa_php", $file_params );$l2 = &Log::factory( "mail", "ltiefland@gmail.com", "fifa_php", $mail_params );$l3 = &Log::factory( "composite" );$c1 = $l3->addChild( $l1 );$c2 = $l3->addChild( $l2 );return $l3;}function create_pear_logger(){global $url;$file_params["mode"] = "666";$file_params["lineFormat"] = '%1$s %2$s [%3$s] %4$s %5$s %6$s %7$s';$mail_params["from"] = "Lars Tiefland <webmaster@lars-tiefland.de>";$mail_params["subject"] = "PEAR Fehler auf $url";$l1 = &Log::factory( "file", "logs/pear_errors.log", "fifa_pear", $file_params );$l2 = &Log::factory( "mail", "ltiefland@gmail.com", "fifa_pear", $mail_params );$l3 = &Log::factory( "composite" );$c1 = $l3->addChild( $l1 );$c2 = $l3->addChild( $l2 );return $l3;}function send_email( $art = 0 ){global $u, $mail, $password, $common, $url, $u_key;$to = "$u->u_name <$u->u_email>";$from_addr = "webmaster@lars-tiefland.de";$from_name = "Lars Tiefland";$from = "$from_name <$from_addr>";$art = intval( $art );switch ( $art ){case 0:$email_tpl = "email/$u->u_lang/register.tpl";$subject = $common["reg_subject"] . " - Welcome to $url";break;case 1:$email_tpl = "email/$u->u_lang/changed.tpl";$subject = $common["changed_subject"];break;case 2:$email_tpl = "email/$u->u_lang/change.tpl";$subject = $common["change_subject"];default:return false;break;}if ( file_exists( $email_tpl ) ){$email = file_get_contents( "$email_tpl" );$url_act = $url . "activate.php";$email = sprintf( $email, $u->u_name, $url, $u->u_name, $password, $url_act ."?key=$u_key", $url_act, $u_key );$headers["From"] = $from;$headers["To"] = $to;$headers["Subject"] = $subject;$ret = $mail->send( $to, $headers, $email );}else{$ret = false;}return $ret;}function login( $username, $password ){global $smarty, $username, $meld, $db_meld, $common, $a, $loc, $year, $type,$config;$type = $common["$config->type"];$smarty->assign( "meld", ( $username || $meld ) ? $common["an_error_occured"] :$meld );$smarty->assign( "db_meld", ( $username ) ? $common["userinfo_incorrect"] :$db_meld );$smarty->assign( "error", ( $username || $meld ) ? true : false );$smarty->assign( "title", $common["login"] );$smarty->assign( "user", $username );$date = $loc->formatDateTime( time() );$smarty->assign( "date", $date );$smarty->assign( "year", $year );$smarty->assign( "L_TYPE", $type );$smarty->display( "login.tpl" );}function User_Login( $show = true ){global $smarty, $db, $a, $config, $u, $common;$params = array( "dsn" => $db, "table" => "auth_user", "usernamecol" =>"u_name", "passwordcol" => "u_password", "db_fields" => "*", );$a = new Auth( "DB", $params, "login", $show );$a->setSessionName( $config->cookie_name );$a->setIdle( $config->session_length, false );$a->setExpire( 2 * $config->session_length, false );$a->start();if ( $a->getAuth() ){$u = new User( "", "" );$u = $u->UserData( $a->getUserName() );$smarty->assign( "title", $common["login"] );$smarty->assign( "u_name", $u->u_name );$smarty->assign( "u_type", $u->u_type );$disabled = ( $u->u_type == 0 ) ? "disabled=disabled" : "";$smarty->assign( "disabled", $disabled );$smarty->assign( "disabled", "" );}return $a;}function User_logout(){global $a;$a->logout();}// {{{ validate_email()/*** Check to see if email address is valid or* already present in the DB*/function validate_email( $email ){global $smarty;$meld = "";$error = false;if ( $email != '' ){if ( preg_match( '/^[a-z0-9&\'\.\-_\+]+@[a-z0-9\-]+\.([a-z0-9\-]+\.)*?[a-z]+$/is',$email ) && $email != "your@address.com" ){$error = false;$meld = "";$db_meld = "";}else{$error = true;$meld = "Email ungültig!";$db_meld = "";$smarty->assign( "email", $email );}}else{$error = true;$meld = "Email ungültig!";$db_meld = "";$smarty->assign( "email", $email );}if ( $error ){$smarty->assign( "title", "Ungültige E-Mail Adresse" );$smarty->assign( "error", $error );$smarty->assign( "meld", $meld );$smarty->assign( "db_meld", $db_meld );}else{$smarty->assign( "meld", "" );$smarty->assign( "db_meld", "" );}return ! $error;}// }}}// {{{ log_split()function log_split( $s ){global $k, $time0, $count_t;$r = array();$p = 0;$l = strlen( $s );while ( $p < $l ){check_Time();while ( ( $p < $l ) && ( strpos( " \r\t\n", $s[$p] ) !== false ) ){$p++;}if ( $s[$p] == '"' ){$p++;$q = $p;while ( ( $p < $l ) && ( $s[$p] != '"' ) ){if ( $s[$p] == '\\' ){$p += 2;continue;}$p++;}$r[] = stripslashes( substr( $s, $q, $p - $q ) );$p++;while ( ( $p < $l ) && ( strpos( " \r\t\n", $s[$p] ) !== false ) ){$p++;}$p++;}else{if ( $s[$p] == "'" ){$p++;$q = $p;while ( ( $p < $l ) && ( $s[$p] != "'" ) ){if ( $s[$p] == '\\' ){$p += 2;continue;}$p++;}$r[] = stripslashes( substr( $s, $q, $p - $q ) );$p++;while ( ( $p < $l ) && ( strpos( " \r\t\n", $s[$p] ) !== false ) ){$p++;}$p++;}else{$q = $p;while ( ( $p < $l ) && ( strpos( ";", $s[$p] ) === false ) ){$p++;}$r[] = stripslashes( trim( substr( $s, $q, $p - $q ) ) );while ( ( $p < $l ) && ( strpos( " \r\t\n", $s[$p] ) !== false ) ){$p++;}$p++;}}}$r2 = array( array() );$i = 0;$j = 0;$ind = 0;$anz = count( $r );while ( $i < $anz ){$wert = $r[$i];$l = strlen( $wert ) - 1;$char = substr( $wert, $l, 1 );if ( $char == '"' || $char == '"' ){$wert = substr( $wert, 0, $l );}$r2[$j][$ind] = $wert;if ( $ind == 2 ){$ind = 0;$j++;}else{$ind++;}$i++;}return $r2;}// }}}// {{{ check_Time()function check_Time(){global $time0;$count_t = 0;$time1 = time();if ( $time1 - $time0 >= 25 ){$time0 = $time1;$count_t++;set_time_limit( 30 );}}// }}}// {{{ PMA_readFile()//This function reads the file uploaded according to compression methodfunction PMA_readFile( $fname, $comp ){if ( isset( $fname ) ){check_Time();switch ( $comp ){case 'self':$file = @fopen( "$fname", 'rb' );if ( ! $file ){return false;}$test = fread( $file, 3 );fclose( $file );if ( $test[0] == chr( 31 ) && $test[1] == chr( 139 ) ){return PMA_readFile( $fname, "gzip" );}else{if ( $test == 'BZh' ){return PMA_readFile( $fname, 'bzip2' );}else{return PMA_readFile( $fname, 'plain' );}}break;case 'plain':$file = @fopen( $fname, 'rb' );if ( ! $file ){return false;}$content = fread( $file, filesize( $fname ) );fclose( $file );break;case 'gzip':if ( @function_exists( 'gzopen' ) ){$file = @gzopen( $path, 'rb' );if ( ! $file ){return false;}$content = '';while ( ! gzeof( $file ) ){$content .= gzgetc( $file );}gzclose( $file );}else{return false;}break;case 'bzip2':if ( @function_exists( 'bzdecompress' ) ){$file = @fopen( $fname, 'rb' );if ( ! $file ){return false;}$content = fread( $file, filesize( $fname ) );fclose( $file );$content = bzdecompress( $content );}else{return false;}break;default:return false;}check_Time();return $content;}/* else{require("import.php");}*/}function p_log( $message ){global $u_id, $u_name, $pending, $email, $db;$t_stamp = time();$sql = "INSERT INTO log (user_id, datum, message) VALUES ($u_id, $t_stamp, '$message')";$r = $db->query( $sql );$res = ( ! PEAR::isError( $r ) );return $res;}function get_log_entries(){global $db;$sql = "SELECT * FROM log";$res = $db->query( $sql );if ( ! PEAR::isError( $res ) ){$anz = $res->num_Rows();}else{if ( file_exists( "../log/log.txt" ) ){$content = PMA_readFile( "../log/log.txt", "plain" );$r = log_split( $content );$anz = count( $r[0] );}}return $anz;}function read_log( $start ){$content = "";global $max_anz, $db;$sql = "SELECT * FROM log LIMIT $start, $max_anz";$res = $db->query( $sql );if ( $res->num_Rows() ){while ( $row_d = $res->fetch_Row() ){$content .= "'" . $row_d["user_id"] . "';'" . $row_d["datum"] ."';'" . $row_d["message"] . "'\r\n";}$row = log_split( $content );}else{if ( file_exists( "../log/log.txt" ) ){$content = PMA_readFile( "../log/log.txt", "plain" );$row = log_split( $content );$row = array_splice( $row, $start, $max_anz );}else{$row = "";}}return $row;}//// Pagination routine, generates// page number sequence// taken from phpBBfunction generate_pagination( $base_url, $num_items, $per_page, $start_item,$add_prevnext_text = true ){if ( ! $num_items ){return "";}$total_pages = ceil( $num_items / $per_page );if ( $total_pages == 1 ){return '';}$on_page = floor( $start_item / $per_page ) + 1;$page_string = '';if ( $total_pages > 25 ){$init_page_max = ( $total_pages > 3 ) ? 3 : $total_pages;for ( $i = 1; $i < $init_page_max + 1; $i++ ){$page_string .= ( $i == $on_page ) ? '<b>' . $i . '</b>' :'<a href="' . $base_url . "?start=" . ( ( $i - 1 ) * $per_page ) .'">' . $i . '</a>';if ( $i < $init_page_max ){$page_string .= ", ";}}if ( $total_pages > 3 ){if ( $on_page > 1 && $on_page < $total_pages ){$page_string .= ( $on_page > 5 ) ? ' ... ' : ', ';$init_page_min = ( $on_page > 4 ) ? $on_page : 5;$init_page_max = ( $on_page < $total_pages - 4 ) ? $on_page :$total_pages - 4;for ( $i = $init_page_min - 1; $i < $init_page_max + 2; $i++ ){$page_string .= ( $i == $on_page ) ? '<b>' . $i . '</b>' :'<a href="' . $base_url . "?start=" . ( ( $i - 1 ) *$per_page ) . '">' . $i . '</a>';if ( $i < $init_page_max + 1 ){$page_string .= ', ';}}$page_string .= ( $on_page < $total_pages - 4 ) ? ' ... ' :', ';}else{$page_string .= ' ... ';}for ( $i = $total_pages - 2; $i < $total_pages + 1; $i++ ){$page_string .= ( $i == $on_page ) ? '<b>' . $i . '</b>' :'<a href="' . $base_url . "?start=" . ( ( $i - 1 ) * $per_page ) .'">' . $i . '</a>';if ( $i < $total_pages ){$page_string .= ", ";}}}}else{for ( $i = 1; $i < $total_pages + 1; $i++ ){$page_string .= ( $i == $on_page ) ? '<b>' . $i . '</b>' :'<a href="' . $base_url . "?start=" . ( ( $i - 1 ) * $per_page ) .'">' . $i . '</a>';if ( $i < $total_pages ){$page_string .= ', ';}}}if ( $add_prevnext_text ){if ( $on_page > 1 ){$page_string = ' <a href="' . $base_url . "?start=" . ( ( $on_page -2 ) * $per_page ) . '">Zurück</a> ' . $page_string;}else{$page_string = 'Zurück ' . $page_string;}if ( $on_page < $total_pages ){$page_string .= ' <a href="' . $base_url . "?start=" . ( $on_page *$per_page ) . '">Weiter</a>';}else{$page_string .= ' Weiter';}}$page_string = 'Gehe zu Seite ' . $page_string;return $page_string;}function checkDir( $dir ){if ( empty( $dir ) ){$dir = "upload";}if ( file_exists( "$dir" ) ){$ftype = filetype( "$dir" );if ( $ftype == "dir" || $ftype == "link" ){if ( $ftype == "link" ){$fname_l = readlink( "$dir" );$ftype_l = filetype( $fname_l );if ( $ftype_l == "dir" ){$ret = is_writeable( $fname_l );}else{if ( unlink( "$dir" ) ){$ret = mkdir( "$dir" );}else{$ret = false;}}}else{$ret = true;}}else{if ( unlink( "$dir" ) ){$ret = mkdir( "$dir" );}else{$ret = false;}}}else{$ret = mkdir( "$dir" );}return $ret;}function upload_pic( $pic, &$meld, &$dst ){$fname = "../images/$pic";$tmp = $_FILES['pic']['tmp_name'];// echo $_FILES["pic"]["type"];$img_info = getimagesize( $tmp );$typ = $img_info[2];switch ( $typ ){case 1: //GIFcase 2: //JPEGcase 3: //PNGif ( checkDir( "../images" ) ){if ( ! move_uploaded_file( $tmp, $fname ) ){$meld = "Konnte Datei nicht verschieben!";unlink( $tmp );$ret = false;}else{if ( ! checkDir( "../images/thumbs" ) ){$meld = "Konnte Thumbnail nicht erstellen!";unlink( $fname );$ret = false;}else{if ( function_exists( "gd_info" ) ){//GD Bibliothek steht zur Verfügung$gd_info = gd_info();$width = 60;$height = round( $img_info[1] / ( $img_info[0] /$width ), 0 );$im_d = imagecreate( $width, $height );switch ( $typ ){case 1:$im_s = imagecreatefromgif( $fname );break;case 2:$im_s = imagecreatefromjpeg( $fname );break;case 3:$im_s = imagecreatefrompng( $fname );break;}imagepalettecopy( $im_d, $im_s );imagecopyresized( $im_d, $im_s, 0, 0, 0, 0, $width,$height, $img_info[0], $img_info[1] );$dst = $pic;if ( $gd_info["PNG Support"] ){$dst = substr( $dst, 0, strlen( $dst ) - 3 );$dst .= "png";if ( $typ != 3 ){imagePNG( $im_s, "../images/$dst" );}$ret = imagePNG( $im_d, "../images/thumbs/$dst" );}else{if ( $gd_info( "JPEG Support" ) ){$ret = imageJPEG( $im_d,"../images/thumbs/$dst" );}else{$ret = false;}}imagedestroy( $im_s );imagedestroy( $im_d );if ( ! $ret ){$meld = "Konnte Thumbnail nicht erstellen!";}}else{//GD-Bibliothek steht NICHT zur Verfügung!$ret = copy( $fname, $fname2 );$dst = $fname2;if ( ! $ret ){$meld = "Konnte Thumbnail nicht erstellen!";}}}}}else{$meld = "Konnte Datei nicht verschieben!";$ret = false;}break;default:$meld = "Das ist kein gültiges Bild!";$ret = false;break;}return $ret;}function generate_pagination2( $base_url, $num_items, $per_page, $start_item,$add_prevnext_text = true ){global $mode, $common;if ( ! $num_items ){return "";}$total_pages = ceil( $num_items / $per_page );if ( $total_pages == 1 ){return '<table align="center" class="navig"><tr><th>' . $common["page"] ." 1 " . $common["of"] . ' 1</th></tr></table><br><br>';}$on_page = floor( $start_item / $per_page ) + 1;$page_string ='<table align="center" class="navig"><tr><th colspan="5">' . $common["page"] .' ' . $on_page . ' ' . $common["of"] . ' ' . $total_pages .'</th></tr><tr>';if ( $add_prevnext_text ){if ( $on_page > 1 ){$page_string .= "<td><form name=\"nav\" action=$base_url method=\"post\"><input type=\"submit\" value=\"|<<\" title=\"${common["first_page"]}\" class=\"liteoption\"><input type=\"hidden\" name=\"start\" value=\"0\"><input type=\"hidden\" name=\"mode\" value=\"$mode\"></form></td>";$prev_v = ( $on_page - 2 ) * $per_page;$page_string .= "<td><form name=\"nav\" action=$base_url method=\"post\"><input type=\"submit\" value=\"|<\" title=\"${common["previous_page"]}\" class=\"liteoption\"><input type=\"hidden\" name=\"start\" value=\"$prev_v\"><input type=\"hidden\" name=\"mode\" value=\"$mode\"></form></td>";}else{$page_string .= "<td><form name=\"nav\" action=$base_url method=\"post\"><input type=\"submit\" value=\"|<<\" disabled class=\"liteoption\"><input type=\"hidden\" name=\"start\" value=\"0\"><input type=\"hidden\" name=\"mode\" value=\"$mode\"></form></td>";$page_string .= "<td><form name=\"nav\" action=$base_url method=\"post\"><input type=\"submit\" value=\"|<\" class=\"liteoption\" disabled><input type=\"hidden\" name=\"start\" value=\"0\"></form></td>";}}if ( $total_pages > 1 ){$page_opts = "";for ( $i = 0; $i < $total_pages; $i++ ){$selected = "";$j = $i + 1;if ( $j == $on_page ){$selected = "selected=\"selected\"";}$start = ( $i * $per_page );$page_opts .= "<option value=$start $selected>$j</option>";}$page_string .= "<td width=\"100\"><form name=\"nav\" action=$base_url method=\"post\"><select name=\"start\">$page_opts</select> <input type=\"submit\" value=\"${common["go"]}\" class=\"liteoption\"><input type=\"hidden\" name=\"mode\" value=\"$mode\"></form></td>";}if ( $add_prevnext_text ){if ( $on_page < $total_pages ){$next_v = ( $on_page * $per_page );$page_string .= "<td><form name=\"nav\" action=$base_url method=\"post\"><input type=\"submit\" value=\">|\" title=\"${common["next_page"]}\" class=\"liteoption\"><input type=\"hidden\" name=\"start\" value=\"$next_v\"><input type=\"hidden\" name=\"mode\" value=\"$mode\"></form></td>";$max_v = ( $total_pages - 1 ) * $per_page;$page_string .= "<td><form name=\"nav\" action=$base_url method=\"post\"><input type=\"submit\" value=\">>|\" title=\"${common["last_page"]}\" class=\"liteoption\"><input type=\"hidden\" name=\"start\" value=\"$max_v\"><input type=\"hidden\" name=\"mode\" value=\"$mode\"></form></td>";}else{$page_string .= "<td><form name=\"nav\" action=$base_url method=\"post\"><input type=\"submit\" value=\">|\" class=\"liteoption\" disabled><input type=\"hidden\" name=\"start\" value=\"0\"><input type=\"hidden\" name=\"mode\" value=\"$mode\"></form></td>";$page_string .= "<td><form name=\"nav\" action=$base_url method=\"post\"><input type=\"submit\" value=\">>|\" disabled class=\"liteoption\" disabled><input type=\"hidden\" name=\"start\" value=\"0\"><input type=\"hidden\" name=\"mode\" value=\"$mode\"></form></td>";}}$page_string .= "</tr></table><br><br>";return $page_string;}function exec_cmd( $type, $id ){unset( $out );if ( $id != 0 ){$cmd = "ssh root@mainframe vzctl $type $id";exec( $cmd, $out, $ret );if ( ! $ret ){$out_v["status"] = implode( "<br>", $out );}else{$out_v["status"] = "unknown";}$out_v["code"] = $ret;}else{$out_v["status"] = "Hardware node is running";$out_v["code"] = 0;}if ( eregi( "running", $out_v["status"] ) ){$out_v["started"] = true;}else{$out_v["started"] = false;}if ( ! $out_v["code"] && $out_v["started"] ){$class = "success_upd";}else{$class = "error_upd";}$out_v["status"] = "<div class=\"$class\">" . $out_v["status"] ."</div>";return $out_v;}?>