$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'; @@ -89,12 +193,6 @@ if(!isset($_POST['pass']) || $_POST['pass']!==ADMINPASS){ } } echo ''; - if(isset($_REQUEST['cat']) && $_REQUEST['cat']