Простой фикс authd от падений | Атариа

Простой фикс authd от падений

Кердес

Support
Член команды
Основные причины "падения" authd это:
1. Кодировка
2. Очень длинный логин

Решение с кодировкой уже существует.

Поговорим о том, как же добиваются падения ауза через очень длинный логин?
Тут расчет идет на то, что будет вызвана ошибка JDBC драйвера.
При проверке логина и пароля ауз вызывает процедуру acquireuserpasswd которой передает логин.
В структуре процедуры задано, что максимальная длинна логина varchar(64) это 64 буквы.
Когда вводят логин больше 64 букв, у нас появляется ошибка и падает ауз.
  1. GQueryPasswd:account is 545y54y5454y5454y545y454y5454y5454y545y454y5454y5445y454y5454y5454y54 , login ip is 95.72.75.78
  2. Prepare procedure call:{call acquireuserpasswd(?,?,?)}
  3. acquireIdPasswd exception:account=545y54y5454y5454y545y454y5454y5454y545y454y5454y5445y454y5454y5454y54
  4. com.mysql.jdbc.MysqlDataTruncation: Data truncation: Data too long for column 'name1' at row 1
  5. at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3556)
  6. at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3490)
  7. at com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:1959)
  8. at com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:2109)
  9. at com.mysql.jdbc.ConnectionImpl.execSQL(ConnectionImpl.java:2648)
  10. at com.mysql.jdbc.PreparedStatement.executeInternal(PreparedStatement.java:2077)
  11. at com.mysql.jdbc.PreparedStatement.execute(PreparedStatement.java:1356)
  12. at com.mysql.jdbc.CallableStatement.execute(CallableStatement.java:877)
  13. at application.procedure.handler.execute(handler.java:197)
  14. at org.mono.StorageEx.acquireIdPasswd(StorageEx.java:319)
  15. at protocol.MatrixPasswd.Server(MatrixPasswd.java:65)
  16. at com.goldhuman.IO.Protocol.Rpc.Process(Unknown Source)
  17. at com.goldhuman.IO.Protocol.Task.run(Unknown Source)
  18. at com.goldhuman.Common.ThreadPool.run(Unknown Source)
  19. at java.lang.Thread.run(Thread.java:745)

В самой ошибке нет ничего серьезного - это предупреждение, что логин очень длинный. Но при этом работоспособность auth падает.
Самое простое решение - убрать эти экцепшены.

Открываем файл table.xml
Находим строчку с паролем базы.

В ней надо сменить кодировку utf8 на ascii это первую проблему решит.
И добавить &jdbcCompliantTruncation=false - отключение тормозящих ошибок.

<connection name="auth0" poolsize="3" url="jdbc:mysql://localhost:3306/названиеБазы?useUnicode=true&amp;characterEncoding=ascii&amp;jdbcCompliantTruncation=false" username="пользователь" password="вашПароль"/>
 
Вверх