Commit 80d9d395 authored by Nemo Ma's avatar Nemo Ma

Initial Commit

Initial Commit
parent 86334386
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta content="zh-cn" http-equiv="Content-Language" />
<meta content="text/html; charset=utf-8" http-equiv="Content-Type" />
<title>系统崩溃了……</title>
<style type="text/css">
.style1 {
text-align: center;
}
.style2 {
text-align: center;
font-size: x-large;
}
</style>
</head>
<body>
<p class="style2"><strong>系统崩溃了……</strong></p>
<p class="style1"><img src="http://x.azurerondo.tk/assets/500.jpg" align="middle" /></p>
<p class="style1">『奇怪的事情发生了……』</p>
<p class="style1">『请等待我们查出问题所在后进行维修。』</p>
<p class="style1">特此通告。&nbsp; By 冴月麟</p>
\ No newline at end of file
This diff is collapsed.
===== Serissa to Kusaba X 0.8 Conversion Script =====
=== How to use ===
1. Copy s2xk.php and s2kx.sql to the folder containing config.php on your server.
2. Run s2kx.php.
3. Download the full version Kusaba X from http://kusabax.org
4. Make a backup of your current config.php
5. Extract the files that you downloaded where you want them installed. Overwrite everything.
6. If everything went right, congratulations! You are now running Kusaba X 0.8!
== When upgrading to Kusaba X 0.9 ==
7. Once converted, you will need to run the upgrade scripts to upgrade from Kusaba X 0.8 to Kusabax 0.9. These scripts are located in the OTHER directory.
\ No newline at end of file
<?php
/**
* @ignore
*/
################################################################################
# kusaba MySQL Importing Script v1.0 is © 2007 David Steven-Jennings (relixx@gmail.com)
#
# This work is licensed under the Creative Commons Attribution-ShareAlike 2.5 License.
# To view a copy of this license, visit http://creativecommons.org/licenses/by-sa/2.5/
# or send a letter to Creative Commons, 543 Howard Street, 5th Floor, San Francisco,
# California, 94105, USA.
#
# You can modify this script as you wish just as long as this box stays intact. If
# you do modify this script please state that you have done so and give me credit
# as the author of the original script (with my email address intact).
################################################################################
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="pl" lang="pl">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>MySQL Batch File Importing Script</title>
<style type="text/css">
body { font-family: sans-serif; font-size: 75%; background: #ffe }
a { text-decoration: none; color: #550 }
h1,h2 { margin: 0px; background: #fca }
h1 { font-size: 150% }
h2 { font-size: 100%; margin-top: 1em }
.hl { font-style: italic }
.plus { float: right; font-size: 8px; font-weight: normal; padding: 1px 4px 2px 4px; margin: 0px 0px; background: #eb9; color: #000; border: 1px solid #da8; cursor: hand; cursor: pointer }
.plus:hover { background: #da8; border: 1px solid #c97 }
ul { list-style: none; padding-left: 0px; margin: 0px }
li { margin: 0px }
li:hover { background: #fec; }
li a { display: block; width: 100%; }
</style>
<link rel="shortcut icon" href="/favicon.ico" />
</head>
<body>
<div style="text-align:center;"><h1>MySQL Batch File Importing Script</h1></div>
<?php
if (!isset($_POST["confirm"])) {
?>
<br /><br />
<font color="#FF0000"><strong>WARNING!</strong></font><br /><br />
The purpose of this script is to quickly and easily run the commands contained within the kusaba SQL file, and is
to be used if you are installing the script for the first time or want to recreate the tables, for whatever reason.<br />
Running this script will delete any related tables and their data (including the admin files). I offer this script as-is and cannot be held
responsible for any damages caused or accidental loss of data incurred as a result of running this script.<br />
Before running this script, make sure that:<br />
<ul>
<li>-&gt; You have set up the database connection and that it is working</li>
<li>-&gt; You have created the database</li>
<li>-&gt; You have created the database user and set up the config file appropriately</li>
</ul>
<form action="install-mysql.php" method="post">
<br />
<input type="checkbox" name="confirm"> By clicking this check box I agree that the author of this script cannot be held responsible for my own stupidity if something goes wrong.<br /><br /><br />
<input type="submit" value="Import the MySQL batch file">
</form>
<?php
} else {
require('config.php');
$reqiredtables = array("ads","announcements","banlist","bannedhashes","blotter","boards","board_filetypes","embeds","events","filetypes","front","loginattempts","modlog","module_settings","posts","reports","sections","staff","watchedthreads","wordfilter");
foreach ($reqiredtables as $tablename) {
if (mysql_table_exists(KU_DBDATABASE,KU_DBPREFIX.$tablename)) {
die("Table <strong>".KU_DBPREFIX.$tablename."</strong> already exists in the database! Drop it, and re run this script.");
}
}
// Lets open the file for reading! :)
echo '<h2>SQL Batch File Processing</h2>';
echo 'Locating \'kusaba_freshinstall.mysql.sql\'... ';
if (file_exists('kusaba_freshinstall.mysql.sql') && (filesize('kusaba_freshinstall.mysql.sql') > 0)) {
echo 'found.<br />';
$sqlfile = fopen('kusaba_freshinstall.mysql.sql', 'r');
echo 'File opened.<br />';
$readdata = fread($sqlfile, filesize('kusaba_freshinstall.mysql.sql'));
$readdata = str_replace('PREFIX_',KU_DBPREFIX,$readdata);
fclose($sqlfile);
echo 'Contents read.<br />';
}else{
echo '<font color=red>error.</font> ';
die('An error occured. kusaba_freshinstall.mysql.sql does not exist in this directory or it is 0 bytes big :( Barring that, do you have read permissions for the directory?');
}
$tc_db->Execute("ALTER DATABASE `" . KU_DBDATABASE . "` CHARACTER SET utf8 COLLATE utf8_general_ci");
// Explodes the array
$sqlarray = explode("\n", $readdata);
// Loops through the array and deletes the non-SQL bits in the file, which is basically the '--' lines and the lines with no content
foreach ($sqlarray as $key => $sqldata) {
if (strstr($sqldata, '--') || strlen($sqldata) == 0){
unset($sqlarray[$key]);
}
}
// Here we are imploding everything together again...
$readdata = implode('',$sqlarray);
// ...then exploding it again. At this point we will have an array where each key's value is a one of the CREATE statements
$sqlarray = explode(';',$readdata);
echo 'File contents have been formatted for use with mysql_query.<br />';
// Lets drop any existing tables in the database
$listoftables = $tc_db->GetAll("show tables from ".KU_DBDATABASE."");
echo '<h2>Table Creation</h2>';
// Lets now loop through the array and create each table
foreach ($sqlarray as $sqldata) {
if (strlen($sqldata) !== 0) { // As the array was exploded on ';', the last ';' caused a blank element to be created as there was no data after it :p
// The following three lines retrieve the table name of the table from the sql command. It's dynamic so it doesn't matter how many tables need to be created
// As long as each CREATE TABLE statement stays in the format CREATE TABLE `table` then this part will work.
$pos1 = strpos($sqldata, '`');
$pos2 = strpos($sqldata, '`', $pos1 + 1);
$tablename = substr($sqldata, $pos1+1, ($pos2-$pos1)-1);
echo "Attempting to create table '$tablename'... ";
if($tc_db->Execute($sqldata)) {
echo "success.<br />";
} else {
echo "<font color='red'>failed</font>. Enable debugging by setting KU_DEBUG to true to see this error.<br />";
die ("Table creation failed. Please rerun this script again or attempt to fix the problem if you know how to solve it.");
}
}
}
// All done :)
echo '<br />SQL commands have finished. If all is well, proceed to the <a href="install.php"><strong><u>installation file</u></strong></a> but don\'t forget to delete this file!';
}
function mysql_table_exists($database, $tableName)
{
global $tc_db;
$tables = array();
$tablesResults = $tc_db->GetAll("SHOW TABLES FROM `$database`;");
foreach ($tablesResults AS $row) $tables[] = $row[0];
return(in_array($tableName, $tables));
}
?>
</body>
</html>
\ No newline at end of file
<?php
/**
* @ignore
*/
################################################################################
# kusaba PostgreSQL Importing Script v1.0 is © 2007 David Steven-Jennings (relixx@gmail.com)
#
# This work is licensed under the Creative Commons Attribution-ShareAlike 2.5 License.
# To view a copy of this license, visit http://creativecommons.org/licenses/by-sa/2.5/
# or send a letter to Creative Commons, 543 Howard Street, 5th Floor, San Francisco,
# California, 94105, USA.
#
# You can modify this script as you wish just as long as this box stays intact. If
# you do modify this script please state that you have done so and give me credit
# as the author of the original script (with my email address intact).
################################################################################
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="pl" lang="pl">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>PostgreSQL Batch File Importing Script</title>
<style type="text/css">
body { font-family: sans-serif; font-size: 75%; background: #ffe }
a { text-decoration: none; color: #550 }
h1,h2 { margin: 0px; background: #fca }
h1 { font-size: 150% }
h2 { font-size: 100%; margin-top: 1em }
.hl { font-style: italic }
.plus { float: right; font-size: 8px; font-weight: normal; padding: 1px 4px 2px 4px; margin: 0px 0px; background: #eb9; color: #000; border: 1px solid #da8; cursor: hand; cursor: pointer }
.plus:hover { background: #da8; border: 1px solid #c97 }
ul { list-style: none; padding-left: 0px; margin: 0px }
li { margin: 0px }
li:hover { background: #fec; }
li a { display: block; width: 100%; }
</style>
<link rel="shortcut icon" href="/favicon.ico" />
</head>
<body>
<div style="text-align:center;"><h1>PostgreSQL Batch File Importing Script</h1></div>
<?php
if (!isset($_POST["confirm"])) {
?>
<br /><br />
<font color="#FF0000"><strong>WARNING!</strong></font><br /><br />
The purpose of this script is to quickly and easily run the commands contained within the kusaba SQL file, and is
to be used if you are installing the script for the first time or want to recreate the tables, for whatever reason.<br />
Running this script will delete any related tables and their data (including the admin files). I offer this script as-is and cannot be held
responsible for any damages caused or accidental loss of data incurred as a result of running this script.<br />
Before running this script, make sure that:<br />
<ul>
<li>-&gt; You have set up the database connection and that it is working</li>
<li>-&gt; You have created the database</li>
<li>-&gt; You have created the database user and set up the config file appropriately</li>
</ul>
<form action="install-pgsql.php" method="post">
<br />
<input type="checkbox" name="confirm"> By clicking this check box I agree that the author of this script cannot be held responsible for my own stupidity if something goes wrong.<br /><br /><br />
<input type="submit" value="Import the PostgreSQL batch file">
</form>
<?php
} else {
require('config.php');
$reqiredtables = array("ads","announcements","banlist","bannedhashes","blotter","boards","board_filetypes","embeds","events","filetypes","front","loginattempts","modlog","module_settings","posts","reports","sections","staff","watchedthreads","wordfilter");
foreach ($reqiredtables as $tablename) {
if (pgsql_table_exists(KU_DBDATABASE,KU_DBPREFIX.$tablename)) {
die("Table <strong>".KU_DBPREFIX.$tablename."</strong> already exists in the database! Drop it, and re run this script.");
}
}
// Lets open the file for reading! :)
echo '<h2>SQL Batch File Processing</h2>';
echo 'Locating \'kusaba_freshinstall.postgres.sql\'... ';
if (file_exists('kusaba_freshinstall.postgres.sql') && (filesize('kusaba_freshinstall.postgres.sql') > 0)) {
echo 'found.<br />';
$sqlfile = fopen('kusaba_freshinstall.postgres.sql', 'r');
echo 'File opened.<br />';
$readdata = fread($sqlfile, filesize('kusaba_freshinstall.postgres.sql'));
$readdata = str_replace('PREFIX_',KU_DBPREFIX,$readdata);
fclose($sqlfile);
echo 'Contents read.<br />';
}else{
echo '<font color=red>error.</font> ';
die('An error occured. kusaba_freshinstall.postgres.sql does not exist in this directory or it is 0 bytes big :( Barring that, do you have read permissions for the directory?');
}
// Explodes the array
$sqlarray = explode("\n", $readdata);
// Loops through the array and deletes the non-SQL bits in the file, which is basically the '--' lines and the lines with no content
foreach ($sqlarray as $key => $sqldata) {
if (strstr($sqldata, '--') || strlen($sqldata) == 0){
unset($sqlarray[$key]);
}
}
// Here we are imploding everything together again...
$readdata = implode('',$sqlarray);
// ...then exploding it again. At this point we will have an array where each key's value is a one of the CREATE statements
$sqlarray = explode(';',$readdata);
echo 'File contents have been formatted for use with pg_query.<br />';
// Lets drop any existing tables in the database
$listoftables = $tc_db->GetAll("SELECT table_name FROM information_schema.tables WHERE table_schema='public' AND table_type='BASE TABLE'");
echo '<h2>Table Creation</h2>';
// Lets now loop through the array and create each table
foreach ($sqlarray as $sqldata) {
if (strlen($sqldata) !== 0) { // As the array was exploded on ';', the last ';' caused a blank element to be created as there was no data after it :p
// The following three lines retrieve the table name of the table from the sql command. It's dynamic so it doesn't matter how many tables need to be created
// As long as each CREATE TABLE statement stays in the format CREATE TABLE `table` then this part will work.
$sqldata = str_replace(":semicolon:", ";", $sqldata);
if (strpos($sqldata, "CREATE TABLE") !== false) {
preg_match("/CREATE TABLE (.*?) \(/", $sqldata, $tablename);
echo "Attempting to create table '{$tablename[1]}'... ";
}
else {
echo "Attempting to run query '".$sqldata."'... ";
}
if($tc_db->Execute($sqldata)) {
echo "success.<br />";
} else {
echo "<font color='red'>failed</font>. Enable debugging by setting KU_DEBUG to true to see this error.<br />";
die ("Table creation failed. Please rerun this script again or attempt to fix the problem if you know how to solve it.");
}
}
}
// All done :)
echo '<br />SQL commands have finished. If all is well, proceed to the <a href="install.php"><strong><u>installation file</u></strong></a> but don\'t forget to delete this file!';
}
function pgsql_table_exists($database, $tableName) {
global $tc_db;
$tables = array();
$tablesResults = $tc_db->GetAll("SELECT table_name FROM information_schema.tables WHERE table_schema='public' AND table_type='BASE TABLE'");
foreach ($tablesResults AS $row) $tables[] = $row[0];
return(in_array($tableName, $tables));
}
?>
</body>
</html>
<?php
/**
* @ignore
*/
################################################################################
# kusaba SQLite Importing Script v1.0 is © 2007 David Steven-Jennings (relixx@gmail.com)
#
# This work is licensed under the Creative Commons Attribution-ShareAlike 2.5 License.
# To view a copy of this license, visit http://creativecommons.org/licenses/by-sa/2.5/
# or send a letter to Creative Commons, 543 Howard Street, 5th Floor, San Francisco,
# California, 94105, USA.
#
# You can modify this script as you wish just as long as this box stays intact. If
# you do modify this script please state that you have done so and give me credit
# as the author of the original script (with my email address intact).
################################################################################
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="pl" lang="pl">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>SQLite Batch File Importing Script</title>
<style type="text/css">
body { font-family: sans-serif; font-size: 75%; background: #ffe }
a { text-decoration: none; color: #550 }
h1,h2 { margin: 0px; background: #fca }
h1 { font-size: 150% }
h2 { font-size: 100%; margin-top: 1em }
.hl { font-style: italic }
.plus { float: right; font-size: 8px; font-weight: normal; padding: 1px 4px 2px 4px; margin: 0px 0px; background: #eb9; color: #000; border: 1px solid #da8; cursor: hand; cursor: pointer }
.plus:hover { background: #da8; border: 1px solid #c97 }
ul { list-style: none; padding-left: 0px; margin: 0px }
li { margin: 0px }
li:hover { background: #fec; }
li a { display: block; width: 100%; }
</style>
<link rel="shortcut icon" href="/favicon.ico" />
</head>
<body>
<div style="text-align:center;"><h1>SQLite Batch File Importing Script</h1></div>
<?php
if (!isset($_POST["confirm"])) {
?>
<br /><br />
<font color="#FF0000"><strong>WARNING!</strong></font><br /><br />
The purpose of this script is to quickly and easily run the commands contained within the kusaba SQL file, and is
to be used if you are installing the script for the first time or want to recreate the tables, for whatever reason.<br />
Running this script will delete any related tables and their data (including the admin files). I offer this script as-is and cannot be held
responsible for any damages caused or accidental loss of data incurred as a result of running this script.<br />
Before running this script, make sure that:<br />
<ul>
<li>-&gt; You have set up the database connection and that it is working</li>
<li>-&gt; You have created the database</li>
<li>-&gt; You have created the database user and set up the config file appropriately</li>
</ul>
<form action="install-sqlite.php" method="post">
<br />
<input type="checkbox" name="confirm"> By clicking this check box I agree that the author of this script cannot be held responsible for my own stupidity if something goes wrong.<br /><br /><br />
<input type="submit" value="Import the SQLite batch file">
</form>
<?php
} else {
require('config.php');
$reqiredtables = array("ads","announcements","banlist","bannedhashes","blotter","boards","board_filetypes","embeds","events","filetypes","front","loginattempts","modlog","module_settings","posts","reports","sections","staff","watchedthreads","wordfilter");
foreach ($reqiredtables as $tablename) {
if (sqlite_table_exists(KU_DBDATABASE,KU_DBPREFIX.$tablename)) {
die("Table <strong>".KU_DBPREFIX.$tablename."</strong> already exists in the database! Drop it, and re run this script.");
}
}
// Lets open the file for reading! :)
echo '<h2>SQL Batch File Processing</h2>';
echo 'Locating \'kusaba_freshinstall.sqlite.sql\'... ';
if (file_exists('kusaba_freshinstall.sqlite.sql') && (filesize('kusaba_freshinstall.sqlite.sql') > 0)) {
echo 'found.<br />';
$sqlfile = fopen('kusaba_freshinstall.sqlite.sql', 'r');
echo 'File opened.<br />';
$readdata = fread($sqlfile, filesize('kusaba_freshinstall.sqlite.sql'));
$readdata = str_replace('PREFIX_',KU_DBPREFIX,$readdata);
fclose($sqlfile);
echo 'Contents read.<br />';
}else{
echo '<font color=red>error.</font> ';
die('An error occured. kusaba_freshinstall.sqlite.sql does not exist in this directory or it is 0 bytes big :( Barring that, do you have read permissions for the directory?');
}
// Explodes the array
$sqlarray = explode("\n", $readdata);
// Loops through the array and deletes the non-SQL bits in the file, which is basically the '--' lines and the lines with no content
foreach ($sqlarray as $key => $sqldata) {
if (strstr($sqldata, '--') || strlen($sqldata) == 0){
unset($sqlarray[$key]);
}
}
// Here we are imploding everything together again...
$readdata = implode('',$sqlarray);
// ...then exploding it again. At this point we will have an array where each key's value is a one of the CREATE statements
$sqlarray = explode(';',$readdata);
echo 'File contents have been formatted for use with sqlite_query.<br />';
// Lets drop any existing tables in the database
$listoftables = $tc_db->GetAll("SELECT name FROM sqlite_master WHERE type = 'table'");
echo '<h2>Table Creation</h2>';
// Lets now loop through the array and create each table
foreach ($sqlarray as $sqldata) {
if (strlen($sqldata) !== 0) { // As the array was exploded on ';', the last ';' caused a blank element to be created as there was no data after it :p
// The following three lines retrieve the table name of the table from the sql command. It's dynamic so it doesn't matter how many tables need to be created
// As long as each CREATE TABLE statement stays in the format CREATE TABLE `table` then this part will work.
$sqldata = str_replace(":semicolon:", ";", $sqldata);
if (strpos($sqldata, "CREATE TABLE") !== false) {
preg_match("/CREATE TABLE (.*?) \(/", $sqldata, $tablename);
echo "Attempting to create table '{$tablename[1]}'... ";
}
else {
echo "Attempting to run query '".$sqldata."'... ";
}
if($tc_db->Execute($sqldata)) {
echo "success.<br />";
} else {
echo "<font color='red'>failed</font>. Enable debugging by setting KU_DEBUG to true to see this error.<br />";
die ("Table creation failed. Please rerun this script again or attempt to fix the problem if you know how to solve it.");
}
}
}
// All done :)
echo '<br />SQL commands have finished. If all is well, proceed to the <a href="install.php"><strong><u>installation file</u></strong></a> but don\'t forget to delete this file!';
}
function sqlite_table_exists($database, $tableName) {
global $tc_db;
$tables = array();
$tablesResults = $tc_db->GetAll("SELECT name FROM sqlite_master WHERE type = 'table'" );
foreach ($tablesResults AS $row) $tables[] = $row[0];
return(in_array($tableName, $tables));
}
?>
</body>
</html>
\ No newline at end of file
<?php
/**
* @ignore
*/
function mysql_table_exists($database, $tableName) {
global $tc_db;
$tables = array();
$tablesResults = $tc_db->GetAll("SHOW TABLES FROM `$database`;");
foreach ($tablesResults AS $row) $tables[] = $row[0];
return(in_array($tableName, $tables));
}
function pgsql_table_exists($database, $tableName) {
global $tc_db;
$tables = array();
$tablesResults = $tc_db->GetAll(" select table_name from information_schema.tables where table_schema='public' and table_type='BASE TABLE'");
foreach ($tablesResults AS $row) $tables[] = $row[0];
return(in_array($tableName, $tables));
}
function sqlite_table_exists($database, $tableName) {
global $tc_db;
$tables = array();
$tablesResults = $tc_db->GetAll("SELECT name FROM sqlite_master WHERE type = 'table'" );
foreach ($tablesResults AS $row) $tables[] = $row[0];
return(in_array($tableName, $tables));
}
function CreateSalt() {
$chars = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789';
$salt = '';
for ($i = 0; $i < 3; ++$i) {
$salt .= $chars[mt_rand(0, strlen($chars) - 1)];
}
return $salt;
}
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="pl" lang="pl">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Kusaba X Installation</title>
<style type="text/css">
body { font-family: sans-serif; font-size: 75%; background: #ffe }
a { text-decoration: none; color: #550 }
h1,h2 { margin: 0px; background: #fca }
h1 { font-size: 150% }
h2 { font-size: 100%; margin-top: 1em }
.hl { font-style: italic }
.plus { float: right; font-size: 8px; font-weight: normal; padding: 1px 4px 2px 4px; margin: 0px 0px; background: #eb9; color: #000; border: 1px solid #da8; cursor: hand; cursor: pointer }
.plus:hover { background: #da8; border: 1px solid #c97 }
ul { list-style: none; padding-left: 0px; margin: 0px }
li { margin: 0px }
li:hover { background: #fec; }
li a { display: block; width: 100%; }
</style>
<link rel="shortcut icon" href="/favicon.ico" />
</head>
<body>
<div style="text-align:center;"><h1>Kusaba X Installation</h1></div>
<?php
echo '<h2>Checking configuration file...</h2>';
if (file_exists('config.php')) {
require 'config.php';
require KU_ROOTDIR . 'inc/functions.php';
if (KU_RANDOMSEED!="ENTER RANDOM LETTERS/NUMBERS HERE"&&KU_RANDOMSEED!="") {
echo 'Configuration appears correct.';
echo '<h2>Checking database...</h2>';
$reqiredtables = array("ads","announcements","banlist","bannedhashes","blotter","boards","board_filetypes","embeds","events","filetypes","front","loginattempts","modlog","module_settings","posts","reports","sections","staff","watchedthreads","wordfilter");
foreach ($reqiredtables as $tablename) {
if (KU_DBTYPE == 'mysql' || KU_DBTYPE == 'mysqli') {
if (!mysql_table_exists(KU_DBDATABASE,KU_DBPREFIX.$tablename)) {
die("Couldn't find the table <strong>".KU_DBPREFIX.$tablename."</strong> in the database. Please <a href=\"install-mysql.php\"><strong><u>insert the mySQL dump</u></strong></a>.");
}
}
if (KU_DBTYPE == 'postgres7' || KU_DBTYPE == 'postgres8' || KU_DBTYPE == 'postgres') {
if (!pgsql_table_exists(KU_DBDATABASE,KU_DBPREFIX.$tablename)) {
die("Couldn't find the table <strong>".KU_DBPREFIX.$tablename."</strong> in the database. Please <a href=\"install-pgsql.php\"><strong><u>insert the PostgreSQL dump</u></strong></a>.");
}
}
if (KU_DBTYPE == 'sqlite') {
if (!sqlite_table_exists(KU_DBDATABASE,KU_DBPREFIX.$tablename)) {
die("Couldn't find the table <strong>".KU_DBPREFIX.$tablename."</strong> in the database. Please <a href=\"install-sqlite.php\"><strong><u>insert the SQLite dump</u></strong></a>.");
}
}
}
echo 'Database appears correct.';
echo '<h2>Inserting default administrator account...</h2>';
$result_exists = $tc_db->GetOne("SELECT COUNT(*) FROM `".KU_DBPREFIX."staff` WHERE `username` = 'admin'");
if ($result_exists==0) {
$salt = CreateSalt();
$result = $tc_db->Execute("INSERT INTO `".KU_DBPREFIX."staff` ( `username` , `salt`, `password` , `type` , `addedon` ) VALUES ( 'admin' , '".$salt."', '".md5("admin".$salt)."' , '1' , '".time()."' )");
echo 'Account inserted.';
$result = true;
} else {
echo 'There is already an administrator account inserted.';
$result = true;
}
if ($result) {
require_once KU_ROOTDIR . 'inc/classes/menu.class.php';
$menu_class = new Menu();
$menu_class->Generate();
echo '<h2>Done!</h2>Installation has finished! The default administrator account is <strong>admin</strong> with the password of <strong>admin</strong>.<br /><br />Delete this and the install-mysql.php file from the server, then <a href="manage.php">add some boards</a>!';
echo '<br /><br /><br /><h1><font color="red">DELETE THIS AND install-mysql.php RIGHT NOW!</font></h1>';
} else {
echo 'Error inserting SQL. Please add <strong>$tc_db->debug = true;</strong> just before ?&gt; in config.php to turn on debugging, and check the error message.';
}
} else {
echo 'Please enter a random string into the <strong>KU_RANDOMSEED</strong> value.';
}
} else {
echo 'Unable to locate config.php';
}
?>
</body>
</html>
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
CREATE TABLE IF NOT EXISTS `PREFIX_front` (
`id` smallint(5) unsigned NOT NULL auto_increment,
`page` smallint(1) unsigned NOT NULL default '0',
`order` smallint(5) unsigned NOT NULL default '0',
`subject` varchar(255) NOT NULL,
`message` text NOT NULL,
`timestamp` int(20) NOT NULL,
`poster` varchar(75) NOT NULL,
`email` varchar(255) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;
CREATE TABLE IF NOT EXISTS `PREFIX_posts` (
`id` int(10) unsigned NOT NULL auto_increment,
`boardid` smallint(5) unsigned NOT NULL,
`parentid` int(10) unsigned NOT NULL default '0',
`name` varchar(255) NOT NULL,
`tripcode` varchar(30) NOT NULL,
`email` varchar(255) NOT NULL,
`subject` varchar(255) NOT NULL,
`message` text NOT NULL,
`password` varchar(255) NOT NULL,
`file` varchar(50) NOT NULL,
`file_md5` char(32) NOT NULL,
`file_type` varchar(20) NOT NULL,
`file_original` varchar(255) NOT NULL,
`file_size` int(20) NOT NULL default '0',
`file_size_formatted` varchar(75) NOT NULL,
`image_w` smallint(5) NOT NULL default '0',
`image_h` smallint(5) NOT NULL default '0',
`thumb_w` smallint(5) unsigned NOT NULL default '0',
`thumb_h` smallint(5) unsigned NOT NULL default '0',
`ip` varchar(75) NOT NULL,
`ipmd5` char(32) NOT NULL,
`tag` varchar(5) NOT NULL,
`timestamp_formatted` varchar(50) NOT NULL,
`timestamp` int(20) unsigned NOT NULL,
`stickied` tinyint(1) NOT NULL default '0',
`locked` tinyint(1) NOT NULL default '0',
`posterauthority` tinyint(1) NOT NULL default '0',
`reviewed` tinyint(1) unsigned NOT NULL default '0',
`deleted_timestamp` int(20) NOT NULL default '0',
`IS_DELETED` tinyint(1) NOT NULL default '0',
`bumped` int(20) unsigned NOT NULL default '0',
PRIMARY KEY (`boardid`,`id`),
KEY `parentid` (`parentid`),
KEY `bumped` (`bumped`),
KEY `file_md5` (`file_md5`),
KEY `stickied` (`stickied`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ;
\ No newline at end of file
<?php
/* Config */
define('KU_FULLDIR', 'change this to the same value as your KU_ROOTDIR');
define('KU_PASSWORD', 'changeme');
define('KU_THUMBWIDTH', 200);
define('KU_THUMBHEIGHT', 200);
define('KU_REPLYTHUMBWIDTH', 125);
define('KU_REPLYTHUMBHEIGHT', 125);
define('KU_CATTHUMBWIDTH', 50);
define('KU_CATTHUMBHEIGHT', 50);
if (KU_FULLDIR == 'change this to the same value as your KU_ROOTDIR' || KU_FULLDIR == '') die('You must set KU_FULLDIR!');
if (KU_PASSWORD == 'changeme' || KU_FULLDIR == '') die('You must set KU_PASSWORD!');
if ($_POST['password'] != KU_PASSWORD) die('bad password');
if (!isset($_POST['type'])) die('failure');
if ($_POST['type'] == 'thumbnail' || $_POST['type'] == 'direct') {
if (isset($_POST['file']) && isset($_POST['targetname'])) {
$target_file = KU_FULLDIR . $_POST['targetname'];
if (is_file($target_file)) die('file already exists');
if (!$handle = fopen($target_file, 'w+')) {
die('unable to copy');
}
if (fwrite($handle, base64_decode($_POST['file'])) === false) {
die('unable to copy');
}
fclose($handle);
if ($_POST['type'] == 'thumbnail') {
if ($_POST['targetthumb'] == '' || $_POST['targetthumb_c'] == '') {
@unlink($_POST['targetname']);
die('failure');
}
$target_thumb = KU_FULLDIR . $_POST['targetthumb'];
$target_thumb_catalog = KU_FULLDIR . $_POST['targetthumb_c'];
$imageDim = getimagesize($target_file);
$imgw = $imageDim[0];
$imgh = $imageDim[1];
if (($_POST['isreply'] == '0' && ($imgw > KU_THUMBWIDTH || $imgh > KU_THUMBHEIGHT)) || ($_POST['isreply'] == '1' && ($imgw > KU_REPLYTHUMBWIDTH || $imgh > KU_REPLYTHUMBHEIGHT))) {
if ($_POST['isreply'] == '0') {
if (!@createThumbnail($target_file, $target_thumb, KU_THUMBWIDTH, KU_THUMBHEIGHT)) {
@unlink($target_file);
die('unable to thumbnail');
}
} else {
if (!@createThumbnail($target_file, $target_thumb, KU_REPLYTHUMBWIDTH, KU_REPLYTHUMBHEIGHT)) {
@unlink($target_file);
die('unable to thumbnail');
}
}
} else {
if (!@createThumbnail($target_file, $target_thumb, $imgw, $imgh)) {
@unlink($target_file);
die('unable to thumbnail');
}
}
if (!@createThumbnail($target_file, $target_thumb_catalog, KU_CATTHUMBWIDTH, KU_CATTHUMBHEIGHT)) {
@unlink($target_file);
die('unable to thumbnail');
}
$imageDim_thumb = getimagesize($target_thumb);
$imgw_thumb = $imageDim_thumb[0];
$imgh_thumb = $imageDim_thumb[1];
die(serialize(array('imgw_thumb' => $imgw_thumb, 'imgh_thumb' => $imgh_thumb)));
}
die('success');
}
} elseif ($_POST['type'] == 'delete') {
unlink('src/' . $_POST['filename'] . '.' . $_POST['filetype']);
unlink('thumb/' . $_POST['filename'] . 's.' . $_POST['filetype']);
unlink('thumb/' . $_POST['filename'] . 'c.' . $_POST['filetype']);
die("\n" . 'finished');
}
/**
* @ignore
*/
function createThumbnail($name, $filename, $new_w, $new_h) {
$system=explode(".", $filename);
$system = array_reverse($system);
if (preg_match("/jpg|jpeg/", $system[0])) {
$src_img=imagecreatefromjpeg($name);
} else if (preg_match("/png/", $system[0])) {
$src_img=imagecreatefrompng($name);
} else if (preg_match("/gif/", $system[0])) {
$src_img=imagecreatefromgif($name);
} else {
return false;
}
if (!$src_img) {
echo '<br />Unable to open the uploaded image for thumbnailing. Maybe its a different filetype, and has the wrong extension?';
return false;
}
$old_x=imageSX($src_img);
$old_y=imageSY($src_img);
if ($old_x > $old_y) {
$percent = $new_w / $old_x;
} else {
$percent = $new_h / $old_y;
}
$thumb_w = round($old_x * $percent);
$thumb_h = round($old_y * $percent);
$dst_img=ImageCreateTrueColor($thumb_w, $thumb_h);
fastimagecopyresampled($dst_img, $src_img, 0, 0, 0, 0, $thumb_w, $thumb_h, $old_x, $old_y);
if (preg_match("/png/", $system[0])) {
if (!imagepng($dst_img, $filename)) {
echo 'unable to imagepng.';
return false;
}
} else if (preg_match("/jpg|jpeg/", $system[0])) {
if (!imagejpeg($dst_img, $filename, 70)) {
echo 'unable to imagejpg.';
return false;
}
} else if (preg_match("/gif/", $system[0])) {
if (!imagegif($dst_img, $filename)) {
echo 'unable to imagegif.';
return false;
}
}
imagedestroy($dst_img);
imagedestroy($src_img);
return true;
}
/* Author: Tim Eckel - Date: 12/17/04 - Project: FreeRingers.net - Freely distributable. */
/**
* @ignore
*/
function fastimagecopyresampled(&$dst_image, &$src_image, $dst_x, $dst_y, $src_x, $src_y, $dst_w, $dst_h, $src_w, $src_h, $quality = 3) {
/*
Optional "quality" parameter (defaults is 3). Fractional values are allowed, for example 1.5.
1 = Up to 600 times faster. Poor results, just uses imagecopyresized but removes black edges.
2 = Up to 95 times faster. Images may appear too sharp, some people may prefer it.
3 = Up to 60 times faster. Will give high quality smooth results very close to imagecopyresampled.
4 = Up to 25 times faster. Almost identical to imagecopyresampled for most images.
5 = No speedup. Just uses imagecopyresampled, highest quality but no advantage over imagecopyresampled.
*/
if (empty($src_image) || empty($dst_image)) { return false; }
if ($quality <= 1) {
$temp = imagecreatetruecolor ($dst_w + 1, $dst_h + 1);
imagecopyresized ($temp, $src_image, $dst_x, $dst_y, $src_x, $src_y, $dst_w + 1, $dst_h + 1, $src_w, $src_h);
imagecopyresized ($dst_image, $temp, 0, 0, 0, 0, $dst_w, $dst_h, $dst_w, $dst_h);
imagedestroy ($temp);
} elseif ($quality < 5 && (($dst_w * $quality) < $src_w || ($dst_h * $quality) < $src_h)) {
$tmp_w = $dst_w * $quality;
$tmp_h = $dst_h * $quality;
$temp = imagecreatetruecolor ($tmp_w + 1, $tmp_h + 1);
imagecopyresized ($temp, $src_image, $dst_x * $quality, $dst_y * $quality, $src_x, $src_y, $tmp_w + 1, $tmp_h + 1, $src_w, $src_h);
imagecopyresampled ($dst_image, $temp, 0, 0, 0, 0, $dst_w, $dst_h, $tmp_w, $tmp_h);
imagedestroy ($temp);
} else {
imagecopyresampled ($dst_image, $src_image, $dst_x, $dst_y, $src_x, $src_y, $dst_w, $dst_h, $src_w, $src_h);
}
return true;
}
/**
* @ignore
*/
function mime_content_type_custom($f) {
return trim(exec('file -bi ' . escapeshellarg ($f )));
}
?>
\ No newline at end of file
<?php
/**
* @ignore
*/
################################################################################
# kusaba MySQL Importing Script v1.0 is © 2007 David Steven-Jennings (relixx@gmail.com)
#
# This work is licensed under the Creative Commons Attribution-ShareAlike 2.5 License.
# To view a copy of this license, visit http://creativecommons.org/licenses/by-sa/2.5/
# or send a letter to Creative Commons, 543 Howard Street, 5th Floor, San Francisco,
# California, 94105, USA.
#
# You can modify this script as you wish just as long as this box stays intact. If
# you do modify this script please state that you have done so and give me credit
# as the author of the original script (with my email address intact).
################################################################################
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="pl" lang="pl">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>MySQL Batch File Importing Script</title>
<style type="text/css">
body { font-family: sans-serif; font-size: 75%; background: #ffe }
a { text-decoration: none; color: #550 }
h1,h2 { margin: 0px; background: #fca }
h1 { font-size: 150% }
h2 { font-size: 100%; margin-top: 1em }
.hl { font-style: italic }
.plus { float: right; font-size: 8px; font-weight: normal; padding: 1px 4px 2px 4px; margin: 0px 0px; background: #eb9; color: #000; border: 1px solid #da8; cursor: hand; cursor: pointer }
.plus:hover { background: #da8; border: 1px solid #c97 }
ul { list-style: none; padding-left: 0px; margin: 0px }
li { margin: 0px }
li:hover { background: #fec; }
li a { display: block; width: 100%; }
</style>
<link rel="shortcut icon" href="/favicon.ico" />
</head>
<body>
<div style="text-align:center;"><h1>MySQL Batch File Importing Script</h1></div>
<?php
if (!isset($_POST["confirm"])) {
?>
<br /><br />
<font color="#FF0000"><strong>WARNING!</strong></font><br /><br />
The purpose of this script is to quickly and easily run the commands contained within the kusaba SQL file, and is
to be used if you are installing the script for the first time or want to recreate the tables, for whatever reason.<br />
Running this script will delete any related tables and their data (including the admin files). I offer this script as-is and cannot be held
responsible for any damages caused or accidental loss of data incurred as a result of running this script.<br />
Before running this script, make sure that:<br />
<ul>
<li>-&gt; You have set up the database connection and that it is working</li>
<li>-&gt; You have created the database</li>
<li>-&gt; You have created the database user and set up the config file appropriately</li>
</ul>
<form action="s2kx.php" method="post">
<br />
<input type="checkbox" name="confirm" /> By clicking this check box I agree that the author of this script cannot be held responsible for my own stupidity if something goes wrong.<br /><br /><br />
<input type="submit" value="Import the MySQL batch file" />
</form>
<?php
} else {
require('config.php');
//$reqiredtables = array("ads","announcements","embeds","faq","rules");
//foreach ($reqiredtables as $tablename) {
// if (mysql_table_exists(KU_DBDATABASE,KU_DBPREFIX.$tablename)) {
// die("Table <strong>".KU_DBPREFIX.$tablename."</strong> already exists in the database! Drop it, and re run this script.");
// }
//}
// Lets open the file for reading! :)
echo '<h2>SQL Batch File Processing</h2>';
echo 'Locating \'s2kx.sql\'... ';
if (file_exists('s2kx.sql') && (filesize('s2kx.sql') > 0)) {
echo 'found.<br />';
$sqlfile = fopen('s2kx.sql', 'r');
echo 'File opened.<br />';
$readdata = fread($sqlfile, filesize('s2kx.sql'));
$readdata = str_replace('PREFIX_',KU_DBPREFIX,$readdata);
fclose($sqlfile);
echo 'Contents read.<br />';
}else{
echo '<font color=red>Error.</font> ';
die('An error occured. s2kx.sql does not exist in this directory or it is 0 bytes big :( Barring that, do you have read permissions for the directory?');
}
$tc_db->Execute("ALTER DATABASE `" . KU_DBDATABASE . "` CHARACTER SET utf8 COLLATE utf8_general_ci");
// Explodes the array
$sqlarray = explode("\n", $readdata);
// Loops through the array and deletes the non-SQL bits in the file, which is basically the '--' lines and the lines with no content
foreach ($sqlarray as $key => $sqldata) {
if (strstr($sqldata, '--') || strlen($sqldata) == 0){
unset($sqlarray[$key]);
}
}
// Here we are imploding everything together again...
$readdata = implode('',$sqlarray);
// ...then exploding it again. At this point we will have an array where each key's value is a one of the CREATE statements
$sqlarray = explode(';',$readdata);
echo 'File contents have been formatted for use with mysql_query.<br />';
// Lets drop any existing tables in the database
$listoftables = $tc_db->GetAll("show tables from ".KU_DBDATABASE."");
echo '<h2>Table Creation</h2>';
// Lets now loop through the array and create each table
foreach ($sqlarray as $sqldata) {
if (strlen($sqldata) !== 0) { // As the array was exploded on ';', the last ';' caused a blank element to be created as there was no data after it :p
// The following three lines retrieve the table name of the table from the sql command. It's dynamic so it doesn't matter how many tables need to be created
// As long as each CREATE TABLE statement stays in the format CREATE TABLE `table` then this part will work.
$pos1 = strpos($sqldata, '`');
$pos2 = strpos($sqldata, '`', $pos1 + 1);
$tablename = substr($sqldata, $pos1+1, ($pos2-$pos1)-1);
echo "Attempting to create table '$tablename'... ";
if($tc_db->Execute($sqldata)) {
echo "success.<br />";
} else {
echo "<font color='red'>failed</font>. Enable debugging by setting KU_DEBUG to true to see this error.<br />";
die ("Table creation failed. Please rerun this script again or attempt to fix the problem if you know how to solve it.");
}
}
}
// All done :)
echo '<br />SQL commands have finished. If all is well, proceed to the <a href="install.php"><strong><u>installation file</u></strong></a> but don\'t forget to delete this file!';
}
function mysql_table_exists($database, $tableName)
{
global $tc_db;
$tables = array();
$tablesResults = $tc_db->GetAll("SHOW TABLES FROM `$database`;");
foreach ($tablesResults AS $row) $tables[] = $row[0];
return(in_array($tableName, $tables));
}
?>
</body>
</html>
\ No newline at end of file
-- --------------------------------------------------------
--
-- Drop tables not used in Kusaba X.
--
DROP TABLE `PREFIX_announcements`;
DROP TABLE `PREFIX_faptcha_attempts`;
DROP TABLE `PREFIX_spamfilter`;
DROP TABLE `PREFIX_menu`;
ALTER TABLE `PREFIX_boards` DROP enablefaptcha;
ALTER TABLE `PREFIX_boards` DROP enableporn;
ALTER TABLE `PREFIX_staff` DROP suspended;
ALTER TABLE `PREFIX_staff` DROP access;
ALTER TABLE `PREFIX_banlist` CHANGE `note` `staffnote` TEXT;
-- --------------------------------------------------------
--
-- Table structure for table `ads`
--
CREATE TABLE `PREFIX_ads` (
`id` smallint(1) unsigned NOT NULL,
`position` varchar(3) NOT NULL,
`disp` tinyint(1) NOT NULL,
`boards` varchar(255) NOT NULL,
`code` text NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
-- --------------------------------------------------------
--
-- Table structure for table `announcements`
--
CREATE TABLE `PREFIX_announcements` (
`id` int(10) unsigned NOT NULL auto_increment,
`parentid` int(10) unsigned NOT NULL default '0',
`subject` varchar(255) NOT NULL,
`postedat` int(20) NOT NULL,
`postedby` varchar(75) NOT NULL,
`message` text NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
-- --------------------------------------------------------
--
-- Table structure for table `embeds`
--
CREATE TABLE `PREFIX_embeds` (
`id` tinyint(5) unsigned NOT NULL auto_increment,
`filetype` varchar(3) NOT NULL,
`name` varchar(255) NOT NULL,
`videourl` varchar(510) NOT NULL,
`width` tinyint(3) unsigned NOT NULL,
`height` tinyint(3) unsigned NOT NULL,
`code` text NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
-- --------------------------------------------------------
--
-- Table structure for table `faq`
--
CREATE TABLE `PREFIX_faq` (
`id` smallint(5) unsigned NOT NULL auto_increment,
`order` smallint(5) unsigned NOT NULL,
`heading` varchar(255) NOT NULL,
`message` text NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;
-- --------------------------------------------------------
--
-- Table structure for table `rules`
--
CREATE TABLE `PREFIX_rules` (
`id` smallint(5) unsigned NOT NULL auto_increment,
`order` smallint(5) unsigned NOT NULL,
`heading` varchar(255) NOT NULL,
`message` text NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;
-- --------------------------------------------------------
ALTER TABLE `PREFIX_boards` CHANGE `maxpages` `maxpages` INT( 20 ) NOT NULL DEFAULT '11';
ALTER TABLE `PREFIX_boards` CHANGE `maxpages` `maxpages` INT( 20 ) NOT NULL DEFAULT '11';
INSERT INTO `PREFIX_ads` (`id`, `position`, `disp`, `boards`, `code`) VALUES (1, 'top', 0, '', 'Right Frame Top'), (2, 'bot', 0, '', 'Right Frame Bottom');
INSERT INTO `PREFIX_embeds` (`filetype`, `name`, `videourl`, `width`, `height`, `code`) VALUES ('you', 'Youtube', 'http://www.youtube.com/watch?v=', 200, 164, '<object type="application/x-shockwave-flash" width="SET_WIDTH" height="SET_HEIGHT" data="http://www.youtube.com/v/EMBED_ID"> <param name="movie" value="http://www.youtube.com/v/EMBED_ID" /> </object>'), ('goo', 'Google', 'http://video.google.com/videoplay?docid=', 200, 164, '<embed width="SET_WIDTH" height="SET_HEIGHT" id="VideoPlayback" type="application/x-shockwave-flash" src="http://video.google.com/googleplayer.swf?docId=EMBED_ID"></embed>') ;
\ No newline at end of file
This diff is collapsed.
# x-233chan
Kusaba X Fork with a translated Chinese frontend, powering a certain project starting with 2333
匿名版系统Kusaba X的fork,增加以下特性:
- 中文前台
- BBCode支持
- 文字颜文字输入
- 彩色饼干ID
- 音频上传(需要服务器支持,基于Flash播放器)
# 安装方法 #
Clone本repo后,用文本编辑器打开``config.php``,根据你的实际情况,修改其中的变量。
修改完毕保存后,将OTHER文件夹中的``install.php``, 对应你``config.php````KU_DBTYPE``变量的``install-dbtype.php``以及``kusaba_freshinstall.dbtype.sql``复制粘贴进根目录。
如果你使用虚拟主机,现在应该将全部内容上传到远端服务器上。
执行``/install.php``进行安装。
安装完毕后,删除前述的安装用文件以及``/OTHER``文件夹。
后台在``/manage.php``,默认用户名和密码均为``admin``,请记得修改。
以上
# 免责声明 #
使用此代码产生的一切后果自负。
此程序的原作者为[Kusuba X制作组](https://github.com/Edaha)
## 其他 ##
里岛使用的波兰球现国别插件基于[这个repo](https://github.com/exclude/kusaba-int-module)
文字颜文字列表来自于A岛。
``/assets``文件夹中图像的作者为Woody-Rinn。
----------
以下为原README文件内容
----------
Installation Guide
http://kusabax.cultnet.net/wiki/installation_guide
Other Info (Including Upgrading)
http://kusabax.cultnet.net/wiki/basics
<?php
/*
* This file is part of kusaba.
*
* kusaba is free software; you can redistribute it and/or modify it under the
* terms of the GNU General Public License as published by the Free Software
* Foundation; either version 2 of the License, or (at your option) any later
* version.
*
* kusaba is distributed in the hope that it will be useful, but WITHOUT ANY
* WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR
* A PARTICULAR PURPOSE. See the GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License along with
* kusaba; if not, write to the Free Software Foundation, Inc.,
* 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
*/
/**
* Oekaki animation viewer
*
* Plays back an animation of an oekaki drawing as it is being drawn
*
* @package kusaba
*/
if (!isset($_GET['board']) || !isset($_GET['id'])) {
die();
}
/**
* Require the configuration file
*/
require 'config.php';
$imagesize = $tc_db->GetAll("SELECT `image_w`, `image_h` FROM `" . KU_DBPREFIX . "posts` WHERE `file` = " . $tc_db->qstr($_GET['id']) . " LIMIT 1");
// Checks to ensure valid $_GET input
$board = $tc_db->GetAll("SELECT `desc` FROM `" . KU_DBPREFIX . "boards WHERE `desc` = " . $tc_db->qstr($_GET['board']) . " LIMIT 1");
if (count($board) < 1 || !is_numeric($_GET['id'])) {
die();
}
$width = $imagesize[0]['image_w'];
$height = $imagesize[0]['image_h'];
?>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Frameset//EN" "http://www.w3.org/TR/html4/frameset.dtd">
<html>
<head>
<title>View Animation</title>
</head>
<body>
<applet name="pch" code="pch2.PCHViewer.class" archive="<?php echo KU_CGIPATH; ?>/PCHViewer123.jar" width="<?php echo $width; ?>" height="<?php echo ($height + 26); ?>" alt="Applet requires Java 1.1 or later to run!" mayscript">
<param name="archive" value="PCHViewer123.jar">
<param name="image_width" value="<?php echo $width; ?>">
<param name="image_height" value="<?php echo $height; ?>">
<param name="pch_file" value="<?php echo KU_BOARDSPATH . '/' . $_GET['board'] . '/src/' . $_GET['id'] . '.pch'; ?>">
<param name="run" value="true">
<param name="buffer_progress" value="false">
<param name="buffer_canvas" value="false">
<param name="dir_resource" value="./kusabaoek/res/">
<param name="res.zip" value="./kusabaoek/res/res.zip">
<param name="tt.zip" value="./kusabaoek/res/tt.zip">
<param name="tt_size" value="31">
<param name="color_text" value="#000000">
<param name="color_bk" value="#EEEEFF">
<param name="color_bk2" value="#CCCCFF">
<param name="color_icon" value="#CCCCFF">
<param name="color_iconselect" value="#AAAAFF">
<param name="tool_color_button" value="#CCCCFF">
<param name="tool_color_button2" value="#CCCCFF">
<param name="tool_color_text" value="#000000">
<param name="tool_color_frame" value="#CCCCFF">
<param name="color_bar" value="#AAAAFF">
<param name="color_bar_hl" value="#CCCCFF">
<param name="color_bar_frame_hl" value="#CCCCFF">
<param name="color_bar_frame_shadow" value="#CCCCFF">
<div align="center">Java must be installed and enabled to use this applet. Please refer to our Java setup tutorial for more information.</div>
</applet>
</body>
</html>
<?php
?>
\ No newline at end of file
html {
/*background-color: #C4C4C4;*/
color: #333333;
font-family: "Trebuchet MS", "Tahoma", "Verdana", "Arial", sans-serif;
font-size: 13px;
}
body {
width: 980px;
margin: 0 auto;
background-color: #F7F7F7;
}
/** logo **/
.logo {
background: url('_logo.png') top left no-repeat;
width: 300px;
height: 120px;
margin: 0 auto;
}
/** menu **/
.menu ul {
list-style: none;
margin: 0;
padding: 7px 0;
border-bottom: 1px solid #CCC;
font-weight: bold;
text-align: center;
white-space: nowrap;
}
.menu ul li {
display: inline;
margin: 0 2px;
}
.menu ul a {
text-decoration: none;
padding: 0 0 3px;
border-bottom: 4px solid #FFF;
color: #999;
}
.menu ul a.active, .menu ul a:hover {
border-color: #888;
color: #555;
}
/** boxies **/
.clear {
clear: both;
}
.box {
background: #FFF;
border: 1px solid #919191;
margin: 15px 0 0 0;
}
.box .box-title {
font-size: 18px;
background: #c0c0c0;
padding: 2px;
}
/** boards **/
.boards ul {
float: left;
font-weight: bold;
}
.boards ul li {
font-weight: normal;
list-style: none;
}
/** noticias **/
.last-new .box-content {
padding: 0 5px;
}
/** ultimas imagens **/
.last-images {
width: 49%;
float: left;
}
.last-images .box-content {
height: 880px;
text-align: center;
overflow: auto;
}
.last-images ul {
width: 100%;
margin: 0;
padding: 0;
}
.last-images ul li {
background: #120;
list-style: none;
width: 280px;
height: auto;
margin: 10px auto;
padding: 10px;
}
.last-images ul li img {
max-width: 250px;
max-height: 150px;
}
/** Ultimos Posts **/
.last-post,
.popular-thread,
.stats {
float: right;
width: 49%;
}
/** ban list **/
table {
margin: 15px 0 0 0;
border-collapse: collapse;
background: #fff;
}
th {
background: #c0c0c0;
}
table, th, td {
border: 1px solid black;
padding: 3px;
}
/** footer **/
.footer {
text-align: center;
font-size: 12px;
margin-top: 5px;
}
/** formatação **/
a {
color:#F60;
}
a:hover {
color:#b34700;
}
\ No newline at end of file
<?php
/*
* This file is part of kusaba.
*
* kusaba is free software; you can redistribute it and/or modify it under the
* terms of the GNU General Public License as published by the Free Software
* Foundation; either version 2 of the License, or (at your option) any later
* version.
*
* kusaba is distributed in the hope that it will be useful, but WITHOUT ANY
* WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR
* A PARTICULAR PURPOSE. See the GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License along with
* kusaba; if not, write to the Free Software Foundation, Inc.,
* 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
*/
/**
* "You are banned" page
*
* Users will be redirected to this page when they are banned from posting to or
* viewing the boards.
*
* @package kusaba
*/
/**
* Require the configuration file, functions file, and bans class
*/
require 'config.php';
require KU_ROOTDIR . 'inc/functions.php';
require KU_ROOTDIR . 'inc/classes/bans.class.php';
$bans_class = new Bans();
if (isset($_POST['appealmessage']) && KU_APPEAL != '') {
$results = $tc_db->GetAll("SELECT * FROM `".KU_DBPREFIX."banlist` WHERE `type` = '0' AND `ipmd5` = '" . md5($_SERVER['REMOTE_ADDR']) . "' AND `id` = " . $tc_db->qstr($_POST['banid']) . "LIMIT 1");
if (count($results)>0) {
foreach($results AS $line) {
if ($line['appealat'] > 0 && $line['appealat'] < time()) {
$tc_db->Execute("UPDATE `".KU_DBPREFIX."banlist` SET `appealat` = '-1' , appeal = ".$tc_db->qstr($_POST['appealmessage'])." WHERE `id` = '" . $line['id'] . "'");
echo 'Your appeal has been sent and is pending review.';
} else {
echo 'You may not appeal that ban at this time.';
}
die();
}
}
}
$bans_class->BanCheck($_SERVER['REMOTE_ADDR'], '', true);
?>
\ No newline at end of file
<?php
require 'config.php';
require KU_ROOTDIR . 'inc/functions.php';
echo getBlotter(true);
?>
\ No newline at end of file
This diff is collapsed.
[ edit this ]
\ No newline at end of file
<?php
/*
* This file is part of kusaba.
*
* kusaba is free software; you can redistribute it and/or modify it under the
* terms of the GNU General Public License as published by the Free Software
* Foundation; either version 2 of the License, or (at your option) any later
* version.
*
* kusaba is distributed in the hope that it will be useful, but WITHOUT ANY
* WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR
* A PARTICULAR PURPOSE. See the GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License along with
* kusaba; if not, write to the Free Software Foundation, Inc.,
* 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
*/
/**
* Captcha display
*
* Generates a random word and stores it in a session variable, which is later used as a verification that the poster is in fact a human
*
* @package kusaba
*/
/**
* Start the session
*/
session_start();
$preconfig_db_unnecessary = true;
/**
* Require the configuration file
*/
require 'config.php';
/*
* File: CaptchaSecurityImages.php
* Author: Simon Jarvis
* Copyright: 2006 Simon Jarvis
* Date: 03/08/06
* Updated: 07/02/07
* Requirements: PHP 4/5 with GD and FreeType libraries
* Link: http://www.white-hat-web-design.co.uk/articles/php-captcha.php
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License
* as published by the Free Software Foundation; either version 2
* of the License, or (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details:
* http://www.gnu.org/licenses/gpl.html
*
*/
/**
* Captcha image class
*
* @package kusaba
*/
class CaptchaSecurityImages {
function CaptchaSecurityImages($width='120',$height='40',$characters='6',$font) {
global $font,$font_ballback;
require_once KU_ROOTDIR . 'inc/classes/randword.class.php';
$randword_class = new Rand_Word;
$code = $randword_class->rand_word($characters);
/* font size will be 75% of the image height */
$font_size = $height * 0.85;
$image = @imagecreate($width, $height) or die('Cannot initialize new GD image stream');
/* set the colours */
$background_color = imagecolorallocate($image, 255, 255, 255);
$text_color = imagecolorallocate($image, 35, 45, 100);
$noise_color = imagecolorallocate($image, 100, 120, 180);
/* generate random dots in background */
if (@imagettfbbox($font_size, 0, $font, $code)) {
$ttf_supported = true;
for( $i=0; $i<($width*$height)/3; $i++ ) {
imagefilledellipse($image, mt_rand(0,$width), mt_rand(0,$height), 1, 1, $noise_color);
}
} else {
$ttf_supported = false;
for( $i=0; $i<($width*$height)/12; $i++ ) {
imagefilledellipse($image, mt_rand(0,$width), mt_rand(0,$height), 1, 1, $noise_color);
}
}
/* generate random lines in background */
if ($ttf_supported) {
for( $i=0; $i<($width*$height)/150; $i++ ) {
imageline($image, mt_rand(0,$width), mt_rand(0,$height), mt_rand(0,$width), mt_rand(0,$height), $noise_color);
}
}
if ($ttf_supported) {
$textbox = imagettfbbox($font_size, 0, $font, $code);
$x = ($width - $textbox[4])/2;
$y = ($height - $textbox[5])/2;
imagettftext($image, $font_size, 0, $x, $y, $text_color, $font, $code);
} else {
$x = 4;
$y = 5;
imagestring($image, $font_ballback, $x, $y, $code, $text_color);
}
/* create textbox and add text*/
$textbox = imagettfbbox($font_size, 0, $font, $code) or die('Error in imagettfbbox function');
$x = ($width - $textbox[4])/2;
$y = ($height - $textbox[5])/2;
imagettftext($image, $font_size, 0, $x, $y, $text_color, $font, $code) or die('Error in imagettftext function');
/*output captcha image to browser */
header('Content-Type: image/jpeg');
imagejpeg($image);
imagedestroy($image);
$_SESSION['security_code'] = $code;
}
}
$width = 90;
$height = 30;
$characters = 6;
$font = KU_ROOTDIR . 'lib/fonts/monofont.ttf';
$font_fallback = imageloadfont(KU_ROOTDIR . 'lib/fonts/captchafont.gdf');
$captcha = new CaptchaSecurityImages($width,$height,$characters,$font);
?>
\ No newline at end of file
clear.gif

49 Bytes

This diff is collapsed.
css/ba.gif

856 Bytes

html, body {
font-size:12pt;
background:#EEF2FF;
color:#000000;
}
a {
background:inherit;
color:#34345C;
text-decoration:none;
font-family:sans-serif;
}
a:visited {
background:inherit;
color:#34345C;
text-decoration:none;
font-family:sans-serif;
}
a:hover {
color:#DD0000;
background:inherit;
font-family:sans-serif;
}
.filesize a {
text-decoration:underline;
}
.filesize a:visited {
text-decoration:underline;
}
.adminbar {
text-align:right;
background:inherit;
clear:both;
float:right;
}
.logo {
clear:both;
text-align:center;
background:inherit;
font-size:24pt;
color:#AF0A0F;
width:100%;
}
.replymode {
background:#0010E0;
color:#FFFFFF;
width:100%;
}
.catalogmode {
background:#0040E0;
color:#FFFFFF;
width:100%;
}
.postarea {
background:inherit;
}
.rules {
/*font-size:0.7em;*/
width: 468px;
font-size: 10px;
font-family: sans-serif;
}
.rules li {
margin-left: 1em;
/*text-indent: 0em;*/
}
.postblock {
background:#9988EE;
color:#000000;
font-weight:800;
}
.footer {
text-align:center;
font-size:10px;
font-family:sans-serif;
}
.passvalid {
background:#9988EE;
text-align:center;
width:100%;
color:#ffffff;
}
.dellist {
background:inherit;
text-align:center;
}
.delbuttons {
background:inherit;
text-align:center;
padding-bottom:4px;
}
.managehead {
background:#0F8FE1;
color:#000000;
font-family:sans-serif;
font-size:14px;
padding:0px;
}
.postlists {
background:#FFFFFF;
width:100%;
padding:0px;
color:#000000;
}
.row1 {
background:#9AD2F6;
font-family:sans-serif;
font-size:12px;
color:#000000;
}
.row2 {
background:#FFFFFF;
font-family:sans-serif;
font-size:12px;
color:#000000;
}
.unkfunc {
color:#789922;
}
.filesize {
font-size:12px;
font-family:sans-serif;
text-decoration:underline;
padding-left:3em;
}
.filetitle {
background:inherit;
font-size:18px;
font-family:serif;
color:#0F0C5D;
font-weight:800;
}
.postername {
background:inherit;
font-size:12px;
font-family:serif;
color:#117743;
font-weight:800;
}
.oldpost {
background:inherit;
font-size:18px;
font-family:serif;
color:#0F0C5D;
font-weight:800;
}
.omittedposts {
background:inherit;
font-size:18px;
font-family:serif;
color:#070707;
font-weight:800;
}
.reply {
background:#D6DAF0;
color:#000000;
font-family:serif;
}
.replyhl {
background: #D6BAD0;
color: #000000;
}
.doubledash {
vertical-align:top;
clear:both;
float:left;
}
.replytitle {
background:inherit;
font-size:18px;
font-family:serif;
color:#0F0C5D;
font-weight:800;
}
.commentpostername {
background:inherit;
font-size:12px;
font-family:serif;
color:#117743;
font-weight:800;
}
.thumbnailmsg {
background:inherit;
font-size:9px;
font-family:sans-serif;
color:#000000;
}
.watchedthreads {
background-color: #D6DAF0 !important;
border: 1px dotted #D6DAF0 !important;
border-top: 0px none !important;
}
.reflinkpreview {
background-color: #D6DAF0 !important;
}
\ No newline at end of file
html, body {
font-size:10pt;
background:#FFFFFF;
color:#000000;
}
* {
font-family: "Trebuchet MS", Tahoma, Verdana, Arial, sans-serif;
font-size: 10pt;
}
input, textarea {
background-color: #DCDDDE;
border: 1px solid #919191;
}
a {
background:inherit;
color:#000000;
}
a:visited {
background:inherit;
color:#212121;
}
a:hover {
color:#212121;
background:inherit;
}
a.quotelink {
background:inherit;
color:#404040;
}
.logo {
clear:both;
text-align:center;
background:inherit;
font-size:24pt;
color:#000000;
width:100%;
}
.postarea {
background:inherit;
}
.postblock {
background: #919191;
border: 1px solid #000000;
color: black;
font-weight: bold;
padding: 2px 5px 2px 5px;
}
.footer {
text-align:center;
font-size:12px;
}
.unkfunc {
background:inherit;
color:#BFBFBF;
}
.filesize {
text-decoration:none;
}
.filetitle {
background:inherit;
color:#404040;
font-weight:800;
}
.postername {
background:inherit;
font-size:11pt;
color:#737373;
font-weight: bold;
}
.postertrip {
background:inherit;
color:#000000;
}
.oldpost {
background:inherit;
color:#404040;
font-weight:800;
}
.omittedposts {
background:inherit;
color:#070707;
}
.reply {
background:#DCDDDC;
color:#000000;
border:1px solid #919191;
}
.replyhl {
background:#BFBFBF;
color:#000000;
}
.doubledash {
vertical-align:top;
clear:both;
float:left;
}
.replytitle {
background:inherit;
font-size:18px;
color:#FFFFFF;
font-weight:800;
}
.commentpostername {
background:inherit;
font-size:11pt;
color:#737373;
font-weight: bold;
}
a.quotejs {
color:#000000;
text-decoration: none;
}
a.quotejs:hover {
font-weight:bold;
}
.adminbar {
text-align: left;
}
hr {
border-style: solid none none none;
border-width: 1px;
border-color: #000000;
}
#watchedthreads {
background-color: #DCDDDC !important;
border: 1px solid #919191 !important;
border-top: 0px none !important;
}
.reflinkpreview {
background-color: #DCDDDC !important;
}
\ No newline at end of file
html, body {
font-size:10pt;
background:#EDDAD2;
color:#000000;
}
* {
font-family: "Trebuchet MS", Tahoma, Verdana, Arial, sans-serif;
font-size: 10pt;
}
input, textarea {
background-color: #E6CBC0;
border: 1px solid #CA927B;
}
a {
background:inherit;
color:#34345C;
}
a:visited {
background:inherit;
color:#34345C;
}
a:hover {
color:#DD0000;
background:inherit;
}
a.quotelink {
background:inherit;
color:#DD0000;
}
.logo {
clear:both;
text-align:center;
background:inherit;
font-size:24pt;
color:#AF0A0F;
width:100%;
}
.postarea {
background:inherit;
}
.postblock {
background: #D9AF9E;
border: 1px solid #CA927B;
color: black;
font-weight: bold;
padding: 2px 5px 2px 5px;
}
.footer {
text-align:center;
font-size:12px;
}
.unkfunc {
background:inherit;
color:#789922;
}
.filesize {
text-decoration:none;
}
.filetitle {
background:inherit;
color:#0F0C5D;
font-weight:800;
}
.postername {
background:inherit;
font-size:11pt;
color:#117743;
font-weight: bold;
}
.postertrip {
background:inherit;
color:#228854;
}
.oldpost {
background:inherit;
color:#0F0C5D;
font-weight:800;
}
.omittedposts {
background:inherit;
color:#070707;
}
.reply {
background:#D9AF9E;
color:#000000;
border:1px solid #CA927B;
}
.replyhl {
background: #D6BAD0;
color: #000000;
}
.doubledash {
vertical-align:top;
clear:both;
float:left;
}
.replytitle {
background:inherit;
font-size:18px;
color:#0F0C5D;
font-weight:800;
}
.commentpostername {
background:inherit;
font-size:11pt;
color:#117743;
font-weight: bold;
}
a.quotejs {
color:#000000;
text-decoration: none;
}
a.quotejs:hover {
font-weight:bold;
}
.adminbar {
text-align: center;
}
#watchedthreads {
background-color: #D9AF9E !important;
border: 1px solid #CA927B !important;
border-top: 0px none !important;
}
.reflinkpreview {
background-color: #D9AF9E !important;
}
\ No newline at end of file
/*
This css file was created by Harrison for 24chan.org. Use anywhere else without permission is prohibited.
Contact: HarrisonHopkins@Gmail.com
*/
html, body {
background:#000;
color:#FFF;
}
a {
color:#888;
text-decoration: none;
}
a:hover {
color:#888;
}
.reflink a:hover{
font-weight: bold;
}
input, textarea {
background-color: #000;
color: #fff;
border: 1px solid #CCC;
}
input:focus, textarea:focus
{
background-color: #444;
}
.adminbar {
text-align:right;
clear:both;
float:right;
font-size: 13px;
}
.navbar {
font-size: 13px;
}
.logo {
clear:both;
text-align:center;
font-size:2em;
color:#FFF;
width:100%;
}
.replymode {
background:#AAA;
text-align:center;
padding:2px;
color:#000;
width:100%;
}
.catalogmode {
background:#0040E0;
text-align:center;
padding:2px;
color:#FFFFFF;
width:100%;
}
.postarea {
}
.rules {
/*font-size:0.7em;*/
width: 468px;
font-size: 10px;
font-family: sans-serif;
}
.rules li {
margin-left: 1em;
/*text-indent: 0em;*/
}
.postblock {
background:#444;
color:#CCC;
font-weight:800;
text-align: left;
padding-left: 3px;
padding-right: 3px;
border: 1px solid #666;
}
.footer {
text-align:center;
font-size:12px;
font-family:serif;
}
.passvalid {
background:#444;
text-align:center;
width:100%;
color:#ffffff;
}
.dellist {
font-weight: bold;
text-align:center;
}
.delbuttons {
text-align:center;
padding-bottom:4px;
}
.managehead {
background:#AAAA66;
color:#400000;
padding:0px;
}
.postlists {
background:#FFFFFF;
width:100%;
padding:0px;
color:#FFF;
}
.row1 {
background:#EEEECC;
color:#FFF;
}
.row2 {
background:#DDDDAA;
color:#FFF;
}
.unkfunc {
background:inherit;
color:#789922;
}
.filesize {
text-decoration:none;
}
.filetitle {
background:inherit;
font-size:1.2em;
color:#CC1105;
font-weight:800;
}
.postername {
color:#CCC;
font-weight:bold;
}
.postertrip {
color:#CCC;
}
.oldpost {
color:#CC1105;
font-weight:800;
}
.omittedposts {
color:#707070;
}
.reply {
background: #444;
color: #FFF;
-moz-border-radius: 5px;
-webkit-border-radius: 5px;
padding: 5px;
}
.replyhl {
background: #F0C0B0;
color: #FFF;
}
.doubledash {
vertical-align:top;
clear:both;
float:left;
}
.replytitle {
font-size: 1.2em;
color:#CC1105;
font-weight:800;
}
.commentpostername {
color:#117743;
font-weight:800;
}
.thumbnailmsg {
font-size: small;
color:#FFF;
}
.abbrev {
color:#707070;
}
.highlight {
background:#444;
color:#FFF;
border: 2px dashed #FFF;
}
#watchedthreads {
background-color: #444 !important;
}
.reflinkpreview {
background-color: #444 !important;
}
\ No newline at end of file
This diff is collapsed.
html, body {
background-color: #EEEEEE;
color: #333333;
font-family: "Trebuchet MS",Trebuchet,serif;
}
a {
color: #FF6600;
}
a:hover {
color: #0066FF;
}
.adminbar {
clear:both;
float:right;
font-size: .8em;
}
.adminbar a {
font-weight: bold;
}
.logo {
clear:both;
text-align:left;
font-size:2em;
font-weight: bold;
color:#FF6600;
}
.theader, .passvalid, .replymode {
background:#DDDDDD;
text-align:center;
padding:2px;
color:#2266AA;
clear: both;
font-weight: bold;
margin-bottom: .5em;
border: solid 1px #CCCCCC;
-moz-border-radius: 5px;
}
.rules {
font-size:0.7em;
}
.postblock {
background:transparent;
color:#002244;
font-weight:bold;
}
.footer {
text-align:center;
font-size:12px;
font-family:serif;
margin: 2em 0 0 0;
}
.dellist {
font-weight: bold;
text-align:center;
}
.delbuttons {
text-align:center;
padding-bottom:4px;
}
.managehead {
background:#DDDDDD;
color:#002244;
padding:0px;
}
.postlists {
background:#FFFFFF;
width:100%;
padding:0px;
color:#800000;
}
.row1 {
background:#DDDDDD;
color:#002244;
}
.row2 {
background:#CCCCCC;
color:#002244;
}
.unkfunc {
background:inherit;
color:#789922;
}
.reflink {
font-size: .8em;
font-weight: bold;
}
.filesize {
text-decoration:none;
color: #666666;
font-size: .8em;
}
.filetitle {
background:inherit;
font-size:1.2em;
color:#002244;
font-weight:bold;
}
.postername {
color:#004A99;
font-weight:bold;
}
.postertrip {
color:#FF3300;
}
.oldpost {
color:#CC1105;
font-weight:bold;
}
.omittedposts {
color:#666666;
}
.reply {
background:#DDDDDD;
border: solid 1px #CCCCCC;
padding: 0;
margin: 0;
-moz-border-radius: 5px;
}
blockquote {
margin: .5em .5em .5em 1em;
}
blockquote p {
margin: 0;
padding: 0;
}
.reply blockquote {
margin: .5em;
}
.doubledash {
display: none;
vertical-align:top;
clear:both;
float:left;
}
.replytitle {
font-size: 1.2em;
color:#002244;
font-weight:bold;
}
.commentpostername {
color:#004A99;
font-weight:800;
}
.thumbnailmsg {
font-size: .8em;
color:#666666;
}
hr {
border-style: solid none none none;
border-width: 1px;
border-color: #BBBBBB;
}
table {
border-style: none;
}
table td {
border-style: none;
}
.nothumb {
background-color: #FFFFFF;
border-style: dotted;
margin: .3em .5em;
}
.abbrev {
color:#666666;
}
.highlight {
background:#EEDACB;
color:#333333;
border: 2px dashed #EE6600;
}
\ No newline at end of file
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
body {
margin-top: 0;
margin-left: .1em;
margin-right: 1.em;
}
a {
color: #FF6600;
}
a:hover {
color: #0066FF;
}
h1 {
margin-top: .1em;
margin-left: .5em;
}
h2 {
background:#DDDDDD;
border: solid 1px #CCCCCC;
margin-top: 1em;
padding-left: .5em;
cursor: pointer;
font-size: 1.1em;
margin-bottom: 0em;
padding-bottom: 0em;
-moz-border-radius: 5px;
}
li {
margin-left: .5em;
padding-left: .5em;
border-left: solid 1px #CCCCCC;
list-style: none;
margin-top: 0em;
padding-top: 0em;
}
ol, ul {
list-style-position: inside;
padding-left: 0em;
margin-top: 0em;
padding-top: 0em;
}
\ No newline at end of file
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
css/locked.gif

109 Bytes

This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
css/sticky.gif

961 Bytes

This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment