summaryrefslogtreecommitdiff
path: root/inc/remote.php
diff options
context:
space:
mode:
Diffstat (limited to 'inc/remote.php')
-rw-r--r--inc/remote.php47
1 files changed, 47 insertions, 0 deletions
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 @@
+<?php
+ class Remote {
+ public function __construct($config) {
+ foreach($config as $name => $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