experimental SCP writing (for using Tinyboard over multiple servers)

This commit is contained in:
Savetheinternet 2011-05-20 22:44:35 +10:00
parent 65c5e91af2
commit 9654c9d9e7
2 changed files with 18 additions and 1 deletions

View File

@ -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'])) . '/');

View File

@ -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);