Описание skyDSuite (zkyDSL)
Версия 4.12.1.238 от 16.08.2019

Лицензия
Возможности
История версий
Принцип работы
Параметры командной строки
Перезапуск интернет соединений
Фиксированный IP адрес
Приоритет skyDSL
Взаимодействие с DVB-картой
Периодические пинги по земле и по воздуху
Переменные окружения и функции
Атомарные действия
Атомарные действия (приложения и сервисы)
Атомарные действия (скрипты)
Атомарные действия (сеть)
Атомарные действия (железо)
Атомарные действия (Download Master)
Атомарные действия (почта)
Атомарные действия (система)
Атомарные действия (сервера)
Атомарные действия (системная информация)
Служебные действия
Молекулярные действия
Молекулярные действия (файл)
ВременнЫе рамки
Скрипты
Пользовательская панель управления
Избранные действия
Псевдонимы (переменные)
Шифрование данных
"Критические" действия
Дополнительные действия
Планировщик
План «Бэ»
План «Пэ»
HTTP сервер
WebDAV сервер
Telnet сервер
HTTP прокси-сервер
Socks сервер
Правила авторизации на серверах
Работа в наземном режиме
Цепочка наземных интерфейсов
Цепочка vpn-интерфейсов
Статистика трафика
Графики
USSD & SMS
События. Создание/удаление процесса
Пример. Работа в связке Спутник + GPRS + VPN
Пример. Работа только с GPRS соединением
Пример. Изменение speed_in у глобакса в зависимости от времени
Пример. Переключение между "наземными" интерфейсами по расписанию
Пример. Периодическое изменение приоритета (skyDSL)
Пример. Поддержание нужного приоритета (skyDSL)
Поддержка ("Donate")
Связаться с автором




Лицензия
Наверх

skyDSuite (zkyDSL) является бесплатной ("freeware") программой.

skyDSuite (zkyDSL) распространяется "как есть" ("as is"). Автор не несёт ответственность за абсолютно любые результаты использования или неиспользования этой программы и никаких гарантий не даёт. Автор даже не гарантирует, что в данный момент Вы читаете этот файл.

© Андрей А. Мешков "AL-CHEMIST", 2000-3000.




Возможности
Наверх

Основные возможности программы

(*) функционал оформлен в виде пользовательских действий (.\CFG\UDO\*.ZUDA)




Принцип работы
Наверх

Принцип работы программы очень прост. Если программа определяет наличие проблем, то происходит перезапуск интернет соединений и выполнение сопутствующих действий, описанных в файле сценария .\CFG\SDS.ZSCRIPT

Программа должна запускаться с правами администратора.

Работа с программой начинается с выбора сетевых интерфейсов, за трафиком которых мы будем внимательно следить. Если они не определились автоматически, то их можно выбрать из списка через контекстное меню в соответствующих ячейках на главном окне. Список выбора включает все установленные в системе RAS-соединения и активные интерфейсы.
Интерфейсы можно указать вручную в основном файле конфигурации .\CFG\SDS.ZCFG
Спутниковый интерфейс — {SDS.ZCFG} → [MAIN] → SInterface,
"Наземный" интерфейс — {SDS.ZCFG} → [MAIN] → GInterface,
vpn-интерфейс — {SDS.ZCFG} → [MAIN] → VInterface,
информационный интерфейс — {SDS.ZCFG} → [MAIN] → IInterface.

Если программа используется без skyDSL, то необходимо установить параметр {SDS.ZCFG} → [MAIN] → SDSLControl=0 (по умолчанию = 1). При SDSLControl=0 игнорируются все действия и критерии перезапуска, связанные со skyDSL.

Проблемами считаются

Перезапуск интернет соединений может быть отложен при одновременном выполнении следующих условий
1 - {SDS.ZCFG} → [RESTART] → SkipOnSInTraffic=1 (по умолчанию = 0)
2 - {SDS.ZCFG} → [RESTART] → SInSpeedFloor > 0
3 - скорость входящего спутникового трафика превышает {SDS.ZCFG} → [RESTART] → SInSpeedFloor

Перезапуск интернет соединений может быть прерван при одновременном выполнении следующих условий
1 - {SDS.ZCFG} → [RESTART] → BreakOnDVBOutOfLock=1 (по умолчанию = 1)
2 - DVB тюнер не может поймать сигнал (см.
Взаимодействие с DVB-картой)
Существует возможность приостановить проверки критериев перезапуска до появления сигнала.
Для этого необходимо
1 - включить опцию {SDS.ZCFG} → [RESTART] → DVBLockWaitFor=1 (по умолчанию = 1)
2 - указать отличный от нуля период ожидания в секундах {SDS.ZCFG} → [RESTART] → DVBLockWaitForPeriod (по умолчанию = -1)
Если Period < 0, тогда период ожидания равен бесконечности.

Перезапуск интернет соединений может быть прерван при одновременном выполнении следующих условий
1 - {SDS.ZCFG} → [RESTART] → BreakOnBEROverCeil=1 (по умолчанию = 1)
2 - Уровень ошибок DVB тюнера (BER) превышает порог {SDS.ZCFG} → [RESTART] → BERCeil (по умолчанию = 1.000E-006)

Скоростные параметры измеряются в килобитах в секунду.

Анализируемые величины рисуются на главном окне в ячейках сиреневатого цвета.

Анализ происходит, только если включён автоматический контроль ({SDS.ZCFG} → [MAIN] → AutoControl=1).
Возможен анализ при старте программы. Для этого надо установить {SDS.ZCFG} → [MAIN] → StartupControl=1.

PID`ы проверяются при старте программы независимо от значения {SDS.ZCFG} → [MAIN] → StartupControl.
Приоритет также проверяется при старте программы независимо от настроек, но при обнаружении несоответствий он не меняется, skyDSuite ограничивается только предупреждением (...PRIORITY MISMATCH...).

На проверку PID`ов и приоритета влияют параметры {SDS.ZCFG} → [MAIN] → PrioAutoBundling и {SDS.ZCFG} → [MAIN] → PIDsAutoBundling.
{SDS.ZCFG} → [MAIN] → AutoBundling=0 - проверка осуществляется независимо от активности автоматического контроля
{SDS.ZCFG} → [MAIN] → AutoBundling=1 - проверка осуществляется, только если автоматический контроль включен
По умолчанию - AutoBundling=0

Все проверки осуществляются по таймеру.

Сетевая статистика обновляется с интервалом {SDS.ZCFG} → [TIMEOUTs] → RefreshPeriod секунд (по умолчанию = 5 секунд).

Проверка необходимости перезапуска интернет соединений происходит с интервалом {SDS.ZCFG} → [TIMEOUTs] → SystemPeriod секунд (по умолчанию = 10 секунд).

Проверка изменения PID`ов по сравнению с предыдущими значениями происходит с интервалом {SDS.ZCFG} → [TIMEOUTs] → PIDsPeriod секунд (по умолчанию = 30 секунд). Но, возможно, достаточно одной проверки при старте программы.

Проверка соответствия реального приоритета выбранному происходит с интервалом {SDS.ZCFG} → [TIMEOUTs] → PriorityPeriod секунд (по умолчанию = 10 секунд). Если по истечении {SDS.ZCFG} → [TIMEOUTs] → PriorityTimeout секунд (по умолчанию = 30 секунд) приоритет не совпадает с желаемым, увеличивается счётчик ошибок установки приоритета. При совпадении приоритетов, счётчик ошибок обнуляется.

Приоритет меняем, только если активны оба выбранных интерфейса. Это делается, чтобы избежать несанкционированного запуска skyDSL.

В программе существуют два различных счётчика трафика. Условно их можно назвать "коротким" (трафик за короткий период времени) и "длинным" (трафик за длительный период времени).
Переключение между счётчиками ("короткий"/"длинный") через контекстное меню связанных с трафиком ячеек.
Обнулить счётчики можно через Главное меню → Operation → Reset Traffic Counters или через контекстное меню связанных с трафиком ячеек.

skyDSuite пишет несколько файлов.

.\LOGs\*.LOG Общий лог
Максимальное количество сохраняемых файлов = {SDS.ZCFG} → [OUTPUT] → LOGsCount
.\LOGs\*.XLOG дополнительный лог
Максимальное количество сохраняемых файлов = {SDS.ZCFG} → [OUTPUT] → XLOGsCount
.\LOGs\*.ZLOG дополнительный лог
Максимальное количество сохраняемых файлов = {SDS.ZCFG} → [OUTPUT] → ZLOGsCount
.\LOGs\*.RLOG Отдельный лог перезапусков интернет соединений, изменений приоритета, критических ошибок и прочих важных сообщений
Максимальное количество сохраняемых файлов = {SDS.ZCFG} → [OUTPUT] → RLOGsCount
.\LOGs\*.ELOG Отдельный лог критических ошибок
Максимальное количество сохраняемых файлов = {SDS.ZCFG} → [OUTPUT] → ELOGsCount
Для выбора дополнительных типов ошибок, попадающих в файл смотри
Окно настроек → страница "Output" → группа настроек "E LOGs"
.\STATs\*.STAT Сетевая статистика трафика
Статистика пишется, если {SDS.ZCFG} → [OUTPUT] → STATsActive=1.
Максимальное количество сохраняемых файлов = {SDS.ZCFG} → [OUTPUT] → STATsCount
.\STATs\*.STAD Сетевая статистика DVB карты
Статистика пишется, если {SDS.ZCFG} → [OUTPUT] → STADsActive=1.
Максимальное количество сохраняемых файлов = {SDS.ZCFG} → [OUTPUT] → STADsCount
.\STATs\SDS.ZTHIST История значений счётчиков трафика
.\STATs\SDS_ZTSC.XML История значений "коротких" счётчиков трафика в XML формате
.\STATs\SDS_ZTLC.XML История значений "длинных" счётчиков трафика в XML формате
.\STATs\SDS_ZTST.XML Статистика трафика с интервалом в 10 минут в XML формате
.\CFG\SDS.ZDNS Результаты преобразования имён хостов в IP-адреса

Все события выводятся в окна диагностики.
Закладка LOG - основное окно, закладки LOGX и LOGZ - дополнительные окна диагностики.

Если необходимо, чтобы записи в лог файлах содержали текущую дату, тогда параметру {SDS.ZCFG} → [OUTPUT] → LOGsDateStamp присваиваем 1.
В окне настроек он находится на странице "Output" под именем "Date Stamp" в группе настроек "LOGs"

В LOGX пишутся

В LOGZ пишутся

Настройки можно менять прямым редактированием конфигурационных файлов.
Редактор указывается в {SDS.ZCFG} → [MAIN] → CFGEditor (по умолчанию CFGEditor=notepad).

Открытие конфигурационных файлов
Главное меню → Settings →

Base Config...     | CTRL+F4     | .\CFG\SDS.ZCFG
Script Config...   | CTRL+ALT+F4 | .\CFG\SDS.ZSCRIPT

Config Files →     | Toolbar...             | .\CFG\UTB\SDS.ZUTB
                   | Variables...           | .\CFG\SDS.ZVAR
                   | Favorites...           | .\CFG\SDS.ZFAV
                   ----------------------------------------------
                   | Graphs & Tables...     | .\CFG\SDS.ZGRT
                   | DVB Data...            | .\CFG\SDS.ZDVB
                   | Plan X...              | .\CFG\SDS.ZPLX
                   | X Ping...              | .\CFG\SDS.ZPGX
                   | Satellites...          | .\CFG\SDS.ZSAT
                   | OCX Data...            | .\CFG\SDS.ZOCX
                   | Calendar...            | .\CFG\SDS.ZRDAYS
                   ----------------------------------------------
                   | URLs List...           | .\CFG\SDS.ZURLs
                   | E-mail List...         | .\CFG\SDS.ZMAIL
                   | RAS Data...            | .\CFG\SDS.ZRAS
                   | Crits...               | .\CFG\SDS.ZCRITs
                   ----------------------------------------------
                   | APPs List...           | .\CFG\SDS.ZAPPs
                   | Proxy List...          | .\CFG\SDS.ZPRX
                   ----------------------------------------------
                   | HTTP Server...         | .\CFG\SDS.ZHTTP
                   | WebDAV Server...       | .\CFG\SDS.ZWDAV
                   | Telnet Server...       | .\CFG\SDS.ZTEL
                   | HTTP Proxy Server...   | .\CFG\SDS.ZHTTPP
                   | Socks Server...        | .\CFG\SDS.ZSOCKS
...





Параметры командной строки
Наверх

skyDSuite.EXE [param_1=value_1] ... [param_N=value_N]

StartupActions Список действий, выполняемых при запуске программы (разделитель - запятая)
CloseActions Список действий, выполняемых при закрытии программы (разделитель - запятая)
Actions Список действий, выполняемых при передаче параметров уже запущенной программе (разделитель - запятая)
AutoControl Включение/выключение автоматического контроля за состоянием интернет соединений (0|1)
StartupControl Включение/выключение проверки состоянием интернет соединений при старте программы (0|1)
DVBControl Включение/выключение проверки состояния DVB карты (0|1)
Gmode Включение/выключение работы в наземном режиме (0|1)
STAT Включение/выключение записи в файл статистики трафика (0|1)
STAD Включение/выключение записи в файл статистики DVB карты (0|1)
Scheduler Включение/выключение планировщика (0|1)
URL Включение/выключение проверки тестовых ссылок (0|1)
PlanB Включение/выключение плана «Бэ» (0|1)
Gping Включение/выключение периодических пингов по земле (0|1)
Sping Включение/выключение периодических пингов по воздуху (0|1)
GChain Включение/выключение цепочки наземных интерфейсов (0|1)
VChain Включение/выключение цепочки vpn-интерфейсов (0|1)
HTTPServer Включение/выключение HTTP сервера (0|1)
WebDAVServer
WDAVServer
Включение/выключение WebDAV сервера (0|1)
Telnet
TelnetServer
Включение/выключение telnet сервера (0|1)
HTTPProxyServer Включение/выключение HTTP прокси-сервера (0|1)
SocksServer Включение/выключение Socks сервера (0|1)

skyDSuite.EXE StartupActions=+SKY.ACTIVE,+CTRL CloseActions=-CTRL,-SKY.ACTIVE
skyDSuite.EXE StartupActions=*SDS\ON.STARTUP CloseActions=*SDS\ON.CLOSE
skyDSuite.EXE AutoControl=1 StartupControl=1

Действия, переданные в командной строке, имеют больший приоритет нежели действия, описанные в файле скриптов.

Повторный запуск программы с параметрами командной строки приведёт к обновлению соответствующих настроек запущенного экземпляра skyDSuite.
При передаче параметров запущенной программе вызываются действия StartupActions и Actions.
Для передачи параметров используем именованные каналы (named pipes).
Имя создаваемого канала: \\.\pipe\SKYDSUITE–IPC-PIPE-A443238C-9FC8-48BA-9FFB-F25C678D06D6




Перезапуск интернет соединений
Наверх

Предварительные действия

Остановка интернет соединений

Промежуточные действия

Запуск интернет соединений

Завершающие действия

Если в настройках {SDS.ZCFG} → [RESTART] → ScriptActions=1, то происходит вот что.
Если в системе работает скриптовое действие и скриптом была зарегистрирована функция обратного вызова ( SDScript.RegisterRestartCallback("ACallbackProc") ), то при перезапуске вызывается зарегистрированная функция ACallbackProc. Все остальные действия, как встроенные, так и описанные в файле {SDS.ZSCRIPT}, игнорируются.

[ACTION]
Comment=
Active=1
System=1
HotKey=
Gmode=1
Offline=1
Confirm=0
Separate=1
Display=1
Time=

[ALIAS]

[ACTIONS]

[SCRIPT // Comment]
PSCRIPT >>

$SDScript->RegisterRestartCallback("SDS_Restart");

while ( !$SDScript->{ScriptThreadIsDead} ) { $SDScript->Sleeps(200) }

sub SDS_Restart {
  $SDScript->Echo("Уже надо что-то делать");
}

[SCHEDULER]
Active=0
;00:00:00

Если в настройках {SDS.ZCFG} → [RESTART] → CustomActions=1, то встроенные действия игнорируются.

Если в настройках {SDS.ZCFG} → [RESTART] → SDSLServiceControl=1, то при соответствующих действиях будет останавливаться/запускаться сервис skyDSL (tntcraxy) (по умолчанию SDSLServiceControl=1).

Если в настройках {SDS.ZCFG} → [RESTART] → SDSLClientControl=1, то при соответствующих действиях будет останавливаться/запускаться tskyclnt.exe (по умолчанию SDSLClientControl=1).

Автоматический дозвон/разрыв наземного соединения.
Если {SDS.ZCFG} → [RESTART] → GroundControl=1, то дозвон и разрыв "наземного" соединения при перезапуске осуществляет skyDSuite. Эта опция будет работать, только если наземный интерфейс является RAS-соединением.

Автоматический дозвон/разрыв VPN-соединения.
Если {SDS.ZCFG} → [RESTART] → VpnControl=1, то дозвон и разрыв VPN-соединения при перезапуске осуществляет skyDSuite. Эта опция будет работать, только если VPN-интерфейс является RAS-соединением.

Можно указать параметры дозвона в явном виде в файле .\CFG\SDS.ZRAS
Предположим, что мы звоним по соединению VPN, и хотим явно указывать имя пользователя и пароль.
Для этого создаём в файле SDS.ZRAS секцию с именем VPN и определяем нужные значения.
Параметры будут использованы, только если установлен флаг активности (Active=1).

FILE = .\CFG\SDS.ZRAS

[VPN]
Active=1
Username=homeuser
Password=!111
Domain=
Phone=
Callback=

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

FILE = .\CFG\SDS.ZSCRIPT

[ALIAS]
DM=c:\Program Files\Download Master\dmaster.exe

[ASTOPsACTIONS]
Active=1
DM.STOP.ALL/5/1/30/5                // Остановка всех закачек у Download Master`а
-A/20/10>>*DM                       // Закрываем "Download Master"

[PSTARTsACTIONS]
Active=1
+A?C/20/10>>*DM                     // Запускаем "Download Master"
DM.START.ALL/5/1/30/5               // Старт всех закачек у Download Master`а

Если мы хотим ограничиться остановкой/запуском активных закачек, скрипт приобретает вид

FILE = .\CFG\SDS.ZSCRIPT

[ASTOPsACTIONS]
Active=1
DM.STOP.ALL/5/1/30/5                // Остановка всех закачек у Download Master`а

[PSTARTsACTIONS]
Active=1
DM.START.ALL/5/1/30/5               // Старт всех закачек у Download Master`а

Все встроенные действия работают схожим образом. Выполняем операцию, ждём завершения её работы не более заданного количества секунд, делаем паузу заданной продолжительности. ВременнЫе параметры лежат в {SDS.ZCFG} → [skyTIMEs]. Время измеряем в секундах.




Фиксированный IP адрес
Наверх

Существует возможность проверки IP адреса после перезапуска интернет соединений.
Перезапуск будет продолжаться, пока IP адрес не будет удовлетворять указанным параметрам.

Настройки → страница "Restart (B)" → "Fixed IP"
Active Флаг активности
Request Список адресов для получения своего IP
Каждый адрес имеет формат AURL[|AIPIndex], где
AURL - адрес страницы со списком IP адресов
AIPIndex - индекс интересующего нас IP адреса (по умолчанию = 0)
IP IP адрес
mask Маска
Faults Максимальное количество перезапусков
Проверка IP адреса прекращается, если количество перезапусков превысило указанное значение





Приоритет skyDSL
Наверх

Выбранный приоритет, который программа призвана поддерживать по мере сил, отображается в жёлтой ячейке главного окна.

Изменить его можно через контекстное меню этой ячейки или иконки в трее. В меню, птичкой отмечается реальный приоритет, считанный из реестра.

Для изменения приоритета можно использовать также горячие клавиши: CTRL+1 (первый приоритет), CTRL+2 (второй приоритет), ... CTRL+6 (шестой приоритет).




Взаимодействие с DVB-картой
Наверх

Все настройки работы с DVB-картой лежат в файле .\CFG\SDS.ZDVB

Функции взаимодействия с DVB-картой находятся в библиотеке skyDSuiteDVB.DLL
На данный момент поддерживаюся карты на B2C2 чипе. (Тестировалось с TechniSat SkyStar2).

Экспортируемые функции

skyDSuiteDVB.DLL

function B2C2_Start (AInitData: Pointer; ADataSize: DWORD; AForce: BOOL): BOOL; stdcall;
function B2C2_Stop (): BOOL; stdcall;

function B2C2_SendDiSEqC (ADiSEqCType: DWORD; AData: BYTE): BOOL; stdcall; stub;
function B2C2_SendDiSEqCmd (ACmd: PBYTE; ALength: DWORD): BOOL; stdcall; stub;
function B2C2_SetChannel (AFrequency, ASymbolRate, APolarity, AFEC, ALOF1, ALOF2, ALOFSwitch: DWORD): BOOL; stdcall; stub;
function B2C2_SetChannelEx (AFrequency, ASymbolRate, APolarity, AFEC, ALOF1, ALOF2, ALOFSwitch, AModulation: DWORD): BOOL; stdcall; stub;
function B2C2_SetFilter (APID: WORD; AFunc: Pointer; ACallBackType: DWORD; ASize: DWORD; var AFilterID: DWORD): BOOL; stdcall; stub;
function B2C2_DelFilter (AFilterID: DWORD): BOOL; stdcall; stub;

function B2C2_GetStatus (var ATunerStatus: TDVB_TunerStatus): BOOL; stdcall;
function B2C2_GetMAC (var AMAC: TDVB_MAC): BOOL; stdcall;
function B2C2_GetUCMAC (var AMAC: TDVB_MAC): BOOL; stdcall;
function B2C2_SetUCMAC (var AMAC: TDVB_MAC): BOOL; stdcall;
function B2C2_GetMCMAC (var AMACs: TDVB_MACs): BOOL; stdcall;
function B2C2_SetPIDs (var APIDs: TDVB_PIDs; var APIDsCount: Integer): BOOL; stdcall;

Используемые типы данных

skyDSuiteDVB.DLL

const
  MAC_ADDR_SIZE                 = 6;
  MAC_ADDR_LIST_MAX             = 32;
  MAX_REASONABLE_SUPPORTED_PIDS	= 64;

type
  PDVB_STR64 = ^TDVB_STR64;
  TDVB_STR64 = array [0..64-1] of CHAR;

type
  PDVB_MAC = ^TDVB_MAC;
  TDVB_MAC = array [0..MAC_ADDR_SIZE-1] of BYTE;

  PDVB_MAC_LIST = ^TDVB_MAC_LIST;
  TDVB_MAC_LIST = array [0..MAC_ADDR_LIST_MAX-1] of TDVB_MAC;

  PDVB_MACs = ^TDVB_MACs;
  TDVB_MACs = packed record
    Count : Integer;       // input/output
    List  : TDVB_MAC_LIST; // output
  end;

type
  PDVB_PIDs = ^TDVB_PIDs;
  TDVB_PIDs = array [0..MAX_REASONABLE_SUPPORTED_PIDS-1] of Integer;

type
  // неопределённые поля типов Integer и Single имеют отрицательные значения
  PDVB_TunerSignal = ^TDVB_TunerSignal;
  TDVB_TunerSignal = packed record
    Locked   : Integer;  // Signal Locked
    Quality  : Integer;  // Signal Quality
    Present  : Integer;  // Signal Present
    Strength : Integer;  // Signal Strength
  end;

type
  // неопределённые поля типов Integer и Single имеют отрицательные значения
  PDVB_TunerStatus = ^TDVB_TunerStatus;
  TDVB_TunerStatus = packed record
    TunerType : TDVB_STR64;        // Tuner Type

    Signal    : TDVB_TunerSignal;  // Signal Data
    SNR       : Single;            // Signal To Noise Ratio
    BER       : Single;            // Bit Error Rate

    PIDsCount : Integer;           // IP PIDs Count
    PIDs      : TDVB_PIDs;         // IP PIDs
  end;

