1
0
mirror of https://github.com/Bayselonarrend/OpenIntegrations.git synced 2025-10-08 22:51:57 +02:00

Main build (Jenkins)

This commit is contained in:
Vitaly the Alpaca (bot)
2025-09-30 20:25:53 +03:00
parent 2d158d8133
commit 0495c14412
48 changed files with 9915 additions and 9881 deletions

View File

@@ -1,4 +1,4 @@
 Host = "172.33.0.13";
Port = "2222";
Login = "bayselonarrend";
SSHSettings = OPI_SSH.GetSettingsViaAgent(Host, Port, Login);
Result = OPI_SSH.GetSettingsViaAgent(Host, Port, Login);

View File

@@ -56,7 +56,7 @@ import TabItem from '@theme/TabItem';
```json title="Result"
{
"result": true,
"key": "2e1fd4bb3",
"url_example": "localhost:port/2e1fd4bb3"
"key": "be2122262",
"url_example": "localhost:port/be2122262"
}
```

View File

@@ -34,7 +34,7 @@ import TabItem from '@theme/TabItem';
```bash
melezh DisableRequestsHandler \
--proj "/proj.melezh" \
--handler "2e1fd4bb3"
--handler "be2122262"
```
</TabItem>
@@ -42,7 +42,7 @@ import TabItem from '@theme/TabItem';
```batch
melezh DisableRequestsHandler ^
--proj "/proj.melezh" ^
--handler "2e1fd4bb3"
--handler "be2122262"
```
</TabItem>
</Tabs>

View File

@@ -34,7 +34,7 @@ import TabItem from '@theme/TabItem';
```bash
melezh EnableRequestsHandler \
--proj "/proj.melezh" \
--handler "2e1fd4bb3"
--handler "be2122262"
```
</TabItem>
@@ -42,7 +42,7 @@ import TabItem from '@theme/TabItem';
```batch
melezh EnableRequestsHandler ^
--proj "/proj.melezh" ^
--handler "2e1fd4bb3"
--handler "be2122262"
```
</TabItem>
</Tabs>

View File

