JohnBuckleyGitHub / schat

Automatically exported from code.google.com/p/schat
GNU General Public License v3.0
3 stars 0 forks source link

Проблема с DNS и старыми учетными записями #108

Open GoogleCodeExporter opened 8 years ago

GoogleCodeExporter commented 8 years ago
1. Каким образом чат разрешает dns имя(сам 
запрашивает dns или через операционную 
систему)? В нашей сети сервер на котором 
крутится служба имеет несколько адресов, 
из-за это клиенты иногда не могу 
подключиться к серверу, т.к. пытаются 
подключаются на адрес не из свое сети.
С другими сервисами проблем не 
наблюдается, по этому думаю проблема в 
чате, round robin на DNS отключен.

2. Каким образом сервер регистрирует 
анонимных пользователей? Если клиент удали 
программу(полностью почистив папку Application 
Data), администратор удалит его учетную 
запись в основном окне чата. Потом это 
пользователь установит чат, выберет себе 
имя, подключиться, и получает свое старое 
имя.
Задаю такой длинный вопрос т.к. возникает 
проблема с пользователями у которых была 
перестановлена ос, и они теперь не могу 
задать себе свой старый ник(даже после 
удаления старой записи из основного окна 
чата администратором). Возможно необходимо 
как-то дополнительно чистить базу?

Original issue reported on code.google.com by shnu...@gmail.com on 14 Jan 2014 at 1:58

GoogleCodeExporter commented 8 years ago
1. Сначала чат пытается определить адрес 
сервера используя SRV записи (для windows это 
сводится к DnsQuery_W), в случае неудачи 
пытается определить A запись (используется 
стандартный ресолвер в Qt, по идее тоже всё 
должно стандартно), если обе предыдущие 
попытки провалились используется файл 
dns.cache (c:\Users\<user name>\AppData\Local\IMPOMEZIA\Simple Chat 
2\.schat2\dns.cache).
Этот файл содержит последний успешный 
результат работы dns, можно безболезненно 
удалить.

2. Используются mac адрес первого активного 
сетевого адаптера + системное имя 
пользователя. Удаление реализовано только 
для канала, с сервера пользователь не 
удаляется. Удалить их можно вручную, все 
записи находятся в schatd2.sqlite либо можете 
поставить последнюю бета версия сервера и 
клиента (2.2.0) использовать команду /talk ник 
пользователя, для того чтобы открыть с ним 
разговор, а затем /name новый ник (может это 
сделать только администратор сервера) это 
решит проблему с занятым ником, однако не 
удалит пользователя из базы.

Original comment by impomezia@gmail.com on 14 Jan 2014 at 6:54

GoogleCodeExporter commented 8 years ago
1. Посмотрел Simple Chat 2\.schat2\dns.cache там ip адресса 
упорядочены возрастающий, это не 
правильно, а nslookup выдает их нормально, т.е. 
если машина в 10.0.3.0/24 то первый и будет из 3 
подсети.

Original comment by shnu...@gmail.com on 15 Jan 2014 at 7:00

GoogleCodeExporter commented 8 years ago
А можно вывод nslookup и файл dns.cache.
Спасибо.

Original comment by impomezia@gmail.com on 15 Jan 2014 at 7:36

GoogleCodeExporter commented 8 years ago
У сервера 4 сетевых адаптера, 10.0.0.5, 10.0.1.5, 
10.0.2.5, 10.0.3.5. В файле dns.cache. на любой машине из 
любой подсети написано 10.0.0.5, 10.0.1.5, 10.0.2.5, 
10.0.3.5. Nslookup на машине из 10.0.0.0/24 выдает 10.0.0.5, 
10.0.1.5, 10.0.2.5, 10.0.3.5., из 10.0.1.0/24 10.0.1.5, 10.0.0.5, 10.0.2.5, 
10.0.3.5, из 10.0.2.0/24  выдает 10.0.2.5, 10.0.0.5, 10.0.1.5, 10.0.3.5 
и т.д., т.е. делает упорядочивание по 
подсетям, точнее это делает DNS(для это он 
был предварительно настроен). Поэтому 
сетевые шары на сервер открываются без 
проблем на любом клиенте из любой подсети, 
а чат чего-то думает.

Original comment by shnu...@gmail.com on 15 Jan 2014 at 10:40

GoogleCodeExporter commented 8 years ago
2. Помогло зачистка базы данных schatd2.sqlite, 
удаление записей из таблицы channels, далее 
перезапуск сервиса.

Original comment by shnu...@gmail.com on 19 Jan 2014 at 11:32