Anonymous
А user
а юзер идет отдельно
Anonymous
Ну как отдельно? Просто юзернейм же
Anonymous
получается, у тебя есть сам user, и есть методы, с помощью которых он проходит авторизацию
Anonymous
например, пароль, ключ, и тд ...
Anonymous
Ну это ясно
Anonymous
но у меня публичный ключ + пароль
Anonymous
Вот я об этом
Anonymous
ну, добавь их в методы при коннекте - https://godoc.org/golang.org/x/crypto/ssh#AuthMethod
Anonymous
Мне нужно, чтобы мой клиент считал публичный ключ, сохранил его
Anonymous
Anonymous
Ну когда первое подключение, он его один раз передает как идентификатор, после уже хранится в файле и не нужен
Anonymous
точно так же и от сервера, ты всегда получаешь его ключ, но на второй раз ты можешь его просто проверить, НЕ сохраняя
Anonymous
да
Anonymous
а что бы его проверить ... тебе нужно заранее прочитать тот файл, куда ты сохранил ключ с первого раза :))
Anonymous
ну или читать там же, но сам факт, делать это самому
Anonymous
Вроде так
Anonymous
ну да, сверяю, если есть то подключаемся, если нет, то добавляем
Alexander
Если ты первый раз его сохраняешь и используешь просто без вопросов, то зачем его вообще сохранять? Второй раз так же бери ключ, который дали и используй его. Или таки проверка нужна? Тогда первый раз подтверждение надо спрашивать, так же как ssh делает
Anonymous
Anonymous
Короч вот вы же занете как по ssh. Передается ключ, ты типа соглашаешься, далее логин и пароль. Вот если второй раз подключаться то никакого ключа не будет, просто логин и пароль
Anonymous
Вот это мне и нужно
Anonymous
При этом не факт что ключ обязательно у меня есть, его может и не быть
Anonymous
А в некоторых исключительных случаях он у меня есть
Anonymous
но тут не суть
Anonymous
ну дык, возьми и сделай, делов-то :)) в пакете ssh даже есть чудная функция ParseKnownHosts()
Anonymous
Anonymous
Те что известные хосты то понятно
Anonymous
Мне нужно прочитать неизвестные
Anonymous
И принять их ключ
Alexander
это в общем-то. защита от man in the middle, рекомендуемая, но не обязательная часть протокола. Когда подключаешься к какому-то неизвестному серверу первый раз, ты ж не знаешь, тот ли он за кого себя выдаёт. Но потом его ключ сохраняешь и помнишь, что при подключении в этом IP ключ должен быть таким. Если он не такой, то бъём тревогу.
Alexander
Но при любом соединении, первом или последующем, сервер передает свой ключ. И твоё дело сравнивать ли его с базой данных известных серверов или просто поверить ему.
Anonymous
Lf
Anonymous
Да
Anonymous
Вот мне нужно сделать первое подключение, прочитать его и сохранить
Alexander
Такая проверка безопасности в твоём случае важна?
Anonymous
Да
Anonymous
Anonymous
давай в лс дам гиитхаб и поймешь что я делаю
Anonymous
Alexander
Хорошо. Вот есть тот callback. В него при подключении передается ключ. Ты можешь сравнить ключ с известным списком и в случае несоответсвия возвращать ошибку. Но вот этот "список известных ключей" - он твой же. Т.е. как хочешь, так и храни его. Хоть в текстовом файле, хоть в sqlite базе.
Anonymous
Alexander
Да. Список же твой собственный - вот и сохрани в него
🏁Александр
func ISODateValidator(fl validator.FieldLevel) bool {
date := fl.Field().String()
format := "2006-01-02T15:04:05-07:00"
t, err := time.Parse(format, date)
if err != nil {
return false
}
if t.Format(format) != date {
return false
}
return true
}
на строке - t.Format(format) != date получаем две одинаковые строки, начинаем сравнивать false
🏁Александр
как блин, это же работало всегда 🙁
🏁Александр
я даже тип проверил, стринг стринг
🏁Александр
беру два стринга и глазами сравниваю - одинаковые
🏁Александр
дошел до ручки, сковертировал в []rune и сравнил
🏁Александр
[50 48 49 56 45 48 56 45 48 57 84 49 56 58 51 49 58 52 50 43 48 51 58 51 48]
[50 48 49 56 45 48 56 45 48 57 84 49 56 58 51 49 58 52 50 43 48 51 58 51 48]
🏁Александр
да одинаковые блеать!
🏁Александр
🙁
Andrey
а если strings.EqualFold(t.Format(format), date)
?
🏁Александр
🏁Александр
O_o
🏁Александр
КАААК?
Andrey
кодировка такая кодировка
🏁Александр
так коды символов то блин одинаковые
Andrey
а там полюбому какой-нить символ BOM
Andrey
или типа того
🏁Александр
я дал выше два слайса строк
🏁Александр
какие там бомы?
Anonymous
Я знал, что кто-нибудь обнаружит, что уязвимости в процах Intel эксплуатируют и подменяют данные оперативы!
Anonymous
Ахах, а если у меня ip серый?
Anonymous
Это возможно?
Anonymous
Как сессию то откроешь?
🏁Александр
я походу напутал логику, проехали с моим вопросом
Sergei
у тебя там !=, если строки одинаковые, то логично что результат будет false
🏁Александр
да все, меня плющит
Andrey
а дай по приколу, что на вход подаёшь?
🏁Александр
да все все, я сделал != и ожидал true
Andrey
🙈
🏁Александр
Anonymous
Aleksandr
Не зря Линус их патч мусором назвал
Мерль
https://twitter.com/GolangShow/status/955848077633519617
Artem
Nik
А есть нормальная либа, что бы поднимать коннект в onion сеть? Минут 15 ищу - не нашел. Может кто юзал
Alexander
Не юзал, но поиск показал вот это - https://golanglibs.com/top?q=tor