|
Помогите расковырять "свой" http-сервис (Linux, Rust, загрузка документов) | ☑ | ||
---|---|---|---|---|
0
zelenprog
13.12.23
✎
15:31
|
Здравствуйте!
В организации был запущен http-сервис. Сервер на Линуксе, доступ к серверу есть. Этот http-сервис принимает электронные документы от внешней системы и складывает их где-то у себя на сервере. К этому http-сервису подключается база 1С8 с помощью регламентного задания, посылает REST-запрос и получает от этого http-сервиса документы. Этот механизм обмена делали спецы, которые уже не работают. С некоторых пор этот http-сервис возвращает код состояния 502 и не "отдает" документы. Программа, реализующая запрос, предположительно написана на Rust-е. Помогите пожалуйста разобраться как это все работает. Я с веб-технологиями мало знаком. Исходники все есть. Только надо понять какой из этих исходников "отрабатывает" этот запрос. Где это можно найти? Где искать? Что смотреть? |
|||
71
zelenprog
14.12.23
✎
10:45
|
Вот ссылка на всю папку с исходниками yama:
https://cloud.mail.ru/public/qVUY/eJznKe9cB Из папок ...\target\debug\ и ...\target\release\ я удалил подпапки "build\" и "deps\", так как они очень большие по размеру. А это ссылка на файл yama_service.rs: https://cloud.mail.ru/public/PtEF/V5u5khRNR Вот его содержимое: Подробностиuse log::info; use static_strings::*; use yama::server::start_server; #[tokio::main] async fn main() { init(); info!("{}", START_MSG); start_server().await; } fn init() { env_logger::init(); } mod static_strings { pub const START_MSG: &str = "Запуск сервиса"; } |
|||
72
Garykom
гуру
14.12.23
✎
11:01
|
(71) какая хрень!
данные из файликов с ftp засовывает в базу postgresql и по базе уже делает rest api |
|||
73
Garykom
гуру
14.12.23
✎
11:04
|
(72)+ имхо прямо из 1С с ftp работай с файлами
|
|||
74
Garikk
14.12.23
✎
11:05
|
(66) он перспективен, но на нем нельзя писать проекты где нет уверенности в поддержке дальнейшей
я тут вручную не зная раст homeassistant просто собирал-обновлял на малинке, это пи..ц какойто ассистант скажете на питоне? ага, а еще там какаято чертовшина на расте которая не компилится...а ты даже с мануалом хрен поймёшь чё там за грузовая ржавчина ему нужна и где |
|||
75
Garikk
14.12.23
✎
11:06
|
(0) а что в логах сервака кстати? /var/log/syslog например?
|
|||
76
Garykom
гуру
14.12.23
✎
11:07
|
(74) питон не умеет в низкий уровень
и вот они раст и заюзали лучше раст чем плюсы |
|||
77
Garykom
гуру
14.12.23
✎
11:08
|
(74) кстати нафига ты ha собирал? почему просто в докере готовый не запускать?
|
|||
78
novichok79
14.12.23
✎
11:08
|
(74) звучит так как будто знатные попытки спариться с мужчиной ))))
|
|||
79
novichok79
14.12.23
✎
11:10
|
(76) мне показалось что обновленный С++ без легаси с какими-то фишками из Go.
Google какой-то Carbon недавно выкатил, но язык без либ - это как приставка без игр. |
|||
80
Garykom
гуру
14.12.23
✎
11:12
|
(71) прикольно что порт 3369 захардкожен
а database_url (строка подключения к postgre) берут из переменной окружения |
|||
81
Garykom
гуру
14.12.23
✎
11:17
|
(80)+ и кстати должна быть еще какая то внешняя хрень
которая с ftp файлики закидывает в базу PostgreSQL в таблички типа ftp_mirror |
|||
82
Garikk
14.12.23
✎
11:16
|
(77) у меня в голове docker и rpi с трудом огромным сочетаются
я вообще Home Assistant Operating System (HAOS) поставил в итоге когда задолбался руками собирать |
|||
83
Garykom
гуру
14.12.23
✎
11:17
|
(82) haos как вариант но не для всех железок сборки есть
а в докере можно на любой |
|||
84
novichok79
14.12.23
✎
11:17
|
(81) а че типа из 1Сины нельзя фтп файлики качать? очень странная архитектура. выглядит так, как будто чуваки решили изучить rust на реальном проекте.
|
|||
85
Garykom
гуру
14.12.23
✎
11:18
|
(84) yama.7z\yama\docs\ загляни ))
|
|||
86
Garikk
14.12.23
✎
11:21
|
(78) ну яжпрограммист, я разобрался ;)
вообще мне всегда интересно такое всякое самостоятельно собрать чтобы понимать чё там и как работает, но мейнтейнеры ha те еще приколисты и любители пихать самые новые версии либ в зависимости не описывая как их ставить (83) ну у меня rpi 3, для него вполне есть (84) +100, так и есть, у нас так Golang, Ruby и C# в чисто питонячии проекты затаскивали..сейчас шарповый проект в одно лицо так тяну, ктото отличился из моих предшественников, видимо адептов "питон это плохо" |
|||
87
Garykom
гуру
14.12.23
✎
11:20
|
(84) да согласен странный выбор стека для решения
логично для этого отдельную самописку на 1С наваять было или даже встроить в свою основную конфу |
|||
88
IVT_2009
14.12.23
✎
11:22
|
(74) Тоже поимел эту любофф. С аналогичным исходом. Ушел на докер и пока все наладилось. Думал, что я не догоняю - оказалось, что так задумано.
|
|||
89
d4rkmesa
14.12.23
✎
11:27
|
(48) Очень смешно. ) Это примерно как выучить C++.
|
|||
90
Лефмихалыч
14.12.23
✎
11:34
|
(89) на самом деле вовсе нет. Во-первых, раст гораздо более современный и простой язык, чем плюсы. Во-вторых, у автора есть исходники и в действительности ему нужно научиться только собирать и запускать уже готовое. И даже собранные бинари у автора есть, а не хватает какого-то там окружения
|
|||
91
zelenprog
14.12.23
✎
11:35
|
(75) >> а что в логах сервака кстати? /var/log/syslog например?
Нету такого файла "syslog". Но зато в этой папке есть файл ".\ngnix\error.log", в нем вот что: 2023/12/14 11:13:49 [error] 1616#0: *2270 connect() failed (111: Connection refused) while connecting to upstream, client: 192.168.1.131, server: yama.corp.pskovmol.ru, request: "GET /api/v1/orders/list/today HTTP/1.1", upstream: "http://127.0.0.1:3369/api/v1/orders/list/today", host: "yama.corp.pskovmol.ru" |
|||
92
Garykom
гуру
14.12.23
✎
11:35
|
(90) "не хватает какого-то там окружения" - это примерно как для пользователя 1С, умеющего в СКД
"не хватает какого то там сервера 1С" |
|||
93
Garykom
гуру
14.12.23
✎
11:37
|
(91) это ошибка nginx'а, который как обратный прокси тут
|
|||
94
Garykom
гуру
14.12.23
✎
11:39
|
(91) и да спалился АО «Псковский молочный комбинат»
|
|||
95
novichok79
14.12.23
✎
11:39
|
кстати контора мечты - АО «Псковский молочный комбинат»
|
|||
96
novichok79
14.12.23
✎
11:39
|
(94) одновременно
|
|||
97
novichok79
14.12.23
✎
11:41
|
(89) я сужу по себе - вот после Java и Golang как бы довольно быстро въехал в то, чтобы читать код в Rust.
естественно, если прог не знает ничего, кроме 1С, как бы плохи дела )) |
|||
98
novichok79
14.12.23
✎
11:42
|
(91) а nginx там зачем, если оно просто качает файлики?
|
|||
99
Garykom
гуру
14.12.23
✎
11:44
|
(98) nginx там вероятно чтобы с localhost наружу отдавать на другой порт и с ssl
|
|||
100
zelenprog
14.12.23
✎
11:44
|
(85) >> yama.7z\yama\docs\ загляни ))
А что там интресного? Там какая-то описана платформа EXITE Evolution. (94),(95) Ага. Сильно не пиарьте нигде. Я вроде пытался удалить ссылки на контору. Где я промахнулся? |
|||
101
Лефмихалыч
14.12.23
✎
11:45
|
(100) ты выложил исходники целиком, включая всю историю коммитов
|
|||
102
novichok79
14.12.23
✎
11:45
|
(99) ну да, я тоже подумал на балансировку или SSL, но блеать, почему так нах...
как будто бы сделано через anus. скачал себе папОчку, сейчас гляну исходники. |
|||
103
Garykom
гуру
14.12.23
✎
11:46
|
(100) >А что там интресного? Там какая-то описана платформа EXITE Evolution.
Это описание формата файлов xml которыми через ftp обмениваются |
|||
104
novichok79
14.12.23
✎
11:47
|
const PORT: u16 = 3369;
я не плачу, это просто дождь... |
|||
105
zelenprog
14.12.23
✎
11:48
|
(97) Я около 7 лет писал на Borland С++, затем небольшие программы на C#, много на Foxpro, хранимые процедуры на SQL.
Но это были десктопные программы. С веб-технологиями не сталкивался. Поэтому мне трудно понять логику этого кода на Rust-е. |
|||
106
Garykom
гуру
14.12.23
✎
11:48
|
(104) ага я тоже
наколенная поделка, нормально |
|||
107
zelenprog
14.12.23
✎
11:51
|
(72) >> данные из файликов с ftp засовывает в базу postgresql
(73) >> + имхо прямо из 1С с ftp работай с файлами (84) >> а че типа из 1Сины нельзя фтп файлики качать? Ткните плиз, где этот код, который читает данные с ftp? Какой там указан адрес ftp? |
|||
108
novichok79
14.12.23
✎
11:51
|
хз, будь я 1сником, я бы переделал на 1С + затащил бы как подсистему в расширении.
обычное такое переводят на другие ЯП, если только 1Сина не тянет по скорости. но тут судя по всему, обычное скачивание файлов, прокидывание их в постгри и выставление наружу сервиса. |
|||
109
Лефмихалыч
14.12.23
✎
11:53
|
(108) у автора 7.7
|
|||
110
novichok79
14.12.23
✎
11:54
|
прикольно, там даж гит дифф есть незакоммиченный
|
|||
111
Garykom
гуру
14.12.23
✎
11:55
|
(107) нет там этого кода что и удивительно
и нет адреса ftp есть только табличка ftp_mirror что намекает вместе с мануалом "платформа EXITE Evolution" |
|||
112
Garykom
гуру
14.12.23
✎
11:56
|
(111)+ или я невнимательно изучил код
или уже писал должно быть еще что то внешнее, что синхронизирует ftp и базу pgsql в таблички ftp_mirror |
|||
113
zelenprog
14.12.23
✎
11:56
|
Сервис запустился!
После многократных запусков файлов "start_service.sh", "stop_service.sh". Так я и не понял, что ему не нравилось. Может быть зависит от пользователя, под которым запускается? |
|||
114
zelenprog
14.12.23
✎
11:58
|
(109)
В данном случае эти документы закачиваются в 1С8 "Комплексная автоматизация". У нас есть базы и на 7.7 и на 8.3. |
|||
115
Лефмихалыч
14.12.23
✎
11:59
|
а следующая проблема будет "оно-то запускается, но быстро падает потому, что постгря не запущена"
|
|||
116
zelenprog
14.12.23
✎
11:59
|
(108) Я тоже хочу переделать на 1С, хотел бы сделать расширение.
Но для этого надо разобраться откуда все это тянется. |
|||
117
Garykom
гуру
14.12.23
✎
12:01
|
(113) скорее всего переменные среды
когда вручную запускаешь от юзера и при старте системы |
|||
118
zelenprog
14.12.23
✎
12:01
|
(115) postgres работает, я к нему из командной строки подключился еще вчера.
Сервис пока работает нормально, в 1С8 документы подтянулись. |
|||
119
Garykom
гуру
14.12.23
✎
12:02
|
(116) ищи откуда берутся файлики, с какого ftp
мануал у тебя есть, найди контакты какой адрес ftp и логин с паролем |
|||
120
novichok79
14.12.23
✎
12:04
|
да, тоже не нашел что заполняет ftp_mirror.
но то что незакомиченный дифф 4 года назад, как бы намекает шо всю команду послали найух. |
|||
121
Garykom
гуру
14.12.23
✎
12:11
|
(120) и правильно сделали что послали
решение овер как понял с ftp работает RestExClient и MOVEitFreely FTP которые описаны в файле EXITE_DocsDescription_XML.pdf оно тупо на локальный диск файлы кидает как в папке yama\test\ мануал есть, осталось только на 1С наваять код работы с этими файликами |
|||
122
Garikk
14.12.23
✎
12:18
|
(120) или команда послала работодателя
|
|||
123
Garykom
гуру
14.12.23
✎
12:20
|
(122) возможно они друг друга стоят
|
|||
124
novichok79
14.12.23
✎
12:34
|
если что можно попробовать обратиться к нему
PS D:\Downloads\yama> git log commit 5c8a922d4575489fc6779768fc870d29fd9a818c (HEAD -> master) Author: Tishechkov Kirill <[email protected]> Date: Thu Dec 10 11:14:24 2020 +0300 Обрабатывается цена с НДС если она указана в заказе. |
|||
125
Garykom
гуру
14.12.23
✎
12:41
|
(124) Юрьевичу? Сисадмину? Которого почетной грамотой наградили?
|
|||
126
novichok79
14.12.23
✎
12:43
|
ахаха. ну может чувак знает чего-то, хотя вряд ли он ответит ))
|
|||
127
zelenprog
14.12.23
✎
12:49
|
Нашел в кроне вот такую команду:
*/5 * * * * cd /home/sysadmin/Development/legacy/ftp_2_db/ && ./start_service.sh > /dev/null 2>&1 Понятно, что запускается еще один сервис, который скорее всего и качает файлы с ФТП в базу postgre. Только не понял, что обозначают последние "2>&1"? |
|||
128
Garykom
гуру
14.12.23
✎
12:52
|
||||
129
Garykom
гуру
14.12.23
✎
12:53
|
хм угадал насчет второго сервиса
вот там уже должен быть адрес фтп и логин/пароль |
|||
130
novichok79
14.12.23
✎
12:53
|
поток ошибок (stderr) будет направлен туда же, куда и стандартный вывод (stdout), то есть в /dev/null.
|
|||
131
novichok79
14.12.23
✎
12:53
|
проще говоря Tishechkov Kirill сделал так, что если даже были ошибки при запуске фтп-хи вы об этом никогда не узнаете.
удобно ёпта! |
|||
132
novichok79
14.12.23
✎
12:55
|
содержимое в студию, зря чтоли мы тут рабочее время тратим ))) бесплатно кстати.
|
|||
133
zelenprog
14.12.23
✎
13:00
|
(130) А как надо исправить строку, чтобы направить вывод в файл? И желательно разделить "нормальные" сообщения и ошибки.
(132) Содержимое чего? |
|||
134
stix2010
14.12.23
✎
13:01
|
(0)..был у нас толмач с немчины, ему переводить, а он лыка не вяжет. Ну в кипятке его и сварили...
|
|||
135
novichok79
14.12.23
✎
13:10
|
start.sh, но это походу и есть yama_service.
ты заменил xxx, но скинул весь git diff, поэтому сначала было непонятно. есть еще что-то, что наполняет папку с xml файлами и таблицу ftp_mirror, я не вижу в коде где в нее вставляется файл. там уже сравнивается содержимое таблицы и файлов в папке. но как они туда попадают хуй его знает. и вообще 2 сервиса на 1 базу, ну это пиздец антипаттерн какой. |
|||
136
novichok79
14.12.23
✎
13:11
|
(133) убрать перенаправление в dev/null.
*/5 * * * * cd /home/sysadmin/Development/legacy/ftp_2_db/ && ./start_service.sh папка ftp_2_db наверное и содержит что-то еще. что ты нам не скидываешь. |
|||
137
Garykom
гуру
14.12.23
✎
13:12
|
(135) >есть еще что-то, что наполняет папку с xml файлами и таблицу ftp_mirror
/home/sysadmin/Development/legacy/ftp_2_db/ |
|||
138
Garykom
гуру
14.12.23
✎
13:13
|
(136) >папка ftp_2_db наверное и содержит что-то еще. что ты нам не скидываешь.
хочешь узнать логин/пароль? прикольно если они там тоже захардкожены |
|||
139
novichok79
14.12.23
✎
13:15
|
оффтоп: бля, ну я покекал.
типа заанонил, но скинул гит дифф, которым в пару кликов можно отменить эти xxx. |
|||
140
novichok79
14.12.23
✎
13:16
|
(138) по крайней мере к БД пароли уже засвечены. терять нечего.
|
|||
141
zelenprog
14.12.23
✎
13:25
|
(139) ну я не знал что такое "гит дифф", теперь понял
|
|||
142
zelenprog
14.12.23
✎
13:26
|
(136) Перенаправление в кроне исправил на файл "xxx.log".
Надо крон перезапускать? Ща выложу исходники ftp2db. |
|||
143
Garykom
гуру
14.12.23
✎
13:27
|
(142) исправил то надеюсь через "crontab -e" ?
|
|||
144
novichok79
14.12.23
✎
13:32
|
(142) ты же типа каждый раз перезаписываешь xxx.log? а не дополняешь? просто если дополняешь, то его надо будет удалять, чтобы он не заполнил весь диск.
|
|||
145
zelenprog
14.12.23
✎
13:45
|
(143) Не, вручную отредактировал. А шо? Нельзя?
Под рутом отредактировал файл sysadmin. Вроде работает, файл пишет. |
|||
146
zelenprog
14.12.23
✎
13:42
|
(144) Да, перезаписываю.
Вот что он выдает: ------------------- Blocking waiting for file lock on package cache Blocking waiting for file lock on package cache Blocking waiting for file lock on package cache WARN rustc_metadata::locator no metadata found: failed to decompress metadata: /home/sysadmin/Development/legacy/ftp_2_db/target/release/deps/libproc_macro_hack-b1067107119c7e20.so WARN rustc_metadata::locator no metadata found: failed to decompress metadata: /home/sysadmin/Development/legacy/ftp_2_db/target/release/deps/libproc_macro_hack-34eb81dff47866c8.so ... WARN rustc_metadata::locator no metadata found: failed to decompress metadata: /home/sysadmin/Development/legacy/ftp_2_db/target/release/deps/libasync_trait-72d81f5e9d37abf7.so WARN rustc_metadata::locator no metadata found: failed to decompress metadata: /home/sysadmin/Development/legacy/ftp_2_db/target/release/deps/libasync_trait-7976db04f3e9a81d.so Finished release [optimized] target(s) in 0.11s Running `target/release/start_service` [2023-12-14T10:25:02Z INFO start_service] Запуск синхронизации файлов [2023-12-14T10:25:29Z INFO start_service] Синхронизировано 0 файлов [2023-12-14T10:25:29Z INFO start_service] Завершение синхронизации файлов --------------- Щас просто файлов еще новых нету, поэтому "синхронизировано 0 файлов". |
|||
147
zelenprog
14.12.23
✎
13:43
|
В какой папке лежит гит дифф? Я ее удалю, чтобы не палить контору и бедного разраба.
|
|||
148
novichok79
14.12.23
✎
13:46
|
ты нас троллишь походу.
что лежит в /home/sysadmin/Development/legacy/ftp_2_db? |
|||
149
novichok79
14.12.23
✎
13:46
|
(147) .git
|
|||
152
zelenprog
14.12.23
✎
13:51
|
А что за файл nohup.out?
Он же тоже как-то используется для вывода сообщений? Чем вывод в nohup.out отличается от перенаправления вывода в кроне? |
|||
154
zelenprog
14.12.23
✎
14:12
|
Ссылка на исходники ftp2db:
https://cloud.mail.ru/public/nnDZ/Ut4KntQCG Контору и разраба не палите! |
|||
156
Волшебник
14.12.23
✎
18:53
|
Все прощены ради решения проблемы компании, которая бьётся за Россию-Русь.
|
|||
157
Garykom
гуру
14.12.23
✎
19:27
|
(154) какой ужас
let ftp_server = env::var("FTP_SERVER").expect("Не установлена переменная окружения FTP_SERVER - адрес ftp сервера"); let ftp_user = env::var("FTP_USER").expect("Не установлена переменная окружения FTP_USER - имя пользователя ftp"); let ftp_password = env::var("FTP_PASSWORD").expect("Не установлена переменная окружения FTP_PASSWORD - пароль пользователя ftp"); |
|||
158
Garykom
гуру
14.12.23
✎
19:34
|
зачем сохранять настройки в файлах? (сарказм)
когда можно прямо в переменные окружения засунуть да только если другой еще сервер ftp будет что делать? и общее впечатления о коде куча лишнего, надергано по кускам с разных стековерфлоу и гитхаба, короче этакий студент-стайл |
|||
159
Волшебник
14.12.23
✎
19:32
|
(158) настройки в файлах приняты в Linux как стандарт
|
|||
160
Garykom
гуру
14.12.23
✎
19:33
|
(159) именно
но данное решение не использует настройки в файлах и даже настройки из ключей запуска |
|||
161
Garykom
гуру
14.12.23
✎
19:37
|
printenv короче
|
|||
162
Волшебник
14.12.23
✎
19:40
|
(160) Короче, "ржавое" решение?
|
|||
163
Garykom
гуру
14.12.23
✎
19:48
|
(162) Угу желтое еще, от зеленого программиста
|
|||
164
d4rkmesa
14.12.23
✎
20:15
|
Забавно, чувак, видимо, сделал с костылями интеграцию с EDI-системой Exite Evolution. Помню, лет 10 назад с ней сталкивался, интеграция была своего рода ftp-клиентом, которая при старте перебирала сотни xml-ок в папке и постоянно докачивала новые. В типовом виде это работало отвратительно. Лучшее, что можно с этим сделать - перейти на какой-нибудь "Контур".
|
|||
165
Garykom
гуру
14.12.23
✎
20:52
|
(164) какие то ограничения на удаление скачанных xml-ек?
|
|||
166
d4rkmesa
14.12.23
✎
21:06
|
(165) Чистить архив можно было, но даже сотня xml-к уже минуты перебирались, чтобы заполнить список электронных документов.
|
|||
167
zelenprog
15.12.23
✎
09:39
|
(164) >> чувак, видимо, сделал с костылями интеграцию с EDI-системой Exite Evolution
Интеграция с Exite была когда-то давно. Потом перешли на Leradata. Сейчас исходники качают данные с Leradata. |
|||
168
zelenprog
15.12.23
✎
09:42
|
Еще такой вопрос.
Похоже, что postgres доступен только "внутри" на серваке. Со своего |
|||
169
zelenprog
15.12.23
✎
09:47
|
... рабочего компа я не смог к нему подключиться.
В интернете прочитал, что надо у posgres-а какие-то специальные настройки сделать, чтобы он был доступен извне, в файлах postgresql.conf, pg_hba.conf. |
|||
170
DGorgoN
15.12.23
✎
09:50
|
(169) Вы ведь аппендицит не будете лечить по интернету своими силами я надеюсь. Самом собой там можно много настроек сделать только зачем постгри голой попой наружу выставлять? Но если уж хочется - то еще и роутер есть или как там у вас интернет устроен.
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |