В этом разделе описаны параметры конфигурации jCjS

Настройки сервера

<!--
 ===============================================================
 ==============  Описание полей секции server  =================
 ===============================================================
 Обязательные поля (зарезервировано):
 port               порт WEB-сервера (если указать 0 то будет выделен ОС)
 Небязательные поля (зарезервировано):
 locale             Принудительное указание локали приложению
                    по умолчанию "ru-RU"
 language           Принудительное указание языка по умолчанию "ru"
                    "auto" - Автоматически
                    (обязательны файлы .qm в директории translations)
 termCodec          Кодек вывода в терминал - по умолчанию "System"
                    (актуально в некоторых "старых" ОС UNIX)

 logTrsh            Уровень выводимых сообщений (по умолчанию 2)
                    1 - info, 2 - debug, 3 - trace, 4 - trace+
                    (максимальный уровень - 8)
 logFilterSec       Фильтр, сколько времени не выводить повторные сообщения
 logMaxLenQueue     Величина накопительной емкости для вывода лога в WEB интерфейсе

 defFiles           Файлы, отдаваемые сервером по умолчанию

 compressor         протокол http(s): Включить сжатие содержимого
 ===============================================================
 ==============  Описание полей секции auth  ===================
 ===============================================================
 type               тип используемой авторизации
                     "jcjs" - стандартная авторизация
                     "os"   - с учетными записями ОС или Домена (только в Windows)
 baseAuthUserName   Логин  для базовой авторизации (если type = "jcjs")
 baseAuthUserPass   Пароль для базовой авторизации (если type = "jcjs")
 ===============================================================
 ===============================================================
 ==============  Описание полей секции ssl  ====================
 ===============================================================
 enabled            Разрешить шифрованное соединение https
 dir                директория, в которой лежит приватный ключ и сертификат
 privateKeyPass     пароль на закрытый ключ SSL шифрования
 ignoreSelfSignSsl  разрешать использование самоподписанного сертификата
 ===============================================================
 ==============  Описание полей секции folders  ================
 ===============================================================
 stat               Путь к каталогу со статичным контентом
 data               Путь к каталогу с данными, доступ к которым возможна из JS
 logs               Каталог для лог-файлов
 stuff              Путь к каталогу с приложениями jCjS
 inc                Список include каталогов для JS
                    (если скрипт не будет найден относительно <post defDirs/>
                    поиск будет продолжен по этим директориям)
                    По умолчанию ../stuff/include/ ../stat/js/
 ===============================================================
-->

    <server
            port             = "8080"
            logTrsh          = "3"
            logFilterSec     = "360"
            termCodec        = ""
            locale           = "ru-RU"
            language         = "ru"
            logMaxLenQueue   = "24"
            defFiles         = "index.html index.htm"
            compressor       = "true"
        >
        <auth
            type             = "jcjs"
            baseAuthUserName = ""
            baseAuthUserPass = ""
        />
        <ssl
            enabled          = "false"
            ignoreSelfSignSsl= "true"
            dir              = "../etc/ssl"
        >
            <!-- описание портов и привязанных к ним сертификатов                             -->
            <!--   если ssl.enabled  = false, то поддержки шифрования везде отключено         -->
            <!--   если cert.enabled = false, то поддержки шифрования на этом порту отключено -->
            <!--   если cert.cert_name  -  имя сертификата в каталоге cert.dir                -->
            <!--   если cert.port == server.port то эти настройки коснуться главного порта    -->
            <cert port             = "8080"
                  enabled          = "false"
                  dir              = "../etc/ssl"
                  cert_name        = "jcjs"
                  privateKeyPass   = ""
            />
            <cert port             = "8443"
                  enabled          = "false"
                  dir              = "../etc/ssl"
                  cert_name        = "localhost"
                  privateKeyPass   = ""
            />
        </ssl>
        <folders
            stat  = "../stat/"
            data  = "../data/"
            logs  = "../logs/"
            stuff = "../stuff/"
            inc   = "../stuff/include/ ../stat/js/"
        />
    </server>