За взаимодействие с DVB-картой отвечают действия
DVB.Restart - Перезапуск мониторинга DVB-карты (использует функции B2C2_Stop и B2C2_Start)
DVB.Stop - Остановка мониторинга DVB-карты (использует функцию B2C2_Stop)
DVB.Start - Запуск мониторинга DVB-карты (использует функцию B2C2_Start)
DVB.SyncPIDs - Синхронизация PID`ов DVB-карты и skyDSL (использует функцию B2C2_SetPIDs)
DVB.MAC - Вывод на экран MAC-адреса DVB-карты (использует функцию B2C2_GetMAC)
DVB.UCMAC - Вывод на экран Unicast MAC-адреса DVB-карты (использует функцию B2C2_GetUCMAC)
DVB.MCMAC - Вывод на экран Multicast MAC-адресов DVB-карты (использует функцию B2C2_GetMCMAC)

В качестве библиотеки можно использовать StreamReader.DLL
Для этого, в этой библиотеке должны быть объявлены функции определения качества/уровня сигнала

StreamReader.DLL

function Statistic (var pStat: TDVB_TunerSignal): BOOL; cdecl;
function GetSignal (var pStrength: Integer; var pQuality: Integer): BOOL; cdecl;
function GetSignalStrength (var pStrength: Single; var pQuality: Integer): BOOL; cdecl;
function GetSignalEx (var pSNR: Single; var pBER: Single): BOOL; cdecl;

STREAMREADER_API BOOL Statistic (long* pStat);
STREAMREADER_API BOOL GetSignal (long* pStrength, long* pQuality);
STREAMREADER_API BOOL GetSignalStrength (float* pStrength, long* pQuality);
STREAMREADER_API BOOL GetSignalEx (float* pSNR, float* pBER);

Для определения качества/уровня сигнала используется одна из функций - Statistic, GetSignal, GetSignalStrength

Тесты проводились с библиотекой StreamReader.DLL из проекта StreamReaderEx (Универсальный StreamReader.DLL)




Периодические пинги по земле и по воздуху
Наверх

Существует возможность периодически пинговать выбранный хост.
Перед пингом прописываем в системе маршрут к пингуемому хосту через наземный или спутниковый интерфейс.

route ADD HostIP GateIP
ping Host -n Count -w Timeout -l BufferSize
route DELETE HostIP

Добавление/удаление маршрутов: cmd /c route ADD/DELETE HostIP ...
Пинги реализованы с применением системных функций (IcmpSendEcho, ...).

Установки по умолчанию
[GPing] - настройки пинга по земле, [SPing] - настройки пинга по воздуху

FILE = .\CFG\SDS.ZPGX

[GPing]
Active=0
Separate=1
Period=90
FaultPeriod=90
Host=www.ru
RouteAdd=0
RouteDrop=0
SetMask=0
Mask=
SetMetric=0
Metric=0
SetIFIndex=0
SendCount=4
SendTimeout=4000
SendBufferSize=32
RetryCount=20
RetryOKs=2

[SPing]
Active=0
Separate=1
Period=90
FaultPeriod=90
Host=ya.ru
RouteAdd=0
RouteDrop=0
SetMask=0
Mask=
SetMetric=0
Metric=0
SetIFIndex=0
SendCount=4
SendTimeout=4000
SendBufferSize=32
RetryCount=20
RetryOKs=2

Работает это так

Наличие ошибок является одним из критериев перезапуска интернет соединений.

Пингование не происходит, если в настройках указано добавление маршрута и соответствующий интерфейс неактивен.

Быстрое включение/выключение пингов по земле доступно через птичку "G ping" на главном окне.
Быстрое включение/выключение пингов по воздуху доступно через птичку "S ping" на главном окне.




Переменные окружения и функции
Наверх

%SIF% - имя спутникового интерфейса
%GIF% - имя наземного интерфейса
%VIF% - имя Vpn-интерфейса
%IIF% - имя информационного интерфейса

%SIP% - IP адрес спутникового интерфейса
%GIP% - IP адрес наземного интерфейса
%VIP% - IP адрес Vpn-интерфейса
%IIP% - IP адрес информационного интерфейса

%SMAC% - MAC адрес спутникового интерфейса
%GMAC% - MAC адрес наземного интерфейса
%VMAC% - MAC адрес Vpn-интерфейса
%IMAC% - MAC адрес информационного интерфейса

%SDNS%, %SDNS1%, %SDNS2% - список DNS серверов спутникового интерфейса
%GDNS%, %GDNS1%, %GDNS2% - список DNS серверов наземного интерфейса
%VDNS%, %VDNS1%, %VDNS2% - список DNS серверов Vpn-интерфейса
%IDNS%, %IDNS1%, %IDNS2% - список DNS серверов информационного интерфейса

cmd ? route add 81.169.147.31 %GIP%
Добавили маршрут к 81.169.147.31 через наземный интерфейс

print ? GIP=%GIP%
Вывели значение %GIP% на экран.

%IP,AURL,Amask% - преобразование имени хоста в IP-адрес
print ? %IP,google.com%
print ? %IP,google.com,255.255.255.0%
print ? %IP,google.com,24%
cmd ? route add %IP,ftp.narod.ru% %GIP%

%IFIP,AInterface,Amask% - получаем IP-адрес интерфейса AInterface
print ? %IFIP,GPRS%
print ? %IFIP,GPRS,255.255.255.0%

%HEXIP,AIP,APrefix% - представление IP-адреса в шестнадцатиричном виде
print ? %HEXIP,10.1.1.1%
print ? %HEXIP,%VIP%,0002%

%CFG,ASection,AKey% - чтение основного конфигурационного файла
print ? %CFG,MODEM,ComPort% :: %CFG,MODEM,PortSettings%

%CFG.GET,ACFGFile,ASection,AKey% - чтение конфигурационного файла
print ? %CFG.GET,*,MODEM,ComPort% :: %CFG.GET,*,MODEM,PortSettings%
print ? %CFG.GET,%ProgramFiles%\GlobaX\globax.conf,remote,speed_out%

%MODEM%, %MODEM.DEVICE% - значение {SDS.ZCFG} → [MODEM] → Device [0]
%MODEM.ID%, %MODEM.DEVICE.ID% - значение {SDS.ZCFG} → [MODEM] → Device [1]
%MODEM.ROOT% - значение {SDS.ZCFG} → [MODEM] → Device [2]
%MODEM.ROOTEX% - значение {SDS.ZCFG} → [MODEM] → Device [3]

%MODEM.PORT% - значение {SDS.ZCFG} → [MODEM] → Port
%MODEM.PORT.SETTINGS% - значение {SDS.ZCFG} → [MODEM] → PortSettings
%MODEM.COM.PORT% - значение {SDS.ZCFG} → [MODEM] → ComPort
%MODEM.COM.PORT.SETTINGS% - значение {SDS.ZCFG} → [MODEM] → ComPortSettings

%MODEM.IDMASK% - значение {SDS.ZCFG} → [MODEM] → IDmask

%DATE, AFormatString, AShift%
%DATETIME, AFormatString, AShift%
Строковое представление текущей даты.
AFormatString - форматирующая строка (по умолчанию dd"/"mm"/"yyyy).
AShift - сдвиг даты в днях (работаем с датой, равной текущей дате плюс AShift).
print ? %DATE%
print ? %DATE, hh":"mm":"ss"."zzz%

%BDAY, ABaseDay, AShift%
Номер текущего дня с отсчётом от BaseDay
AShift - сдвиг даты в днях (работаем с датой, равной текущей дате плюс AShift).
print ? %BDAY,1.1.1970,1%

%TIME32, AShift%
Количество секунд, прошедших с 00:00:00, 1 января 1970 (UTC)
AShift - сдвиг в секундах (работаем со временем, равным текущему времени плюс AShift).
print ? %TIME32%

%TICKS, AShift%
Количество миллисекунд, прошедших с запуска операционной системы
AShift - сдвиг в миллисекундах (работаем со временем, равным текущему времени плюс AShift).
print ? %TICKS%

%HexColor, AColor%
Шестнадцатиричное представление цвета AColor
print ? 0x%HexColor,red%

%MD5, AFormat, AString1, AString2, ..., AStringN%
Вычисление хеш-суммы MD5(AString1+AString2+...+AStringN).
AFormat - формат выводимого результата
X - шестнадцатиричное представление, верхний регистр
x - шестнадцатиричное представление, нижний регистр

%URI, AText, AQuery%
%URL, AText, AQuery%
Возвращаем процентно-закодированный текст.
Все не алфавитно-числовые символы (кроме -_.) заменены на знак процентов (%) с последующими двумя 16-ричными цифрами. Если AQuery='1', тогда пробелы заменяются на знак плюс (+).
print ? %URI,"ABC:А Б С:XYZ"%

%UTF8.URI, AText, AQuery%
%UTF8.URL, AText, AQuery%
Возвращаем процентно-закодированный текст.
Все не алфавитно-числовые символы (кроме -_.) заменены на знак процентов (%) с последующими двумя 16-ричными цифрами. Если AQuery='1', тогда пробелы заменяются на знак плюс (+).
print ? %UTF8.URI,"продлить"%

%URI^, AText%
%URL^, AText%
Декодирование процентно-закодированной строки AText.
Строка AText должна быть заключена в двойные или одинарные кавычки.
print ? %URI^,"A%31%32A"%
print ? %URI^,'A%31%32A'%
print ? %URI^,%URI,"ABC:А Б С:XYZ"%%

%UTF8.URI^, AText%
%UTF8.URL^, AText%
Декодирование процентно-закодированной строки AText.
Строка AText должна быть заключена в двойные или одинарные кавычки.
print ? %UTF8.URI^,%UTF8.URI,"продлить"%%
print ? %UTF8.URI^,"iFolder.ru%20%D0%91%D0%B5%D1%81%D0%BF%D0%BB%D0%B0%D1%82%D0%BD%D1%8B%D0%B9%20%D1%85%D0%BE%D1%81%D1%82%D0%B8%D0%BD%D0%B3%20%D1%84%D0%B0%D0%B9%D0%BB%D0%BE%D0%B2%20-%20%D1%85%D1%80%D0%B0%D0%BD%D0%B5%D0%BD%D0%B8%D0%B5%20%D1%84%D0%B0%D0%B9%D0%BB%D0%BE%D0%B2"%

%MultilineString, AText%
Представление строки AText в многострочном виде
print ? %MultilineString,"Aaa. Bbb; Ccc"%

%PDU, AText%
%PDU7, AText%
Представление строки AText в семибитовой PDU-кодировке.
print ? %PDU,*100#%

%PDU^, APDUText%
%PDU7^, APDUText%
Преобразование строки из семибитовой PDU кодировки в ansi-кодировку.

%PDU8^, APDUText%
Преобразование строки из PDU8 кодировки в ansi-кодировку.

%PDU16^, APDUText%
Преобразование строки из PDU16 кодировки в ansi-кодировку.

%HANSI^, AText%
Преобразование строки из ansi-кодировки в шестнадцатиричном представлении в ansi-кодировку.
print ? %HANSI^,30313233343536373839%

%HUTF8^, AUTFText%
Преобразование строки из UTF-8 кодировки в шестнадцатиричном представлении в ansi-кодировку.
print ? %HUTF8^,D0A2D18B20D0BAD182D0BE20D182D0B0D0BAD0BED0B93F%

%UTF8^, AUTFText%
Преобразование строки из UTF-8 кодировки в ansi-кодировку.
print ? %UTF8^,%URI^,"iFolder.ru%20%D0%91%D0%B5%D1%81%D0%BF%D0%BB%D0%B0%D1%82%D0%BD%D1%8B%D0%B9%20%D1%85%D0%BE%D1%81%D1%82%D0%B8%D0%BD%D0%B3%20%D1%84%D0%B0%D0%B9%D0%BB%D0%BE%D0%B2%20-%20%D1%85%D1%80%D0%B0%D0%BD%D0%B5%D0%BD%D0%B8%D0%B5%20%D1%84%D0%B0%D0%B9%D0%BB%D0%BE%D0%B2"%%

%HUTF16^, AUTFText%
%HUCS2^, AUTFText%
Преобразование строки из unicode-кодировки в шестнадцатиричном представлении в ansi-кодировку.
print ? %HUTF16^,0422044B002004410430043C0020043A0442043E002004420430043A043E0439003F%

%UTF16^, AUTFText%
%UCS2^, AUTFText%
Преобразование строки из unicode-кодировки в ansi-кодировку.
print ? %UTF16^,...%

%ESCAPE, AText%
Преобразование символов в escape-символы (0x0D → \r, 0x0A → \n, ...)
print ? %ESCAPE,...%

%ESCAPE^, AText%
%UNESCAPE, AText%
Преобразование escape-символов (\r → 0x0D, \n → 0x0A, ...) в обычные символы
print ? %ESCAPE^,"acb\ndef"%
print ? %UNESCAPE,"123\n456"%

%SMS, APhone, AText%
Генерация SMS сообщения с автоматическим определением кодировки.
Если в тексте присутствуют символы > 0x7F, то используется UCS2-кодировка.
Длинные сообщения (>=160 символов для PDU-кодировки, >70 символов для UCS2-кодировки) урезаются.
print ? %SMS,79201234567,ку-ку%

%SMS.PDU, APhone, AText%
Генерация SMS сообщения в семибитовой PDU-кодировке.

%SMS.UCS2, APhone, AText%
Генерация SMS сообщения в UCS2-кодировке.

%SMS+, APhone, AText%
Генерация сегментированного SMS сообщения с автоматическим определением кодировки.
Если в тексте присутствуют символы > 0x7F, то используется UCS2-кодировка.
Длинные сообщения (>=160 символов для PDU-кодировки, >70 символов для UCS2-кодировки) разбиваются на сегменты и отправляются по отдельности.

%SMS.PDU+, APhone, AText%
Генерация сегментированного SMS сообщения в семибитовой PDU-кодировке.

%SMS.UCS2+, APhone, AText%
Генерация сегментированного SMS сообщения в UCS2-кодировке.

%SMS^, ASMSText%
%SMS2^, ASMSText%
Приведение SMS сообщения к читабельному виду.
Функция SMS2^ отличается от SMS^ тем, что строки, соответствующие тексту сообщения, заключены в рамку из символов 0x0B (\v). Используется действием *AT\SMS.READ для отрисовки текста сообщения другим цветом.
print ? %SMS^,07919702929090F044048105010008906081907330213E050003430202002E003500300020041C0431002E0020041E044104420430043B043E0441044C003A0020003100300032002E003500300020041C0431003B%

%TAG, ARequestID, ATAGKey, ATAGField%
%RequestTAG, ARequestID, ATAGKey, ATAGField%
Доступ к результатам запросов при выполнении действия HTTP[S|X]
В качестве ARequestID можно указывать или целочисленный номер запроса (отсчёт от 1) или строковый идентификатор (параметр ARIdent действия HTTP[S|X]).
Пример использования можно посмотреть в .\CFG\UDO\Balance\RADUGA.ZUDA

%ITAG, ARequestID, ATAGKey, ATAGField%
%RequestITAG, ARequestID, ATAGKey, ATAGField%
Доступ к результатам запросов при выполнении действия HTTP[S|X]
В качестве ARequestID можно указывать или целочисленный номер запроса (отсчёт от 1) или строковый идентификатор (параметр ARIdent действия HTTP[S|X]).

%TAGText, ARequestID, ATAGKey%
%RequestTAGText, ARequestID, ATAGKey%
Доступ к результатам запросов при выполнении действия HTTP[S|X]
В качестве ARequestID можно указывать или целочисленный номер запроса (отсчёт от 1) или строковый идентификатор (параметр ARIdent действия HTTP[S|X]).

%RequestData, ARequestID%
Доступ к результатам запросов при выполнении действия HTTP[S|X]
В качестве ARequestID можно указывать или целочисленный номер запроса (отсчёт от 1) или строковый идентификатор (параметр ARIdent действия HTTP[S|X]).
Пример использования можно посмотреть в .\CFG\UDO\Script\HTTP.DATA.ZUDA

%RequestText, ARequestID%
Доступ к результатам запросов при выполнении действия HTTP[S|X]
В качестве ARequestID можно указывать или целочисленный номер запроса (отсчёт от 1) или строковый идентификатор (параметр ARIdent действия HTTP[S|X]).
Пример использования можно посмотреть в .\CFG\UDO\Script\HTTP.TEXT.ZUDA

%RequestRedirectURL, ARequestID%
Доступ к результатам запросов при выполнении действия HTTP[S|X]
В качестве ARequestID можно указывать или целочисленный номер запроса (отсчёт от 1) или строковый идентификатор (параметр ARIdent действия HTTP[S|X]).

%RequestRedirectParams, ARequestID%
Доступ к результатам запросов при выполнении действия HTTP[S|X]
В качестве ARequestID можно указывать или целочисленный номер запроса (отсчёт от 1) или строковый идентификатор (параметр ARIdent действия HTTP[S|X]).

%RequestLocation, ARequestID%
Доступ к результатам запросов при выполнении действия HTTP[S|X]
Возвращает значение параметра "Location" из ответа на запрос.
В качестве ARequestID можно указывать или целочисленный номер запроса (отсчёт от 1) или строковый идентификатор (параметр ARIdent действия HTTP[S|X]).

%RequestJSONParamValue, ARequestID, AParamName%
Доступ к результатам запросов при выполнении действия HTTP[S|X]
Возвращает значение параметра с именем AParamName, описанного в JSON-данных, полученных на запрос ARequestID.
В качестве ARequestID можно указывать или целочисленный номер запроса (отсчёт от 1) или строковый идентификатор (параметр ARIdent действия HTTP[S|X]).
Например, если в ответ на запрос ARequestID пришли данные:
{"code":{"value":"0","name":"X"},"data":{"parameters":null,"token":"ABCD"}}
то вызов %RequestJSONParamValue, ARequestID, data.token% возвратит строку ABCD.
Параметр AParamName может иметь такой вид:
• data.token
• data->token

%JSONParamValue, AData, AParamName%
Возвращает значение параметра с именем AParamName, описанного в JSON-данных AData.
Правила обработки данных такие же, как и для функции RequestJSONParamValue

%RequestXMLParamValue, ARequestID, AParamName%
Доступ к результатам запросов при выполнении действия HTTP[S|X]
Возвращает значение параметра с именем AParamName, описанного в XML-данных, полученных на запрос ARequestID.
В качестве ARequestID можно указывать или целочисленный номер запроса (отсчёт от 1) или строковый идентификатор (параметр ARIdent действия HTTP[S|X]).
Например, если в ответ на запрос ARequestID пришли данные:
<?xml version="1.0" encoding="windows-1251" ?>
<ValCurs Date="27.02.2015" name="Foreign Currency Market">
<Valute ID="R01235">
	<NumCode>840</NumCode>
	<CharCode>USD</CharCode>
	<Nominal>1</Nominal>
	<Name>Доллар США</Name>
	<Value>60,7109</Value>
</Valute>
<Valute ID="R01239">
	<NumCode>978</NumCode>
	<CharCode>EUR</CharCode>
	<Nominal>1</Nominal>
	<Name>Евро</Name>
	<Value>68,9797</Value>
</Valute>
</ValCurs>
то вызов %RequestXMLParamValue, ARequestID, ValCurs.CharCode=USD.Value% возвратит строку 60,7109.
Параметр AParamName может иметь такой вид:
• ValCurs.CharCode=USD.Value
• ValCurs.USD.Value
• ValCurs->USD->Value

%XMLParamValue, AData, AParamName%
Возвращает значение параметра с именем AParamName, описанного в XML-данных AData.
Правила обработки данных такие же, как и для функции RequestXMLParamValue

%URLParamValue, AURL, AParamName%
Получаем значение параметра с именем AParamName в запросе AURL.
Например, %URLParamValue, "http://host.ru/action?sid=ABCD", sid% возвратит строку ABCD.

%SDS.VAR, AVarName%
%SDS.GET.VAR, AVarName%
Получение значения переменной AVarName.

...
[ACTIONS]
SCRIPT ? JScript >> SDScript.SDSVar("a")=2; SDScript.SDSVar("b")=3; n=SDScript.SDSVar("a")*SDScript.SDSVar("b"); SDScript.SDSVar("result")=n; SDScript.Echo(n);
print ? a=%SDS.VAR,a%
print ? b=%SDS.VAR,b%
print ? result=%SDS.VAR,result%
print ? %SDS.VAR,a%*%SDS.VAR,b%=%SDS.VAR,result%
...

%SDS.SET.VAR, AVarName, AVarValue%
Присвоение переменной с именем AVarName значения AVarValue.

%FILE^, AFile, ASize, AShift%
Чтение ASize байт из файла AFile со смещением в AShift байт. Если AShift<0, то смещение считаем от конца файла. Если ASize≤0, то читаем весь файл.
print ? %FILE^,skyDSuite.exe,2,0%
print ? %UTF16^,%FILE^,TEST.UTF,0,2%%

Системные переменные окружения
Программа понимает системные переменные окружения.
print ? %SystemRoot%\system32\mswsock.dll

Системные переменные окружения можно переопределить в файлах .\CFG\SDS.ZSCRIPT, .\CFG\UDO\SDS.ZUDD, .\CFG\SDS.ZFAV в секции [ENV]

FILE = .\CFG\SDS.ZVAR

[ENV]
ProgramFiles=C:\Program Files (x86)
ProgramFiles64=C:\Program Files

При совпадении имён внутренних переменных окружения и системных, предпочтение отдаётся внутренним.




Атомарные действия
Наверх

Атомарное действие может представлять собой список действий, разделённых символом ' ## ' (пробелы слева и справа обязательны).
Например:
CFG ? SDS.ZCFG ? POS.Left=200 ## CFG.LOAD

Всё, что следует за "//" в описании действия, считается комментарием
Если в описании действия встречается "//", то для правильной работы достаточно будет добавить пустой комментарий.

FILE = .\CFG\SDS.ZSCRIPT

[SCHEDULER]
Active=1
10:00:00=+A/20/10>>*xyz?p=//*//        //

ВременнЫе рамки задаются после после ключевой фразы Time:
Например:
CFG.SET ? *GXC ? remote.speed_in=60000 Time: [00:00:00-10:00:00)

Пример использования временнЫх рамок атомарного действия (изменение speed_in у глобакса в зависимости от времени).

Если в начале описания атомарного действия встречается символ !, то при выполнении этого действия выводим на экран и в лог только комментарий.

Если в начале описания атомарного действия встречается символ /, то действие выполняется в основном потоке.

Если в начале описания атомарного действия встречается символ \, то действие выполняется в отдельном потоке.

Имена файлов для действий типа 'A', 'a' (запуск приложений) должны быть полными.
Если для запуска используется действие типа 'O', 'o', полный путь к файлу определяется системой.
Передача параметров сервисам не поддерживается.
Если AWaits или APause не определён, то по умолчанию используется нулевое значение.

Ряд действий имеет параметр AOutput ... [>>> AOutput]
Если AOutput указан, то результат выполнения действия будет отправлен в AOutput.
В этом случае на экран будет выведен только факт запуска действия.
Формат AOutput:
file:AFileName - запись данных в ansi-файл AFileName
+file:AFileName - добавление данных к ansi-файлу AFileName

Для тестирования (и не только) действий удобно использовать встроенную командную строчку внизу главного окна программы. Вводим команду, жмём RETURN или F9, наблюдаем за результатом.

Чтобы действия из командной строки выполнялись без подтверждений, необходимо нажимать CTRL+RETURN или CTRL+F9.

Внутреннюю структуру действия, набранного в командной строке, можно подсмотреть нажав CTRL+ALT+A.

Пример
FILE = .\CFG\SDS.ZSCRIPT

[ALIAS]
DM=c:\Program Files\Download Master\dmaster.exe

[SCHEDULER]
Active=1
02:00:00=WAKEUP                        // Выходим из спящего режима
02:05:00=RESET.SC                      // Обнуляем "короткий" счётчик трафика
02:05:00=#STATs                        // Создаём новый файл статистики (трафик)
02:05:00=+STATs                        // Включаем запись в файл статистики (трафик)
02:05:00=#STADs                        // Создаём новый файл статистики (DVB)
02:05:00=+STADs                        // Включаем запись в файл статистики (DVB)
02:05:00=##SKY                         // Перезапускаем интернет соединения
02:05:00=P1/10                         // Устанавливаем первый приоритет
02:05:00=+URLs                         // Включаем проверку ссылок
02:05:00=+A/20/10>>*DM                 // Запускаем "Download Master"
02:05:00=DM.START.ALL/5/1/30/5         // Старт всех закачек у Download Master`а
02:05:00=+CTRL                         // Включаем автоматический контроль
02:05:00=+PlanB                        // Включаем план «Бэ»
07:55:00=-PlanB                        // Выключаем план «Бэ»
07:55:00=-CTRL                         // Выключаем автоматический контроль
07:55:00=DM.STOP.ALL/5/1/30/5          // Остановка всех закачек у Download Master`а
07:55:00=-A/20/10>>*DM                 // Закрываем "Download Master"
07:55:00=-STATs                        // Выключаем запись в файл статистики
07:55:00=-URLs                         // Выключаем проверку ссылок
07:55:00=-SKY.ACTIVE                   // Выключаем интернет соединения
07:55:00=RESET.SC                      // Обнуляем "короткий" счётчик трафика
07:55:00=HIBERNATE                     // Переходим в спящий режим

ESC
ESCAPE
Остановка выполнения текущего действия

-SDS
EXIT
QUIT
Выходим из программы skyDSuite.

#SDS [?|>> AParams]
Перезапускаем skyDSuite с параметрами AParams.
Если AParams=*, то новый экземпляр skyDSuite запускается с предыдущими параметрами.
#SDS
#SDS >> "CloseActions=PAUSE/10"
SCRIPT ? PerlScript >> SDScript.Action("#SDS >> CloseActions=Pause/10")

PAUSE [/AsPause]
sPAUSE [/AsPause]
msPAUSE [/AmsPause]
SLEEP [/AsPause]
sSLEEP [/AsPause]
msSLEEP [/AmsPause]
DELAY [/AsPause]
sDELAY [/AsPause]
msDELAY [/AmsPause]
Пауза в AsPause секунд или в AmsPause миллисекунд.
PAUSE/10 // 10-и секундная пауза
sPAUSE/10 // 10-и секундная пауза
msPAUSE/200 // 200 миллисекундная пауза
SLEEP/10 // 10-и секундная пауза

CFG ?|>> ACFGFile? ASection.AKey=AValue
CFG.SET ?|>> ACFGFile? ASection.AKey=AValue
Изменение произвольных параметров в файле конфигурации ACFGFile. Если путь к файлу не указан, то ищем файл в директории .\CFG
Если ACFGFile не определён или равен *, то в качестве файла берётся .\CFG\SDS.ZCFG
CFG ? SDS.ZCFG ? POS.Left=200
CFG.SET >> SDS.ZCFG ? MAIN.ScriptFile=SDS.ZSCRIPT
CFG.SET >> * ? MAIN.ScriptFile=SDS.ZSCRIPT
CFG.SET >> MAIN.ScriptFile=SDS.ZSCRIPT

CFG.GET ?|>> ACFGFile? ASection.AKey
Вывод на экран параметров файла конфигурации ACFGFile. Если путь к файлу не указан, то ищем файл в директории .\CFG
Если ACFGFile не определён или равен *, то в качестве файла берётся .\CFG\SDS.ZCFG
CFG.GET ? SDS.ZCFG ? POS.Left
CFG.GET ? %ProgramFiles%\GlobaX\globax.conf ? remote.speed_out

CFG.LOAD
Обновление конфигурации без обновления списка действий планировщика.
CFG.LOAD
CFG ? SDS.ZCFG ? POS.Left=200 ## CFG.LOAD

CFG.LOADS
Обновление конфигурации c обновлением списка действий планировщика.
CFG.LOADS

CFG.SAVE
Сохранение конфигурации.

print[t][:ALOGType] ?|>> AString
Вывод на экран значения AString.
print - строка не содержит время.
printt - строка содержит время.
ALOGType - тип сообщения (info, error, warning, ...)
print ? GIP=%GIP% // выводим IP наземного интерфейса
print:info ? GIP=%GIP% // выводим IP наземного интерфейса

message ?|>> AMessage [/ACloseTimeout]
Вывод сообщения AMessage в окно сообщений.
Окно автоматически закрывается через ACloseTimeout секунд.
-E ? Gmail >>> ::message?Получена почта // Выведем сообщение, если количество полученных писем не нулевое

#P [/APause]
Устанавливаем выбранный приоритет.
После выполнения действия, делаем паузу в APause секунд.

P1 [/APause]
Устанавливаем первый приоритет
После выполнения действия, делаем паузу в APause секунд.

P2 [/APause]
Устанавливаем второй приоритет
После выполнения действия, делаем паузу в APause секунд.

P3 [/APause]
Устанавливаем третий приоритет
После выполнения действия, делаем паузу в APause секунд.

P4 [/APause]
Устанавливаем четвёртый приоритет
После выполнения действия, делаем паузу в APause секунд.

P5 [/APause]
Устанавливаем пятый приоритет
После выполнения действия, делаем паузу в APause секунд.

P6 [/APause]
Устанавливаем шестой приоритет
После выполнения действия, делаем паузу в APause секунд.

PC0 [/APause]
Установка верхней границы приоритета.
Автоматическое определение на основании данных реестра.
После выполнения действия, делаем паузу в APause секунд.

PC1 [/APause]
Установка верхней границы приоритета.
Искусственное ограничение приоритета величиной 1.
После выполнения действия, делаем паузу в APause секунд.

PC2 [/APause]
Установка верхней границы приоритета.
Искусственное ограничение приоритета величиной 2.
После выполнения действия, делаем паузу в APause секунд.

PC3 [/APause]
Установка верхней границы приоритета.
Искусственное ограничение приоритета величиной 3.
После выполнения действия, делаем паузу в APause секунд.

PC4 [/APause]
Установка верхней границы приоритета.
Искусственное ограничение приоритета величиной 4.
После выполнения действия, делаем паузу в APause секунд.

PC5 [/APause]
Установка верхней границы приоритета.
Искусственное ограничение приоритета величиной 5.
После выполнения действия, делаем паузу в APause секунд.

PC6 [/APause]
Установка верхней границы приоритета.
Искусственное ограничение приоритета величиной 6.
После выполнения действия, делаем паузу в APause секунд.

print[t].PCeil
Вывод в окно диагностики верхней границы приоритета.
print.PCeil - строка не содержит дату.
printt.PCeil - строка содержит дату.

-CTRL [/APause]
Выключение автоматического контроля за состоянием интернет соединений
После выполнения действия, делаем паузу в APause секунд.

+CTRL [/APause]
Включение автоматического контроля за состоянием интернет соединений
После выполнения действия, делаем паузу в APause секунд.

-Gmode [/APause]
Выключение работы в наземном режиме
После выполнения действия, делаем паузу в APause секунд.

+Gmode [/APause]
Включение работы в наземном режиме
После выполнения действия, делаем паузу в APause секунд.

-SCH [/APause]
-SCHEDULER [/APause]
Выключение планировщика
После выполнения действия, делаем паузу в APause секунд.

+SCH [/APause]
+SCHEDULER [/APause]
Включение планировщика
После выполнения действия, делаем паузу в APause секунд.

#SCH [/APause]
#SCHEDULER [/APause]
Перезапуск планировщика
После выполнения действия, делаем паузу в APause секунд.

