Suvodip 2024-07-06 21:19:02 +05:30
parent b9e2e40f11
commit d368213568
23 changed files with 879 additions and 591 deletions

52
.htac_404.php Normal file
View File

@ -0,0 +1,52 @@
<?php
require_once('.hta_config/db_config.php');
require_once('.htac_header.php');
?>
<section class="diZContainer diZmxAuto">
<h1 class="diZBorderBottom">SiliconPin - Tools</h1>
<div class="diZFlexRow diZmy8 diZFlexRow">
<a href="/tools" class="diZButtonDefault diZmr2">All</a>
<a href="/tools/image" class="diZButtonDefault diZmr2">Image</a>
<a href="/tools/text" class="diZButtonDefault diZmr2">Text</a>
<a href="/tools/html" class="diZButtonDefault diZmr2">HTML</a>
<a href="/tools/color" class="diZButtonDefault diZmr2">Color</a>
<a href="/tools/info" class="diZButtonDefault diZmr2">Info</a>
<a href="/tools/encrypt-decrypt" class="diZButtonDefault diZmr2">Encrypt / Decrypt</a>
</div>
<div class="diZGridCols1-3">
<?php
$requestUri = $_SERVER['REQUEST_URI'];
$requestUri = explode('/', $requestUri)[2];
$requestUri = ($requestUri <= 1) ? "%%" : $requestUri;
if(isset($requestUri) && strlen($requestUri > 1)){
try {
$conn = new PDO("mysql:host=$mariaServer;dbname=$mariaDb", $mariaUser, $mariaPass);
$conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$stmt = $conn->prepare("SELECT * FROM api_tools WHERE `type` = :type");
$stmt->bindParam(':type', $requestUri);
$stmt->execute();
$rows = $stmt->fetchAll(PDO::FETCH_ASSOC);
// var_dump($rows);
foreach($rows as $row){
// echo $row['name'].'<br>';
if($row['status']==1){
$link_button = '<a href="/tools/'.$row['slug'].'" ><p class="diZButtonDefault">'.$row['name'].'</p></a>';
} else{
$link_button = '<p class="diZButtonDefault">'.$row['name'].'</p>';
}
echo '
<div class="diZblogStyle diZPadding10px">
<p class="diZLineClamp1">'.$row['description'].'</p>
'.$link_button.'
</div>';
}
} catch (PDOException $e) {
$in_page_message = "<p class='text-danger'>Error: " . $e->getMessage() . "</p>";
}
}else{
echo 'Page Not Found!';
}
?>
</div>
</section>

View File

@ -1,19 +1,20 @@
<?php
require_once('.hta_config/siliconpin_sp.php');
require_once('.hta_config/db_config.php');
require_once('.htac_header.php');
?>
<section class="container-zz mx-auto">
<h1 class="grid-container" style="font-size: 30px; font-weight: bold; padding-top: 20px; padding-bottom: 10px; border-bottom: 4px solid #FFF; margin-bottom: 20px;">SiliconPin - Tools</h1>
<div class="grid-container" style="display: flex; flex-direction: row; overflow-x: auto; margin-bottom: 20px;">
<a href="/tools/type/?type=image" class="choosen-button">Image</a>
<a href="/tools/type/?type=text" class="choosen-button">Text</a>
<a href="/tools/type/?type=html" class="choosen-button">HTML</a>
<a href="/tools/type/?type=color" class="choosen-button">Color</a>
<a href="/tools/type/?type=info" class="choosen-button">Info</a>
<a href="/tools/type/?type=encrypt-decrypt" class="choosen-button">Encrypt / Decrypt</a>
<section class="diZContainer diZmxAuto">
<h1 class="diZBorderBottom">SiliconPin - Tools</h1>
<div class="diZFlexRow diZmy8 diZFlexRow diZOverflowAuto diZWhiteSpaceNowrap">
<a href="/tools" class="diZButtonDefault diZmr2">All</a>
<a href="/tools/image" class="diZButtonDefault diZmr2">Image</a>
<a href="/tools/text" class="diZButtonDefault diZmr2">Text</a>
<a href="/tools/html" class="diZButtonDefault diZmr2">HTML</a>
<a href="/tools/color" class="diZButtonDefault diZmr2">Color</a>
<a href="/tools/info" class="diZButtonDefault diZmr2">Info</a>
<a href="/tools/encrypt-decrypt" class="diZButtonDefault diZmr2">Encrypt / Decrypt</a>
</div>
<div class="grid-container">
<div class="diZGridCols1-3">
<?php
try {
$conn = new PDO("mysql:host=$mariaServer;dbname=$mariaDb", $mariaUser, $mariaPass);
@ -25,13 +26,13 @@ require_once('.htac_header.php');
foreach($rows as $row){
// echo $row['name'].'<br>';
if($row['status']==1){
$link_button = '<a href="/tools/'.$row['slug'].'" ><p class="choosen-button">'.$row['name'].'</p></a>';
$link_button = '<a href="/tools/'.$row['slug'].'" ><p class="diZButtonDefault">'.$row['name'].'</p></a>';
} else{
$link_button = '<h2><p class="choosen-button">'.$row['name'].'</p></h2>';
$link_button = '<p class="diZButtonDefault">'.$row['name'].'</p>';
}
echo '
<div class="grid-item blog-style">
<p class="line-clamp-2" style="text-align: justify;" >'.$row['description'].'</p>
<div class="diZblogStyle diZPadding10px">
<p class="diZLineClamp2 diZTextJustify diZToolsContentHeight" >'.$row['description'].'</p>
'.$link_button.'
</div>';
}
@ -40,63 +41,4 @@ require_once('.htac_header.php');
}
?>
</div>
</section>
<style>
.container-zz{width:100%}@media (min-width: 640px){.container-zz{max-width:640px}}@media (min-width: 768px){.container-zz{max-width:768px}}@media (min-width: 1024px){.container-zz{max-width:1024px}}@media (min-width: 1280px){.container-zz{max-width:1280px}}@media (min-width: 1536px){.container-zz{max-width:1536px}}
.mx-auto{margin-left:auto;margin-right:auto;
padding: 10px;
}
.my-20{margin-top:5rem;margin-bottom:5rem}
.grid-container {
display: grid;
grid-gap: 10px;
margin: 0 auto;
max-width: 1200px;
}
.grid-item {
padding: 10px;
text-align: center;
border-radius: 15px;
}
/* Mobile (up to 600px) */
@media only screen and (max-width: 600px) {
.grid-container {
grid-template-columns: repeat(1, 1fr);
}
}
/* Medium (601px - 1024px) */
@media only screen and (min-width: 601px) and (max-width: 1024px) {
.grid-container {
grid-template-columns: repeat(2, 1fr);
}
}
/* Large (1025px and above) */
@media only screen and (min-width: 1025px) {
.grid-container {
grid-template-columns: repeat(3, 1fr);
}
}
.line-clamp-2 {
display: -webkit-box;
-webkit-line-clamp: 2;
-webkit-box-orient: vertical;
overflow: hidden;
}
.line-clamp-1 {
display: -webkit-box;
-webkit-line-clamp: 1;
-webkit-box-orient: vertical;
overflow: hidden;
}
#dynamicContent > img{
border-top-left-radius: 10px;
border-top-right-radius: 10px;
width: 100%;
height: 200px;
}
</style>
</section>

