mirror of
https://github.com/lollipopkit/flutter_server_box.git
synced 2025-12-17 07:14:28 +01:00
fix #189
This commit is contained in:
@@ -279,35 +279,38 @@ class ServerProvider extends ChangeNotifier {
|
|||||||
|
|
||||||
_setServerState(s, ServerState.connected);
|
_setServerState(s, ServerState.connected);
|
||||||
|
|
||||||
|
// Write script to server
|
||||||
|
// by ssh
|
||||||
try {
|
try {
|
||||||
final writeResult = await s.client?.run(installShellCmd).string;
|
final writeResult = await s.client?.run(installShellCmd).string;
|
||||||
if (writeResult == null || writeResult.isNotEmpty) {
|
if (writeResult == null || writeResult.isNotEmpty) {
|
||||||
throw Exception('$writeResult');
|
throw Exception('$writeResult');
|
||||||
}
|
}
|
||||||
} catch (e) {
|
} catch (e) {
|
||||||
var sftpFailed = false;
|
// by sftp
|
||||||
|
final localPath = joinPath(await Paths.doc, 'install.sh');
|
||||||
|
final file = File(localPath);
|
||||||
try {
|
try {
|
||||||
Loggers.app.warning('Using SFTP to write script to ${spi.name}');
|
Loggers.app.warning('Using SFTP to write script to ${spi.name}');
|
||||||
final localPath = joinPath(await Paths.doc, 'install.sh');
|
|
||||||
final file = File(localPath);
|
|
||||||
file.writeAsString(ShellFunc.allScript);
|
file.writeAsString(ShellFunc.allScript);
|
||||||
final sftp = Pros.sftp;
|
final sftp = Pros.sftp;
|
||||||
final completer = Completer();
|
final completer = Completer();
|
||||||
sftp.add(
|
final reqId = sftp.add(
|
||||||
SftpReq(spi, installShellPath, localPath, SftpReqType.upload),
|
SftpReq(spi, installShellPath, localPath, SftpReqType.upload),
|
||||||
completer: completer,
|
completer: completer,
|
||||||
);
|
);
|
||||||
await completer.future;
|
await completer.future;
|
||||||
await file.delete();
|
final err = sftp.get(reqId)?.error;
|
||||||
} catch (_) {
|
if (err != null) {
|
||||||
sftpFailed = true;
|
throw err;
|
||||||
}
|
}
|
||||||
if (sftpFailed) {
|
} catch (e) {
|
||||||
_limiter.inc(sid);
|
_limiter.inc(sid);
|
||||||
s.status.failedInfo = e.toString();
|
s.status.failedInfo = e.toString();
|
||||||
_setServerState(s, ServerState.failed);
|
_setServerState(s, ServerState.failed);
|
||||||
Loggers.app.warning('Write script to ${spi.name} failed', e);
|
Loggers.app.warning('Write script to ${spi.name} failed', e);
|
||||||
return;
|
} finally {
|
||||||
|
await file.delete();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -319,12 +322,23 @@ class ServerProvider extends ChangeNotifier {
|
|||||||
_setServerState(s, ServerState.loading);
|
_setServerState(s, ServerState.loading);
|
||||||
}
|
}
|
||||||
|
|
||||||
final raw = await s.client?.run(ShellFunc.status.exec).string;
|
List<String>? segments;
|
||||||
final segments = raw?.split(seperator).map((e) => e.trim()).toList();
|
String? raw;
|
||||||
if (raw == null || raw.isEmpty || segments == null || segments.isEmpty) {
|
|
||||||
|
try {
|
||||||
|
raw = await s.client?.run(ShellFunc.status.exec).string;
|
||||||
|
segments = raw?.split(seperator).map((e) => e.trim()).toList();
|
||||||
|
if (raw == null || raw.isEmpty || segments == null || segments.isEmpty) {
|
||||||
|
_limiter.inc(sid);
|
||||||
|
s.status.failedInfo = 'Seperate segments failed, raw:\n$raw';
|
||||||
|
_setServerState(s, ServerState.failed);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
} catch (e) {
|
||||||
_limiter.inc(sid);
|
_limiter.inc(sid);
|
||||||
s.status.failedInfo = 'Seperate segments failed, raw:\n$raw';
|
s.status.failedInfo = e.toString();
|
||||||
_setServerState(s, ServerState.failed);
|
_setServerState(s, ServerState.failed);
|
||||||
|
Loggers.app.warning('Get status from ${spi.name} failed', e);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -12,12 +12,14 @@ class SftpProvider extends ChangeNotifier {
|
|||||||
return _status.singleWhere((element) => element.id == id);
|
return _status.singleWhere((element) => element.id == id);
|
||||||
}
|
}
|
||||||
|
|
||||||
void add(SftpReq req, {Completer? completer}) {
|
int add(SftpReq req, {Completer? completer}) {
|
||||||
_status.add(SftpReqStatus(
|
final status = SftpReqStatus(
|
||||||
notifyListeners: notifyListeners,
|
notifyListeners: notifyListeners,
|
||||||
completer: completer,
|
completer: completer,
|
||||||
req: req,
|
req: req,
|
||||||
));
|
);
|
||||||
|
_status.add(status);
|
||||||
|
return status.id;
|
||||||
}
|
}
|
||||||
|
|
||||||
@override
|
@override
|
||||||
|
|||||||
Reference in New Issue
Block a user