@@ -34,7 +34,7 @@ import TabItem from '@theme/TabItem';
```bash
melezh GetRequestsHandler \
--proj "/proj.melezh" \
--handler "2e1fd4bb3"
--handler "be2122262"
```
</TabItem>
@@ -42,7 +42,7 @@ import TabItem from '@theme/TabItem';
```batch
melezh GetRequestsHandler ^
--proj "/proj.melezh" ^
--handler "2e1fd4bb3"
--handler "be2122262"
```
</TabItem>
</Tabs>
@@ -52,7 +52,7 @@ import TabItem from '@theme/TabItem';
"data": {
"active": 1,
"function": "SendTextMessage",
"key": "2e1fd4bb3",
"key": "be2122262",
"library": "telegram",
"method": "GET",
"args": []

View File

@@ -50,7 +50,7 @@ import TabItem from '@theme/TabItem';
{
"active": 1,
"function": "SendTextMessage",
"key": "2e1fd4bb3",
"key": "be2122262",
"library": "telegram",
"method": "GET"
}

View File

@@ -35,7 +35,7 @@ import TabItem from '@theme/TabItem';
```bash
melezh UpdateHandlersKey \
--proj "/proj.melezh" \
--handler "dcf91b125" \
--handler "d692ed2ec" \
--key "***"
```
</TabItem>
@@ -44,7 +44,7 @@ import TabItem from '@theme/TabItem';
```batch
melezh UpdateHandlersKey ^
--proj "/proj.melezh" ^
--handler "dcf91b125" ^
--handler "d692ed2ec" ^
--key "***"
```
</TabItem>
@@ -55,7 +55,7 @@ import TabItem from '@theme/TabItem';
"data": {
"active": 1,
"function": "CreatePost",
"key": "dcf91b125",
"key": "d692ed2ec",
"library": "vk",
"method": "FORM",
"args": []

View File

@@ -37,7 +37,7 @@ import TabItem from '@theme/TabItem';
```bash
melezh UpdateRequestsHandler \
--proj "/proj.melezh" \
--handler "2e1fd4bb3" \
--handler "be2122262" \
--lib "vk" \
--func "CreatePost" \
--method "FORM"
@@ -48,7 +48,7 @@ import TabItem from '@theme/TabItem';
```batch
melezh UpdateRequestsHandler ^
--proj "/proj.melezh" ^
--handler "2e1fd4bb3" ^
--handler "be2122262" ^
--lib "vk" ^
--func "CreatePost" ^
--method "FORM"

View File

@@ -69,7 +69,7 @@ import TabItem from '@theme/TabItem';
"description": "Logs save path. To disable logging, set the value to empty",
"name": "logs_path",
"type": "string",
"value": "C:/Users/bayselonarrend/AppData/Local/Temp/Melezh/a5079f4d-e730-42fb-9565-75e14795390c"
"value": "C:/Users/bayselonarrend/AppData/Local/Temp/Melezh/58d66053-93e2-457c-ba70-d9b934a56a99"
},
{
"description": "Logging of incoming request headers",

View File

@@ -31,7 +31,7 @@ import TabItem from '@theme/TabItem';
Host = "172.33.0.13";
Port = "2222";
Login = "bayselonarrend";
SSHSettings = OPI_SSH.GetSettingsViaAgent(Host, Port, Login);
Result = OPI_SSH.GetSettingsViaAgent(Host, Port, Login);
```

View File

@@ -1,4 +1,4 @@
 Хост = "172.33.0.13";
Порт = "2222";
Логин = "bayselonarrend";
НастройкиSSH = OPI_SSH.ПолучитьНастройкиЧерезАгента(Хост, Порт, Логин);
Результат = OPI_SSH.ПолучитьНастройкиЧерезАгента(Хост, Порт, Логин);

View File

@@ -56,7 +56,7 @@ import TabItem from '@theme/TabItem';
```json title="Результат"
{
"result": true,
"key": "3db4f3806",
"url_example": "localhost:port/3db4f3806"
"key": "361b61a20",
"url_example": "localhost:port/361b61a20"
}
```

View File

@@ -34,7 +34,7 @@ import TabItem from '@theme/TabItem';
```bash
melezh ОтключитьОбработчикЗапросов \
--proj "/proj.melezh" \
--handler "3db4f3806"
--handler "361b61a20"
```
</TabItem>
@@ -42,7 +42,7 @@ import TabItem from '@theme/TabItem';
```batch
melezh ОтключитьОбработчикЗапросов ^
--proj "/proj.melezh" ^
--handler "3db4f3806"
--handler "361b61a20"
```
</TabItem>
</Tabs>

View File

@@ -34,7 +34,7 @@ import TabItem from '@theme/TabItem';
```bash
melezh ВключитьОбработчикЗапросов \
--proj "/proj.melezh" \
--handler "3db4f3806"
--handler "361b61a20"
```
</TabItem>
@@ -42,7 +42,7 @@ import TabItem from '@theme/TabItem';
```batch
melezh ВключитьОбработчикЗапросов ^
--proj "/proj.melezh" ^
--handler "3db4f3806"
--handler "361b61a20"
```
</TabItem>
</Tabs>

View File

@@ -34,7 +34,7 @@ import TabItem from '@theme/TabItem';
```bash
melezh ПолучитьОбработчикЗапросов \
--proj "/proj.melezh" \
--handler "3db4f3806"
--handler "361b61a20"
```
</TabItem>
@@ -42,7 +42,7 @@ import TabItem from '@theme/TabItem';
```batch
melezh ПолучитьОбработчикЗапросов ^
--proj "/proj.melezh" ^
--handler "3db4f3806"
--handler "361b61a20"
```
</TabItem>
</Tabs>
@@ -52,7 +52,7 @@ import TabItem from '@theme/TabItem';
"data": {
"active": 1,
"function": "ОтправитьТекстовоеСообщение",
"key": "3db4f3806",
"key": "361b61a20",
"library": "telegram",
"method": "GET",
"args": []

View File

@@ -50,7 +50,7 @@ import TabItem from '@theme/TabItem';
{
"active": 1,
"function": "ОтправитьТекстовоеСообщение",
"key": "3db4f3806",
"key": "361b61a20",
"library": "telegram",
"method": "GET"
}

View File

@@ -35,7 +35,7 @@ import TabItem from '@theme/TabItem';
```bash
melezh ОбновитьКлючОбработчика \
--proj "/proj.melezh" \
--handler "e337e1562" \
--handler "b67382867" \
--key "***"
```
</TabItem>
@@ -44,7 +44,7 @@ import TabItem from '@theme/TabItem';
```batch
melezh ОбновитьКлючОбработчика ^
--proj "/proj.melezh" ^
--handler "e337e1562" ^
--handler "b67382867" ^
--key "***"
```
</TabItem>
@@ -55,7 +55,7 @@ import TabItem from '@theme/TabItem';
"data": {
"active": 1,
"function": "СоздатьПост",
"key": "e337e1562",
"key": "b67382867",
"library": "vk",
"method": "FORM",
"args": []

View File

@@ -37,7 +37,7 @@ import TabItem from '@theme/TabItem';
```bash
melezh ИзменитьОбработчикЗапросов \
--proj "/proj.melezh" \
--handler "3db4f3806" \
--handler "361b61a20" \
--lib "vk" \
--func "СоздатьПост" \
--method "FORM"
@@ -48,7 +48,7 @@ import TabItem from '@theme/TabItem';
```batch
melezh ИзменитьОбработчикЗапросов ^
--proj "/proj.melezh" ^
--handler "3db4f3806" ^
--handler "361b61a20" ^
--lib "vk" ^
--func "СоздатьПост" ^
--method "FORM"

View File

@@ -69,7 +69,7 @@ import TabItem from '@theme/TabItem';
"description": "Путь сохранения логов. Для отключения логирования установите пустое значение",
"name": "logs_path",
"type": "string",
"value": "C:/Users/bayselonarrend/AppData/Local/Temp/Melezh/9ae5dca8-eba9-4128-8710-56e757acdd78"
"value": "C:/Users/bayselonarrend/AppData/Local/Temp/Melezh/46efe674-c066-4737-a4ef-ba26c6f750ff"
},
{
"description": "Логирование заголовков входящих запросов",

View File

@@ -31,7 +31,7 @@ import TabItem from '@theme/TabItem';
Хост = "172.33.0.13";
Порт = "2222";
Логин = "bayselonarrend";
НастройкиSSH = OPI_SSH.ПолучитьНастройкиЧерезАгента(Хост, Порт, Логин);
Результат = OPI_SSH.ПолучитьНастройкиЧерезАгента(Хост, Порт, Логин);
```

File diff suppressed because it is too large Load Diff

View File

@@ -60,9 +60,9 @@
// Arbitrary, Map of KeyAndValue - Create Connection
Function CreateConnection(Val SSHSettings, Val Proxy = "") Export
SSHConnection = OPI_SSH.CreateConnection(SSHSettings, Proxy);
SSHConnection = OPI_SSHRequests.CreateConnection(SSHSettings, Proxy);
If OPI_SSH.IsConnector(SSHConnection) Then
If IsConnector(SSHConnection) Then
Result = SSHConnection.ToSFTP();
Result = OPI_Tools.JsonToStructure(Result);
Else
@@ -90,7 +90,7 @@ EndFunction
// Structure Of KeyAndValue - Connection settings structure
Function GetConnectionConfiguration(Val SSHSettings, Val Proxy = Undefined) Export
Return OPI_SSH.GetConnectionConfiguration(SSHSettings, Proxy);
Return OPI_SSHRequests.GetConnectionConfiguration(SSHSettings, Proxy);
EndFunction
@@ -104,7 +104,7 @@ EndFunction
// Structure Of KeyAndValue - Result of connection termination
Function CloseConnection(Val Connection) Export
Return OPI_SSH.CloseConnection(Connection);
Return OPI_SSHRequests.CloseConnection(Connection);
EndFunction
@@ -118,7 +118,7 @@ EndFunction
// Boolean - Is connector
Function IsConnector(Val Value) Export
Return OPI_SSH.IsConnector(Value);
Return OPI_SSHRequests.IsConnector(Value);
EndFunction
@@ -135,7 +135,7 @@ EndFunction
// Structure Of KeyAndValue - Connection configuration
Function GetSettingsLoginPassword(Val Host, Val Port, Val Login, Val Password = "") Export
Return OPI_SSH.GetSettingsLoginPassword(Host, Port, Login, Password);
Return OPI_SSHRequests.GetSettingsLoginPassword(Host, Port, Login, Password);
EndFunction
@@ -159,7 +159,7 @@ Function GetSettingsPrivateKey(Val Host
, Val Public = ""
, Val Password = "") Export
Return OPI_SSH.GetSettingsPrivateKey(Host, Port, Login, Private, Public, Password);
Return OPI_SSHRequests.GetSettingsPrivateKey(Host, Port, Login, Private, Public, Password);
EndFunction
@@ -175,7 +175,7 @@ EndFunction
// Structure Of KeyAndValue - Connection configuration
Function GetSettingsViaAgent(Val Host, Val Port, Val Login) Export
Return OPI_SSH.GetSettingsViaAgent(Host, Port, Login);
Return OPI_SSHRequests.GetSettingsViaAgent(Host, Port, Login);
EndFunction
@@ -331,7 +331,7 @@ Function GetCurrentDirectory(Val Connection) Export
Return Connection;
Else
Result = OPI_SSH.ExecuteCommand(Connection, "pwd");
Result = OPI_SSHRequests.ExecuteCommand(Connection, "pwd");
ProcessSSHCommandExecution(Result, "path");
EndIf;

View File

@@ -60,30 +60,7 @@
// Arbitrary, Map of KeyAndValue - Create Connection
Function CreateConnection(Val SSHSettings, Val Proxy = "") Export
Result_ = "result";
If IsConnector(SSHSettings) Then
Return SSHSettings;
EndIf;
Connector = OPI_AddIns.GetAddIn("SSH");
ConfigureSetup = SetSettings(Connector, SSHSettings);
If Not OPI_Tools.GetOr(ConfigureSetup, Result_, False) Then
Return ConfigureSetup;
EndIf;
ProxySetup = SetProxy(Connector, Proxy);
If Not OPI_Tools.GetOr(ProxySetup, Result_, False) Then
Return ProxySetup;
EndIf;
Result = Connector.Connect();
Result = OPI_Tools.JsonToStructure(Result);
Return ?(Result[Result_], Connector, Result);
Return OPI_SSHRequests.CreateConnection(SSHSettings, Proxy);
EndFunction
@@ -104,12 +81,7 @@ EndFunction
// Structure Of KeyAndValue - Connection settings structure
Function GetConnectionConfiguration(Val SSHSettings, Val Proxy = Undefined) Export
ConfigurationStructure = New Structure;
OPI_Tools.AddField("set" , SSHSettings, "Collection", ConfigurationStructure);
OPI_Tools.AddField("proxy", Proxy , "Collection", ConfigurationStructure);
Return ConfigurationStructure;
Return OPI_SSHRequests.GetConnectionConfiguration(SSHSettings, Proxy);
EndFunction
@@ -124,32 +96,7 @@ EndFunction
// Map Of KeyAndValue - Processing result
Function ExecuteCommand(Val Connection, Val Command) Export
CloseConnection = CheckCreateConnection(Connection);
If Not IsConnector(Connection) Then
Return Connection;
Else
OPI_TypeConversion.GetLine(Command);
Result = Connection.Execute(Command);
Result = OPI_Tools.JsonToStructure(Result);
Output = Result["stdout"];
If Output <> Undefined Then
If StrEndsWith(Output, Chars.LF) Then
Result["stdout"] = Left(Output, StrLen(Output) - 1);
EndIf;
EndIf;
EndIf;
If CloseConnection Then
Result.Insert("close_connection", CloseConnection(Connection));
EndIf;
Return Result;
Return OPI_SSHRequests.ExecuteCommand(Connection, Command);
EndFunction
@@ -163,17 +110,7 @@ EndFunction
// Structure Of KeyAndValue - Result of connection termination
Function CloseConnection(Val Connection) Export
CheckCreateConnection(Connection);
If Not IsConnector(Connection) Then
Return Connection;
EndIf;
Result = Connection.Disconnect();
Result = OPI_Tools.JsonToStructure(Result);
//@skip-check constructor-function-return-section
Return Result;
Return OPI_SSHRequests.CloseConnection(Connection);
EndFunction
@@ -187,7 +124,7 @@ EndFunction
// Boolean - Is connector
Function IsConnector(Val Value) Export
Return String(TypeOf(Value)) = "AddIn.OPI_SSH.Main";
Return OPI_SSHRequests.IsConnector(Value);
EndFunction
@@ -204,16 +141,7 @@ EndFunction
// Structure Of KeyAndValue - Connection configuration
Function GetSettingsLoginPassword(Val Host, Val Port, Val Login, Val Password = "") Export
String_ = "String";
ConfigurationStructure = New Structure;
OPI_Tools.AddField("auth_type", "password", String_ , ConfigurationStructure);
OPI_Tools.AddField("host" , Host , String_ , ConfigurationStructure);
OPI_Tools.AddField("port" , Port , "Number" , ConfigurationStructure);
OPI_Tools.AddField("username" , Login , String_ , ConfigurationStructure);
OPI_Tools.AddField("password" , Password , String_ , ConfigurationStructure);
Return ConfigurationStructure;
Return OPI_SSHRequests.GetSettingsLoginPassword(Host, Port, Login, Password);
EndFunction
@@ -237,28 +165,7 @@ Function GetSettingsPrivateKey(Val Host
, Val Public = ""
, Val Password = "") Export
String_ = "String";
OPI_TypeConversion.GetFileOnDisk(Private);
Private_ = Private.Path;
If ValueIsFilled(Public) Then
OPI_TypeConversion.GetFileOnDisk(Public);
Public_ = Public.Path;
Else
Public_ = Undefined;
EndIf;
ConfigurationStructure = New Structure;
OPI_Tools.AddField("auth_type" , "private_key" , String_ , ConfigurationStructure);
OPI_Tools.AddField("host" , Host , String_ , ConfigurationStructure);
OPI_Tools.AddField("port" , Port , "Number", ConfigurationStructure);
OPI_Tools.AddField("username" , Login , String_ , ConfigurationStructure);
OPI_Tools.AddField("key_path" , Private_ , String_ , ConfigurationStructure);
OPI_Tools.AddField("pub_path" , Public_ , String_ , ConfigurationStructure);
OPI_Tools.AddField("passphrase", Password , String_ , ConfigurationStructure);
Return ConfigurationStructure;
Return OPI_SSHRequests.GetSettingsPrivateKey(Host, Port, Login, Private, Public, Password);
EndFunction
@@ -274,15 +181,7 @@ EndFunction
// Structure Of KeyAndValue - Connection configuration
Function GetSettingsViaAgent(Val Host, Val Port, Val Login) Export
String_ = "String";
ConfigurationStructure = New Structure;
OPI_Tools.AddField("auth_type" , "agent", String_ , ConfigurationStructure);
OPI_Tools.AddField("host" , Host , String_ , ConfigurationStructure);
OPI_Tools.AddField("port" , Port , "Number", ConfigurationStructure);
OPI_Tools.AddField("username" , Login , String_ , ConfigurationStructure);
Return ConfigurationStructure;
Return OPI_SSHRequests.GetSettingsViaAgent(Host, Port, Login);
EndFunction
@@ -304,8 +203,7 @@ Function GetProxySettings(Val Address
, Val Login = Undefined
, Val Password = Undefined) Export
//@skip-check constructor-function-return-section
Return OPI_AddIns.GetProxySettings(Address, Port, View, Login, Password);
Return OPI_SSHRequests.GetProxySettings(Address, Port, View, Login, Password);
EndFunction
@@ -313,112 +211,6 @@ EndFunction
#EndRegion
#Region Private
Function CheckCreateConnection(Connection)
If Not IsConnector(Connection) Then
CloseConnection = True;
Connection = CreateConnectionByConfiguration(Connection);
Else
CloseConnection = False;
EndIf;
Return CloseConnection;
EndFunction
Function CreateConnectionByConfiguration(Val ConfigurationStructure)
If IsConnector(ConfigurationStructure) Then
Return ConfigurationStructure;
EndIf;
ErrorPattern = "Incorrect connection configuration provided: %1";
Try
OPI_TypeConversion.GetKeyValueCollection(ConfigurationStructure);
Except
Result = New Map;
Result.Insert("result", False);
Result.Insert("error" , StrTemplate(ErrorPattern, ErrorDescription()));
Return Result;
EndTry;
If Not OPI_Tools.CollectionFieldExists(ConfigurationStructure, "set") Then
Result = New Map;
Result.Insert("result", False);
Result.Insert("error" , StrTemplate(ErrorPattern, "missing main connection parameters"));
Return Result;
EndIf;
SSHSettings = ConfigurationStructure["set"];
Proxy = OPI_Tools.GetOr(ConfigurationStructure, "proxy", Undefined);
Return CreateConnection(SSHSettings, Proxy);
EndFunction
Function SetSettings(Val Connector, Val SSHSettings)
ErrorPattern = "Incorrect connection configuration provided: %1";
Try
OPI_TypeConversion.GetKeyValueCollection(SSHSettings);
Except
Result = New Map;
Result.Insert("result", False);
Result.Insert("error" , StrTemplate(ErrorPattern, ErrorDescription()));
Return Result;
EndTry;
SettingsString = OPI_Tools.JSONString(SSHSettings);
Result = Connector.SetSettings(SettingsString);
Result = OPI_Tools.JsonToStructure(Result);
Return Result;
EndFunction
Function SetProxy(Val Connector, Val Proxy)
If Not ValueIsFilled(Proxy) Then
Return New Structure("result", True);
EndIf;
ErrorPattern = "Incorrect proxy configuration passed: %1";
Try
OPI_TypeConversion.GetKeyValueCollection(Proxy);
Except
Result = New Map;
Result.Insert("result", False);
Result.Insert("error" , StrTemplate(ErrorPattern, ErrorDescription()));
Return Result;
EndTry;
ProxyString = OPI_Tools.JSONString(Proxy);
Result = Connector.SetProxy(ProxyString);
Result = OPI_Tools.JsonToStructure(Result);
Return Result;
EndFunction
#EndRegion
#Region Alternate
Function ОткрытьСоединение(Val НастройкиSSH, Val Прокси = "") Export

View File

@@ -38,6 +38,7 @@
<module name="OPI_HTTPRequests" file="tools/Modules/OPI_HTTPRequests.os"/>
<module name="OPI_SQLQueries" file="tools/Modules/OPI_SQLQueries.os"/>
<module name="OPI_SQLQueries" file="tools/Modules/OPI_SQLQueries.os"/>
<module name="OPI_SSHRequests" file="tools/Modules/OPI_SSHRequests.os"/>
<module name="OPI_Tools" file="tools/Modules/internal/Modules/OPI_Tools.os"/>
<module name="OPI_Tools" file="tools/Modules/internal/Modules/OPI_Tools.os"/>
<module name="OPI_AddIns" file="tools/Modules/OPI_AddIns.os"/>

View File

@@ -23196,7 +23196,7 @@ Procedure SSH_GetSettingsViaAgent(FunctionParameters)
Host = FunctionParameters["SSH_Host"];
Port = FunctionParameters["SSH_Port"];
Login = FunctionParameters["SSH_User"];
SSHSettings = OPI_SSH.GetSettingsViaAgent(Host, Port, Login);
Result = OPI_SSH.GetSettingsViaAgent(Host, Port, Login);
// END

View File

@@ -30491,7 +30491,7 @@ Procedure SSH_GetSettingsViaAgent(FunctionParameters)
Options.Insert("port", Port);
Options.Insert("user", Login);
SSHSettings = OPI_TestDataRetrieval.ExecuteTestCLI("ssh", "GetSettingsViaAgent", Options);
Result = OPI_TestDataRetrieval.ExecuteTestCLI("ssh", "GetSettingsViaAgent", Options);
// END

View File

@@ -1109,6 +1109,7 @@ Function GetSSHParameterOptions() Export
TestParametersMain.Insert("SSH_Key", PrivateKey);
TestParametersMain.Insert("Proxy" , False);
TestParametersMain.Insert("Proxy_Type", "none");
TestParameters = OPI_Tools.CopyCollection(TestParametersMain);
TestParameters.Insert("AuthType", "By login and password");

View File

@@ -60,9 +60,9 @@
// Arbitrary, Map of KeyAndValue - Create Connection
Function CreateConnection(Val SSHSettings, Val Proxy = "") Export
SSHConnection = OPI_SSH.CreateConnection(SSHSettings, Proxy);
SSHConnection = OPI_SSHRequests.CreateConnection(SSHSettings, Proxy);
If OPI_SSH.IsConnector(SSHConnection) Then
If IsConnector(SSHConnection) Then
Result = SSHConnection.ToSFTP();
Result = OPI_Tools.JsonToStructure(Result);
Else
@@ -90,7 +90,7 @@ EndFunction
// Structure Of KeyAndValue - Connection settings structure
Function GetConnectionConfiguration(Val SSHSettings, Val Proxy = Undefined) Export
Return OPI_SSH.GetConnectionConfiguration(SSHSettings, Proxy);
Return OPI_SSHRequests.GetConnectionConfiguration(SSHSettings, Proxy);
EndFunction
@@ -104,7 +104,7 @@ EndFunction
// Structure Of KeyAndValue - Result of connection termination
Function CloseConnection(Val Connection) Export
Return OPI_SSH.CloseConnection(Connection);
Return OPI_SSHRequests.CloseConnection(Connection);
EndFunction
@@ -118,7 +118,7 @@ EndFunction
// Boolean - Is connector
Function IsConnector(Val Value) Export
Return OPI_SSH.IsConnector(Value);
Return OPI_SSHRequests.IsConnector(Value);
EndFunction
@@ -135,7 +135,7 @@ EndFunction
// Structure Of KeyAndValue - Connection configuration
Function GetSettingsLoginPassword(Val Host, Val Port, Val Login, Val Password = "") Export
Return OPI_SSH.GetSettingsLoginPassword(Host, Port, Login, Password);
Return OPI_SSHRequests.GetSettingsLoginPassword(Host, Port, Login, Password);
EndFunction
@@ -159,7 +159,7 @@ Function GetSettingsPrivateKey(Val Host
, Val Public = ""
, Val Password = "") Export
Return OPI_SSH.GetSettingsPrivateKey(Host, Port, Login, Private, Public, Password);
Return OPI_SSHRequests.GetSettingsPrivateKey(Host, Port, Login, Private, Public, Password);
EndFunction
@@ -175,7 +175,7 @@ EndFunction
// Structure Of KeyAndValue - Connection configuration
Function GetSettingsViaAgent(Val Host, Val Port, Val Login) Export
Return OPI_SSH.GetSettingsViaAgent(Host, Port, Login);
Return OPI_SSHRequests.GetSettingsViaAgent(Host, Port, Login);
EndFunction
@@ -331,7 +331,7 @@ Function GetCurrentDirectory(Val Connection) Export
Return Connection;
Else
Result = OPI_SSH.ExecuteCommand(Connection, "pwd");
Result = OPI_SSHRequests.ExecuteCommand(Connection, "pwd");
ProcessSSHCommandExecution(Result, "path");
EndIf;

View File

@@ -60,30 +60,7 @@
// Arbitrary, Map of KeyAndValue - Create Connection
Function CreateConnection(Val SSHSettings, Val Proxy = "") Export
Result_ = "result";
If IsConnector(SSHSettings) Then
Return SSHSettings;
EndIf;
Connector = OPI_AddIns.GetAddIn("SSH");
ConfigureSetup = SetSettings(Connector, SSHSettings);
If Not OPI_Tools.GetOr(ConfigureSetup, Result_, False) Then
Return ConfigureSetup;
EndIf;
ProxySetup = SetProxy(Connector, Proxy);
If Not OPI_Tools.GetOr(ProxySetup, Result_, False) Then
Return ProxySetup;
EndIf;
Result = Connector.Connect();
Result = OPI_Tools.JsonToStructure(Result);
Return ?(Result[Result_], Connector, Result);
Return OPI_SSHRequests.CreateConnection(SSHSettings, Proxy);
EndFunction
@@ -104,12 +81,7 @@ EndFunction
// Structure Of KeyAndValue - Connection settings structure
Function GetConnectionConfiguration(Val SSHSettings, Val Proxy = Undefined) Export
ConfigurationStructure = New Structure;
OPI_Tools.AddField("set" , SSHSettings, "Collection", ConfigurationStructure);
OPI_Tools.AddField("proxy", Proxy , "Collection", ConfigurationStructure);
Return ConfigurationStructure;
Return OPI_SSHRequests.GetConnectionConfiguration(SSHSettings, Proxy);
EndFunction
@@ -124,32 +96,7 @@ EndFunction
// Map Of KeyAndValue - Processing result
Function ExecuteCommand(Val Connection, Val Command) Export
CloseConnection = CheckCreateConnection(Connection);
If Not IsConnector(Connection) Then
Return Connection;
Else
OPI_TypeConversion.GetLine(Command);
Result = Connection.Execute(Command);
Result = OPI_Tools.JsonToStructure(Result);
Output = Result["stdout"];
If Output <> Undefined Then
If StrEndsWith(Output, Chars.LF) Then
Result["stdout"] = Left(Output, StrLen(Output) - 1);
EndIf;
EndIf;
EndIf;
If CloseConnection Then
Result.Insert("close_connection", CloseConnection(Connection));
EndIf;
Return Result;
Return OPI_SSHRequests.ExecuteCommand(Connection, Command);
EndFunction
@@ -163,17 +110,7 @@ EndFunction
// Structure Of KeyAndValue - Result of connection termination
Function CloseConnection(Val Connection) Export
CheckCreateConnection(Connection);
If Not IsConnector(Connection) Then
Return Connection;
EndIf;
Result = Connection.Disconnect();
Result = OPI_Tools.JsonToStructure(Result);
//@skip-check constructor-function-return-section
Return Result;
Return OPI_SSHRequests.CloseConnection(Connection);
EndFunction
@@ -187,7 +124,7 @@ EndFunction
// Boolean - Is connector
Function IsConnector(Val Value) Export
Return String(TypeOf(Value)) = "AddIn.OPI_SSH.Main";
Return OPI_SSHRequests.IsConnector(Value);
EndFunction
@@ -204,16 +141,7 @@ EndFunction
// Structure Of KeyAndValue - Connection configuration
Function GetSettingsLoginPassword(Val Host, Val Port, Val Login, Val Password = "") Export
String_ = "String";
ConfigurationStructure = New Structure;
OPI_Tools.AddField("auth_type", "password", String_ , ConfigurationStructure);
OPI_Tools.AddField("host" , Host , String_ , ConfigurationStructure);
OPI_Tools.AddField("port" , Port , "Number" , ConfigurationStructure);
OPI_Tools.AddField("username" , Login , String_ , ConfigurationStructure);
OPI_Tools.AddField("password" , Password , String_ , ConfigurationStructure);
Return ConfigurationStructure;
Return OPI_SSHRequests.GetSettingsLoginPassword(Host, Port, Login, Password);
EndFunction
@@ -237,28 +165,7 @@ Function GetSettingsPrivateKey(Val Host
, Val Public = ""
, Val Password = "") Export
String_ = "String";
OPI_TypeConversion.GetFileOnDisk(Private);
Private_ = Private.Path;
If ValueIsFilled(Public) Then
OPI_TypeConversion.GetFileOnDisk(Public);
Public_ = Public.Path;
Else
Public_ = Undefined;
EndIf;
ConfigurationStructure = New Structure;
OPI_Tools.AddField("auth_type" , "private_key" , String_ , ConfigurationStructure);
OPI_Tools.AddField("host" , Host , String_ , ConfigurationStructure);
OPI_Tools.AddField("port" , Port , "Number", ConfigurationStructure);
OPI_Tools.AddField("username" , Login , String_ , ConfigurationStructure);
OPI_Tools.AddField("key_path" , Private_ , String_ , ConfigurationStructure);
OPI_Tools.AddField("pub_path" , Public_ , String_ , ConfigurationStructure);
OPI_Tools.AddField("passphrase", Password , String_ , ConfigurationStructure);
Return ConfigurationStructure;
Return OPI_SSHRequests.GetSettingsPrivateKey(Host, Port, Login, Private, Public, Password);
EndFunction
@@ -274,15 +181,7 @@ EndFunction
// Structure Of KeyAndValue - Connection configuration
Function GetSettingsViaAgent(Val Host, Val Port, Val Login) Export
String_ = "String";
ConfigurationStructure = New Structure;
OPI_Tools.AddField("auth_type" , "agent", String_ , ConfigurationStructure);
OPI_Tools.AddField("host" , Host , String_ , ConfigurationStructure);
OPI_Tools.AddField("port" , Port , "Number", ConfigurationStructure);
OPI_Tools.AddField("username" , Login , String_ , ConfigurationStructure);
Return ConfigurationStructure;
Return OPI_SSHRequests.GetSettingsViaAgent(Host, Port, Login);
EndFunction
@@ -304,117 +203,10 @@ Function GetProxySettings(Val Address
, Val Login = Undefined
, Val Password = Undefined) Export
//@skip-check constructor-function-return-section
Return OPI_AddIns.GetProxySettings(Address, Port, View, Login, Password);
Return OPI_SSHRequests.GetProxySettings(Address, Port, View, Login, Password);
EndFunction
#EndRegion
#EndRegion
#Region Private
Function CheckCreateConnection(Connection)
If Not IsConnector(Connection) Then
CloseConnection = True;
Connection = CreateConnectionByConfiguration(Connection);
Else
CloseConnection = False;
EndIf;
Return CloseConnection;
EndFunction
Function CreateConnectionByConfiguration(Val ConfigurationStructure)
If IsConnector(ConfigurationStructure) Then
Return ConfigurationStructure;
EndIf;
ErrorPattern = "Incorrect connection configuration provided: %1";
Try
OPI_TypeConversion.GetKeyValueCollection(ConfigurationStructure);
Except
Result = New Map;
Result.Insert("result", False);
Result.Insert("error" , StrTemplate(ErrorPattern, ErrorDescription()));
Return Result;
EndTry;
If Not OPI_Tools.CollectionFieldExists(ConfigurationStructure, "set") Then
Result = New Map;
Result.Insert("result", False);
Result.Insert("error" , StrTemplate(ErrorPattern, "missing main connection parameters"));
Return Result;
EndIf;
SSHSettings = ConfigurationStructure["set"];
Proxy = OPI_Tools.GetOr(ConfigurationStructure, "proxy", Undefined);
Return CreateConnection(SSHSettings, Proxy);
EndFunction
Function SetSettings(Val Connector, Val SSHSettings)
ErrorPattern = "Incorrect connection configuration provided: %1";
Try
OPI_TypeConversion.GetKeyValueCollection(SSHSettings);
Except
Result = New Map;
Result.Insert("result", False);
Result.Insert("error" , StrTemplate(ErrorPattern, ErrorDescription()));
Return Result;
EndTry;
SettingsString = OPI_Tools.JSONString(SSHSettings);
Result = Connector.SetSettings(SettingsString);
Result = OPI_Tools.JsonToStructure(Result);
Return Result;
EndFunction
Function SetProxy(Val Connector, Val Proxy)
If Not ValueIsFilled(Proxy) Then
Return New Structure("result", True);
EndIf;
ErrorPattern = "Incorrect proxy configuration passed: %1";
Try
OPI_TypeConversion.GetKeyValueCollection(Proxy);
Except
Result = New Map;
Result.Insert("result", False);
Result.Insert("error" , StrTemplate(ErrorPattern, ErrorDescription()));
Return Result;
EndTry;
ProxyString = OPI_Tools.JSONString(Proxy);
Result = Connector.SetProxy(ProxyString);
Result = OPI_Tools.JsonToStructure(Result);
Return Result;
EndFunction
#EndRegion

View File

@@ -0,0 +1,321 @@
// OneScript: ./OInt/tools/Modules/OPI_SSHRequests.os
// MIT License
// Copyright (c) 2023-2025 Anton Tsitavets
// Permission is hereby granted, free of charge, to any person obtaining a copy
// of this software and associated documentation files (the "Software"), to deal
// in the Software without restriction, including without limitation the rights
// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
// copies of the Software, and to permit persons to whom the Software is
// furnished to do so, subject to the following conditions:
// The above copyright notice and this permission notice shall be included in all
// copies or substantial portions of the Software.
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
// SOFTWARE.
// https://github.com/Bayselonarrend/OpenIntegrations
// BSLLS:Typo-off
// BSLLS:LatinAndCyrillicSymbolInWord-off
// BSLLS:IncorrectLineBreak-off
// BSLLS:NumberOfOptionalParams-off
// BSLLS:UsingServiceTag-off
// BSLLS:LineLength-off
// BSLLS:QueryParseError-off
// BSLLS:AssignAliasFieldsInQuery-off
// BSLLS:NumberOfParams-off
// BSLLS:UsingSynchronousCalls-off
// BSLLS:MagicNumber-off
//@skip-check module-structure-top-region
//@skip-check module-structure-method-in-regions
//@skip-check wrong-string-literal-content
//@skip-check method-too-many-params
//@skip-check constructor-function-return-section
// Uncomment if OneScript is executed
// #Use "./internal"
#Region Internal
Function CreateConnection(Val SSHSettings, Val Proxy = "") Export
Result_ = "result";
If IsConnector(SSHSettings) Then
Return SSHSettings;
EndIf;
Connector = OPI_AddIns.GetAddIn("SSH");
ConfigureSetup = SetSettings(Connector, SSHSettings);
If Not OPI_Tools.GetOr(ConfigureSetup, Result_, False) Then
Return ConfigureSetup;
EndIf;
ProxySetup = SetProxy(Connector, Proxy);
If Not OPI_Tools.GetOr(ProxySetup, Result_, False) Then
Return ProxySetup;
EndIf;
Result = Connector.Connect();
Result = OPI_Tools.JsonToStructure(Result);
Return ?(Result[Result_], Connector, Result);
EndFunction
Function GetConnectionConfiguration(Val SSHSettings, Val Proxy = Undefined) Export
ConfigurationStructure = New Structure;
OPI_Tools.AddField("set" , SSHSettings, "Collection", ConfigurationStructure);
OPI_Tools.AddField("proxy", Proxy , "Collection", ConfigurationStructure);
Return ConfigurationStructure;
EndFunction
Function ExecuteCommand(Val Connection, Val Command) Export
CloseConnection = CheckCreateConnection(Connection);
If Not IsConnector(Connection) Then
Return Connection;
Else
OPI_TypeConversion.GetLine(Command);
Result = Connection.Execute(Command);
Result = OPI_Tools.JsonToStructure(Result);
Output = Result["stdout"];
If Output <> Undefined Then
If StrEndsWith(Output, Chars.LF) Then
Result["stdout"] = Left(Output, StrLen(Output) - 1);
EndIf;
EndIf;
EndIf;
If CloseConnection Then
Result.Insert("close_connection", CloseConnection(Connection));
EndIf;
Return Result;
EndFunction
Function CloseConnection(Val Connection) Export
CheckCreateConnection(Connection);
If Not IsConnector(Connection) Then
Return Connection;
EndIf;
Result = Connection.Disconnect();
Result = OPI_Tools.JsonToStructure(Result);
//@skip-check constructor-function-return-section
Return Result;
EndFunction
Function IsConnector(Val Value) Export
Return String(TypeOf(Value)) = "AddIn.OPI_SSH.Main";
EndFunction
Function GetSettingsLoginPassword(Val Host, Val Port, Val Login, Val Password = "") Export
String_ = "String";
ConfigurationStructure = New Structure;
OPI_Tools.AddField("auth_type", "password", String_ , ConfigurationStructure);
OPI_Tools.AddField("host" , Host , String_ , ConfigurationStructure);
OPI_Tools.AddField("port" , Port , "Number" , ConfigurationStructure);
OPI_Tools.AddField("username" , Login , String_ , ConfigurationStructure);
OPI_Tools.AddField("password" , Password , String_ , ConfigurationStructure);
Return ConfigurationStructure;
EndFunction
Function GetSettingsPrivateKey(Val Host
, Val Port
, Val Login
, Val Private
, Val Public = ""
, Val Password = "") Export
String_ = "String";
OPI_TypeConversion.GetFileOnDisk(Private);
Private_ = Private.Path;
If ValueIsFilled(Public) Then
OPI_TypeConversion.GetFileOnDisk(Public);
Public_ = Public.Path;
Else
Public_ = Undefined;
EndIf;
ConfigurationStructure = New Structure;
OPI_Tools.AddField("auth_type" , "private_key" , String_ , ConfigurationStructure);
OPI_Tools.AddField("host" , Host , String_ , ConfigurationStructure);
OPI_Tools.AddField("port" , Port , "Number", ConfigurationStructure);
OPI_Tools.AddField("username" , Login , String_ , ConfigurationStructure);
OPI_Tools.AddField("key_path" , Private_ , String_ , ConfigurationStructure);
OPI_Tools.AddField("pub_path" , Public_ , String_ , ConfigurationStructure);
OPI_Tools.AddField("passphrase", Password , String_ , ConfigurationStructure);
Return ConfigurationStructure;
EndFunction
Function GetSettingsViaAgent(Val Host, Val Port, Val Login) Export
String_ = "String";
ConfigurationStructure = New Structure;
OPI_Tools.AddField("auth_type" , "agent", String_ , ConfigurationStructure);
OPI_Tools.AddField("host" , Host , String_ , ConfigurationStructure);
OPI_Tools.AddField("port" , Port , "Number", ConfigurationStructure);
OPI_Tools.AddField("username" , Login , String_ , ConfigurationStructure);
Return ConfigurationStructure;
EndFunction
Function GetProxySettings(Val Address
, Val Port
, Val View = "socks5"
, Val Login = Undefined
, Val Password = Undefined) Export
//@skip-check constructor-function-return-section
Return OPI_AddIns.GetProxySettings(Address, Port, View, Login, Password);
EndFunction
#EndRegion
#Region Private
Function CheckCreateConnection(Connection)
If Not IsConnector(Connection) Then
CloseConnection = True;
Connection = CreateConnectionByConfiguration(Connection);
Else
CloseConnection = False;
EndIf;
Return CloseConnection;
EndFunction
Function CreateConnectionByConfiguration(Val ConfigurationStructure)
If IsConnector(ConfigurationStructure) Then
Return ConfigurationStructure;
EndIf;
ErrorPattern = "Incorrect connection configuration provided: %1";
Try
OPI_TypeConversion.GetKeyValueCollection(ConfigurationStructure);
Except
Result = New Map;
Result.Insert("result", False);
Result.Insert("error" , StrTemplate(ErrorPattern, ErrorDescription()));
Return Result;
EndTry;
If Not OPI_Tools.CollectionFieldExists(ConfigurationStructure, "set") Then
Result = New Map;
Result.Insert("result", False);
Result.Insert("error" , StrTemplate(ErrorPattern, "missing main connection parameters"));
Return Result;
EndIf;
SSHSettings = ConfigurationStructure["set"];
Proxy = OPI_Tools.GetOr(ConfigurationStructure, "proxy", Undefined);
Return CreateConnection(SSHSettings, Proxy);
EndFunction
Function SetSettings(Val Connector, Val SSHSettings)
ErrorPattern = "Incorrect connection configuration provided: %1";
Try
OPI_TypeConversion.GetKeyValueCollection(SSHSettings);
Except
Result = New Map;
Result.Insert("result", False);
Result.Insert("error" , StrTemplate(ErrorPattern, ErrorDescription()));
Return Result;
EndTry;
SettingsString = OPI_Tools.JSONString(SSHSettings);
Result = Connector.SetSettings(SettingsString);
Result = OPI_Tools.JsonToStructure(Result);
Return Result;
EndFunction
Function SetProxy(Val Connector, Val Proxy)
If Not ValueIsFilled(Proxy) Then
Return New Structure("result", True);
EndIf;
ErrorPattern = "Incorrect proxy configuration passed: %1";
Try
OPI_TypeConversion.GetKeyValueCollection(Proxy);
Except
Result = New Map;
Result.Insert("result", False);
Result.Insert("error" , StrTemplate(ErrorPattern, ErrorDescription()));
Return Result;
EndTry;
ProxyString = OPI_Tools.JSONString(Proxy);
Result = Connector.SetProxy(ProxyString);
Result = OPI_Tools.JsonToStructure(Result);
Return Result;
EndFunction
#EndRegion

View File

@@ -0,0 +1,12 @@
<?xml version="1.0" encoding="UTF-8"?>
<mdclass:CommonModule xmlns:mdclass="http://g5.1c.ru/v8/dt/metadata/mdclass" uuid="b59f0d9d-94ec-4c4b-80a2-c75fa4e29094">
<name>OPI_SSHRequests</name>
<synonym>
<key>en</key>
<value>SSH (Utility, OpenIntegrations)</value>
</synonym>
<comment>Common SSH Tools Module of OpenIntegrations</comment>
<server>true</server>
<externalConnection>true</externalConnection>
<clientOrdinaryApplication>true</clientOrdinaryApplication>
</mdclass:CommonModule>

View File

@@ -1109,6 +1109,7 @@ Function GetSSHParameterOptions() Export
TestParametersMain.Insert("SSH_Key", PrivateKey);
TestParametersMain.Insert("Proxy" , False);
TestParametersMain.Insert("Proxy_Type", "none");
TestParameters = OPI_Tools.CopyCollection(TestParametersMain);
TestParameters.Insert("AuthType", "By login and password");

View File

@@ -23197,7 +23197,7 @@ Procedure SSH_GetSettingsViaAgent(FunctionParameters)
Host = FunctionParameters["SSH_Host"];
Port = FunctionParameters["SSH_Port"];
Login = FunctionParameters["SSH_User"];
SSHSettings = OPI_SSH.GetSettingsViaAgent(Host, Port, Login);
Result = OPI_SSH.GetSettingsViaAgent(Host, Port, Login);
// END

View File

@@ -30491,7 +30491,7 @@ Procedure SSH_GetSettingsViaAgent(FunctionParameters)
Options.Insert("port", Port);
Options.Insert("user", Login);
SSHSettings = OPI_TestDataRetrieval.ExecuteTestCLI("ssh", "GetSettingsViaAgent", Options);
Result = OPI_TestDataRetrieval.ExecuteTestCLI("ssh", "GetSettingsViaAgent", Options);
// END

View File

@@ -91,6 +91,7 @@
<commonModules>CommonModule.OPI_Tools</commonModules>
<commonModules>CommonModule.OPI_HTTPRequests</commonModules>
<commonModules>CommonModule.OPI_SQLQueries</commonModules>
<commonModules>CommonModule.OPI_SSHRequests</commonModules>
<commonModules>CommonModule.OPI_AddIns</commonModules>
<commonModules>CommonModule.OPI_Cryptography</commonModules>
<commonModules>CommonModule.OPI_TestDataRetrieval</commonModules>

View File

@@ -60,9 +60,9 @@
// Произвольный, Соответствие Из КлючИЗначение - Открыть соединение
Функция ОткрытьСоединение(Знач НастройкиSSH, Знач Прокси = "") Экспорт
СоединениеSSH = OPI_SSH.ОткрытьСоединение(НастройкиSSH, Прокси);
СоединениеSSH = OPI_ЗапросыSSH.ОткрытьСоединение(НастройкиSSH, Прокси);
Если OPI_SSH.ЭтоКоннектор(СоединениеSSH) Тогда
Если ЭтоКоннектор(СоединениеSSH) Тогда
Результат = СоединениеSSH.ToSFTP();
Результат = OPI_Инструменты.JsonВСтруктуру(Результат);
Иначе
@@ -90,7 +90,7 @@
// Структура Из КлючИЗначение - Структура настроек соединения
Функция ПолучитьКонфигурациюСоединения(Знач НастройкиSSH, Знач Прокси = Неопределено) Экспорт
Возврат OPI_SSH.ПолучитьКонфигурациюСоединения(НастройкиSSH, Прокси);
Возврат OPI_ЗапросыSSH.ПолучитьКонфигурациюСоединения(НастройкиSSH, Прокси);
КонецФункции
@@ -104,7 +104,7 @@
// Структура Из КлючИЗначение - Результат закрытия соединения
Функция ЗакрытьСоединение(Знач Соединение) Экспорт
Возврат OPI_SSH.ЗакрытьСоединение(Соединение);
Возврат OPI_ЗапросыSSH.ЗакрытьСоединение(Соединение);
КонецФункции
@@ -118,7 +118,7 @@
// Булево - Это коннектор
Функция ЭтоКоннектор(Знач Значение) Экспорт
Возврат OPI_SSH.ЭтоКоннектор(Значение);
Возврат OPI_ЗапросыSSH.ЭтоКоннектор(Значение);
КонецФункции
@@ -135,7 +135,7 @@
// Структура Из КлючИЗначение - Конфигурация соединения
Функция ПолучитьНастройкиЛогинПароль(Знач Хост, Знач Порт, Знач Логин, Знач Пароль = "") Экспорт
Возврат OPI_SSH.ПолучитьНастройкиЛогинПароль(Хост, Порт, Логин, Пароль);
Возврат OPI_ЗапросыSSH.ПолучитьНастройкиЛогинПароль(Хост, Порт, Логин, Пароль);
КонецФункции
@@ -159,7 +159,7 @@
, Знач Публичный = ""
, Знач Пароль = "") Экспорт
Возврат OPI_SSH.ПолучитьНастройкиПриватныйКлюч(Хост, Порт, Логин, Приватный, Публичный, Пароль);
Возврат OPI_ЗапросыSSH.ПолучитьНастройкиПриватныйКлюч(Хост, Порт, Логин, Приватный, Публичный, Пароль);
КонецФункции
@@ -175,7 +175,7 @@
// Структура Из КлючИЗначение - Конфигурация соединения
Функция ПолучитьНастройкиЧерезАгента(Знач Хост, Знач Порт, Знач Логин) Экспорт
Возврат OPI_SSH.ПолучитьНастройкиЧерезАгента(Хост, Порт, Логин);
Возврат OPI_ЗапросыSSH.ПолучитьНастройкиЧерезАгента(Хост, Порт, Логин);
КонецФункции
@@ -331,7 +331,7 @@
Возврат Соединение;
Иначе
Результат = OPI_SSH.ВыполнитьКоманду(Соединение, "pwd");
Результат = OPI_ЗапросыSSH.ВыполнитьКоманду(Соединение, "pwd");
ОбработатьВыполнениеКомандыSSH(Результат, "path");
КонецЕсли;

View File

@@ -60,30 +60,7 @@
// Произвольный, Соответствие Из КлючИЗначение - Открыть соединение
Функция ОткрытьСоединение(Знач НастройкиSSH, Знач Прокси = "") Экспорт
Result_ = "result";
Если ЭтоКоннектор(НастройкиSSH) Тогда
Возврат НастройкиSSH;
КонецЕсли;
Коннектор = OPI_Компоненты.ПолучитьКомпоненту("SSH");
УстановкаКонфигурации = УстановитьНастройки(Коннектор, НастройкиSSH);
Если Не OPI_Инструменты.ПолучитьИли(УстановкаКонфигурации, Result_, Ложь) Тогда
Возврат УстановкаКонфигурации;
КонецЕсли;
УстановкаПрокси = УстановитьПрокси(Коннектор, Прокси);
Если Не OPI_Инструменты.ПолучитьИли(УстановкаПрокси, Result_, Ложь) Тогда
Возврат УстановкаПрокси;
КонецЕсли;
Результат = Коннектор.Connect();
Результат = OPI_Инструменты.JsonВСтруктуру(Результат);
Возврат ?(Результат[Result_], Коннектор, Результат);
Возврат OPI_ЗапросыSSH.ОткрытьСоединение(НастройкиSSH, Прокси);
КонецФункции
@@ -104,12 +81,7 @@
// Структура Из КлючИЗначение - Структура настроек соединения
Функция ПолучитьКонфигурациюСоединения(Знач НастройкиSSH, Знач Прокси = Неопределено) Экспорт
СтруктураКонфигурации = Новый Структура;
OPI_Инструменты.ДобавитьПоле("set" , НастройкиSSH, "Коллекция", СтруктураКонфигурации);
OPI_Инструменты.ДобавитьПоле("proxy", Прокси , "Коллекция", СтруктураКонфигурации);
Возврат СтруктураКонфигурации;
Возврат OPI_ЗапросыSSH.ПолучитьКонфигурациюСоединения(НастройкиSSH, Прокси);
КонецФункции
@@ -124,32 +96,7 @@
// Соответствие Из КлючИЗначение - Результат обработки
Функция ВыполнитьКоманду(Знач Соединение, Знач Команда) Экспорт
ЗакрыватьСоединение = ПроверитьСоздатьСоединение(Соединение);
Если Не ЭтоКоннектор(Соединение) Тогда
Возврат Соединение;
Иначе
OPI_ПреобразованиеТипов.ПолучитьСтроку(Команда);
Результат = Соединение.Execute(Команда);
Результат = OPI_Инструменты.JsonВСтруктуру(Результат);
Вывод = Результат["stdout"];
Если Вывод <> Неопределено Тогда
Если СтрЗаканчиваетсяНа(Вывод, Символы.ПС) Тогда
Результат["stdout"] = Лев(Вывод, СтрДлина(Вывод) - 1);
КонецЕсли;
КонецЕсли;
КонецЕсли;
Если ЗакрыватьСоединение Тогда
Результат.Вставить("close_connection", ЗакрытьСоединение(Соединение));
КонецЕсли;
Возврат Результат;
Возврат OPI_ЗапросыSSH.ВыполнитьКоманду(Соединение, Команда);
КонецФункции
@@ -163,17 +110,7 @@
// Структура Из КлючИЗначение - Результат закрытия соединения
Функция ЗакрытьСоединение(Знач Соединение) Экспорт
ПроверитьСоздатьСоединение(Соединение);
Если Не ЭтоКоннектор(Соединение) Тогда
Возврат Соединение;
КонецЕсли;
Результат = Соединение.Disconnect();
Результат = OPI_Инструменты.JsonВСтруктуру(Результат);
//@skip-check constructor-function-return-section
Возврат Результат;
Возврат OPI_ЗапросыSSH.ЗакрытьСоединение(Соединение);
КонецФункции
@@ -187,7 +124,7 @@
// Булево - Это коннектор
Функция ЭтоКоннектор(Знач Значение) Экспорт
Возврат Строка(ТипЗнч(Значение)) = "AddIn.OPI_SSH.Main";
Возврат OPI_ЗапросыSSH.ЭтоКоннектор(Значение);
КонецФункции
@@ -204,16 +141,7 @@
// Структура Из КлючИЗначение - Конфигурация соединения
Функция ПолучитьНастройкиЛогинПароль(Знач Хост, Знач Порт, Знач Логин, Знач Пароль = "") Экспорт
Строка_ = "Строка";
СтруктураКонфигурации = Новый Структура;
OPI_Инструменты.ДобавитьПоле("auth_type", "password", Строка_ , СтруктураКонфигурации);
OPI_Инструменты.ДобавитьПоле("host" , Хост , Строка_ , СтруктураКонфигурации);
OPI_Инструменты.ДобавитьПоле("port" , Порт , "Число" , СтруктураКонфигурации);
OPI_Инструменты.ДобавитьПоле("username" , Логин , Строка_ , СтруктураКонфигурации);
OPI_Инструменты.ДобавитьПоле("password" , Пароль , Строка_ , СтруктураКонфигурации);
Возврат СтруктураКонфигурации;
Возврат OPI_ЗапросыSSH.ПолучитьНастройкиЛогинПароль(Хост, Порт, Логин, Пароль);
КонецФункции
@@ -237,28 +165,7 @@
, Знач Публичный = ""
, Знач Пароль = "") Экспорт
Строка_ = "Строка";
OPI_ПреобразованиеТипов.ПолучитьФайлНаДиске(Приватный);
Приватный_ = Приватный.Путь;
Если ЗначениеЗаполнено(Публичный) Тогда
OPI_ПреобразованиеТипов.ПолучитьФайлНаДиске(Публичный);
Публичный_ = Публичный.Путь;
Иначе
Публичный_ = Неопределено;
КонецЕсли;
СтруктураКонфигурации = Новый Структура;
OPI_Инструменты.ДобавитьПоле("auth_type" , "private_key" , Строка_, СтруктураКонфигурации);
OPI_Инструменты.ДобавитьПоле("host" , Хост , Строка_, СтруктураКонфигурации);
OPI_Инструменты.ДобавитьПоле("port" , Порт , "Число", СтруктураКонфигурации);
OPI_Инструменты.ДобавитьПоле("username" , Логин , Строка_, СтруктураКонфигурации);
OPI_Инструменты.ДобавитьПоле("key_path" , Приватный_ , Строка_, СтруктураКонфигурации);
OPI_Инструменты.ДобавитьПоле("pub_path" , Публичный_ , Строка_, СтруктураКонфигурации);
OPI_Инструменты.ДобавитьПоле("passphrase", Пароль , Строка_, СтруктураКонфигурации);
Возврат СтруктураКонфигурации;
Возврат OPI_ЗапросыSSH.ПолучитьНастройкиПриватныйКлюч(Хост, Порт, Логин, Приватный, Публичный, Пароль);
КонецФункции
@@ -274,15 +181,7 @@
// Структура Из КлючИЗначение - Конфигурация соединения
Функция ПолучитьНастройкиЧерезАгента(Знач Хост, Знач Порт, Знач Логин) Экспорт
Строка_ = "Строка";
СтруктураКонфигурации = Новый Структура;
OPI_Инструменты.ДобавитьПоле("auth_type" , "agent", Строка_, СтруктураКонфигурации);
OPI_Инструменты.ДобавитьПоле("host" , Хост , Строка_, СтруктураКонфигурации);
OPI_Инструменты.ДобавитьПоле("port" , Порт , "Число", СтруктураКонфигурации);
OPI_Инструменты.ДобавитьПоле("username" , Логин , Строка_, СтруктураКонфигурации);
Возврат СтруктураКонфигурации;
Возврат OPI_ЗапросыSSH.ПолучитьНастройкиЧерезАгента(Хост, Порт, Логин);
КонецФункции
@@ -304,8 +203,7 @@
, Знач Логин = Неопределено
, Знач Пароль = Неопределено) Экспорт
//@skip-check constructor-function-return-section
Возврат OPI_Компоненты.ПолучитьНастройкиПрокси(Адрес, Порт, Вид, Логин, Пароль);
Возврат OPI_ЗапросыSSH.ПолучитьНастройкиПрокси(Адрес, Порт, Вид, Логин, Пароль);
КонецФункции
@@ -313,112 +211,6 @@
#КонецОбласти
#Область СлужебныеПроцедурыИФункции
Функция ПроверитьСоздатьСоединение(Соединение)
Если Не ЭтоКоннектор(Соединение) Тогда
ЗакрыватьСоединение = Истина;
Соединение = ОткрытьСоединениеПоКонфигурации(Соединение);
Иначе
ЗакрыватьСоединение = Ложь;
КонецЕсли;
Возврат ЗакрыватьСоединение;
КонецФункции
Функция ОткрытьСоединениеПоКонфигурации(Знач СтруктураКонфигурации)
Если ЭтоКоннектор(СтруктураКонфигурации) Тогда
Возврат СтруктураКонфигурации;
КонецЕсли;
ШаблонОшибки = "Передана некорректная конфигурация соединения: %1";
Попытка
OPI_ПреобразованиеТипов.ПолучитьКоллекциюКлючИЗначение(СтруктураКонфигурации);
Исключение
Результат = Новый Соответствие;
Результат.Вставить("result", Ложь);
Результат.Вставить("error" , СтрШаблон(ШаблонОшибки, ОписаниеОшибки()));
Возврат Результат;
КонецПопытки;
Если Не OPI_Инструменты.ПолеКоллекцииСуществует(СтруктураКонфигурации, "set") Тогда
Результат = Новый Соответствие;
Результат.Вставить("result", Ложь);
Результат.Вставить("error" , СтрШаблон(ШаблонОшибки, "отсутствуют основные параметры соединения"));
Возврат Результат;
КонецЕсли;
НастройкиSSH = СтруктураКонфигурации["set"];
Прокси = OPI_Инструменты.ПолучитьИли(СтруктураКонфигурации, "proxy", Неопределено);
Возврат ОткрытьСоединение(НастройкиSSH, Прокси);
КонецФункции
Функция УстановитьНастройки(Знач Коннектор, Знач НастройкиSSH)
ШаблонОшибки = "Передана некорректная конфигурация соединения: %1";
Попытка
OPI_ПреобразованиеТипов.ПолучитьКоллекциюКлючИЗначение(НастройкиSSH);
Исключение
Результат = Новый Соответствие;
Результат.Вставить("result", Ложь);
Результат.Вставить("error" , СтрШаблон(ШаблонОшибки, ОписаниеОшибки()));
Возврат Результат;
КонецПопытки;
СтрокаНастроек = OPI_Инструменты.JSONСтрокой(НастройкиSSH);
Результат = Коннектор.SetSettings(СтрокаНастроек);
Результат = OPI_Инструменты.JsonВСтруктуру(Результат);
Возврат Результат;
КонецФункции
Функция УстановитьПрокси(Знач Коннектор, Знач Прокси)
Если Не ЗначениеЗаполнено(Прокси) Тогда
Возврат Новый Структура("result", Истина);
КонецЕсли;
ШаблонОшибки = "Передана некорректная конфигурация прокси: %1";
Попытка
OPI_ПреобразованиеТипов.ПолучитьКоллекциюКлючИЗначение(Прокси);
Исключение
Результат = Новый Соответствие;
Результат.Вставить("result", Ложь);
Результат.Вставить("error" , СтрШаблон(ШаблонОшибки, ОписаниеОшибки()));
Возврат Результат;
КонецПопытки;
СтрокаПрокси = OPI_Инструменты.JSONСтрокой(Прокси);
Результат = Коннектор.SetProxy(СтрокаПрокси);
Результат = OPI_Инструменты.JsonВСтруктуру(Результат);
Возврат Результат;
КонецФункции
#КонецОбласти
#Region Alternate
Function CreateConnection(Val SSHSettings, Val Proxy = "") Export