View File

@ -1,20 +1,21 @@
<div class="container-ddz">
<h2 style="text-align: center; font-size: 25px; margin-bottom: 10px;">Convert Base64 to Image</h2>
<textarea class="base64-textarea" placeholder="Enter base64 encoded image data"></textarea>
<p id="no-select-message" style="display: none; color: red;"></p>
<button class="convert-button">Convert to Image</button>
<div class="preview-container" id="preview"></div>
<div id="download-options" style="display: none; display: flex; flex-direction: column; justify-content: center; ">
<section class="diZContainer diZmxAuto">
<h2 class="diZBorderBottom">Convert Base64 to Image</h2>
<div class="diZMaxW500 diZmxAuto diZFlexColumn toolsSection diZmy20">
<textarea rows="10" class="base64-textarea" placeholder="Enter base64 encoded image data"></textarea>
<p class="diZDisplayNone diZDengerText" id="no-select-message"></p>
<button class="convert-button diZmt2">Convert to Image</button>
<div class="" id="preview"></div>
<div class="diZFlexColumn diZDisplayNone diZJustifyCenter" id="download-options" >
<p>Choose Image Format & Download:</p>
<div>
<button class="format-button" data-format="png">PNG</button>
<button class="format-button" data-format="jpeg">JPEG</button>
<button class="format-button" data-format="webp">WebP</button>
<button id="download-button" style="display: none;">Download Image</button>
</div>
</div>
</div>
</div>
</section>
<script>
document.querySelector('.convert-button').addEventListener('click', function() {
var base64Data = document.querySelector('.base64-textarea').value.trim();
@ -48,60 +49,4 @@
downloadLink.download = 'image.' + imageFormat;
downloadLink.click();
}
</script>
<style>
.container-ddz {
max-width: 600px;
margin: 0 auto;
background-color: #3d3d3d;
border-radius: 8px;
padding: 20px;
box-shadow: 0 2px 4px rgba(255, 255, 255, 0.1);
}
.preview-container {
display: flex;
justify-content: center;
margin-top: 20px;
margin-bottom: 20px;
}
.base64-textarea {
width: 100%;
height: 150px;
padding: 8px;
resize: none;
border: 1px solid #ccc;
border-radius: 5px;
font-size: 14px;
box-sizing: border-box;
}
.convert-button {
width: 100%;
background-color: #7d7d7d;
color: white;
padding: 6px 20px;
border: none;
border-radius: 5px;
cursor: pointer;
font-size: 14px;
transition: background-color 0.3s;
}
.convert-button:hover {
background-color: #9d9d9d;
}
.format-button {
display: inline-block;
background-color: #7d7d7d;
color: white;
padding: 6px 12px;
margin: 5px;
border: none;
border-radius: 5px;
cursor: pointer;
font-size: 14px;
transition: background-color 0.3s;
}
.format-button:hover {
background-color: #9d9d9d;
}
</style>
</script>

View File

@ -2,7 +2,7 @@
<div class="color-shades-generator">
<h1>Color Shades Generator</h1>
<div style="display: flex; flex-direction: column; justify-content: center; align-items: center;">
<label for="colorInput" style="color: #000;">Choose Color</label>
<label for="colorInput">Choose Color</label>
<input type="color" id="colorInput" class="color-input" value="#ff0000" />
</div>
<div id="colorShades" class="color-shades"></div>
@ -99,14 +99,12 @@
max-width: 600px;
width: 100%;
padding: 20px;
background-color: #fff;
border-radius: 10px;
box-shadow: 0 0 10px rgba(0, 0, 0, 0.1);
}
.color-shades-generator h1 {
font-size: 36px;
margin-bottom: 20px;
color: #333;
}
.color-input {
width: 50px;

View File

@ -0,0 +1,34 @@
<section class="diZContainer diZmxAuto">
<h2 class="diZBorderBottom">Ultimate Domain & IP Lookup Tool</h2>
</section>
<!-- <p class="diZTextJustify">Discover detailed information about any domain and IP address with ease using Who-Is. Our tool provides instant access to essential data, including ownership, registration details, and more, all in a user-friendly interface designed for efficiency and accuracy.</p> -->
<form method="post" class="diZToolsSection diZmt4 diZmb4 diZBorderRadius diZPadding5px">
<div class="diZFlexRowCol diZJustifyCenter diZItemsCenter">
<input class="diZmr2 diZw70" placeholder="Domain" name="domain" type="text" />
</div>
</form>
<?php
if(isset($_POST['domain']) && $_POST['domain']){
function validateDomain($domain) {
$regex = "/^(?!\-)(?:[a-zA-Z0-9\-]{0,61}[a-zA-Z0-9]\.)+[a-zA-Z]{2,}$/";
if (preg_match($regex, $domain)) {
return true;
} else {
return false;
}
}
$domain = isset($_POST['domain']) ? $_POST['domain'] : '';
if ($domain && validateDomain($domain)) {
$command = 'dig '.$_POST['domain'].' A +short';
$escaped_command = escapeshellcmd($command);
$output = shell_exec($escaped_command);
echo '<div class="diZContainer diZmxAuto diZPadding5px"><pre class="diZTextJustify" style="width: fit-content;"> ',$output, '</pre> <br><br></div>';
} else {
echo "Invalid domain.";
}
}
?>

View File

@ -0,0 +1,34 @@
<section class="diZContainer diZmxAuto">
<h2 class="diZBorderBottom">Ultimate Domain & IP Lookup Tool</h2>
</section>
<!-- <p class="diZTextJustify">Discover detailed information about any domain and IP address with ease using Who-Is. Our tool provides instant access to essential data, including ownership, registration details, and more, all in a user-friendly interface designed for efficiency and accuracy.</p> -->
<form method="post" class="diZToolsSection diZmt4 diZmb4 diZBorderRadius diZPadding5px">
<div class="diZFlexRowCol diZJustifyCenter diZItemsCenter">
<input class="diZmr2 diZw70" placeholder="Domain" name="domain" type="text" />
</div>
</form>
<?php
if(isset($_POST['domain']) && $_POST['domain']){
function validateDomain($domain) {
$regex = "/^(?!\-)(?:[a-zA-Z0-9\-]{0,61}[a-zA-Z0-9]\.)+[a-zA-Z]{2,}$/";
if (preg_match($regex, $domain)) {
return true;
} else {
return false;
}
}
$domain = isset($_POST['domain']) ? $_POST['domain'] : '';
if ($domain && validateDomain($domain)) {
$command = 'dig '.$_POST['domain'].' MX +short';
$escaped_command = escapeshellcmd($command);
$output = shell_exec($escaped_command);
echo '<div class="diZContainer diZmxAuto diZPadding5px"><pre class="diZTextJustify" style="width: fit-content;"> ',$output, '</pre> <br><br></div>';
} else {
echo "Invalid domain.";
}
}
?>

View File

@ -0,0 +1,34 @@
<section class="diZContainer diZmxAuto">
<h2 class="diZBorderBottom">Ultimate Domain & IP Lookup Tool</h2>
</section>
<!-- <p class="diZTextJustify">Discover detailed information about any domain and IP address with ease using Who-Is. Our tool provides instant access to essential data, including ownership, registration details, and more, all in a user-friendly interface designed for efficiency and accuracy.</p> -->
<form method="post" class="diZToolsSection diZmt4 diZmb4 diZBorderRadius diZPadding5px">
<div class="diZFlexRowCol diZJustifyCenter diZItemsCenter">
<input class="diZmr2 diZw70" placeholder="Domain" name="domain" type="text" />
</div>
</form>
<?php
if(isset($_POST['domain']) && $_POST['domain']){
function validateDomain($domain) {
$regex = "/^(?!\-)(?:[a-zA-Z0-9\-]{0,61}[a-zA-Z0-9]\.)+[a-zA-Z]{2,}$/";
if (preg_match($regex, $domain)) {
return true;
} else {
return false;
}
}
$domain = isset($_POST['domain']) ? $_POST['domain'] : '';
if ($domain && validateDomain($domain)) {
$command = 'dig '.$_POST['domain'].' NS +short';
$escaped_command = escapeshellcmd($command);
$output = shell_exec($escaped_command);
echo '<div class="diZContainer diZmxAuto diZPadding5px"><pre class="diZTextJustify" style="width: fit-content;"> ',$output, '</pre> <br><br></div>';
} else {
echo "Invalid domain.";
}
}
?>

View File

@ -1,17 +1,13 @@
<div style="padding-bottom: 350px;">
<div class="container-dzx">
<h1>HEX to RGB Converter</h1>
<label for="hex">HEX Color:</label><br>
<input onchange="visibleColor();" type="text" id="hex" value="#" pattern="^#([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3})$" required style="background-color: #3d3d3d; width: 150px; padding: 8px; border-radius: 5px; border: 1px solid #ccc; margin-bottom: 10px;">
<div class="diZContainer diZmxAuto">
<h1 class="diZBorderBottom">HEX to RGB Converter</h1>
<div class="diZMaxW600 diZmxAuto toolsSection diZmy20 diZPadding15px">
<label for="hex">HEX Color:</label><br><br>
<input style="width: 96%;" onchange="visibleColor();" type="text" id="hex" value="#" pattern="^#([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3})$" required ><br>
<br>
<!-- <div id="hexColor" style="width: 50px; height: 50px;">Code</div> -->
<!-- <input type="color" id="hexColor" name="hexColor" > -->
<button id="convert-button" class="button-style" onclick="convertHexToRgb()">Convert</button>
<div style="display: flex; flex-direction: row; justify-content: center; align-items: center; place-items: center;">
<div id="result"></div>
<div>
<button id="copyButton" style="display: none; padding: 5px 10px 5px 10px; background-color: #7d7d7d; border-radius: 5px;" onclick="copyToClipboard()">Copy</button>
</div>
<div id="result"></div><br>
<button id="convert-button" onclick="convertHexToRgb()">Convert</button>
<button id="copyButton" onclick="copyToClipboard()">Copy</button>
<div>
</div>
</div>
</div>
@ -56,51 +52,3 @@
document.getElementById('copied-notice').innerHTML = 'RGB values copied successfully';
}
</script>
<style>
.container-dzx {
background-color: #3d3d3d;
border-radius: 5px;
box-shadow: 0px 0px 10px 0px #FFFFFF80;
padding: 20px;
max-width: 500px;
width: 100%;
text-align: center;
transform: translate(-50%, -70%);
position: absolute;
top: 50%;
left: 50%;
}
form {
display: flex;
flex-direction: column;
align-items: center;
}
input[type="number"] {
width: 100px;
padding: 8px;
border-radius: 5px;
border: 1px solid #ccc;
margin-bottom: 10px;
}
.button-style{
padding: 10px 20px;
/* background-color: #7d7d7d; */
color: #fff;
border: none;
border-radius: 5px;
cursor: pointer;
}
.button-style:hover {
background-color: #9d9d9d;
}
#result {
color: #007bff;
}
</style>

