diff --git a/readme.md b/readme.md
index f257b7f..c706a7b 100644
--- a/readme.md
+++ b/readme.md
@@ -1,18 +1,18 @@
# Web Knocking for MikroTik
-![Screenshot](https://user-images.githubusercontent.com/43970835/79135939-3172f900-7dc1-11ea-9d26-f923c47d47b6.png)
+![Screenshot](https://user-images.githubusercontent.com/43970835/147935163-3ebf16d4-4c15-44b2-baec-ee854becf0e4.png)
## How it works
-It is a web server written in Python.
+This is a web server written in Python
-If the request is *good*, then the IP address of the person who made the request is added to the white list on the router. IP addresses of *bad* requests are blacklisted.
+If the request is *good* then the IP address of the person who made the request is added to the white list on the router. IP addresses of *bad* requests are blacklisted.
-It is assumed that for the white list you allow something, and for the black list you block any incoming connections.
+It is assumed that for the white list you allow something and for the black list you block any incoming connections.
-For users who need to connect outside the office, we give a link like this:
+For users who need to connect outside the office we give a link like this:
http://100.100.1.2:2020/access_SeCrEtCoDe
-It is possible to support other vendors' devices with help of [netmiko](https://github.com/ktbyers/netmiko), but I only have MikroTik-s.
+It is possible to support other vendors' devices with help of [netmiko](https://github.com/ktbyers/netmiko) but I only have MikroTik-s.
## Setup
### Option 1: EXE
@@ -21,20 +21,20 @@ Just download the archive from the release page.
### Option 2: Python
**Requirements:** Python 3.8; Windows 7+
-It should also work on Linux, but I haven't checked.
+It should also work on Linux but I haven't checked.
Just download the project. No third-party dependencies.
## Usage
Change settings in *settings.ini* to your own.
-It is highly recommended to add your IP address to *safe_hosts* to avoid blacklisting during testing.
+It is highly recommended to add your IP address to *safe_hosts* to avoid blacklisting during testing. From the addresses on the *safe_hosts* list you can request a reload of the settings with url `http://ip:port/reload`
Forward a port in the router from the settings to the computer where Web Knocking is running.
Enable API access on the router from this computer (*ip services - api-ssl* or *api*).
-For white and black lists, make the rules according to your needs. For example, forward port 80 for white list on MikroTik:
+For white and black lists make the rules according to your needs. For example forward port 80 for white list on MikroTik:
/ip firewall nat add src-address-list=white_list in-interface=WAN \
dst-port=80 action=dst-nat to-addresses=192.168.0.10 to-ports=80
@@ -42,7 +42,7 @@ For white and black lists, make the rules according to your needs. For example,
### Only in Windows:
In console window:
- press «i» to print out IP addresses;
-- «u» to print out users;
+- «u» to print out users (expired dates are marked with an asterisk);
- «s» to reload settings so you can add new users without restart.
## Support project
diff --git a/readme_ru.md b/readme_ru.md
index a3e3782..882a91b 100644
--- a/readme_ru.md
+++ b/readme_ru.md
@@ -1,10 +1,10 @@
# Web Knocking для MikroTik
-![Screenshot](https://user-images.githubusercontent.com/43970835/79136043-63845b00-7dc1-11ea-9e30-6d4e011c2bc3.png)
+![Screenshot](https://user-images.githubusercontent.com/43970835/147935163-3ebf16d4-4c15-44b2-baec-ee854becf0e4.png)
## Как это работает
Это веб-сервер на Python.
-Если запрос *правильный*, то IP-адрес того, кто сделал этот запрос, добавляется в белый список на маршрутизаторе. IP-адреса *плохих* запросов попадают в чёрный список.
+Если запрос *правильный*, то IP-адрес того, кто сделал этот запрос, добавляется в *белый список* на маршрутизаторе. IP-адреса *плохих* запросов попадают в *чёрный список*.
Предполагается, что для белого списка вы что-то разрешаете, а для чёрного списка блокируются любые входящие соединения.
@@ -26,9 +26,9 @@
Просто скачайте [проект](https://github.com/vikilpet/Web-Knocking/releases). Без зависимостей от нестандартных модулей.
## Использование
-Измените настройки в settings.ini на свои.
+Измените настройки в *settings.ini* на свои.
-Очень рекомендуется добавить свой IP адрес в *safe_hosts*, чтобы при тестировании не занести себя в чёрный список.
+Очень рекомендуется добавить свой IP адрес в *safe_hosts*, чтобы при тестировании не занести себя в чёрный список. С адресов из списка *safe_hosts* можно выполнить запрос на перезагрузку настроек вида `http://ip:port/reload`
Пробросьте в маршрутизаторе порт из настроек на компьютер, на котором запущен Web Knocking.
@@ -42,7 +42,7 @@
### Только для Windows:
В консоли:
- нажмите «i» для вывода списка IP адресов;
-- «u» для вывода списка пользователей
+- «u» для вывода списка пользователей (истекшие даты помечены звездочкой);
- «s» для перезагрузки настроек, чтобы добавлять пользователей без перезапуска.
## Помощь проекту
diff --git a/resources.py b/resources.py
index 5d4e19a..b50f5a1 100644
--- a/resources.py
+++ b/resources.py
@@ -7,18 +7,20 @@ def __init__(self, language:str='en'):
di = dict(v.split('=') for v in lang_str[:-1].split('\n'))
self.__dict__.update(di)
+FAVICON = b'\x89PNG\r\n\x1a\n\x00\x00\x00\rIHDR\x00\x00\x00\x10\x00\x00\x00\x10\x08\x03\x00\x00\x00(-\x0fS\x00\x00\x00\x81PLTE\xff\xff\xff\x83\x83\x82\xa7\xa7\xa6~\x7f}qrp\xfd\xfd\xfc\xe1\xe1\xe0\xde\xde\xde\xba\xba\xb9\x95\x95\x94\x88\x89\x87\xf1\xf1\xf1\xeb\xeb\xea\xe6\xe6\xe5\xd1\xd1\xd1\xce\xce\xcd\x92\x92\x91xxw\xf9\xf9\xf9\xf5\xf5\xf4\xee\xee\xed\xe3\xe3\xe3\xca\xca\xc9\xc2\xc2\xc1\xbc\xbc\xbb\xb2\xb2\xb1\xad\xad\xac\x9f\x9f\x9e\x9a\x9a\x99\x97\x97\x97\x8e\x8e\x8c||{zzyijh\xa4\xa4\xa3\xa3\xa3\xa3\xa1\xa1\xa1\x80\x80\x80ddb^^\\UUTRRPAA@n\xda.\xc4\x00\x00\x00\x92IDAT\x18\xd3}\x8fG\x0e\xc30\x0c\x04IIVq\x97{/\xe9\xc9\xff\x1f\x18\xc92\x82\xf8\xe2\x05\x88\xe5\xcc\x81\x00\xe1,\xaa?r\x92\xd6\xc3A\xa4\xf1]\x15n\x8d\x14I|l\xe9\xd8H\x8b\x01NE\xcfb\xc06\xe1\xdcp\xaeC \xd9+\xe0\x0c\\F\x01\xd1\xa7\xac\x9e\xe9\xd08\xb1\x00\x84\xbe^K\x90\xc4\tj\xc6\x17\xa8\xe6\xeb\xb2\xb1\x87V\xc0\xa5\xf6\xe4~d6S\x81x\xd0nu\x02\x83\xad\x98d\x93\x13!\xcdmu\xef\x18\xf6D\x14\xc9M\x13\xef\xef\x8bL\xf0\x1f~\x01c\xeb\x06\x95_\x99Rn\x00\x00\x00\x00IEND\xaeB`\x82'
+
dictionary_en='''\
homepage=Homepage: https://github.com/vikilpet/
-donate=Donate, if you like it: https://www.paypal.me/vikil
+donate=Donate if you like it: https://www.paypal.me/vikil
time_capt=Time
ip_capt=Your IP
page_title=Knock-knock
-access_error={}
there is some error
-pass_expired={}
your passcode expired: {}
+access_error=You are logged in as «{}»
There is some error :(
+pass_expired=You are logged in as «{}»
Your passcode has expired: {}
pass_unknown=Unknown passcode
ban=Ban
-perm_timeout_text={}
access granted
-temp_timeout_text={}
access granted for 8 hours
+perm_timeout_text=You are logged in as «{}»
Access granted
+temp_timeout_text=You are logged in as «{}»
Access granted for 8 hours
'''
dictionary_ru='''\
@@ -27,64 +29,53 @@ def __init__(self, language:str='en'):
time_capt=Время
ip_capt=Ваш IP
page_title=Тук-тук
-access_error={}
какая-то ошибка
-pass_expired={}
ваш код доступа уже истёк: {}
+access_error=Вы вошли как «{}»
Какая-то ошибка включения доступа :(
+pass_expired=Вы вошли как «{}»
Ваш код доступа уже истёк: {}
pass_unknown=Неизвестный код доступа
ban=Бан
-perm_timeout_text={}
доступ открыт
-temp_timeout_text={}
доступ открыт на 8 часов
+perm_timeout_text=Вы вошли как «{}»
Доступ открыт
+temp_timeout_text=Вы вошли как «{}»
Доступ открыт на 8 часов
'''
HTML_DEFAULT = '''\
-
- {ip_capt}: {ip_address}
- {time_capt}: {timestamp}
- © https://github.com/vikilpet/
-
+ {ip_capt}: {ip_address}
+
{time_capt}: {timestamp}
+
© https://github.com/vikilpet/
+
+