View File

@@ -38,6 +38,7 @@
<module name="OPI_HTTPRequests" file="tools/Modules/OPI_ЗапросыHTTP.os"/>
<module name="OPI_ЗапросыSQL" file="tools/Modules/OPI_ЗапросыSQL.os"/>
<module name="OPI_SQLQueries" file="tools/Modules/OPI_ЗапросыSQL.os"/>
<module name="OPI_ЗапросыSSH" file="tools/Modules/OPI_ЗапросыSSH.os"/>
<module name="OPI_Инструменты" file="tools/Modules/internal/Modules/OPI_Инструменты.os"/>
<module name="OPI_Tools" file="tools/Modules/internal/Modules/OPI_Инструменты.os"/>
<module name="OPI_Компоненты" file="tools/Modules/OPI_Компоненты.os"/>

View File

@@ -23196,7 +23196,7 @@
Хост = ПараметрыФункции["SSH_Host"];
Порт = ПараметрыФункции["SSH_Port"];
Логин = ПараметрыФункции["SSH_User"];
НастройкиSSH = OPI_SSH.ПолучитьНастройкиЧерезАгента(Хост, Порт, Логин);
Результат = OPI_SSH.ПолучитьНастройкиЧерезАгента(Хост, Порт, Логин);
// END

View File

