Pull to refresh
6
0
Илья @ivn

Пользователь

Send message

Не понимаю, как как задать стоимость газа за кубометр\литр?

Сколько не пытался осознать как будет работать роутинг из локальной сети так и не понял в какую таблицу будут попадать пакеты, если нет таблицы main. В итоге веб сервер за маршрутизатором ответит на обоих внешних адресах, но у локальной сети не будет интернета, ведь пакеты из локальной сети не будут промаркированы?
Офтопик, безусловно, но очень хочется сейчас живой пример аптеки, да еще и франшизы, которая может растолкать 8-10 млн по ящикам с учетом ситуации в отрасли в целом.
Ящиков очень много, сотрудников много, настройки переадресации уволенных сотрудников, подключение общих папок в почтовый клиент, общие контакты, интеграция с AD — все это или превращается в крайне занимательный квест для администраторов или невозможно в принципе. Да, мы знаем про API и используем его, но все равно это действительно неудобно с таким количеством почтовых ящиков. Это не означает, что сервис плохой, он просто отличный, но для компании с числом сотрудников более чем 1000 уж слишком трудно управляемый. Ну банально объем почтовой базы понять без обращения в саппорт невозможно. Множество мелочей которые на своем сервере делаются в три клика мышкой с Я.Почта для домена не осуществить. Например добавить в рассылку адрес из другого домена. Приходится для этого изобретать велосипед.

Вот прямо сейчас попробовал загружать почту с ящика ivn@....ru — скорость загрузки около 3 мегабит.
Очень круто, что вы заботитесь о скорости загрузки веб-интерфейса. А что со скоростью отдачи почты по IMAP? Так случилось, что мы выросли из штанишек почты для домена и сделали робкую попытку уйти с вашего сервиса. При тестировании миграции с удивлением выяснили, что скорость загрузки почты от вас на наш почтовый сервер не превышает 5-30 мегабит. При этом максимальные значения именно в пике, средняя скорость существенно ниже. Обратились в службу поддержки где нам популярно объяснили, что почта отдается на максимально возможной скорости (ее не озвучили). Имея около восьмиста почтовых ящиков и объем почтовой базы около полутора терабайт, фактически мы стали заложниками этой ситуации и я до сих пор морщу ум как из нее выйти. Естественно мы меняли свои каналы, чтобы исключить проблемы у себя. Также пытались по той же схеме вливать почту к себе с другого своего почтового сервера и в этом случае скорость соответствовала максимальной ширине нашего канала.

Я буду очень рад, если вы развеете мои печали и подскажете пути решения. Бросить содержимое ящиков, естественно, мы не можем.
Это нереальная лажа, я не проверил свой комментарий и ошибся с тегами. Прошу пардону.

Никогда не думал, что это может потянуть на статью на Хабре, если будет интересно и пригодится то вот код скрипта vbs, который создает ярлыки подключений к терминальным серверам как в режиме удаленного рабочего стола с прописанной средой запуска, так и в режиме запуска опубликованного приложения. Фишка скрипта — определение размера экрана пользователя при запуске и установка именно такого размера экрана в свойствах подключения.

Код
' Скрипт создания на рабочем столе пользователя ярлыка удаленного подключения к рабочему столу 
' или подключения Remote Apps, базируясь на членстве в группах безопасности.
' 
' Шаблон названия группы для создания ярлыка подключения к удаленному рабочему столу
' ==================================================================================
' Префикс названия группы: RDP_ /все после префикса - название ярлыка/
' Описание группы: имя сервера для подключения
' Заметки группы: среда для запуска при входе на терминальный сервер, например "C:\Program Files (x86)\1cv81\bin\1cv8.exe" enterprise /S APP-SRV\base
' 
' Шаблон названия группы для создания ярлыка подключения к Remote Apps
' ==================================================================================
' Префикс названия группы: RemApps_ /все после префикса - название ярлыка/
' Описание группы: имя сервера для подключения
' Заметки группы: псевдоним опубликованного приложения на сервере терминалов

On Error Resume Next
Set wshShell = WScript.CreateObject("WScript.Shell")
Set m_FSO = CreateObject("Scripting.FileSystemObject")

' определяем размер рабочего стола

Set Locator = CreateObject("WbemScripting.SWbemLocator")
Set Services = Locator.ConnectServer(".")
Set Obj = Services.ExecQuery("Select * from Win32_DesktopMonitor")

For Each Item In Obj
If Item.Availability=3 Then
resy = Item.ScreenWidth
resx = Item.ScreenHeight
End If

Next

' WScript.Echo "По вертикали="& resx
' WScript.Echo "По горизонтали="& resy

' Находим пользователя в AD и определем его параметры

Set objSysInfo = CreateObject("ADSystemInfo")
ADSPath = "LDAP://" & objSysInfo.UserName
Set objUser = GetObject(ADSPath)
ShortUserName = objUser.SamAccountName
DomainName = objSysInfo.DomainShortName

' Читаем путь к Рабочему столу

DesktopPath = wshShell.SpecialFolders("Desktop")
LevelCount = 0
MaxLevelCount = 4
Status = CheckGroups(ADSPath)

' дальше идет нудный перечень используемых функций
'============ Function GetPrefixNameGroup ============

Function GetPrefixNameGroup(sString)
' Trim prefix of name group
Dim TempString
TempString = Left(sString, InStr(sString, "_"))
GetPrefixNameGroup = TempString
End Function

'=====================================================
'============ Function GetLinkNameGroup ============

Function GetLinkNameGroup(sString)
' Trim LinkName of name group
Dim TempString
TempString = Mid(sString, InStrRev(sString, "_")+1)
GetLinkNameGroup = TempString
End Function

'=====================================================
'============ Function Create Remote Application File ============

Function CreateRemAppsFile(sString, sName, sShell)
spath = DesktopPath & "\" & sString & ".rdp"

' проверяем наличие такого же файла - если есть - удаляем его'

If m_FSO.FileExists(sPath) or m_FSO.FolderExists(sPath) Then
m_FSO.DeleteFile (sPath),1
End If

Set RDPFile = m_FSO.CreateTextFile (spath, True)
RDPFile.writeline ("redirectclipboard:i:1")
RDPFile.writeline ("redirectposdevices:i:0")
RDPFile.writeline ("redirectprinters:i:0")
RDPFile.writeline ("redirectcomports:i:1")
RDPFile.writeline ("redirectsmartcards:i:0")
RDPFile.writeline ("drivestoredirect:s:")
RDPFile.writeline ("session bpp:i:32")
RDPFile.writeline ("prompt for credentials on client:i:1")
RDPFile.writeline ("span monitors:i:1")
RDPFile.writeline ("use multimon:i:1")
RDPFile.writeline ("remoteapplicationmode:i:1")
RDPFile.writeline ("server port:i:3389")
RDPFile.writeline ("allow font smoothing:i:1")
RDPFile.writeline ("promptcredentialonce:i:1")
RDPFile.writeline ("authentication level:i:2")
RDPFile.writeline ("gatewayusagemethod:i:0")
RDPFile.writeline ("gatewayprofileusagemethod:i:1")
RDPFile.writeline ("gatewaycredentialssource:i:0")
RDPFile.writeline ("full address:s:" & sName)
RDPFile.writeline ("remoteapplicationprogram:s:||" & sShell)
RDPFile.writeline ("gatewayhostname:s:")
RDPFile.writeline ("remoteapplicationname:s:" & sString)
RDPFile.writeline ("screen mode id:i:2")
RDPFile.writeline ("desktopwidth:i:" & resy)
RDPFile.writeline ("desktopheight:i:" & resx)
RDPFile.writeline ("winposstr:s:0,3,0,0,800,600")
RDPFile.writeline ("compression:i:1")
RDPFile.writeline ("keyboardhook:i:2")
RDPFile.writeline ("audiocapturemode:i:0")
RDPFile.writeline ("videoplaybackmode:i:1")
RDPFile.writeline ("connection type:i:2")
RDPFile.writeline ("displayconnectionbar:i:1")
RDPFile.writeline ("disable wallpaper:i:1")
RDPFile.writeline ("allow desktop composition:i:0")
RDPFile.writeline ("disable full window drag:i:1")
RDPFile.writeline ("disable menu anims:i:1")
RDPFile.writeline ("disable themes:i:0")
RDPFile.writeline ("disable cursor setting:i:0")
RDPFile.writeline ("bitmapcachepersistenable:i:1")
RDPFile.writeline ("audiomode:i:0")
RDPFile.writeline ("redirectdirectx:i:1")
RDPFile.writeline ("autoreconnection enabled:i:1")
RDPFile.writeline ("prompt for credentials:i:0")
RDPFile.writeline ("negotiate security layer:i:1")
RDPFile.writeline ("remoteapplicationicon:s:")
RDPFile.writeline ("shell working directory:s:")
RDPFile.writeline ("use redirection server name:i:0")
RDPFile.close
End Function


