-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathrules.ctl
309 lines (309 loc) · 24.1 KB
/
rules.ctl
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;
;────────────────────────[Errors correction section]───────────────────────────
; Вывел в отдельный файл, чтобы быстрее можно было добраться :)
;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
; Для начала о масках, которые можно задавать.
; Маски определяются с помощью следующих специальных символов:
;----------------------------------------------------------------------------
; Символ Описание
;----------------------------------------------------------------------------
; # Любая цифра от 0 до 9
; ^ Любая цифра от 1 до 9
; ? Любая буква (a..z, A..Z, русские нельзя)
; @ Любой символ
; $ Любой символ, кроме " (кавычки) (сделано для внутреннего
; использования, но можно и здесь, если надо :)
; % Любой символ, кроме "(" и ")" (также сделано для внутре-
; ннего использования :)
; | Любой символ от #33 до #255 , кроме "," (использовался
; раньше для проверки поинтстроки, сейчас проверка сделана
; по-другому)
; \ Любой символ от #33 до #126 , кроме "," (только что доба-
; вил для разнообразия :)
; / Любая буква от a до z или от A до Z или любая цифра от 0
; до 9 или символ "," (тоже только что добавил :)
; * Повторение следующего символа произвольное число раз
; ; Следующий символ - не управляющий
; [] Заключенная в скобки последовательность может отсутство-
; вать
; , Разделение вариантов
; {} Создание группы
;
; Любой другой символ представляет сам себя, т.е. не является управляющим.
; Символ ";", стоящий перед специальным символом, отменяет его значение, чтобы
; вставить символ ";" в маску, надо удвоить его.
; Примеры:
; #### - четырехзначное число (без знака)
; *# - число с произвольным количеством цифр (без знака)
; {-Unpublished-,*#[-]*#[-]*#[-]*#}
; - или -Unpublished- или любой номер телефона, в котором не более трех
; дефисов (может быть 3,2,1 или вообще не быть), например: "1-234-4567"
; или "1234-4567 или 12345"
; *@ - Любая последовательность любых символов
; ;, - отменяет специальное значение запятой, то есть в проверяемой строке
; в этом месте должна быть запятая
; *? - Произвольное количество букв от a до z или от A до Z
; {300,1200,2400}
; - Одно из 3-х значение, то есть в этом месте в проверяемой строке может
; стоять или 300 или 1200 или 2400.
; и т.д., кому непонятно, могу подробнее объяснить :)
;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;[UseValidate]
;
UseValidate Yes
;
; Использовать ли пpовеpкy поинтстpоки на соотвествие ее заданному вами
; стандаpтy.
; Если Yes, то смотpи ниже перменные, если No, то проверка вообще не про-
; изводиться, даже если в поинтлисте будет стоят просто Point, и все, то эта
; строка будет включена в DestPointList, поэтому советую поставить Yes (можно,
; например, закомментировать нижеследующие переменные, и тогда будет проверяться
; только отсутствие левых символов в строке, наличие как минимум 7 полей, то
; есть Point,<number>,<station>,<location,<sysopname>,<phone>,<speed>, также
; будет проверяться номер поинта, чтобы он входил в 1..32767, если же нижесле-
; дующее не комментировать, то будет проверка телефона, скорости и флагов)
; Пpовеpка ведется как в письмах, так и во всех ListSegment-ах, PointList-ах и
; файл-аттачах. Если стpока не соответствyет заданному стандаpтy, то она не по-
; дключается, пpи этом отсылается письмо с pепоpтом: если невеpная поинтстpока
; найдена в файле на диске или аттаче, то по выбору: или сисопу(вам) или боссу
; или обоим или вообще никому (смотри NotifyOnErrors), если в письме, то автоpy
; письма :)
; По yмолчанию - Yes
; Такая пеpеменная может быть только одна.
; Синтаксис:
; UseValidate <Yes|No>
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;[AllowedChars]
;
;AllowedChars 33..126
;AllowedChars $21..$7e
;
; Символы(вернее, сокращенная запись массива символов),которые разрешены в те-
; кстовых полях поинстроки, то есть в названии станции, города, имени сисопа,
; флагах.
; Формат такой - "xx..yy", где xx - десятичный код первого разрешаемого симво-
; ла, а yy - последнего, то есть, если например задано 33...126, то будут ра-
; зрешены все символы от "!" до "~". Не надо указывать здесь символы, код кото-
; рых меньше 33 (в частности потому, что туда попадает пробел, а с ним какой-
; либо софт может глючить). По FTS-0005 (это стандарт для нодлиста), разрешены
; символы от #33 до #126. Хотя на поинтлисты стандарта и нет, настоятельно ре-
; комендую разрешать именно этот набор символов. Если хотите, можете указать
; значение в hex, для этого надо перед каждым числом поставить символ $, на-
; пример, вышеуказанная запись эквивалентна следующей записи в hex:
; $21..$7e.
; По умолчанию - 33..126
; Такая переменная может быть только одна.
; Синтаксис:
; AllowedChars <number> (вернее, не число, а массив :)
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;[PhoneMask]
;
PhoneMask {-Unpublished-,7-423-2*#-*#[-]*#}
;PhoneMask {-Unpublished-,*#[-]*#[-]*#[-]*#}
;PhoneMask -Unpublished-
;PhoneMask {-Unpublished-,-unpublished-,*@}
;
; Маска(-и) телефона, которая разрешена(-ы) для телефонов поинтов.
; Значение чувствительно к регистру, т.е. unpublished не тоже самое, что Unpu-
; blished. В фигурных скобках через запятую можно указать два и больше альте-
; рнативных значения, то есть или первое или второе (третье и т.д.).
; В значении можно задавать специальные символы, интерпретацию которых смотри
; выше. Если не задана, то проверка не производится.
; По умолчанию не задана.
; Таких переменных может быть до 16380 (то есть, если телефон поинта подходит
; хоть под одну маску, то он считается правильным). В принципе, можно перечи-
; слить все возможные значения в одной строке в фигурных скобках через запятую,
; а количество 16380 сделано для тех, у кого все возможные значения не будут
; помещаться в одну строку :)
; Синтаксис:
; PhoneMask <mask>
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;[SpeedFlags]
;
SpeedFlags {300,1200,2400,4800,9600}
;
; Возможная скорость, которая может быть задана у поинта. Здесь также можно
; использовать маску, а так как такая переменная может быть только одна,то на-
; до обязательно ее (маску) использовать, указав все возможные значения в фигу-
; рных скобках. Если не задана, то проверка скорости не производится.
; По умолчанию не задана.
; Такая переменная может быть только одна.
; Синтаксис:
; SpeedFlags <mask|number>
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;[SystemFlags]
;
SystemFlags {CM,MO,LO,MN}
SystemFlags {V32B,V42B,V32T,V32,V42,V21,V22,V29,V33,V34,VFC,MNP}
SystemFlags {H96,HST,H14,H16,MAX,PEP,CSP,ZYX,XA,XB,XC,XP,XR,XW,XX}
;
; Системные флаги (т.е. флаги, которые идут до флага U в поинтстроке, после ко-
; торого идут уже пользовательские флаги), которые разрешены в поинтстроках.
; Основное правило (не помню уже, почему так :) - первыми в массиве флагов (име-
; ется ввиду не общий массив, а отдельно взятая строка с набором флагов) должны
; идти флаги с наибольшей длиной, т.е., например, если у вас есть 2 флага V32 и
; V32B, то первым надо указать V32B (т.к. его длина больше :)
; В описании флагов можно использовать маски (смотри выше про них), собственно,
; они уже используются, поскольку массив флагов определен как группа вариантов,
; т.е. заключенный в фигурные скобки.
; Соответственно, если системный флаг в поинтстроке не совпадает с один из выше-
; перечисленных, то он считается неверным, об этом сообщается вам и/или боссу (
; см. NotifyOnErrors), а эта поинтстрока не подключается к конечному поинтлисту.
; Если переменная не задана, то проверка системных флагов не производиться.
; По умолчанию - не задана.
; Таких переменных может быть до 16380.
; Синтаксис:
; SystemFlags <{flag1,flag2,flag3..flagN}>
; P.S. Кто знает еще какие-либо системные флаги, которые актуальны для поинтов
; , просьба написать мне :)
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;[UserFlags]
;
UserFlags {UV110L,UV110H,UX2C,UX2S,UZ19,UENC,UT??}
UserFlags {UISDN@,UV120L,UV120H,UX75,UV90C,UV90S}
UserFlags {UIBN[:*#],UIFC[:*#],UITN[:*#],UIVM[:*#],UIP}
;
; Пользовательские флаги (т.е. флаги, которые идут после флага U в поинтстроке)
; , которые разрешены в поинтстроках. Основное правило (не помню уже, почему
; так :) - первыми в массиве флагов (имеется ввиду не общий массив, а отдельно
; взятая строка с набором флагов) должны идти флаги с наибольшей длиной, т.е.,
; например, если у вас есть 2 флага UZ19 и UV110H, то первым надо указать UV110H
; (т.к. его длина больше :) В описании флагов можно использовать маски (смотри
; выше про них), собственно, они уже используются, поскольку массив флагов опре-
; делен как группа вариантов, т.е. заключенный в фигурные скобки.
; Еще одно замечание: флаги должны указываться с перфиксом U, т.е, например,
; если есть флаг Z19, то его надо указывать как UZ19.
; Соответственно, если пользовательский флаг в поинтстроке не совпадает с один
; из вышеперечисленных, то он считается неверным, об этом сообщается вам и/или
; боссу (см. NotifyOnErrors), а эта поинстрока не подключается к конечному по-
; интлисту.
; Если переменная не задана, то проверка пользовательских флагов не производиться.
; По умолчанию - не задана.
; Таких переменных может быть до 16380.
; Синтаксис:
; UserFlags <{flag1,flag2,flag3..flagN}>
; P.S. Кто знает еще какие-либо пользовательские флаги, которые актуальны для
; поинтов, просьба написать мне :)
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;[ImpliesFlags]
;
ImpliesFlags XA XB,XC,XP,XR,XW,XX
ImpliesFlags XB XA,XC,XP,XR,XW,XX
ImpliesFlags XC XB,XA,XP,XR,XW,XX
ImpliesFlags XP XB,XC,XA,XR,XW,XX
ImpliesFlags XR XB,XC,XP,XA,XW,XX
ImpliesFlags XW XB,XC,XP,XR,XA,XX
ImpliesFlags XX XB,XC,XP,XR,XW,XA
ImpliesFlags V42B V42,MNP
ImpliesFlags V42 MNP
ImpliesFlags V32T V32B,V32
;ImpliesFlags V34 V32B,V32 ?
ImpliesFlags V32B V32
ImpliesFlags HST MNP,V42,V42B
ImpliesFlags H14 HST,MNP,V42,V42B
ImpliesFlags H16 H14,HST,MNP,V42,V42B
ImpliesFlags H19 H14,H16,HST,MNP,V42,V42B
ImpliesFlags H21 H14,H16,H19,HST,MNP,V42,V42B
ImpliesFlags ZYX V32B,V32,V42B,V42,MNP
ImpliesFlags UZ19 ZYX,V32B,V32,V42B,V42,MNP
ImpliesFlags CM UT??
;
; Здесь описываются излишние (redundant) флаги, которые подразумеваются (implies
; ) другими флагами (если они есть в поинтстроке) и, соответственно, не нужны в
; поинтстроке. В описании этих флагов _нельзя_ использовать маску, кроме флага
; UTxy, в котором можно указать ?? вместо периода времени. Соответственное, если
; в поинтстроке обнаружен излишний флаг, то она считается неверной и не подклю-
; чается в конечный поинтлист. Здесь можно указывать как System, так и User
; flags (пользовательские флаги должны быть с префиксом U). Я прописал здесь
; также флаги поддерживаемых запросов (X?), хотя они, конечно, и не подразуме-
; вают друг друга, но это хоть гарантирует, что в строке не будет нескольких из
; них :). Можно и убрать, конечно.
; Если переменная не задана, то проверка на излишние флаги не производиться.
; По умолчанию - не задана.
; Таких переменных может быть до 16380.
; Синтаксис:
; ImpliesFlags <implies flag> <redundant flag1,redundant flag2,...,flagN>
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;[AutoFlagsUpCase]
;
;AutoFlagsUpCase Yes
;
; Если Yes, то перед проверкой флагов они будут автоматом переведены в верхний
; регистр, что поможет избежать ситуации, когда народ пишет флаги V42,V32 и про-
; чее с маленькой буквы (довольно часто бывает :), при этом юзерский флаг UTxy
; трогать не будет. Работает только если переменная UseValidate=Yes
; Пока это действует только на проверку, то есть в конечный поинтлист бу-
; дет записываться оригинальная строка.
; По умолчанию - No
; Такая переменная может быть только одна.
; Синтаксис:
; AuotFlagsUpCase <Yes|No>
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;[Event]
;
;Event BadChar Error
;Event BadPhone Error
;Event BadSpeed Error
;Event DupeFlag Warn
;Event BadSystemFlag Error
;Event BadUserFlag Error
;Event RedundantFlag Warn
;
; Здесь задается, что делать при обнаруженой ошибке в поинтстроки(действует для
; всего: письма, сегменты на диске, аттачи). Может иметь одно из 3-х значений:
; Error, Warn, Ignore. При Error поинтстрока считается неверной и не подключа-
; ется в конечный поинтлист, отсылаются репорты, ругаемся в лог (в общем, все
; как обычно, естественно, в зависимости от других настроек), при Warn все тоже
; самое, только поинтстрока считается нормальной и подключается в конечный пои-
; нлист, при Ingore вообще ничего никому не скажет и не напишет, как будто этой
; ошибки и нет, строка, естественно, будет подключена к конечному поинтлисту.
; Пока существует только 7 событий, для которых можно задавать действия:
; BadChar - обнаружен левый символ в поинтстроке (или обнаружены две подряд иду-
; щие запятые или строка заканчивается запятой)
; BadPhone - телефон поинта не подходит ни под одну маску телефонов
; BadSpeed - скорость поинта не походит под маску скоростей
; DupeFlag - в поинтстроке обнаружены повторяющиеся флаги
; BadSystemFlag - когда системный флаг не подходит ни под одну маску системных
; флагов, т.е. когда он нам неизвестен
; BadUserFlag - когда пользовательский флаг не подходит ни под одну маску систе-
; мных флагов, т.е. когда он нам неизвестен
; RedundantFlag - когда обнаружен излишний флаг, уже подразумевающийся другим
; Некоторые другие события (типа неполной поинстроки [т.е. когда нет как минимум
; 6 полей - номер, имя_станции, местонахождение, имя_сисопа, телефон, скорость]
; или выход номера поинта за допустимые границы (1..32767) по умолчанию имеют
; статус Error и изменять их нельзя (и не надо, имхо ;). По умолчанию все собы-
; тия имеют статус Error, так что можно задавать только те, которые отличаются
; от Error
; Таких переменных может быть до 16380 ;)
; Синтаксис:
; Event <event> <whattodo>
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;[NotifyOnErrors]
;
NotifyOnErrors Both
;
; Кого уведомлять письмом об ошибках в поинтстроке (из обрабатываемого аттача/
; ListSegment-а/PointList-а, ошибки в обрабатываемом письме, естественно, будут
; посланы только автору письма ;). Если Boss, то только босса этого поинта, если
; SysOp, то только локального сисопа (т.е. вас), если Both, то обоих, если не
; задано (т.е. закомментирована строка), то вообще никого не уведомляет.
; По умолчанию - не задано.
; Такая переменная может быть только одна.
; Синтаксис:
; NotifyOnErrors <Boss|SysOp|Both>
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;[LogPntStringErrors]
;
;LogPntStringErrors No
;
; Писать ли в лог все ошибки, найденные в поинтстроке обрабатываемого аттача/
; ListSegment-а/PointList-а/письма. Если да,то помимо создания писем с описанием
; ошибок (если задано), будет писать об этих ошибках еще и в лог.
; По умолчанию - Yes.
; Такая переменная может быть только одна.
; Синтаксис:
; LogPntStringErrors <Yes|No>
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;