diff options
| author | Savetheinternet <savetheinternet@tinyboard.org> | 2011-05-20 22:44:35 +1000 |
|---|---|---|
| committer | Savetheinternet <savetheinternet@tinyboard.org> | 2011-05-20 22:44:35 +1000 |
| commit | 9654c9d9e738d04e83dcb0ef43cbb7546e51e7e5 (patch) | |
| tree | 15bfddff0060f834d0a2b3d21372aa9fadc23274 /inc/functions.php | |
| parent | 65c5e91af235fbc8d348c0d15998fd797944e952 (diff) | |
experimental SCP writing (for using Tinyboard over multiple servers)
Diffstat (limited to 'inc/functions.php')
| -rw-r--r-- | inc/functions.php | 16 |
1 files changed, 15 insertions, 1 deletions
diff --git a/inc/functions.php b/inc/functions.php index 65705766..ec6166ef 100644 --- a/inc/functions.php +++ b/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); |
