From b8fca6a3250436e185250dbe46cab418c2247052 Mon Sep 17 00:00:00 2001 From: Michael Save Date: Wed, 14 Mar 2012 23:32:49 +1100 Subject: Added Tinyboard-Kusabax --- migration/kusabax.php | 275 ++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 275 insertions(+) create mode 100755 migration/kusabax.php (limited to 'migration/kusabax.php') diff --git a/migration/kusabax.php b/migration/kusabax.php new file mode 100755 index 00000000..eed12e0a --- /dev/null +++ b/migration/kusabax.php @@ -0,0 +1,275 @@ + Array('timeout' => 5, 'persistent' => false)); + $kusabaxc['db']['type'] = 'mysql'; + $kusabaxc['db']['server'] = 'localhost'; + $kusabaxc['db']['user'] = ''; + $kusabaxc['db']['password'] = ''; + $kusabaxc['db']['database'] = ''; + // KusabaX table prefix + $kusabaxc['db']['prefix'] = ''; + // Anything more to add to the DSN string (eg. port=xxx;foo=bar) + $kusabaxc['db']['dsn'] = ''; + // From your KusabaX config; needed to decode IP addresses + $kusabaxc['randomseed'] = ''; //KU_RANDOMSEED + // KusabaX directory (without trailing slash) + $kusabaxc['root'] = '/var/www/kusabax'; + + /* End Config */ + + if(empty($kusabaxc['db']['user'])) + die('Did you forget to configure the script?'); + + // Infinite timeout + set_time_limit(0); + + // KusabaX functions + function md5_decrypt($enc_text, $password, $iv_len = 16) { + $enc_text = base64_decode($enc_text); + $n = strlen($enc_text); + $i = $iv_len; + $plain_text = ''; + $iv = substr($password ^ substr($enc_text, 0, $iv_len), 0, 512); + while ($i < $n) { + $block = substr($enc_text, $i, 16); + $plain_text .= $block ^ pack('H*', md5($iv)); + $iv = substr($block . $iv, 0, 512) ^ $password; + $i += 16; + } + return preg_replace('/\\x13\\x00*$/', '', $plain_text); + } + + // KusabaX -> Tinyboard HTML + function convert_markup($body) { + global $config; + $body = stripslashes($body); + + // >quotes + $body = str_replace('"unkfunc"', '"quote"', $body); + + // >>cites + $body = preg_replace('//', '', $body); + + // Public bans + $body = preg_replace('/
\((.+?)\)<\/b><\/font>/', '($1)', $body); + + return $body; + } + + require 'inc/functions.php'; + require 'inc/display.php'; + require 'inc/template.php'; + require 'inc/database.php'; + require 'inc/user.php'; + $step = isset($_GET['step']) ? round($_GET['step']) : 0; + $page = Array( + 'config' => $config, + 'title' => 'KusabaX Database Migration', + 'body' => '' + ); + + $log = Array(); + + // Trick Tinyboard into opening the KusabaX databse instead + $__temp = $config['db']; + $config['db'] = $kusabaxc['db']; + + // Get databse link + $kusabax = $pdo; + // Clear + unset($pdo); + + // Open Tinyboard database + $config['db'] = $__temp; + unset($__temp); + + $k_query = $kusabax->query('SELECT * FROM `' . $kusabaxc['db']['prefix'] . 'boards`'); + $boards = listBoards(); + + // Copy boards table, briefly + $kusabax_boards = Array(); + while($board = $k_query->fetch()) { + // For later use... + $kusabax_boards[(int)$board['id']] = $board['name']; + + $already_exists = false; + foreach($boards as &$_board) { + if($_board['uri'] == $board['name']) { + // Board already exists in Tinyboard... + $log[] = 'Board /' . $board['name'] . '/ already exists.'; + $already_exists = true; + break; + } + } + if($already_exists) + continue; + + $log[] = 'Creating board: /' . $board['name'] . '/'; + + // Go ahead and create this new board... + $query = prepare('INSERT INTO `boards` VALUES (NULL, :uri, :title, :subtitle)'); + $query->bindValue(':uri', $board['name']); + $query->bindValue(':title', $board['desc']); + $query->bindValue(':subtitle', null, PDO::PARAM_NULL); + $query->execute() or error(db_error($query)); + + // Posting table + query(Element('posts.sql', Array('board' => $board['name']))) or error(db_error()); + + // Set up board (create directories, etc.) by opening it + openBoard($board['name']); + } + + + $k_query = $kusabax->query('SELECT * FROM `' . $kusabaxc['db']['prefix'] . 'posts` WHERE `IS_DELETED` = 0'); + while($post = $k_query->fetch()) { + if(!isset($kusabax_boards[(int)$post['boardid']])) { + // Board doesn't exist... + continue; + } + $board = $kusabax_boards[(int)$post['boardid']]; + + $log[] = 'Replicating post ' . $post['id'] . ' on /' . $board . '/'; + + $query = prepare(sprintf("INSERT INTO `posts_%s` VALUES (:id, :thread, :subject, :email, :name, :trip, :capcode, :body, :time, :bump, :thumb, :thumbwidth, :thumbheight, :file, :width, :height, :filesize, :filename, :filehash, :password, :ip, :sticky, :locked, 0, :embed)", $board)); + + // Post ID + $query->bindValue(':id', $post['id'], PDO::PARAM_INT); + + // Thread (`parentid`) + if($post['parentid'] == 0) + $query->bindValue(':thread', null, PDO::PARAM_NULL); + else + $query->bindValue(':thread', (int)$post['parentid'], PDO::PARAM_INT); + + // Name + if(empty($post['name'])) + $post['name'] = $config['anonymous']; + $query->bindValue(':name', $post['name'], PDO::PARAM_INT); + + // Trip + if(empty($post['tripcode'])) + $query->bindValue(':trip', null, PDO::PARAM_NULL); + else + $query->bindValue(':trip', $post['tripcode'], PDO::PARAM_STR); + + // Email + $query->bindValue(':email', $post['email'], PDO::PARAM_STR); + + // Subject + $query->bindValue(':subject', $post['subject'], PDO::PARAM_STR); + + // Body (`message`) + $query->bindValue(':body', convert_markup($post['message']), PDO::PARAM_STR); + + // File + if(empty($post['file']) || $post['file'] == 'removed') { + if($post['file'] == 'removed') + $query->bindValue(':file', 'deleted', PDO::PARAM_STR); + else + $query->bindValue(':file', null, PDO::PARAM_NULL); + $query->bindValue(':width', null, PDO::PARAM_NULL); + $query->bindValue(':height', null, PDO::PARAM_NULL); + $query->bindValue(':filesize', null, PDO::PARAM_NULL); + $query->bindValue(':filename', null, PDO::PARAM_NULL); + $query->bindValue(':filehash', null, PDO::PARAM_NULL); + $query->bindValue(':thumb', null, PDO::PARAM_NULL); + $query->bindValue(':thumbwidth', null, PDO::PARAM_NULL); + $query->bindValue(':thumbheight', null, PDO::PARAM_NULL); + } else { + $query->bindValue(':file', $post['file'] . '.' . $post['file_type'], PDO::PARAM_STR); + $query->bindValue(':width', $post['image_w'], PDO::PARAM_INT); + $query->bindValue(':height', $post['image_h'], PDO::PARAM_INT); + $query->bindValue(':filesize', $post['file_size'], PDO::PARAM_INT); + $query->bindValue(':filename', $post['file_original'] . '.' . $post['file_type'], PDO::PARAM_STR); + // They use MD5; we use SHA1 by default. + $query->bindValue(':filehash', null, PDO::PARAM_NULL); + + $query->bindValue(':thumb', $post['file'] . '.' . $post['file_type'], PDO::PARAM_STR); + $query->bindValue(':thumbwidth', $post['thumb_w'], PDO::PARAM_INT); + $query->bindValue(':thumbheight', $post['thumb_h'], PDO::PARAM_INT); + + // Copy file + $file_path = $kusabaxc['root'] . '/' . $board . '/src/' . $post['file'] . '.' . $post['file_type']; + $thumb_path = $kusabaxc['root'] . '/' . $board . '/thumb/' . $post['file'] . 's.' . $post['file_type']; + + $to_file_path = sprintf($config['board_path'], $board) . $config['dir']['img'] . $post['file'] . '.' . $post['file_type']; + $to_thumb_path = sprintf($config['board_path'], $board) . $config['dir']['thumb'] . $post['file'] . '.' . $post['file_type']; + + if(!file_exists($to_file_path)) { + $log[] = 'Copying file: ' . $file_path . ''; + if(!@copy($file_path, $to_file_path)) { + $err = error_get_last(); + $log[] = 'Could not copy ' . $file_path . ': ' . $err['message']; + } + } + + if(!file_exists($to_thumb_path)) { + $log[] = 'Copying file: ' . $thumb_path . ''; + if(!@copy($thumb_path, $to_thumb_path)) { + $err = error_get_last(); + $log[] = 'Could not copy ' . $thumb_path. ': ' . $err['message']; + } + } + } + + // IP + $ip = md5_decrypt($post['ip'], $kusabaxc['randomseed']); + if(!preg_match('/^\d+\.\d+\.\d+\.\d+$/', $ip)) { + // Invalid IP address. Wrong KU_RANDOMSEED? + + $log[] = 'Invalid IP address returned after decryption. Wrong KU_RANDOMSEED?'; + $ip = '0.0.0.0'; // just set it to something valid and continue + } + $query->bindValue(':ip', $ip, PDO::PARAM_STR); + + // Time (`timestamp`) + $query->bindValue(':time', $post['timestamp'], PDO::PARAM_INT); + + // Bump (`bumped`) + $query->bindValue(':bump', $post['bumped'], PDO::PARAM_INT); + + // Locked + $query->bindValue(':locked', $post['locked'], PDO::PARAM_INT); + + // Sticky + $query->bindValue(':sticky', $post['stickied'], PDO::PARAM_INT); + + // Stuff we can't do (yet) + $query->bindValue(':embed', null, PDO::PARAM_NULL); + $query->bindValue(':password', null, PDO::PARAM_NULL); + $query->bindValue(':capcode', null, PDO::PARAM_NULL); + + // Insert post + $query->execute() or $log[] = 'Error: ' . db_error($query); + } + + // News + $k_query = $kusabax->query('SELECT * FROM `' . $kusabaxc['db']['prefix'] . 'front` WHERE `page` = 0'); + while($news = $k_query->fetch()) { + // Check if already exists + $query = prepare("SELECT 1 FROM `news` WHERE `body` = :body AND `time` = :time"); + $query->bindValue(':time', $news['timestamp'], PDO::PARAM_INT); + $query->bindValue(':body', $news['message'], PDO::PARAM_STR); + $query->execute() or error(db_error($query)); + if($query->fetch()) + continue; + + $query = prepare("INSERT INTO `news` VALUES (NULL, :name, :time, :subject, :body)"); + $query->bindValue(':name', $news['poster'], PDO::PARAM_STR); + $query->bindValue(':time', $news['timestamp'], PDO::PARAM_INT); + $query->bindValue(':subject', $news['subject'], PDO::PARAM_STR); + $query->bindValue(':body', $news['message'], PDO::PARAM_STR); + $query->execute() or $log[] = 'Error: ' . db_error($query); + } + + $page['body'] = '

