Browse Source

experimental SCP writing (for using Tinyboard over multiple servers)

pull/40/head
Savetheinternet 12 years ago
parent
commit
9654c9d9e7
  1. 3
      inc/config.php
  2. 16
      inc/functions.php

3
inc/config.php

@ -221,6 +221,9 @@
// Display the aspect ratio in a post's file info
$config['show_ratio'] = true;
// Directory where temporary files will be created. Not really used much yet except for some experimental stuff.
$config['tmp'] = '/tmp';
// The root directory, including the trailing slash, for Tinyboard.
// examples: '/', 'http://boards.chan.org/', '/chan/'
$config['root'] = (str_replace('\\', '/', dirname($_SERVER['REQUEST_URI'])) == '/' ? '/' : str_replace('\\', '/', dirname($_SERVER['REQUEST_URI'])) . '/');

16
inc/functions.php

@ -212,9 +212,23 @@
}
function file_write($path, $data) {
global $config;
if(preg_match('/^scp:\/\/(.+)$/', $path, $m)) {
// Experimental: secure copy...
$file = tempnam($config['tmp'], 'tinyboard-scp');
// Write to temp file
file_write($file, $data);
// Call `scp` (yes, this is horrible)
$command = 'scp ' . escapeshellarg($file) . ' ' . escapeshellarg($m[1]);
system($command);
// Delete temporary file
unlink($file);
exit;
}
if(!$fp = fopen($path, 'c'))
error('Unable to open file for writing: ' . $path);
// File locking
if(!flock($fp, LOCK_EX)) {
error('Unable to lock file: ' . $path);

Loading…
Cancel
Save