Имя: Пароль:
1C
 
Помогите расковырять "свой" http-сервис (Linux, Rust, загрузка документов)
0 zelenprog
 
13.12.23
15:31
Здравствуйте!

В организации был запущен http-сервис. Сервер на Линуксе, доступ к серверу есть.

Этот http-сервис принимает электронные документы от внешней системы и складывает их где-то у себя на сервере.
К этому http-сервису подключается база 1С8 с помощью регламентного задания, посылает REST-запрос и получает от этого http-сервиса документы.

Этот механизм обмена делали спецы, которые уже не работают.

С некоторых пор этот http-сервис возвращает код состояния 502 и не "отдает" документы.
Программа, реализующая запрос, предположительно написана на Rust-е.

Помогите пожалуйста разобраться как это все работает.
Я с веб-технологиями мало знаком.
Исходники все есть. Только надо понять какой из этих исходников "отрабатывает" этот запрос.
Где это можно найти? Где искать? Что смотреть?
1 Волшебник
 
13.12.23
15:31
Хороший тамада и конкурсы интересные...
2 DGorgoN
 
13.12.23
15:37
Пойти что ли на форум хирургов записаться.. Сегодня прям повальные ветки беловолосых людей. Ищите специалиста кто поможет это расшифровать и переделывайте на 1С и учите запросы - это не сложно и позволяет практически любой разумный сервис организовать без всяких го и раст..
3 Valdis2007
 
13.12.23
15:41
(0) листинги исходников в студию!
4 PLUT
 
13.12.23
15:45
(0) > возвращает код состояния 502

этож неспроста
5 Лефмихалыч
 
13.12.23
15:48
502 значит, что:
1. у тебя есть какой-то веб-прокси, который принимает запросы извне и редиректит их по известным ему правилам куда-то еще
2. сервис, который за проксёй должен обрабатывать эти конкретные запросы, сдох и не отвечает проксе на запросы


Не поможет тут тебе ни кто. По телефону роды не принимаются.
6 Волшебник
 
13.12.23
15:49
(3) Нахер нам листинги на Rust? Пусть сами ковыряются в этой "ржавчине"
7 Лефмихалыч
 
13.12.23
15:51
да и не поможет листинг исходников сервиса потому, что проблема не в коде, а в чем-то, из-за чего собранный сервис не может подняться: место кончилось где-то или упало то, от чего зависит этот сервис (бд какая-нить или еще какой ресурс).

Тут надо в логи смотреть, но логов автор не найдет, исходя из (0)
8 DGorgoN
 
13.12.23
15:52
(5) Я думаю там пересадка генномодифицированного сердца от пришельцев с Нибуру вблизи от сверхмассивной черной дыры. Можно полгода потратить на изучение того что посторонний спец нашкодил. Я это по опыту говорю когда свои поделия 2-3 летней давности смотрю.
9 PLUT
 
13.12.23
15:53
(0) > Помогите пожалуйста разобраться как это все работает

в одной конторе начальник, если хотел разобраться - как это все работает - выключал неведомую херню и ждал, когда и откуда начнут вопить...

ясно понятно. теперь включаем. стало яснее и понятнее
10 Лефмихалыч
 
13.12.23
15:53
(2) организуй на 1С сервис, способный обработать 150000000 запросов в минуту без всяких го и растов за конечный бюджет
11 zelenprog
 
13.12.23
15:55
Нашел вот такой конфиг:

server {
    listen       80;
    server_name  ххх.ххх.ххх.ххх;
    access_log  /var/log/nginx/ххх.ххх.ххх.ххх.log  main;

    location / {
        proxy_pass http://127.0.0.1:3369/;
        proxy_read_timeout 300s;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_buffering off;
    }
}

Также нашел log-файл.
Вот что в нем:
----------------
192.168.1.131 - - [13/Dec/2023:15:41:47 +0300] "GET /api/v1/orders/list/today HTTP/1.1" 502 173 "-" "1C+Enterprise/8.3" "-"
----------------