Migrating…

'; + foreach($log as &$l) { + $page['body'] .= $l . '
'; + } + $page['body'] .= '

'; + + echo Element('page.html', $page); + + -- cgit v1.3 From 65996db1c2e43d3e1f0c8e6c12391fbbcadbb099 Mon Sep 17 00:00:00 2001 From: Michael Save Date: Thu, 15 Mar 2012 00:39:04 +1100 Subject: KusabaX migration script is now compatible with v0.9.5 Do embedding, capcodes Cleaner config --- migration/kusabax.php | 116 +++++++++++++++++++++++++++++++++++--------------- 1 file changed, 81 insertions(+), 35 deletions(-) (limited to 'migration/kusabax.php') diff --git a/migration/kusabax.php b/migration/kusabax.php index eed12e0a..69579ffc 100755 --- a/migration/kusabax.php +++ b/migration/kusabax.php @@ -1,28 +1,36 @@  Array('timeout' => 5, 'persistent' => false)); - $kusabaxc['db']['type'] = 'mysql'; - $kusabaxc['db']['server'] = 'localhost'; - $kusabaxc['db']['user'] = ''; - $kusabaxc['db']['password'] = ''; - $kusabaxc['db']['database'] = ''; - // KusabaX table prefix - $kusabaxc['db']['prefix'] = ''; - // Anything more to add to the DSN string (eg. port=xxx;foo=bar) - $kusabaxc['db']['dsn'] = ''; - // From your KusabaX config; needed to decode IP addresses - $kusabaxc['randomseed'] = ''; //KU_RANDOMSEED - // KusabaX directory (without trailing slash) - $kusabaxc['root'] = '/var/www/kusabax'; + // Path to KusabaX configuration file + $kusabaxc['config'] = '../kusabax/config.php'; + + /* End config */ - /* End Config */ + $kusabaxc['config'] = '/home/savetheinternet/public_html/kusabax/config.php'; - if(empty($kusabaxc['db']['user'])) - die('Did you forget to configure the script?'); - // Infinite timeout - set_time_limit(0); + if(!isset($kusabaxc['config']) || empty($kusabaxc['config'])) + error('Did you forget to configure the script?'); + + // Load KusabaX config + require $kusabaxc['config']; + + if(KU_DBTYPE != 'mysql' && KU_DBTYPE != 'mysqli') + error('Database type ' . KU_DBTYPE . ' not supported!'); + + $kusabaxc['db']['type'] = 'mysql'; + $kusabaxc['db']['server'] = KU_DBHOST; + $kusabaxc['db']['user'] = KU_DBUSERNAME; + $kusabaxc['db']['password'] = KU_DBPASSWORD; + $kusabaxc['db']['database'] = KU_DBDATABASE; + $kusabaxc['db']['dsn'] = ''; + $kusabaxc['db']['timeout'] = 5; + $kusabaxc['db']['persistent'] = false; + // KusabaX functions function md5_decrypt($enc_text, $password, $iv_len = 16) { @@ -75,6 +83,8 @@ $__temp = $config['db']; $config['db'] = $kusabaxc['db']; + sql_open(); + // Get databse link $kusabax = $pdo; // Clear @@ -84,7 +94,7 @@ $config['db'] = $__temp; unset($__temp); - $k_query = $kusabax->query('SELECT * FROM `' . $kusabaxc['db']['prefix'] . 'boards`'); + $k_query = $kusabax->query('SELECT * FROM `' . KU_DBPREFIX . 'boards`'); $boards = listBoards(); // Copy boards table, briefly @@ -121,9 +131,8 @@ openBoard($board['name']); } - - $k_query = $kusabax->query('SELECT * FROM `' . $kusabaxc['db']['prefix'] . 'posts` WHERE `IS_DELETED` = 0'); - while($post = $k_query->fetch()) { + $k_query = $kusabax->query('SELECT `' . KU_DBPREFIX . 'posts`.*, `' . KU_DBPREFIX . '`.`type` FROM `' . KU_DBPREFIX . 'posts` LEFT JOIN `' . KU_DBPREFIX . 'staff` ON `posterauthority` = `' . KU_DBPREFIX . 'staff`.`id` WHERE `IS_DELETED` = 0') or error(db_error($kusabax)); + while($post = $k_query->fetch(PDO::FETCH_ASSOC)) { if(!isset($kusabax_boards[(int)$post['boardid']])) { // Board doesn't exist... continue; @@ -132,7 +141,10 @@ $log[] = 'Replicating post ' . $post['id'] . ' on /' . $board . '/'; - $query = prepare(sprintf("INSERT INTO `posts_%s` VALUES (:id, :thread, :subject, :email, :name, :trip, :capcode, :body, :time, :bump, :thumb, :thumbwidth, :thumbheight, :file, :width, :height, :filesize, :filename, :filehash, :password, :ip, :sticky, :locked, 0, :embed)", $board)); + $query = prepare(sprintf("INSERT INTO `posts_%s` VALUES + ( + :id, :thread, :subject, :email, :name, :trip, :capcode, :body, NULL, :time, :time, :thumb, :thumbwidth, :thumbheight, :file, :width, :height, :filesize, :filename, :filehash, :password, :ip, :sticky, :locked, 0, :embed + )", $board)); // Post ID $query->bindValue(':id', $post['id'], PDO::PARAM_INT); @@ -146,7 +158,7 @@ // Name if(empty($post['name'])) $post['name'] = $config['anonymous']; - $query->bindValue(':name', $post['name'], PDO::PARAM_INT); + $query->bindValue(':name', trim($post['name']), PDO::PARAM_STR); // Trip if(empty($post['tripcode'])) @@ -155,14 +167,16 @@ $query->bindValue(':trip', $post['tripcode'], PDO::PARAM_STR); // Email - $query->bindValue(':email', $post['email'], PDO::PARAM_STR); + $query->bindValue(':email', trim($post['email']), PDO::PARAM_STR); // Subject - $query->bindValue(':subject', $post['subject'], PDO::PARAM_STR); + $query->bindValue(':subject', trim($post['subject']), PDO::PARAM_STR); // Body (`message`) $query->bindValue(':body', convert_markup($post['message']), PDO::PARAM_STR); + $embed_code = false; + // File if(empty($post['file']) || $post['file'] == 'removed') { if($post['file'] == 'removed') @@ -177,6 +191,31 @@ $query->bindValue(':thumb', null, PDO::PARAM_NULL); $query->bindValue(':thumbwidth', null, PDO::PARAM_NULL); $query->bindValue(':thumbheight', null, PDO::PARAM_NULL); + } elseif($post['file_size'] == 0 && empty($post['file_md5'])) { + // embed + $query->bindValue(':file', null, PDO::PARAM_NULL); + $query->bindValue(':width', null, PDO::PARAM_NULL); + $query->bindValue(':height', null, PDO::PARAM_NULL); + $query->bindValue(':filesize', null, PDO::PARAM_NULL); + $query->bindValue(':filename', null, PDO::PARAM_NULL); + $query->bindValue(':filehash', null, PDO::PARAM_NULL); + $query->bindValue(':thumb', null, PDO::PARAM_NULL); + $query->bindValue(':thumbwidth', null, PDO::PARAM_NULL); + $query->bindValue(':thumbheight', null, PDO::PARAM_NULL); + + if($post['file_type'] == 'you') { + // youtube + + foreach($config['embedding'] as $embed) { + if(strpos($embed[0], 'youtube\.com') !== false) { + $embed_code = preg_replace($embed[0], $embed[1], 'http://youtube.com/watch?v=' . $post['file']); + $embed_code = str_replace('%%tb_width%%', $config['embed_width'], $embed_code); + $embed_code = str_replace('%%tb_height%%', $config['embed_height'], $embed_code); + + $query->bindValue(':embed', $embed_code, PDO::PARAM_STR); + } + } + } } else { $query->bindValue(':file', $post['file'] . '.' . $post['file_type'], PDO::PARAM_STR); $query->bindValue(':width', $post['image_w'], PDO::PARAM_INT); @@ -191,8 +230,8 @@ $query->bindValue(':thumbheight', $post['thumb_h'], PDO::PARAM_INT); // Copy file - $file_path = $kusabaxc['root'] . '/' . $board . '/src/' . $post['file'] . '.' . $post['file_type']; - $thumb_path = $kusabaxc['root'] . '/' . $board . '/thumb/' . $post['file'] . 's.' . $post['file_type']; + $file_path = KU_BOARDSDIR . $board . '/src/' . $post['file'] . '.' . $post['file_type']; + $thumb_path = KU_BOARDSDIR . $board . '/thumb/' . $post['file'] . 's.' . $post['file_type']; $to_file_path = sprintf($config['board_path'], $board) . $config['dir']['img'] . $post['file'] . '.' . $post['file_type']; $to_thumb_path = sprintf($config['board_path'], $board) . $config['dir']['thumb'] . $post['file'] . '.' . $post['file_type']; @@ -214,8 +253,11 @@ } } + if(!$embed_code) + $query->bindValue(':embed', null, PDO::PARAM_NULL); + // IP - $ip = md5_decrypt($post['ip'], $kusabaxc['randomseed']); + $ip = md5_decrypt($post['ip'], KU_RANDOMSEED); if(!preg_match('/^\d+\.\d+\.\d+\.\d+$/', $ip)) { // Invalid IP address. Wrong KU_RANDOMSEED? @@ -236,17 +278,21 @@ // Sticky $query->bindValue(':sticky', $post['stickied'], PDO::PARAM_INT); - // Stuff we can't do (yet) - $query->bindValue(':embed', null, PDO::PARAM_NULL); + // Impossible $query->bindValue(':password', null, PDO::PARAM_NULL); - $query->bindValue(':capcode', null, PDO::PARAM_NULL); + + if($post['posterauthority']) { + $query->bindValue(':capcode', $post['type'] == 1 ? 'Admin' : 'Mod', PDO::PARAM_STR); + } else { + $query->bindValue(':capcode', null, PDO::PARAM_NULL); + } // Insert post $query->execute() or $log[] = 'Error: ' . db_error($query); } // News - $k_query = $kusabax->query('SELECT * FROM `' . $kusabaxc['db']['prefix'] . 'front` WHERE `page` = 0'); + $k_query = $kusabax->query('SELECT * FROM `' . KU_DBPREFIX . 'front` WHERE `page` = 0'); while($news = $k_query->fetch()) { // Check if already exists $query = prepare("SELECT 1 FROM `news` WHERE `body` = :body AND `time` = :time"); @@ -264,7 +310,7 @@ $query->execute() or $log[] = 'Error: ' . db_error($query); } - $page['body'] = '

