PDO::ERRMODE_WARNING, PDO::ATTR_PERSISTENT=>PERSISTENT]); }catch(PDOException $e){ http_response_code(500); die($I['nodb']); } asort($categories); ?> <?php echo $I['admintitle']; ?>

"; echo ""; echo "

"; echo ""; echo ''; if(isset($_POST['pass'])){ echo "

$I[wrongpass]

"; } }else{ $msg = ''; $category=count($categories); if(isset($_REQUEST['cat']) && $_REQUEST['cat']=0){ $category=$_REQUEST['cat']; } if(!empty($_POST['addr'])){ $addrs = is_array($_POST['addr']) ? $_POST['addr'] : [$_POST['addr']]; foreach ($addrs as $addr_single) { if ( ! preg_match( '~(^(https?://)?([a-z2-7]{16}|[a-z2-7]{56})(\.onion(/.*)?)?$)~i', trim( $addr_single ), $addr ) ) { $msg .= "

$I[invalonion]

"; } else { $addr = strtolower( $addr[ 3 ] ); $md5 = md5( $addr, true ); if ( $_POST[ 'action' ] === $I[ 'remove' ] ) { //remove address from public display $db->prepare( 'UPDATE ' . PREFIX . "onions SET address='', locked=1, approved=-1, timechanged=? WHERE md5sum=?;" )->execute( [ time(), $md5 ] ); $msg .= "

$I[succremove]

"; } elseif ( $_POST[ 'action' ] === $I[ 'lock' ] ) { //lock editing $db->prepare( 'UPDATE ' . PREFIX . 'onions SET locked=1, approved=1, timechanged=? WHERE md5sum=?;' )->execute( [ time(), $md5 ] ); $msg .= "

role=\"alert\"$I[succlock]

"; } elseif ( $_POST[ 'action' ] === $I[ 'readd' ] ) { //add onion back, if previously removed $db->prepare( 'UPDATE ' . PREFIX . 'onions SET address=?, locked=1, approved=1, timechanged=? WHERE md5sum=?;' )->execute( [ $addr, time(), $md5 ] ); $msg .= "

$I[succreadd]

"; } elseif ( $_POST[ 'action' ] === $I[ 'unlock' ] ) { //unlock editing $db->prepare( 'UPDATE ' . PREFIX . 'onions SET locked=0, approved=1, timechanged=? WHERE md5sum=?;' )->execute( [ time(), $md5 ] ); $msg .= "

$I[succunlock]

"; } elseif ( $_POST[ 'action' ] === $I[ 'promote' ] ) { //promote link for payed time $stmt = $db->prepare( 'SELECT special FROM ' . PREFIX . 'onions WHERE md5sum=?;' ); $stmt->execute( [ $md5 ] ); $specialtime = $stmt->fetch( PDO::FETCH_NUM ); if ( $specialtime[ 0 ] < time() ) { $time = time() + ( ( $_POST[ 'btc' ] / PROMOTEPRICE ) * PROMOTETIME ); } else { $time = $specialtime[ 0 ] + ( ( $_POST[ 'btc' ] / PROMOTEPRICE ) * PROMOTETIME ); } $db->prepare( 'UPDATE ' . PREFIX . 'onions SET special=?, locked=1, approved=1, timechanged=? WHERE md5sum=?;' )->execute( [ $time, time(), $md5 ] ); $msg .= sprintf( "

$I[succpromote]

", date( 'Y-m-d H:i', $time ) ); } elseif ( $_POST[ 'action' ] === $I[ 'unpromote' ] ) { //remove promoted status $db->prepare( 'UPDATE ' . PREFIX . 'onions SET special=0, timechanged=? WHERE md5sum=?;' )->execute( [ time(), $md5 ] ); $msg .= "

$I[succunpromote]

"; } elseif ( $_POST[ 'action' ] === $I[ 'update' ] ) { //update description $stmt = $db->prepare( 'SELECT * FROM ' . PREFIX . 'onions WHERE md5sum=?;' ); $stmt->execute( [ $md5 ] ); if ( $category === count( $categories ) ) { $category = 0; } if ( ! isset( $_POST[ 'desc' ] ) ) { $desc = ''; } else { $desc = trim( $_POST[ 'desc' ] ); $desc = htmlspecialchars( $desc ); $desc = preg_replace( "/(\r?\n|\r\n?)/", '
', $desc ); } if ( ! $stmt->fetch( PDO::FETCH_ASSOC ) ) { //not yet there, add it $stmt = $db->prepare( 'INSERT INTO ' . PREFIX . 'onions (address, description, md5sum, category, timeadded, locked, approved, timechanged) VALUES (?, ?, ?, ?, ?, 1, 1, ?);' ); $stmt->execute( [ $addr, $desc, $md5, $category, time(), time() ] ); $msg .= "

