diff --git a/templates/itemeditor_command_storage.html b/templates/itemeditor_command_storage.html index 0367a65..63001f8 100644 --- a/templates/itemeditor_command_storage.html +++ b/templates/itemeditor_command_storage.html @@ -111,23 +111,74 @@
-

Self-Hosting on Your Webserver

-

You can run this command storage system on your own webserver for production use:

-
    -
  1. Install Python 3.10+ and Flask on your server
  2. -
  3. Deploy the Flask app using a production WSGI server like Gunicorn or uWSGI
  4. -
  5. Use a reverse proxy (e.g. Nginx or Apache) to route traffic to the Flask app
  6. -
  7. Optional: Use Docker for easy deployment (see Dockerfile in the project)
  8. -
  9. Access via:
    https://your-domain/projects/itemeditor/storage
  10. -
  11. API endpoint:
    https://your-domain/projects/itemeditor/storage/<uuid>
  12. -
-

GET https://your-domain/projects/itemeditor/storage/<uuid> -{ - "command": "your command here", - "created_at": "...", - "expires_at": "..." -}

-

For best performance and security, do not use the Flask development server in production. Use Gunicorn + Nginx or Docker for real deployments.

+

Self-Hosting

+

Host this system on your own webserver with this simple PHP script:

+
<?php
+header('Content-Type: application/json');
+$storage_file = 'commands.json';
+
+// Store command (POST)
+if ($_SERVER['REQUEST_METHOD'] === 'POST') {
+    $data = json_decode(file_get_contents('php://input'), true);
+    $command = $data['command'] ?? '';
+    
+    if (strlen($command) > 10000) {
+        http_response_code(400);
+        echo json_encode(['error' => 'Too long']);
+        exit;
+    }
+    
+    $uuid = bin2hex(random_bytes(16));
+    $expires = time() + 1800; // 30 min
+    
+    $storage = file_exists($storage_file) 
+        ? json_decode(file_get_contents($storage_file), true) 
+        : [];
+    
+    $storage[$uuid] = [
+        'command' => $command,
+        'expires_at' => $expires
+    ];
+    
+    file_put_contents($storage_file, json_encode($storage));
+    
+    echo json_encode([
+        'success' => true,
+        'url' => "https://yourserver.com/storage.php?id=$uuid"
+    ]);
+    exit;
+}
+
+// Retrieve command (GET)
+if (isset($_GET['id'])) {
+    $storage = file_exists($storage_file) 
+        ? json_decode(file_get_contents($storage_file), true) 
+        : [];
+    
+    $uuid = $_GET['id'];
+    
+    if (!isset($storage[$uuid])) {
+        http_response_code(404);
+        echo json_encode(['error' => 'Not found']);
+        exit;
+    }
+    
+    if ($storage[$uuid]['expires_at'] < time()) {
+        unset($storage[$uuid]);
+        file_put_contents($storage_file, json_encode($storage));
+        http_response_code(410);
+        echo json_encode(['error' => 'Expired']);
+        exit;
+    }
+    
+    echo json_encode($storage[$uuid]);
+    exit;
+}
+?>
+

+ Setup: Save as storage.php on your webserver. + Make sure the directory is writable for commands.json. +