Migrating…

'; + $page['body'] = '

Migrating…

'; foreach($log as &$l) { $page['body'] .= $l . '
'; } -- cgit v1.3 From 4c9440b1d04bbe785e6b44a6325350da6c90f951 Mon Sep 17 00:00:00 2001 From: Michael Save Date: Thu, 15 Mar 2012 00:42:02 +1100 Subject: removed my config location from default --- migration/kusabax.php | 15 +++++++-------- 1 file changed, 7 insertions(+), 8 deletions(-) (limited to 'migration/kusabax.php') diff --git a/migration/kusabax.php b/migration/kusabax.php index 69579ffc..789802f2 100755 --- a/migration/kusabax.php +++ b/migration/kusabax.php @@ -5,13 +5,17 @@ /* Config */ - // Path to KusabaX configuration file - $kusabaxc['config'] = '../kusabax/config.php'; + // Path to KusabaX configuration file (config.php) + $kusabaxc['config'] = ''; /* End config */ - $kusabaxc['config'] = '/home/savetheinternet/public_html/kusabax/config.php'; + require 'inc/functions.php'; + require 'inc/display.php'; + require 'inc/template.php'; + require 'inc/database.php'; + require 'inc/user.php'; if(!isset($kusabaxc['config']) || empty($kusabaxc['config'])) error('Did you forget to configure the script?'); @@ -65,11 +69,6 @@ return $body; } - require 'inc/functions.php'; - require 'inc/display.php'; - require 'inc/template.php'; - require 'inc/database.php'; - require 'inc/user.php'; $step = isset($_GET['step']) ? round($_GET['step']) : 0; $page = Array( 'config' => $config, -- cgit v1.3 From f3d784de510fc550eb384a4cefe58c76f6e9c3f4 Mon Sep 17 00:00:00 2001 From: Michael Save Date: Thu, 15 Mar 2012 18:42:17 +1100 Subject: Fixed bug redeclaring gettext functions. Edit KusabaX config before including it. --- migration/kusabax.php | 22 ++++++++++++++++++++-- 1 file changed, 20 insertions(+), 2 deletions(-) (limited to 'migration/kusabax.php') diff --git a/migration/kusabax.php b/migration/kusabax.php index 789802f2..1561214f 100755 --- a/migration/kusabax.php +++ b/migration/kusabax.php @@ -6,8 +6,9 @@ /* Config */ // Path to KusabaX configuration file (config.php) + // Warning: This script will ignore anything past the first `require`. This is only a problem if you've extensively modified your config.php $kusabaxc['config'] = ''; - + /* End config */ @@ -20,8 +21,25 @@ if(!isset($kusabaxc['config']) || empty($kusabaxc['config'])) error('Did you forget to configure the script?'); + if(!file_exists($kusabaxc['config']) || !is_readable($kusabaxc['config'])) + error('Kusaba X config file doesn\'t exist or I can\'t read it.'); + + $temp = tempnam($config['tmp'], 'kusabax'); + + $raw_config = file_get_contents($kusabaxc['config']); + + // replace __FILE__ with the actual filename + $raw_config = str_replace('__FILE__', '\'' . addslashes(realpath($kusabaxc['config'])) . '\'', $raw_config); + + // remove anything after the first `require` + $raw_config = substr($raw_config, 0, strpos($raw_config, 'require KU_ROOTDIR')); + + file_put_contents($temp, $raw_config); + // Load KusabaX config - require $kusabaxc['config']; + require $temp; + + unlink($temp); if(KU_DBTYPE != 'mysql' && KU_DBTYPE != 'mysqli') error('Database type ' . KU_DBTYPE . ' not supported!'); -- cgit v1.3