View File

@ -1,3 +1,7 @@
<?php
require_once('.htac_header.php');
?>
<div class="page-container">
<div class="container-dxc">
<h1 style="text-align: center; font-size: 25px;">HTML Remover</h1>

39
html-decode.php Normal file
View File

@ -0,0 +1,39 @@
<?php
require_once('.htac_header.php');
?>
<section class="diZContainer diZmxAuto diZmy20">
<div class="diZMaxW600 diZmxAuto">
<h1>HTML Decoder</h1>
<div class="diZFlexColumn">
<textarea class="diZScrollBarNone" rows="10" id="encodedText" placeholder="Enter encoded HTML here..."></textarea>
<button class="diZmt4" onclick="decodeHtml()">Decode</button>
<textarea class="diZmt4 diZScrollBarNone" rows="10" id="decodedText" readonly placeholder="Decoded HTML will appear here..."></textarea>
<button class="diZmt4" id="copyButton" onclick="copyToClipboard()">Copy</button>
</div>
</div>
</section>
<script>
function decodeHtml() {
const encodedInput = document.getElementById('encodedText').value;
const textarea = document.createElement('textarea');
textarea.innerHTML = encodedInput;
const decoded = textarea.value;
document.getElementById('decodedText').value = decoded;
}
function copyToClipboard() {
const decodedText = document.getElementById('decodedText');
decodedText.select();
decodedText.setSelectionRange(0, 99999); // For mobile devices
document.execCommand('copy');
let copyButtons = document.getElementById('copyButton');
copyButtons.innerHTML = 'Copied to clipboard!';
setTimeout(() => {
copyButtons.innerHTML = 'Copy';
}, 2000);
// alert('Decoded HTML copied to clipboard!');
}
</script>

40
html-encode.php Normal file
View File

@ -0,0 +1,40 @@
<?php
require_once('.htac_header.php');
?>
<section class="diZContainer diZmxAuto diZmy20">
<div class="diZMaxW600 diZmxAuto">
<h1>HTML Encoder</h1>
<div class="diZFlexColumn">
<textarea class="diZScrollBarNone" rows="10" id="inputText" placeholder="Enter HTML code here..."></textarea>
<button class="diZmt4" onclick="encodeHtml()">Encode</button>
<textarea class="diZmt4 diZScrollBarNone" rows="10" id="outputText" readonly placeholder="Encoded HTML will appear here..."></textarea>
<button class="diZmt4" id="copyButton" onclick="copyToClipboard()">Copy</button>
</div>
</div>
</section>
<script>
function encodeHtml() {
const input = document.getElementById('inputText').value;
const encoded = input.replace(/[\u00A0-\u9999<>&'"]/gim, function(i) {
return '&#' + i.charCodeAt(0) + ';';
});
document.getElementById('outputText').value = encoded;
}
function copyToClipboard() {
const encodedText = document.getElementById('outputText');
encodedText.select();
encodedText.setSelectionRange(0, 99999); // For mobile devices
document.execCommand('copy');
let copyButtons = document.getElementById('copyButton');
copyButtons.innerHTML = 'Copied to clipboard!';
setTimeout(() => {
copyButtons.innerHTML = 'Copy';
}, 2000);
// alert('Decoded HTML copied to clipboard!');
}
</script>