'============ Function Create RdpFile ============
Function CreateRDPFile(sString, sName, sShell)
spath = DesktopPath & "\" & sString & ".rdp"

' проверяем наличие такого же файла - если есть - удаляем его'

If m_FSO.FileExists(sPath) or m_FSO.FolderExists(sPath) Then
m_FSO.DeleteFile (sPath),1
End If

Set RDPFile = m_FSO.CreateTextFile (spath, True)
RDPFile.writeline ("screen mode id:i:2")
RDPFile.writeline ("use multimon:i:0")
RDPFile.writeline ("desktopwidth:i:" & resy)
RDPFile.writeline ("desktopheight:i:" & resx)
RDPFile.writeline ("session bpp:i:16")
RDPFile.writeline ("winposstr:s:0,3,0,0,800,600")
RDPFile.writeline ("compression:i:1")
RDPFile.writeline ("keyboardhook:i:2")
RDPFile.writeline ("audiocapturemode:i:0")
RDPFile.writeline ("videoplaybackmode:i:1")
RDPFile.writeline ("connection type:i:2")
RDPFile.writeline ("displayconnectionbar:i:1")
RDPFile.writeline ("disable wallpaper:i:1")
RDPFile.writeline ("disable full window drag:i:1")
RDPFile.writeline ("allow desktop composition:i:0")
RDPFile.writeline ("allow font smoothing:i:0")
RDPFile.writeline ("disable menu anims:i:1")
RDPFile.writeline ("disable themes:i:1")
RDPFile.writeline ("disable cursor setting:i:0")
RDPFile.writeline ("bitmapcachepersistenable:i:1")
RDPFile.writeline ("full address:s:" & sName)
RDPFile.writeline ("audiomode:i:2")
RDPFile.writeline ("redirectprinters:i:0")
RDPFile.writeline ("redirectcomports:i:0")
RDPFile.writeline ("redirectsmartcards:i:0")
RDPFile.writeline ("redirectclipboard:i:1")
RDPFile.writeline ("redirectposdevices:i:0")
RDPFile.writeline ("redirectdirectx:i:1")
RDPFile.writeline ("autoreconnection enabled:i:1")
RDPFile.writeline ("authentication level:i:0")
RDPFile.writeline ("prompt for credentials:i:0")
RDPFile.writeline ("negotiate security layer:i:1")
RDPFile.writeline ("remoteapplicationmode:i:0")
RDPFile.writeline ("alternate shell:s:" & sShell)
RDPFile.writeline ("shell working directory:s:")
RDPFile.writeline ("gatewayhostname:s:")
RDPFile.writeline ("gatewayusagemethod:i:4")
RDPFile.writeline ("gatewaycredentialssource:i:4")
RDPFile.writeline ("gatewayprofileusagemethod:i:0")
RDPFile.writeline ("promptcredentialonce:i:1")
RDPFile.writeline ("drivestoredirect:s:*")
RDPFile.writeline ("use redirection server name:i:0")
RDPFile.close
End Function

'=====================================================
'============ Function CheckGroups ===================

Function CheckGroups(ADSPath)
Dim objUser, arrMemberOf
Const E_ADS_PROPERTY_NOT_FOUND = &h8000500D
LevelCount = LevelCount + 1
if ( LevelCount >= MaxLevelCount) then
LevelCount = LevelCount - 1
return LevelCount
end If
Set objUser = GetObject (ADSPath)
On Error Resume Next
arrMemberOf = objUser.GetEx("memberOf")
If Err.Number = E_ADS_PROPERTY_NOT_FOUND Then
LevelCount = LevelCount - 1
return LevelCount
Else
For Each Group in arrMemberOf
ADSGroup = "LDAP://" & Group
CheckGroups(ADSGroup)
' WScript.Echo "Extra=" & LevelCount
Set objGroup = GetObject ( ADSGroup )

If(GetPrefixNameGroup(objGroup.CN) = "RemApps_") Then
Set objGroup = GetObject ( "LDAP://" & Group)
LinkName = GetLinkNameGroup(objGroup.CN)
LinkServer = objGroup.description
LinkProgram = objGroup.info
LinkResult = CreateRemAppsFile (LinkName, LinkServer, LinkProgram)
end If