@@ -30491,7 +30491,7 @@
Опции.Вставить("port", Порт);
Опции.Вставить("user", Логин);
НастройкиSSH = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("ssh", "ПолучитьНастройкиЧерезАгента", Опции);
Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("ssh", "ПолучитьНастройкиЧерезАгента", Опции);
// END

View File

@@ -0,0 +1,321 @@
// OneScript: ./OInt/tools/Modules/OPI_ЗапросыSSH.os
// MIT License
// Copyright (c) 2023-2025 Anton Tsitavets
// Permission is hereby granted, free of charge, to any person obtaining a copy
// of this software and associated documentation files (the "Software"), to deal
// in the Software without restriction, including without limitation the rights
// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
// copies of the Software, and to permit persons to whom the Software is
// furnished to do so, subject to the following conditions:
// The above copyright notice and this permission notice shall be included in all
// copies or substantial portions of the Software.
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
// SOFTWARE.
// https://github.com/Bayselonarrend/OpenIntegrations
// BSLLS:Typo-off
// BSLLS:LatinAndCyrillicSymbolInWord-off
// BSLLS:IncorrectLineBreak-off
// BSLLS:NumberOfOptionalParams-off
// BSLLS:UsingServiceTag-off
// BSLLS:LineLength-off
// BSLLS:QueryParseError-off
// BSLLS:AssignAliasFieldsInQuery-off
// BSLLS:NumberOfParams-off
// BSLLS:UsingSynchronousCalls-off
// BSLLS:MagicNumber-off
//@skip-check module-structure-top-region
//@skip-check module-structure-method-in-regions
//@skip-check wrong-string-literal-content
//@skip-check method-too-many-params
//@skip-check constructor-function-return-section
// Раскомментировать, если выполняется OneScript
#Использовать "./internal"
#Область СлужебныйПрограммныйИнтерфейс
Функция ОткрытьСоединение(Знач НастройкиSSH, Знач Прокси = "") Экспорт
Result_ = "result";
Если ЭтоКоннектор(НастройкиSSH) Тогда
Возврат НастройкиSSH;
КонецЕсли;
Коннектор = OPI_Компоненты.ПолучитьКомпоненту("SSH");
УстановкаКонфигурации = УстановитьНастройки(Коннектор, НастройкиSSH);
Если Не OPI_Инструменты.ПолучитьИли(УстановкаКонфигурации, Result_, Ложь) Тогда
Возврат УстановкаКонфигурации;
КонецЕсли;
УстановкаПрокси = УстановитьПрокси(Коннектор, Прокси);
Если Не OPI_Инструменты.ПолучитьИли(УстановкаПрокси, Result_, Ложь) Тогда
Возврат УстановкаПрокси;
КонецЕсли;
Результат = Коннектор.Connect();
Результат = OPI_Инструменты.JsonВСтруктуру(Результат);
Возврат ?(Результат[Result_], Коннектор, Результат);
КонецФункции
Функция ПолучитьКонфигурациюСоединения(Знач НастройкиSSH, Знач Прокси = Неопределено) Экспорт
СтруктураКонфигурации = Новый Структура;
OPI_Инструменты.ДобавитьПоле("set" , НастройкиSSH, "Коллекция", СтруктураКонфигурации);
OPI_Инструменты.ДобавитьПоле("proxy", Прокси , "Коллекция", СтруктураКонфигурации);
Возврат СтруктураКонфигурации;
КонецФункции
Функция ВыполнитьКоманду(Знач Соединение, Знач Команда) Экспорт
ЗакрыватьСоединение = ПроверитьСоздатьСоединение(Соединение);
Если Не ЭтоКоннектор(Соединение) Тогда
Возврат Соединение;
Иначе
OPI_ПреобразованиеТипов.ПолучитьСтроку(Команда);
Результат = Соединение.Execute(Команда);
Результат = OPI_Инструменты.JsonВСтруктуру(Результат);
Вывод = Результат["stdout"];
Если Вывод <> Неопределено Тогда
Если СтрЗаканчиваетсяНа(Вывод, Символы.ПС) Тогда
Результат["stdout"] = Лев(Вывод, СтрДлина(Вывод) - 1);
КонецЕсли;
КонецЕсли;
КонецЕсли;
Если ЗакрыватьСоединение Тогда
Результат.Вставить("close_connection", ЗакрытьСоединение(Соединение));
КонецЕсли;
Возврат Результат;
КонецФункции
Функция ЗакрытьСоединение(Знач Соединение) Экспорт
ПроверитьСоздатьСоединение(Соединение);
Если Не ЭтоКоннектор(Соединение) Тогда
Возврат Соединение;
КонецЕсли;
Результат = Соединение.Disconnect();
Результат = OPI_Инструменты.JsonВСтруктуру(Результат);
//@skip-check constructor-function-return-section
Возврат Результат;
КонецФункции
Функция ЭтоКоннектор(Знач Значение) Экспорт
Возврат Строка(ТипЗнч(Значение)) = "AddIn.OPI_SSH.Main";
КонецФункции
Функция ПолучитьНастройкиЛогинПароль(Знач Хост, Знач Порт, Знач Логин, Знач Пароль = "") Экспорт
Строка_ = "Строка";
СтруктураКонфигурации = Новый Структура;
OPI_Инструменты.ДобавитьПоле("auth_type", "password", Строка_ , СтруктураКонфигурации);
OPI_Инструменты.ДобавитьПоле("host" , Хост , Строка_ , СтруктураКонфигурации);
OPI_Инструменты.ДобавитьПоле("port" , Порт , "Число" , СтруктураКонфигурации);
OPI_Инструменты.ДобавитьПоле("username" , Логин , Строка_ , СтруктураКонфигурации);
OPI_Инструменты.ДобавитьПоле("password" , Пароль , Строка_ , СтруктураКонфигурации);
Возврат СтруктураКонфигурации;
КонецФункции
Функция ПолучитьНастройкиПриватныйКлюч(Знач Хост
, Знач Порт
, Знач Логин
, Знач Приватный
, Знач Публичный = ""
, Знач Пароль = "") Экспорт
Строка_ = "Строка";
OPI_ПреобразованиеТипов.ПолучитьФайлНаДиске(Приватный);
Приватный_ = Приватный.Путь;
Если ЗначениеЗаполнено(Публичный) Тогда
OPI_ПреобразованиеТипов.ПолучитьФайлНаДиске(Публичный);
Публичный_ = Публичный.Путь;
Иначе
Публичный_ = Неопределено;
КонецЕсли;
СтруктураКонфигурации = Новый Структура;
OPI_Инструменты.ДобавитьПоле("auth_type" , "private_key" , Строка_, СтруктураКонфигурации);
OPI_Инструменты.ДобавитьПоле("host" , Хост , Строка_, СтруктураКонфигурации);
OPI_Инструменты.ДобавитьПоле("port" , Порт , "Число", СтруктураКонфигурации);
OPI_Инструменты.ДобавитьПоле("username" , Логин , Строка_, СтруктураКонфигурации);
OPI_Инструменты.ДобавитьПоле("key_path" , Приватный_ , Строка_, СтруктураКонфигурации);
OPI_Инструменты.ДобавитьПоле("pub_path" , Публичный_ , Строка_, СтруктураКонфигурации);
OPI_Инструменты.ДобавитьПоле("passphrase", Пароль , Строка_, СтруктураКонфигурации);
Возврат СтруктураКонфигурации;
КонецФункции
Функция ПолучитьНастройкиЧерезАгента(Знач Хост, Знач Порт, Знач Логин) Экспорт
Строка_ = "Строка";
СтруктураКонфигурации = Новый Структура;
OPI_Инструменты.ДобавитьПоле("auth_type" , "agent", Строка_, СтруктураКонфигурации);
OPI_Инструменты.ДобавитьПоле("host" , Хост , Строка_, СтруктураКонфигурации);
OPI_Инструменты.ДобавитьПоле("port" , Порт , "Число", СтруктураКонфигурации);
OPI_Инструменты.ДобавитьПоле("username" , Логин , Строка_, СтруктураКонфигурации);
Возврат СтруктураКонфигурации;
КонецФункции
Функция ПолучитьНастройкиПрокси(Знач Адрес
, Знач Порт
, Знач Вид = "socks5"
, Знач Логин = Неопределено
, Знач Пароль = Неопределено) Экспорт
//@skip-check constructor-function-return-section
Возврат OPI_Компоненты.ПолучитьНастройкиПрокси(Адрес, Порт, Вид, Логин, Пароль);
КонецФункции
#КонецОбласти
#Область СлужебныеПроцедурыИФункции
Функция ПроверитьСоздатьСоединение(Соединение)
Если Не ЭтоКоннектор(Соединение) Тогда
ЗакрыватьСоединение = Истина;
Соединение = ОткрытьСоединениеПоКонфигурации(Соединение);
Иначе
ЗакрыватьСоединение = Ложь;
КонецЕсли;
Возврат ЗакрыватьСоединение;
КонецФункции
Функция ОткрытьСоединениеПоКонфигурации(Знач СтруктураКонфигурации)
Если ЭтоКоннектор(СтруктураКонфигурации) Тогда
Возврат СтруктураКонфигурации;
КонецЕсли;
ШаблонОшибки = "Передана некорректная конфигурация соединения: %1";
Попытка
OPI_ПреобразованиеТипов.ПолучитьКоллекциюКлючИЗначение(СтруктураКонфигурации);
Исключение
Результат = Новый Соответствие;
Результат.Вставить("result", Ложь);
Результат.Вставить("error" , СтрШаблон(ШаблонОшибки, ОписаниеОшибки()));
Возврат Результат;
КонецПопытки;
Если Не OPI_Инструменты.ПолеКоллекцииСуществует(СтруктураКонфигурации, "set") Тогда
Результат = Новый Соответствие;
Результат.Вставить("result", Ложь);
Результат.Вставить("error" , СтрШаблон(ШаблонОшибки, "отсутствуют основные параметры соединения"));
Возврат Результат;
КонецЕсли;
НастройкиSSH = СтруктураКонфигурации["set"];
Прокси = OPI_Инструменты.ПолучитьИли(СтруктураКонфигурации, "proxy", Неопределено);
Возврат ОткрытьСоединение(НастройкиSSH, Прокси);
КонецФункции
Функция УстановитьНастройки(Знач Коннектор, Знач НастройкиSSH)
ШаблонОшибки = "Передана некорректная конфигурация соединения: %1";
Попытка
OPI_ПреобразованиеТипов.ПолучитьКоллекциюКлючИЗначение(НастройкиSSH);
Исключение
Результат = Новый Соответствие;
Результат.Вставить("result", Ложь);
Результат.Вставить("error" , СтрШаблон(ШаблонОшибки, ОписаниеОшибки()));
Возврат Результат;
КонецПопытки;
СтрокаНастроек = OPI_Инструменты.JSONСтрокой(НастройкиSSH);
Результат = Коннектор.SetSettings(СтрокаНастроек);
Результат = OPI_Инструменты.JsonВСтруктуру(Результат);
Возврат Результат;
КонецФункции
Функция УстановитьПрокси(Знач Коннектор, Знач Прокси)
Если Не ЗначениеЗаполнено(Прокси) Тогда
Возврат Новый Структура("result", Истина);
КонецЕсли;
ШаблонОшибки = "Передана некорректная конфигурация прокси: %1";
Попытка
OPI_ПреобразованиеТипов.ПолучитьКоллекциюКлючИЗначение(Прокси);
Исключение
Результат = Новый Соответствие;
Результат.Вставить("result", Ложь);
Результат.Вставить("error" , СтрШаблон(ШаблонОшибки, ОписаниеОшибки()));
Возврат Результат;
КонецПопытки;
СтрокаПрокси = OPI_Инструменты.JSONСтрокой(Прокси);
Результат = Коннектор.SetProxy(СтрокаПрокси);
Результат = OPI_Инструменты.JsonВСтруктуру(Результат);
Возврат Результат;
КонецФункции
#КонецОбласти