View File

@ -1,24 +1,26 @@
<div class="containezx" style="padding: 10px;">
<h1 style="font-size: 20px;">Image Compression Tool</h1>
<input type="file" id="imageInput" accept="image/*">
<br>
<label for="qualityInput">Compression Quality:</label>
<div style="display: flex; flex-direction: row;">
<input type="range" id="qualityInput" min="1" max="100" step="1" value="10" />&nbsp;
<span id="qualityValue" style="margin-top: -8px; font-size: 20px;">10%</span>
<section class="diZContainer diZmxAuto ">
<h1 class="diZBorderBottom">Image Compression Tool</h1>
<div class="toolsSection diZMaxW500 diZmxAuto diZmy20">
<div>
<input type="file" id="imageInput" accept="image/*">
</div>
<div>
<label for="qualityInput">Compression Quality:</label>
<div class="diZFlexRow">
<input class="diZw100" type="range" id="qualityInput" min="1" max="100" step="1" value="10" />&nbsp;
<span id="qualityValue">10%</span>
</div>
</div>
<div class="image-preview">
<img id="preview" src="" alt="" style="width: 100%;" />
<span id="imageSize" class="image-size"></span>
</div>
<div class="diZFlexBetween">
<button class="comp-button" onclick="compressImage()">Compress Image</button>
<a class="diZDisplayNone diZButtonDefault" id="downloadLink" href="#" download="compressed_image.jpg">Download Compressed Image</a>
</div>
</div>
<br>
<div class="image-preview">
<img id="preview" src="" alt="" />
</div>
<span id="imageSize" class="image-size"></span>
<br>
<div style="display: flex; flex-direction: row;">
<button class="comp-button" onclick="compressImage()">Compress Image</button>
<a class="comp-button" id="downloadLink" href="#" download="compressed_image.jpg" style="display: none; margin-left: 20px;">Download Compressed Image</a>
</div>
</div>
</section>
<script>
function compressImage() {
@ -70,62 +72,4 @@ function compressImage() {
document.getElementById('qualityInput').addEventListener('input', function() {
document.getElementById('qualityValue').textContent = this.value + "%";
});
</script>
<style>
.containezx {
margin-top: 100px;
max-width: 600px;
margin: 100px auto;
background-color: #3d3d3d;
padding: 20px;
border-radius: 8px;
box-shadow: 0 0 5px #ffffff;
}
h1 {
text-align: center;
margin-bottom: 20px;
}
label {
font-weight: bold;
}
input[type="file"] {
margin-bottom: 10px;
}
input[type="range"] {
width: 100%;
margin-bottom: 10px;
}
.image-preview {
text-align: center;
margin-bottom: 20px;
}
#preview {
max-width: 100%;
border-radius: 8px;
}
.image-size {
font-size: 14px;
color: #999;
}
.comp-button{
background-color: #6d6d6d;
padding: 10px 20px 10px 20px;
color: #fff;
border: none;
padding: 10px 20px;
font-size: 12px;
border-radius: 5px;
cursor: pointer;
transition: background-color 0.3s;
}
.comp-button:hover{
background-color: #8d8d8d;
}
</style>
</script>

View File

@ -1,11 +1,16 @@
<div class="container-dx">
<h2 style="text-align: center; font-size: 25px; margin-bottom: 10px;">Convert Image to Base64</h2>
<input type="file" class="image-input" accept="image/*">
<div class="preview-container" id="preview" style=""></div>
<textarea class="base64-textarea" readonly></textarea>
<P style="display: none; text-align: center;" id="copied-notice"></P>
<button class="copy-button">Copy Base64</button>
</div>
<section class="diZContainer diZmxAuto">
<h2 class="diZBorderBottom">Convert Image to Base64</h2>
<div class="diZMaxW500 diZmxAuto toolsSection diZmy20">
<div class="diZFlexColumn ">
<input type="file" class="image-input diZmt2" accept="image/*">
<textarea rows="10" class="base64-textarea diZmt2" readonly></textarea>
<p class="diZDisplayNone diZTextCenter diZmt2" id="copied-notice"></p>
<div class="diZmt2" id="preview" ></div>
<button class="copy-button diZmt2">Copy Base64</button>
</div>
</div>
</section>
<script>
document.querySelector('.image-input').addEventListener('change', function() {
@ -16,6 +21,7 @@
var base64 = e.target.result;
var img = document.createElement('img');
img.src = base64;
img.style.width = '100%';
document.getElementById('preview').innerHTML = '';
document.getElementById('preview').appendChild(img);
document.querySelector('.base64-textarea').value = base64;
@ -32,44 +38,3 @@
document.getElementById('copied-notice').innerHTML = 'Base64 copied to clipboard!';
});
</script>
<style>
.container-dx {
max-width: 600px;
margin: 0 auto;
background-color: #3d3d3d;
border-radius: 8px;
padding: 20px;
box-shadow: 0 2px 4px rgba(255, 255, 255, 0.1);
margin-top: 100px;
}
.preview-container {
display: flex;
justify-content: center;
margin-top: 20px;
margin-bottom: 20px;
}
.base64-textarea {
width: 100%;
height: 150px;
padding: 8px;
resize: none;
border: 1px solid #ccc;
border-radius: 5px;
font-size: 14px;
box-sizing: border-box;
background-color: #7d7d7d;
}
.copy-button {
background-color: #7d7d7d;
color: white;
padding: 10px 20px;
border: none;
border-radius: 5px;
cursor: pointer;
font-size: 14px;
transition: background-color 0.3s;
}
.copy-button:hover {
background-color: #9d9d9d;
}
</style>

110
json-formatter.php Normal file
View File

@ -0,0 +1,110 @@
<?php
require_once('.htac_header.php');
?>
<section class="diZContainer diZmxAuto diZmy8">
<h1 class="diZBorderBottom">JSON Formatter</h1>
<div class="diZFlexRowCol">
<div class="diZw100 jsonCustomHeight diZFlexColumn diZJsonInputBorder">
<textarea oninput="parseJSON()" id="jsonInput" class="diZJsonInput diZScrollBarNone" rows="40" placeholder="Enter JSON here"></textarea><br>
</div>
<div class="diZw100 jsonCustomHeight diZFlexColumn diZJsonInputBorder">
<div id="output" class="diZJsonViewer"></div>
</div>
</div>
<button class="diZFloatRight diZmt4 diZmb4 diZml2 diZJsonCopyButton" onclick="copyToClipboard()">Copy JSON</button>
<button class="diZFloatRight diZmt4 diZmb4 diZml2 diZJsonCopyButton" onclick="downloadJsonData()">Download JSON</button>
<p class="diZFloatRight diZJsonKey diZmt4" id="countArray">Array Length: 0</p>
</section>
<script>
function parseJSON() {
const input = document.getElementById('jsonInput').value;
const outputElement = document.getElementById('output');
outputElement.innerHTML = ''; // Clear previous output
try {
const parsedData = JSON.parse(input);
outputElement.appendChild(createTreeView(parsedData));
let totalObjects = parsedData.length;
document.getElementById('countArray').innerHTML = 'Array Length: '+ totalObjects;
} catch (error) {
outputElement.textContent = 'Error parsing JSON: ' + error.message;
outputElement.style.color = '#fff';
}
}
function createTreeView(data) {
const container = document.createElement('div');
if (typeof data === 'object' && data !== null) {
const ul = document.createElement('ul');
ul.className = 'diZJsonUl';
for (const key in data) {
if (data.hasOwnProperty(key)) {
const li = document.createElement('li');
li.className = 'diZJsonLi';
const keySpan = document.createElement('span');
keySpan.className = 'diZJsonKey';
keySpan.textContent = `${key}: `;
const valueSpan = document.createElement('span');
if (typeof data[key] === 'object' && data[key] !== null) {
const childContainer = createTreeView(data[key]);
li.appendChild(keySpan);
li.appendChild(childContainer);
} else {
if (typeof data[key] === 'string') {
valueSpan.className = 'diZJsonString';
valueSpan.textContent = `"${data[key]}"`;
} else {
valueSpan.className = 'diZJsonValue';
valueSpan.textContent = data[key];
}
li.appendChild(keySpan);
li.appendChild(valueSpan);
}
ul.appendChild(li);
}
}
container.appendChild(ul);
} else {
const span = document.createElement('span');
if (typeof data === 'string') {
span.className = 'diZJsonString';
span.textContent = `"${data}"`;
} else {
span.className = 'diZJsonValue';
span.textContent = data;
}
container.appendChild(span);
}
return container;
}
function copyToClipboard() {
const input = document.getElementById('jsonInput').value;
navigator.clipboard.writeText(input).then(() => {
console.log('JSON copied to clipboard!');
}, (err) => {
console.log('Failed to copy JSON: ', err);
});
}
function downloadJsonData() {
const jsonData = document.getElementById('jsonInput').value;
let jsonObject;
try {
jsonObject = JSON.parse(jsonData);
} catch (error) {
console.log('Invalid JSON data');
return;
}
const jsonString = JSON.stringify(jsonObject, null, 2);
const blob = new Blob([jsonString], { type: 'application/json' });
const downloadLink = document.createElement('a');
downloadLink.href = URL.createObjectURL(blob);
downloadLink.download = 'json-data.json';
downloadLink.click();
URL.revokeObjectURL(downloadLink.href);
}
</script>

View File

@ -1,176 +1,126 @@
<style>
/* body {
font-family: Arial, sans-serif;
background-color: #f0f0f0;
margin: 0;
padding: 0;
} */
.container-dyz {
max-width: 600px;
margin: 50px auto;
padding: 20px;
background-color: #3d3d3d;
border-radius: 8px;
box-shadow: 0 0 10px rgba(0, 0, 0, 0.1);
}
.table-container {
max-width: 900px;
margin: 50px auto;
padding: 20px;
background-color: #3d3d3d;
border-radius: 8px;
box-shadow: 0 0 10px rgba(0, 0, 0, 0.1);
}
label {
font-weight: bold;
}
.textarea-text {
width: 100%;
height: 150px;
margin-bottom: 10px;
resize: vertical;
padding: 10px;
border-radius: 4px;
border: 1px solid #ccc;
font-size: 16px;
background-color: #1d1d1d;
}
span {
color: #007bff;
font-weight: bold;
}
.content-table {
width: 100%;
border-collapse: collapse;
}
.content-table th, .content-table td {
border: 1px solid #dddddd;
text-align: left;
padding: 8px;
}
.content-table .table-head {
background-color: #f2f2f2;
}
</style>
<div class="container-dyz">
<h1>Text Counter</h1>
<section class="diZContainer diZmxAuto">
<h1 class="diZBorderBottom">Text Counter</h1>
<div class="diZMaxW600 diZmxAuto diZmyAuto diZFlexColumn toolsSection diZmt20">
<label for="inputText">Enter your text:</label><br>
<textarea class="textarea-text" id="inputText" placeholder="Type your text here..." oninput="countTextMetrics()"></textarea>
<p>Total letters: <span id="letterCount">0</span></p>
<p>Total words: <span id="wordCount">0</span></p>
<p>Total sentences: <span id="sentenceCount">0</span></p>
<p>Total paragraphs: <span id="paragraphCount">0</span></p>
</div>
<div class="table-container">
<h2 style="text-align: center; font-size: 25px; font-weight: bold;">Content Limitations</h2>
<table class="content-table">
<tr>
<th class="name">Name</th>
<th class="min-max">Min/Max</th>
<th class="limit">Limit</th>
<th class="type">Type</th>
</tr>
<tr>
<td class="name">Meta Title</td>
<td class="min-max">Max</td>
<td class="limit">55</td>
<td class="type">Letter</td>
</tr>
<tr>
<td class="name">Meta Description</td>
<td class="min-max">Max</td>
<td class="limit">160</td>
<td class="type">Letter</td>
</tr>
<tr>
<td class="name">Google Ideal Post Content</td>
<td class="min-max">Min</td>
<td class="limit">300</td>
<td class="type">Word</td>
</tr>
<tr>
<td class="name">Instagram Captions/Comments</td>
<td class="min-max">Max</td>
<td class="limit">2200</td>
<td class="type">Letter</td>
</tr>
<tr>
<td class="name">Twitter Post</td>
<td class="min-max">Max</td>
<td class="limit">280</td>
<td class="type">Letter</td>
</tr>
<tr>
<td class="name">Twitter Username</td>
<td class="min-max">Max</td>
<td class="limit">20</td>
<td class="type">Letter</td>
</tr>
<tr>
<td class="name">Facebook Wall Post (Truncation)</td>
<td class="min-max">Max</td>
<td class="limit">477</td>
<td class="type">Letter</td>
</tr>
<tr>
<td class="name">Facebook Wall Post (All)</td>
<td class="min-max">Max</td>
<td class="limit">63206</td>
<td class="type">Letter</td>
</tr>
<tr>
<td class="name">Facebook Comment</td>
<td class="min-max">Max</td>
<td class="limit">8000</td>
<td class="type">Letter</td>
</tr>
<tr>
<td class="name">Facebook Page Description</td>
<td class="min-max">Max</td>
<td class="limit">255</td>
<td class="type">Letter</td>
</tr>
<tr>
<td class="name">Facebook Username</td>
<td class="min-max">Max</td>
<td class="limit">50</td>
<td class="type">Letter</td>
</tr>
<tr>
<td class="name">Facebook Messenger Message</td>
<td class="min-max">Max</td>
<td class="limit">20000</td>
<td class="type">Letter</td>
</tr>
<tr>
<td class="name">YouTube Video Title</td>
<td class="min-max">Max</td>
<td class="limit">70</td>
<td class="type">Letter</td>
</tr>
<tr>
<td class="name">YouTube Video Description</td>
<td class="min-max">Max</td>
<td class="limit">5000</td>
<td class="type">Letter</td>
</tr>
<tr>
<td class="name">Snapchat Caption</td>
<td class="min-max">Max</td>
<td class="limit">250</td>
<td class="type">Letter</td>
</tr>
<tr>
<td class="name">Pinterest Pin Description</td>
<td class="min-max">Max</td>
<td class="limit">500</td>
<td class="type">Letter</td>
</tr>
</table>
<textarea class="" rows="10" id="inputText" placeholder="Type your text here..." oninput="countTextMetrics()" style="resize: vertical;"></textarea>
<div>
<p>Total letters: <span id="letterCount">0</span></p>
<p>Total words: <span id="wordCount">0</span></p>
<p>Total sentences: <span id="sentenceCount">0</span></p>
<p>Total paragraphs: <span id="paragraphCount">0</span></p>
</div>
</div>
</section>
<section class="diZContainer diZmxAuto diZmb20">
<div>
<h2 class="diZBorderBottom">Content Limitations</h2>
<table class="diZw70 diZmxAuto">
<tr>
<th class="diZTableBorder diZPadding5px">Name</th>
<th class="diZTableBorder diZPadding5px">Min/Max</th>
<th class="diZTableBorder diZPadding5px">Limit</th>
<th class="diZTableBorder diZPadding5px">Type</th>
</tr>
<tr>
<td class="diZTableBorder diZPadding5px">Meta Title</td>
<td class="diZTableBorder diZPadding5px">Max</td>
<td class="diZTableBorder diZPadding5px">55</td>
<td class="diZTableBorder diZPadding5px">Letter</td>
</tr>
<tr>
<td class="diZTableBorder diZPadding5px">Meta Description</td>
<td class="diZTableBorder diZPadding5px">Max</td>
<td class="diZTableBorder diZPadding5px">160</td>
<td class="diZTableBorder diZPadding5px">Letter</td>
</tr>
<tr>
<td class="diZTableBorder diZPadding5px">Google Ideal Post Content</td>
<td class="diZTableBorder diZPadding5px">Min</td>
<td class="diZTableBorder diZPadding5px">300</td>
<td class="diZTableBorder diZPadding5px">Word</td>
</tr>
<tr>
<td class="diZTableBorder diZPadding5px">Instagram Captions/Comments</td>
<td class="diZTableBorder diZPadding5px">Max</td>
<td class="diZTableBorder diZPadding5px">2200</td>
<td class="diZTableBorder diZPadding5px">Letter</td>
</tr>
<tr>
<td class="diZTableBorder diZPadding5px">Twitter Post</td>
<td class="diZTableBorder diZPadding5px">Max</td>
<td class="diZTableBorder diZPadding5px">280</td>
<td class="diZTableBorder diZPadding5px">Letter</td>
</tr>
<tr>
<td class="diZTableBorder diZPadding5px">Twitter Username</td>
<td class="diZTableBorder diZPadding5px">Max</td>
<td class="diZTableBorder diZPadding5px">20</td>
<td class="diZTableBorder diZPadding5px">Letter</td>
</tr>
<tr>
<td class="diZTableBorder diZPadding5px">Facebook Wall Post (Truncation)</td>
<td class="diZTableBorder diZPadding5px">Max</td>
<td class="diZTableBorder diZPadding5px">477</td>
<td class="diZTableBorder diZPadding5px">Letter</td>
</tr>
<tr>
<td class="diZTableBorder diZPadding5px">Facebook Wall Post (All)</td>
<td class="diZTableBorder diZPadding5px">Max</td>
<td class="diZTableBorder diZPadding5px">63206</td>
<td class="diZTableBorder diZPadding5px">Letter</td>
</tr>
<tr>
<td class="diZTableBorder diZPadding5px">Facebook Comment</td>
<td class="diZTableBorder diZPadding5px">Max</td>
<td class="diZTableBorder diZPadding5px">8000</td>
<td class="diZTableBorder diZPadding5px">Letter</td>
</tr>
<tr>
<td class="diZTableBorder diZPadding5px">Facebook Page Description</td>
<td class="diZTableBorder diZPadding5px">Max</td>
<td class="diZTableBorder diZPadding5px">255</td>
<td class="diZTableBorder diZPadding5px">Letter</td>
</tr>
<tr>
<td class="diZTableBorder diZPadding5px">Facebook Username</td>
<td class="diZTableBorder diZPadding5px">Max</td>
<td class="diZTableBorder diZPadding5px">50</td>
<td class="diZTableBorder diZPadding5px">Letter</td>
</tr>
<tr>
<td class="diZTableBorder diZPadding5px">Facebook Messenger Message</td>
<td class="diZTableBorder diZPadding5px">Max</td>
<td class="diZTableBorder diZPadding5px">20000</td>
<td class="diZTableBorder diZPadding5px">Letter</td>
</tr>
<tr>
<td class="diZTableBorder diZPadding5px">YouTube Video Title</td>
<td class="diZTableBorder diZPadding5px">Max</td>
<td class="diZTableBorder diZPadding5px">70</td>
<td class="diZTableBorder diZPadding5px">Letter</td>
</tr>
<tr>
<td class="diZTableBorder diZPadding5px">YouTube Video Description</td>
<td class="diZTableBorder diZPadding5px">Max</td>
<td class="diZTableBorder diZPadding5px">5000</td>
<td class="diZTableBorder diZPadding5px">Letter</td>
</tr>
<tr>
<td class="diZTableBorder diZPadding5px">Snapchat Caption</td>
<td class="diZTableBorder diZPadding5px">Max</td>
<td class="diZTableBorder diZPadding5px">250</td>
<td class="diZTableBorder diZPadding5px">Letter</td>
</tr>
<tr>
<td class="diZTableBorder diZPadding5px">Pinterest Pin Description</td>
<td class="diZTableBorder diZPadding5px">Max</td>
<td class="diZTableBorder diZPadding5px">500</td>
<td class="diZTableBorder diZPadding5px">Letter</td>
</tr>
</table>
</div>
</section>
<script>
function countTextMetrics() {

View File

@ -50,7 +50,7 @@
}
</style>
<?php
require_once ('.hta_config/siliconpin_sp.php');
// require_once ('.hta_config/siliconpin_sp.php');
if ($_SERVER["REQUEST_METHOD"] == "POST") {
$md5_hash = md5($_POST["md5-text"]);

View File

@ -1,15 +1,15 @@
<div style="padding-bottom: 350px;">
<div class="container-dxu">
<h2 style="text-align: center; font-size: 25px; padding-bottom: 10px;">Remove Multiple Whitespace</h2>
<textarea class="textarea-text" id="textInput" rows="4" cols="50" placeholder="Enter text here..."></textarea>
<button class="button-style" onclick="processText()">Remove</button>
<div style="display: none;" id="after-procces">
<div id="output"></div>
<P style="display: none; text-align: center;" id="copied-notice"></P>
<button class="button-style" id="copyButton" onclick="copyOutputText()">Copy</button>
<section class="diZContainer diZmxAuto">
<h2 class="diZBorderBottom">Remove Multiple Whitespace</h2>
<div class="diZMaxW600 diZFlexColumn diZmxAuto diZmy20 toolsSection">
<textarea class="textarea-text" id="textInput" rows="10" placeholder="Enter text here..."></textarea>
<button class="diZmt2" onclick="processText()">Remove</button>
<div class="diZFlexColumn diZDisplayNone diZmt2" id="after-procces">
<textarea class="textarea-text" id="output" rows="10" readonly></textarea>
<p class="diZDisplayNone diZTextCenter" id="copied-notice"></p>
<button class="diZmt2" id="copyButton" onclick="copyOutputText()">Copy</button>
</div>
</div>
</div>
</section>
<script>
function removeMultipleWhitespace(text) {
@ -19,66 +19,23 @@
function processText() {
const inputText = document.getElementById('textInput').value;
const cleanedText = removeMultipleWhitespace(inputText);
document.getElementById('output').innerText = cleanedText;
document.getElementById('after-procces').style.display='block';
document.getElementById('output').value = cleanedText;
document.getElementById('after-procces').style.display = 'flex';
}
function copyOutputText() {
const outputText = document.getElementById('output').innerText;
const outputText = document.getElementById('output').value;
const textarea = document.createElement('textarea');
textarea.value = outputText;
document.body.appendChild(textarea);
textarea.select();
document.execCommand('copy');
document.body.removeChild(textarea);
document.getElementById('copied-notice').style.display = 'block';
document.getElementById('copied-notice').innerHTML = 'Output text copied to clipboard!';
const copiedNotice = document.getElementById('copied-notice');
copiedNotice.style.display = 'block';
copiedNotice.innerHTML = 'Output text copied to clipboard!';
setTimeout(() => {
copiedNotice.style.display = 'none';
}, 2000);
}
</script>
<style>
.container-dxu {
max-width: 600px;
width: 100%;
padding: 20px;
background-color: #3d3d3d;
box-shadow: 0 0 10px rgba(0, 0, 0, 0.1);
border-radius: 8px;
position: absolute;
top: 50%;
left: 50%;
transform: translate(-50%, -50%);
}
.textarea-text {
width: calc(100% );
height: 100px;
margin-bottom: 10px;
border: 1px solid #ddd;
border-radius: 4px;
padding: 10px;
font-size: 16px;
background-color: #3d3d3d;
}
.button-style{
padding: 10px 20px;
background-color: #7d7d7d;
color: #fff;
border: none;
border-radius: 5px;
cursor: pointer;
width: 100%;
}
.button-style:hover {
background-color: #9d9d9d;
}
#output {
margin-top: 10px;
margin-bottom: 10px;
padding: 10px;
background-color: #3d3d3d;
border: 1px solid #ddd;
border-radius: 4px;
font-size: 16px;
}
</style>
</script>

34
ns-lookup.php Normal file
View File

@ -0,0 +1,34 @@
<section class="diZContainer diZmxAuto">
<h2 class="diZBorderBottom">Domain DNS Information Viewer</h2>
</section>
<!-- <p class="diZTextJustify">NS Lookup simplifies checking DNS records. Enter any domain to instantly retrieve and explore its DNS details, including A, AAAA, MX, CNAME records, and more. Ideal for IT professionals and website administrators seeking quick and accurate DNS insights.</p> -->
<form method="post" class="diZToolsSection diZmt4 diZmb4 diZBorderRadius diZPadding5px">
<div class="diZFlexRowCol diZJustifyCenter diZItemsCenter">
<input class="diZmr2 diZw70" placeholder="Domain" name="domain" type="text" />
<input class="diZmr2" type="submit" value="Check" />
</div>
</form>
<?php
if(isset($_POST['domain']) && $_POST['domain']){
function validateDomain($domain) {
$regex = "/^(?!\-)(?:[a-zA-Z0-9\-]{0,61}[a-zA-Z0-9]\.)+[a-zA-Z]{2,}$/";
if (preg_match($regex, $domain)) {
return true;
} else {
return false;
}
}
$domain = isset($_POST['domain']) ? $_POST['domain'] : '';
if ($domain && validateDomain($domain)) {
$command = 'dig '.$_POST['domain']. ' NS';
$escaped_command = escapeshellcmd($command);
$output = shell_exec($escaped_command);
echo '<div class="diZContainer diZmxAuto diZPadding5px"><pre class="diZTextJustify" style="width: fit-content;"> ',$output, '</pre> <br><br></div>';
} else {
echo "Invalid domain.";
}
}
?>

77
png-to-svg.php Normal file
View File

@ -0,0 +1,77 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Image to ICO Converter</title>
<style>
body {
font-family: Arial, sans-serif;
text-align: center;
margin-top: 50px;
}
#fileInput {
margin-bottom: 20px;
}
</style>
</head>
<body>
<h1>Image to ICO Converter</h1>
<input type="file" id="fileInput" accept="image/*">
<br>
<button id="convertButton">Convert to ICO</button>
<br><br>
<a id="downloadLink" style="display: none;" download="icon.ico">Download ICO</a>
<script src="icojs.js"></script>
<script>
document.addEventListener('DOMContentLoaded', function() {
const fileInput = document.getElementById('fileInput');
const convertButton = document.getElementById('convertButton');
const downloadLink = document.getElementById('downloadLink');
convertButton.addEventListener('click', function() {
if (fileInput.files.length > 0) {
const file = fileInput.files[0];
// Check if file is an image
if (file.type.startsWith('image/')) {
const reader = new FileReader();
reader.onload = function(e) {
const img = new Image();
img.onload = function() {
// Create a canvas to draw the image
const canvas = document.createElement('canvas');
canvas.width = img.width;
canvas.height = img.height;
const ctx = canvas.getContext('2d');
ctx.drawImage(img, 0, 0, img.width, img.height);
// Convert canvas to ICO format
const ico = new ICO();
ico.add(canvas.toDataURL('image/png')); // Add PNG image data
// Generate ICO file blob
const icoBlob = ico.build();
// Update download link
const url = URL.createObjectURL(icoBlob);
downloadLink.href = url;
downloadLink.style.display = 'inline-block';
};
img.src = e.target.result;
};
reader.readAsDataURL(file);
} else {
alert('Please upload an image file.');
}
} else {
alert('Please select a file to convert.');
}
});
});
</script>
</body>
</html>

View File

@ -1,26 +1,25 @@
<div style="padding-bottom: 350px;">
<div class="container-dzx">
<h1>RGB to HEX Converter</h1>
<label for="red">Red:</label><br>
<input type="number" id="red" min="0" max="255" required>
<br>
<label for="green">Green:</label><br>
<input type="number" id="green" min="0" max="255" required>
<br>
<label for="blue">Blue:</label><br>
<input type="number" id="blue" min="0" max="255" required>
<br>
<button class="button-style" onclick="convert()">Convert</button>
<div style="display: flex; flex-direction: row; justify-content: center; align-items: center; place-items: center;">
<div id="result"></div>
<div>
<button id="copyButton" style="display: none; padding: 5px 10px 5px 10px; background-color: #7d7d7d; border-radius: 5px;" onclick="copyToClipboard()">Copy</button>
</div>
<section class="diZContainer diZmxAuto diZmt8">
<h1 class="diZBorderBottom">RGB to HEX Converter</h1>
<div class="diZmxAuto toolsSection diZMaxW600 diZmy20" >
<div class="diZFlexColumn"><br>
<label for="red">Red:</label>
<input style="width: 97%;" type="number" id="red" min="0" max="255" required>
</div>
<span style="display: none;" id="copied-notice"></span>
<div class="diZFlexColumn"><br>
<label for="green">Green:</label>
<input style="width: 97%;" type="number" id="green" min="0" max="255" required>
</div>
<div class="diZFlexColumn"><br>
<label for="blue">Blue:</label>
<input style="width: 97%;" type="number" id="blue" min="0" max="255" required>
</div>
<div id="result"></div>
<button class="" onclick="convert()">Convert</button>
<button id="copyButton" onclick="copyToClipboard()">Copy</button>
<span class="diZDisplayNone" id="copied-notice"></span>
</div>
</div>
</section>
<!-- diZJustifyCenter diZItemsCenter -->
<script>
function rgbToHex(r, g, b) {
r = Math.max(0, Math.min(255, r));

126
screen-recorder.php Normal file
View File

@ -0,0 +1,126 @@
<?php
require_once('.htac_header.php');
?>
<div class="diZMaxW600 diZmxAuto diZFlexColumn diZmb20">
<h1 class="diZTextCenter diZBorderBottom">Screen Recorder</h1>
<div class="diZFlexRow ">
<button class="diZSpaceR" id="start">Start Recording</button>
<button class="diZSpaceR" id="stop" disabled>Stop Recording</button>
<button class="diZSpaceR" id="download" disabled>Download Recording</button>
</div>
<div class="diZTextCenter diZmb4 diZmt4" id="timer">Duration: 00:00:00</div>
<video class="diZw100" id="video" muted controls autoplay></video>
</div>
<script>
const startButton = document.getElementById('start');
const stopButton = document.getElementById('stop');
const downloadButton = document.getElementById('download');
const video = document.getElementById('video');
const timer = document.getElementById('timer');
let mediaRecorder;
let recordedChunks = [];
let startTime;
let timerInterval;
function formatTime(time) {
const hours = String(Math.floor(time / 3600)).padStart(2, '0');
const minutes = String(Math.floor((time % 3600) / 60)).padStart(2, '0');
const seconds = String(time % 60).padStart(2, '0');
return `${hours}:${minutes}:${seconds}`;
}
function startTimer() {
startTime = Date.now();
timerInterval = setInterval(() => {
const elapsedTime = Math.floor((Date.now() - startTime) / 1000);
timer.textContent ='Duration: ' + formatTime(elapsedTime);
}, 1000);
}
function stopTimer() {
clearInterval(timerInterval);
}
startButton.addEventListener('click', async () => {
if (!navigator.mediaDevices || !navigator.mediaDevices.getDisplayMedia) {
console.log('getDisplayMedia is not supported in your browser.');
return;
}
try {
const stream = await navigator.mediaDevices.getDisplayMedia({
video: { mediaSource: 'screen' },
audio: true // Enable audio recording
});
// Show live video feed in the video element
video.srcObject = stream;
mediaRecorder = new MediaRecorder(stream);
mediaRecorder.ondataavailable = (event) => {
if (event.data.size > 0) {
console.log('Data available:', event.data.size);
recordedChunks.push(event.data);
}
};
mediaRecorder.onstop = () => {
console.log('Recording stopped. Creating blob.');
if (recordedChunks.length > 0) {
const blob = new Blob(recordedChunks, {
type: 'video/webm'
});
const url = URL.createObjectURL(blob);
video.src = url;
downloadButton.href = url;
downloadButton.download = 'recording.webm';
downloadButton.disabled = false;
} else {
console.error('No recorded data available.');
}
};
mediaRecorder.start();
startTimer();
startButton.disabled = true;
stopButton.disabled = false;
downloadButton.disabled = true;
} catch (error) {
console.error('Error: ' + error);
}
});
stopButton.addEventListener('click', () => {
if (mediaRecorder && mediaRecorder.state !== 'inactive') {
mediaRecorder.stop();
stopTimer();
startButton.disabled = false;
stopButton.disabled = true;
} else {
console.error('No active recording to stop.');
}
});
downloadButton.addEventListener('click', () => {
if (recordedChunks.length > 0) {
const blob = new Blob(recordedChunks, {
type: 'video/webm'
});
const url = URL.createObjectURL(blob);
const a = document.createElement('a');
a.style.display = 'none';
a.href = url;
a.download = 'recording.webm';
document.body.appendChild(a);
a.click();
window.URL.revokeObjectURL(url);
recordedChunks = [];
} else {
console.error('No data available for download.');
}
});
</script>

View File

@ -1,6 +1,6 @@
<?php
require_once('.hta_config/siliconpin_sp.php');
require_once('.htac_header.php');
require_once('.htac_header.php');
require_once('.hta_config/db_config.php');
?>
<section class="container-zz mx-auto">

56
who-is.php Normal file
View File

@ -0,0 +1,56 @@
<section class="diZContainer diZmxAuto">
<h2 class="diZBorderBottom">Ultimate Domain & IP Lookup Tool</h2>
</section>
<!-- <p class="diZTextJustify">Discover detailed information about any domain and IP address with ease using Who-Is. Our tool provides instant access to essential data, including ownership, registration details, and more, all in a user-friendly interface designed for efficiency and accuracy.</p> -->
<form method="post" class="diZToolsSection diZmt4 diZmb4 diZBorderRadius diZPadding5px">
<div class="diZFlexRowCol diZJustifyCenter diZItemsCenter">
<input class="diZmr2 diZw70" placeholder="Domain" name="domain" type="text" />
<p class="diZmr2">OR</p>
<input class="diZmr2 diZw70" placeholder="IP Address" name="ip" type="text" />
<input class="diZmr2" type="submit" value="Check" />
</div>
</form>
<?php
if(isset($_POST['domain']) && $_POST['domain']){
function validateDomain($domain) {
$regex = "/^(?!\-)(?:[a-zA-Z0-9\-]{0,61}[a-zA-Z0-9]\.)+[a-zA-Z]{2,}$/";
if (preg_match($regex, $domain)) {
return true;
} else {
return false;
}
}
$domain = isset($_POST['domain']) ? $_POST['domain'] : '';
if ($domain && validateDomain($domain)) {
$command = 'whois '.$_POST['domain'];
$escaped_command = escapeshellcmd($command);
$output = shell_exec($escaped_command);
echo '<div class="diZContainer diZmxAuto diZPadding5px"><pre class="diZTextJustify" style="width: fit-content;"> ',$output, '</pre> <br><br></div>';
} else {
echo "Invalid domain.";
}
}
if(isset($_POST['ip']) && $_POST['ip']){
function validatePublicIp($ip) {
if (filter_var($ip, FILTER_VALIDATE_IP)) {
if (filter_var($ip, FILTER_VALIDATE_IP, FILTER_FLAG_NO_PRIV_RANGE | FILTER_FLAG_NO_RES_RANGE)) {
return true;
}
}
return false;
}
$ip = isset($_POST['ip']) ? $_POST['ip'] : '';
if ($ip && validatePublicIp($ip)) {
$command = 'whois '.$_POST['ip'];
$escaped_command = escapeshellcmd($command);
$output = shell_exec($escaped_command);
echo '<div class="diZContainer diZmxAuto diZPadding5px"><pre> ',$output, '</pre> <br><br></div>';
} else {
echo "Invalid IP address.";
}
}
?>