$I[succadd]

"; } elseif ( $desc != '' ) { //update description+category $stmt = $db->prepare( 'UPDATE ' . PREFIX . 'onions SET description=?, category=?, locked=1, approved=1, timechanged=? WHERE md5sum=?;' ); $stmt->execute( [ $desc, $category, time(), $md5 ] ); $msg .= "

$I[succupddesc]

"; } elseif ( $category != 0 ) { //only update category $stmt = $db->prepare( 'UPDATE ' . PREFIX . 'onions SET category=?, locked=1, approved=1, timechanged=? WHERE md5sum=?;' ); $stmt->execute( [ $category, time(), $md5 ] ); $msg .= "

$I[succupdcat]!

"; } else { //no description or category change and already known $msg .= "

$I[alreadyknown]

"; } } elseif ( $_POST[ 'action' ] === $I[ 'phishing' ] ) {//mark as phishing clone if ( $_POST[ 'original' ] !== '' && ! preg_match( '~(^(https?://)?([a-z2-7]{16}|[a-z2-7]{56})(\.onion(/.*)?)?$)~i', $_POST[ 'original' ], $orig ) ) { $msg .= "

$I[invalonion]

"; } else { if ( isset( $orig[ 3 ] ) ) { $orig = strtolower( $orig[ 3 ] ); } else { $orig = ''; } if ( $orig !== $addr ) { $stmt = $db->prepare( 'INSERT INTO ' . PREFIX . 'phishing (onion_id, original) VALUES ((SELECT id FROM ' . PREFIX . 'onions WHERE address=?), ?);' ); $stmt->execute( [ $addr, $orig ] ); $stmt = $db->prepare( 'UPDATE ' . PREFIX . 'onions SET locked=1, approved=1, timechanged=? WHERE address=?;' ); $stmt->execute( [ time(), $addr ] ); $msg .= "

$I[succaddphish]

"; } else { $msg .= "

$I[samephish]

"; } } } elseif ( $_POST[ 'action' ] === $I[ 'unphishing' ] ) { //remove phishing clone status $stmt = $db->prepare( 'DELETE FROM ' . PREFIX . 'phishing WHERE onion_id=(SELECT id FROM ' . PREFIX . 'onions WHERE address=?);' ); $stmt->execute( [ $addr ] ); $stmt = $db->prepare( 'UPDATE ' . PREFIX . 'onions SET locked=1, approved=1, timechanged=? WHERE address=?;' ); $stmt->execute( [ time(), $addr ] ); $msg .= "

$I[succrmphish]

"; } elseif ( $_POST[ 'action' ] === $I[ 'reject' ] ) { //lock editing $db->prepare( 'UPDATE ' . PREFIX . 'onions SET approved=-1, timechanged=? WHERE md5sum=?;' )->execute( [ time(), $md5 ] ); $msg .= "

$I[succreject]

"; } elseif ( $_POST[ 'action' ] === $I[ 'approve' ] ) { //lock editing $db->prepare( 'UPDATE ' . PREFIX . 'onions SET approved=1, timechanged=? WHERE md5sum=?;' )->execute( [ time(), $md5 ] ); $msg .= "

$I[succapprove]

"; } else { //no specific button was pressed $msg .= "

$I[noaction]

"; } } } } $view_mode = isset($_POST['view_mode']) ? $_POST['view_mode'] : 'single'; if(isset($_POST['switch_view_mode'])){ $view_mode = $view_mode === 'single' ? 'multi' : 'single'; } echo "
"; echo ""; echo ""; echo ""; echo "
"; echo "
"; echo ""; echo ""; echo ""; if($view_mode === 'single') { echo "

'; } else { echo '
Select
Address
Description
Category
Status
'; $stmt=$db->query('SELECT address, description, category, approved, locked FROM ' . PREFIX . "onions WHERE address!='';"); while($onion = $stmt->fetch(PDO::FETCH_ASSOC)){ echo '
'; echo "
$onion[description]
{$categories[$onion['category']]}
Approved: $onion[approved]
Locked: $onion[locked]
"; } echo '
'; } echo "

'; echo "

'; echo "


'; echo "

'; echo ''; echo '
'; echo "
"; echo "
"; echo "
"; echo "
"; echo '
'; echo "
"; echo "
"; echo "
"; echo "
"; echo '
'; echo "
"; if(REQUIRE_APPROVAL) { echo "
"; echo "
"; } echo '
'; echo '

'; echo $msg; } ?>