From 2b3391da4e587d638ac7980ac41e69815b63c6bc Mon Sep 17 00:00:00 2001 From: leedongmyung Date: Sun, 5 Jan 2025 19:56:20 +0900 Subject: [PATCH] add smd authorize --- lib/oto/commands/command.dart | 7 +++++-- lib/oto/commands/util/smb_authorize.dart | 25 +++++++++++++++++++++++ lib/oto/data/command_data.dart | 15 ++++++++++++++ lib/oto/data/command_data.g.dart | 26 ++++++++++++++++++++++++ 4 files changed, 71 insertions(+), 2 deletions(-) create mode 100644 lib/oto/commands/util/smb_authorize.dart diff --git a/lib/oto/commands/command.dart b/lib/oto/commands/command.dart index 4e62cb9..c9a445f 100644 --- a/lib/oto/commands/command.dart +++ b/lib/oto/commands/command.dart @@ -27,6 +27,7 @@ import 'package:oto_cli/oto/commands/proto/protobuf.dart'; import 'package:oto_cli/oto/commands/util/json.dart'; import 'package:oto_cli/oto/commands/util/print.dart'; import 'package:oto_cli/oto/commands/util/set_value.dart'; +import 'package:oto_cli/oto/commands/util/smb_authorize.dart'; import 'package:oto_cli/oto/commands/util/string_util.dart'; import 'package:oto_cli/oto/commands/web/web.dart'; import 'package:oto_cli/oto/data/command_data.dart'; @@ -100,7 +101,8 @@ enum CommandType { WebFile, ProcessPortUse, ProcessRun, - ProcessKill + ProcessKill, + SMBAuth } abstract class Command { @@ -163,7 +165,8 @@ abstract class Command { CommandType.WebFile: () => WebFile(), CommandType.ProcessPortUse: () => ProcessPortUse(), CommandType.ProcessRun: () => ProcessRun(), - CommandType.ProcessKill: () => ProcessKill() + CommandType.ProcessKill: () => ProcessKill(), + CommandType.SMBAuth: () => SMBAuth(), }; factory Command.byType(CommandType type) { diff --git a/lib/oto/commands/util/smb_authorize.dart b/lib/oto/commands/util/smb_authorize.dart new file mode 100644 index 0000000..90a2799 --- /dev/null +++ b/lib/oto/commands/util/smb_authorize.dart @@ -0,0 +1,25 @@ +import 'dart:io'; + +import 'package:oto_cli/oto/commands/command.dart'; +import 'package:oto_cli/oto/data/command_data.dart'; + +class SMBAuth extends Command { + Function? get error => null; + + @override + Future execute(DataCommand command) async { + var data = DataSMBAuthorize.fromJson(getParam(command)); + var process = await Process.run('cmd', [ + '/C', + 'net', + 'use', + '\\\\${data.domain}', + '/user:${data.id}', + data.password + ]); + print(process.stdout.toString()); + print(process.stderr.toString()); + + return complete(process.exitCode, command); + } +} diff --git a/lib/oto/data/command_data.dart b/lib/oto/data/command_data.dart index ccf51be..1d107a8 100644 --- a/lib/oto/data/command_data.dart +++ b/lib/oto/data/command_data.dart @@ -1024,3 +1024,18 @@ class DataProcessKill extends DataParam { @override Map toJson() => _$DataProcessKillToJson(this); } + +//Smb Authorize +@JsonSerializable() +class DataSMBAuthorize extends DataParam { + DataSMBAuthorize(); + + late String domain; + late String id; + late String password; + + factory DataSMBAuthorize.fromJson(Map json) => + _$DataSMBAuthorizeFromJson(json); + @override + Map toJson() => _$DataSMBAuthorizeToJson(this); +} diff --git a/lib/oto/data/command_data.g.dart b/lib/oto/data/command_data.g.dart index d651dca..b396f98 100644 --- a/lib/oto/data/command_data.g.dart +++ b/lib/oto/data/command_data.g.dart @@ -112,6 +112,7 @@ const _$CommandTypeEnumMap = { CommandType.ProcessPortUse: 'ProcessPortUse', CommandType.ProcessRun: 'ProcessRun', CommandType.ProcessKill: 'ProcessKill', + CommandType.SMBAuth: 'SMBAuth', }; DataParam _$DataParamFromJson(Map json) => DataParam() @@ -1737,3 +1738,28 @@ Map _$DataProcessKillToJson(DataProcessKill instance) => 'showPrint': instance.showPrint, 'pid': instance.pid, }; + +DataSMBAuthorize _$DataSMBAuthorizeFromJson(Map json) => + DataSMBAuthorize() + ..workspace = json['workspace'] as String? + ..passExitCodes = (json['passExitCodes'] as List?) + ?.map((e) => (e as num).toInt()) + .toList() + ..setResult = json['setResult'] as String? + ..setExitCode = json['setExitCode'] as String? + ..showPrint = json['showPrint'] as bool? + ..domain = json['domain'] as String + ..id = json['id'] as String + ..password = json['password'] as String; + +Map _$DataSMBAuthorizeToJson(DataSMBAuthorize instance) => + { + 'workspace': instance.workspace, + 'passExitCodes': instance.passExitCodes, + 'setResult': instance.setResult, + 'setExitCode': instance.setExitCode, + 'showPrint': instance.showPrint, + 'domain': instance.domain, + 'id': instance.id, + 'password': instance.password, + };