====== ASWE ====== ASWE — AoidSoft Web Engine(s), разработка компании [[http://aoidsoft.ru|Аэдсофт]]. Используется технология SSI. SSI (Server Side Includes — включения на стороне сервера) — несложный язык для динамической «сборки» веб-страниц на сервере из отдельных составных частей и выдачи клиенту полученного HTML-документа. В веб-сервере [[apache:apache|]] реализован при помощи модуля ''mod_include''. Включённая в настройках по умолчанию веб-сервера возможность позволяет подключать HTML-файлы, поэтому для использования инструкций файл должен оканчиваться расширением: * ''.shtml'' * ''.stm'' * ''.shtm'' [[github>aoidsoft/aswe|Проект на GitHub]] ====== Настройка ====== Нужно установить: apt install libcgi-session-perl ===== Apache ===== Для работы с [[apache:apache|]] нужно добавить модули: a2enmod cgi include service apache2 reload ==== Тесты ==== === include === ''/_test/include.shtml'' Тест пройден: Test: include virtual is worked Тест не пройден: Test: error --> === Perl === ''/_cgi-bin/test.cgi'' Тест не пройден: Perl is worked! ====== Документация ====== ===== Движок 0 ===== ''refs2pages.cgi'' Загрузка ссылок на страницы из структуры папок - В папку помещается shtml–страница со вставкой вызова «Движка 0». - В папке создаются вложенные папки вида ''nn_name'', где nn — порядковый номер вложенной папки (ссылки) при отображении страницы. - Имя ссылки по умолчанию — имя вложенной папки, но может быть заменено, если в отображаемой странице определён тэг ''''. - Страница, вызываемая по ссылке, лежит в вложенной папке и имеет имя ''name.shtml'' (или .htm, или html). Пример использования: <code html> <!--#include virtual="/cgi-bin/refs2pages.cgi?pref=<ul>&post=</ul> &template=<li><a href='@@'>$$</a></li>&tree=1"--> </code> где: * ''pref'' — префикс секции, * ''post'' — суффикс секции, * ''tenplate'' — шаблон строки ссылки, * ''tree'' — отображать все дерево (структуру) сайта (=1) или только текущий уровень (=0, по умолчанию =1), * ''from'' — отображать от папки * ''/url/'', ''/'' — от корня сайта, * ''%% // %%'' — от корня алиаса, * ''@@'' — место адреса ссылки, * ''$$'' — место текста ссылки. ===== Движок 1 ===== Движок 1/B ''loadbanners.cgi'' Загрузка ссылок на документы и коротких описаний или баннеров из структуры папок В папке, где лежит shtml–страница со вставкой вызова «Движка B», ложатся файлы с именами вида ''yymmddnn_name.xxx'' с описаниями подключаемых ссылок/баннеров, формат файла: <code> Definition1=Value1 Definition2=Value2 … </code> где * ''Definitioni'' — макроопределение используемое в шаблоне, ''Valuei'' — значение на которое будет заменено макроопределение. * ''yymmdd'' — может быть использовано как дата отключения баннера, * ''nn'' — порядковый номер при отображении ссылки/баннера, * ''xxx'' — тип файлов задаваемый ключом ''type''. Пример использования: <code html> <!--#include virtual="/cgi-bin/loadbanners.cgi?pref=<ul>&post=</ul> &template=<li><a href='URL'><img src='FILE' title='TITLE'><br>TITLE</a></li>&expired=1"--> </code> где: ''pref'' — префикс секции, ''post'' — суффикс секции, ''template'' — шаблон отображения заголовка, ''type'' — тип (расширение) считываемых файлов (по умолчанию – «bnr»), ''expired'' — не отображать файлы с прошедшей датой (если = 1). ===== Движок 2 ===== ''loadtexts.cgi'' Загрузка текстов В папке, где лежит shtml–страница со вставкой вызова «Движка 2» ложатся файлы с именем вида ''yymmddnn_name.txt'' или ''yymmddnn_name.htm'', где * ''yy'' — год, * ''mm'' — месяц, * ''dd'' — день размещения файла, * ''nn'' — порядковый номер за день, * ''name'' — имя файла. Файлы будут считываться, и вставляться в страницу в прямом порядке (в порядке возрастания даты и номера). Пример использования: <code html> <!--#include virtual="/cgi-bin/loadtexts.cgi?pref=<div>&post=</div>"--> </code> где * ''pref'' — префикс секции, * ''post'' — суффикс секции. Также возможно использование «Движка 3»: <code html> <!--#include virtual="/cgi-bin/loadheaders.cgi?pref=<div>&post=</div>"--> </code> ===== Движок 3 ===== ''loadheaders.cgi'' Загрузка заголовков В папке, где лежит shtml–страница со вставкой вызова «Движка 3» ложатся файлы с именем вида ''yymmddnn_name.txt'' или ''yymmddnn_name.htm'', где * ''yy'' — год, * ''mm'' — месяц, * ''dd'' — день размещения файла, * ''nn'' — порядковый номер за день, * ''name'' — имя файла. Файлы будут считываться, и вставляться в страницу в указанном порядке (в порядке возрастания или убывания даты и номера). Пример использования: <code html> <!--#include virtual="/cgi-bin/loadheaders.cgi?pref=<ol>&post=</ol> &lines=2&template=<li value=**><a href='@@'>$$</a></li> &count=5&next=<a href='@@'>Дальше</a>&any=<a href='@@'>$$</a>%26nbsp;&back=1"--> </code> где: * ''pref'' — префикс секции, * ''post'' — суффикс секции, * ''lines'' — сколько строчек из файла отображать (если не задано – все), * ''count'' — по сколько заголовков отображать на странице (если не задано – все), * ''filemask'' — regexp–маска имени файла, по умолчанию вида: ''YYMMDD_*.(htm|txt)'' * ''filepref'' — префикс имени файла вида: ''filepreffilemask'' * ''template'' — шаблон отображения заголовка (может быть не задан), * ''next'' — шаблон ссылки на следующую страницу (может быть не задан), * ''preed'' — шаблон ссылки на предыдущую страницу (может быть не задан), * ''any'' — шаблон ссылки на n–ную страницу (страницы нумеруются с 0, может быть не задан), * ''current'' — шаблон ссылки на текущую страницу (может быть не задан), * ''back'' — выводить в обратном порядке (если =1), * ''ponly'' — выводить только ссылки на страницы. В шаблонах можно использовать макроопределения: * ''@@'' — адрес ссылки, * ''$$'' — текст заголовка (для «template») или номер страницы (для «next» и «any»), * ''%% ** %%'' — порядковый номер. Может использоваться вместо «Движка 2». ==== filemask ==== Пример использование регулярного выражения в параметре ''filemask'' Регулярное выражение для файлов, вида: ''NNNN_*.(htm|txt)'' * 0000_Index.htm * 0001_Item1.htm * 0002_Item2.htm * … * 0002_ItemN.htm <code> ^\d{4}_.+\.(htm|txt)$ </code> Его нужно преобразовать в escape–последовательность, получиться: <code> %5E%5Cd%7B4%7D_.%2B%5C.(htm%7Ctxt)%24 </code> Пример готового вызова: <code html> <!--#include virtual="/_cgi-bin/loadheaders.cgi?pref=<dir>&back=0 &filemask=%5E%5Cd%7B4%7D_.%2B%5C.(htm%7Ctxt)%24"--> </code> ===== template.cgi ===== Скрипт вызова шаблона. Пример исрльзования: <code html index.shtml> <!--#include virtual="/_cgi-bin/template.cgi" --> </code> ===== Пример структуры ===== FIXME <hidden Пример структуры> <diagram> |root|root{text-align:left;}=**html** |!| |)|file||comment|file{text-align:left;}=index.shtml|comment{border-color:silver;background-color:silver;}=использует [[#движок 0]] |!| |)|folder|folder{text-align:left;}=**01_about** |!|!| |!|)|file||comment|file{text-align:left;}=about.shtml|comment{border-color:silver;background-color:silver;}=использует [[#движок 2]] |!|!| |!|)|file|file{text-align:left;}=07042001_text1.txt |!|!| |!|`|file|file{text-align:left;}=07042002_text2.txt |!| |`|folder|folder{text-align:left;}=**02_life** ||!| ||)|file||comment|file{text-align:left;}=life.shtml|comment{border-color:silver;background-color:silver;}=использует [[#движок 0]] ||!| ||)|folder|folder{text-align:left;}=**01_release** ||!|!| ||!|)|file||comment|file{text-align:left;}=release.shtml|comment{border-color:silver;background-color:silver;}=использует [[#движок 3]] ||!|!| ||!|)|file|file{text-align:left;}=07042001_a1.htm ||!|!| ||!|)|file|file{text-align:left;}=07042002_a2.htm ||!|!| ||!|`|file|file{text-align:left;}=07042003_a3.htm ||!| ||)|folder|folder{text-align:left;}=**02_smi** ||!|!| ||!|)|file||comment|file{text-align:left;}=smi.shtml|comment{border-color:silver;background-color:silver;}=использует [[#движок 3]] и [[#движок 1]] ||!|!| ||!|)|file|file{text-align:left;}=07052801_banner1.bnr ||!|!| ||!|)|file|file{text-align:left;}=07052802_banner2.bnr ||!|!| ||!|)|file|file{text-align:left;}=07042001_s1.htm ||!|!| ||!|)|file|file{text-align:left;}=07042002_s2.htm ||!|!| ||!|)|file|file{text-align:left;}=07042003_s3.htm ||!|!| ||!|)|file|file{text-align:left;}=b1.gif ||!|!| ||!|`|file|file{text-align:left;}=b2.jpg ||!| ||`|folder|folder{text-align:left;}=**03_events** |||!| |||)|file||comment|file{text-align:left;}=events.shtml|comment{border-color:silver;background-color:silver;}=использует [[#движок 3]] |||!| |||)|file|file{text-align:left;}=07042001_e1.txt |||!| |||)|file|file{text-align:left;}=07042002_e2.txt |||!| |||`|file|file{text-align:left;}=07042003_e3.txt </diagram> </hidden> ====== Ссылки ====== [[wpru>SSI_(программирование)|SSI]] {{tag>HTTP on_GitHub}}