-URL[s] [/APause]
Выключение проверки тестовых ссылок
После выполнения действия, делаем паузу в APause секунд.

+URL[s] [/APause]
Включение проверки тестовых ссылок
После выполнения действия, делаем паузу в APause секунд.

URL[s].Lock
Блокировка автоматической проверки ссылок
После выполнения действия, делаем паузу в APause секунд.
URLs.Lock

URL[s].UnLock
Разблокировка автоматической проверки ссылок
После выполнения действия, делаем паузу в APause секунд.
URLs.UnLock

#STAT[s] [/APause]
Создание нового файла статистики трафика
После выполнения действия, делаем паузу в APause секунд.

-STAT[s] [/APause]
Выключение записи в файл статистики трафика
После выполнения действия, делаем паузу в APause секунд.

+STAT[s] [/APause]
Включение записи в файл статистики трафика
После выполнения действия, делаем паузу в APause секунд.

#STAD[s] [/APause]
Создание нового файла статистики DVB карты
После выполнения действия, делаем паузу в APause секунд.

-STAD[s] [/APause]
Выключение записи в файл статистики DVB карты
После выполнения действия, делаем паузу в APause секунд.

+STAD[s] [/APause]
Включение записи в файл статистики DVB карты
После выполнения действия, делаем паузу в APause секунд.

PB.DEFs
PlanB.DEFs
Загрузка настроек плана «Бэ» по умолчанию.
PlanB.DEFs
PB.DEFs

-PB.Alertable
-PlanB.Alertable
Устанавливаем параметр плана «Бэ»: Alertable=0
-PB.Alertable
-PlanB.Alertable

+PB.Alertable
+PlanB.Alertable
Устанавливаем параметр плана «Бэ»: Alertable=1
+PB.Alertable
+PlanB.Alertable

-PB [/APause]
-PlanB [/APause]
Выключение плана «Бэ»
После выполнения действия, делаем паузу в APause секунд.
-PB
-PlanB

+PB [/APause]
+PlanB [/APause]
Включение плана «Бэ»
После выполнения действия, делаем паузу в APause секунд.
+PB
+PlanB

PB.Lock [/APause]
PlanB.Lock [/APause]
Блокировка плана «Бэ»
После выполнения действия, делаем паузу в APause секунд.
PB.Lock
PlanB.Lock

PB.UnLock [/APause]
PlanB.UnLock [/APause]
Разблокировка плана «Бэ»
После выполнения действия, делаем паузу в APause секунд.
PB.UnLock
PlanB.UnLock

PP.DEFs
PlanP.DEFs
Загрузка настроек плана «Пэ» по умолчанию.
PlanP.DEFs
PP.DEFs

+PP [/APause]
+PlanP [/APause]
Включение плана «Пэ»
После выполнения действия, делаем паузу в APause секунд.
+PP
+PlanP

-PP [/APause]
-PlanP [/APause]
Выключение плана «Пэ»
После выполнения действия, делаем паузу в APause секунд.
-PP
-PlanP

>PP [/APause]
>PlanP [/APause]
Синхронизация состояния плана «Пэ» между skyDSuite и Download Master`ом и Internet Download Accelerator`ом.
После выполнения действия, делаем паузу в APause секунд.
>PP
>PlanP

PP.Lock [/APause]
PlanP.Lock [/APause]
Блокировка плана «Пэ»
После выполнения действия, делаем паузу в APause секунд.
PP.Lock
PlanP.Lock

PP.UnLock [/APause]
PlanP.UnLock [/APause]
Разблокировка плана «Пэ»
После выполнения действия, делаем паузу в APause секунд.
PP.UnLock
PlanP.UnLock

-GChain [/APause]
Выключение цепочки наземных интерфейсов.
После выполнения действия, делаем паузу в APause секунд.
-GChain

+GChain [/APause]
Включение цепочки наземных интерфейсов.
После выполнения действия, делаем паузу в APause секунд.
+GChain

-VChain [/APause]
Выключение цепочки vpn-интерфейсов.
После выполнения действия, делаем паузу в APause секунд.
-VChain

+VChain [/APause]
Включение цепочки vpn-интерфейсов.
После выполнения действия, делаем паузу в APause секунд.
+VChain

##SKY [/APause]
Перезапускаем интернет соединения.
Если {SDS.ZCFG} → [RESTART] → CustomActions=0, то игнорируем действия, описанные в {SDS.ZSCRIPT} → [ARESTARTsACTIONS], {SDS.ZSCRIPT} → [ASTOPsACTIONS], {SDS.ZSCRIPT} → [PSTOPsACTIONS], {SDS.ZSCRIPT} → [IRESTARTsACTIONS], {SDS.ZSCRIPT} → [ASTARTsACTIONS], {SDS.ZSCRIPT} → [PSTARTsACTIONS], {SDS.ZSCRIPT} → [PRESTARTsACTIONS]
После выполнения действия, делаем паузу в APause секунд.

#SKY [/APause]
Перезапускаем интернет соединения.
После выполнения действия, делаем паузу в APause секунд.

--SKY [/APause]
Останавливаем интернет соединения.
При этой операции закрываются все программы и сервисы, относящиеся к skyDSL.
Если {SDS.ZCFG} → [RESTART] → CustomActions=0, то игнорируем действия, описанные в {SDS.ZSCRIPT} → [ASTOPsACTIONS] и {SDS.ZSCRIPT} → [PSTOPsACTIONS]
После выполнения действия, делаем паузу в APause секунд.

-SKY [/APause]
Останавливаем интернет соединения.
При этой операции закрываются все программы и сервисы, относящиеся к skyDSL.
После выполнения действия, делаем паузу в APause секунд.

++SKY [/APause]
Запускаем интернет соединения.
Если {SDS.ZCFG} → [RESTART].CustomActions=0, то игнорируем действия, описанные в {SDS.ZSCRIPT} → [ASTARTsACTIONS] и {SDS.ZSCRIPT} → [PSTARTsACTIONS]
После выполнения действия, делаем паузу в APause секунд.

+SKY [/APause]
Запускаем интернет соединения.
После выполнения действия, делаем паузу в APause секунд.

-SKY.ACTIVE [/APause]
+SKY.INACTIVE [/APause]
Выключаем интернет соединения.
Если выключена опция Gmode, то запускаем sky2fon.exe до деактивации выбранных сетевых интерфейсов. При этой операции, относящиеся к skyDSL программы и сервисы остаются активными.
После выполнения действия, делаем паузу в APause секунд.

-SKY.INACTIVE [/APause]
+SKY.ACTIVE [/APause]
Включаем интернет соединения.
Если выключена опция Gmode, то запускаем sky2sky.exe до активации выбранных сетевых интерфейсов.
После выполнения действия, делаем паузу в APause секунд.

#SDSL.CLIENT [/APause]
Перезапускаем tskyclnt.exe.
После выполнения действия, делаем паузу в APause секунд.

-SDSL.CLIENT [/APause]
Закрываем tskyclnt.exe.
После выполнения действия, делаем паузу в APause секунд.

+SDSL.CLIENT [/APause]
Запускаем tskyclnt.exe.
После выполнения действия, делаем паузу в APause секунд.

#SDSL.SVC [/APause]
Перезапускаем сервис skyDSL (tntcraxy).
После выполнения действия, делаем паузу в APause секунд.

-SDSL.SVC [/APause]
Останавливаем сервис skyDSL (tntcraxy).
После выполнения действия, делаем паузу в APause секунд.

+SDSL.SVC [/APause]
Запускаем сервис skyDSL (tntcraxy).
После выполнения действия, делаем паузу в APause секунд.

RESET [/APause]
RESET.AC [/APause]
SDS.RESET [/APause]
SDS.RESET.AC [/APause]
Сброс всех ("длинного" и "короткого") счётчиков трафика.
После выполнения действия, делаем паузу в APause секунд.

RESET.LC [/APause]
SDS.RESET.LC [/APause]
Сброс "длинного" (long) счётчика трафика.
После выполнения действия, делаем паузу в APause секунд.

RESET.SC [/APause]
SDS.RESET.SC [/APause]
Сброс "короткого" (short) счётчика трафика.
После выполнения действия, делаем паузу в APause секунд.

[+]Z|z ? AKey[/APause] >> AValue
Изменение внутренних настроек программы и настроек skyDSL.
После выполнения действия, делаем паузу в APause секунд.
skyDSL.RAS
SDSL.RAS
skyDSL.RAS.Connection
SDSL.RAS.Connection
Изменение используемого RAS-соединения.
Редактируем ключ реестра
[HKEY_LOCAL_MACHINE\SOFTWARE\TELES\skyDSL\Autodial]\"ConnName"
skyDSL.RAS.AutoDial
SDSL.RAS.AutoDial
Изменение параметров используемого RAS-соединения. AValue = 0|1.
Редактируем ключ реестра
[HKEY_LOCAL_MACHINE\SOFTWARE\TELES\skyDSL\Autodial]\"DialIn"
skyDSL.RAS.AutoHang
SDSL.RAS.AutoHang
Изменение параметров используемого RAS-соединения. AValue = 0|1.
Редактируем ключ реестра
[HKEY_LOCAL_MACHINE\SOFTWARE\TELES\skyDSL\Autodial]\"Disconnect"
SDS.SInterface Переопределение спутникового интерфейса
SDS.GInterface Переопределение "наземного" интерфейса
SDS.VInterface Переопределение Vpn-интерфейса
SDS.IInterface Переопределение информационного интерфейса
SDS.AutoControl Включение/выключение автоматического контроля за состоянием интернет соединений (AValue = 0|1)
SDS.StartupControl Включение/выключение проверки состоянием интернет соединений при старте программы (AValue = 0|1)
SDS.DVBControl Включение/выключение проверки состояния DVB карты (AValue = 0|1)
SDS.Gmode
SDS.Gmode.Active
Включение/выключение работы в наземном режиме (AValue = 0|1)
SDS.STAT
SDS.STATs
SDS.STAT.Active
SDS.STATs.Active
Включение/выключение записи в файл статистики трафика (AValue = 0|1)
SDS.STAD
SDS.STADs
SDS.STAD.Active
SDS.STADs.Active
Включение/выключение записи в файл статистики DVB карты (AValue = 0|1)
SDS.SCH
SDS.Scheduler
SDS.SCH.Active
SDS.Scheduler.Active
Включение/выключение планировщика (AValue = 0|1)
SDS.URL
SDS.URLs
SDS.URL.Active
SDS.URLs.Active
Включение/выключение проверки тестовых ссылок (AValue = 0|1)
SDS.PlanB
SDS.PlanB.Active
Включение/выключение плана «Бэ» (AValue = 0|1)
SDS.Gping
SDS.Gping.Active
Включение/выключение периодических пингов по земле (AValue = 0|1)
SDS.Sping
SDS.Sping.Active
Включение/выключение периодических пингов по воздуху (AValue = 0|1)
SDS.GChain
SDS.GChain.Active
Включение/выключение цепочки наземных интерфейсов (AValue = 0|1)
SDS.VChain
SDS.VChain.Active
Включение/выключение цепочки vpn-интерфейсов (AValue = 0|1)
SDS.HTTPServer
SDS.HTTPServer.Active
Включение/выключение HTTP сервера (AValue = 0|1)
SDS.WebDAVServer
SDS.WebDAVServer.Active
SDS.WDAVServer
SDS.WDAVServer.Active
Включение/выключение WebDAV сервера (AValue = 0|1)
SDS.Telnet
SDS.Telnet.Active
SDS.TelnetServer
SDS.TelnetServer.Active
Включение/выключение telnet сервера (AValue = 0|1)
SDS.HTTPProxyServer
SDS.HTTPProxyServer.Active
Включение/выключение HTTP прокси-сервера (AValue = 0|1)
SDS.SocksServer
SDS.SocksServer.Active
Включение/выключение Socks сервера (AValue = 0|1)
Z ? skyDSL.RAS >> BEELINE
Z ? SDS.AutoControl >> 1
Z ? SDS.URL.Active >> 1






Атомарные действия (приложения и сервисы)
Наверх

$A|a ?|>> AImage
Запоминаем состояние программы AImage.
Результат выполнения этого действия влияет на последующее действие [+]A|a, запущенное с управляющим символом C.
При отсутствии ошибок, делаем паузу в APause секунд.
$A >> *DM

~A|a [?|>> AImage]
Удаление информации о состоянии программы AImage, полученной ранее при вызове действий $A|a
Если AImage не указан, то удаляется информация о состоянии всех программ.
~A >> *DM
~A

?A|a
Вывод на экран информации о состоянии программ, полученной ранее при вызове действий $A|a
?A

?A|a ? AImage [[/AWaits]/APause]
?A|a [[/AWaits]/APause] >> AImage
Поиск программы AImage среди запущенных программ не более AWaits секунд.
Если программа найдена, то делаем паузу в APause секунд.
?A ? c:\Program Files\Download Master\dmaster.exe /20/5

#A|a ? AImage[?AParam] [>AData] [[/AWaits]/APause]
#A|a [?[>]AData] [[/AWaits]/APause] >> AImage[?AParam]
Перезапускаем программу AImage с параметрами AParam.
AImage может быть именем исполняемого файла или целочисленным идентификатором запущенного процесса.
AData, это комбинация управляющих символов
T Аварийное закрытие программы (terminate)
I Запускать программу в свёрнутом (iconic) виде
Z Запускать программу в развёрнутом (zoomed) виде
C Проверять предыдущее состояние программы.
Программа будет запущена, только если она была запущена до выполнения этого действия
W Ожидать завершения работы программы не более AWaits секунд
Ожидаем успешного закрытия не более AWaits секунд (AWaits может иметь вид ACloseWaits:ARunWaits).
При отсутствии ошибок, делаем паузу в APause секунд после каждой операции (APause может иметь вид AClosePause:ARunPause).
#a ? *DM /10/0
#a ? *DM > W /10/0
#a /10/0 >> *DM
#A ? c:\windows\notepad.exe > C /10/0

-A|a ? AImage [>AData] [[/AWaits]/APause]
-A|a [?[>]AData] [[/AWaits]/APause] >> AImage
Закрываем программу AImage.
AImage может быть именем исполняемого файла или целочисленным идентификатором запущенного процесса.
AData, это комбинация управляющих символов
T Аварийное закрытие программы (terminate)
Ожидаем успешного закрытия не более AWaits секунд (по умолчанию AWaits=5).
При отсутствии ошибок, делаем паузу в APause секунд.
-a >> *DM
-a ? *DM
-a ? *DM > T
-a ? 123

?-A|a ? AImage [[/AWaits]/APause]
?-A|a [[/AWaits]/APause] >> AImage
Ожидание остановки программы AImage не более AWaits секунд (по умолчанию AWaits=5).
AImage может быть именем исполняемого файла или целочисленным идентификатором запущенного процесса.
При отсутствии ошибок, делаем паузу в APause секунд.
?-a /20/0 >> *DM

[+]A|a ? AImage[?AParam] [>AData] [[/AWaits]/APause]
[+]A|a [?[>]AData] [[/AWaits]/APause] >> AImage[?AParam]
Запускаем программу AImage с параметрами AParam.
Если требуется запустить программу от имени пользователя, то AImage должен иметь формат AUser:APassword << AImage.
При выполнении этого действия результаты предыдущих вызовов действия $A|a стираются.
AData, это комбинация управляющих символов
F Запускать программу, даже если она уже запущена (forced)
I Запускать программу в свёрнутом (iconic) виде
Z Запускать программу в развёрнутом (zoomed) виде
C Проверять предыдущее состояние программы.
Программа будет запущена, только если она была запущена при предыдущем вызове действия $A|a или при отсутствии вызова действия $A|a
W Ожидать завершения работы программы не более AWaits секунд
При отсутствии ошибок, делаем паузу в APause секунд.
+A ? *DM
+A ? *DM ? -stopall > F
+A ? *DM > C
+A ? *DM > W /200/0
+A >> *DM
+A ? C >> *DM
+A ? administrator:111 << *DM

?+A|a ? AImage [[/AWaits]/APause]
?+A|a [[/AWaits]/APause] >> AImage
Ожидание запуска программы AImage не более AWaits секунд (по умолчанию AWaits=5).
AImage может быть именем исполняемого файла или целочисленным идентификатором процесса.
При отсутствии ошибок, делаем паузу в APause секунд.
?+a /20/0 >> *DM

[+]O|o ? AImage[?AParam] [>AData] [[/AWaits]/APause]
[+]O|o [?[>]AData] [[/AWaits]/APause] >> AImage[?AParam]
Запускаем программу AImage с параметрами AParam. ShellExecuteEx ('open', AImage, AParam)
AData, это комбинация управляющих символов
I Запускать программу в свёрнутом (iconic) виде
Z Запускать программу в развёрнутом (zoomed) виде
W Ожидать завершения работы программы не более AWaits секунд
При отсутствии ошибок, делаем паузу в APause секунд.
+O ? notepad ? Z:\TEST.TXT /10
+O ? notepad ? Z:\TEST.TXT > W /200/10
+O/10 >> notepad ? Z:\TEST.TXT

$S|s ?|>> AKeyname
Запоминаем состояние сервиса AKeyname.
Результат выполнения этого действия влияет на последующее действие [+]S|s, запущенное с управляющим символом C.
$S >> TrafInspSrv

~S|s [?|>> AKeyname]
Удаление информации о состоянии сервиса AKeyname, полученной ранее при вызове действий $S|s
Если AKeyname не указан, то удаляется информация о состоянии всех сервисов.
~S >> TrafInspSrv
~S

?S|s
Вывод на экран информации о состоянии сервисов, полученной ранее при вызове действий $S|s
?S

?S|s ? AKeyname [[/AWaits]/APause]
?S|s [[/AWaits]/APause] >> AKeyname
Поиск сервиса AKeyname среди запущенных сервисов не более AWaits секунд.
Если сервис найден, то делаем паузу в APause секунд.
?S ? TrafInspSrv /20/5

#S|s ? AKeyname[?AParam] [>AData] [[/AWaits]/APause]
#S|s [?[>]AData] [[/AWaits]/APause] >> AKeyname[?AParam]
Перезапускаем сервис AKeyname с параметрами AParam.
AData, это комбинация управляющих символов
C Проверять предыдущее состояние сервиса.
Сервис будет запущен, только если он был запущен до выполнения этого действия
W Ожидать успешной остановки после успешного запуска не более AWaits секунд
Ожидаем успешного завершения каждой из операций остановки/запуска не более AWaits секунд (AWaits может иметь вид AStopWaits:AStartWaits).
При отсутствии ошибок, делаем паузу в APause секунд после каждой операции (AWaits может иметь вид AStopPause:AStartPause).
#s ? TrafInspSrv /10/0
#s ? TrafInspSrv > W /10/0
#s /10/0 >> TrafInspSrv

-S|s ? AKeyname [[/AWaits]/APause]
-S|s [[/AWaits]/APause] >> AKeyname
Останавливаем сервис AKeyname.
Ожидаем успешной остановки не более AWaits секунд (по умолчанию AWaits=5).
При отсутствии ошибок, делаем паузу в APause секунд.
-s ? TrafInspSrv /10 // Блокировка трафика (при использовании Traffic Inspector`а)
-s /10 >> TrafInspSrv // Блокировка трафика (при использовании Traffic Inspector`а)

?-S|s ? AKeyname [[/AWaits]/APause]
?-S|s [[/AWaits]/APause] >> AKeyname
Ожидание остановки сервиса AKeyname не более AWaits секунд (по умолчанию AWaits=5).
При отсутствии ошибок, делаем паузу в APause секунд.
?-s /20/0 >> TrafInspSrv

[+]S|s ? AKeyname[?AParam] [>AData] [[/AWaits]/APause]
[+]S|s [?[>]AData] [[/AWaits]/APause] >> AKeyname[?AParam]
Стартуем сервис AKeyname с параметрами AParam.
При выполнении этого действия результаты предыдущих вызовов действия $S|s стираются.
AData, это комбинация управляющих символов
C Проверять предыдущее состояние сервиса.
Сервис будет запущен, только если он был запущен при предыдущем вызове действия $S|s или при отсутствии вызова действия $S|s
W Ожидать успешной остановки после успешного запуска не более AWaits секунд
Ожидаем успешного старта не более AWaits секунд (по умолчанию AWaits=5).
При отсутствии ошибок, делаем паузу в APause секунд.
+S ? TrafInspSrv /10 // Разрешение трафика (при использовании Traffic Inspector`а)
+S ? TrafInspSrv > C /10 // Разрешение трафика (при использовании Traffic Inspector`а)
+S /10 >> TrafInspSrv // Разрешение трафика (при использовании Traffic Inspector`а)
+S ? C /10 >> TrafInspSrv // Разрешение трафика (при использовании Traffic Inspector`а)

?+S|s ? AKeyname [[/AWaits]/APause]
?+S|s [[/AWaits]/APause] >> AKeyname
Ожидание запуска сервиса AKeyname не более AWaits секунд (по умолчанию AWaits=5).
При отсутствии ошибок, делаем паузу в APause секунд.
?+s /20/0 >> TrafInspSrv






Атомарные действия (скрипты)
Наверх

SCRIPT [? ALanguage][:AOS] [[/ATimeout]/APause] >> AScript [>>> AOutput]
BAT ...
BATCH ...
PSHELL ...
POWERSHELL ...
VBSCRIPT ...
VBESCRIPT ...
JSCRIPT ...
JESCRIPT ...
PERL ...
PSCRIPT ...
PYTHON ...
PYSCRIPT ...
Выполнение bat-скриптов, powershell-скриптов и IActiveScript-скриптов (VBScript, JScript, PerlScript, Python, ...)
По умолчанию ATimeout = {SDS.ZCFG} → [SCRIPT] → Timeout. Отрицательные значения означают бесконечный таймаут.
По умолчанию ALanguage = {SDS.ZCFG} → [SCRIPT] → Language
Если AScript является файлом, то ALanguage определяется по расширению файла ( *.BAT: BAT (BATCH); *.CMD: BAT (BATCH); *.PS1: PSHELL (POWERSHELL); *.VBS: VBScript; *.VBE: VBScript.Encode; *.JS: JScript; *.JSE: JScript.Encode; *.PL *.PLS: PerlScript; *.PY *.PYS: Python);
При вызове действий xSCRIPT (VBSCRIPT, VBESCRIPT, ...), если ALanguage не указан явно, то ALanguage будет соответствовать имени действия.
Параметр AOS (Operating System) влияет на завершающие строку символы в многострочных скриптах (unix: #10; mac: #13). По умолчанию строка заканчивается символами #13#10
После удачного выполнения, делаем паузу в APause секунд.
Дополнительно о скриптах читаем здесь

SCRIPT >> .\SCRIPT\SDSInfo.vbs
BAT >> CD C:\ && DIR
PSHELL >> get-process
SCRIPT >> SDSInfo.vbs
VBSCRIPT >> MsgBox "Script Test"
VBSCRIPT >> R = DLLProc ("user32", "MessageBoxW", "integer", 0, "TEXT", "CAPTION", 1) #10; println R
SCRIPT ? VBScript >> MsgBox "Script Test"
SCRIPT >> dim shell #13;#10; set shell = SDScript.CreateObject("WScript.Shell") #13;#10; shell.Popup("Script Test")
SCRIPT >> dim shell #10; set shell = SDScript.CreateObject("WScript.Shell") #10; shell.Popup("Script Test")
JSCRIPT >> var shell = SDScript.CreateObject("WScript.Shell"); shell.Popup("Script Test");
SCRIPT ? JScript >> var shell = new ActiveXObject("WScript.Shell"); shell.Popup("Script Test");
SCRIPT >> file.vbs ? TEST.txt FF.vbs
SCRIPT >> calc.js
SCRIPT >> notepad.pl
PSCRIPT >> $SDScript->EchoH("Ку-ку"); $SDScript->EchoH2("Ку-ку"); $SDScript->EchoH3("Ку-ку"); $SDScript->EchoH4("Ку-ку"); $SDScript->EchoH5("Ку-ку"); $SDScript->EchoD("Ку-ку");
PSCRIPT >> $SDScript->EchoHI("Ку-ку"); $SDScript->EchoH2I("Ку-ку"); $SDScript->EchoH3I("Ку-ку"); $SDScript->EchoH4I("Ку-ку"); $SDScript->EchoH5I("Ку-ку"); $SDScript->EchoDI("Ку-ку");






Атомарные действия (сеть)
Наверх

PROXY
Выводим на экран настройки прокси.
PROXY

IP ?|>> AIP
Преобразование IP адреса в имя хоста и наоборот.
IP ? 192.168.0.1
IP >> 192.168.0.1
IP ? ifolder.ru

DNS ? AHost [>ADnsHost[:ADnsPort]]
Получаем информацию о AHost от Dns-сервера (ADnsHost:ADnsPort)
Если ADnsHost не указан и в системе не определён Dns-сервер, тогда используется 8.8.8.8
ADnsPort по умолчанию - 53
dns ? www.ru > 8.8.4.4:53
dns ? www.ru

TCP ? ATCP-Server[>ASOCKS5-Server][[/ATimeout]/ARecvTimeout] >> ACommand
Соединение с TCP-сервером ATCP-Server (HOST(IP):PORT) и чтение сообщений от сервера.
При успешном соединении, посылаем на сервер строку ACommand и ожидаем сообщения от сервера не более ATimeout секунд (по умолчанию ATimeout=0).
При получении данных в пределах ATimeout секунд продолжаем чтение с паузой в ARecvTimeout миллисекунд.
Возможно подключение к TCP-серверу через SOCKS5-сервер.
Соответствующие настройки можно найти в [Главное меню] → Settings → Edit... → Misc → IP
Если ASOCKS5-Server (HOST(IP):PORT) указан явно, то будет использоваться именно этот сервер.
TCP ? time.nist.gov:13 /30/0
TCP ? time.nist.gov:13 > 192.168.0.1:1080 /60/0
TCP ? whois.nic.ru:43 /500 >> yandex.ru
TCP ? whois.internic.net:43 /500 >> yandex.ru#13;#10;
TCP ? whois.internic.net:43 /500 >> yandex.ru#$0D;#$0A;
TCP ? whois.internic.net:43 /500 >> yandex.ru\r\n

DAYTIME ? ADayTime-Server[>ASOCKS5-Server][[/ATimeout]/ARecvTimeout]
DAYTIME ? [>ASOCKS5-Server][[/ATimeout]/ARecvTimeout] >> ADayTime-Server
Соединение с сервером синхронизации ADayTime-Server (HOST(IP):PORT) и вывод на экран полученной строки.
При успешном соединении, ожидаем сообщения от сервера не более ATimeout секунд (по умолчанию ATimeout=30).
При получении данных в пределах ATimeout секунд продолжаем чтение с паузой в ARecvTimeout миллисекунд.
Возможно подключение к серверу синхронизации через SOCKS5-сервер.
Соответствующие настройки можно найти в [Главное меню] → Settings → Edit... → Misc → IP
Если ASOCKS5-Server (HOST(IP):PORT) указан явно, то будет использоваться именно этот сервер.
DAYTIME ? ntp.psn.ru:13
DAYTIME >> ntp.psn.ru:13
DAYTIME ? time.nist.gov:13
DAYTIME ? time.nist.gov:13 > 192.168.0.1:1080

DAYTIME.SYNC ? ADayTime-Server[>ASOCKS5-Server][[[[/ATimeout]/ARecvTimeout]/ADelta]/AGap]
DAYTIME.SYNC ? [>ASOCKS5-Server][[[[/ATimeout]/ARecvTimeout]/ADelta]/AGap] >> ADayTime-Server
Соединение с сервером синхронизации ADayTime-Server (HOST(IP):PORT) и синхронизация локального времени.
При успешном соединении, ожидаем сообщения от сервера не более ATimeout секунд (по умолчанию ATimeout=30).
При получении данных в пределах ATimeout секунд продолжаем чтение с паузой в ARecvTimeout миллисекунд.
От величины полученного с сервера времени отнимаем ADelta миллисекунд.
Время синхронизируется, только если расхождение не менее AGap миллисекунд.
Возможно подключение к серверу синхронизации через SOCKS5-сервер.
Соответствующие настройки можно найти в [Главное меню] → Settings → Edit... → Misc → IP
Если ASOCKS5-Server (HOST(IP):PORT) указан явно, то будет использоваться именно этот сервер.
DAYTIME.SYNC ? time.nist.gov:13
DAYTIME.SYNC >> time.nist.gov:13
DAYTIME.SYNC ? time.nist.gov:13 /1
DAYTIME.SYNC ? time.nist.gov:13 > 192.168.0.1:1080

HTTP[S|X] ?|>> AURL AREQUEST [>AProxy-Server] [>>>AOnFailureAction[::AOnSuccessAction]]
Открываем AURL, посылаем запрос AREQUEST и выводим на экран текстовую составляющую полученной страницы.
Если AURL имеет формат LIST:AFilename[:AFirstLine[:ALastLine]], то предполагается, что AFilename содержит список адресов и действие вызывается для каждого адреса из диапазона [AFirstLine...ALastLine].
Учитываются только незакомментированные строки.
Чтобы закомментировать строку, достаточно в начале написать символ ; или //
AURL и прокси сервер имеют формат USERNAME:PASSWORD@HOST(IP):PORT
Запрос AREQUEST имеет формат ACommand|AURLPath|AData|AEncoding|ALmap|ARIdent
Если запрос равен DELETE-COOKIE, то удаляются куки, связанные с текущим хостом.
Действие HTTPX автоматически определяет формат запроса (HTTP или HTTPS), в зависимости от параметра AURLPath.
Если AURLPath содержит префикс https://, то используется HTTPS, во всех остальных случаях используется HTTP.
ACommand имеет формат [-][AVerb][-][:ABytes[:AShift]][[,AVersion],AParams], где AVerb= GET (POST, POST-FORM, ...) (по умолчанию = GET), ABytes - количество читаемых байт со смещением в AShift байт от начала, AVersion= HTTP/1.1 (HTTP/1.0, ...) (по умолчанию = HTTP/1.1)
Если ACommand начинается с символа "-" (напр. -POST), то ответ на запрос не читается.
Параметр AVerb может содержать дополнительные управляющие команды:
• -XHR (напр. GET-XHR) - XML Http Request
• -NAR (напр. GET-NAR) - автоматические редиректы игнорируются (INTERNET_FLAG_NO_AUTO_REDIRECT)
Если AURL является файлом, то запрос AREQUEST имеет формат AEncoding|ALmap
Если AREQUEST имеет формат PAUSE|AMilliseconds, то делаем паузу в AMilliseconds миллисекунд.
Если AURL или AREQUEST содержат пробелы, то их нужно заключать в двойные кавычки.
При отображении информации учитываем указанную кодировку AEncoding (ANSI, UTF8, UTF-8, KOI8R, KOI8-R).
Если кодировка не указана в явном виде, то пытаемся определить её автоматически.
ALmap задаёт какие строки и слова выводить на экран.
Если ALmap=null (-,–,nil,no,nicht,nein), то вывода на экран нет.
Идентификатор запроса ARIdent может использоваться в функциях, где требуется номер запроса.
Если при выполнении возникли ошибки, вызывается действие AOnFailureAction.
В противном случае вызывается AOnSuccessAction.
HTTP ? C:\TEMP\TEST.HTML
HTTP ? www.mse.ru GET,HTTP/1.1|docs/mfb/
HTTP ? www.mse.ru GET|docs/mfb/ > 192.168.0.1:8080
HTTP ? www.warandpeace.ru GET|||ANSI
HTTP ? www.cbr.ru
HTTP ? tv.yandex.ru GET|?hour=6&period=24&flag=
HTTPS ? www.nic.ru "POST|whois/|query=flatassembler.net||;$Информация о домене$1..$$-31"

proxyfy[AFlags] ? AHost [[/AProxyCount]/AsTimeout]
Открываем сайт AHost через несколько прокси-серверов.
AFlags - дополнительные параметры действия.
AProxyCount - максимальное количество используемых прокси-серверов.
Если AProxyCount<0, тогда ограничений по количеству серверов нет.
AsTimeout - таймаут выполнения внутренних операций (в секундах).
Список прокси-серверов получаем используя информацию из файла .\CFG\SDS.ZPRX
В секции [SITES] пишем адреса страниц, содержащих списки прокси-серверов.
После выполнения действия заполняются секции
[PROXY] - список рабочих серверов
[TRASH] - список нерабочих серверов (корзина)

Пример файла SDS.ZPRX
FILE = .\CFG\SDS.ZPRX

[SITES]
http://www.samair.ru/proxy/
http://nntime.com/
http://spys.ru/en/http-proxy-list/
;http://www.free-proxy-list.info/free-proxy-list/all-working-proxies.php

[PROXY]
...

[TRASH]
...

Возможные значения параметра AFlags
AFlags проверка TCP соединения использование серверов из корзины
− − или не задано
+ − или + +
− + +
+ + + +

proxyfy ? http://maalchemist.narod.ru /-1/0
proxyfy++ ? http://maalchemist.narod.ru /-1/0

ping ? AHost[[[/ABufferSize]/AmsTimeout]/ACount] [>>>AOnFailureAction[::AOnSuccessAction]]
ping ? [[[/ABufferSize]/AmsTimeout]/ACount] >> AHost [>>>AOnFailureAction[::AOnSuccessAction]]
Пингуем хост AHost.
Аналог системного ping AHost -n ACount -w AmsTimeout -l ABufferSize
По умолчанию AHost=LOCALHOST, ACount=4, AmsTimeout=4000 (время измеряется в миллисекундах), ABufferSize=32 байта.
Если при выполнении возникли ошибки, вызывается действие AOnFailureAction.
В противном случае вызывается AOnSuccessAction.
ping ? ya.ru
ping ? ya.ru/10
ping ? ya.ru/8000/10
ping ? ya.ru/1/4000/10

gping ? AHost>AData[[[/ABufferSize]/AmsTimeout]/ACount] [>>>AOnFailureAction[::AOnSuccessAction]]
gping ? [>]AData[[[/ABufferSize]/AmsTimeout]/ACount] >> AHost [>>>AOnFailureAction[::AOnSuccessAction]]
Вызов функции пинга по земле.
AData, это комбинация управляющих символов
A Добавляем маршрут к AHost через наземный интерфейс
D Удаляем ранее добавленный маршрут к AHost
По умолчанию используются параметры из {SDS.ZPGX} → [GPing]
Если при выполнении возникли ошибки, вызывается действие AOnFailureAction.
В противном случае вызывается AOnSuccessAction.
gping ? www.ru > AD
gping ? AD >> www.ru

-gping [/APause]
Выключение периодических пингов по земле.
После выполнения действия, делаем паузу в APause секунд.
-gping

+gping [/APause]
Включение периодических пингов по земле.
После выполнения действия, делаем паузу в APause секунд.
+gping

GPing.Lock [/APause]
Блокировка автоматических пингов по земле.
После выполнения действия, делаем паузу в APause секунд.
GPing.Lock

GPing.UnLock [/APause]
Разблокировка автоматических пингов по земле.
После выполнения действия, делаем паузу в APause секунд.
GPing.UnLock

sping ? AHost>AData[[[/ABufferSize]/AmsTimeout]/ACount] [>>>AOnFailureAction[::AOnSuccessAction]]
sping ? [>]AData[[[/ABufferSize]/AmsTimeout]/ACount] >> AHost [>>>AOnFailureAction[::AOnSuccessAction]]
Вызов функции пинга по воздуху.
AData, это комбинация управляющих символов
A Добавляем маршрут к AHost через спутниковый интерфейс
D Удаляем ранее добавленный маршрут к AHost
По умолчанию используются параметры из {SDS.ZPGX} → [SPing]
Если при выполнении возникли ошибки, вызывается действие AOnFailureAction.
В противном случае вызывается AOnSuccessAction.
sping ? www.ru > AD
sping ? AD >> www.ru

-sping [/APause]
Выключение периодических пингов по воздуху.
После выполнения действия, делаем паузу в APause секунд.
-sping

+sping [/APause]
Включение периодических пингов по воздуху.
После выполнения действия, делаем паузу в APause секунд.
+sping

SPing.Lock [/APause]
Блокировка автоматических пингов по воздуху.
После выполнения действия, делаем паузу в APause секунд.
SPing.Lock

SPing.UnLock [/APause]
Разблокировка автоматических пингов по воздуху.
После выполнения действия, делаем паузу в APause секунд.
SPing.UnLock

#R|r ? AConnection[::ACoInterface] [[[[/ACount]/ADelay]/AWaits]/APause]
#R|r [[[[/ACount]/ADelay]/AWaits]/APause] >> AConnection[::ACoInterface]
#R|r [[[[/ACount]/ADelay]/AWaits]/APause] >> AConnection[::ACoInterface] ? [username:...] [password:...] [domain:...] [phone:...] [callback:...]
Перезапуск RAS-соединения AConnection.
Если AConnection=*SInterface, то работаем со спутниковым интерфейсом.
Если AConnection=*GInterface, то работаем с "наземным" интерфейсом.
Если AConnection=*VInterface, то работаем с vpn-интерфейсом.
Если AConnection=*IInterface, то работаем с информационным интерфейсом.
Если не задан ни один из параметров (username, password, domain, phone, callback), читаем файл SDS.ZRAS
Повторяем попытки дозвона ACount раз с паузой после неудачного дозвона в ADelay секунд. Если ACount <0, то количество попыток не ограничено. Если ADelay ≤0, то пауза будет равна 5-и секундам.
Если задан ACoInterface (связанный интерфейс) и он неактивен, то дозвон прекращается.
Ожидаем завершения каждой из операций не более AWaits секунд (AWaits может иметь вид AHangUpWaits:ADialUpWaits).
При отсутствии ошибок, делаем паузу в APause секунд после каждой операции (APause может иметь вид AHangUpPause:ADialUpPause).
#R ? GPRS
#R >> GPRS
#R >> VPN::GPRS
#R >> VPN ? username:homeuser password:111

-R|r ? AConnection [[/AWaits]/APause]
-R|r [[/AWaits]/APause] >> AConnection
Разрыв RAS-соединения AConnection.
Если AConnection=*SInterface, то работаем со спутниковым интерфейсом.
Если AConnection=*GInterface, то работаем с "наземным" интерфейсом.
Если AConnection=*VInterface, то работаем с vpn-интерфейсом.
Если AConnection=*IInterface, то работаем с информационным интерфейсом.
Ожидаем завершения операции не более AWaits секунд.
При отсутствии ошибок, делаем паузу в APause секунд.
-R ? GPRS
-R >> GPRS

[+]R|r ? AConnection[::ACoInterface] [[[[/ACount]/ADelay]/AWaits]/APause]
[+]R|r [[[[/ACount]/ADelay]/AWaits]/APause] >> AConnection[::ACoInterface]
[+]R|r [[[[/ACount]/ADelay]/AWaits]/APause] >> AConnection[::ACoInterface] ? [username:...] [password:...] [domain:...] [phone:...] [callback:...]
Дозвон по RAS-соединению AConnection.
Если AConnection=*SInterface, то работаем со спутниковым интерфейсом.
Если AConnection=*GInterface, то работаем с "наземным" интерфейсом.
Если AConnection=*VInterface, то работаем с vpn-интерфейсом.
Если AConnection=*IInterface, то работаем с информационным интерфейсом.
Если не задан ни один из параметров (username, password, domain, phone, callback), читаем файл SDS.ZRAS
Повторяем попытки дозвона ACount раз с паузой после неудачного дозвона в ADelay секунд. Если ACount <0, то количество попыток не ограничено. Если ADelay ≤0, то пауза будет равна 5-и секундам.
Если задан ACoInterface (связанный интерфейс) и он неактивен, то дозвон прекращается.
Ожидаем завершения операции не более AWaits секунд.
При отсутствии ошибок, делаем паузу в APause секунд.
+R ? GPRS
+R >> GPRS
+R >> VPN::GPRS
+R >> VPN ? username:homeuser password:111






Атомарные действия (железо)
Наверх

COM [/AIOmsTimeout] >> AComPort[:AComPortSettings] [!]ACommand#1[\pAmsPause] [!]ACommnand#2[\pAmsPause] ...
COM ? AComPort[:AComPortSettings] [!]ACommand#1[\pAmsPause] [!]ACommnand#2[\pAmsPause] ... [/AIOmsTimeout]
Взаимодействие с COM-портом.
Открываем AComPort, если указаны AComPortSettings, то настраиваем порт, посылаем команды ACommnand#..., ждём ответа после каждой команды не более AIOmsTimeout миллисекунд (по умолчанию AIOmsTimeout=2000), выводим результаты запросов в окно диагностики.
Если AComPortSettings=*, то вызывается диалог настройки порта.
Если перед чтением ответа необходимо сделать паузу, то команда должна завершаться фразой \pAmsPause, где AmsPause это величина паузы в миллисекундах.
Имя порта и команды разделяются пробелами.
Если ждать ответа на команду не надо, то первым символом должен быть !
com >> com8 ATI1\r AT+CBC\r AT+CSQ\r
com >> com8 ATI1;+CBC;+CSQ\r
com >> com8 ATI1\r\p2000
com >> com8 AT+CUSD=1,"%PDU,*100#%",15\r\p8000 AT+CUSD=2\r\p1000
com >> com1:9600,n,8,1
com >> com1:9600,n,8,1,x
com >> com1:9600,n,8,1,p
com >> com1:"baud=9600 parity=N data=8 stop=1"
com >> com1:*

EJECT [[[/ACount/]AWaits/]APause] >> ADevices [>>>AOnFailureAction[::AOnSuccessAction]]
EJECT ? ADevices [[[/ACount/]AWaits/]APause] [>>>AOnFailureAction[::AOnSuccessAction]]
ADevices - это список устройств ADevice, разделённых запятой.
Извлечение устройства ADevice не более чем с ACount попыток (по умолчанию ACount=5) с паузой между попытками AWaits секунд (по умолчанию AWaits=5).
Работаем с первым извлекаемым устройством в цепочке родительских устройств.
ADevice - это имя устройства или его идентификатор или имя логического диска или маска для метки логического диска.
Список устройств можно посмотреть через Главное меню → Display → Devices (выводится имя устройства и его идентификатор).
Если при выполнении возникли ошибки, вызывается действие AOnFailureAction.
В противном случае вызывается AOnSuccessAction.
После успешного выполнения действия, делаем паузу в APause секунд.
EJECT ? G
EJECT ? G,I
EJECT ? Pocket*

EJECT+ [[[/ACount/]AWaits/]APause] >> ADevices [>>>AOnFailureAction[::AOnSuccessAction]]
EJECT+ ? ADevices [[[/ACount/]AWaits/]APause] [>>>AOnFailureAction[::AOnSuccessAction]]
ADevices - это список устройств ADevice, разделённых запятой.
Извлечение устройства ADevice не более чем с ACount попыток (по умолчанию ACount=5) с паузой между попытками AWaits секунд (по умолчанию AWaits=5).
Работаем с последним извлекаемым устройством в цепочке родительских устройств.
ADevice - это имя устройства или его идентификатор или имя логического диска или маска для метки логического диска.
Список устройств можно посмотреть через Главное меню → Display → Devices (выводится имя устройства и его идентификатор).
Если при выполнении возникли ошибки, вызывается действие AOnFailureAction.
В противном случае вызывается AOnSuccessAction.
После успешного выполнения действия, делаем паузу в APause секунд.
EJECT+ ? G

EJECT++ [[[/ACount/]AWaits/]APause] >> ADevices [>>>AOnFailureAction[::AOnSuccessAction]]
EJECT++ ? ADevices [[[/ACount/]AWaits/]APause] [>>>AOnFailureAction[::AOnSuccessAction]]
ADevices - это список устройств ADevice, разделённых запятой.
Извлечение устройства ADevice не более чем с ACount попыток (по умолчанию ACount=5) с паузой между попытками AWaits секунд (по умолчанию AWaits=5) и последующим перезапуском родительского устройства.
Работаем с последним извлекаемым устройством в цепочке родительских устройств.
ADevice - это имя устройства или его идентификатор или имя логического диска или маска для метки логического диска.
Список устройств можно посмотреть через Главное меню → Display → Devices (выводится имя устройства и его идентификатор).
Если при выполнении возникли ошибки, вызывается действие AOnFailureAction.
В противном случае вызывается AOnSuccessAction.
После успешного выполнения действия, делаем паузу в APause секунд.
EJECT++ ? G

DVB.Restart [?AInitData][/APause]
Перезапуск мониторинга DVB-карты. AInitData - строка инициализации карты.
При отсутствии ошибок, делаем паузу в APause секунд после каждой операции (APause может иметь вид AStopPause:AStartPause).
См. также Взаимодействие с DVB-картой.

DVB.Stop [/APause]
Остановка мониторинга DVB-карты.
После успешного выполнения действия, делаем паузу в APause секунд.
См. также Взаимодействие с DVB-картой.

DVB.Start [?AInitData][/APause]
Запуск мониторинга DVB-карты. AInitData - строка инициализации карты.
После успешного выполнения действия, делаем паузу в APause секунд.
См. также Взаимодействие с DVB-картой.

DVB.DiSEqC [/APause]
Вызов фунции SendDiSEqC из библиотеки взаимодействия с DVB-картой.
После успешного выполнения действия, делаем паузу в APause секунд.
См. также Взаимодействие с DVB-картой.

DVB.Channel [/APause]
Вызов фунции SetChannel из библиотеки взаимодействия с DVB-картой.
После успешного выполнения действия, делаем паузу в APause секунд.
См. также Взаимодействие с DVB-картой.

DVB.Filter [/APause]
Вызов фунции SetFilter из библиотеки взаимодействия с DVB-картой.
После успешного выполнения действия, делаем паузу в APause секунд.
См. также Взаимодействие с DVB-картой.

DVB.DeFilter [/APause]
Вызов фунции DelFilter из библиотеки взаимодействия с DVB-картой.
После успешного выполнения действия, делаем паузу в APause секунд.
См. также Взаимодействие с DVB-картой.

DVB.SyncPIDs [/APause]
Синхронизация PID`ов DVB-карты и skyDSL.
После успешного выполнения действия, делаем паузу в APause секунд.
См. также Взаимодействие с DVB-картой.

DVB.MAC
Вывод на экран MAC-адреса DVB-карты.
См. также Взаимодействие с DVB-картой.

MAC ? AAdapter
Выводим на экран MAC-адрес адаптера AAdapter.
Запрещение вывода MAC-адреса зависит от значения параметра {SDS.ZCFG} → [MAIN] → HideMACs.
Если в директорию .\CFG положить файл http://standards.ieee.org/regauth/oui/oui.txt, то в окно диагностики будет выводиться производитель, соответствующий полученному MAC-адресу.
MAC ? DVB

MAC.SET ? AAdapter[?AMAC]
Устанавливаем MAC-адрес адаптера AAdapter.
При выполнении этого действия редактируем ключ реестра [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Class\{4D36E972-E325-11CE-BFC1-08002BE10318}\...]\"NetworkAddress"
Если в директории .\CFG\ найдётся файл с именем AMAC, то маска выбирается случайным образом из списка масок в секции [MASK] этого файла (см. пример в .\CFG\SDS.ZMAC).
Последний MAC-адрес храним в {SDS.ZCFG} → [NetCfgInstanceIDs].
Если в директорию .\CFG положить файл http://standards.ieee.org/regauth/oui/oui.txt, то в окно диагностики будет выводиться производитель, соответствующий полученному MAC-адресу.
MAC.SET ? DVB // сбрасываем значение ключа "NetworkAddress"
MAC.SET ? DVB?------++++++ // первые 3 байта не трогаем; меняем случайным образом последние 3 байта
MAC.SET ? DVB?00D05C++++++ // меняем первые 3 байта на 00D05C; меняем случайным образом последние 3 байта
MAC.SET ? DVB?001122334455 // меняем все байты на явно указанные величины

MAC.GET ? AAdapter[?AMAC]
Генерация и вывод на экран нового MAC-адреса адаптера AAdapter. Алгоритм вычисления адреса такой же как и при вызове MAC.SET, только реально ничего не меняется. Используем в тестовых целях.
Если в директории .\CFG\ найдётся файл с именем AMAC, то маска выбирается случайным образом из списка масок в секции [MASK] этого файла (см. пример в .\CFG\SDS.ZMAC).
Если в директорию .\CFG положить файл http://standards.ieee.org/regauth/oui/oui.txt, то в окно диагностики будет выводиться производитель, соответствующий полученному MAC-адресу.
MAC.GET ? DVB // выводим на экран последний MAC-адрес (хранится в {SDS.ZCFG} → [NetCfgInstanceIDs])
MAC.GET ? DVB?------++++++ // первые 3 байта не трогаем; меняем случайным образом последние 3 байта
MAC.GET ? DVB?00D05C++++++ // меняем первые 3 байта на 00D05C; меняем случайным образом последние 3 байта
MAC.GET ? DVB?001122334455 // меняем все байты на явно указанные величины

?D|d ? ADevice[[/AWaits]/APause]
?D|d [[/AWaits]/APause] >> ADevice
Поиск физического устройства ADevice не более AWaits секунд.
ADevice - это имя устройства, его идентификатор (Instance ID) или имя логического диска.
Список устройств можно посмотреть через Главное меню → Display → Devices (выводится имя устройства и его идентификатор).
При отсутствии ошибок, делаем паузу в APause секунд.
?D ? HUAWEI Mobile Connect - 3G Modem
?D >> HUAWEI Mobile Connect - 3G Modem

#D|d ? ADevice[/APause]
#D|d [/APause] >> ADevice
Перезапуск физического устройства ADevice.
ADevice - это имя устройства или его идентификатор (Instance ID).
Список устройств можно посмотреть через Главное меню → Display → Devices (выводится имя устройства и его идентификатор).
При отсутствии ошибок, делаем паузу в APause секунд после каждой операции (APause может иметь вид ADisablePause:AEnablePause).
#D ? ModemPCI
#D >> ModemPCI
#D >> ModemPCI/5:10

-D|d ? ADevice[/APause]
-D|d [/APause] >> ADevice
Запрещение (disable) физического устройства ADevice.
ADevice - это имя устройства или его идентификатор (Instance ID).
Список устройств можно посмотреть через Главное меню → Display → Devices (выводится имя устройства и его идентификатор).
При отсутствии ошибок, делаем паузу в APause секунд.
-D ? ModemPCI
-D >> ModemPCI

[+]D|d ? ADevice[/APause]
[+]D|d [/APause] >> ADevice
Разрешение (enable) физического устройства ADevice.
ADevice - это имя устройства или его идентификатор (Instance ID).
Список устройств можно посмотреть через Главное меню → Display → Devices (выводится имя устройства и его идентификатор).
При отсутствии ошибок, делаем паузу в APause секунд.
+D ? ModemPCI
+D >> ModemPCI

^D|d ?|>> ADevice
Выводим на экран родительские устройства для устройства ADevice.
ADevice - это имя устройства, его идентификатор (Instance ID) или имя логического диска.
Список устройств можно посмотреть через Главное меню → Display → Devices (выводится имя устройства и его идентификатор).
^D ? C

modem.reset
Сброс настроек модема.
modem.reset

modem.get ? AIDmask
Автоматический выбор модема.
AIDmask - маска для выбора модема по идентификатору. Идентификатор - это "модель:imei:imsi" (например, E367:300000000000000:200000000000000)
Автоматический выбор будет осуществлён, только если текущие установки модема окажутся некорректными.
modem.get
modem.get ? E367:*

modem.map ? AIDmask
Проверка всех установленных в системе модемов и связанных с ними com-портов, которые используются при вызове modem.get
AIDmask - маска для выбора модема по идентификатору. Идентификатор - это "модель:imei:imsi" (например, E367:300000000000000:200000000000000)
modem.map
modem.map ? E367:*






Атомарные действия (Download Master)
Наверх

DM... [/APause]
IDA... [/APause]
Взаимодействие с Download Master`ом (DM) и Internet Download Accelerator`ом (IDA).
Плагин zdmBridge.DLL необходимо положить в ...\Download Master\Plugins\ или в ...\Internet Download Accelerator\Plugins\
Параметры взаимодействия описываются на странице "Misc" окна настроек и в {SDS.ZCFG} → [DM&IDA].
Ждём окончания выполнения операции CommandWaits секунд (по умолчанию = 30 секунд).
При возникновении ошибок, повторяем это действие CommandCount раз (по умолчанию = 5).
Если выставлен флаг RestartOnError (по умолчанию = 1) и произошла ошибка, перезапускаем DM или IDA.
Ожидаем успешного завершения каждой из операций закрытия/запуска не более RestartWaits секунд (по умолчанию = 20 секунд).
После успешного перезапуска, делаем паузу в RestartPause секунд (по умолчанию = 10 секунд).
После успешного выполнения основного действия, делаем паузу в APause секунд.

DM.ACTION ? AAction,AParams[/APause]
DM.ACTION [/APause] >> AAction,AParams
IDA.ACTION ? AAction,AParams[/APause]
IDA.ACTION [/APause] >> AAction,AParams
Выполнение произвольной команды.
При получении этого сообщения плагин вызывает метод IDMInterface.DoAction(AAction,AParams).
DM.ACTION/5 >> AddingURL,<url>http://maalchemist.narod.ru/SVC/SVCv1.0.0.45a.rar</url> <hidden>1</hidden> <start>0</start> // Добавить закачку
DM.ACTION/5 >> GetDownloadIDsList, // Получаем список ID (разделенных пробелами) всех закачек из списка
DM.ACTION/5 >> GetDownloadInfoByID,1 // Возвращаем информацию (в XML формате) о закачке с указанным ID
DM.ACTION/5 >> StartAll // Стартовать все незавершенные закачки
DM.ACTION/5 >> StopAll // Остановить все закачки
DM.ACTION/5 >> StartSheduled // Стартовать все запланированные закачки
DM.ACTION/5 >> StopSheduled // Остановить все запланированные закачки
DM.ACTION/5 >> ChangeSpeed,0 // Скорость соединения - максимальная
DM.ACTION/5 >> ChangeSpeed,1 // Скорость соединения - средняя
DM.ACTION/5 >> ChangeSpeed,2 // Скорость соединения - низкая
DM.ACTION/5 >> ChangeSpeed,3 // Скорость соединения - автоматическая
DM.ACTION/5 >> ChangeSpeed,4 // Скорость соединения - регулируемая
DM.ACTION/5 >> ChangeMaxDownloads,3 // Максимальное к-во одновременных закачек

DM.START.ALL [/APause]
IDA.START.ALL [/APause]
Стартовать все незавершенные закачки.
DM.START.ALL/5

DM.STOP.ALL [/APause]
IDA.STOP.ALL [/APause]
Остановить все закачки.
DM.STOP.ALL/5






Атомарные действия (почта)
Наверх

[+]E|e ? AMailList[[?]>AData] >> ASubject?ABody
Посылаем письма по описанным в AMailList адресам.
AMailList - имя секции ини-файла (.\CFG\SDS.ZMAIL), содержащей список адресов рассылки или список адресов в явном виде, разделённых запятой.
AData, это комбинация управляющих символов
M Используем MAPI
По умолчанию используется SMTP с поддержкой SSL/TLS.
E ? MEGAFON >> SUBJECT?BODY
E ? MEGAFON>M >> SUBJECT?BODY
E ? user@yandex.ru >> SUBJECT?BODY
E ? user@yandex.ru,user@gmail.com >> SUBJECT?BODY

Для работы SSL/TLS необходимо положить рядом со skyDSuite или в системную директорию две библиотеки (ssleay32.dll и libeay32.dll). Их можно найти здесь http://indy.fulgan.com/SSL

Пример файла с описанием параметров SMTP и адресов рассылки.
Учитываются только незакомментированные адреса.
Чтобы закомментировать строку, достаточно в начале написать символ ; или //

FILE = .\CFG\SDS.ZMAIL

[SMTP]
SERVER=smtp.gmail.com
PORT=465
LOGIN=maalchemist@gmail.com
PASSWORD=password
FROM=maalchemist@gmail.com
SECURE=1:1
SSL=5:1

[.SMTP]
SERVER=smtp.yandex.ru
PORT=465
LOGIN=maalchemist
PASSWORD=password
FROM=maalchemist@yandex.ru
SECURE=1:1
SSL=5:1

SECURE = [UseTLS]:[AuthType]

SSL = [SSLVersion]:[SSLMode]

-E|e ? AServerList [>>>AOnFailureAction[::AOnSuccessAction]]
Проверяем наличие писем на серверах AServerList.
Если получены письма, вызывается действие AOnSuccessAction.
В противном случае вызывается AOnFailureAction.
Используется POP3 с поддержкой SSL/TLS.
AServerList - список секций ини-файла (.\CFG\SDS.ZMAIL), содержащих параметры серверов.
-E ? Gmail
-E ? Gmail,Yandex
-E ? Gmail >>> ::message ? Получена почта // Выведем сообщение, если количество полученных писем не нулевое

Пример файла с описанием серверов.

FILE = .\CFG\SDS.ZMAIL

[Gmail]
SERVER=pop.gmail.com
PORT=995
LOGIN=maalchemist@gmail.com
PASSWORD=password
SECURE=1:0
SSL=1:1

[Yandex]
SERVER=pop.yandex.ru
PORT=995
LOGIN=maalchemist
PASSWORD=password
SECURE=1:0
SSL=5:1

[Yandex.ns]
SERVER=pop.yandex.ru
PORT=110
LOGIN=maalchemist
PASSWORD=password
SECURE=0:0
SSL=5:1

SECURE = [UseTLS]:[AuthType]

SSL = [SSLVersion]:[SSLMode]





Атомарные действия (система)
Наверх

SDS.VAR ?|>> AVarName?AVarValue
SDS.SET.VAR ?|>> AVarName?AVarValue
Присвоение переменной с именем AVarName значения AVarValue.

...
[ACTIONS]
SDS.VAR ? a?2
SDS.VAR >> b?3
SCRIPT ? JScript >> n=SDScript.SDSVar("a")*SDScript.SDSVar("b"); SDScript.SDSVar("result")=n; SDScript.Echo(n); SDScript.Action("print >> ага");
print ? a=%SDS.VAR,a%
print ? b=%SDS.VAR,b%
print ? result=%SDS.VAR,result%
print ? %SDS.VAR,a%*%SDS.VAR,b%=%SDS.VAR,result%
...

cmd ?|>> ACommand [>>> AOutput]
Вызов системной командной строки (cmd /c ACommand) и вывод результатов в окно диагностики skyDSuite
cmd ? netstat -a // выводим активные соединения
cmd ? route print // выводим таблицу маршрутов
cmd >> route print // выводим таблицу маршрутов

psh ?|>> ACommand [>>> AOutput]
Выполнение команды (powershell -nologo ACommand) и вывод результатов в окно диагностики skyDSuite
psh ? get-process // выводим список запущенных приложений
psh ? get-service // выводим список сервисов

wmic ?|>> ACommand [>>> AOutput]
Командная строка WMI
wmic ? process // выводим список запущенных приложений
wmic ? cpu // выводим информацию о процессоре

pipe ?|>> APipe ? AData
Запись данных AData в именованный канал APipe
pipe >> \\.\pipe\pipename ? hello
pipe ? \\.\pipe\SKYDSUITE–IPC-PIPE-A443238C-9FC8-48BA-9FFB-F25C678D06D6 ? hello
pipe >> \\.\pipe\SKYDSUITE–IPC-PIPE-A443238C-9FC8-48BA-9FFB-F25C678D06D6 ? hello

+MONITOR [/APause]
Включаем монитор.
После выполнения действия, делаем паузу в APause секунд.

-MONITOR [/APause]
Выключаем монитор.
После выполнения действия, делаем паузу в APause секунд.

~MONITOR [/APause]
Переводим монитор в режим энергосбережения.
После выполнения действия, делаем паузу в APause секунд.

LOGOFF
Завершаем текущий сеанс.

SHUTDOWN
Выключаем компьютер.

RESTART
REBOOT
Перегружаем компьютер.

STANDBY
Переводим компьютер в режим ожидания.

HIBERNATE
Переводим компьютер в спящий режим.

#TRAY
Перерисовка системного лотка.

-SUSPEND
-STANDBY
-HIBERNATE
Запрещаем перевод компьютера в спящий режим или в режим ожидания.
Устанавливаем значение {SDS.ZCFG} → [MAIN] → PreventSuspend = 1

+SUSPEND
+STANDBY
+HIBERNATE
Разрешаем перевод компьютера в спящий режим или в режим ожидания.
Устанавливаем значение {SDS.ZCFG} → [MAIN] → PreventSuspend = 0

?SUSPEND
?STANDBY
?HIBERNATE
Получаем значение {SDS.ZCFG} → [MAIN] → PreventSuspend

WAKEUP
Выводим компьютер из спячки.

SystemError ?|>> AErrorCode
RASError ?|>> AErrorCode
SetupApiError ?|>> AErrorCode
CfgMgrError ?|>> AErrorCode
InternetError ?|>> AErrorCode
Вывод на экран описания соответствующих ошибок. Выполняется из командной строки.
SystemError ? 1001
SystemError >> 87
RASError ? 630
CfgMgrError >> 23

Windows [?|>> AImage] [>>> AOutput]
TopWindows [?|>> AImage] [>>> AOutput]
Вывод на экран списка окон приложения AImage. Выполняется из командной строки.
AImage может быть именем или маской исполняемого файла или целочисленным идентификатором запущенного процесса.
Если AImage не задан, то выводятся все окна программы skyDSuite.
Если AImage=*, то выводятся все найденные окна всех приложений.
Windows
Windows ? *
Windows ? c:\Program Files\Download Master\dmaster.exe
Windows ? firefox
TopWindows ? *DM
TopWindows >> *DM

Types [?|>> ATypeLibrary] [>>> AOutput]
Typess [?|>> ATypeLibrary] [>>> AOutput]
Вывод на экран списка типов, определённых в ATypeLibrary.
При вызове Typess выводим списки типов, определённых в связанных с ATypeLibrary библиотеках.
ATypeLibrary может быть целочисленным идентификатором запущенного процесса.
Если ATypeLibrary не определена, то выводим типы, определённые в skyDSuite.
Types
Types ? skyDSuite.exe
Typess ? skyDSuite.exe
Types ? msscript.ocx
Types ? winmgmts:\\.\root\cimv2:Win32_Service

AxModules [?|>> AImage] [>>> AOutput]
Вывод на экран списка ActiveX модулей, загруженных приложением AImage.
AImage может быть именем исполняемого файла или целочисленным идентификатором запущенного процесса.
AxModules

Modules [?|>> AImage] [>>> AOutput]
Вывод на экран списка модулей, загруженных приложением AImage.
AImage может быть именем исполняемого файла или целочисленным идентификатором запущенного процесса.
Modules ? 1234
Moduless

PEImport [?|>> APEFile] [>>> AOutput]
Вывод на экран списка библиотек импорта исполняемого файла APEFile.
APEFile может быть именем файла или целочисленным идентификатором запущенного процесса.
Если APEFile не определён, то в качестве файла используем skyDSuite.exe
PEImport
PEImport ? skyDSuite.exe
PEImport ? skyDSuite.exe >>> file:"D:\output.txt"
PEImport ? skyDSuite.exe >>> +file:"D:\output.txt"

PEImport+ [?|>> APEFile] [>>> AOutput]
Вывод на экран списка библиотек импорта и импортируемых функций исполняемого файла APEFile.
APEFile может быть именем файла или целочисленным идентификатором запущенного процесса.
Если APEFile не определён, то в качестве файла используем skyDSuite.exe
PEImport+
PEImport+ ? skyDSuite.exe

PEImport++ [?|>> APEFile] [>>> AOutput]
Вывод на экран списка библиотек импорта и импортируемых функций исполняемого файла APEFile.
APEFile может быть именем файла или целочисленным идентификатором запущенного процесса.
Если функция экспортируется по индексу, то пытаемся определить её имя.
Если APEFile не определён, то в качестве файла используем skyDSuite.exe
PEImport++
PEImport++ ? skyDSuite.exe

PEExport [?|>> APEFile] [> ASort] [>>> AOutput]
PEExport+ [?|>> APEFile] [> ASort] [>>> AOutput]
PEExport++ [?|>> APEFile] [> ASort] [>>> AOutput]
Вывод на экран списка экспортируемых из APEFile функций.
APEFile может быть как именем файла, так и целочисленным идентификатором запущенного процесса.
ASort - способ сортировки функций
n
name
Сортировка по имени
o
ord
ordinal
Сортировка по порядковому номеру
a
addr
address
Сортировка по адресу

Если APEFile не определён, то в качестве файла используем skyDSuite.exe
PEExport
PEExport ? StreamReader.DLL
PEExport ? KERNELBASE.dll > addr
PEExport ? msvcrt.dll >>> file:"D:\msvcrt.dll.txt"

[+]P|p ? AMSG,AWPARAM,ALPARAM [[/ACount]/APause] >> AImage?AClass
?P|p ? AMSG,AWPARAM,ALPARAM [[/ACount]/AWaits/APause] >> AImage?AClass
Посылка сообщений окну с именем класса AClass в приложении AImage.
Вызывается системная функция PostMessage с указанными параметрами.
AImage может быть именем или маской исполняемого файла или целочисленным идентификатором запущенного процесса.
Если AClass = * - сообщение посылается всем окнам приложения AImage.
Если AClass = ** - сообщение посылается всем top-level окнам приложения AImage.
Если AClass не определён, выбирается первое попавшееся в приложении AImage окно.
При выполнении действия ?P ожидаем запуска приложения AImage AWaits секунд.
Функция PostMessage вызывается ACount раз.
При отсутствии ошибок, делаем паузу в APause секунд.
P ? 0x111,62,0 /20 >> *UT?** // Остановка всех закачек у µTorrent (UT)
P ? 0x111,61,0 /5 >> *UT?** // Старт всех закачек у µTorrent (UT)
P ? 0x111,0x803F,0 /5 >> *FDM?Free Download Manager Main Window // Остановка всех закачек у Free Download Manager (FDM)
P ? 0x111,0x803E,0 /5 >> *FDM?Free Download Manager Main Window // Старт всех закачек у Free Download Manager (FDM)
P ? 0x111,0x800E,0 /5 >> *OD?orbitdm_app // Остановка всех закачек у Orbit Downloader (OD)
P ? 0x111,0x800D,0 /5 >> *OD?orbitdm_app // Старт всех закачек у Orbit Downloader (OD)
P ? 0x111,226,0 /5 >> *RGD?** // Остановка всех закачек у ReGet Deluxe (RGD)
P ? 0x111,225,0 /5 >> *RGD?** // Старт всех закачек у ReGet Deluxe (RGD)
P ? 0x111,0x8022,0 /5 >> *FG?JetCar Class // Остановка всех закачек у FlashGet (FG)
P ? 0x111,0x8051,0 /5 >> *FG?JetCar Class // Старт всех закачек у FlashGet (FG)

[+]T|t ? AMSG,AWPARAM,ALPARAM [[/ACount]/APause] >> AImage?AClass
?T|t ? AMSG,AWPARAM,ALPARAM [[/ACount]/AWaits/APause] >> AImage?AClass
Посылка сообщений потоку окна с именем класса AClass в приложении AImage.
Вызывается системная функция PostThreadMessage с указанными параметрами.
AImage может быть именем или маской исполняемого файла или целочисленным идентификатором запущенного процесса.
Если AClass = * - сообщение посылается потокам всех окон приложения AImage.
Если AClass = ** - сообщение посылается потокам всех top-level окон приложения AImage.
Если AClass не определён, выбирается первое попавшееся в приложении AImage окно и сообщение посылается потоку этого окна.
При выполнении действия ?T ожидаем запуска приложения AImage AWaits секунд.
Функция PostThreadMessage вызывается ACount раз.
При отсутствии ошибок, делаем паузу в APause секунд.

[+]K|k ? AKeys [[/AWaits]/APause] >> AImage?AClass
Жмём клавиатуре кнопки AKeys.
Если определён AImage, то жмём кнопки в направлении AImage → AClass.
AImage может быть именем исполняемого файла или целочисленным идентификатором запущенного процесса.
AParam в этом случае, это наименование класса окна, которому будет направлен ввод.
При отсутствии ошибок, делаем паузу в APause секунд.
K ? C >> c:\Program Files\Winamp\winamp.exe
K ? CTRL+ALT+HOME,F1 /10
k ? C >> c:\Program Files\Winamp\winamp.exe
k ? CTRL+ALT+HOME,F1 /10

[+]B|b [[[/ABeepCount]/APostBeepDelay]/ABeepType]
BEEP [[[/ABeepCount]/APostBeepDelay]/ABeepType]
Воспроизведение системных звуков.
APostBeepDelay измеряется в миллисекундах.
ABeepType - тип сигнала:
0 - Встроенный динамик
1 - Стандартный звук
2 - Звук "Критическая ошибка"
3 - Звук "Вопрос"
4 - Звук "Восклицание"
5 - Звук "Звездочка"
Если ABeepCount<1, то звуковой сигнал подаётся бесконечно долго. Точнее, до нажатия Esc.
b/2/1000/1
beep

SOUND ? AFile [/ACount[/APause]]
SOUND [/ACount[/APause]] >> AFile
Проигрываем звуковой файл AFile (wave-формат) ACount раз с паузой APause секунд.
sound ? oops.wav
sound ? oops.wav /10
sound ? oops.wav /10/1






Атомарные действия (сервера)
Наверх

-HTTPServer [/APause]
Выключение HTTP сервера
После выполнения действия, делаем паузу в APause секунд.

+HTTPServer [/APause]
Включение HTTP сервера
После выполнения действия, делаем паузу в APause секунд.

-WebDAVServer [/APause]
-WDAVServer [/APause]
Выключение WebDAV сервера
После выполнения действия, делаем паузу в APause секунд.

+WebDAVServer [/APause]
+WDAVServer [/APause]
Включение WebDAV сервера
После выполнения действия, делаем паузу в APause секунд.

-Telnet [/APause]
-TelnetServer [/APause]
Выключение telnet сервера
После выполнения действия, делаем паузу в APause секунд.

+Telnet [/APause]
+TelnetServer [/APause]
Включение telnet сервера
После выполнения действия, делаем паузу в APause секунд.

-HTTPProxyServer [/APause]
Выключение HTTP прокси-сервера
После выполнения действия, делаем паузу в APause секунд.

+HTTPProxyServer [/APause]
Включение HTTP прокси-сервера
После выполнения действия, делаем паузу в APause секунд.

-SocksServer [/APause]
Выключение Socks сервера
После выполнения действия, делаем паузу в APause секунд.

+SocksServer [/APause]
Включение Socks сервера
После выполнения действия, делаем паузу в APause секунд.





Атомарные действия (системная информация)
Наверх

Каждому пункту меню Display соответствует действие

Главное меню → Display →

Script Actions                  | Display.ScriptActions
Short Cuts & Hot Keys           | Display.ShortCutsHotKeys
------------------------------------------------------------
skyDSuite Statistics            | Display.SDSStat
------------------------------------------------------------
Traffic Statistics → TOTAL      | Display.TrafficStat
Traffic Statistics → RATIO      | Display.TrafficStatRatio
------------------------------------------------------------
Traffic Statistics → <SKY>      | Display.TrafficStatSky
Traffic Statistics → <GROUND>   | Display.TrafficStatGround
Traffic Statistics → <VPN>      | Display.TrafficStatVpn
Traffic Statistics → <INFO>     | Display.TrafficStatInfo
------------------------------------------------------------
Network Params                  | Display.NetworkParams
Adapters                        | Display.Adapters
ARP Entries                     | Display.ARPEntries
------------------------------------------------------------
IP Address Table                | Display.IPTable
Route Table                     | Display.RouteTable
Route Table (+)                 | Display.RouteTable+
------------------------------------------------------------
TCP Table                       | Display.TCPTable
TCP Table (+)                   | Display.TCPTable+
TCP Listen Table                | Display.TCPListenTable
TCP Established Table           | Display.TCPEstablishedTable
TCP Established Table (+)       | Display.TCPEstablishedTable+
UDP Table                       | Display.UDPTable
TCP & UDP Tables                | Display.IPTables
TCP & UDP Tables (+)            | Display.IPTables+
------------------------------------------------------------
TCP6 Table                      | Display.TCP6Table
TCP6 Listen Table               | Display.TCP6ListenTable
TCP6 Established Table          | Display.TCP6EstablishedTable
UDP6 Table                      | Display.UDP6Table
TCP6 & UDP6 Tables              | Display.IP6Tables
------------------------------------------------------------
Hosts                           | Display.Hosts
skyDSuite Bindings              | Display.SDSBindings
------------------------------------------------------------
Transport Protocols             | Display.TransportProtocols
Namespace Providers             | Display.NamespaceProviders
------------------------------------------------------------
RAS Connections                 | Display.RASConnections
RAS Devices                     | Display.RASDevices
RAS Entries                     | Display.RASEntries
------------------------------------------------------------
Devices                         | Display.Devices
Devices (+)                     | Display.Devices+
------------------------------------------------------------
Devices → Net                   | Display.DevicesNet
Devices → Ports                 | Display.DevicesPorts
Devices → Removable             | Display.DevicesRemovable
------------------------------------------------------------
DOS Devices                     | Display.DOSDevices
------------------------------------------------------------
Environment Strings             | Display.EnvironmentStrings
------------------------------------------------------------
Processes                       | Display.Processes
Processes (+)                   | Display.Processes+
------------------------------------------------------------
Services                        | Display.Services
Services • Name                 | Display.Services.Name
Services • Binary               | Display.Services.Binary
------------------------------------------------------------
Drivers                         | Display.Drivers
Drivers • Name                  | Display.Drivers.Name
Drivers • Binary                | Display.Drivers.Binary
------------------------------------------------------------
DVB Tuner Data                  | Display.DVBTunerData
------------------------------------------------------------
LOG Colors                      | Display.LOGColors

Действие Display.*** можно вызвать как ^***
^Processes тоже самое, что и Display.Processes

^Processes[+] [?|>> Amask] [>>> AOutput]
Display.Processes[+] [?|>> Amask] [>>> AOutput]
Вывод на экран списка процессов.
Выводятся процессы, имена которых соответствуют маске Amask.
Если маска не задана, то выводятся все процессы.
Если указан символ "+", то выводим командную строку процесса.
^Processes
^Processes ? svchost
^Processes+ ? svchost

^Services [?|>> Amask] [>>> AOutput]
^Services.Name [?|>> Amask] [>>> AOutput]
^Services.Binary [?|>> Amask] [>>> AOutput]
Display.Services [?|>> Amask] [>>> AOutput]
Display.Services.Name [?|>> Amask] [>>> AOutput]
Display.Services.Binary [?|>> Amask] [>>> AOutput]
Вывод на экран списка сервисов.
Выводятся сервисы, имена которых соответствуют маске Amask.
Если маска не задана, то выводятся все сервисы.
*Services - сортировка списка по отображаемому имени сервиса.
*Services.Name - сортировка списка по имени сервиса.
*Services.Binary - сортировка списка по имени исполняемого файла.
^Services
^Services.Name
^Services ? svchost

^Drivers [?|>> Amask] [>>> AOutput]
^Drivers.Name [?|>> Amask] [>>> AOutput]
^Drivers.Binary [?|>> Amask] [>>> AOutput]
Display.Drivers [?|>> Amask] [>>> AOutput]
Display.Drivers.Name [?|>> Amask] [>>> AOutput]
Display.Drivers.Binary [?|>> Amask] [>>> AOutput]
Вывод на экран списка драверов.
Выводятся драверы, имена которых соответствуют маске Amask.
Если маска не задана, то выводятся все драверы.
*Drivers - сортировка списка по отображаемому имени дравера.
*Drivers.Name - сортировка списка по имени дравера.
*Drivers.Binary - сортировка списка по имени исполняемого файла.
^Drivers
^Drivers.Name
^Drivers ? usb





Служебные действия
Наверх

GROUP
Если требуется запустить несколько действий одновременно, то их нужно описать внутри конструкции <GROUP>...</GROUP> (+GROUP...-GROUP)

*DOWNLOAD.PAUSE

...
<GROUP>
*DL\UT.APP.STOP
*DL\DM.JOBs.PAUSE
</GROUP>
...

BLOCK
Если требуется запустить несколько действий последовательно, то их нужно описать внутри конструкции <BLOCK>...</BLOCK> (+BLOCK...-BLOCK)
Действия будут запущены последовательно, даже если конструкция <BLOCK>...</BLOCK> находится внутри конструкции <GROUP>...</GROUP>

*DL\UT.APP.STOP

...
<BLOCK>
$A>>*UT           // Запоминаем состояние программы
P?*msg/15>>*UT?** // Закрываем µTorrent (POST MESSAGE)
-A/20/5>>*UT      // Закрываем µTorrent
</BLOCK>
...

*DL\DM.JOBs.PAUSE

...
<BLOCK>
DM.STOP.ALL/5     // Остановка всех закачек у Download Master (DM) (PLUG-IN)
</BLOCK>
...





Молекулярные действия
Наверх

Для вящего удобства существует возможность описания набора атомарных действий, как одного действия, которое и получило название молекулярного.

Например, используя только атомарные действия, имеем
FILE = .\CFG\SDS.ZSCRIPT

[ALIAS]
DM=c:\Program Files\Download Master\dmaster.exe

[SCHEDULER]
Active=1
02:00:00=WAKEUP                        // Выходим из спящего режима
02:05:00=RESET.SC                      // Обнуляем "короткий" счётчик трафика
02:05:00=#STATs                        // Создаём новый файл статистики (трафик)
02:05:00=+STATs                        // Включаем запись в файл статистики (трафик)
02:05:00=#STADs                        // Создаём новый файл статистики (DVB)
02:05:00=+STADs                        // Включаем запись в файл статистики (DVB)
02:05:00=##SKY                         // Перезапускаем интернет соединения
02:05:00=P1/10                         // Устанавливаем первый приоритет
02:05:00=+URLs                         // Включаем проверку ссылок
02:05:00=+A/20/10>>*DM                 // Запускаем "Download Master"
02:05:00=DM.START.ALL/5/1/30/5         // Старт всех закачек у Download Master`а
02:05:00=+CTRL                         // Включаем автоматический контроль
02:05:00=+PlanB                        // Включаем план «Бэ»
07:55:00=-PlanB                        // Выключаем план «Бэ»
07:55:00=-CTRL                         // Выключаем автоматический контроль
07:55:00=DM.STOP.ALL/5/1/30/5          // Остановка всех закачек у Download Master`а
07:55:00=-A/20/10>>*DM                 // Закрываем "Download Master"
07:55:00=-STATs                        // Выключаем запись в файл статистики
07:55:00=-URLs                         // Выключаем проверку ссылок
07:55:00=-SKY.ACTIVE                   // Выключаем интернет соединения
07:55:00=RESET.SC                      // Обнуляем "короткий" счётчик трафика
07:55:00=HIBERNATE                     // Переходим в спящий режим

Теперь тоже самое, но используя молекулярные действия
FILE = .\CFG\SDS.ZSCRIPT

[ALIAS]
DM=c:\Program Files\Download Master\dmaster.exe

[NIGHT.ON]
Active=1
RESET.SC                            // Обнуляем "короткий" счётчик трафика
#STATs                              // Создаём новый файл статистики (трафик)
+STATs                              // Включаем запись в файл статистики (трафик)
#STADs                              // Создаём новый файл статистики (DVB)
+STADs                              // Включаем запись в файл статистики (DVB)
##SKY                               // Перезапускаем интернет соединения
P1/10                               // Устанавливаем первый приоритет
+URLs                               // Включаем проверку ссылок
+A/20/10>>*DM                       // Запускаем "Download Master"
DM.START.ALL/5/1/30/5               // Старт всех закачек у Download Master`а
+CTRL                               // Включаем автоматический контроль
+PlanB                              // Включаем план «Бэ»

[NIGHT.OFF]
Active=1
-PlanB                              // Выключаем план «Бэ»
-CTRL                               // Выключаем автоматический контроль
DM.STOP.ALL/5/1/30/5                // Остановка всех закачек у Download Master`а
-A/20/10>>*DM                       // Закрываем "Download Master"
-STATs                              // Выключаем запись в файл статистики
-URLs                               // Выключаем проверку ссылок
-SKY.ACTIVE                         // Выключаем интернет соединения
RESET.SC                            // Обнуляем "короткий" счётчик трафика
HIBERNATE                           // Переходим в спящий режим

[SCHEDULER]
Active=1
02:00:00=WAKEUP                     // Выходим из спящего режима
02:05:00=*NIGHT.ON                  // Включаем ночь
07:55:00=*NIGHT.OFF                 // Выключаем ночь

Или даже так
FILE = .\CFG\SDS.ZSCRIPT

[ALIAS]
DM=c:\Program Files\Download Master\dmaster.exe

[DOWNLOAD.STOP]
Active=1
*DL\DM.JOBs.PAUSE
*DL\DM.APP.STOP

[DOWNLOAD.START]
Active=1
*DL\DM.APP.START
*DL\DM.JOBs.RESUME

[DOWNLOAD.PAUSE]
Active=1
*DL\DM.JOBs.PAUSE

[DOWNLOAD.RESUME]
Active=1
*DL\DM.JOBs.RESUME

[DL\DM.APP.STOP]
Active=1
-A/20/10>>*DM                       // Закрываем "Download Master"

[DL\DM.APP.START]
Active=1
+A?C/20/10>>*DM                     // Запускаем "Download Master"

[DL\DM.JOBs.PAUSE]
Active=1
DM.STOP.ALL/5/1/30/5                // Остановка всех закачек у Download Master`а

[DL\DM.JOBs.RESUME]
Active=1
DM.START.ALL/5/1/30/5               // Старт всех закачек у Download Master`а

[NIGHT.ON]
Active=1
RESET.SC                            // Обнуляем "короткий" счётчик трафика
#STATs                              // Создаём новый файл статистики (трафик)
+STATs                              // Включаем запись в файл статистики (трафик)
#STADs                              // Создаём новый файл статистики (DVB)
+STADs                              // Включаем запись в файл статистики (DVB)
##SKY                               // Перезапускаем интернет соединения
P1/10                               // Устанавливаем первый приоритет
+URLs                               // Включаем проверку ссылок
*DOWNLOAD.START                     // Стартуем закачки
+CTRL                               // Включаем автоматический контроль
+PlanB                              // Включаем план «Бэ»

[NIGHT.OFF]
Active=1
-PlanB                              // Выключаем план «Бэ»
-CTRL                               // Выключаем автоматический контроль
*DOWNLOAD.STOP                      // Останавливаем закачки
-STATs                              // Выключаем запись в файл статистики
-URLs                               // Выключаем проверку ссылок
-SKY.ACTIVE                         // Выключаем интернет соединения
RESET.SC                            // Обнуляем "короткий" счётчик трафика
HIBERNATE                           // Переходим в спящий режим

[SCHEDULER]
Active=1
02:00:00=WAKEUP                     // Выходим из спящего режима
02:05:00=*NIGHT.ON                  // Включаем ночь
07:55:00=*NIGHT.OFF                 // Выключаем ночь

Описываются молекулярные действия в файле описания скриптов SDS.ZSCRIPT. Выглядит это как обычное описание набора действий.

Формат описания молекулярного действия
[ Имя молекулярного действия ]
Active Флаг активности молекулярного действия (1|0)
Time Временные рамки активности действия
Описание действий  

Чтобы закомментировать строку, достаточно в начале написать символ ; или //
Учитываются незакомментированные атомарные действия, для которых "Флаг активности молекулярного действия"=1

Нам хочется, чтобы поведение действия по установке приоритета *SET.PRIORITY зависело от времени? Пишем
FILE = .\CFG\SDS.ZSCRIPT

[SET.PRIORITY]
Active=1
*SET.PRIORITY.1
*SET.PRIORITY.2

[SET.PRIORITY.1]
Active=1
Time=02:00:00-08:00:00
P1/10                               // Устанавливаем первый приоритет

[SET.PRIORITY.2]
Active=1
Time=[00:00:00-02:00:00),(08:00:00-24:00:00)
P2/10                               // Устанавливаем второй приоритет

Нам хочется, чтобы программа управляла торрент клиентом только ночью (с 02:00:00 до 08:00:00)? Пишем
FILE = .\CFG\SDS.ZSCRIPT

[ALIAS]
DM=c:\Program Files\Download Master\dmaster.exe
UT=c:\Program Files\uTorrent\uTorrent.exe

[DL\UT.APP.STOP]
Active=1
Time=02:00:00-08:00:00
-A/20/5>>*UT                        // Закрываем µTorrent

[DL\UT.APP.START]
Active=1
Time=02:00:00-08:00:00
+A?C/20/5>>*UT                      // Запускаем µTorrent

[DL\DM.APP.STOP]
Active=1
-A/20/5>>*DM                        // Закрываем "Download Master"

[DL\DM.APP.START]
Active=1
+A?C/20/5>>*DM                      // Запускаем "Download Master"

[DL\DM.JOBs.PAUSE]
Active=1
DM.STOP.ALL/5/1/30/5                // Остановка всех закачек у Download Master`а

[DL\DM.JOBs.RESUME]
Active=1
DM.START.ALL/5/1/30/5               // Старт всех закачек у Download Master`а

[DOWNLOAD.STOP]
Active=1
*DL\DM.JOBs.PAUSE
*DL\DM.APP.STOP
*DL\UT.APP.STOP

[DOWNLOAD.START]
Active=1
*DL\UT.APP.START
*DL\DM.APP.START
*DL\DM.JOBs.RESUME

[DOWNLOAD.PAUSE]
Active=1
*DL\DM.JOBs.PAUSE
*DL\UT.APP.STOP

[DOWNLOAD.RESUME]
Active=1
*DL\UT.APP.START
*DL\DM.JOBs.RESUME

[ASTOPsACTIONS]
Active=1
*DOWNLOAD.PAUSE

[PSTARTsACTIONS]
Active=1
*DOWNLOAD.RESUME





Молекулярные действия (файл)
Наверх

Существует возможность описания молекулярного действия в отдельном файле.
Такие файлы должны лежать в директории .\CFG\UDO\ и иметь расширение .ZUDA (ze User Defined Actions).
Имя файла (без расширения), является именем действия.

Формат описания молекулярного действия
[ ACTION ]
Comment Описание действия
Active Флаг активности молекулярного действия (1|0)
System Флаг системного действия (1|0) (по умолчанию = 0)
HotKey Горячие клавиши для вызова действия.
Если HotKey начинается с символа ! (напр. !CTRL+ALT+HOME), то область действия горячей клавиши - глобальная (соответствующее действие будет вызываться, даже если skyDSuite не активен)
Gmode Флаг активности молекулярного действия при работе в наземном режиме (1|0) (по умолчанию = 1)
Offline Флаг активности молекулярного действия при работе в offline-режиме (1|0) (по умолчанию = 1).
Offline-режимом называем состояние системы во время перезапуска интернет соединений, при неактивности выбранных интерфейсов, при отсутствии шлюза по умолчанию
Confirm Флаг необходимости подтверждения выполнения действия (1|0) (по умолчанию = 1)
Separate Флаг необходимости создания отдельного потока для выполнения действия (1|0) (по умолчанию = 0)
Максимальное количество потоков равно 64
Display Направление вывода диагностических сообщений (по умолчанию = 1)
  • 1 → LOG
  • 2 → LOGX
  • 3 → LOG и LOGX
  • 4 → LOGZ
  • 5 → LOG и LOGZ
  • 6 → LOGX и LOGZ
  • 7 → LOG и LOGX и LOGZ
  • Time Временные рамки активности действия

    Пример описания действия (получение информации о своём IP адресе).
    Вызывается как *IP\GET.TESTIP.FULL
    FILE = .\CFG\UDO\IP\GET.TESTIP.FULL.ZUDA
    
    [ACTION]
    Comment=
    Active=1
    System=0
    HotKey=
    Gmode=1
    Offline=1
    Confirm=0
    Separate=0
    Display=1
    Time=
    
    [ALIAS]
    URL=testip.ru
    Path=
    Lmap=;$Ваш IP$1..$$-10
    Request="GET||||*Lmap"
    
    [ACTIONS]
    !HTTP? *URL *Request // Получаем свой IP с точки зрения внешнего мира (testip.ru)
    
    [SCHEDULER]
    Active=0
    ;00:00:00
    

    Пример описания действия
    FILE = .\CFG\UDO\TEST\SCRIPT.ZUDA
    
    [ACTION]
    Comment=
    Active=1
    System=0
    HotKey=
    Gmode=1
    Offline=1
    Confirm=0
    Separate=0
    Display=1
    Time=
    
    [SCRIPT // PSCRIPT TEST]
    PSCRIPT >>
    
    $sa = $SDScript->SAdapterInfo;
    $ga = $SDScript->GAdapterInfo;
    $ia = $SDScript->IAdapterInfo;
    
    $SDScript->Action("message? PSCRIPT TEST");
    if ( $sa->Active & $ga->Active ) {
      $SDScript->Action("message? sky & ground on");
    } else {
    if ( $sa->Active & !$ga->Active ) {
      $SDScript->Action("message? sky on, ground off");
    } else {
    if ( !$sa->Active & $ga->Active ) {
      $SDScript->Action("message? sky off, ground on");
    } else {
      $SDScript->Action("message? sky & ground off");
    }}}
    
    if ( $ia->Active ) {
      $SDScript->Action("message? info on");
    } else {
      $SDScript->Action("message? info off");
    }
    $SDScript->Action("message?");
    
    [SCRIPT // JSCRIPT TEST]
    JSCRIPT >>
    
    var sa, ga, ia;
    sa = SDScript.SAdapterInfo;
    ga = SDScript.GAdapterInfo;
    ia = SDScript.IAdapterInfo;
    
    SDScript.Action("message? JSCRIPT TEST");
    if (sa.Active & ga.Active) {
      SDScript.Action("message? sky & ground on");
    } else
    if (sa.Active & !ga.Active) {
      SDScript.Action("message? sky on, ground off");
    } else
    if (!sa.Active & ga.Active) {
      SDScript.Action("message? sky off, ground on");
    } else {
      SDScript.Action("message? sky & ground off");
    }
    
    if (ia.Active) {
      SDScript.Action("message? info on");
    } else {
      SDScript.Action("message? info off");
    }
    SDScript.Action("message?");
    
    [SCRIPT // VBSCRIPT TEST]
    VBSCRIPT >>
    
    dim sa, ga, ia
    set sa = SDScript.SAdapterInfo
    set ga = SDScript.GAdapterInfo
    set ia = SDScript.IAdapterInfo
    
    SDScript.Action("message? VBSCRIPT TEST")
    if sa.Active and ga.Active then 
      SDScript.Action("message? sky & ground on")
    else
    if sa.Active and not ga.Active then
      SDScript.Action("message? sky on, ground off")
    else
    if not sa.Active and ga.Active then
      SDScript.Action("message? sky off, ground on")
    else
      SDScript.Action("message? sky & ground off")
    end if
    end if
    end if
    
    if ia.Active then
      SDScript.Action("message? info on")
    else
      SDScript.Action("message? info off")
    end if
    SDScript.Action("message?")
    
    [SCHEDULER]
    Active=0
    ;00:00:00
    

    Системные действия (System=1) запускаются вместе со стартом skyDSuite.
    Чтобы заблокировать запуск системных действий необходимо выключить настройку {SDS.ZCFG} → [MAIN] → EnableSysActions (по умолчанию = 1)

    В секции [SCRIPT] описывается одно действие.

    Допускается запись вида [SCRIPT // AComment], где AComment это комментарий, который будет использоваться при выводе в окно диагностики.

    Секций [ACTIONS] и [SCRIPT] может быть несколько.

    В секциях [ALIAS], [VAR], [CRYPT] описываем локальные псевдонимы (переменные), которые действуют только в пределах данного молекулярного действия. Приоритет локальных псевдонимов (переменных) наивысший.

    В секции [SCHEDULER] можно запланировать автоматический запуск действия по расписанию.

    Для вызова молекулярного действия перед его названием ставим звёздочку (*).

    Параметры действия
    Существует возможность передачи параметров молекулярному действию.
    Ниже описанное действие вызывается так: *whois tarelki.ru
    FILE = .\CFG\UDO\WHOIS.ZUDA
    
    [ACTION]
    Comment=
    Active=1
    System=0
    HotKey=
    Gmode=1
    Offline=1
    Confirm=0
    Separate=0
    Display=1
    Time=
    
    [ALIAS]
    URL=www.nic.ru
    Path=whois/
    Data=query=%1%
    Lmap=;$Информация о домене$1..$$-31
    Request="POST|*Path|*Data||*Lmap"
    
    [ACTIONS]
    HTTPS? *URL *Request
    
    [SCHEDULER]
    Active=0
    ;00:00:00
    

    Непроинициализированные параметры игнорируются.

    Просмотр файлов действий (*.ZUDA)
    Главное меню → View → User-defined Actions...




    ВременнЫе рамки
    Наверх

    При описании действий можно указывать время активности действия.
    Для молекулярного действия это ключ Time. Для атомарного действия временнЫе рамки задаются после ключевой фразы Time:

    Time=02:00:00-08:00:00 (действие активно с 02:00:00 до 08:00:00 включительно)
    Time=02:00:00-08:00:00/1111100 (действие активно с 02:00:00 до 08:00:00 включительно, но только по будням)
    Time=[00:00:00-02:00:00),[08:00:00-24:00:00)
    Time=[02:00:00-08:00:00]/1111100; [00:00:00-02:00:00),(08:00:00-24:00:00)/0000011

    Если Time начинается с символа !, то действие не запускается в выходные дни, описанные в файле .\CFG\SDS.ZRDAYS
    Time=![10:00:00-18:00:10]/1111100

    Если Time начинается с символа $, то временные рамки учитываются, только если действие было запущено планировщиком
    Time=$[10:00:00-18:00:10]/1111100

    Если требуется игнорировать в выходные дни не всё действие, а только некоторые временные интервалы, то следует писать так
    Time=[10:00:00-18:00:10]/1111100; [19:00:00-20:00:10]/1111100/-
    Временной интервал [19:00:00-20:00:10] не будет учитываться в выходные дни

    Если требуется учитывать временной интервал только в выходные дни, то следует писать так
    Time=[10:00:00-18:00:10]/1111100; [19:00:00-20:00:10]/1111100/+
    Временной интервал [19:00:00-20:00:10] будет учитываться только в выходные дни

    [TIME = TIME
    TIME] = TIME
    (TIME = TIME + 1 миллисекунда
    TIME) = TIME - 1 миллисекунда

    Список выходных дней
    FILE = .\CFG\SDS.ZRDAYS
    
    ; список выходных дней
    ;
    ; формат записи
    ; номер месяца=список выходных дней, разделённых запятой
    ;
    ; ПРИМЕР
    ;
    ; [WEEK]
    ; 1=0000011
    ;
    ; Все субботы и воскресенья отмечены как выходные дни
    ;
    ; [2003]
    ; 1=1,2
    ; 11=7,-9
    ;
    ; 1 и 2 января 2003 года - выходные дни
    ; 7 ноября 2003 года - выходной день
    ; 9 ноября 2003 года - рабочий день
    
    [WEEK]
    1=0000000
    
    [2007]
    12=30
    





    Скрипты
    Наверх

    Поддерживается запуск bat-скриптов, powershell-скриптов и IActiveScript-скриптов (VBScript, JScript, PerlScript, Python, ...)
    Список используемых интерфейсов можно увидеть, выполнив команду Types в командной строке.
    Методы и свойства ISDScript доступны через объекты SDScript, WScript и CScript.
    При желании, это можно изменить отредактировав {SDS.ZCFG} → [SCRIPT] → InterfaceObjects.

    FILE = .\SCRIPT\quit.vbs
    
    SDScript.Echo "Quit"
    SDScript.Quit
    SDScript.Echo "End"
    

    FILE = .\SCRIPT\*.vbs
    MsgBox "GIP=" & SDScript.Env("GIP")
    

    FILE = .\SCRIPT\*.vbs
    SDScript.Action("*SKY.CUSTOM.RESTART")
    

    Пример: создание TCP-сервера
    FILE = .\CFG\UDO\SCRIPT\TCP.ZUDA 
    
    [ACTION]
    Comment=
    Active=1
    System=0
    HotKey=
    Gmode=1
    Offline=1
    Confirm=0
    Separate=1
    Display=1
    Time=
    
    [SCRIPT // TCP SERVER]
    PSCRIPT >>
    
    use IO::Socket;
    
    $server_addr = ''; # '127.0.0.1';
    $server_port = 22222;
    
    $server = IO::Socket::INET->new (
      LocalAddr => $server_addr,
      LocalPort => $server_port,
      Type      => SOCK_STREAM,
      Reuse     => 1,
      Blocking  => 0,
      Listen    => SOMAXCONN
    ) or die "Couldn't be a tcp server on port $server_port : $@\n";
    
    $SDScript->print("server\n");
    $SDScript->print(" | ", $server->sockhost(), ":", $server->sockport, "\n\n");
    
    $TCP = "127.0.0.1:".$server->sockport;
    $SDScript->Action("*TCP ".$TCP);
    
    while ( true ) {
      if ( $SDScript->{ScriptThreadIsDead} ) {
        $SDScript->EchoH2("Script thread is dead");
        $SDScript->print("server->close\n");
        $server->close;
        return;
      }
    
      if ( $client = $server->accept() ) {
        $SDScript->print("server->accept\n");
        $SDScript->print(" | ", $client->peerhost(), ":", $client->peerport, "\n");
      } else {
        $SDScript->Sleeps(100);
      }
    }
    
    $SDScript->print("server->close\n");
    $server->close;
    
    [SCHEDULER]
    Active=0
    ;00:00:00
    

    Пример: получение списка сервисов и сохранение полученных данных в html-формате
    FILE = .\CFG\UDO\SCRIPT\SVC.ZUDA 
    
    [ACTION]
    Comment=
    Active=1
    System=0
    HotKey=
    Gmode=1
    Offline=1
    Confirm=0
    Separate=1
    Display=1
    Time=
    
    [SCRIPT]
    PSHELL >>
    
    get-service | ConvertTo-Html -Property Name,Status | 
    foreach { 
      if ($_ -like '*<td>Running</td>*') {
        $_ -replace '<tr>', '<tr bgcolor=palegreen>'
      } else {
        $_ -replace '<tr>', '<tr bgcolor=tomato>'
      }
    } > .\get-service.html
    
    [SCHEDULER]
    Active=0
    ;00:00:00
    





    Пользовательская панель управления
    Наверх

    Существует возможность создать дополнительную панель управления, описав её в файле .\CFG\UTB\SDS.ZUTB
    В качестве картинок используются BMP-файлы размером 24*24
    Отредактировать файл можно в [Главное меню] → Settings → Toolbar...

    Пример описания
    FILE = .\CFG\UTB\SDS.ZUTB
    
    [Toolbar]
    Visible=1
    
    [Button]
    Visible=1
    Hint=Центральный банк России
    Action=*CBR
    Image=CBR.bmp
    
    [Separator]
    Visible=1
    
    [Button]
    Visible=1
    Hint=Мегафон
    Action=*AT\USSD *100#
    Image=MegaFon.bmp
    Menu=MegaFonMenu
    
    [MegaFonMenu]
    1=*AT\USSD *100#=Баланс
    1=*AT\USSD *205#=Свой номер
    1=-
    1=*AT\USSD *505#=Проверка на платные подписки
     
    [Separator]
    Visible=1
    
    [Button]
    Visible=1
    Hint=Выключить компьютер
    Action=*System\SHUTDOWN
    Image=ShutDown.bmp
    
    [Button]
    Visible=1
    Hint=Перегрузить компьютер
    Action=*System\REBOOT
    Image=Restart.bmp
    
    [Button]
    Visible=1
    Hint=Перейти в спящий режим
    Action=*System\HIBERNATE
    Image=Hibernate.bmp
    





    Избранные действия
    Наверх

    Список избранных действий описывается в {SDS.ZSCRIPT} → [FAVORITES] или в .\CFG\UDO\SDS.ZUDD или в .\CFG\SDS.ZFAV
    Использование файла .\CFG\SDS.ZFAV предпочтительнее.

    FILE = .\CFG\SDS.ZSCRIPT
    
    [FAVORITES]
    1=*SWITCH.TO.GROUND
    1=-
    1=*GROUND.UP
    1=*GROUND.DOWN
    1=-
    1=*DOWNLOAD.START
    1=*DOWNLOAD.STOP
    1=-
    1=*DOWNLOAD.PAUSE
    1=*DOWNLOAD.RESUME
    
    [SWITCH.TO.GROUND]
    Active=1
    -CTRL             // Выключаем автоматический контроль
    -SKY.ACTIVE       // Выключаем интернет соединения
    +R?*GInterface    // Включаем землю
    
    [GROUND.UP]
    Active=1
    +R?*GInterface
    
    [GROUND.DOWN]
    Active=1
    -R?*GInterface
    

    Быстрый доступ к избранным действиям возможен через кнопку "Favorite Actions" (со звездой во лбу).

    Если действие описано как
    
    [FAVORITES]
    ...
    1=*GROUND.UP=Поднимаем землю?Ctrl+J
    ...
    
    то в соответствующем выпадающем меню появится пункт "Поднимаем землю", при выборе которого будет выполняться действие *GROUND.UP. Более того, этот пункт меню можно вызвать через комбинацию горячих клавиш Ctrl+J.




    Псевдонимы (переменные)
    Наверх

    Псевдонимы (переменные) описываются в секции [ALIAS] или [VAR]

    Пример использования псевдонима (переменной)

    FILE = .\CFG\SDS.ZSCRIPT
    
    [DL\WGET.APP.STOP]
    Active=1
    -A/20/5>>c:\Program Files\WGET\wget.exe
    
    [DL\WGET.APP.START]
    Active=1
    +A?C/20/5>>c:\Program Files\WGET\wget.exe? -i ".\FILES\URL.LIST" -P ".\FILES" -c --content-disposition
    

    Эквивалентно

    FILE = .\CFG\SDS.ZSCRIPT
    
    [ALIAS]
    WGET=c:\Program Files\WGET\wget.exe
    
    [DL\WGET.APP.STOP]
    Active=1
    -A/20/5>>*WGET
    
    [DL\WGET.APP.START]
    Active=1
    +A?C/20/5>>*WGET? -i ".\FILES\URL.LIST" -P ".\FILES" -c --content-disposition
    

    Псевдонимы можно описывать в файлах .\CFG\SDS.ZVAR и .\CFG\UDO\SDS.ZUDD
    Использование файла SDS.ZVAR предпочтительнее.




    Шифрованные данные
    Наверх

    Шифрованные данные описываются в секции [CRYPT]

    Предположим, что нам требуется прописать шифрованные данные в скрипте какого-нибудь действия.
    Выбирает скрипт действия: Главное меню → View → User-defined Actions...
    Пишем следующее:

    FILE = .\CFG\UDO\Action.ZUDA
    
    [CRYPT]
    username=!user
    password=?0000
    

    Сохраняем изменения.
    При этом параметр password будет зашифрован, а параметр username останется в первозданном виде.

    Для секции параметров [CRYPT] действуют такие правила:
    • если значение параметра начинается с символа "!", то параметр не шифруется.
    • если значение параметра начинается с символа "?", то параметр будет зашифрован.
    • если значение параметра начинается с любого другого символа, то параметр считается зашифрованным.
    При чтении значений параметров управляющие символы ("!", "?") игнорируются.

    Псевдонимы можно описывать в файлах .\CFG\SDS.ZVAR и .\CFG\UDO\SDS.ZUDD

    Помимо параметров секции [CRYPT], шифруются следующие данные:
    • параметр PASSWORD во всех секциях файла .\CFG\SDS.ZMAIL
    • параметр PASSWORD во всех секциях файла .\CFG\SDS.ZRAS
    • пароли в секции [AUTH] файла .\CFG\SDS.ZHTTP
    • пароли в секции [AUTH] файла .\CFG\SDS.ZWDAV
    • пароли в секции [AUTH] файла .\CFG\SDS.ZTEL
    • пароли в секции [USERS] файла .\CFG\SDS.ZHTTPP

    При переносе программы в другую директорию или на другой компьютер шифрованные данные придётся вводить заново.




    "Критические" действия
    Наверх

    Срабатывание некоторых критериев считаются критическими.
    В этом случае выполняются действия описанные в {SDS.ZSCRIPT} → [CRITsACTIONS].
    Все параметры описываются в файле {.\CFG\SDS.ZCRITs} → [CRITs].

    Расширенное описание критического параметра находится в отдельной секции файла конфигурации
    Если ключ 'Active' данной секции = 1, то используются параметры секции расширенного описания.
    Каждый критический параметр описывается ключом 'CParam'.
    При срабатывании критерия выполняется действие 'Action'

    Пример секции расширенного описания

    FILE = .\CFG\SDS.ZCRITs
    
    [RestartFaults]
    Active=1
    CParam=4
    Action=REBOOT
    

    "Критические" случаи:

    Значения меньшие или равные нулю игнорируются.

    Пример скрипта

    FILE = .\CFG\SDS.ZSCRIPT
    
    [CRITsACTIONS]
    Active=1
    B/30/400/600/600                    // Верещим системным динамиком
    

    Если используется Traffic Inspector, то можно заблокировать трафик (если в настройках инспектора указано блокировать трафик при остановке сервиса).

    FILE = .\CFG\SDS.ZSCRIPT
    
    [CRITsACTIONS]
    Active=1
    -s?TrafInspSrv                      // Блокировка трафика (при использовании Traffic Inspector`а)
    

    А можно наоборот, взять да и выключить компьютер.

    FILE = .\CFG\SDS.ZSCRIPT
    
    [CRITsACTIONS]
    Active=1
    SHUTDOWN
    





    Дополнительные действия
    Наверх

    При старте программы выполняем действия, описанные в {SDS.ZSCRIPT} → [StartupACTIONS]
    Пример. Включение интернет соединений при старте программы

    FILE = .\CFG\SDS.ZSCRIPT
    
    [StartupACTIONS]
    Active=1
    +SKY.ACTIVE    // Включаем интернет соединения
    +CTRL          // Включаем автоматический контроль
    

    При закрытии программы выполняем действия, описанные в {SDS.ZSCRIPT} → [CloseACTIONS]
    Пример. Выключение интернет соединений при закрытии программы

    FILE = .\CFG\SDS.ZSCRIPT
    
    [CloseACTIONS]
    Active=1
    -CTRL          // Выключаем автоматический контроль
    -SKY.ACTIVE    // Выключаем интернет соединения
    

    Если изменились PID`ы, выполняем действия, описанные в {SDS.ZSCRIPT} → [PIDsACTIONS]
    FILE = .\CFG\SDS.ZSCRIPT
    
    [PIDsACTIONS]
    Active=1
    B/30/400/600/600                    // Верещим системным динамиком
    





    Планировщик
    Наверх

    Формат описания списка действий планировщика
    [ SCHEDULER ]
    Active Флаг активности списка (1|0)
    Время выполнения действия Описание действия

    Чтобы закомментировать строку, достаточно в начале написать символ ; или //
    Учитываются незакомментированные действия, для которых "Флаг активности списка"=1

    Варианты определения времени выполнения действия

    ATime
    10:00:00=ACTION
    Операция ACTION выполняется один раз в 10:00:00

    APeriod
    30=ACTION
    Операция ACTION выполняется с периодом в 30 минут в промежутке времени (00:00:00..23:59:59]
    30,50=ACTION
    Операция ACTION выполняется с периодом в 30 и 50 минут в промежутке времени (00:00:00..23:59:59]
    *22=ACTION
    Операция ACTION выполняется в 22 минуты каждого часа в промежутке времени (00:00:00..23:59:59]

    AStartTime/APeriod
    10:00:00/30=ACTION
    Операция ACTION выполняется с периодом в 30 минут в промежутке времени [10:00:00..23:59:59]
    10:00:00/30,50=ACTION
    Операция ACTION выполняется с периодом в 30 и 50 минут в промежутке времени [10:00:00..23:59:59]
    10:00:00/*22=ACTION
    Операция ACTION выполняется в 22 минуты каждого часа в промежутке времени [10:00:00..23:59:59]

    APeriod/AEndTime
    30/20:00:00=ACTION
    Операция ACTION выполняется с периодом в 30 минут в промежутке времени (00:00:00..20:00:00]
    30,50/20:00:00=ACTION
    Операция ACTION выполняется с периодом в 30 и 50 минут в промежутке времени (00:00:00..20:00:00]
    *22/20:00:00=ACTION
    Операция ACTION выполняется в 22 минуты каждого часа в промежутке времени (00:00:00..20:00:00]

    AStartTime/AEndTime
    10:00:00/20:00:00=ACTION
    Операция ACTION выполняется дважды, в 10:00:00 и в 20:00:00

    AStartTime/APeriod/AEndTime
    10:00:00/30/20:00:00=ACTION
    Операция ACTION выполняется с периодом в 30 минут в промежутке времени [10:00:00..20:00:00]
    10:00:00/30,50/20:00:00=ACTION
    Операция ACTION выполняется с периодом в 30 и 50 минут в промежутке времени [10:00:00..20:00:00]
    10:00:00/*22/20:00:00=ACTION
    Операция ACTION выполняется в 22 минуты каждого часа в промежутке времени [10:00:00..20:00:00]

    ATime#1/ATime#2/.../ATime#N
    ATime#1/ATime#2/.../ATime#N=ACTION
    Операция ACTION выполняется N раз
    10:00:00/12:00:00/20:00:00=ACTION
    Операция ACTION выполняется три раза, в 10:00:00, в 12:00:00 и в 20:00:00

    Пример скрипта.
    Для правильной работы этого скрипта необходимо сделать следующее. Запустить skyDSuite, выключить автоматический контроль, выключить интернет соединения, перевести компьютер в спящий режим ("Hibernate"), а самому с чувством выполненного долга отправиться на горшок и в постель. Скрипт сам включит компьютер в 2 ночи, немного покачает и под утро всё выключит. Удобно, однако.

    FILE = .\CFG\SDS.ZSCRIPT
    
    [ALIAS]
    DM=c:\Program Files\Download Master\dmaster.exe
    
    [SCHEDULER]
    Active=1
    02:00:00=WAKEUP                        // Выходим из спящего режима
    02:05:00=RESET.SC                      // Обнуляем "короткий" счётчик трафика
    02:05:00=#STATs                        // Создаём новый файл статистики (трафик)
    02:05:00=+STATs                        // Включаем запись в файл статистики (трафик)
    02:05:00=#STADs                        // Создаём новый файл статистики (DVB)
    02:05:00=+STADs                        // Включаем запись в файл статистики (DVB)
    02:05:00=##SKY                         // Перезапускаем интернет соединения
    02:05:00=P1/10                         // Устанавливаем первый приоритет
    02:05:00=+URLs                         // Включаем проверку ссылок
    02:05:00=+A/20/10>>*DM                 // Запускаем "Download Master"
    02:05:00=DM.START.ALL/5/1/30/5         // Старт всех закачек у Download Master`а
    02:05:00=+CTRL                         // Включаем автоматический контроль
    02:05:00=+PlanB                        // Включаем план «Бэ»
    07:55:00=-PlanB                        // Выключаем план «Бэ»
    07:55:00=-CTRL                         // Выключаем автоматический контроль
    07:55:00=DM.STOP.ALL/5/1/30/5          // Остановка всех закачек у Download Master`а
    07:55:00=-A/20/10>>*DM                 // Закрываем "Download Master"
    07:55:00=-STATs                        // Выключаем запись в файл статистики
    07:55:00=-URLs                         // Выключаем проверку ссылок
    07:55:00=-SKY.ACTIVE                   // Выключаем интернет соединения
    07:55:00=RESET.SC                      // Обнуляем "короткий" счётчик трафика
    07:55:00=HIBERNATE                     // Переходим в спящий режим
    

    Активный файл планировщика указывается в {SDS.ZCFG} → [MAIN] → ScriptFile. По умолчанию используется файл с именем SDS.ZSCRIPT

    Описание действия, которое будет выполнено следующим, рисуется на панели бледнозеленоватого цвета.




    План «Бэ»
    Наверх

    Планом «Бэ» будем называть выполнение неких действий, если скорость входящего трафика со спутника становится меньше заданной величины. Как показывает опыт, при снижении скорости на первом приоритете до неприличных величин, можно немного (точнее, совсем немного) исправить ситуацию, дав трафику отдохнуть некоторое время. Собственно говоря, для выполнения именно этой задачи план «Бэ» и задумывался.

    Настройки по умолчанию
    FILE = .\CFG\SDS.ZPLX
    
    [PlanB]
    Active=0
    Winking=0
    BreakOnSpeedUp=0
    SInSpeedFloor=600
    SInSpeedFloors=
    Period=60
    Pause=30
    PauseFloor=0
    PauseCeil=0
    Interval=60
    EnterActive=1
    EnterActions=* DOWNLOAD.PAUSE
    LeaveActive=1
    LeaveActions=* DOWNLOAD.RESUME
    Alertable=0
    AlertInterval=140
    AlertActions=* SKY.CUSTOM.RESTART
    

    Описание параметров
    Active Флаг активности плана «Бэ» (1|0)
    Winking Режим «моргания» без анализа скорости трафика.
    Алгоритм работы - ... через Pause секунд запускаем LeaveActions, через Period секунд запускаем EnterActions, через Pause секунд запускаем LeaveActions ...
    BreakOnSpeedUp Если установлен флаг BreakOnSpeedUp (=1), действия EnterActions запускаются, только если текущее значение скорости меньше предыдущего. То есть, при росте скорости, запуск действий EnterActions откладывается. Этим можно избежать ложных срабатываний.
    SInSpeedFloor Нижний порог для входящего спутникового трафика (в килобитах в секунду)
    SInSpeedFloors Дополнительное описание порогов для входящего спутникового трафика.
    Даёт возможность задать значение порога в зависимости от времени.
    Формат: (Значение порога в kb/s) > (Время действия).
    Время действия описывается также как и временнЫе рамки молекулярного действия.
    Например: 500>[10:00:00-11:00:00);600>[11:00:00-12:00:00)
    EnterActive Флаг активности входных действий (1|0)
    EnterActions Описание входных действий
    LeaveActive Флаг активности выходных действий (1|0)
    LeaveActions Описание выходных действий
    Period Период в секундах, в течении которого происходит анализ скорости
    Pause Пауза в секундах между выполнениями действий EnterActions и LeaveActions
    PauseFloor,
    PauseCeil
    Диапазон изменения паузы.
    Если PauseFloor или PauseCeil больше нуля, пауза будет выбираться случайным образом из промежутка [PauseFloor ... PauseCeil)
    Interval Минимальный интервал в секундах между вызовами EnterActions.
    Увеличивая параметр Interval можно уменьшить частоту срабатывания, что может оказаться весьма пользительным
    Alertable Флаг использования параметров AlertInterval и AlertActions
    AlertInterval Если предупреждения плана «Бэ» поступают непрерывно в течении AlertInterval секунд, то запускаются AlertActions.
    Действия AlertActions запускаются только если Alertable=1
    AlertActions Действия, запускаемые при непрерывном поступлении предупреждений плана «Бэ» в течении AlertInterval секунд.
    Действия AlertActions запускаются только если Alertable=1

    Приведённый в качестве примера скрипт работает так.
    Если скорость входящего спутникового трафика держится меньше 64-х kb/s (SInSpeedFloor) в течении 60-и секунд (Period), сначала останавливаем работу Download Master`а (действия EnterActions) и через 30 секунд (Pause) возобновляем работу Download Master`а (действия LeaveActions). Если предупреждения плана «Бэ» поступают непрерывно в течении 140-а секунд (AlertInterval) и Alertable=1, то запускаются AlertActions.

    Если не заданы SInSpeedFloors или текущее время не попадает ни в одну из указанных времменнЫх рамок, то в качестве порога будет использовано значение SInSpeedFloor.
    Принимаются во внимание только положительные значения порогов.

    Например, хочется ночью (с 02:00:00 до 08:00:00) работать с порогом в 655 kb/s, а в остальное время с порогом в 65 kb/s, скрипт должен быть такой.

    FILE = .\CFG\SDS.ZPLX
    
    [PlanB]
    Active=0
    Winking=0
    BreakOnSpeedUp=0
    SInSpeedFloor=65
    SInSpeedFloors=655>[02:00:00-08:00:00]
    Period=60
    Pause=30
    PauseFloor=0
    PauseCeil=0
    Interval=60
    EnterActive=1
    EnterActions=* DOWNLOAD.PAUSE
    LeaveActive=1
    LeaveActions=* DOWNLOAD.RESUME
    Alertable=0
    AlertPeriod=120
    AlertActions=* SKY.CUSTOM.RESTART
    

    Анализируемая скорость считается каждые {SDS.ZCFG} → [TIMEOUTs] → SystemPeriod секунд (по умолчанию = 10 секунд).

    Быстрое включение/выключение плана «Бэ» доступно через птичку "PB" на главном окне.




    План «Пэ»
    Наверх

    План «Пэ» позволяет циклически запускать/останавливать группу закачек.
    Работает только с Download Master`ом (DM) и Internet Download Accelerator`ом (IDA).

    Настройки по умолчанию
    FILE = .\CFG\SDS.ZPLX
    
    [PlanP]
    Active=0
    DLBlock=8
    DLGroup=4
    DLShift=0
    DLChunk=2
    DLsPeriodFloor=20
    DLsPeriodCeil=20
    DLsDelayFloor=6
    DLsDelayCeil=6
    DLSpeedControl=0
    DLSpeedFloor=10
    DLsSpeedPeriod=30
    EventHandlersActive=0
    EventHandlersResetOnRestart=1
    OnBrDownloadAllActive=0
    OnBrDownloadAllActions=* System\SHUTDOWN
    

    Работает это примерно так.

    Берутся первые DLBlock закачек из списка закачек DM или IDA, начиная с закачки под номером 1+DLShift. Группа из DLGroup активных закачек циклически "прокручивается" внутри блока из DLBlock закачек.
    Каждые DLsPeriod+DLsDelay секунд запускаем DLChunk новых закачек и через DLsDelay секунд останавливаем первые DLChunk закачек.
    DLsPeriod - это случайная величина из промежутка [DLsPeriodFloor, DLsPeriodCeil).
    DLsDelay - это случайная величина из промежутка [DLsDelayFloor, DLsDelayCeil).

    При включённом DLSpeedControl, перезапускаем те закачки, у которых скорость в течении DLsSpeedPeriod секунд была ниже DLSpeedFloor байтов в секунду.

    В настройках качалки должен быть установлен флаг "Закачки" → "Разное" → "Автоматически удалять завершенные закачки"

    Быстрое включение/выключение плана «Пэ» доступно через птичку "PP" на главном окне.




    HTTP сервер
    Наверх

    Существует возможность удалённого управления skyDSuite через web-интерфейс.

    Параметры HTTP сервера устанавливаются в файле .\CFG\SDS.ZHTTP
    Рабочие файлы HTTP сервера лежат в директории .\SRV\HTTP\WWW\PUB

    Общие настройки
    [ HTTP ]
    Active Флаг активности сервера (1|0)
    ReuseSocket Разрешение повторного использования порта (1|0)
    DefaultPort Порт по умолчанию
    Bindings Список адресов в формате IP[:PORT], разделённых запятыми, с которыми будет связан сервер
    CommandTimeout Максимальное время ожидания выполнения команд (в миллисекундах)
    VerboseLogging Расширенное протоколирование (1|0)

    Настройки безопасного соединения
    [ SSL ]
    Active Флаг активности сервера (1|0)
    DefaultPort Порт по умолчанию
    Bindings Список адресов в формате IP[:PORT], разделённых запятыми, с которыми будет связан сервер
    Version Версия SSL
  • sslvSSLv2
  • sslvSSLv23
  • sslvSSLv3
  • sslvTLSv1
  • sslvTLSv1_1
  • sslvTLSv1_2 (значение по умолчанию)
  • Mode Режим работы
  • sslmUnassigned
  • sslmClient
  • sslmServer (значение по умолчанию)
  • sslmBoth
  • RootCertFile Корневой сертификат
    CertFile Сертификат
    KeyFile Файл ключей
    DHParamsFile DH параметры
    Password Пароль доступа к файлу ключей
    CipherList Список используемых алгоритмов шифрования

    Значения по умолчанию
    FILE = .\CFG\SDS.ZHTTP
    
    [HTTP]
    Active=0
    ReuseSocket=0
    DefaultPort=8880
    Bindings=
    CommandTimeout=30000
    VerboseLogging=0
    
    [SSL]
    Active=0
    DefaultPort=4430
    Bindings=
    Version=sslvTLSv1_2
    Mode=sslmServer
    RootCertFile=skyDSuite_CA.crt
    CertFile=skyDSuite_HTTP.crt
    KeyFile=skyDSuite_HTTP.key
    DHParamsFile=skyDSuite_HTTP.dhp
    Password=
    CipherList=
    

    Правила авторизации
    [ AUTH ]
    Active Флаг активности списка (1|0)
    Описание правила Формат описания – username:password[::IP[/IPmask]]

    Пример
    FILE = .\CFG\SDS.ZHTTP
    
    [AUTH]
    Active=1
    user:!pass::127.0.0.1/24
    user:!pass::192.168.0.1/24
    

    Список разрешённых действий
    [ COMMANDS ]
    Active Флаг активности списка (1|0)
    Описание действия  

    Чтобы закомментировать строку, достаточно в начале написать символ ; или //
    Выполняются незакомментированные действия, для которых "Флаг активности списка"=1

    Пример
    FILE = .\CFG\SDS.ZHTTP
    
    [COMMANDS]
    Active=1
    log
    logx
    logz
    screen
    sqgraph
    spgraph
    trgraph
    trtable
    :print
    :*print
    

    В этот список может входить любое из поддерживаемых skyDSuite действий (напр.: P1, P2, ...)
    Если описание действия начинается с символа ":" (напр. :print), то сравниваться будут ядровые части описаний (напр. у действия print?hello ядровая часть - это print).

    А также дополнительные команды:
    SERVER имеет формат: {имя хоста}:[порт] (напр. 127.0.0.1:8880)

    Графики скоростей ← [COMMANDS].spgraph
    http://SERVER/spgraph.jpg.htm?index=0&histogram=1&dots=0&area=1&tail=0 - {Sky} Input
    http://SERVER/spgraph.jpg.htm?index=1&histogram=1&dots=0&area=1&tail=0 - {Sky} Output
    http://SERVER/spgraph.jpg.htm?index=2&histogram=1&dots=0&area=1&tail=0 - {Gnd} Input
    http://SERVER/spgraph.jpg.htm?index=3&histogram=1&dots=0&area=1&tail=0 - {Gnd} Output
    http://SERVER/spgraph.jpg.htm?index=4&histogram=1&dots=0&area=1&tail=0 - {Gnd} Input + Output
    http://SERVER/spgraph.jpg.htm?index=5&histogram=1&dots=0&area=1&tail=0 - {Sky/Gnd} «Per Day» Ratio
    http://SERVER/spgraph.jpg.htm?index=6&histogram=1&dots=0&area=1&tail=0 - {Sky/Gnd} «Per Month» Ratio

    Графики данных DVB карты ← [COMMANDS].sqgraph
    http://SERVER/sqgraph.jpg.htm?index=0&histogram=1&dots=0&area=1&tail=0 - Signal Quality
    http://SERVER/sqgraph.jpg.htm?index=1&histogram=1&dots=0&area=1&tail=0 - Signal Strength
    http://SERVER/sqgraph.jpg.htm?index=2&histogram=1&dots=0&area=1&tail=0 - Signal To Noise Ratio (SNR)
    http://SERVER/sqgraph.jpg.htm?index=3&histogram=1&dots=0&area=1&tail=0 - Bit Error Rate (BER)

    Статистика :: Графики ← [COMMANDS].trgraph
    http://SERVER/trgraph.jpg.htm?interval=2&index=0&histogram=1&dots=0&area=1&cx=512&cy=288 - {Sky} Input
    http://SERVER/trgraph.jpg.htm?interval=2&index=1&histogram=1&dots=0&area=1&cx=512&cy=288 - {Sky} Output
    http://SERVER/trgraph.jpg.htm?interval=2&index=2&histogram=1&dots=0&area=1&cx=512&cy=288 - {Gnd} Input
    http://SERVER/trgraph.jpg.htm?interval=2&index=3&histogram=1&dots=0&area=1&cx=512&cy=288 - {Gnd} Output
    http://SERVER/trgraph.jpg.htm?interval=2&index=4&histogram=1&dots=0&area=1&cx=512&cy=288 - {Vpn} Input
    http://SERVER/trgraph.jpg.htm?interval=2&index=5&histogram=1&dots=0&area=1&cx=512&cy=288 - {Vpn} Output
    http://SERVER/trgraph.jpg.htm?interval=2&index=6&histogram=1&dots=0&area=1&cx=512&cy=288 - {Info} Input
    http://SERVER/trgraph.jpg.htm?interval=2&index=7&histogram=1&dots=0&area=1&cx=512&cy=288 - {Info} Output

    Статистика :: Таблицы (HTML–формат) ← [COMMANDS].trtable
    http://SERVER/trtable.htm?interval=0&units=2&rcount=500 - Интервал 10 минут
    http://SERVER/trtable.htm?interval=1&units=2&rcount=500 - Интервал 1 час
    http://SERVER/trtable.htm?interval=2&units=2&rcount=500 - Интервал 1 день
    http://SERVER/trtable.htm?interval=3&units=2&rcount=500 - Интервал 1 месяц
    http://SERVER/trtable.htm?interval=4&units=2&rcount=500 - Интервал 1 год
    http://SERVER/trtable.htm?interval=-1&units=2&rcount=500 - «Короткий» счётчик
    http://SERVER/trtable.htm?interval=-2&units=2&rcount=500 - «Длинный» счётчик

    Статистика :: Таблицы (графический формат) ← [COMMANDS].trtable
    http://SERVER/trtable.jpg.htm?interval=0&units=2&rcount=500 - Интервал 10 минут
    http://SERVER/trtable.jpg.htm?interval=1&units=2&rcount=500 - Интервал 1 час
    http://SERVER/trtable.jpg.htm?interval=2&units=2&rcount=500 - Интервал 1 день
    http://SERVER/trtable.jpg.htm?interval=3&units=2&rcount=500 - Интервал 1 месяц
    http://SERVER/trtable.jpg.htm?interval=4&units=2&rcount=500 - Интервал 1 год
    http://SERVER/trtable.jpg.htm?interval=-1&units=2&rcount=500 - «Короткий» счётчик
    http://SERVER/trtable.jpg.htm?interval=-2&units=2&rcount=500 - «Длинный» счётчик

    Разное ← [COMMANDS].log[x|z]
    http://SERVER/log.htm?rcount=1000 - Окно диагностики LOG
    http://SERVER/logx.htm?rcount=1000 - Окно диагностики LOGX
    http://SERVER/logz.htm?rcount=1000 - Окно диагностики LOGZ

    Разное ← [COMMANDS].screen
    http://SERVER/screen.jpg.htm - Снимок экрана

    В качестве расширения графических файлов можно указывать bmp, png, jpg, gif, emf, wmf (напр. http://SERVER/screen.bmp.htm)

    Учёт размера заголовка IP-пакета для графиков скоростей (spgraph) и статистики трафика (trgraph) (IPHeader)
    http://SERVER/spgraph.jpg.htm?index=0&histogram=1&area=1&tail=0&ipheader=1 (учитываем заголовок IP-пакета)
    http://SERVER/sqgraph.jpg.htm?index=0&histogram=1&dots=0&area=1&tail=0&ipheader=0 (не учитываем заголовок IP-пакета)

    Если необходимо получить график заданного цвета, то список параметров должен содержать color=0xRRGGBB или color=наименование_цвета (xGraph.Color)
    http://SERVER/spgraph.jpg.htm?index=0&histogram=1&area=1&tail=0&color=0xFF0000 (график красного цвета)
    http://SERVER/spgraph.jpg.htm?index=0&histogram=1&area=1&tail=0&color=0x00FF00 (график зелёного цвета)
    http://SERVER/spgraph.jpg.htm?index=0&histogram=1&area=1&tail=0&color=0x0000FF (график синего цвета)
    http://SERVER/spgraph.jpg.htm?index=0&histogram=1&area=1&tail=0&color=Khaki (график цвета хаки)

    Настройке графиков AreaColor соответствует параметр запроса acolor
    http://SERVER/spgraph.jpg.htm?index=0&histogram=1&area=1&tail=0&color=0x00FF00&acolor=0x0000FF

    Ширина полей левой и правой осей графиков регулируется параметром textcx (xGraph.TextCX)
    http://SERVER/spgraph.jpg.htm?index=0&histogram=1&area=1&tail=0&textcx=-8
    http://SERVER/spgraph.jpg.htm?index=0&histogram=1&area=1&tail=0&textcx=32

    Настройкам графиков CYSpace и CXSpace соответствуют параметры запроса cyspace и cxspace
    http://SERVER/spgraph.jpg.htm?index=0&histogram=1&area=1&tail=0&cyspace=50

    Для графиков скоростей (spgraph) и данных DVB карты (sqgraph) можно указать параметры сглаживания (параметр average - количество точек, по которых происходит сглаживание) (xGraph.Average)
    http://SERVER/spgraph.jpg.htm?index=0&histogram=1&area=1&tail=0&average=5 (сглаживаем по 5-и точкам)
    http://SERVER/sqgraph.jpg.htm?index=0&histogram=1&dots=0&area=1&tail=0&average=20 (сглаживаем по 20-и точкам)

    Для графиков скоростей (spgraph) и данных DVB карты (sqgraph) можно указать параметры усреднения (параметр interval - величина интервала усреднения в минутах) (xGraph.Interval)
    http://SERVER/spgraph.jpg.htm?index=0&histogram=1&area=1&tail=0&interval=5 (усредняем по 5-и минутному интервалу)
    http://SERVER/sqgraph.jpg.htm?index=0&histogram=1&dots=0&area=1&tail=0&interval=5 (усредняем по 5-и минутному интервалу)

    Если необходимо нарисовать на графике линию заданного уровня, то используем параметр cir (xGraph.CIR)
    Данная возможность распространяется на графики скоростей (spgraph) и графики данных DVB карты (sqgraph)
    http://SERVER/spgraph.jpg.htm?index=0&histogram=1&dots=0&area=1&tail=0&cir=200,Red (рисуем линию на уровне 200 кбит/с, красный цвет)
    http://SERVER/sqgraph.jpg.htm?index=0&histogram=1&dots=0&area=1&tail=0&cir=50,Blue,1 (рисуем линию на уровне 50, синий цвет, толстая линия)

    Для таблиц статистики (trtable) возможно указать список выводимых полей (параметр fields)
    http://SERVER/trtable.htm?interval=0&units=2&rcount=500&fields=SI,SO,GI,GO

    Если необходимо получить график за определённый промежуток времени, то используем параметры tail, xmin, xmax
    http://SERVER/spgraph.jpg.htm?index=0&histogram=1&area=1&tail=01:30:00 (статистика за последние полтора часа)
    http://SERVER/spgraph.jpg.htm?index=0&histogram=1&area=1&tail=0&xmin=-01:30:00 (статистика за последние полтора часа)
    http://SERVER/spgraph.jpg.htm?index=0&histogram=1&area=1&tail=0&xmin=12:00:00&xmax=15:00:00 (статистика за период [12:00:00-15:00:00])
    http://SERVER/trgraph.jpg.htm?interval=0&index=0&histogram=1&dots=0&area=1&xmin=-72 (данные за последние трое суток)

    Для таблиц и графиков статистики трафика (trtable, trgraph) в качестве интервала (параметр interval) можно указывать кратные 10-и минутам величины.
    http://SERVER/trtable.htm?interval=20&units=2&rcount=500 (интервал 20 минут)
    http://SERVER/trgraph.jpg.htm?interval=30&index=0&histogram=1&dots=0&area=1 (интервал 30 минут)

    Для таблиц и графиков статистики трафика (trtable, trgraph) можно указывать день, с которого начинается месяц (параметр startday).
    http://SERVER/trtable.htm?interval=2&startday=10&units=2&rcount=500 (месяц начинается 10-го числа)
    http://SERVER/trgraph.jpg.htm?interval=2&startday=10&index=0&histogram=1&dots=0&area=1 (месяц начинается 10-го числа)

    Для таблиц и графиков статистики трафика (trtable, trgraph) возможно указать фильтр по приоритету (параметр priority)
    http://SERVER/trtable.htm?interval=0&units=2&rcount=500&priority=1
    http://SERVER/trgraph.jpg.htm?interval=0&index=0&histogram=1&dots=0&area=1&priority=2

    Можно указать размер картинки (параметры: cx - ширина, cy - высота)
    http://SERVER/spgraph.jpg.htm?index=0&histogram=1&area=1&tail=0&cx=1024&cy=576

    Графики скоростей ← spgraph, sqgraph, trgraph
    Минимальный размер равен размеру 100×100.
    Максимальный размер равен 1600×800.

    Снимок экрана ← screen
    Размер картинки по умолчанию равен размеру экрана.
    Минимальный размер равен размеру 100×100.
    Максимальный размер равен размеру экрана.

    Для запуска skyDSuite-действия запрос должен иметь вид http://SERVER/action.sds?{описание действия} (напр. http://SERVER/action.sds?P1)
    Часть символов необходимо будет писать в формате %{шестнадцатеричное представление символа}
    Например
    Запрос для действия #SDS (перезапуск skyDSuite) - http://SERVER/action.sds?%23SDS
    Запрос для действия +SCH (включение планировщика) - http://SERVER/action.sds?%2BSCH

    Для работы SSL/TLS необходимо положить рядом со skyDSuite или в системную директорию две библиотеки (ssleay32.dll и libeay32.dll). Их можно найти здесь http://indy.fulgan.com/SSL

    Сертификаты HTTP сервера лежат в директории .\SRV\HTTP\SSL

    Для установки корневого сертификата можно выполнить запрос http://SERVER/ca

    За быстрое включение/отключение сервера отвечает пункт меню Preferences → HTTP Server




    WebDAV сервер
    Наверх

    Параметры WebDAV сервера устанавливаются в файле .\CFG\SDS.ZWDAV
    Рабочие файлы WebDAV сервера лежат в директории .\SRV\WebDAV\WWW\PUB

    Общие настройки
    [ HTTP ]
    Active Флаг активности сервера (1|0)
    ReuseSocket Разрешение повторного использования порта (1|0)
    DefaultPort Порт по умолчанию
    Bindings Список адресов в формате IP[:PORT], разделённых запятыми, с которыми будет связан сервер
    CommandTimeout Максимальное время ожидания выполнения команд (в миллисекундах)
    VerboseLogging Расширенное протоколирование (1|0)

    Настройки безопасного соединения
    [ SSL ]
    Active Флаг активности сервера (1|0)
    DefaultPort Порт по умолчанию
    Bindings Список адресов в формате IP[:PORT], разделённых запятыми, с которыми будет связан сервер
    Version Версия SSL
  • sslvSSLv2
  • sslvSSLv23
  • sslvSSLv3
  • sslvTLSv1
  • sslvTLSv1_1
  • sslvTLSv1_2 (значение по умолчанию)
  • Mode Режим работы
  • sslmUnassigned
  • sslmClient
  • sslmServer (значение по умолчанию)
  • sslmBoth
  • RootCertFile Корневой сертификат
    CertFile Сертификат
    KeyFile Файл ключей
    DHParamsFile DH параметры
    Password Пароль доступа к файлу ключей
    CipherList Список используемых алгоритмов шифрования

    Значения по умолчанию
    FILE = .\CFG\SDS.ZWDAV
    
    [HTTP]
    Active=0
    ReuseSocket=0
    DefaultPort=8882
    Bindings=
    CommandTimeout=30000
    VerboseLogging=0
    
    [SSL]
    Active=0
    DefaultPort=4432
    Bindings=
    Version=sslvTLSv1_2
    Mode=sslmServer
    RootCertFile=skyDSuite_CA.crt
    CertFile=skyDSuite_WebDAV.crt
    KeyFile=skyDSuite_WebDAV.key
    DHParamsFile=skyDSuite_WebDAV.dhp
    Password=
    CipherList=
    

    Правила авторизации
    [ AUTH ]
    Active Флаг активности списка (1|0)
    Описание правила Формат описания – username:password[::IP[/IPmask]]

    Пример
    FILE = .\CFG\SDS.ZWDAV
    
    [AUTH]
    Active=1
    user:!pass::127.0.0.1/24
    user:!pass::192.168.0.1/24
    

    Для работы SSL/TLS необходимо положить рядом со skyDSuite или в системную директорию две библиотеки (ssleay32.dll и libeay32.dll). Их можно найти здесь http://indy.fulgan.com/SSL

    Сертификаты WebDAV сервера лежат в директории .\SRV\WebDAV\SSL

    Для установки корневого сертификата можно выполнить запрос http://SERVER/ca

    SERVER имеет формат: {имя хоста}:[порт] (напр. 127.0.0.1:8882)

    За быстрое включение/отключение сервера отвечает пункт меню Preferences → WebDAV Server




    Telnet сервер
    Наверх

    Существует возможность удалённого управления skyDSuite с помощью telnet-клиента.
    Тесты проводились со встроенным в систему telnet-клиентом и c putty.

    Параметры telnet сервера устанавливаются в файле .\CFG\SDS.ZTEL

    Общие настройки
    [ TELNET ]
    Active Флаг активности сервера (1|0)
    ReuseSocket Разрешение повторного использования порта (1|0)
    DefaultPort Порт по умолчанию
    Bindings Список адресов в формате IP[:PORT], разделённых запятыми, с которыми будет связан сервер
    LoginAttempts Максимальное количество попыток авторизоваться
    MaxConnections Максимальное число клиентов
    CommandTimeout Максимальное время ожидания выполнения команд (в миллисекундах)
    Encoding Кодировка текста
    VerboseLogging Расширенное протоколирование (1|0)

    Значения по умолчанию
    FILE = .\CFG\SDS.ZTEL
    
    [TELNET]
    Active=0
    ReuseSocket=0
    DefaultPort=23
    Bindings=
    LoginAttempts=3
    MaxConnections=1
    CommandTimeout=30000
    Encoding=OSDefault
    VerboseLogging=0
    

    Правила авторизации
    [ AUTH ]
    Active Флаг активности списка (1|0)
    Описание правила Формат описания – username:password[::IP[/IPmask]]

    Пример
    FILE = .\CFG\SDS.ZTEL
    
    [AUTH]
    Active=1
    user:!pass::127.0.0.1/24
    user:!pass::192.168.0.1/24
    

    Список разрешённых действий
    [ COMMANDS ]
    Active Флаг активности списка (1|0)
    Описание действия  

    Чтобы закомментировать строку, достаточно в начале написать символ ; или //
    Выполняются незакомментированные действия, для которых "Флаг активности списка"=1

    Пример
    FILE = .\CFG\SDS.ZTEL
    
    [COMMANDS]
    Active=1
    log
    logx
    logz
    traffic
    P1
    P2
    

    В этот список может входить любое из поддерживаемых skyDSuite действий (напр.: P1, P2, ...)
    Если описание действия начинается с символа ":" (напр. :print), то сравниваться будут ядровые части описаний (напр. у действия print?hello ядровая часть - это print).

    А также дополнительные команды:
    log, logx, logz - вывод на экран диагностики
    traffic - вывод на экран статистики трафика

    За быстрое включение/отключение сервера отвечает пункт меню Preferences → Telnet Server




    HTTP прокси-сервер
    Наверх

    Параметры HTTP прокси-сервера устанавливаются в файле .\CFG\SDS.ZHTTPP

    Общие настройки
    [ HTTP ]
    Active Флаг активности сервера (1|0)
    ReuseSocket Разрешение повторного использования порта (1|0)
    DefaultPort Порт по умолчанию
    Bindings Список адресов в формате IP[:PORT], разделённых запятыми, с которыми будет связан сервер
    MaxConnections Максимальное число клиентов
    VerboseLogging Расширенное протоколирование (1|0)

    Значения по умолчанию
    FILE = .\CFG\SDS.ZHTTPP
    
    [HTTP]
    Active=0
    ReuseSocket=0
    DefaultPort=8080
    Bindings=
    MaxConnections=0
    VerboseLogging=0
    

    За быстрое включение/отключение сервера отвечает пункт меню Preferences → HTTP Proxy Server




    Socks сервер
    Наверх

    Параметры Socks сервера устанавливаются в файле .\CFG\SDS.ZSOCKS

    Общие настройки
    [ SOCKS ]
    Active Флаг активности сервера (1|0)
    ReuseSocket Разрешение повторного использования порта (1|0)
    DefaultPort Порт по умолчанию
    Bindings Список адресов в формате IP[:PORT], разделённых запятыми, с которыми будет связан сервер
    MaxConnections Максимальное число клиентов
    VerboseLogging Расширенное протоколирование (1|0)

    Значения по умолчанию
    FILE = .\CFG\SDS.ZSOCKS
    
    [SOCKS]
    Active=0
    ReuseSocket=0
    DefaultPort=1080
    Bindings=
    MaxConnections=0
    VerboseLogging=0
    

    За быстрое включение/отключение сервера отвечает пункт меню Preferences → Socks Server




    Правила авторизации на серверах
    Наверх

    Общие правила авторизации на серверах действуют для:
    HTTP сервер - файл настроек .\CFG\SDS.ZHTTP
    WebDAV сервер - файл настроек .\CFG\SDS.ZWDAV
    Telnet сервер - файл настроек .\CFG\SDS.ZTEL

    Правила авторизации описываются в секции [AUTH] соответствующего файла настроек.

    [ AUTH ]
    Active Флаг активности списка (1|0)
    Описание правила Формат описания – username:password[::IP[/IPmask][::UserDir]]

    Для разрешения доступа всем пользователям нужно установить [AUTH].Active=0
    Чтобы закомментировать строку, достаточно в начале написать символ ; или //

    Пароль может храниться в зашифрованном виде.
    Для этого перед значением пароля ставим знак "?" (user:?pass). Пароль будет зашифрован при запуске программы.
    Если перед значением пароля стоит знак "!" (user:!pass), тогда пароль будет храниться в открытом виде.
    Если перед значением IP стоит знак "-", тогда вход с этого IP будет запрещён.

    user:!pass - Пользователю разрешён вход со всех адресов
    user:!pass::127.0.0.1 - Пользователю разрешён вход с адреса 127.0.0.1
    *:*::127.0.0.1 - Всем пользователям разрешён вход с адреса 127.0.0.1
    user:!pass::127.0.0.1::Private - Пользователю разрешён вход с адреса 127.0.0.1. Рабочая директория .\WWW\Private
    user:!pass::*::Common - Пользователю разрешён вход со всех адресов. Рабочая директория .\WWW\Common
    user:!pass::-192.168.0.255 - Пользователю запрещён вход с адреса 192.168.0.255

    Если параметр UserDir не определён, то рабочая директория .\WWW\PUB

    Если сработало какое-либо правило из списка, то проверка следующих за ним правил прерывается.

    Пример
    FILE = .\CFG\SDS.Z***
    
    [AUTH]
    Active=1
    *:*::127.0.0.1/24
    user:!pass::192.168.0.1/24
    





    Работа в наземном режиме
    Наверх

    Сильно упрощённый вариант работы, когда отслеживается состояние только наземного канала.
    За быстрое включение/отключение отвечает пункт меню Preferences → Gmode




    Цепочка наземных интерфейсов
    Наверх

    Существует возможность автоматически менять наземный интерфейс при возникновении проблем с текущим наземным интерфейсом.

    Параметры устанавливаются в {SDS.ZCFG} → [GCHAIN] или в окне настроек на странице Chains

    Active Флаг активности (1|0)
    Chain Список интерфейсов, разделённых запятой
    RestartFaults Количество неудачных рестартов, после которых запускаем механизм автоматического изменения наземного интерфейса.
    В качестве наземного интерфейса выбирается следующий интерфейс из списка Chain

    За быстрое включение/отключение цепочки отвечает пункт меню Preferences → Ground Chain




    Цепочка vpn-интерфейсов
    Наверх

    Существует возможность автоматически менять vpn-интерфейс при возникновении проблем с текущим vpn-интерфейсом.

    Параметры устанавливаются в {SDS.ZCFG} → [VCHAIN] или в окне настроек на странице Chains

    Active Флаг активности (1|0)
    Chain Список интерфейсов, разделённых запятой
    RestartFaults Количество неудачных рестартов, после которых запускаем механизм автоматического изменения vpn-интерфейса.
    В качестве vpn-интерфейса выбирается следующий интерфейс из списка Chain

    За быстрое включение/отключение цепочки отвечает пункт меню Preferences → VPN Chain




    Статистика трафика
    Наверх

    Настройки таблиц и графиков статистики лежат в файле .\CFG\SDS.ZGRT

    Просмотр статистики трафика доступен через
    Главное меню → View → Traffic Statistics... (CTRL+ALT+F3)

    Для хранения данных используем локальную базу данных в XML формате.
    База данных лежит в файле .\STATs\SDS_ZTST.XML
    Данные записываются в базу с интервалом в 10 минут.

    Описание полей
    DATE DateTime Время записи данных в базу
    PRIO I4
    Приоритет skyDSL
    Записи с PRIO=0 содержат общую статистику (сумма по всем возможным приоритетам).
    Если отключена опция "skyDSL Control" или включена опция "Gmode", то поле PRIO=0
    SI I8 Входящий трафик по спутниковому интерфейсу
    SO I8 Исходящий трафик по спутниковому интерфейсу
    GI I8 Входящий трафик по наземному интерфейсу
    GO I8 Исходящий трафик по наземному интерфейсу
    VI I8 Входящий трафик по vpn интерфейсу
    VO I8 Исходящий трафик по vpn интерфейсу
    II I8 Входящий трафик по информационному интерфейсу
    IO I8 Исходящий трафик по информационному интерфейсу
    Primary Key: DATE, PRIO

    Таблицы счётчиков трафика ("длинных" и "коротких") имеют такое же устройство.
    Поле PRIO в этих таблицах не используется (PRIO=0).
    "Длинный" счётчик - .\STATs\SDS_ZTLC.XML
    "Короткий" счётчик - .\STATs\SDS_ZTSC.XML

    Общие настройки
    [ TrTable ]
    Aggregate
  • > 0 - запись с суммарными значениями выводится в конце таблицы
  • ≤ 0 - запись с суммарными значениями выводится в начале таблицы
  • Таблица статистики трафика
    [ TrSTable ]
    Настройки → страница "Traffic Table"
    Caption Заголовок таблицы
    Aggregate Вывод дополнительной записи с суммой по всем записям (DATE=Σ)

    Таблица "коротких" счётчиков
    [ TrSCTable ]
    Настройки → страница "Traffic Table"
    Caption Заголовок таблицы
    Aggregate Вывод дополнительной записи с суммой по всем записям (DATE=Σ)

    Таблица "длинных" счётчиков
    [ TrLCTable ]
    Настройки → страница "Traffic Table"
    Caption Заголовок таблицы
    Aggregate Вывод дополнительной записи с суммой по всем записям (DATE=Σ)

    Настройки информационной панели
    [ TrTable:Head ]
    Настройки → страница "Traffic Table"
    FontFace Имя шрифта
    FontCharset Набор символов
    FontSize Размер шрифта
    FontColor Цвет шрифта
    FontBold
    FontItalic
    FontUnderline
    FontStrikeOut
    Стиль шрифта
    DateFormat Строка, форматирующая дату получения таблицы
    SRecCount Строка, заменяющая "Record count:"
    Настройки действительны для таблиц, полученных через веб-интерфейс

    Настройки отображения таблиц
    [ TrTable:Body ]
    Настройки → страница "Traffic Table"
    FontFace Имя шрифта
    FontCharset Набор символов
    FontSize Размер шрифта
    FontColor Цвет шрифта
    FontBold
    FontItalic
    FontUnderline
    FontStrikeOut
    Стиль шрифта
    IndexColor Цвет фона ячеек с именами полей и значениями индексных полей (DATE, PRIO)
    HTTable Гипертекстовое описание таблицы
    HTStyle_TD_H Гипертекстовый стиль информационной панели
    HTStyle_TD_F Гипертекстовый стиль индексных полей (DATE, PRIO)
    HTStyle_TD_C Гипертекстовый стиль ячеек таблицы
    Настройки действительны для таблиц, полученных через веб-интерфейс

    Для каждой из таблиц создаётся резервная копия (.\STATs\*.XXL), которая может быть использована для восстановления данных.




    Графики
    Наверх

    Настройки графиков лежат в файле .\CFG\SDS.ZGRT

    Общие настройки
    Настройки → страница "Speed Graph" ("DVB Graph", "Traffic Graph")
    AutoRefresh Автоматическое обновление данных
    IPHeader Учёт размера заголовка IP-пакета ("Speed Graph", "Traffic Graph")
    Histogram График в виде гистограммы
    Dots Отрисовка точек, по которым построен график
    Tail.Active Флаг использования параметра Tail.Interval
    Tail.Interval Временной интервал, за который рисуется график
    Например:
  • 2 - рисуем график за последние 2 часа
  • 01:30:00 - рисуем график за последние полтора часа
  • 72 - рисуем график за последние трое суток
  • FrameColor Цвет рамки вокруг графика
    InnerColor Цвет внутренней области графика

    Общие настройки графиков
    Настройки → страница "Speed Graph" ("DVB Graph", "Traffic Graph")
    Caption Заголовок графика
    Visible Флаг видимости графика
    Color Цвет графика
    Area Флаг заполнения области под графиком
    AreaColor Цвет области под графиком
    TextCX Ширина поля оси Y
    Если TextCX = 0, то ширина поля вычисляется автоматически.
    Если TextCX < 0, то к автоматически вычисленной ширине прибавляется ABS(TextCX)
    CYSpace Минимальное расстояние между числами оси Y
    CXSpace Минимальное расстояние между числами оси X
    YminFixed Флаг фиксирования нижней границы оси Y
    FixedYmin Фиксированная нижняя граница оси Y
    YmaxFixed Флаг фиксирования верхней границы оси Y
    FixedYmax Фиксированная верхняя граница оси Y
    YminFloor При вычислении минимального значения, числа ≤ YminFloor не учитываются
    Average Флаг сглаживания
    AverPoints Количество точек сглаживания
    Interval Флаг усреднения
    Intervalue Величина интервала усреднения в минутах
    CIR Отрисовка линии фиксированного уровня
    CIRValue Величина уровня
    CIRColor Цвет линии
    CIRBold Флаг отрисовки толстой линии
    BIR не используется
    BIRValue не используется
    BIRColor не используется
    BIRBold не используется

    Настройки отображения заголовка графика
    [ GraphCaption ]
    Настройки → страница "Graph" → Caption
    Visible Флаг видимости
    Inside Расположение относительно графика
    Alignment Выравнивание
  • 0 - Слева
  • 1 - Справа
  • 2 - По центру
  • FontFace Имя шрифта
    FontCharset Набор символов
    FontSize Размер шрифта
    FontColor Цвет шрифта
    FontBold
    FontItalic
    FontUnderline
    FontStrikeOut
    Стиль шрифта
    XFrame Отступы слева (справа) от границы
    YFrame Отступы сверху (снизу) от границы

    Настройки отображения единиц измерения
    [ GraphUnits ]
    Настройки → страница "Graph" → Units
    Visible Флаг видимости
    Inside Расположение относительно графика
    FontFace Имя шрифта
    FontCharset Набор символов
    FontSize Размер шрифта
    FontColor Цвет шрифта
    FontBold
    FontItalic
    FontUnderline
    FontStrikeOut
    Стиль шрифта
    XFrame Отступы слева (справа) от границы
    YFrame Отступы сверху (снизу) от границы
    SKBS Строка, заменяющая "KB/s"
    SKBITS Строка, заменяющая "KBit/s"

    Настройки информационной панели
    [ GraphStatusBar ]
    Настройки → страница "Graph" → Status Bar
    Visible Флаг видимости
    FontFace Имя шрифта
    FontCharset Набор символов
    FontSize Размер шрифта
    FontColor Цвет шрифта
    FontBold
    FontItalic
    FontUnderline
    FontStrikeOut
    Стиль шрифта
    XFrame Отступы слева от границы
    YFrame Отступы сверху от границы
    DateFormat Строка, форматирующая дату получения графика
    DaysFormat Строка, форматирующая количество дней
    TimeFormat Строка, форматирующая время
    SPeriod Строка, заменяющая "Period:"
    Smin Строка, заменяющая "MIN"
    Smax Строка, заменяющая "MAX"
    SAverage Строка, заменяющая "AVG"
    SLast Строка, заменяющая "LAST"
    Date Флаг вывода даты получения графика
    Period Флаг вывода периода времени графика
    Y_min Флаг вывода минимального значения
    Y_max Флаг вывода максимального значения
    Y_Average Флаг вывода среднего значения
    Y_Last Флаг вывода последнего значения
    Y_Delta Флаг вывода изменения относительно предпоследнего значения
    Панель видна при сохранении графика и при получении графика через
    веб-интерфейс

    Графики скоростей
    Главное меню → View → Speed Graph... (F3)
    Левая ось - значение скорости в килобайтах/сек (KB/s), правая ось - в килобитах/сек (kbit/s)

    Графики данных DVB карты (Signal Quality, Signal Strength, ...)
    Главное меню → View → DVB Graph...
    Поддерживается работа с картами на B2C2 чипе (skyDSuiteDVB.DLL).

    Графики статистики
    Главное меню → View → Traffic Statistics... (CTRL+ALT+F3). Закладка "График".
    На правой оси графика рисуется скорость в kbit/s

    Графики загруженности спутников (skyDSL)
    Главное меню → View → Sky Monitor... (CTRL+F3).
    В открывшемся окне выбираем параметры и жмём F5 (Обновить|Reload Image).
    Настройки спутников и тарифов задаются в файле .\CFG\SDS.ZSAT

    Пример
    FILE = .\CFG\SDS.ZSAT
    
    [satellite]
    Eutelsat W3A=W3A
    AtlanticBird 2 DVB-S2=ATLANTIC_BIRD_2_B5
    
    [fv]
    Classic-1=0|04
    Classic-2=1|e4
    Premium-1=1|15
    Premium-2=1|70
    Premium-3=1|80
    Professional-3=1|81
    FLAT PRO 192/384=0|37
    FLAT PRO 375/750=0|38
    FLAT PRO 750/1500=0|20
    FLAT PRO 1500/3000=0|21
    FLAT PRO 3000/6000=0|22
    FLAT PRO 6000/12000=0|23
    EASY 750/1500=0|42
    EASY 1500/3000=0|39
    EASY 3000/6000=0|32
    EASY 6000/12000=0|26
    EASY 12000/24000=0|33
    SOHO 750/1500=0|43
    SOHO 1500/3000=0|44
    SOHO 3000/6000=0|45
    SOHO 6000/12000=0|46
    SOHO 12000/24000=0|47
    Enterprise 750/1500=0|51
    Enterprise 1500/3000=0|52
    Enterprise 3000/6000=0|53
    Enterprise 6000/12000=0|54
    Enterprise 12000/24000=0|55
    
    [priority]
    Priority 1=1
    Priority 2=2
    Priority 3=3
    Priority 4=4
    Priority 5=5
    Priority 6=6
    
    [speed]
    Low Speed=low
    High Speed=high
    
    [period]
    12 Hours=12h
    24 Hours=24h
    7 Days=7d
    





    USSD & SMS
    Наверх

    Вызов действий для работы с USSD-запросами и SMS доступен в отдельном окне.
    {Главное меню}→ {View}→ {USSD & SMS}

    Используются действия из директории .\CFG\UDO\AT
    *AT\USSD отправка USSD-запроса
    *AT\USSD.OFF закрытие USSD-сессии
    *AT\SMS.READ чтение SMS
    *AT\SMS.DROP удаление SMS
    *AT\SMS.SEND отправка SMS





    Привязка потоков к процессорам
    Наверх

    Существует возможность указать, на каких процессорах могут выполняться потоки определённого типа.

    Окно настроек → страница "Thread Affinity"

    Control Thread - поток, отслеживающий состояние системы
    Action Thread - поток, создаваемый для выполнения действий

    Active флаг активности установок
    Ideal Processor номер предпочтительного процессора
    Affinity Mask битовая маска процессоров, на которых разрешена работа потока





    События.
    Создание/удаление процесса

    Наверх

    Для вывода сообщений о создании/удалении процессов в окно диагностики (LOGZ), должна быть включена опция {SDS.ZCFG} → [OUTPUT] → Events.Process
    В окне настроек эта опция находится на странице "Output" в группе "Events"

    Правила обработки событий описываются в файле .\CFG\SDS.ZAPPs
    Пример файла SDS.ZAPPs

    FILE = .\CFG\SDS.ZAPPs 
    
    [APPs]
    Active=1
    
    [BannedAPPs]
    Active=0
    %ProgramFiles%\BAPP1.exe
    %ProgramFiles%\BAPP2.exe
    
    [ActionAPPs]
    Active=1
    OnCreateActive=1
    OnCreateActions=* APP.OnCreate
    OnDeleteActive=1
    OnDeleteActions=* APP.OnDelete
    %ProgramFiles%\AAPP1.exe
    %ProgramFiles%\AAPP2.exe
    

    В секции [BannedAPPs] лежит список программ, которые закрываются сразу же после создания.

    В секции [ActionAPPs] лежит список программ, при создании/удалении которых выполняются указанные действия.
    Действие OnCreateActions запускается, если создан хотя бы один процесс из списка.
    Действие OnDeleteActions запускается, если удалены все процессы из списка.




    Пример.
    Работа в связке Спутник + GPRS + VPN

    Наверх

    1 - в качестве спутникового интерфейса выбираем DVB карту
    2 - в качестве наземного интерфейса выбираем GPRS соединение
    3 - в качестве Vpn интерфейса выбираем Vpn-соединение с сервером спутникового провайдера
    4 - отмечаем галочками в главном окне наземный и Vpn интерфейсы

    Настройки
    1 - страница "Main" : выключаем "skyDSL Control"
    2 - страница "Restart (A)" : включаем "V Activity"
    3 - остальные настройки по умолчанию

    Включаем контроль ссылок (TCP mode)
    Файл .\CFG\SDS.ZURLs имеет вид

    FILE = .\CFG\SDS.ZURLs 
    
    [URLs]
    Active=1
    TCPmode=1
    Separate=1
    google.com
    google.com
    google.com
    ;http://ya.ru/favicon.ico
    
    [IgnoreErrors]
    Active=0
    ;12002
    

    Не забываем включить "Auto Control"

    Из настроек Windows убираем автоматический дозвон при разрыве GPRS и Vpn соединений.
    Из настроек Vpn соединения убираем предварительный дозвон по GPRS соединению.
    Со всем этим должен справиться skyDSuite.




    Пример.
    Работа только с GPRS соединением

    Наверх

    1 - в качестве наземного интерфейса выбираем GPRS соединение
    2 - отмечаем галочками в главном окне наземный интерфейс

    Настройки
    1 - страница "Main" : выключаем "skyDSL Control"
    2 - страница "Main" : включаем "Gmode" (наземный режим)
    3 - остальные настройки по умолчанию

    Включаем контроль ссылок (TCP mode)
    Файл .\CFG\SDS.ZURLs имеет вид

    FILE = .\CFG\SDS.ZURLs 
    
    [URLs]
    Active=1
    TCPmode=1
    Separate=1
    google.com
    google.com
    google.com
    ;http://ya.ru/favicon.ico
    
    [IgnoreErrors]
    Active=0
    ;12002
    

    Не забываем включить "Auto Control"

    Из настроек Windows убираем автоматический дозвон при разрыве GPRS соединения.
    Со всем этим должен справиться skyDSuite.




    Пример.
    Изменение speed_in у глобакса в зависимости от времени

    Наверх

    Пример скрипта
    FILE = .\CFG\UDO\GlobaX\SPEED.ZUDA 
    
    [ACTION]
    Comment=
    Active=1
    System=0
    Visible=0
    HotKey=
    Gmode=1
    Offline=1
    Confirm=1
    Separate=0
    Display=1
    Time=
    
    [ACTIONS]
    CFG.SET ? *GXC ? remote.speed_in=60000 Time: [00:00:00-10:00:00)
    CFG.SET ? *GXC ? remote.speed_in=30000 Time: [10:00:00-00:00:00)
    print ? speed_in = %CFG.GET,*GXC,remote,speed_in%
    #S/5/5 >> GLOBAX
    
    [SCHEDULER]
    Active=1
    00:00:00
    10:00:00
    

    Где GXC - это путь к файлу конфигурации глобакса (см. файл \CFG\SDS.ZVAR).




    Пример.
    Переключение между "наземными" интерфейсами по расписанию

    Наверх

    Предположим, что в системе установлены два RAS-соединения, качество работы которых зависит от времени суток. Днем без проблем работает, например, "MEFAFON", а ночью наоборот, "BEELINE". Вот нам и хочется автоматизировать переключение между ними, используя встроенный планировщик.

    Пример скрипта
    FILE = .\CFG\SDS.ZSCRIPT
    
    [RAS.MEGAFON]
    Active=1
    -CTRL                        // Выключаем автоматический контроль
    *DOWNLOAD.PAUSE              // Останавливаем закачки
    -SKY.ACTIVE                  // Выключаем интернет соединения
    Z?skyDSL.RAS>>MEGAFON        // Переопределяем RAS соединение в настройках skyDSL
    Z?SDS.GInterface>>MEGAFON    // Переопределяем "наземный" интерфейс в настройках skyDSuite
    
    [RAS.BEELINE]
    Active=1
    -CTRL                        // Выключаем автоматический контроль
    *DOWNLOAD.PAUSE              // Останавливаем закачки
    -SKY.ACTIVE                  // Выключаем интернет соединения
    Z?skyDSL.RAS>>BEELINE        // Переопределяем RAS соединение в настройках skyDSL
    Z?SDS.GInterface>>BEELINE    // Переопределяем "наземный" интерфейс в настройках skyDSuite
    
    [SCHEDULER]
    Active=1
    01:00:00=*RAS.BEELINE        // Переключаемся на "BEELINE"
    08:00:00=*RAS.MEFAFON        // Переключаемся на "MEFAFON"
    





    Пример.
    Периодическое изменение приоритета (skyDSL)

    Наверх

    Задача: с 2:00 до 8:00 хотим работать по первому приоритету, в остальное время - по второму. В качестве решения, каждые 10 минут будем устанавливать желаемый приоритет. Такое решение может оказаться единственным, если программа не может правильно определить текущий приоритет (например, при работе с ПО skyDSL v7.5).

    Пример скрипта
    FILE = .\CFG\SDS.ZSCRIPT
    
    [SCHEDULER]
    Active=1
    00:00:00/10/01:50:00=P2  // Второй приоритет (с 00:00:00 до 01:50:00 с периодом в 10 минут)
    02:00:00/10/07:50:00=P1  // Первый приоритет (с 02:00:00 до 07:50:00 с периодом в 10 минут)
    08:00:00/10/23:50:00=P2  // Второй приоритет (с 08:00:00 до 23:50:00 с периодом в 10 минут)
    

    При работе с ПО skyDSL v8.х текущий приоритет определяется правильно. Посему принудительное поддержание приоритета не нужно. Достаточно в нужное время устанавливать нужный приоритет и не забывать включать автоматический контроль. Программа сама будет поддерживать выбранный приоритет.

    Пример скрипта
    FILE = .\CFG\SDS.ZSCRIPT
    
    [SCHEDULER]
    Active=1
    00:00:00=P2
    00:00:00=+CTRL
    02:00:00=P1
    02:00:00=+CTRL
    08:00:00=P2
    08:00:00=+CTRL
    





    Пример.
    Поддержание нужного приоритета (skyDSL)

    Наверх

    Задача: по будням до 11 часов работаем по первому приоритету, после 11-и - по второму, в выходные работаем по первому приоритету круглые сутки.

    Установка приоритета
    FILE = .\CFG\UDO\Prio\SETA.ZUDA
    
    [ACTION]
    Active=1
    Time=
    
    [ACTIONS]
    P1/10 Time: [00:00:00-11:00:00)/1111100;*/0000011    // Устанавливаем первый приоритет
    P2/10 Time: [11:00:00-00:00:00)/1111100              // Устанавливаем второй приоритет
    
    [SCHEDULER]
    Active=1
    00:00:00
    11:00:00
    

    Мы хотим, чтобы приоритет устанавливался при запуске skyDSuite. Пишем
    FILE = .\CFG\SDS.ZSCRIPT
    
    [StartupACTIONS]
    Active=1
    *Prio\SETA
    





    История версий
    Наверх

    Легенда
    [+]  Добавлено
    []  Удалено
    [~]  Изменено
    [!]  Изменено
    [@]  Исправление ошибки


    Связаться с автором
    Наверх

    Автора можно найти здесь
    maa@maalchemist.ru
    maalchemist@yandex.ru
    maalchemist@gmail.com

    Сайт
    http://maalchemist.ru
    http://maalchemist.narod.ru