Patrebna bot - Π±ΠΎΡ ΠΏΠ°ΡΡΠ΅Ρ, ΠΊΠΎΡΠΎΡΡΠΉ ΠΎΡΡΠ»Π΅ΠΆΠΈΠ²Π°Π΅Ρ ΠΈ ΠΎΠΏΠΎΠ²Π΅ΡΠ°Π΅Ρ ΠΎ ΠΏΠΎΡΠ²Π»Π΅Π½ΠΈΠΈ Π½ΠΎΠ²ΡΡ ΠΎΠ±ΡΡΠ²Π»Π΅Π½ΠΈΠΉ Π½Π° ΠΏΠ»ΠΎΡΠ°Π΄ΠΊΠ΅ Kufar. Π‘ΠΎΠΎΠ±ΡΠ΅Π½ΠΈΡ ΠΏΡΠΈΡ ΠΎΠ΄ΡΡ Π² Π»ΠΈΡΠ½ΡΡ ΠΏΠ΅ΡΠ΅ΠΏΠΈΡΠΊΡ Ρ Π±ΠΎΡΠΎΠΌ.
Π§ΡΠΎ Π±Ρ Π½Π°ΡΠ°ΡΡ, Π΄ΠΎΡΡΠ°ΡΠΎΡΠ½ΠΎ Π·Π°ΠΏΡΡΡΠΈΡΡ Π±ΠΎΡΠ° /start
ΠΈ Π΄ΠΎΠ±Π°Π²ΠΈΡΡ ΡΡΡΠ»ΠΊΡ Π΄Π»Ρ ΠΎΡΡΠ»Π΅ΠΆΠΈΠ²Π°Π½ΠΈΡ (Ρ Π²ΡΠ±ΡΠ°Π½Π½ΠΎΠΉ ΠΊΠ°ΡΠ΅Π³ΠΎΡΠΈΠ΅ΠΉ ΠΈ Π½Π°ΡΡΡΠΎΠ΅Π½Π½ΡΠΌΠΈ ΡΠΈΠ»ΡΡΡΠ°ΠΌΠΈ ΡΠΎΠ²Π°ΡΠΎΠ²) - https://kufar.by/l/Π³ΠΎΡΠΎΠ΄/ΡΠΎΠ²Π°Ρ/.
- ΠΠ»Π°Π²Π½ΠΎΠ΅ ΡΠΎΡΠΎ
- ΠΠ°Π³ΠΎΠ»ΠΎΠ²ΠΎΠΊ
- ΠΠΏΠΈΡΠ°Π½ΠΈΠ΅ (Π΅ΡΠ»ΠΈ Π΅ΡΡΡ)
- Π¦Π΅Π½Π°
- Π‘ΡΡΠ»ΠΊΠ° Π½Π° ΠΎΠ±ΡΡΠ²Π»Π΅Π½ΠΈΠ΅
- ΠΠ°ΡΠ°ΠΌΠ΅ΡΡΡ ΠΌΠΎΠ³ΡΡ Π²Π°ΡΡΠΈΡΠΎΠ²Π°ΡΡΡΡ Π² Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ ΠΎΡ ΠΊΠ°ΡΠ΅Π³ΠΎΡΠΈΠΈ ΠΎΠ±ΡΡΠ²Π»Π΅Π½ΠΈΠΉ (ΠΠ΅Π΄Π²ΠΈΠΆΠΈΠΌΠΎΡΡΡ, ΠΠ²ΡΠΎ ΠΈΠ»ΠΈ ΠΡΡΠ³ΠΎΠ΅).
ΠΠ°ΡΡΠΈΠ½Π³ ΠΊΠΎΠΌΠΌΠ΅ΡΡΠΈΡΠΊΠΈΡ ΠΎΠ±ΡΡΠ²Π»Π΅Π½ΠΈΠΉ ΠΎΡΠΊΠ»ΡΡΠ΅Π½ ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ.
Π§ΡΠΎ Π±Ρ Π²ΠΊΠ»ΡΡΠΈΡΡ - ΡΠ±Π΅ΡΠΈΡΠ΅ ΠΈΠ· ΠΊΠΎΠ΄Π° src/parsers/kufar/categories/other.ts (ΠΏΡΠΈΠΌΠ΅Ρ) isNotCompanyAd
.
- Π ΠΊΠΎΡΠ½Π΅ ΠΏΡΠΎΠ΅ΠΊΡΠ° Π½ΡΠΆΠ½ΠΎ ΡΠΎΠ·Π΄Π°ΡΡ ΡΠ°ΠΉΠ» ΠΎΠΊΡΡΠΆΠ΅Π½ΠΈΡ -
touch .env
.
MONGO_INITDB_ROOT_USERNAME= ΠΠΠ―_ΠΠΠΠ¬ΠΠΠΠΠ’ΠΠΠ―_ΠΠ
MONGO_INITDB_ROOT_PASSWORD= ΠΠΠ ΠΠΠ¬_ΠΠΠΠ¬ΠΠΠΠΠ’ΠΠΠ―_ΠΠ
TELEGRAM_BOT_TOKEN= Π’ΠΠΠΠ_ΠΠΠ’Π_Π’ΠΠΠΠΠ ΠΠ
WEBHOOK_HOST= ΠΠΠ ΠΠ‘_Π‘ΠΠ ΠΠΠ Π (IP)
WEBHOOK_PORT= ΠΠΠ Π’ (ΠΎΠ±ΡΡΠ½ΠΎ 8443 ΠΈΠ»ΠΈ 443 Π΄Π»Ρ ssl)
- Π ΠΊΠΎΡΠ½Π΅ ΠΏΡΠΎΠ΅ΠΊΡΠ° Π½ΡΠΆΠ½ΠΎ ΡΠΎΠ·Π΄Π°ΡΡ Π΄ΠΈΡΠ΅ΠΊΡΠΎΡΠΈΡ Π΄Π»Ρ Ρ
ΡΠ°Π½Π΅Π½ΠΈΠ΅ ΡΠ΅ΡΡΠΈΡΠΈΠΊΠ°ΡΠΎΠ² -
mkdir certs
. - ΠΠ΅ΡΠ΅Ρ
ΠΎΠ΄ΠΈΠΌ Π² Π΄ΠΈΡΠ΅ΠΊΡΠΎΡΠΈΡ
cd certs
ΠΈ Π² Π½Π΅ΠΉ ΡΠΎΠ·Π΄Π°Π΅ΠΌ Π΄Π²Π΅ ΠΏΠΎΠ΄Π΄ΠΈΡΠ΅ΠΊΡΠΎΡΠΈΠΈmkdir mongodb && mkdir bot
- Π‘ΠΎΠ·Π΄Π°Π΅ΠΌ Π΄Π²Π° ΡΠ°ΠΉΠ»Π° ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΡΠΈΠΈ
touch openssl.cnf && touch config.cnf
Openssl.cnf
[ req ]
distinguished_name = x509_distinguished_name
x509_extensions = x509_ext
prompt = no
default_md = sha256
[ x509_distinguished_name ]
CN = ΠΠ±ΡΠ΅Π΅ Π½Π°Π·Π²Π°Π½ΠΈΠ΅
O = ΠΠ°Π·Π²Π°Π½ΠΈΠ΅ ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠΈ
L = ΠΠΎΡΠΎΠ΄
C = Π Π΅Π³ΠΈΠΎΠ½
[ x509_ext ]
basicConstraints = critical,CA:true
keyUsage = critical, keyCertSign, cRLSign
Config.cnf
[ req ]
distinguished_name = x509_distinguished_name
x509_extensions = x509_ext
prompt = no
default_md = sha256
[ x509_distinguished_name ]
CN = ΠΠ±ΡΠ΅Π΅ Π½Π°Π·Π²Π°Π½ΠΈΠ΅ (ΠΠΎΠ»ΠΆΠ½ΠΎ ΠΎΡΠ»ΠΈΡΠ°ΡΡΡΡ ΠΎΡ openssl.cnf ΠΈΠ½Π°ΡΠ΅ ΡΠ΅ΡΡΠΈΡΠΈΠΊΠ°ΡΡ Π±ΡΠ΄ΡΡ ΡΡΠΈΡΠ°ΡΡΡΡ ΡΠ°ΠΌΠΎΠΏΠΎΠ΄ΠΏΠΈΡΠ°Π½Π½ΡΠΌΠΈ)
O = ΠΠ°Π·Π²Π°Π½ΠΈΠ΅ ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠΈ
L = ΠΠΎΡΠΎΠ΄
C = Π Π΅Π³ΠΈΠΎΠ½
[ x509_ext ]
basicConstraints = critical,CA:false
keyUsage = critical,digitalSignature,keyEncipherment
extendedKeyUsage = serverAuth, clientAuth
subjectAltName = @alt_names
[ alt_names ]
IP.1 = ΠΠΎΠ²Π΅ΡΠ΅Π½Π½ΡΠΉ Π°Π΄ΡΠ΅Ρ (IP ΡΠ΅ΡΠ²Π΅ΡΠ°)
- Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ ΡΠ΅ΡΡΠ° ΡΠ΅ΡΡΠΈΡΠΈΠΊΠ°ΡΠΈΠΈ
openssl genrsa -out ca-key.pem 4096
openssl req -x509 -new -nodes -key ca-key.pem -sha256 -days 365 -out ca.pem -config openssl.cnf
- Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ ΡΠ΅ΡΡΠΈΡΠΈΠΊΠ°ΡΠ° Π΄Π»Ρ Mongodb
openssl genrsa -out mongodb/mongodb-key.pem 4096
openssl req -new -key mongodb/mongodb-key.pem -out mongodb/mongodb.csr -config config.cnf
openssl x509 -req -in mongodb/mongodb.csr -CA ca.pem -CAkey ca-key.pem -CAcreateserial -out mongodb/mongodb-cert.pem -days 365 -sha256
cat mongodb/mongodb-cert.pem mongodb/mongodb-key.pem > mongodb/mongodb.pem
- Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ ΠΊΠ»ΠΈΠ΅Π½ΡΡΠΊΠΎΠ³ΠΎ ΡΠ΅ΡΡΠΈΡΠΈΠΊΠ°ΡΠ°
openssl genrsa -out client-key.pem 4096
openssl req -new -key client-key.pem -out client.csr -config config.cnf
openssl x509 -req -in client.csr -CA ca.pem -CAkey ca-key.pem -CAcreateserial -out client-cert.pem -days 365 -sha256
cat client-cert.pem client-key.pem > client.pem
- Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ SSL ΡΠ΅ΡΡΠΈΡΠΈΠΊΠ°ΡΠ° Π΄Π»Ρ webhook
openssl req -x509 -newkey rsa:2048 -keyout bot/key.pem -out bot/cert.pem -days 365 -nodes -subj "/CN=IP_Π‘ΠΠ ΠΠΠ Π"
ΠΠΎΠ΄ΡΠΎΠ±Π½Π΅Π΅ ΠΎΠ± SSL Π΄Π»Ρ ΡΠ΅Π»Π΅Π³ΡΠ°ΠΌ Π±ΠΎΡΠΎΠ²
ΠΠ»Ρ ΡΡΠ°ΡΡΠ° ΠΏΡΠΎΠ΅ΠΊΡΠ° (ΠΈΠ· ΠΊΠΎΡΠ½Π΅Π²ΠΎΠΉ ΠΏΠ°ΠΏΠΊΠΈ).
cd .Docker && docker-compose --env-file ../.env up -d
- ΠΠΎΡ - ΠΌΡΠ»ΡΡΠΈΡΠ·ΡΡΠ½ΡΠΉ ΠΈ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°Π΅Ρ Π΄Π²Π° ΡΠ·ΡΠΊΠ° (ΡΡΡΡΠΊΠΈΠΉ ΠΈ Π±Π΅Π»ΠΎΡΡΡΡΠΊΠΈΠΉ).
- ΠΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ ΠΏΡΠΎΠ²Π΅ΡΠΊΠ° Π½Π°Π»ΠΈΡΠΈΡ Π½ΠΎΠ²ΡΡ ΠΎΠ±ΡΡΠ²Π»Π΅Π½ΠΈΠΉ Π²ΡΠΏΠΎΠ»Π½ΡΠ΅ΡΡΡ ΡΠ°Π· Π² 15 ΠΌΠΈΠ½ΡΡ (*/15).
- ΠΠΈΡΠ΅ΠΊΡΠΎΡΠΈΡ .github Π½ΡΠΆΠ½Π° ΡΠΎΠ»ΡΠΊΠΎ Π΄Π»Ρ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠΈ ΠΈ Π΄Π΅ΠΏΠ»ΠΎΡ Π½Π° ΡΠ΅ΡΠ²Π΅Ρ (Π΅Π΅ ΠΌΠΎΠΆΠ½ΠΎ ΡΠ΄Π°Π»ΠΈΡΡ).
ΠΡΠΎΠ΅ΠΊΡ Patrebna ΡΠ°ΡΠΏΡΠΎΡΡΡΠ°Π½ΡΠ΅ΡΡΡ ΠΏΠΎ Π»ΠΈΡΠ΅Π½Π·ΠΈΠΈ MIT.