View File

@@ -1109,6 +1109,7 @@
ПараметрыТестаОсновные.Вставить("SSH_Key", ПриватныйКлюч);
ПараметрыТестаОсновные.Вставить("Proxy" , Ложь);
ПараметрыТестаОсновные.Вставить("Proxy_Type", "none");
ПараметрыТеста = OPI_Инструменты.КопироватьКоллекцию(ПараметрыТестаОсновные);
ПараметрыТеста.Вставить("AuthType", "По логину и паролю");

View File

@@ -377,10 +377,9 @@
Возврат "
|Контекст = Новый Структура;
|Контекст.Вставить(""OPI_SSH"", Неопределено);
|
|OPI_SSH = ЗагрузитьСценарий(""%1/oint/core/Modules/OPI_SSH.os"", Контекст);
|Контекст.Вставить(""OPI_SSH"", OPI_SSH);
|
|OPI_SFTP = ЗагрузитьСценарий(""%1/oint/core/Modules/OPI_SFTP.os"", Контекст);
|" + Символы.ПС;

View File

@@ -252,10 +252,9 @@
Возврат "
|Контекст = Новый Структура;
|Контекст.Вставить(""OPI_SSH"", Неопределено);
|
|OPI_SSH = ЗагрузитьСценарий(""%1/oint/core/Modules/OPI_SSH.os"", Контекст);
|Контекст.Вставить(""OPI_SSH"", OPI_SSH);
|
|OPI_SSH = ЗагрузитьСценарий(""%1/oint/core/Modules/OPI_SSH.os"", Контекст);
|" + Символы.ПС;