Форум программистов, компьютерный форум, киберфорум
Visual Basic
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.91/34: Рейтинг темы: голосов - 34, средняя оценка - 4.91
39 / 39 / 8
Регистрация: 15.08.2014
Сообщений: 625
1

Mikrotik BlackList Parser (Mikrotik StopAD)

10.06.2019, 13:37. Показов 6272. Ответов 5

Author24 — интернет-сервис помощи студентам
Всем привет!
Будучи счастливым обладателем роутера Mikrotik задался рядом частных задач, блокировкой определенных доменов,

Код

                 ##################################################################################
                 #                                    ~~~~                                        #
                 #                            -= MikrotikBLParse =-                               #
                 #           -=(c) LitleKinder SoftWare (c) CopyRight 1998-2019 =-                #
                 #                      Email:  oleksandr.nosar@gmail.com                         #
                 #                                    ~~~~                                        #
                 ##################################################################################

		   
1. Идея:
	В  какой-то  момент  времени  познакомился   с  замечательным  проектом  https://stopad.cgood.ru/
	Который  выполняет  одну-единственную  функцию — генерирует  скрипт  для маршрутизаторов MikroTik 
	Router OS),   импортируя который,  производится   блокировка "рекламных"  (и  не только)  доменов 
	(далее по тексту  - "ДОМЕНОВ", на основании как публичных, так и указанных вами хост-листов.
	
	Скрипт, предоставленный автором проекта (у меня лично)  работает через раз.  В этой связи я решил
	оптимизировать, дописать,  условершенствовать механихм парсинга, и механизм создания скриптов для
	блокировки "ДОМЕНОВ"...
	
	Чего нет в MikroTik StopAD, и что есть в MikrotikBLParse.
		* скрипт файл генерирутеся по любому колличеству "ДОМЕНОВ";
		* предусмотрено разделение списка "ДОМЕНОВ" по колличеству записей, 5-10-20тыс;
		* предусмотрена очистка консоли (в роутере Mikrotik)по окончанию работы скрипта;
		* предусмотрены паузы при загрузке скрипта (в роутере Mikrotik);
		* предусмотрено сохранение настроек программы (в ini файл);
	
2. Назначение:
	Созадние скрипта блокировки "ДОМЕНОВ", вида.
		{
			/ip dns static
			add address=127.0.0.1 name=101com.com   comment=My_...;
			add address=127.0.0.1 name=101order.com comment=My_...;

3. Принцип работы:
	После   первого  запуска   программа  создает  файл   MikrotikBlackList.ini.  в  директории  Sys. 
	в котором необходимо (прописать все настройки) в трех разных категориях:
		[WEB Link]
		[Checked Link]
		[Script]
      
    	По умолчанию категрии получают значения:
		[WEB Link]
			Pase WEB Link_01  = http://winhelp2002.mvps.org/hosts.txt
			Pase WEB Link_02  = 
			.........................................................
			Pase WEB Link_05  = 
			
		[Checked Link]
			Check_00          = No
			......................
			Check_19          = No
		
		[Script]
			Script_File_Name  = Stop_AD_
			Script_File_Ext   = script
			Script_Size       = 10000
			Script_Delay      = 5
			Script_Ext_Small  = No
			Script_Comm_Pref  = My_BlackList
			Script_Comm_Suff  = ADBlock
			Host_Name         = 127.0.0.1        
		
	Чуть подробней, о каждой строке в Ini файле:
		Pase WEB Link_01 = {ВЕБ ссылка для парсинга, может быть любая}	
		Pase WEB Link_02 = {ВЕБ ссылка для парсинга, может быть любая}	    
		Pase WEB Link_03 = {ВЕБ ссылка для парсинга, может быть любая}
		Pase WEB Link_04 = {ВЕБ ссылка для парсинга, может быть любая}
		Pase WEB Link_05 = {ВЕБ ссылка для парсинга, может быть любая}
			
		Check_00          = No {Парсить ВЕБ ссылки, предлагаемые по умолчанию}
		......................
		Check_19          = No {Парсить ВЕБ ссылки, предлагаемые по умолчанию}
			
		Ссылки, определены по умолчанию  и будут отображаться при  наведении курсора  на чекбоксы 
		в главном окне программы.
			
		Script_File_Name  = {Имя файла скрипта, который будет создан по окончанию работы программы}
		Script_File_Ext   = {Расширение файла скрипта,  будет создан по окончанию работы программы}
		Script_Size       = {Колличество строк в каждом скрипте *}
		Script_Delay      = {Задержка перед загрузкой файла скрипта **}
		Script_Ext_Small  = {Не создавать комментарии в файлах скриптов}
		Script_Comm_Pref  = {Комментарий к блокировке - префикс ***}
		Script_Comm_Suff  = {Комментарий к блокировке - суффикс ***}
		Host_Name         = {Куда заворачивать весь блокируемый контент *****}

3. С чего начать:
	После запуска программы необходимо отметить чекбоксы, (по ссылкам, которых) мы хотим получить спи-
	сок  "ДОМЕНОВ"  к  блокировке.  Пример,  чекбокс (ADS), результам станет загрука доменов по ссылке:
		https://blocklist.site/app/dl/ads
	
	Пример,  чекбокс (ADS + SPAM), результам станет загрука "ДОМЕНОВ" по ссылкам:
		https://blocklist.site/app/dl/ads
		https://blocklist.site/app/dl/spam
	
	Если выбрать (отметить) чекбокс {my from Ini},  то  парсинг  будет  производится по всем ссылкам, 
	определенным блоком [WEB Link] в Ini  файле. Значения будут браться из параметров
		Pase WEB Link_01...05, при условии, что они определены Вами.
	
	Далее, запуск парсинга - кнопка {START}.
	В диалоговом окне {LOG} отобразится процесс парсинга, и возможные ошибки. В результате, парсинга,
	будут скачаны все списки по выбранным ранее ВЕБ ссылкам в директорию .\Tmp. После этого программа
	проанализирует  все  скаченные "ДОМЕНЫ"  на предмет повторяемости (дубли) и удалит их. Результаты
	будут записаны в деректорию .\Rez. Создаваемые файлы будут иметь вид:
		.\Rez\{текущаядата+текущеевремя}\{Script_File_Name}+{Script_File_Ext}
	
	Пример парсинга чекбокса {youtube}.	Парсится ссылка {https://blocklist.site/app/dl/youtube}:
		.\Rez\05.06.19(13.20.34)\Stop_AD_0001.script
		со следующим содержимым:
			
			## Script generated 05.06.19 13:20:34
			## Script format: routeros
			##
			## Hosts list sources:
			## >
			## > https://blocklist.site/app/dl/youtube
			##
			## Excluded hosts:
			## > localhost


			## Begin Script

			{

			   /ip dns static
				  add address=127.0.0.1 name=r3---sn-o097znlk.googlevideo.com comment=My_...;
				  add address=127.0.0.1 name=r5---sn-n4v7knlk.googlevideo.com comment=My_...;
				  add address=127.0.0.1 name=r5---sn-n4v7sn7y.googlevideo.com comment=My_...;
				  add address=127.0.0.1 name=r5---sn-vgqskned.googlevideo.com comment=My_...;
				  add address=127.0.0.1 name=r6---sn-o097znl6.googlevideo.com comment=My_...;
				  ...........................................................................
											  ВСЕГО 213 ссылок на 05/06/2019
				  ...........................................................................
				  add address=127.0.0.1 name=r6---sn-n4v7sn7l.googlevideo.com comment=My_...;

				/system logging action set memory memory-lines=1;
				/system logging action set memory memory-lines=65000;

				:log info "";
				:log info ">> Complete load file:  Stop_AD_0001.script";
				:log info ">> Please wait 5sec...";
				:log info "";
			}

			## End Script



		.\Rez\05.06.19(13.20.34)\Stop_AD_Main.script
			со следующим содержимым:
					
				##
				## Script generated 05.06.19 13:20:34
				## Script format: routeros
				##
				## Main script
				## Plese copy and paste this text in Script, and run it...

				## Begin Script

				{
				   /ip dns static remove [/ip dns static find comment=My_BlackList_ADBlock];
				   /system logging action set memory memory-lines=1;
				   /system logging action set memory memory-lines=65000;

				   :log info "";
				   :log info ">> Please wait 5 sec...";
				   :delay 5s;

				   /import file-name=Stop_AD_0001.script;
				   :delay 5s;
				   /file remove Stop_AD_0001.script;
				}

				## End Script
	
	То есть  будут созданы два файла. Имена которых  определены переменной {Script_File_Name}, с рас-
	рением,  определенным  переменной  {Script_File_Ext}.  В первом находится готовый скрипт, который 
	нужно загрузить в роутер Mikrotik, посредством WinBox. Помимо имени,  определнного вышеуказанными
	переменными, файл содержит индекс, в данном случае {0001}. Таким образом полное имя файла формир-
	ется в виде: {Script_File_Name} + {Index} . {Script_File_Ext}. 
	
	Пример:
		Stop_AD_0001.script
		...................
		Stop_AD_0253.script
		
		
	*Что такое индекс? Вернемся к настройке {Script_Size} {Колличество строк в каждом скрипте} Предпо-
	ложим {Script_Size} имеет значение 10 000 (по умолчанию). В результате парсинга, выбранных ссылок,
	будет скачано 55 000 доменов. Программа сформирует  и разобьет  все  скаченные спсики доменов на 6 
	файлов.  55 000  /  10 000  =  5,5.  Первый  файл  получит имя: Stop_AD_0001, второй Stop_AD_0002.
	И так далее. Зачем разбивать на файлы с заданным {Script_Size}, колличеством списков "ДОМЕНОВ" для 
	блокировки. Разбивка производится с одной единственной целью, во время загрузки скриптов не сильно
	нагружать роутер.
	
	Теперь вернемся к "головному" файлу,  который вместо индеса имеет корень {MAIN}. При установках по 
	умолчанию его имя будет: Stop_AD_Main.script. Даннй файл необходим для загрузки всех сгенерирован-
	ных файлов списков "ДОМЕНОВ". Ниже по тексту, примерный листинг данного файла:
	
		{
		   /ip dns static remove [/ip dns static find comment=My_BlackList_ADBlock];
		   /system logging action set memory memory-lines=1;
		   /system logging action set memory memory-lines=65000;

		   :log info "";
		   :log info ">> Please wait 5 sec...";
		   :delay 5s;

		   /import file-name=Stop_AD_0001.script;
		   :delay 5s;
		   /file remove Stop_AD_0001.script;
		   
		   /import file-name=Stop_AD_0001.script;
		   :delay 5s;
		   /file remove Stop_AD_0001.script;
		}
	
	В первых строках строках очищается консоль,  далее  пауза, импорт первого  файла. Удаление первого 
	файла, пауза, импорт второго файла и так далее...
	
	**Зачем нужны паузы перед загрузкой скрипта? Опять таки, для уменьшения нагрузки на роутер во время
	загрузки файлов скриптов Stop_AD_0001.script, Stop_AD_0001.script, Stop_AD_0.. Напомню, пауза опре-
	деляется переменной  {Script_Delay}{ в сек}. В самом скрипте, это выглядит {:delay 5s;}
	
	По кончании работы программы, будет предложено удалить две директории:
		.\Trs
		.\Tmp
	
		В первой директории (.\Trs)содержатся два файла:
		.\Trs\MikrotikBlackList_Add_{CurrentData}
		.\Trs\MikrotikBlackList_Del_{CurrentData}
		
	Которые  отображают  логику  работы программы. В  первый  файл  заносится  информации, о том какие
	ссылки были добавлены. И причина добавления, пример:
		{ INFO  } Add string {galacticcentral.org}       Reason for add this item: new WEB Link
		
	Во втором, тоже, но по удаленным ссылкам, пример:
		{ INFO  } Removed string {}                      Reason for deleting this item: min lenght
		
	Во второй директории (.\Tmp) содержатся все спарсенные файлы. Особой ценности не представляют, мо-
	жно удалять.
		
4. Гарантии, лицензия, отказ от ответственности:
	Программа поставляется на условиях 'КАК-ЕСТЬ', Тоесть я снимаю всякую ответственность за возможные
	ошибки,	содержащиеся в программе и последствия вызванные таковыми.


5. Если есть идеи:
	Пишем на oleksandr.nosar@gmail.com
	Описательная часть, (написана/описана) крайне быстро и скомкано, так как все делалось исключительно
	под себя/для себя. Если будут вопросы  и  желание  пообщаться,  всегда к Вашим услугам  - Telegramm,
	Viber (+380675467603)

6. Известные проблемы:
	Данная программа  писалась  и  тестировалась на Win10 x64 (10.0.14393).  Работоспособность на других
	системах  не гарантируется. Не запускать из папок, в которых содержится кириллица! Если программа не
	запустится, то нужно зарегистрировать библиотеки:
		.\Dll\comdlg32.ocx
		.\Dll\Mscomctl.ocx
		.\Dll\Msinet.ocx
		.\Dll\Mswinsck.ocx
		.\Dll\Tabctl32.ocx

	Пример регистрации:  regsvr32.exe  /s comdlg32.ocx   
   
7. Если Вам очень понравилось моя программа и есть желание отблагодарить:
	Ни в коем случае не стоит пренебречь данным желанием;)
	Яндекc Деньги: 410013190712045
	WebMoney     : R282691465680, Z330585249900
	QiWi         : +380675467603
Вложения
Тип файла: 7z BIN {build 1.002}.7z (1.53 Мб, 23 просмотров)
Тип файла: 7z Source {build 1.002}.7z (1.01 Мб, 21 просмотров)
2
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
10.06.2019, 13:37
Ответы с готовыми решениями:

Непонятное поведение MikroTik hEX и MikroTik hAP
Имеется два устройства: MikroTik hEX RB750Gr3 MikroTik hAP ac² hEX является первым...

Объединить Mikrotik - Netis - Mikrotik
Всем доброго дня. Есть Mikrotik hAP Lite к нему подключен сетевой кабель, соответственно из...

Mikrotik TO Mikrotik (VPN)
Подскажите пожалуйста! Организовал VPN тунель м/у 2-мя Микротиками. Проблема в том что за...

Mikrotik hAP lite + Mikrotik hAP lite раздача интернета по сети
Добрый день, приобрели два роутера Mikrotik hAP lite, к первому подходит интернет от провайдера...

5
39 / 39 / 8
Регистрация: 15.08.2014
Сообщений: 625
10.06.2019, 14:12  [ТС] 2
скрин рабочего процесса
Миниатюры
Mikrotik BlackList Parser (Mikrotik StopAD)  
0
39 / 39 / 8
Регистрация: 15.08.2014
Сообщений: 625
10.06.2019, 14:33  [ТС] 3
Пример листинга:
Visual Basic
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
        '##
        '##   Перебор всех флажков на предмет, отмечен ли он, и формируем списко под парсинг
        '##
        
            Logget "", "", 0, 1
            Logget Space(12) & "~~~~~~~~~~~ Start parsing Link ~~~~~~~~~~~ ", "", 0, 1
            Logget "", "", 0, 1
            
            For i = 0 To 18
                If ch1(i).Value = 1 Then
                    If Len(Trim(sLink(i))) > 10 Then
                        sLinkParse = sLinkParse & sLink(i) & vbCrLf
                    End If
                End If
            Next
            
            If ch1(19).Value = 1 Then
                For i = 10 To 14
                    If Len(Trim(iniSetCurConfVal(i))) > 10 Then
                        sLinkParse = sLinkParse & iniSetCurConfVal(i) & vbCrLf
                    End If
                Next
            End If
        
        '##
        '##   DEBUG ONLY! (отладочная информация о списке для парсинга)
        '##
 
            Debug.Print ""
            Debug.Print "~~~~~~~~~~~~~~~~ PARSE LINK ~~~~~~~~~~~~~~~~"
            Debug.Print Mid(sLinkParse, 1, Len(sLinkParse) - 2)
            Debug.Print ""
        
        '##
        '##   Запускаем процесс парсинга выбранных ссылок
        '##
        
            arrLink() = Split(sLinkParse, vbCrLf)
            
            For i = 0 To UBound(arrLink)
               If Len(arrLink(i)) > 3 Then
                    Call ParseFileFromHTTP(arrLink(i), parseLink(arrLink(i)))
               End If
            Next i
            
            Logget "", "", 0, 1
        
        '##
        '##   Сбор данных, структирирование и создание файла отчета под Mikrotik
        '##
                
            Call infoLog("Read all download data...")
                
        '##
        '##   Загружаем все спарсенные списки
        '##
            
            For i = 0 To UBound(arrLink)
              DoEvents
               If Len(arrLink(i)) > 10 Then
                    If Dir(parseLink(arrLink(i))) <> "" Then
                        Open parseLink(arrLink(i)) For Input As #fNum_1
                            sTmp = sTmp & Input(LOF(fNum_1), #fNum_1)
                        Close #fNum_1
                    End If
               End If
            Next i
 
            
            Logget MsgInf & " Read all download data", MsgOki, 1, 1
            i = 0
            
        '##
        '##   Производим разбор списков на отдельные ссылки
        '##
        
            While flagEndSplit = False
              DoEvents
                    k = i
                    i = InStr(i + 1, sTmp, Chr(10))
                        If i > 0 Then
                            s = s + 1
                            arrSource(s) = TrimUcase(Mid(sTmp, k + 1, (i - k - 1)), sTrimChar)
                        Else
                            flagEndSplit = True
                        End If
            Wend
            
            
        '##
        '##   Убираем Host из префикса каждой ссылки, если он есть...
        '##
            
            For i = 1 To s
    
                intHost1 = InStr(1, arrSource(i), "127.0.0.1")
                intHost2 = InStr(1, arrSource(i), "0.0.0.0")
        
                If intHost1 <> 0 Then arrSource(i) = TrimUcase(Mid(arrSource(i), intHost1 + 9, Len(arrSource(i)) - intHost1 - 8), sTrimChar) '##   убираем Host
                If intHost2 <> 0 Then arrSource(i) = TrimUcase(Mid(arrSource(i), intHost2 + 7, Len(arrSource(i)) - intHost2 - 6), sTrimChar) '##   убираем Host
            
            Next
            
        '##
        '##   Удаление дубликатов (ссылок которые повторяются)
        '##   Алгоритм удаления дубликатов ссылок не оптимизирован, 3 000 000 ссылок фильтруются, примерно - 700секунд!
        '##
            
                
            Call RemoveDupesFromArray(arrSource, s)         '##   собственно удаление дубликатов
            ReDim Preserve arrSource(0 To s)                '##   освобождаем память
            sTmp = ""                                       '##   освобождаем память
                
            
            dirRez = ".\Rez\" & Format(Date, "dd.mm.yy") & "(" & Format(Time$, "hh.mm.ss") & ")\"
            CreateDirectory dirRez, SecAttrib
            
            fName = dirRez & iniSetCurConfVal(35) & "Main." & iniSetCurConfVal(36)
            
        '##
        '##   Определяем ориентировочное количество файлов скриптов
        '##
            
            tFiles = Int(s / iniSetCurConfVal(37)) + 1
            
        
        '##
        '##   Формируем скрипты под Mikrotik
        '##
            
            Open fName For Output As #fNum_2
                
               If UCase(iniSetCurConfVal(39)) = "NO" Then
                    
                    Print #fNum_2, "##"
                    Print #fNum_2, "## Script generated " & Format(Date, "dd.mm.yy") & " " & Format(Time, "hh:mm:ss")
                    Print #fNum_2, "## Script format: routeros"
                    Print #fNum_2, "##"
                    Print #fNum_2, "## Main script"
                    Print #fNum_2, "## Plese copy and paste this text in Script, and run it..."
                    Print #fNum_2, ""
                    Print #fNum_2, "## Script for loading - " & tFiles
                    Print #fNum_2, "## Begin Script"
                    Print #fNum_2, ""
               
               End If
                
                    Print #fNum_2, "{"
                    Print #fNum_2, "   /ip dns static remove [/ip dns static find comment=" & iniSetCurConfVal(40) & "_" & iniSetCurConfVal(41) & "];"
                    Print #fNum_2, "   /system logging action set memory memory-lines=1;"
                    Print #fNum_2, "   /system logging action set memory memory-lines=65000;"
                    Print #fNum_2, ""
                    Print #fNum_2, "   :log info " & Chr(34) & Chr(34) & ";"
                    Print #fNum_2, "   :log info " & Chr(34) & ">> Please wait " & iniSetCurConfVal(38) & " sec..." & Chr(34) & ";"
                    Print #fNum_2, "   :delay " & iniSetCurConfVal(38) & "s;"
                    Print #fNum_2, ""
            
                Call infoLog("  Create List files...")
                
                For i = 1 To s
                    DoEvents
                        t = t + 1
                                If t > Val(iniSetCurConfVal(37)) Or t = 1 Then
                                    If t > Val(iniSetCurConfVal(37)) Then t = 1
                                        
                                        If nFile > 0 Then
                                                
                                                '##
                                                '##   Запись служебной информации в файлы скрипты
                                                '##
                                                    Print #fNum_1, "   /system logging action set memory memory-lines=1;"
                                                    Print #fNum_1, "   /system logging action set memory memory-lines=65000;"
                                                    Print #fNum_1, ""
                                                    Print #fNum_1, "   :log info " & Chr(34) & Chr(34) & ";"
                                                    Print #fNum_1, "   :log info " & Chr(34) & ">> Complete load file: " & iniSetCurConfVal(35) & String(5 - Len(Str(nFile)), "0") & Trim(Str(nFile)) & "." & iniSetCurConfVal(36) & Chr(34) & ";"
                                                    Print #fNum_1, "   :log info " & Chr(34) & Chr(34) & ";"
                                                    Print #fNum_1, "   :log info " & Chr(34) & ">> Please wait " & iniSetCurConfVal(38) & " sec..." & Chr(34) & ";"
                                                    Print #fNum_1, "   :log info " & Chr(34) & Chr(34) & ";"
                                                    Print #fNum_1, ""
                                                    Print #fNum_1, "}"
                                                    Print #fNum_1, ""
                                                    
                                                    Logget MsgInf & " Saved " & fName, MsgOki, 1, 1
                                        
                                        End If
                                        
                                        Close #fNum_1
                                        nFile = nFile + 1
                                        
                                        fName = dirRez & iniSetCurConfVal(35) & String(5 - Len(Str(nFile)), "0") & Trim(Str(nFile)) & "." & iniSetCurConfVal(36)
                                        fNum_1 = FreeFile + 2
                                            
                                                Print #fNum_2, "   /import file-name=" & iniSetCurConfVal(35) & String(5 - Len(Str(nFile)), "0") & Trim(Str(nFile)) & "." & iniSetCurConfVal(36) & ";"
                                                Print #fNum_2, "   :delay " & iniSetCurConfVal(38) & "s;"
                                                Print #fNum_2, "   /file remove " & iniSetCurConfVal(35) & String(5 - Len(Str(nFile)), "0") & Trim(Str(nFile)) & "." & iniSetCurConfVal(36) & ";"
                                        
                                        Open fName For Output As #fNum_1
                                        
                                            If UCase(iniSetCurConfVal(39)) = "NO" Then
                                                Print #fNum_1, "## Script generated " & Format(Date, "dd.mm.yy") & " " & Format(Time, "hh:mm:ss")
                                                Print #fNum_1, "## Script format: routeros"
                                                Print #fNum_1, "## Script noomber - " & nFile & "(" & tFiles & ")"
                                                Print #fNum_1, "##"
                                                Print #fNum_1, "## Hosts list sources:"
                                                Print #fNum_1, "## >"
                                            End If
                                            
                                            If UCase(iniSetCurConfVal(39)) = "NO" Then
                                                For l = 0 To UBound(arrLink)
                                                    If Len(arrLink(l)) > 3 Then
                                                        Print #fNum_1, "## > " & arrLink(l)
                                                    End If
                                                Next l
                                            End If
                                        
                                                If UCase(iniSetCurConfVal(39)) = "NO" Then
                                                    Print #fNum_1, "##"
                                                    Print #fNum_1, "## Excluded hosts:"
                                                    Print #fNum_1, "## > localhost"
                                                    Print #fNum_1, ""
                                                    Print #fNum_1, ""
                                                    Print #fNum_1, "## Begin Script"
                                                    Print #fNum_1, ""
                                                End If
                                                    
                                                    Print #fNum_1, "{"
                                                    Print #fNum_1, "   /ip dns static"
                                
                                End If
                        
                            '##
                            '##   Запись ссылки на блокируемую WEB страницу
                            '##
                            
                                Print #fNum_1, "      add address=" & iniSetCurConfVal(42) & " name=" & arrSource(i) & " comment=" & iniSetCurConfVal(40) & "_" & iniSetCurConfVal(41) & ";"
                
                Next
                
                        '##
                        '##   В последний файл-скрипт выводим информацию и чистим логи
                        '##
                            Print #fNum_1, ""
                            Print #fNum_1, "   /system logging action set memory memory-lines=1;"
                            Print #fNum_1, "   /system logging action set memory memory-lines=65000;"
                            Print #fNum_1, ""
                            Print #fNum_1, "   :log info " & Chr(34) & Chr(34) & ";"
                            Print #fNum_1, "   :log info " & Chr(34) & ">> Complete load file:  " & "Stop_AD_" & String(5 - Len(Str(nFile)), "0") & Trim(Str(nFile)) & ".script" & Chr(34) & ";"
                            Print #fNum_1, "   :log info " & Chr(34) & ">> Please wait 5sec..." & Chr(34) & ";"
                            Print #fNum_1, "   :log info " & Chr(34) & Chr(34) & ";"
                            Print #fNum_1, "}"
                            Print #fNum_1, ""
                            Print #fNum_1, "## End Script"
                            
                            Print #fNum_2, "}"
                            Print #fNum_2, ""
                            Print #fNum_2, "## End Script"
                
            Close #fNum_1
            Close #fNum_2
        
                Logget MsgInf & " Create List files", MsgOki, 1, 1
                
                QueryPerformanceCounterAny endTime
                TotalTime = (endTime - startTime) / frequency
        
        '##
        '##   Выводим информацию о продолжительности работы программы...
        '##
                
                
            Logget MsgInf & " Run time", "[" & Space(11 - Len(Format(Format(TotalTime, "#0.00 sec"), "@@@@@@@@@"))) & Format(Format(TotalTime, "#0.00 sec"), "@@@@@@@@@") & " ]", 0, 1
            Logget "", "", 0, 1
            Logget Space(12) & "~~~~~~~~~~~ All task complete ~~~~~~~~~~~ ", "", 0, 1
            
        '##
        '##   Открываем папку с результатами работы программы...
        '##
0
2 / 2 / 0
Регистрация: 10.11.2015
Сообщений: 182
22.11.2019, 21:19 4
kreotodr,

Можешь написать для особо одаренных , как перекинуть и запустить это все дело на микроте!
т.е , да отлично , создал список файлов

Кликните здесь для просмотра всего текста

/import file-name=Stop_AD_0001.scr;
/import file-name=Stop_AD_0002.scr;
/import file-name=Stop_AD_0003.scr;
/import file-name=Stop_AD_0004.scr;
/import file-name=Stop_AD_0005.scr;
/import file-name=Stop_AD_0006.scr;
/import file-name=Stop_AD_0007.scr;
/import file-name=Stop_AD_0008.scr;
/import file-name=Stop_AD_0009.scr;
/import file-name=Stop_AD_0010.scr;
/import file-name=Stop_AD_0011.scr;
/import file-name=Stop_AD_0012.scr;
/import file-name=Stop_AD_0013.scr;
/import file-name=Stop_AD_0014.scr;
/import file-name=Stop_AD_0015.scr;
/file remove Stop_AD_0015.scr;



, вот только я не могу понять , сне в корень микрота все скинуть , а потом вручную каждый подтянуть ,
Можешь подробный инструктаж экспорта в микрот с компа рассказать
0
39 / 39 / 8
Регистрация: 15.08.2014
Сообщений: 625
24.11.2019, 12:02  [ТС] 5
Цитата Сообщение от magarjoba Посмотреть сообщение
, вот только я не могу понять , сне в корень микрота все скинуть , а потом вручную каждый подтянуть ,
Можешь подробный инструктаж экспорта в микрот с компа рассказать
1. необходимо переписать все в память Микротика.
2. запустить головной скрипт на выполнение.
3. скрипт подтянет все сам...

Если не понятно стучись в телеграмм @the_Kote


хотя все это вроде как писал в ридми..
Код
	Теперь вернемся к "головному" файлу,  который вместо индеса имеет корень {MAIN}. При установках по 
	умолчанию его имя будет: Stop_AD_Main.script. Даннй файл необходим для загрузки всех сгенерирован-
	ных файлов списков "ДОМЕНОВ". Ниже по тексту, примерный листинг данного файла:
	
		{
		   /ip dns static remove [/ip dns static find comment=My_BlackList_ADBlock];
		   /system logging action set memory memory-lines=1;
		   /system logging action set memory memory-lines=65000;

		   :log info "";
		   :log info ">> Please wait 5 sec...";
		   :delay 5s;

		   /import file-name=Stop_AD_0001.script;
		   :delay 5s;
		   /file remove Stop_AD_0001.script;
		   
		   /import file-name=Stop_AD_0001.script;
		   :delay 5s;
		   /file remove Stop_AD_0001.script;
		}
	
	В первых строках строках очищается консоль,  далее  пауза, импорт первого  файла. Удаление первого 
	файла, пауза, импорт второго файла и так далее...
1
39 / 39 / 8
Регистрация: 15.08.2014
Сообщений: 625
25.02.2020, 15:27  [ТС] 6
Обновление от 25-02-2020
Вложения
Тип файла: 7z Source@Bin_1.107_25-02-20.7z (57.5 Кб, 26 просмотров)
0
25.02.2020, 15:27
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
25.02.2020, 15:27
Помогаю со студенческими работами здесь

Mikrotik
Есть кабель провайдера, входит в микротик, из микротика в свитч, со свитча по роутерам расходится в...

mikrotik
Здраствуйте! Я получаю интернет через сервер на котором стоит mikrotik, тоисть он распределяет...

Mikrotik и Фемтосота
Подключено 2 провайдера. 1 и 4 порт mikrotik 2 порт локальная сеть, подключена к прокси, через...

Антивирус на Mikrotik
Добрый день. Подскажите пожалуйста существует ли что то подобное как антивирус на базе Mikrotik ?...

Видеонаблюдение на Mikrotik
Доброго всем времени. Подскажите хочу реализовать видеонаблюдение на Mikrotik. Высота на которой...

Mikrotik script
Возможно ли написать такой скрипт: когда кто то пытается зайти на мой роутер скрипт бы отправлял...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru