nightw0lf
PHP Developer-
Posts
12 -
Joined
-
Last visited
-
Days Won
1 -
Feedback
0%
nightw0lf last won the day on April 16
nightw0lf had the most liked content!
About nightw0lf
Recent Profile Visitors
408 profile views
nightw0lf's Achievements
-
Patch (works on 3.6) [Hidden Content] Full source (3.5) [Hidden Content]
-
Patch: [Hidden Content] Full source code: [Hidden Content]
- 1 reply
-
1
-
WTS Free DenArt Donate Panel v4 (WEB)
nightw0lf replied to nightw0lf's topic in Web design and development
UPDATE 21/9/2023 Rewritten PHP Code from PHP 8.0 standards to 5.6 for backward compatibility (Advantage for L2OFF servers) Partnership program percentage reduced from 20% to 5% (rand(0, 19) === 1) means 1 in 20 donates by chance will go to me (previously was 1 in 5 20% huge advantage for free use) Added PHP5.6 support for MsSQL servers using the old "mssql_connect" function Minor format in language system Added support to select PHP version from htaccess for hosting servers that allow it while you dont have access to this functionality Developers notes: - In other words this update includes more compatibility in connecting from hosting to server machine, allows to plug and play in a wider range of hosting companies than before. - Still hostings with antivirus need to add an exception in your antivirus notably ImunifyAv -
Required PHP 8+ <?php // // Crest read from database by nightwolf // // Description // Usage 1: show a crest stored in database by using a clan id (form or var) // Usage 2: save a crest in a file "crests/[clanid].png" (where [clanid] is the clan id in database) // // Notes // 1: Cannot be SQL injected, this system uses prepared statements and PDO driver. // 2: Checks only for integer values if not then nothing happens // 3: Make sure you have in same level of this file a folder named "crests" with write permissions // Database values $ip = ""; $dbname = ""; $user = ""; $pass = ""; // show directly image on browser or save to /crests/[clanid].png $showImage = false; // expected request from a post form (remove if you want to set a var or make this part of another class) if ($showImage == false && (isset($_POST['ClanId']) && ! is_numeric($_POST['ClanId']))) return; // not an integer // POST by form (remove if you want to set $ClanId with a var of another class) $ClanId = $_POST['ClanId'] ?? 269884921; // set your var with ClanId this is an example // call the class Crest and inject the variables $crest = new Crest($ip, $dbname, $user, $pass); $crest = $crest->getCrest($ClanId); /** * * @author Nightwolf */ class Crest { /** * * @var Crest $connection */ private $connection; /** * * @var Crest $DatabaseIP */ private $DatabaseIP; /** * * @var Crest $DatabaseName */ private $DatabaseName; /** * * @var Crest $DatabaseUser */ private $DatabaseUser; /** * * @var Crest $DatabasePass */ private $DatabasePass; /** * * @var Crest $ClanId */ private $ClanId; /** * change this according to your database if needed * * @var Crest $SQL_CREST */ private $SQL_CREST = "SELECT clan_data.`crest` FROM `clan_data` WHERE clan_data.`clan_id` = :ClanId;"; /** * Constructor of the class Crest * * @param string $ip * @param string $dbname * @param string $user * @param string $pass */ public function __construct($ip, $dbname, $user, $pass) { $this->DatabaseIP = $ip; $this->DatabaseName = $dbname; $this->DatabaseUser = $user; $this->DatabasePass = $pass; // Create new Database connection (you can inject yours in constructor) try { $this->connection = new PDO('mysql:host=' . $this->DatabaseIP . ';dbname=' . $this->DatabaseName, $this->DatabaseUser, $this->DatabasePass); } catch (PDOException $e) { die($e->getMessage()); } } /** * Check in database for the clan ID * * @param integer $ClanId * @param boolean $showImage */ public function getCrest($ClanId, $showImage) { try { $stmt = $this->connection->prepare($this->SQL_CREST); $stmt->bindParam(':ClanId', $ClanId, PDO::PARAM_INT); $stmt->setFetchMode(PDO::FETCH_ASSOC); $stmt->execute(); $result = $stmt->fetch(PDO::FETCH_ASSOC); if (isset($result['crest'])) $this->MakeImage($result['crest'], $ClanId, $showImage); } catch (Exception $e) { die($e->getMessage()); } } /** * Make a file of the crest image * * @param string $image * @param integer $ClanId * @param boolean $showImage */ private function MakeImage($image, $ClanId, $showImage) { // save path $save = "crests/" . $ClanId . ".png"; $rnd_file = tmpfile(); fwrite($rnd_file, $image); fseek($rnd_file, 0); $file = &$rnd_file; $dds = fread($file, 4); // Do not continue if the file is not a DDS image if ($dds !== 'DDS ') die("Error: is not an DDS image"); // unused size flags pitch (depends on usage i dont need them) $hdrSize = $this->readInt($file); $hdrFlags = $this->readInt($file); $imgHeight = $this->readInt($file) - 4; $imgWidth = $this->readInt($file); $imgPitch = $this->readShort($file); fseek($file, 84); $dxt1 = fread($file, 4); // do not conintue in case of a non DX1 format if ($dxt1 !== 'DXT1') die("Error: format is not DX1"); fseek($file, 128); if ($showImage == true) header("Content-type: image/png"); $img = imagecreatetruecolor($imgWidth, $imgHeight); for ($y = - 1; $y < $imgHeight / 4; $y ++) { for ($x = 0; $x < $imgWidth / 4; $x ++) { $color0_16 = $this->readShort($file); $color1_16 = $this->readShort($file); $r0 = ($color0_16 >> 11) << 3; $g0 = (($color0_16 >> 5) & 63) << 2; $b0 = ($color0_16 & 31) << 3; $r1 = ($color1_16 >> 11) << 3; $g1 = (($color1_16 >> 5) & 63) << 2; $b1 = ($color1_16 & 31) << 3; $color0_32 = imagecolorallocate($img, $r0, $g0, $b0); $color1_32 = imagecolorallocate($img, $r1, $g1, $b1); $color01_32 = imagecolorallocate($img, $r0 / 2 + $r1 / 2, $g0 / 2 + $g1 / 2, $b0 / 2 + $b1 / 2); $black = imagecolorallocate($img, 0, 0, 0); $data = $this->readInt($file); for ($yy = 0; $yy < 4; $yy ++) { for ($xx = 0; $xx < 4; $xx ++) { $bb = $data & 3; $data = $data >> 2; switch ($bb) { case 0: $c = $color0_32; break; case 1: $c = $color1_32; break; case 2: $c = $color01_32; break; default: $c = $black; break; } imagesetpixel($img, $x * 4 + $xx, $y * 4 + $yy, $c); } } } } imagepng($img, $showImage == true ? null : $save); } /** * Read Integer Values * * @param string $file * @return boolean */ private function readInt($file) { $b4 = ord(fgetc($file)); $b3 = ord(fgetc($file)); $b2 = ord(fgetc($file)); $b1 = ord(fgetc($file)); return ($b1 << 24) | ($b2 << 16) | ($b3 << 8) | $b4; } /** * Read Short values * * @param string $file * @return boolean */ private function readShort($file) { $b2 = ord(fgetc($file)); $b1 = ord(fgetc($file)); return ($b1 << 8) | $b2; } } ?>
-
for mozilla users click here [Hidden Content] for the rest: [Hidden Content]VoteCatcher.zip [Hidden Content] hopzone itopz l2network l2topgameserver l2jtop l2votes gamestop200 hotservers privateserver gamingtop100 [Hidden Content]
-
Test your webhost database extension connectors if actually working <?php /************************************************************************************* * * Author Nightwolf * Designer Dehnise * Created for Denart Designs that holds the ownership of this files. * * Purchased at [Hidden Content] get updates latest news and support. * * Copyright (C) 2019 DenArt-Designs <*****@*****.tld>, Inc - All Rights Reserved * Unauthorized copying of this file, via any medium is strictly prohibited * This file is part of DenArt Panel. * Parts of the code can not be copied and/or distributed under any circumstances. * * For further questions contact us. * Email <*****@*****.tld> * Skype <denart_grafistiki> * * Thank you for supporting us and helping to improve DenArt Designs. * *************************************************************************************/ error_reporting(E_ALL); ini_set("display_errors", true); setlocale(LC_TIME, 'en_US.UTF-8'); ini_set("max_execution_time", 10); ?> <!doctype html> <html lang="en"> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> <title>Test Web Host</title> <meta name="author" content="DenArt"> </head> <body> <center> <h1>SQL Server Connection Test</h1><br> Detail: if you don't see any "Success" message then you cant use our panel because your web host does not support this kind of connections.<br> You can try to switch the PHP Version and check again<br> Recommended PHP Version 7.3.0+ <br> Using PHP Version:<b><?php echo phpversion(); ?></b><br> <hr/> </center> Curl: <?php echo function_exists('curl_version') ? "<font color='green'>PASS</font>" : "<font color='red'>FAIL</font>" ; ?><br> Array_merge: <?php echo function_exists('array_merge') ? "<font color='green'>PASS</font>" : "<font color='orange'>FAIL</font>" ; ?> (G2A Function)<br> openssl_pkey_get_public: <?php echo function_exists('openssl_pkey_get_public') ? "<font color='green'>PASS</font>" : "<font color='orange'>FAIL</font>" ; ?> (Paysera Function)<br> Simplexml_load_string: <?php echo function_exists('simplexml_load_string') ? "<font color='green'>PASS</font>" : "<font color='red'>FAIL</font>" ; ?><br> <?php // EDIT THIS $host = "CPU\SQLEXPRESS"; // server IP Address $user = "sa"; $pass = "sa"; // ONLY IF NEED EDIT THIS $base = "lin2world"; $port = 1433; $q = 'SELECT top 10 char_name FROM user_data'; // DO NOT EDIT ABOVE $charset = 'utf8'; $options = [ PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION, PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC, ]; // if you get error message excecution time exceed remove 2 and 4 $methods = array(1, 2, 3, 4, 5); foreach ($methods as $method) { $message = null; if ($method == 1) { echo "------------------------<br>"; echo "Testing mssql_connect()...<br>"; try { if (function_exists('mssql_connect')) { $con = mssql_connect($host, $user, $pass); if ($con) { echo "mssql_connect() successfully connected!<br>"; $db_selected = mssql_select_db($base, $con); if (!$db_selected) echo ('Can\'t use db : ' . mssql_get_last_message()); $result = mssql_query($q); if (!$result) echo ('Invalid query: ' . mssql_get_last_message()); $Count = mssql_num_rows($result); print "Showing $Count rows:\n\n"; while ($Row = mssql_fetch_assoc($result)) { echo "<pre>" . $Row['char_name'] . "</pre><br>"; } mssql_close($con); } else { echo "mssql_connect() failed to connect!<br>"; } } else { echo "mssql_connect() function is not available.<br />"; } } catch (Exception $e) { echo "mssql_connect() Failed to connect! ".$e->getMessage()."<br>"; } } if ($method == 2) { echo "------------------------<br>"; echo "Testing odbc_connect()...<br>"; try { if (function_exists('odbc_connect')) { $con = odbc_connect("DRIVER={SQL Server};SERVER=".$host.";Port=1433;Database=".$base, $user, $pass); if($con) { echo "odbc_connect() successfully connected!<br>"; $result = odbc_exec($q,$con); } else echo "odbc_connect() failed to connect!<br>"; } else { echo "odbc_connect() function is not available.<br />"; } } catch (Exception $e) { echo "odbc_connect() Failed to connect! ".$e->getMessage()."<br>"; } } if ($method == 3) { echo "------------------------<br>"; echo "Testing PDO(all available drivers)...<br>"; $dsn = null; try { foreach (PDO::getAvailableDrivers() as $driver) { if ($driver == "odbc") { $driver = "odbc:Driver={SQL Server}"; } $driver .= ":"; $dsn = $driver."Server=$host,$port;Database=$base"; if ($driver == "sqlsrv:") { $con = new PDO($dsn, $user, $pass, $options); if ($con) { echo "PDO $driver successfully connected!<br>"; $stmt = $con->prepare($q); $stmt->execute(); echo "Results of char_name:<br>"; while ($row = $stmt->fetch()) { echo "<pre>".$row['char_name']."</pre>"; } unset($con); unset($stmt); } } else if ($driver == "odbc:") { $con = new PDO($dsn, $user, $pass, $options); if ($con) { echo "PDO $driver successfully connected!<br>"; $stmt = $con->prepare($q); $stmt->execute(); echo "Results of char_name:<br>"; while ($row = $stmt->fetch()) { echo $row['char_name']."<br>"; } unset($con); unset($stmt); } } else if ($driver == "dblib:") { $con = new PDO($dsn, $user, $pass, $options); if ($con) { echo "PDO $driver successfully connected!<br>"; $stmt = $con->prepare($q); $stmt->execute(); echo "Results of char_name:<br>"; while ($row = $stmt->fetch()) { echo $row['char_name']."<br>"; } unset($con); unset($stmt); } } else echo $driver." Failed or will not be checked<br>"; } } catch (\PDOException $e) { echo $e->getMessage(). ' '.(int)$e->getCode(); } } if ($method == 4) { echo "------------------------<br>"; echo "Testing mysqli_connect()...<br>"; try { if (function_exists('mysqli_connect')) { $con = mysqli_connect("p:".$host.":1433", $user, $pass, $base); if ($con) { echo "mysqli_connect() successfully connected!" . PHP_EOL; echo "Host information: " . mysqli_get_host_info($con) . PHP_EOL; } else { echo "mysqli_connect() failed to connect!" . PHP_EOL; echo "Debugging errno: " . mysqli_connect_errno() . PHP_EOL; echo "Debugging error: " . mysqli_connect_error() . PHP_EOL; } mysqli_close($con); } else { echo "mysqli_connect() function is not available.<br />"; } } catch (Exception $e) { echo "mysqli_connect() Failed to connect! ".$e->getMessage()."<br>"; } } if ($method == 5) { echo "------------------------<br>"; echo "Testing sqlsrv_connect()...<br>"; try { if (function_exists('sqlsrv_connect')) { $con = sqlsrv_connect($host, array("Database" =>$base, "UID" => $user, "PWD" => $pass)); if ($con) { echo "sqlsrv_connect() successfully connected!<br>"; if(($result = sqlsrv_query($con, $q)) !== false) { echo "Results of char_name:<br>"; while($obj = sqlsrv_fetch_object($result)) { echo "<pre>".$obj->char_name."</pre>"; } } } else { print_r(sqlsrv_errors(), true); echo "sqlsrv_connect() failed to connect!<br>"; } //sqlsrv_close($con); } else { echo "sqlsrv_connect() function is not available.<br />"; } } catch (Exception $e) { echo "qlsrv_connect() Failed to connect! ".$e->getMessage()."<br>"; } } } echo phpinfo(); since this tester is for my panel with payment functions ignore the PASS/FAIL messages focus on the connection messages
-
DenArt Designs Donate Panel V4 FREE Partner program Payment methods Paypal Stripe accepts credit cards, debit cards, ACH transfers, Apple Pay, Google Pay, Microsoft Pay, and various local payment methods from around the world. Payeer accepts BTC, LTC, ETH, DASH, BCH, USD, EUR, RUB wallets Partner concept (FREE use) Donate Panel V4 uses a partner concept: this model offers all the features of a licensed panel with a the difference that there is 20% chance the player's payment through paypal will go to me. What this means: this partner model means that you can use the panel for free and you automatically make me 20% your patner. Licensed concept Donate Panel V4 removes the partner concept: this model will remove the partner program and is normally working for you only. The payment for this concept is one time and thats it, the activation will be binded on the website name (that means if you need to change domain name will cost you a new license key). License can be bought from here License activation can be done here Download Download at [Hidden Content] Password: denart DEMO [Hidden Content] Login: test Virustotal LINK: [Hidden Content] Hosting the files Some of the hosts recommended is [Hidden Content] [Hidden Content] On any other host the panel will 99% not work! Q: Why? A: Obfuscated code means closed code and most hosting providers have antiviruses that might detect the files as malicious and block/remove files. Q: Why this hosts? A: They know and allow the files. Q: Why you obfuscated the files? A: Because there are some people who might try to make profit from. Q: Can I change styles A: Yes css are not obfuscated, structure is. Q: Do you sell source? A: No. Q: License period? A: Lifetime. Q: How many payments will go to me and you? A: The code will direct user in my paypal with chance of 5% if (random_int(0, 19) == 1) Q: How much the license cost A: 100€ lifetime Q: What the license does? A: Remove me from your patrner and 100% of the payments goes to you only. Q: Whats the difference between the V2 panel? A: Less payment methods and free use. Don't lecture me about obfuscation and antivirus and backdoor shit, you whitelisted themida "virus" from l2.exe for many years now. For me its a simple win-win situation where you make money I get also some of them. Note: Case if this model work there will be more payment methods in future with more quality and functionality. Note: I don't need trusted and skilled posts just say hi to keep up the topic. Issues or questions that are not answered here will be answered in my discord. Discord: discord.gg/3TAApxh
-
[Hidden Content] Price €40.00 L2OFF & L2JAVA Vote Panel v2 for Hopzone, L2Network, iTopz, L2JBrasil, L2TopServers, Hotservers topsites with top 3 individual rewards and total top 10 individual rewards that resets every week and keep history of winners. Simple steps 1) Players click on the 5 banners and vote for your server 2) Player write his name in the input 3) Player select the topsite he voted from the dropdown selection 4) Player will press - Reward - button and they get items ingame Detailed Information Weekly winners reset every monday 00:00:00 Top 1 player can be rewarded with individual item, top 1 icon, larger reward item icon, can be disabled or enabled. Top 2 player can be rewarded with individual item, top 2 icon, medium reward item icon, can be disabled or enabled. Top 3 player can be rewarded with individual item, top 3 icon, small reward item icon, can be disabled or enabled. Top 4-10 players can can be rewarded with same items, smaller reward item icon, can be disabled or enabled. The top player list will show the players name, their times voted for this week, and the reward they will receive on reset. There is a historical log for the weekly winners showing their name and their total votes for the current weekly win and the week they win. There is also a Log of top 10 latest voters with their name, the topsite they voted for, and the date (not date-time on porpuse) Technical Information The panel will check the website API of each topsite, so the players must have vote registered. The players are cached in json files to stress less the database. Item icons are created in php dynamically. Item icons will be downloaded from our server in yours if they not exist. Every text displayed exist in config Google recaptcha Invisible v3 The items go ingame through itemDelivery table for L2OFF and vote_holder for L2JAVA Requirements Google recaptcha keys (recaptcha is a build in function) Database connection with MySQLi, MsSQL, PDO or SQLite drivers. PHP 8.0+ (7.4 might work but not tested) MySQL 5.5+ Memory 512M+ Activation Key (Your purchase will provide you an activation key) The activation key must be used to activate your URL (the key will be binded to the url of your choice) Hosting (recommended on [Hidden Content]) SSL Sertificate installed on your host Files included Activation instructions file Install SQL File for L2J and L2OFF Support info file Virus total report Website files to upload Java file to install (Currently adapted for aCis) Diff file for java projects + lucera vote.ext.jar 21-08-2022 Update Added L2JBrasil Api Vote reward Added L2TopServers Api Vote reward Added a trick to allow designers change styles without clearing browser data. 23-08-2022 Update Fix for L2JBrasil Api Fix for L2TopServers Api Fix Java SQL Query Generated lucera vote.ext.jar and included in files SQL Queries support older version of MySQL 5.5 24-08-2022 Update Added multiple rewards for voting in all topsites Rework Rest Api connections Better way of getting the user's ip behind proxy Added configuration to disable topsites Added custom message 29-08-2022 Update Supports advext packs with user_delivery table 25-01-2023 Update Added bootstrap 5.3.0 Added jquery 3.5.1 Responsive design Added Tooltips Added effects on vote buttons Time on top to inform users about their next vote is now in panel Added Hotservers topsite Changed info messages Added error log Added redirection method for some cases Updated tables with bootstrap table classes Updated SQL files for l2off and l2j Reduced code 70% the script is now much faster Ready for united item delivery method Removed vote_holder Introducing user_item_delivery instead (all denart panels will work with this in future) [Hidden Content] including sources for lucera supports almost all projects Table will contain data and where they come from (example: Donate, Vote, Referral) Table will contain all info from payment (example: Paypal, Stripe) NOTE: Requires Donate Panel Table will contain info from vote (example: Vote website) Table will contain info from referral (example: Invited friend, Box reward from invitations) NOTE: Requires Referral Panel Table will contain payment method, character info and reward id/count. 28-01-2023 Update Removed individual classes for topsites Added universal class for topsites (totally reworked) Cleanup in logger function Strict value check on topsite post request Configuration for Steps show in center card Tooltip for topsite banners, char input, topsite select, reward confirm. Messages moved under step 2 DenArt Logo moved in end of the html code (was broken in mobiles) Added menu under card 3 with the daily rewards Corrected messages now show correctly Fixed redirection issue New messages SQL load Errors for account info, ip checks, and vote eligibility New messages SQL read Errors for restriction New message for SQL error on delivery rewards New message show for invalid captcha New messages for Database DSN connections Full log for topsite requests Upgraded topsite request connections Topsite Rest API is now checked for header 200 "OK" and log errors New Text instructions Reworked messages removed lazy way and implemented the correct way Updated style.css Config to enable/disable reward items on third card Fixed double ip issue posted on topsites it was a PHP problem. NOTE: The reward for java servers like lucera and l2jeternity can work with Item Delivery Manager that is included. The files are encoded, this means for some hosts might find them as virus, our partners in [Hidden Content] offer hosts with our files whitelisted. If you wish in the future to buy another license to bind a new URL the price is 20€ contact nightwolf at discord www.zip file [Hidden Content] MD5 e04d87225bc824153f4f1d8557173540 SHA-1 efab574e8f824fc14293efd8ad8cc09bd1bf1417 SHA-256 593fcc13eb528c6093581e78e2d8cec125fa2222d0ed8ed6bc2d13c770be6d59 Vhash cc641d429474fe50384ecc0a9920e12c SSDEEP 98304:XvbomivnaVPn4UcIbwQ7cwj9ZyEQLGzv6RxhqKq7KnF8SK9o4MXhHYoZ7E:fbDmgnUOwst9IpLGzA+KIaO1B TLSH T1B2263360529B480889513FE8926E0C97128397DF85EFD3552AD250D6F9C8EB733B93E3 File type ZIP Magic Zip archive data, at least v1.0 to extract TrID Mozilla Archive Format (gen) (58.3%) ZIP compressed archive (33.3%) PrintFox/Pagefox bitmap (640x800) (8.3%) File size 4.41 MB (4619817 bytes) More services DenArt nWatch, Donate, Vote, ACP, L2OFF and L2J and more Clients [Hidden Content] [Hidden Content]
-
L2Java Delivery Manager for DenArt Designs donate, vote, referral and acp panels. [Hidden Content]
-
VDSystem supports 8 Topsites on 50 Projects and 2 Donation Systems, 1 Vote and Referral panels Current version: 1.6 Download at: [Hidden Content]