diff --git a/claim-old.php b/claim-old.php new file mode 100644 index 00000000..77168ab1 --- /dev/null +++ b/claim-old.php @@ -0,0 +1,123 @@ +execute(); + $row = $query->fetch(); + $ago = (new DateTime)->sub(new DateInterval('P1W')); + $mod_ago = (new DateTime)->sub(new DateInterval('P2W')); + + $last_activity_date = new DateTime(); + $last_mod_date = new DateTime(); + + $last_activity_date->setTimestamp($row['time']); + + $query = query("SELECT id, username FROM mods WHERE boards = '$board'"); + $mods = $query->fetchAll(); + + if ($mods) { + $mod = $mods[0]['id']; + $query = query("SELECT MAX(time) AS time FROM modlogs WHERE `mod` = $mod"); + $a = $query->fetchAll(PDO::FETCH_COLUMN); + + if ($a[0]) { + $last_mod_date->setTimestamp($a[0]); + if (!$row['time']) + $last_activity_date->setTimestamp($a[0]); + } else {// no one ever logged in, try board creation time + $query = query("SELECT UNIX_TIMESTAMP(time) AS time FROM board_create WHERE uri = '$board'"); + $crt = $query->fetchAll(PDO::FETCH_COLUMN); + $last_activity_date->setTimestamp($crt[0]); + $last_mod_date = false; + } + } + + if ($mods and ($last_activity_date < $ago or ($last_mod_date and $last_mod_date < $mod_ago))) { + return array($last_activity_date, $last_mod_date, $mods); + } + else { + return false; + } +} + +// Find out the last activity for our board +if (!isset($_GET['claim'])) { +$title = "Boards that need new owners"; +$q = query("SELECT uri FROM boards"); +$body = '

The following boards have been abandoned by their owners or have less than one post in a seventy-two hour period. Think you can do a better job? Claim one! Note: You can only reclaim one board per IP per 72 hours. Choose carefully!

'; +$boards = $q->fetchAll(PDO::FETCH_COLUMN); + +$delete = array(); +foreach($boards as $board) { + $last_activity = last_activity($board); + + if ($last_activity) { + list($last_activity_date, $last_mod_date, $mods) = $last_activity; + + $delete[] = array('board' => $board, 'last_activity' => $last_activity_date, 'last_mod' => $last_mod_date); + $last_mod_f = $last_mod_date ? $last_mod_date->format('Y-m-d H:i:s') : 'never'; + $body .= ""; + + } +} +$body .= "
BoardLast activityLast mod loginReclaim
/{$board}/{$last_activity_date->format('Y-m-d H:i:s')}{$last_mod_f}
"; +} +else { +$query = prepare('SELECT `last` FROM ``claim`` WHERE `ip` = :ip'); +$query->bindValue(':ip', $_SERVER['REMOTE_ADDR']); +$query->execute(); + +$r_last = $query->fetch(PDO::FETCH_ASSOC); +$last = new DateTime($r_last['last'], new DateTimeZone('UTC')); +$ago = (new DateTime('',new DateTimeZone('UTC')))->sub(new DateInterval('P3D')); +if ($last > $ago and $r_last) { +error('You already claimed a board today'); +} + +openBoard($_GET['claim']); + +$title = "Claiming board /{$board['uri']}/"; +$last_activity = last_activity($board['uri']); +if ($last_activity) { +list($last_activity_date, $last_mod_date, $mods) = $last_activity; + +$query = prepare('INSERT INTO ``claim``(`ip`, `last`) VALUES(:ip, NOW()) ON DUPLICATE KEY UPDATE `last`=NOW()'); +$query->bindValue(':ip', $_SERVER['REMOTE_ADDR']); +$query->execute(); + +$password = base64_encode(openssl_random_pseudo_bytes(9)); +$salt = generate_salt(); +$hashed = hash('sha256', $salt . sha1($password)); + +$query = prepare('UPDATE ``mods`` SET `password` = :hashed, `salt` = :salt WHERE BINARY username = :mod'); +$query->bindValue(':hashed', $hashed); +$query->bindValue(':salt', $salt); +$query->bindValue(':mod', $mods[0]['username']); +$query->execute(); + +query(sprintf("UPDATE posts_%s SET ip = '127.0.0.1'", $board['uri'])); +$query = prepare("DELETE FROM bans WHERE board = :board"); +$query->bindValue(":board", $board['uri']); +$query->execute(); +_syslog(LOG_NOTICE, "Board claimed: {$board['uri']}"); + +$body = "

Please read the following instructions carefully:

+ +

The username of the admin of this board is {$mods[0]['username']}. Please write this down, you will need it to log in. It cannot be changed.

+

A new password has been generated for this board. It is {$password} . Please write this down, you will need it to log in. If you forget your password, it cannot be changed. You must wait to reclaim the board again! Do not lose it.

+

The URL you use to manage your board is 8chan.co/mod.php. Log in using the details above. Note: The board can still be claimed by another user until you log in for the first time or if it still meets the inactivity criteria, so post something!

+

+ +"; +} else { +error('Board active or does not exist, cannot be reclaimed.'); +} +} + +$config['default_stylesheet'] = array('Yotsuba B', $config['stylesheets']['Yotsuba B']); +echo Element("page.html", array("config" => $config, "body" => $body, "title" => $title)); +*/ diff --git a/claim.php b/claim.php index 9645a0f7..edc6669a 100644 --- a/claim.php +++ b/claim.php @@ -1,121 +1,5 @@ execute(); - $row = $query->fetch(); - $ago = (new DateTime)->sub(new DateInterval('P1W')); - $mod_ago = (new DateTime)->sub(new DateInterval('P2W')); +include 'inc/functions.php'; - $last_activity_date = new DateTime(); - $last_mod_date = new DateTime(); - - $last_activity_date->setTimestamp($row['time']); - - $query = query("SELECT id, username FROM mods WHERE boards = '$board'"); - $mods = $query->fetchAll(); - - if ($mods) { - $mod = $mods[0]['id']; - $query = query("SELECT MAX(time) AS time FROM modlogs WHERE `mod` = $mod"); - $a = $query->fetchAll(PDO::FETCH_COLUMN); - - if ($a[0]) { - $last_mod_date->setTimestamp($a[0]); - if (!$row['time']) - $last_activity_date->setTimestamp($a[0]); - } else {// no one ever logged in, try board creation time - $query = query("SELECT UNIX_TIMESTAMP(time) AS time FROM board_create WHERE uri = '$board'"); - $crt = $query->fetchAll(PDO::FETCH_COLUMN); - $last_activity_date->setTimestamp($crt[0]); - $last_mod_date = false; - } - } - - if ($mods and ($last_activity_date < $ago or ($last_mod_date and $last_mod_date < $mod_ago))) { - return array($last_activity_date, $last_mod_date, $mods); - } - else { - return false; - } -} - -// Find out the last activity for our board -if (!isset($_GET['claim'])) { -$title = "Boards that need new owners"; -$q = query("SELECT uri FROM boards"); -$body = '

The following boards have been abandoned by their owners or have less than one post in a seventy-two hour period. Think you can do a better job? Claim one! Note: You can only reclaim one board per IP per 72 hours. Choose carefully!

'; -$boards = $q->fetchAll(PDO::FETCH_COLUMN); - -$delete = array(); -foreach($boards as $board) { - $last_activity = last_activity($board); - - if ($last_activity) { - list($last_activity_date, $last_mod_date, $mods) = $last_activity; - - $delete[] = array('board' => $board, 'last_activity' => $last_activity_date, 'last_mod' => $last_mod_date); - $last_mod_f = $last_mod_date ? $last_mod_date->format('Y-m-d H:i:s') : 'never'; - $body .= ""; - - } -} -$body .= "
BoardLast activityLast mod loginReclaim
/{$board}/{$last_activity_date->format('Y-m-d H:i:s')}{$last_mod_f}
"; -} -else { -$query = prepare('SELECT `last` FROM ``claim`` WHERE `ip` = :ip'); -$query->bindValue(':ip', $_SERVER['REMOTE_ADDR']); -$query->execute(); - -$r_last = $query->fetch(PDO::FETCH_ASSOC); -$last = new DateTime($r_last['last'], new DateTimeZone('UTC')); -$ago = (new DateTime('',new DateTimeZone('UTC')))->sub(new DateInterval('P3D')); -if ($last > $ago and $r_last) { -error('You already claimed a board today'); -} - -openBoard($_GET['claim']); - -$title = "Claiming board /{$board['uri']}/"; -$last_activity = last_activity($board['uri']); -if ($last_activity) { -list($last_activity_date, $last_mod_date, $mods) = $last_activity; - -$query = prepare('INSERT INTO ``claim``(`ip`, `last`) VALUES(:ip, NOW()) ON DUPLICATE KEY UPDATE `last`=NOW()'); -$query->bindValue(':ip', $_SERVER['REMOTE_ADDR']); -$query->execute(); - -$password = base64_encode(openssl_random_pseudo_bytes(9)); -$salt = generate_salt(); -$hashed = hash('sha256', $salt . sha1($password)); - -$query = prepare('UPDATE ``mods`` SET `password` = :hashed, `salt` = :salt WHERE BINARY username = :mod'); -$query->bindValue(':hashed', $hashed); -$query->bindValue(':salt', $salt); -$query->bindValue(':mod', $mods[0]['username']); -$query->execute(); - -query(sprintf("UPDATE posts_%s SET ip = '127.0.0.1'", $board['uri'])); -$query = prepare("DELETE FROM bans WHERE board = :board"); -$query->bindValue(":board", $board['uri']); -$query->execute(); -_syslog(LOG_NOTICE, "Board claimed: {$board['uri']}"); - -$body = "

Please read the following instructions carefully:

- -

The username of the admin of this board is {$mods[0]['username']}. Please write this down, you will need it to log in. It cannot be changed.

-

A new password has been generated for this board. It is {$password} . Please write this down, you will need it to log in. If you forget your password, it cannot be changed. You must wait to reclaim the board again! Do not lose it.

-

The URL you use to manage your board is 8chan.co/mod.php. Log in using the details above. Note: The board can still be claimed by another user until you log in for the first time or if it still meets the inactivity criteria, so post something!

-

- -"; -} else { -error('Board active or does not exist, cannot be reclaimed.'); -} -} - -$config['default_stylesheet'] = array('Yotsuba B', $config['stylesheets']['Yotsuba B']); -echo Element("page.html", array("config" => $config, "body" => $body, "title" => $title)); +error('Automatic claiming is no longer available. To claim a board, send your request to admin@8chan.co along with the IP you used to post on that board.'); diff --git a/create.php b/create.php index d7da028b..70629b28 100644 --- a/create.php +++ b/create.php @@ -13,8 +13,6 @@ $publisher_html = $ayah->getPublisherHTML(); $password = base64_encode(openssl_random_pseudo_bytes(9)); $body = <<Did you know? Many boards with popular names on 8chan.co are abandoned and can be claimed by you. Click here to see the list and claim yours!

-
diff --git a/expire.php b/expire.php index 0ecad5e6..fb1f14cf 100644 --- a/expire.php +++ b/expire.php @@ -8,8 +8,8 @@ if (!(php_sapi_name() == "cli")) { $q = query("SELECT uri FROM boards"); $boards = $q->fetchAll(PDO::FETCH_COLUMN); $now = new DateTime(); -$ago = (new DateTime)->sub(new DateInterval('P30D')); -$mod_ago = (new DateTime)->sub(new DateInterval('P30D')); +$ago = (new DateTime)->sub(new DateInterval('P14D')); +$mod_ago = (new DateTime)->sub(new DateInterval('P14D')); // Find out the last activity for our board $delete = array(); @@ -60,6 +60,7 @@ $f = fopen('rip.txt', 'a'); fwrite($f, "--\r\n"); foreach($delete as $i => $d){ $s = "RIP /".$d['board']."/, created by ".$d['mod']?$d['mod']:'?'." and last active on ".$d['last_activity']->format('Y-m-d H:i:s.').($d['last_mod'] ? ' Mod last active on ' . $d['last_mod']->format('Y-m-d H:i:s.') : ' Mod never active.') . " Number of posts: {$d['count']}." . "\r\n"; + echo $s; fwrite($f, $s); openBoard($d['board']); diff --git a/inc/instance-config.php b/inc/instance-config.php index 6ca23bba..688fbc1a 100644 --- a/inc/instance-config.php +++ b/inc/instance-config.php @@ -8,6 +8,7 @@ * You can copy values from config.php (defaults) and paste them here. */ require_once "htmlpurifier-4.5.0/library/HTMLPurifier.auto.php"; +require_once "8chan-functions.php"; $config['db']['server'] = 'localhost'; @@ -102,7 +103,7 @@ require_once "htmlpurifier-4.5.0/library/HTMLPurifier.auto.php"; $config['markup'][] = array("/\[spoiler\](.+?)\[\/spoiler\]/", "\$1"); $config['markup'][] = array("/~~(.+?)~~/", "\$1"); - $config['boards'] = array(array('' => '/', '' => '/boards.html', '' => '/faq.html', '' => '/random.php', '' => '/create.php', '' => '/search.php', '' => '/claim.php', '' => '/mod.php', '' => 'https://qchat.rizon.net/?channels=#8chan'), array('b', 'meta', 'int'), array(''=>'https://twitter.com/infinitechan')); + $config['boards'] = array(array('' => '/', '' => '/boards.html', '' => '/faq.html', '' => '/random.php', '' => '/create.php', '' => '/search.php', '' => '/mod.php', '' => 'https://qchat.rizon.net/?channels=#8chan'), array('b', 'meta', 'int'), array(''=>'https://twitter.com/infinitechan')); $config['footer'][] = 'Proprietary Tinyboard changes & 8chan.co trademark and logo © 2013-2014 Fredrick Brennan'; $config['footer'][] = 'To make a DMCA request or report illegal content, please email admin@8chan.co or use the "Global Report" functionality on every page.'; @@ -357,3 +358,5 @@ EOT; '' ) ); + +$config['gzip_static'] = false;