If(GetPrefixNameGroup(objGroup.CN) = "RDP_") Then
Set objGroup = GetObject ( "LDAP://" & Group)
LinkName = GetLinkNameGroup(objGroup.CN)
LinkServer = objGroup.description
LinkProgram = objGroup.info
LinkResult = CreateRDPFile (LinkName, LinkServer, LinkProgram)
end If

Next
End If
LevelCount = LevelCount - 1
End Function</spoiler>


Следующий код делает почти тоже самое что и скрипт автора топика, но я не проверяю установлена ли 1С и формирую файлы с списками баз в профиле пользователя каждый раз при входе, предварительно их удаляя. В описании группы название базы в списке баз и в заметках параметры подключения к базе. Скрипт не мой, просил сделать на фрилансе, поэтому если кто то узнает свой код — еще раз примите благодарности, несколько лет не знаю горя.

Код
' Префикс названий групп
prefix_1c = "1c_"

' Получаем имя пользователя
set info = CreateObject( "ADSystemInfo" )

' Получаем учетную запись
set user = GetObject( "LDAP://" & info.UserName )

' Создаем файловые потоки
set res_81 = CreateObject( "ADODB.Stream" )
res_81.Type = 2
res_81.Charset = "UTF-8"
res_81.Open
res_81.Position = 0

set res_82 = CreateObject( "ADODB.Stream" )
res_82.Type = 2
res_82.Charset = "UTF-8"
res_82.Open
res_82.Position = 0

memberOf = user.memberOf

' Просматривает список групп
If (not (IsEmpty(memberOf)) ) then
  For Each item in user.memberOf
    set group = GetObject( "LDAP://" & item )

    if (InStr( group.CN, prefix_1c ) = 1) then
      if (InStr( group.info, "Version=8.1" ) > 0) then
        res_81.WriteText( "[" & group.Description & "]" & Chr(13) & Chr(10) )
        res_81.WriteText( group.info & Chr(13) & Chr(10) )
      end if

      if (InStr( group.info, "Version=8.2" ) > 0) then
        res_82.WriteText( "[" & group.Description & "]" & Chr(13) & Chr(10) )
        res_82.WriteText( group.info & Chr(13) & Chr(10) )
      end if
    end if
  next
end if

' Ищем путь до файлов
set shell = CreateObject( "WScript.Shell" )
appdata = shell.ExpandEnvironmentStrings( "%APPDATA%" )

' Создать папки
set fso = CreateObject( "Scripting.FileSystemObject" )

if (not fso.FolderExists( appdata + "\1C" )) then
  fso.CreateFolder( appdata + "\1C" )
end if
if (not fso.FolderExists( appdata + "\1C\1Cv81" )) then
  fso.CreateFolder( appdata + "\1C\1Cv81" )
end if
if (not fso.FolderExists( appdata + "\1C\1CEStart" )) then
  fso.CreateFolder( appdata + "\1C\1CEStart" )
end if


' И пишем файлы туда


res_81.SaveToFile appdata & "\1C\1Cv81\ibases.v8i", 2
res_81.Close

