Привет.
В последней бетке реализован автоматический _временный_ переход в пассивный режим если не смогли скачать в активном.
для теста можете авто обновиться или забрать бинарники
тут http://www.fly-server.ru/install/r5xx/src-bin/
Алгоритм работы:
* Если клиент настроен как "активный" а по факту порты закрыты (мешает NAT, программный фаервол)
при попытке подключиться к пользователю по команде $ConnectToMe - клиент бесконечно висел в ожидании.
неподготовленный пользователь в этом случае - сносил FlylinkDC++ :)
* Сейчас после 60 секунд ожидания клиент переходит в пассивный режим и повторяет попытку подключения
через команду $RevConnectToMe
* Если попытка удалась - происходит скачка контента при этом в прогрессе рисуется "кирпичная стенка"
* После завершения операции клиент возвращается в активный режим.
Кто разбирается в протоколе - подскажите какие проблемы вы видите в этом случае.
Пока пришлось выполнять посылку команды $MyINFO сообщающей хабу
что мы перешли в пассив - это сделано для Verlihub хотя другие хабы
в частности PtokaX не требуют этой посылки и принимают команду $RevConnectToMe
даже если клиент ранее сообщил что он активный.
мне это не совсем нравится т.к .приводит к лишнему спаму MyINFO туда-сюда...
что может привести к блокировке юзера на хабе напичканы хитрыми скриптами...
обычно нельзя часто слать MyINFO - от спама даже в клиенте есть защита на 2 минут.
пишите в комментарии или подрубайтесь к хабу dchub://dc.fly-server.ru
там можно анонимно пообщаться :)
пятница, 7 ноября 2014 г.
суббота, 11 октября 2014 г.
DDoS атака на сервера флайлинка
Всем привет.
9-10 числа были перебои с обновлением FlylinkDC++
а также не работал DHT bootstrap сервер.
Причина: атака анонимных "хакеров" они положили сразу два VPS сервера
на третий media.fly-server.ru или сил не хватило, или в digitalocean
есть встроенная защита от DDoS
http://www.fly-server.ru/munin/www/localdomain/localhost.localdomain/fw_conntrack.html
http://109.120.164.244/munin/localdomain/localhost.localdomain/fw_conntrack.html

Почти все сервисы, которые сломали атакой перевел на другой сервер
если заметите баги или тормоза пишите на почту pavel.pimenov@gmail.com
Новый сервер не использует виртуализацию
он не очень мощный, но думаю для авто обновления ресурсов хватит
http://37.187.111.84/munin/localdomain/localhost.localdomain/index.html
9-10 числа были перебои с обновлением FlylinkDC++
а также не работал DHT bootstrap сервер.
Причина: атака анонимных "хакеров" они положили сразу два VPS сервера
на третий media.fly-server.ru или сил не хватило, или в digitalocean
есть встроенная защита от DDoS
http://www.fly-server.ru/munin/www/localdomain/localhost.localdomain/fw_conntrack.html
http://109.120.164.244/munin/localdomain/localhost.localdomain/fw_conntrack.html

Почти все сервисы, которые сломали атакой перевел на другой сервер
если заметите баги или тормоза пишите на почту pavel.pimenov@gmail.com
Новый сервер не использует виртуализацию
он не очень мощный, но думаю для авто обновления ресурсов хватит
http://37.187.111.84/munin/localdomain/localhost.localdomain/index.html
четверг, 2 октября 2014 г.
Вирусы - подсказываем зараженный каталог
Добрый вечер!
Начиная с билда 17658 у FlylinkDC++ ветки r5xx
добавлена визуализация зараженного каталога
у подозрительного пользователя:
новая версия доступна на канале авто обновления (beta)
или портабельные сборки тут http://www.fly-server.ru/install/r5xx/src-bin
FlylinkDC-r503-x64-beta95-build-17658-2014.10.02-23.30.54.7z
FlylinkDC-r503-src-beta95-build-17658-2014.10.02-23.18.57.7z
FlylinkDC-r503-x86-beta95-build-17658-2014.10.02-23.18.11.7z
Начиная с билда 17658 у FlylinkDC++ ветки r5xx
добавлена визуализация зараженного каталога
у подозрительного пользователя:
новая версия доступна на канале авто обновления (beta)
или портабельные сборки тут http://www.fly-server.ru/install/r5xx/src-bin
FlylinkDC-r503-x64-beta95-build-17658-2014.10.02-23.30.54.7z
FlylinkDC-r503-src-beta95-build-17658-2014.10.02-23.18.57.7z
FlylinkDC-r503-x86-beta95-build-17658-2014.10.02-23.18.11.7z
суббота, 13 сентября 2014 г.
вторник, 9 сентября 2014 г.
FlylinkDC++ интеграция c Antivirus DB
Всем привет.
Начиная с build 17552 добавлена экспериментальная поддержка детектирования
пользователей-ботов потенциальных распространителей вирусов (рис 1)
базу данных "носителей" пополняют в автомате крупные хабы использующие verlihub
пока флайлинк только отмечает подобных юзеров в списке.
после тестирования планирую предупреждать о потенциальной опасности и запрещать:
1. Скачку файл-листов с таких пользователей
2. Скачку файла из поиска если файл находится в шаре такого пользователя.
Детект подозрительных пользователей осуществляется по 3-критериям
1. Совпал ник
2. Совпал IP
3. Совпал размер шары
Пишите замечания/предложения.
новая версии доступна через авто-обновление
или тут http://www.fly-server.ru/install/r5xx/src-bin
Начиная с build 17552 добавлена экспериментальная поддержка детектирования
пользователей-ботов потенциальных распространителей вирусов (рис 1)
базу данных "носителей" пополняют в автомате крупные хабы использующие verlihub
пока флайлинк только отмечает подобных юзеров в списке.
после тестирования планирую предупреждать о потенциальной опасности и запрещать:
1. Скачку файл-листов с таких пользователей
2. Скачку файла из поиска если файл находится в шаре такого пользователя.
Детект подозрительных пользователей осуществляется по 3-критериям
1. Совпал ник
2. Совпал IP
3. Совпал размер шары
Пишите замечания/предложения.
новая версии доступна через авто-обновление
или тут http://www.fly-server.ru/install/r5xx/src-bin
среда, 30 июля 2014 г.
sqlite 3.8.5 некорректная работа distinct
Недавно в FlylinkDC++ r5xx я немного изменил структуру таблицы для хранения дерева TTH
требовалось добавлени дополнительного поля + уникальность.
натолкнулся на странное поведение CREATE UNIQUE INDEX если в таблице уже есть данные.
sqlite3 --version
3.8.5 2014-06-04 14:06:34 b1ed4f2a34ba66c29b130f8d13e9092758019212
sqlite3.exe FlylinkDC.sqlite < test-uniq-3.sql
CREATE TABLE fly_hash_block(tth_id integer PRIMARY KEY NOT NULL, tth number NOT NULL);
INSERT INTO fly_hash_block VALUES(1,1);
INSERT INTO fly_hash_block VALUES(2,2);
INSERT INTO fly_hash_block VALUES(3,2);
CREATE UNIQUE INDEX iu_fly_hash_block_tth ON fly_hash_block(tth);
select * from fly_hash_block;
1|1
2|2
3|2
select distinct tth from fly_hash_block;
1
2
2
select tth,count(*) from fly_hash_block group by tth;
1|1
2|2
в sqlite пришел после Oracle - возможно что-то не учел...
по-моему Oracle в данном случае ведет себя адекватнее:
SQL>
SQL> CREATE TABLE fly_hash_block(tth_id integer PRIMARY KEY NOT NULL, tth number NOT NULL);
Table created
SQL> INSERT INTO fly_hash_block VALUES(1,1);
1 row inserted
SQL> INSERT INTO fly_hash_block VALUES(2,2);
1 row inserted
SQL> INSERT INTO fly_hash_block VALUES(3,2);
1 row inserted
SQL> CREATE UNIQUE INDEX iu_fly_hash_block_tth ON fly_hash_block(tth);
CREATE UNIQUE INDEX iu_fly_hash_block_tth ON fly_hash_block(tth)
ORA-01452: CREATE UNIQUE INDEX невозможно; найдены дублирующиеся ключи
SQL> select * from fly_hash_block;
TTH_ID TTH
--------------------------------------- ----------
1 1
2 2
3 2
SQL> select distinct tth from fly_hash_block;
TTH
----------
1
2
SQL> select tth,count(*) from fly_hash_block group by tth;
TTH COUNT(*)
---------- ----------
1 1
2 2
Если индекс построить на пустой таблице, то все хорошо - он запрещает попытку нарушения уникальности при вставке:
CREATE TABLE fly_hash_block(tth_id integer PRIMARY KEY NOT NULL, tth number NOT NULL);
CREATE UNIQUE INDEX iu_fly_hash_block_tth ON fly_hash_block(tth);
INSERT INTO fly_hash_block VALUES(1,1);
INSERT INTO fly_hash_block VALUES(2,2);
INSERT INTO fly_hash_block VALUES(3,2);
Error: near line 6: UNIQUE constraint failed: fly_hash_block.tth
select * from fly_hash_block;
1|1
2|2
select distinct tth from fly_hash_block;
1
2
select tth,count(*) from fly_hash_block group by tth;
1|1
2|1
Кто знает причину такого поведения?
может какой прагмы не хватает...
хотя с distinct 100% явный баг в движке - отписал разработчикам sqlite пример.
UPD: разработчики sqlite приняли баг у себя в треккере:
http://www.sqlite.org/src/info/9a6daf340df99
требовалось добавлени дополнительного поля + уникальность.
натолкнулся на странное поведение CREATE UNIQUE INDEX если в таблице уже есть данные.
- Уникальный индекс почему-то построился если есть дубликаты.
- Не корректно работает distinct
sqlite3 --version
3.8.5 2014-06-04 14:06:34 b1ed4f2a34ba66c29b130f8d13e9092758019212
sqlite3.exe FlylinkDC.sqlite < test-uniq-3.sql
CREATE TABLE fly_hash_block(tth_id integer PRIMARY KEY NOT NULL, tth number NOT NULL);
INSERT INTO fly_hash_block VALUES(1,1);
INSERT INTO fly_hash_block VALUES(2,2);
INSERT INTO fly_hash_block VALUES(3,2);
CREATE UNIQUE INDEX iu_fly_hash_block_tth ON fly_hash_block(tth);
select * from fly_hash_block;
1|1
2|2
3|2
select distinct tth from fly_hash_block;
1
2
2
select tth,count(*) from fly_hash_block group by tth;
1|1
2|2
в sqlite пришел после Oracle - возможно что-то не учел...
по-моему Oracle в данном случае ведет себя адекватнее:
SQL>
SQL> CREATE TABLE fly_hash_block(tth_id integer PRIMARY KEY NOT NULL, tth number NOT NULL);
Table created
SQL> INSERT INTO fly_hash_block VALUES(1,1);
1 row inserted
SQL> INSERT INTO fly_hash_block VALUES(2,2);
1 row inserted
SQL> INSERT INTO fly_hash_block VALUES(3,2);
1 row inserted
SQL> CREATE UNIQUE INDEX iu_fly_hash_block_tth ON fly_hash_block(tth);
CREATE UNIQUE INDEX iu_fly_hash_block_tth ON fly_hash_block(tth)
ORA-01452: CREATE UNIQUE INDEX невозможно; найдены дублирующиеся ключи
SQL> select * from fly_hash_block;
TTH_ID TTH
--------------------------------------- ----------
1 1
2 2
3 2
SQL> select distinct tth from fly_hash_block;
TTH
----------
1
2
SQL> select tth,count(*) from fly_hash_block group by tth;
TTH COUNT(*)
---------- ----------
1 1
2 2
Если индекс построить на пустой таблице, то все хорошо - он запрещает попытку нарушения уникальности при вставке:
CREATE TABLE fly_hash_block(tth_id integer PRIMARY KEY NOT NULL, tth number NOT NULL);
CREATE UNIQUE INDEX iu_fly_hash_block_tth ON fly_hash_block(tth);
INSERT INTO fly_hash_block VALUES(1,1);
INSERT INTO fly_hash_block VALUES(2,2);
INSERT INTO fly_hash_block VALUES(3,2);
Error: near line 6: UNIQUE constraint failed: fly_hash_block.tth
select * from fly_hash_block;
1|1
2|2
select distinct tth from fly_hash_block;
1
2
select tth,count(*) from fly_hash_block group by tth;
1|1
2|1
Кто знает причину такого поведения?
может какой прагмы не хватает...
хотя с distinct 100% явный баг в движке - отписал разработчикам sqlite пример.
UPD: разработчики sqlite приняли баг у себя в треккере:
http://www.sqlite.org/src/info/9a6daf340df99
пятница, 18 июля 2014 г.
SQLite - ручной ремонт базы данных
Всем привет.
Иногда в результате сбоя (обычно по питанию) "ломается" база данных и как правило ломается
центральный файл FlylinkDC.sqllite и программа FlylinkDC++ падает с сообщением
об ошибке вида - SQLIte database disk image is malformed
Автоматического ремонта у меня пока нет.
расскажу как можно сделать это руками
1. Закрываете флайлинк
2. Качаете консольную утилиту sqlite3.exe последней версии тут http://sqlite.org/download.html (Precompiled Binaries for Windows)
на сегодня это вот такая версия: http://sqlite.org/2014/sqlite-shell-win32-x86-3080500.zip
3. Раскрываете архив рядом с FlylinkDC.sqllite (там должен появиться файл sqlite3.exe)
4. Создаете резервный архив файлов *.sqlite
5. Cоздаете рядом бат-файл repair-sqlite.bat с содержимым
echo PRAGMA integrity_check; | sqlite3.exe FlylinkDC.sqlite
sqlite3.exe FlylinkDC.sqlite .dump > FlylinkDC.sql
sqlite3.exe FlylinkDC-new.sqlite < FlylinkDC.sql
echo PRAGMA integrity_check; | sqlite3.exe FlylinkDC-new.sqlite
ren FlylinkDC.sqlite FlylinkDC-old.sqlite
ren FlylinkDC-new.sqlite FlylinkDC.sqlite
del FlylinkDC.sql
pause
6. Запускаете repair-sqlite.bat он попытается починить базу данных.
7. После завершения батника запускаете флайлинк.
8. Сообщаете об успешном/не успешном лечении.
У меня на битом файле прошло вот так:
C:\!dc-db\db-sqlite-corrupt\db-bug-3>echo PRAGMA integrity_check; | sqlite3.exe FlylinkDC.sqlite
*** in database main ***
On tree page 55555 cell 56: Rowid 8246430 out of order (max larger than parent max of 8246390)
On tree page 67284 cell 69: Rowid 8246524 out of order (max larger than parent max of 8246478)
Page 67283: btreeInitPage() returns error code 11
Error: near line 1: database disk image is malformed
C:\!dc-db\db-sqlite-corrupt\db-bug-3>sqlite3.exe FlylinkDC.sqlite .dump 1>FlylinkDC.sql
C:\!dc-db\db-sqlite-corrupt\db-bug-3>sqlite3.exe FlylinkDC-new.sqlite 0C:\!dc-db\db-sqlite-corrupt\db-bug-3>echo PRAGMA integrity_check; | sqlite3.exe FlylinkDC-new.sqlite
ok
C:\!dc-db\db-sqlite-corrupt\db-bug-3>ren FlylinkDC.sqlite FlylinkDC-old.sqlite
C:\!dc-db\db-sqlite-corrupt\db-bug-3>ren FlylinkDC-new.sqlite FlylinkDC.sqlite
C:\!dc-db\db-sqlite-corrupt\db-bug-3>del FlylinkDC.sql
C:\!dc-db\db-sqlite-corrupt\db-bug-3>pause
Если ругается на другой файл БД - в батнике ставим его имя по аналогии.
Иногда в результате сбоя (обычно по питанию) "ломается" база данных и как правило ломается
центральный файл FlylinkDC.sqllite и программа FlylinkDC++ падает с сообщением
об ошибке вида - SQLIte database disk image is malformed
Автоматического ремонта у меня пока нет.
расскажу как можно сделать это руками
1. Закрываете флайлинк
2. Качаете консольную утилиту sqlite3.exe последней версии тут http://sqlite.org/download.html (Precompiled Binaries for Windows)
на сегодня это вот такая версия: http://sqlite.org/2014/sqlite-shell-win32-x86-3080500.zip
3. Раскрываете архив рядом с FlylinkDC.sqllite (там должен появиться файл sqlite3.exe)
4. Создаете резервный архив файлов *.sqlite
5. Cоздаете рядом бат-файл repair-sqlite.bat с содержимым
echo PRAGMA integrity_check; | sqlite3.exe FlylinkDC.sqlite
sqlite3.exe FlylinkDC.sqlite .dump > FlylinkDC.sql
sqlite3.exe FlylinkDC-new.sqlite < FlylinkDC.sql
echo PRAGMA integrity_check; | sqlite3.exe FlylinkDC-new.sqlite
ren FlylinkDC.sqlite FlylinkDC-old.sqlite
ren FlylinkDC-new.sqlite FlylinkDC.sqlite
del FlylinkDC.sql
pause
6. Запускаете repair-sqlite.bat он попытается починить базу данных.
7. После завершения батника запускаете флайлинк.
8. Сообщаете об успешном/не успешном лечении.
У меня на битом файле прошло вот так:
C:\!dc-db\db-sqlite-corrupt\db-bug-3>echo PRAGMA integrity_check; | sqlite3.exe FlylinkDC.sqlite
*** in database main ***
On tree page 55555 cell 56: Rowid 8246430 out of order (max larger than parent max of 8246390)
On tree page 67284 cell 69: Rowid 8246524 out of order (max larger than parent max of 8246478)
Page 67283: btreeInitPage() returns error code 11
Error: near line 1: database disk image is malformed
C:\!dc-db\db-sqlite-corrupt\db-bug-3>sqlite3.exe FlylinkDC.sqlite .dump 1>FlylinkDC.sql
C:\!dc-db\db-sqlite-corrupt\db-bug-3>sqlite3.exe FlylinkDC-new.sqlite 0
ok
C:\!dc-db\db-sqlite-corrupt\db-bug-3>ren FlylinkDC.sqlite FlylinkDC-old.sqlite
C:\!dc-db\db-sqlite-corrupt\db-bug-3>ren FlylinkDC-new.sqlite FlylinkDC.sqlite
C:\!dc-db\db-sqlite-corrupt\db-bug-3>del FlylinkDC.sql
C:\!dc-db\db-sqlite-corrupt\db-bug-3>pause
Если ругается на другой файл БД - в батнике ставим его имя по аналогии.
- FlylinkDC_user.sqlite
- FlylinkDC_stat.sqlite
- FlylinkDC_mediainfo.sqlite
- FlylinkDC_log.sqlite
- FlylinkDC_locations.sqlite
- FlylinkDC_dht.sqlite
Подписаться на:
Сообщения (Atom)