Видно, что он принял запрос от 1С 8.3.
12 PLUT
 
13.12.23
15:55
(9) особое веселье - когда учетную запись какого-нибудь админа отключают в AD, а под его учеткой куча магических процессов и служб крутится :)))
13 DGorgoN
 
13.12.23
15:59
(10) Ну тут ведь еще размер запроса имеет значение. Но вообще ничего сложного не вижу. Хотя тут конкретно могут быть варианты с брокерами.
14 Лефмихалыч
 
13.12.23
16:00
(11) ну, вот, на порту 3369 что-то раньше обрабатывало запросы. Сейчас это что-то не запущено, по этому запросы улетают в барабан
15 Лефмихалыч
 
13.12.23
16:01
(13) вообще ничего сложного, просто 1С не осилит такой объем даже идемпотентных запросов.
16 PLUT
 
13.12.23
16:02
(0) > Этот механизм обмена делали спецы, которые уже не работают.

возможно абонплата закончилась, нужно баланс спецам пополнить
17 zelenprog
 
13.12.23
16:11
(14) А можно как-то найти, что обрабатывало запросы на порту 3369?

Еще на этом сервере работает Postgres. Скорее всего, данные хранятся на нем. А http-сервис их просто оттуда получает запросом и отправляет в 1С.
18 Arbuz
 
13.12.23
16:22
(17) Не может прокся гнать с 80 порта на постгрю напрямую )))
Телепатирую, что на 3369 висел тот самый сервис на раст, что как раз и брал ло́жил данные в базу постгри.
19 Asmody
 
13.12.23
16:23
(17)
$ ss -anp | grep '3369'

если линукс постарше, то же самое через netstat
20 Asmody
 
13.12.23
16:26
но скорее всего, сервис просто грохнулся.
посмотреть список грохнувшихся сервисов вот так:

systemctl list-units --type service --state failed
21 Arbuz
 
13.12.23
16:26
(0) Правильно тут говорят: самый простой (но не самый лучший, возможно) путь — посмотреть структуру базы постгрес и дёргать запросами прямо из 1С.
22 Asmody
 
13.12.23
16:26
а так - список всех сервисов

systemctl list-units --type service

и ищи среди них что-нибудь адекватное
23 Asmody
 
13.12.23
16:27
(21) неправильный это путь - дергать 1Ской что не попадя
24 zelenprog
 
13.12.23
16:28
(19) >> $ ss -anp | grep '3369'

Ничего не выдает.
А как можно найти, что должно быть запущено на этом порту?
25 Arbuz
 
13.12.23
16:31
(20) А если там нет системди? А всё на апстарте? Ну, или поделие это стартует скриптом из какого-нибудь эрси инит?
(23) Миллионы мух не могут ошибаться ))
26 Asmody
 
13.12.23
16:30
(24) никак. на нем может быть запущено что угодно.
собственно, остаётся только (20) - искать, кто не запустился, а должен был
27 Asmody
 
13.12.23
16:31
(25) процентов 80, что там есть systemd.
время упоротых красноглазиков, что сервера на генту держат, потихоньку проходит
28 Asmody
 
13.12.23
16:32
хуже, если оно в докере стартовало. тогда его долго можно искать. грепать докерфайлы по диску
29 Лефмихалыч
 
13.12.23
16:36
docker ps -a

покажет все контейнеры, включая потухшие. Но я думаю, что там нету никакого докера
30 zelenprog
 
13.12.23
16:56
Для запуска всех этих сервисов есть скрипт start_all_services.sh:

---------------
#!/bin/bash

cd /home/sysadmin/Development/
for service in xxx yyy zzz
do
    echo `date` Starting $service...
    cd $service
    rm nohup.out
    nohup ./start_service.sh&
    cd ..
done
---------------

Второй скрипт для "конкретного" сервиса:
---------------
#!/bin/bash

# Скрипт для запуска сервиса
RUST_LOG=info cargo run --bin xxx_service --release
---------------
31 Лефмихалыч
 
13.12.23
16:57
что внутри ./start_service.sh ?
32 zelenprog
 
13.12.23
16:59
(31)
#!/bin/bash
# Скрипт для запуска сервиса
RUST_LOG=info cargo run --bin xxx_service --release
33 Лефмихалыч
 
13.12.23
16:59
а, ну, запусти start_all_services.sh
оно или поднимется или в консоль тебе ошибок наблюёт - уже будет, что обсуждать
34 Лефмихалыч
 
13.12.23
16:59
файл xxx_service - это вот и есть бинарная эгзекутабля твоего сервиса
35 Лефмихалыч
 
13.12.23
17:00
ты порево какое-то раздаешь на порту 3369 штоля?
36 Лефмихалыч
 
13.12.23
17:02
а cargo - это как раз та эбанина, которая сервис запускает
https://rurust.github.io/cargo-docs-ru/guide.html
37 zelenprog
 
13.12.23
17:14
(33) >> а, ну, запусти start_all_services.sh

Запускали уже много раз. Все равно что-то не срабатывает.

(34) >> файл xxx_service - это вот и есть бинарная эгзекутабля твоего сервиса

Ага. Только это не бинарная, это файл "xxx_service.sh" вот с таким содержимым:

Подробности
-------------
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 = "Запуск сервиса";
}
----------------
38 Garykom
 
13.12.23
17:38
(37) "use yama::server::start_server;"

есть исходники?
39 Лефмихалыч
 
13.12.23
17:34
вот это руками запусти

$ RUST_LOG=debug cargo run --bin xxx_service --release

или так

$ RUST_LOG=debug && cargo run --bin xxx_service --release
40 Лефмихалыч
 
13.12.23
17:40
какое-то тупое дрочево (хотя, для сервиса с префиксом ххх_ это, видимо, логично). А что таки мешает обратиться к тем очкодавам, которые экструдировали из себя этот ххх_сервис?
41 DGorgoN
 
13.12.23
17:38
(15) Сомневаюсь что у учетной системы можно реально используемых запросов сделать ну разве что у вас не Газпром какой нибудь. Ну и тут понятно что брокеров придется использовать.
42 Лефмихалыч
 
13.12.23
17:39
(41) ни о чем разговор
43 MyNick
 
14.12.23
07:32
(12) Если под учеткой "админа" крутятся процессы и службы, то это не админ, а обычный рукопоп.
44 zelenprog
 
14.12.23
08:50
(40) >> А что таки мешает обратиться к тем очкодавам, которые экструдировали из себя этот ххх_сервис?

Их нету. Уехали. Поначалу отвечали на телефон и электронную почту. Потом перестали отвечать.
45 Волшебник
 
14.12.23
09:14
(44) Напишите новый сервис
46 Garykom
 
14.12.23
09:15
файлик yama.rs где то есть?
47 Garykom
 
14.12.23
09:17
(44) И правильно сделали.
А если контора рассталась с ключевыми спецами без приобретения равнозначной замены и передачи всех дел - ССЗБ.
48 novichok79
 
14.12.23
09:28
(0) хорошая задача, чтобы выучить Rust.
открываете RustRover и вперед.
можно вооружиться книжкой Rust в действии, будет хорошая строчка в резюме, если вам зайдет и решите уйти из 1С.
в целом код читается, я как-то переписывал rust механизм на golang, в одном пет-проекте.
49 zelenprog
 
14.12.23
09:36
(39) >>$ RUST_LOG=debug cargo run --bin xxx_service --release

выдает ошибку:
error: no override and no default toolchain set
50 novichok79
 
14.12.23
09:37
(49) вангую что растовский тулчейн проебан или не установлен в контейнере. но это неточно разумеется.
51 novichok79
 