res_82.SaveToFile appdata & "\1C\1CEStart\ibases.v8i", 2
res_82.Close</spoiler>
Никогда не думал, что это может потянуть на статью на Хабре, если будет интересно и пригодится то вот код скрипта vbs, который создает ярлыки подключений к терминальным серверам как в режиме удаленного рабочего стола с прописанной средой запуска, так и в режиме запуска опубликованного приложения. Фишка скрипта — определение размера экрана пользователя при запуске и установка именно такого размера экрана в свойствах подключения.
' Скрипт создания на рабочем столе пользователя ярлыка удаленного подключения к рабочему столу ' или подключения Remote Apps, базируясь на членстве в группах безопасности. ' ' Шаблон названия группы для создания ярлыка подключения к удаленному рабочему столу ' ================================================================================== ' Префикс названия группы: RDP_ /все после префикса - название ярлыка/ ' Описание группы: имя сервера для подключения ' Заметки группы: среда для запуска при входе на терминальный сервер, например "C:\Program Files (x86)\1cv81\bin\1cv8.exe" enterprise /S APP-SRV\base ' ' Шаблон названия группы для создания ярлыка подключения к Remote Apps ' ================================================================================== ' Префикс названия группы: RemApps_ /все после префикса - название ярлыка/ ' Описание группы: имя сервера для подключения ' Заметки группы: псевдоним опубликованного приложения на сервере терминалов On Error Resume Next Set wshShell = WScript.CreateObject("WScript.Shell") Set m_FSO = CreateObject("Scripting.FileSystemObject") ' определяем размер рабочего стола Set Locator = CreateObject("WbemScripting.SWbemLocator") Set Services = Locator.ConnectServer(".") Set Obj = Services.ExecQuery("Select * from Win32_DesktopMonitor") For Each Item In Obj If Item.Availability=3 Then resy = Item.ScreenWidth resx = Item.ScreenHeight End If Next ' WScript.Echo "По вертикали="& resx ' WScript.Echo "По горизонтали="& resy ' Находим пользователя в AD и определем его параметры Set objSysInfo = CreateObject("ADSystemInfo") ADSPath = "LDAP://" & objSysInfo.UserName Set objUser = GetObject(ADSPath) ShortUserName = objUser.SamAccountName DomainName = objSysInfo.DomainShortName ' Читаем путь к Рабочему столу DesktopPath = wshShell.SpecialFolders("Desktop") LevelCount = 0 MaxLevelCount = 4 Status = CheckGroups(ADSPath) ' дальше идет нудный перечень используемых функций '============ Function GetPrefixNameGroup ============ Function GetPrefixNameGroup(sString) ' Trim prefix of name group Dim TempString TempString = Left(sString, InStr(sString, "_")) GetPrefixNameGroup = TempString End Function '===================================================== '============ Function GetLinkNameGroup ============ Function GetLinkNameGroup(sString) ' Trim LinkName of name group Dim TempString TempString = Mid(sString, InStrRev(sString, "_")+1) GetLinkNameGroup = TempString End Function '===================================================== '============ Function Create Remote Application File ============ Function CreateRemAppsFile(sString, sName, sShell) spath = DesktopPath & "\" & sString & ".rdp" ' проверяем наличие такого же файла - если есть - удаляем его' If m_FSO.FileExists(sPath) or m_FSO.FolderExists(sPath) Then m_FSO.DeleteFile (sPath),1 End If Set RDPFile = m_FSO.CreateTextFile (spath, True) RDPFile.writeline ("redirectclipboard:i:1") RDPFile.writeline ("redirectposdevices:i:0") RDPFile.writeline ("redirectprinters:i:0") RDPFile.writeline ("redirectcomports:i:1") RDPFile.writeline ("redirectsmartcards:i:0") RDPFile.writeline ("drivestoredirect:s:") RDPFile.writeline ("session bpp:i:32") RDPFile.writeline ("prompt for credentials on client:i:1") RDPFile.writeline ("span monitors:i:1") RDPFile.writeline ("use multimon:i:1") RDPFile.writeline ("remoteapplicationmode:i:1") RDPFile.writeline ("server port:i:3389") RDPFile.writeline ("allow font smoothing:i:1") RDPFile.writeline ("promptcredentialonce:i:1") RDPFile.writeline ("authentication level:i:2") RDPFile.writeline ("gatewayusagemethod:i:0") RDPFile.writeline ("gatewayprofileusagemethod:i:1") RDPFile.writeline ("gatewaycredentialssource:i:0") RDPFile.writeline ("full address:s:" & sName) RDPFile.writeline ("remoteapplicationprogram:s:||" & sShell) RDPFile.writeline ("gatewayhostname:s:") RDPFile.writeline ("remoteapplicationname:s:" & sString) RDPFile.writeline ("screen mode id:i:2") RDPFile.writeline ("desktopwidth:i:" & resy) RDPFile.writeline ("desktopheight:i:" & resx) RDPFile.writeline ("winposstr:s:0,3,0,0,800,600") RDPFile.writeline ("compression:i:1") RDPFile.writeline ("keyboardhook:i:2") RDPFile.writeline ("audiocapturemode:i:0") RDPFile.writeline ("videoplaybackmode:i:1") RDPFile.writeline ("connection type:i:2") RDPFile.writeline ("displayconnectionbar:i:1") RDPFile.writeline ("disable wallpaper:i:1") RDPFile.writeline ("allow desktop composition:i:0") RDPFile.writeline ("disable full window drag:i:1") RDPFile.writeline ("disable menu anims:i:1") RDPFile.writeline ("disable themes:i:0") RDPFile.writeline ("disable cursor setting:i:0") RDPFile.writeline ("bitmapcachepersistenable:i:1") RDPFile.writeline ("audiomode:i:0") RDPFile.writeline ("redirectdirectx:i:1") RDPFile.writeline ("autoreconnection enabled:i:1") RDPFile.writeline ("prompt for credentials:i:0") RDPFile.writeline ("negotiate security layer:i:1") RDPFile.writeline ("remoteapplicationicon:s:") RDPFile.writeline ("shell working directory:s:") RDPFile.writeline ("use redirection server name:i:0") RDPFile.close End Function '============ Function Create RdpFile ============ Function CreateRDPFile(sString, sName, sShell) spath = DesktopPath & "\" & sString & ".rdp" ' проверяем наличие такого же файла - если есть - удаляем его' If m_FSO.FileExists(sPath) or m_FSO.FolderExists(sPath) Then m_FSO.DeleteFile (sPath),1 End If Set RDPFile = m_FSO.CreateTextFile (spath, True) RDPFile.writeline ("screen mode id:i:2") RDPFile.writeline ("use multimon:i:0") RDPFile.writeline ("desktopwidth:i:" & resy) RDPFile.writeline ("desktopheight:i:" & resx) RDPFile.writeline ("session bpp:i:16") RDPFile.writeline ("winposstr:s:0,3,0,0,800,600") RDPFile.writeline ("compression:i:1") RDPFile.writeline ("keyboardhook:i:2") RDPFile.writeline ("audiocapturemode:i:0") RDPFile.writeline ("videoplaybackmode:i:1") RDPFile.writeline ("connection type:i:2") RDPFile.writeline ("displayconnectionbar:i:1") RDPFile.writeline ("disable wallpaper:i:1") RDPFile.writeline ("disable full window drag:i:1") RDPFile.writeline ("allow desktop composition:i:0") RDPFile.writeline ("allow font smoothing:i:0") RDPFile.writeline ("disable menu anims:i:1") RDPFile.writeline ("disable themes:i:1") RDPFile.writeline ("disable cursor setting:i:0") RDPFile.writeline ("bitmapcachepersistenable:i:1") RDPFile.writeline ("full address:s:" & sName) RDPFile.writeline ("audiomode:i:2") RDPFile.writeline ("redirectprinters:i:0") RDPFile.writeline ("redirectcomports:i:0") RDPFile.writeline ("redirectsmartcards:i:0") RDPFile.writeline ("redirectclipboard:i:1") RDPFile.writeline ("redirectposdevices:i:0") RDPFile.writeline ("redirectdirectx:i:1") RDPFile.writeline ("autoreconnection enabled:i:1") RDPFile.writeline ("authentication level:i:0") RDPFile.writeline ("prompt for credentials:i:0") RDPFile.writeline ("negotiate security layer:i:1") RDPFile.writeline ("remoteapplicationmode:i:0") RDPFile.writeline ("alternate shell:s:" & sShell) RDPFile.writeline ("shell working directory:s:") RDPFile.writeline ("gatewayhostname:s:") RDPFile.writeline ("gatewayusagemethod:i:4") RDPFile.writeline ("gatewaycredentialssource:i:4") RDPFile.writeline ("gatewayprofileusagemethod:i:0") RDPFile.writeline ("promptcredentialonce:i:1") RDPFile.writeline ("drivestoredirect:s:*") RDPFile.writeline ("use redirection server name:i:0") RDPFile.close End Function '===================================================== '============ Function CheckGroups =================== Function CheckGroups(ADSPath) Dim objUser, arrMemberOf Const E_ADS_PROPERTY_NOT_FOUND = &h8000500D LevelCount = LevelCount + 1 if ( LevelCount >= MaxLevelCount) then LevelCount = LevelCount - 1 return LevelCount end If Set objUser = GetObject (ADSPath) On Error Resume Next arrMemberOf = objUser.GetEx("memberOf") If Err.Number = E_ADS_PROPERTY_NOT_FOUND Then LevelCount = LevelCount - 1 return LevelCount Else For Each Group in arrMemberOf ADSGroup = "LDAP://" & Group CheckGroups(ADSGroup) ' WScript.Echo "Extra=" & LevelCount Set objGroup = GetObject ( ADSGroup ) If(GetPrefixNameGroup(objGroup.CN) = "RemApps_") Then Set objGroup = GetObject ( "LDAP://" & Group) LinkName = GetLinkNameGroup(objGroup.CN) LinkServer = objGroup.description LinkProgram = objGroup.info LinkResult = CreateRemAppsFile (LinkName, LinkServer, LinkProgram) end If If(GetPrefixNameGroup(objGroup.CN) = "RDP_") Then Set objGroup = GetObject ( "LDAP://" & Group) LinkName = GetLinkNameGroup(objGroup.CN) LinkServer = objGroup.description LinkProgram = objGroup.info LinkResult = CreateRDPFile (LinkName, LinkServer, LinkProgram) end If Next End If LevelCount = LevelCount - 1 End Function