Настройки поста

    <!--
     ===============================================================
     ==============  Описание полей секции post  ===================
     ===============================================================
     Обязательные поля (зарезервировано):
     objectName       Имя поста (по умолчанию post_1, post_2, post_3 .... )
     description      Описание поста
     portDebug        Порт удаленной отладки (в текущей версии не реализовано полностью)
     debug            Включение локальной отладки
                      Альтернативное включение отладки: Добавить в первую строку init.js
                         строку debug=true;
     profiling        Включение режима профилирования поста. Внимание! функционал существенно
                         снижает производительность и должен использоваться только для
                         оптимизации при разработке. Также не рекомендуется
                         пользоваться Web-интерфейсом при включеном профилировании

     Секция handlers  Описывает скрипты jCjS, с логикой работы поста
            init      скрипт инициализации поста
            cmd       скрипт ответа http
            end       скрипт завершения
                      ВНИМАНИЕ! В файле обязательно вызвать post.finished();

     ВНИМАНИЕ! Если не указывать скрипты cmd и/или end, то будут выполнены
               дефолтные скрипты из дериктории stuff/include

     Пользовательские поля используется в контексте(в скрипте) поста
                       могут принимать различные имена(a-zA-Z_)
                       могут принимать значения (от чисел до строк)

                       Пример:
                           <threshold value="10" warn="15" alarm="20" />
                           <lang_alarm value="Внимание тревога" />
                           <param countPorts=3 port_1="COM1" port_2="COM2" port_3="COM3" />
                           в скрипте можно обратиться к этим ресурсам
                           var val=threshold.value + threshold.warn + threshold.alarm;
                           var str=lang_alarm.value;

                       Внимание,
                       удобно обращаться к переменным обращаясь к ним как к именованному массиву
                           var ports = [];
                           for(var i=0; i<param.countPorts; i++)
                           {
                               ports[i] = param["port_"+i];
                           }

                       Есть возможность объявления объектов JS и функций в настройках поста
                           <someObject
                              script = "{ x:2.3, y: 1.2 }"
                           />
                           <numbers
                              script = "[['curly', 3], [2, 'dede'], [3, 'myrli']]"
                           />
                           <someFunc
                              script = "function() { return 20; }"
                           />
                           <params a="fdfd" b="dededde">
                              <app a="a1" b="a2"/>
                              <ar  a="a1" b="a2"/>
                           </params>

                       Обращение к этим объектам также через пространство имени post
                           post.someObject
                           post.numbers
                           post.someFunc()
                           post.params        // {   a: "fdfd", b: "dededde",
                                                     app: { a: "a1", b:"a2"},
                                                     ar:  { a: "a1", b:"a2"}
                                                 }
                           post.params.a      // fdfd
                           post.params.app.a  // a1
                           post.params.ar.b   // a2

                           Вывести в лог все объекты и параметры post
                           post.log(   jsext.stringify(post, 0, 2)  )

                        Можно объявить функцию и сразу ее выполнить
                            <myFunc
                                script = "function() {
                                    post.evalScript('null_modem_mirror.js');
                                    var nullModem = new NullModem(post.real_port, post.null_modem);
                                    return nullModem;
                                }"
                                eval = "var nm = post.myFunc();
                                        console.log(nm);"
                            />
                        Равноценно следующей записи
                            <myFunc
                                eval = "
                                post.evalScript('null_modem_mirror.js');
                                var nm = new NullModem(post.real_port, post.null_modem);
                                console.log(nm);"
                            />
                        с одним различием - не будет создан объект post.myFunc
     ===============================================================
    -->

    <post
        objectName  = "postsTable"
        description = "Список постов"
        portDebug   = "0"
        debug       = "0"
        profiling   = "1"
        defDirs     = "stuff@postsTable"
        >
        <handlers
            cmd  = "cmd.js"
            init = "init.js"
            end  = "end.js"
        />
    </post>

    <hide>
     <!-- =============================================================== -->
     <!-- ============= Пост можно объявить и более лаконично =========== -->
     <!-- =============================================================== -->
     <post defDirs="stuff@postsTable" config="jcjs_postTable.xml"></post>
    </hide>

Напомню, секция server объявляется один раз,
секций post может быть несколько