14.12.23
09:38
52 novichok79
 
14.12.23
09:39
и да, что же там в yama.rs такое лежит. исходники в студию.
53 novichok79
 
14.12.23
09:40
и вообще дрочь какая-то, cargo run именно компилит и запускает бинарь. а почему сразу не скомпилить и выкинуть ненужный никому тулчейн?
54 Garykom
 
14.12.23
09:43
(53) чтобы исходники всегда были
и по сути они настройки так меняют
чтобы не выносить их

например порт 3369 походу захардкожен в яме
55 novichok79
 
14.12.23
09:46
(54) странная логика. можно исходники просто куда-нибудь положить рядом. есть шанс что их проебут, но если их проебут, плохо все с процессами в команде мечты.
какое-то вырезание гланд через прямую кишку.
менять настройки через компиляцию - а почему не env файл хотя бы? я уж не говорю про загрузку из какого-нибудь читаемого yaml файла для нужной среды, но уже CI/CD делать надо.
видимо спецы не догадались.
это как делать сервис и запускать его через go run. такое себе.
56 novichok79
 
14.12.23
09:46
и да, почему нет нормальных логов? шо там за гении CRUD'ы такие пишут с пробросом настроек через код.
57 novichok79
 
14.12.23
09:51
58 Garykom
 
14.12.23
09:54
(57) "пи..ц" - это потерять людей (имхо зарплату не подняли), которые разбираются в инфраструктуре
а потом удивляться что нанятые взамен на большую зарплату (чем была у спецов до) но ниже уровнем сотрудники "не шмогла"
59 novichok79
 
14.12.23
09:56
(58) никого не защищаю, но спецы ли это или бомжи с вокзала (зачеркнуто)? "спецы", которые не смогли ни CI/CD нормальный сделать, развернуть какой-нибудь Gitlab для своего проекта, ни файлы настроек добавить.
60 Garykom
 
14.12.23
09:57
(59) им столько не платили ))
61 Garykom
 
14.12.23
09:58
(59) да и зачем CI/CD на одном инстансе, к тому же вероятно это сделанная на коленке заплатка
которую конечно же планировали переписать но как обычно
62 novichok79
 
14.12.23
09:59
(60) я бы изначально не согласился. но это я.
еще и напейсали на расте, на котором полторы вакансии на hh.
рукалицо прост.
63 Garykom
 
14.12.23
09:59
само название "яма" ("use yama") намекает
64 novichok79
 
14.12.23
09:59
(61) можно было использовать чтобы потом прикручивать к 1Сине той же всякие новомодные штучки с ИС.
но видимо контора мечты не про это.
65 novichok79
 
14.12.23
10:00
(63) кек. согласен.
66 Garykom
 
14.12.23
10:00
(62) Таки Rust это очень перспективная штука, которая в будущем имеет все шансы заменить C++
Но для подобных бэк/сервисных задач конечно лучше подходит Golang
67 novichok79
 
14.12.23
10:02
(66) ну это так говорят.
а на деле на рынОчке 1,5 вакухи.
68 zelenprog
 
14.12.23
10:21
Ребята, подождите, не разбегайтесь, через 10 мин исходники выложу.
69 zelenprog
 
14.12.23
10:22
(50) >> вангую что растовский тулчейн проебан или не установлен в контейнере. но это неточно разумеется.

А куда этот тулчейн мог пропасть, если ничего с сервером не делали?
70 novichok79
 
14.12.23
10:26
(69) не, там на стековерфлоу было написано что такое может быть из-за сетевой ошибки при установке тулчейна.
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) Вы ведь аппендицит не будете лечить по интернету своими силами я надеюсь. Самом собой там можно много настроек сделать только зачем постгри голой попой наружу выставлять? Но если уж хочется - то еще и роутер есть или как там у вас интернет устроен.
Компьютеры — это как велосипед. Только для нашего сознания. Стив Джобс