Следующий код делает почти тоже самое что и скрипт автора топика, но я не проверяю установлена ли 1С и формирую файлы с списками баз в профиле пользователя каждый раз при входе, предварительно их удаляя. В описании группы название базы в списке баз и в заметках параметры подключения к базе. Скрипт не мой, просил сделать на фрилансе, поэтому если кто то узнает свой код — еще раз примите благодарности, несколько лет не знаю горя.

' Префикс названий групп prefix_1c = "1c_" ' Получаем имя пользователя set info = CreateObject( "ADSystemInfo" ) ' Получаем учетную запись set user = GetObject( "LDAP://" & info.UserName ) ' Создаем файловые потоки set res_81 = CreateObject( "ADODB.Stream" ) res_81.Type = 2 res_81.Charset = "UTF-8" res_81.Open res_81.Position = 0 set res_82 = CreateObject( "ADODB.Stream" ) res_82.Type = 2 res_82.Charset = "UTF-8" res_82.Open res_82.Position = 0 memberOf = user.memberOf ' Просматривает список групп If (not (IsEmpty(memberOf)) ) then For Each item in user.memberOf set group = GetObject( "LDAP://" & item ) if (InStr( group.CN, prefix_1c ) = 1) then if (InStr( group.info, "Version=8.1" ) > 0) then res_81.WriteText( "[" & group.Description & "]" & Chr(13) & Chr(10) ) res_81.WriteText( group.info & Chr(13) & Chr(10) ) end if if (InStr( group.info, "Version=8.2" ) > 0) then res_82.WriteText( "[" & group.Description & "]" & Chr(13) & Chr(10) ) res_82.WriteText( group.info & Chr(13) & Chr(10) ) end if end if next end if ' Ищем путь до файлов set shell = CreateObject( "WScript.Shell" ) appdata = shell.ExpandEnvironmentStrings( "%APPDATA%" ) ' Создать папки set fso = CreateObject( "Scripting.FileSystemObject" ) if (not fso.FolderExists( appdata + "\1C" )) then fso.CreateFolder( appdata + "\1C" ) end if if (not fso.FolderExists( appdata + "\1C\1Cv81" )) then fso.CreateFolder( appdata + "\1C\1Cv81" ) end if if (not fso.FolderExists( appdata + "\1C\1CEStart" )) then fso.CreateFolder( appdata + "\1C\1CEStart" ) end if ' И пишем файлы туда res_81.SaveToFile appdata & "\1C\1Cv81\ibases.v8i", 2 res_81.Close res_82.SaveToFile appdata & "\1C\1CEStart\ibases.v8i", 2 res_82.Close
Обновление ОС до последней версии Debian

Можно попросить уточнить до какой именно?
Здесь я густо покраснел и пошел перепиливать адреса. Большое спасибо за замечание. Отнюдь не занудство.
Мне кажется, что вы путаете туннель Site-to-Site с подключением клиента. В первом случае ваши конечные точки туннелей знают о существовании подсетей за ними, во тором случае — нет. Вы хоть какой статический маршрут пропишите на Mikrotik — для Kerio Control трафик из локальной сети за Mikrotik будет «чужим» и будет отброшен. Из локальной сети за Kerio Control доступ будет возможен исключительно к самому клиенту VPN (железка Mikrotik). Схема подключения, описанная в этой части статьи — это схема создания именно клиентского подключения к серверу Kerio Control.
Думаю, что вы ошибаетесь. Если вы не замаскарадите этот трафик — на стороне Kerio Control он будет отброшен, т.к. он придет с адреса, принадлежащего не VPN клиенту (клиент в этом случае сам Mikrotik с адресом, выданным ему VPN сервером Kerio Control), а с адреса за Mikrotik (из локальной сети за ним).

Information

Rating
Does not participate
Location
Липецк, Липецкая обл., Россия
Date of birth
Registered
Activity