-
Notifications
You must be signed in to change notification settings - Fork 0
/
SSH.js
78 lines (68 loc) · 1.45 KB
/
SSH.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
import React, { Component } from 'react';
import DefaultPreference from 'react-native-default-preference';
import SSHClient from 'react-native-sshclient';
export default class mySSH extends React.Component {
constructor(props) {
super(props);
this.state = {
connected: false,
}
}
connect = (ip, user, pass) => {
return new Promise((resolve, fail) => {
SSHClient.setup(user, ip, 22);
SSHClient.usePrivateKey(false);
SSHClient.setPassword(pass);
SSHClient.connect().then(
(result) => {
this.setState({connected: true});
resolve();
},
(error) => {
this.setState({connected: false});
fail();
}
);
});
}
connectWithStoredData = () => {
return new Promise((resolve, fail) => {
DefaultPreference.getMultiple(['ip', 'user', 'pass']).then(data => {
var ip = data[0] || "";
var user = data[1] || "";
var pass = data[2] || "";
if ( ip == "" || user == "" || pass == "" ) {
fail();
}
else {
this.connect(ip, user, pass).then(() => {
resolve();
}).catch(() => {
fail();
})
}
});
});
}
execute = (command) => {
return new Promise((resolve, fail) => {
SSHClient.execute(command).then(
(result)=>{
resolve(result);
},
(error)=>{
fail();
}
);
});
}
disconnect = () => {
return new Promise((resolve, fail) => {
SSHClient.close().then(() => {
resolve();
}).catch(() => {
fail();
});
})
}
}