From 36ee32b38b9cbfb04f26267cd34017c258e1a39b Mon Sep 17 00:00:00 2001 From: Savetheinternet Date: Sat, 4 Jun 2011 18:55:05 +1000 Subject: remote servers -- writing to another server via SSH --- inc/remote.php | 47 +++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 47 insertions(+) create mode 100644 inc/remote.php (limited to 'inc/remote.php') diff --git a/inc/remote.php b/inc/remote.php new file mode 100644 index 00000000..a4c9e68a --- /dev/null +++ b/inc/remote.php @@ -0,0 +1,47 @@ + $value) { + $this->{$name} = $value; + } + + $methods = Array(); + + if(!isset($this->auth['method'])) + error('Unspecified authentication method.'); + + // Connect + $this->connection = ssh2_connect($this->host, isset($this->port) ? $this->port : 22, $methods); + + switch($this->auth['method']) { + case 'plain': + if(!ssh2_auth_password($this->connection, $this->auth['username'], $this->auth['password'])) + error('Plain-text authentication failed.'); + break; + default: + error('Unknown authentication method.'); + } + + } + + public function write($data, $remote_path) { + global $config; + + switch($this->type) { + case 'sftp': + $sftp = ssh2_sftp($this->connection); + file_write('ssh2.sftp://' . $sftp . $remote_path, $data, true); + break; + case 'scp': + $file = tempnam($config['tmp'], 'tinyboard-scp'); + // Write to temp file + file_write($file, $data); + + ssh2_scp_send($this->connection, $file, $remote_path, 0755); + break; + default: + error('Unknown send method.'); + } + } + }; +?> \ No newline at end of file -- cgit v1.3