Compare commits
9 Commits
| Author | SHA1 | Date |
|---|---|---|
|
|
96bc6ceed0 | |
|
|
4d44da4ecf | |
|
|
9273fd7e9a | |
|
|
990d6e9a38 | |
|
|
6b96d4971a | |
|
|
c1029f5a6a | |
|
|
2fd6c40360 | |
|
|
da84a05980 | |
|
|
ff5115d489 |
Binary file not shown.
Binary file not shown.
|
|
@ -13,10 +13,10 @@ sys.path.insert(0, project_root)
|
|||
|
||||
# print(db_price)
|
||||
|
||||
# download_products()
|
||||
download_products()
|
||||
download_prices()
|
||||
|
||||
decrypt_and_unpack("prices")
|
||||
# decrypt_and_unpack("products")
|
||||
# add_product()
|
||||
decrypt_and_unpack("products")
|
||||
add_product()
|
||||
update_prices()
|
||||
|
|
|
|||
15
API/rok.py
15
API/rok.py
|
|
@ -4,6 +4,7 @@ load_dotenv()
|
|||
import sqlite3
|
||||
import requests
|
||||
|
||||
|
||||
conn = sqlite3.connect("./files/rokky.db")
|
||||
partner = os.getenv('partner')
|
||||
user_name = os.getenv('userName')
|
||||
|
|
@ -25,14 +26,15 @@ json_data = {
|
|||
def tokens():
|
||||
response = requests.post('https://partner.rokky.com/api/v1/tokens', headers=headers, json=json_data)
|
||||
|
||||
# print(response.json())
|
||||
print(response.json())
|
||||
data = response.json()
|
||||
access_token = data["accessToken"]
|
||||
return access_token
|
||||
|
||||
# access_token = tokens()
|
||||
|
||||
def get_orders(access_token, page=1, page_size=25):
|
||||
def get_orders(page=1, page_size=25):
|
||||
access_token = tokens()
|
||||
url = f"{BASE_URL}/orders"
|
||||
|
||||
headers = {
|
||||
|
|
@ -82,6 +84,7 @@ def download_prices():
|
|||
|
||||
def create_order(sku, unit_price, partner_order_id):
|
||||
# try:
|
||||
access_token = tokens()
|
||||
conn = sqlite3.connect("./files/rokky.db")
|
||||
cursor = conn.cursor()
|
||||
url = f"{BASE_URL}/orders"
|
||||
|
|
@ -99,7 +102,7 @@ def create_order(sku, unit_price, partner_order_id):
|
|||
"unitPrice": float(unit_price)
|
||||
}
|
||||
],
|
||||
"partnerOrderId": f"my-orders{partner_order_id}"
|
||||
"partnerOrderId": partner_order_id
|
||||
}
|
||||
|
||||
try:
|
||||
|
|
@ -142,6 +145,7 @@ def create_order(sku, unit_price, partner_order_id):
|
|||
# return response.json()
|
||||
|
||||
def get_orders(page=1, page_size=25):
|
||||
access_token = tokens()
|
||||
url = f"{BASE_URL}/orders"
|
||||
|
||||
headers = {
|
||||
|
|
@ -161,6 +165,7 @@ def get_orders(page=1, page_size=25):
|
|||
|
||||
|
||||
def get_order_content(order_id):
|
||||
access_token = tokens()
|
||||
conn = sqlite3.connect("./files/rokky.db")
|
||||
|
||||
cursor = conn.cursor()
|
||||
|
|
@ -191,14 +196,14 @@ def get_order_content(order_id):
|
|||
return content
|
||||
|
||||
|
||||
# content = get_order_content(5388720)
|
||||
# content = get_order_content(5390872)
|
||||
# print(content)
|
||||
|
||||
# orders = get_orders()
|
||||
# print(orders)
|
||||
|
||||
|
||||
# order = create_order(22785, 22.63, "my-test-order-122w3")
|
||||
# order = create_order(2197, 0.13, "sss22289522")
|
||||
# print(order)
|
||||
|
||||
|
||||
|
|
|
|||
75
API/rokky.py
75
API/rokky.py
|
|
@ -16,6 +16,42 @@ password = os.getenv('password')
|
|||
conn = sqlite3.connect("./files/rokky.db")
|
||||
|
||||
|
||||
|
||||
def update_prices():
|
||||
|
||||
with open("./files/prices.json", "r") as f:
|
||||
prices = json.load(f)
|
||||
conn = sqlite3.connect("./files/rokky.db")
|
||||
cursor = conn.cursor()
|
||||
|
||||
data = []
|
||||
for item in prices:
|
||||
sku = item["sku"]
|
||||
price = item.get("price")
|
||||
price_gg = item.get("baseSuggestedRetailPrice")
|
||||
price_sales = item.get("discountPercentage")
|
||||
is_sale = item.get("isSale")
|
||||
|
||||
data.append((
|
||||
price,
|
||||
price_gg,
|
||||
price_sales,
|
||||
is_sale,
|
||||
sku,
|
||||
))
|
||||
|
||||
cursor.executemany("""
|
||||
UPDATE products
|
||||
SET
|
||||
price = ?,
|
||||
price_gg = ?,
|
||||
price_sales = ?,
|
||||
insale = ?
|
||||
WHERE sku = ?
|
||||
""", data)
|
||||
print("Обновил цены")
|
||||
conn.commit()
|
||||
|
||||
def decrypt_file(input_file, output_file, password):
|
||||
with open(input_file, "rb") as f:
|
||||
encrypted = f.read()
|
||||
|
|
@ -56,8 +92,10 @@ def decrypt_and_unpack(name):
|
|||
with gzip.open(gz, "rb") as f_in:
|
||||
with open(json_file, "wb") as f_out:
|
||||
shutil.copyfileobj(f_in, f_out)
|
||||
|
||||
|
||||
print(f"Готово: {json_file}")
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
|
@ -94,6 +132,7 @@ def get_genres(product):
|
|||
|
||||
|
||||
def save_product(conn, product):
|
||||
conn = sqlite3.connect("./files/rokky.db")
|
||||
cursor = conn.cursor()
|
||||
|
||||
cursor.execute("""
|
||||
|
|
@ -164,41 +203,9 @@ def add_product():
|
|||
|
||||
|
||||
|
||||
def update_prices():
|
||||
with open("./files/prices.json", "r") as f:
|
||||
prices = json.load(f)
|
||||
|
||||
cursor = conn.cursor()
|
||||
|
||||
data = []
|
||||
for item in prices:
|
||||
sku = item["sku"]
|
||||
price = item.get("price")
|
||||
price_gg = item.get("baseSuggestedRetailPrice")
|
||||
price_sales =item.get("discountPercentage")
|
||||
is_sale = item.get("isSale")
|
||||
|
||||
data.append((
|
||||
price,
|
||||
price_gg,
|
||||
price_sales,
|
||||
is_sale,
|
||||
sku
|
||||
))
|
||||
|
||||
cursor.executemany("""
|
||||
UPDATE products
|
||||
SET
|
||||
price = ?,
|
||||
price_gg = ?,
|
||||
price_sales = ?,
|
||||
insale = ?
|
||||
WHERE sku = ?
|
||||
""", data)
|
||||
|
||||
conn.commit()
|
||||
|
||||
# decrypt_and_unpack("prices")
|
||||
# decrypt_and_unpack("products")
|
||||
# add_product()
|
||||
# update_prices()
|
||||
update_prices()
|
||||
2
API/ww
2
API/ww
|
|
@ -1 +1 @@
|
|||
id_i=34534345435&id_d=102180432&amount=33&curr=USD&date=2026-03-20T10:43:09+03:00&email=rusinowdima2@yandex.ru&sha256=5110eb4a7aa7c60d66f9648db40027f241c52673a6a7c9a136e27a02fd1711fb&ip={IP}&isMyProduct=true
|
||||
5110eb4a7aa7c60d66f9648db40027f241c52673a6a7c9a136e2a02fd1711fb&amount=1.0¤cy=RUB&date=2026-03-20T10=43=09+03=00&email=rusinowdima2@yandex.ru&id_d=102180432&id_i=21327450&ip=188.32.208.151&is_my_product=true
|
||||
56
Dockerfile
56
Dockerfile
|
|
@ -1,29 +1,29 @@
|
|||
FROM python:3.12-slim-bookworm
|
||||
|
||||
# The installer requires curl (and certificates) to download the release archive
|
||||
RUN apt-get update && apt-get install -y --no-install-recommends curl ca-certificates nano
|
||||
|
||||
# Download the latest installer
|
||||
ADD https://astral.sh/uv/install.sh /uv-installer.sh
|
||||
|
||||
# Run the installer then remove it
|
||||
RUN sh /uv-installer.sh && rm /uv-installer.sh
|
||||
|
||||
# Ensure the installed binary is on the `PATH`
|
||||
ENV PATH="/root/.local/bin/:$PATH"
|
||||
|
||||
|
||||
# Copy the project into the image
|
||||
ADD . /app
|
||||
|
||||
# Sync the project into a new environment, using the frozen lockfile
|
||||
WORKDIR /app
|
||||
|
||||
RUN uv sync --frozen
|
||||
|
||||
# Expose port 8000
|
||||
EXPOSE 5205
|
||||
|
||||
|
||||
# Presuming there is a `my_app` command provided by the project uvicorn main:app --reload
|
||||
FROM python:3.12-slim-bookworm
|
||||
|
||||
# The installer requires curl (and certificates) to download the release archive
|
||||
RUN apt-get update && apt-get install -y --no-install-recommends curl ca-certificates nano
|
||||
|
||||
# Download the latest installer
|
||||
ADD https://astral.sh/uv/install.sh /uv-installer.sh
|
||||
|
||||
# Run the installer then remove it
|
||||
RUN sh /uv-installer.sh && rm /uv-installer.sh
|
||||
|
||||
# Ensure the installed binary is on the `PATH`
|
||||
ENV PATH="/root/.local/bin/:$PATH"
|
||||
|
||||
|
||||
# Copy the project into the image
|
||||
ADD . /app
|
||||
|
||||
# Sync the project into a new environment, using the frozen lockfile
|
||||
WORKDIR /app
|
||||
|
||||
RUN uv sync --frozen
|
||||
|
||||
# Expose port 8000
|
||||
EXPOSE 5205
|
||||
|
||||
|
||||
# Presuming there is a `my_app` command provided by the project uvicorn main:app --reload
|
||||
CMD ["uv", "run", "main.py"]
|
||||
Binary file not shown.
Binary file not shown.
|
|
@ -4,11 +4,12 @@ import os
|
|||
import sqlite3
|
||||
import json
|
||||
# from services.rokky import ones
|
||||
from API.rok import create_order, get_order_content
|
||||
from API.rok import create_order, get_order_content, get_orders
|
||||
from API.TG import send_telegram
|
||||
from services.orders import get_sku
|
||||
from services.gg import get_product, create_messagea
|
||||
from services.send_mai import send_html_flow
|
||||
# from services.orders_rokky import rok_orders
|
||||
|
||||
import logging
|
||||
|
||||
|
|
@ -21,7 +22,9 @@ IMAGE_FOLDER = os.path.join(BASE_DIR, 'images')
|
|||
|
||||
@main.route("/")
|
||||
def index():
|
||||
return "Hello wstkeys!!!"
|
||||
print(get_orders())
|
||||
return "Hello wstkeys! Hello1"
|
||||
|
||||
|
||||
@main.route("/images/<filename>")
|
||||
def get_image(filename):
|
||||
|
|
@ -45,7 +48,7 @@ def index1():
|
|||
content = json.dumps(params, ensure_ascii=False)
|
||||
send_telegram(content)
|
||||
|
||||
message = f"🔹Спасибо за покупку в WST Keys (West Store Trusted Keys)\n\n ⏳ Ваш заказ обрабатывается и будет доставлен автоматически"
|
||||
message = f"🔹 Спасибо за покупку в WST Keys (West Store Trusted Keys)\n\n⏳ Ваш заказ обрабатывается и будет доставлен автоматически"
|
||||
create_messagea(id_i, message)
|
||||
#
|
||||
sku_rokky, price_rokky = get_sku(id_d)
|
||||
|
|
@ -70,6 +73,7 @@ def index1():
|
|||
return jsonify({"error": str(e)}), 500
|
||||
|
||||
conn.close()
|
||||
|
||||
send_telegram(create_order(sku_rokky, price_rokky, id_i))
|
||||
|
||||
return jsonify({"success": True}), 200
|
||||
|
|
@ -97,7 +101,7 @@ def new_order():
|
|||
send_telegram(order_id)
|
||||
|
||||
logging.warn(f"newOrder: {order_id}")
|
||||
get_order_content(order_id)
|
||||
# get_order_content(int(order_id))
|
||||
send_html_flow(order_id)
|
||||
|
||||
|
||||
|
|
@ -133,7 +137,7 @@ def sku():
|
|||
def product_update():
|
||||
# получаем параметры
|
||||
sku = request.args.get("rokky")
|
||||
ggsale = request.args.get("ggsale")
|
||||
ggsale = request.args.get("ggsel")
|
||||
|
||||
if not sku or not ggsale:
|
||||
return jsonify({"error": "Missing parameters"}), 400
|
||||
|
|
|
|||
|
|
@ -12,33 +12,26 @@ services:
|
|||
- ./nginx/certbot/conf:/etc/letsencrypt
|
||||
extra_hosts:
|
||||
- "host.docker.internal:host-gateway"
|
||||
depends_on:
|
||||
- web
|
||||
restart: always
|
||||
|
||||
wg-client:
|
||||
image: ghcr.io/linuxserver/wireguard
|
||||
container_name: wg-client
|
||||
cap_add:
|
||||
- NET_ADMIN
|
||||
- SYS_MODULE
|
||||
environment:
|
||||
- PUID=1000
|
||||
- PGID=1000
|
||||
- TZ=Europe/Amsterdam
|
||||
volumes:
|
||||
- ./wg:/config # сюда кладём ./wg/wg_confs/wg0.conf
|
||||
restart: always
|
||||
|
||||
web:
|
||||
build: .
|
||||
container_name: flask-dev
|
||||
privileged: true # ✅ Даёт все права
|
||||
ports:
|
||||
- "5205:5205" # Пробрасываем порт наружу
|
||||
volumes:
|
||||
# Главная строка: монтируем текущую папку с кодом (.)
|
||||
# в папку /app внутри контейнера
|
||||
- .:/app
|
||||
environment:
|
||||
- FLASK_DEBUG=1
|
||||
- PYTHONUNBUFFERED=1
|
||||
network_mode: "service:wg-client" # весь трафик Flask через VPN
|
||||
depends_on:
|
||||
- wg-client
|
||||
restart: always
|
||||
- FLASK_DEBUG=1 # Дополнительная страховка для включения дебага
|
||||
- PYTHONUNBUFFERED=1 # Чтобы логи выводились сразу, а не кэшировались
|
||||
- eKCPpyzkcCTS=${eKCPpyzkcCTS:-}
|
||||
restart: always
|
||||
cap_add:
|
||||
- NET_ADMIN
|
||||
- SYS_MODULE
|
||||
devices:
|
||||
- /dev/net/tun:/dev/net/tun
|
||||
depends_on: []
|
||||
|
|
|
|||
|
|
@ -0,0 +1,9 @@
|
|||
import sqlite3
|
||||
|
||||
conn = sqlite3.connect("./files/rokky.db")
|
||||
cursor = conn.cursor()
|
||||
|
||||
cursor.execute("DROP TABLE IF EXISTS orders")
|
||||
|
||||
conn.commit()
|
||||
conn.close()
|
||||
|
|
@ -0,0 +1 @@
|
|||
{"creation_dt": "2026-03-19T08:29:34Z", "creation_host": "c9d15910341c"}
|
||||
|
|
@ -0,0 +1 @@
|
|||
{"n": "yBq2Uju0sDvIcExzaLnTOt-Kf0lyH8lUhTZ1qS7bOSS2mUiFySawp0ONluxJmeyq1oNoMEKb_TS3047fh6argtGL9Ty5LziCrUHsSPzsJeEK7viMu7bjVRjpPRyRk-TggK0H1NLObKkyNlOWDA8wWbFvNcoddhzvpeMeVMFy1jpBYXDTJc8GvPgv0ubs2zTaYplu6ru9TWNd8QkESdhm6DH_iU1Ph4ALtPRIIbF43xi8GHlSYnbDTKqVNph-i0tIymXCbIMvR-dNMsjA4VuoQeiu9-lKEAT1ytapKshTzOl9cIPpbD3e_70tx5BKtL1L-o3rn4g2zNuWpEPgBhQJ4w", "e": "AQAB", "d": "Eh0c6Pe_pP5caBH7lnzPyrIGmvweiRMUBBUIdJ6puJQCtYBzn-BROGrsi79q8DSUyGNP0KKO9U5K36s8v85OE0L9vN7Y0pX2elGP3pGKnOkwsK4uKyXkkUT2hBIseWtMCUngfhrxFbQBOBq75-6ODWh67S8VGKaI6QbUrY5vY0XsocU4fARL2WihenO9Rajkz0MbvEzRePksAySKelJYLbR8h7I5PX0WxuJaekkzaGf1XeboWCCxZ_DVcwEBp9xGeignLmCrKNkwta6hqRCB5vgIyCUoybuyjr95tSYuC5iN-LDFN2rzg0T4xNw2Z8dxuyah5mpw75G-umo0WRhAaQ", "p": "9Dx8RANkz70StHJEKuLXN-ElexVnOHwXVjGACp97sSykY_3GdE7cHO2iz9HYibH1oyS7ycvzkfJPbFwoZ4gM2k7EM6mQgDB9M76sHDjzzBDAZAQVyNNrW5DH1H3rtMcRFc2ZWX5knY8sdKP5g5QvsQCdI0eS5p_RaWHDxi03qAs", "q": "0b4Qv39qzZz-GuhGbI4Np1T8-26arCNduSeSkkdmgWMQBlaymACt7ryRV1DrItisLhTC8EJoSTXWy5C8ZcVjZfwh67A0cjmC2DwQapaTnilvl0JdmDLDDyDVhtLMIPEmSqCpcx3vORoRSxY2beOQaOpu6gAK6s-mlyXvxG-m1Ik", "dp": "kKTlv233HWTPmBh4MKHpbgmkJfH2EKjFNWHZf_EV00cqEKHyD13I1EUUgFm6EUpYvIb7xDZKiSvlR7qIn1AetIejgSkyEAknjSamTYyZLkjZeCJHOImlcjQbdMgieQzQHIaIBE1rjziEzotyMS_o0r4XUhaIdJc_8VZaGJsc9CM", "dq": "FUAckkpml86AMFm4SOdbmsiRmSfro-UxacEIqKlzSUiwJvRBxATNmpKgZyhbqnwpdcHEvnL7_e7mhFl1vRnyqDKTfT2tEqWhDCeJwkLfUfcAx2KB-RmriazZ9X8GD5BfQNBmWrN9uVtaxTDK8vdLelXGRw8aDBBd4JKHaG-nh4E", "qi": "A8sTN4oiNeWkKX-rWr1LGJ_VfvCX4nBQ_Psa24HWJnWk6ATNcnf8otZCXAssNeb-vwBrBqy09C5ynX8k3w1OBcWKh12mBezhUPvPAHfeazfGNZTPYKDpn80uTsd0RZaDvmisJW6Obwh9Thorqkstnc2VypPUom66mx-fMjgF90M", "kty": "RSA"}
|
||||
|
|
@ -0,0 +1 @@
|
|||
{"body": {}, "uri": "https://acme-v02.api.letsencrypt.org/acme/acct/3159531281"}
|
||||
|
|
@ -0,0 +1,21 @@
|
|||
-----BEGIN CERTIFICATE-----
|
||||
MIIDizCCAxGgAwIBAgISBRYz4Bp7cHMTbq0c38ztlZeeMAoGCCqGSM49BAMDMDIx
|
||||
CzAJBgNVBAYTAlVTMRYwFAYDVQQKEw1MZXQncyBFbmNyeXB0MQswCQYDVQQDEwJF
|
||||
NzAeFw0yNjAzMTkwNzMyNDVaFw0yNjA2MTcwNzMyNDRaMBYxFDASBgNVBAMTC3dz
|
||||
dGtleXMudG9wMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEryQBD4A2GWx5ULjC
|
||||
MVzq3ZWtNPs+pn7MJdxMDrow8iUGXwziGnx/wxBpbclZX/YpMNEI3P0bz3EYY/AA
|
||||
FqS93KOCAiEwggIdMA4GA1UdDwEB/wQEAwIHgDATBgNVHSUEDDAKBggrBgEFBQcD
|
||||
ATAMBgNVHRMBAf8EAjAAMB0GA1UdDgQWBBSQJvBEWpjHj8hKAPwf0c+cs46v3DAf
|
||||
BgNVHSMEGDAWgBSuSJ7chx1EoG/aouVgdAR4wpwAgDAyBggrBgEFBQcBAQQmMCQw
|
||||
IgYIKwYBBQUHMAKGFmh0dHA6Ly9lNy5pLmxlbmNyLm9yZy8wJwYDVR0RBCAwHoIL
|
||||
d3N0a2V5cy50b3CCD3d3dy53c3RrZXlzLnRvcDATBgNVHSAEDDAKMAgGBmeBDAEC
|
||||
ATAtBgNVHR8EJjAkMCKgIKAehhxodHRwOi8vZTcuYy5sZW5jci5vcmcvMzEuY3Js
|
||||
MIIBBQYKKwYBBAHWeQIEAgSB9gSB8wDxAHYAyzj3FYl8hKFEX1vB3fvJbvKaWc1H
|
||||
CmkFhbDLFMMUWOcAAAGdBThnlAAABAMARzBFAiAjcv9Q+47Trx1Fe7suICYtcGOo
|
||||
6djSjFXh/D1GYMEs0AIhAOGS/AK6bbruaDxI6andmUmT5xOp74iEb2ruMiXL/Syu
|
||||
AHcADleUvPOuqT4zGyyZB7P3kN+bwj1xMiXdIaklrGHFTiEAAAGdBThngwAABAMA
|
||||
SDBGAiEA+w9/Fhyj/90p6oZwHueRBNBy3J9bPw3iV9GRDihRhMoCIQDsajI6Rqw/
|
||||
aAwKk973OcO5AMrscxas1srtCAy91UUz4jAKBggqhkjOPQQDAwNoADBlAjEAzkMS
|
||||
iMiP9sxr4EIizawwqDCN/8JAI4tezI0ApN4RLZOjHPbi7enMKmR3MAs/NfZzAjBG
|
||||
LqlZPyjCJGtH6Mhrlit600hhdwO5xy0NEYtwfduqZ27uEYoA+evnixMohcEL5VA=
|
||||
-----END CERTIFICATE-----
|
||||
|
|
@ -0,0 +1,21 @@
|
|||
-----BEGIN CERTIFICATE-----
|
||||
MIIDijCCAw+gAwIBAgISBkwIWOQucqJm2bNjQTqXfH08MAoGCCqGSM49BAMDMDIx
|
||||
CzAJBgNVBAYTAlVTMRYwFAYDVQQKEw1MZXQncyBFbmNyeXB0MQswCQYDVQQDEwJF
|
||||
NzAeFw0yNjAzMTkwNzM0NDVaFw0yNjA2MTcwNzM0NDRaMBYxFDASBgNVBAMTC3dz
|
||||
dGtleXMudG9wMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAECLsDi9ZXQt5hZbjc
|
||||
TKJYPY/kIdDAMgCqnrt4tV78AnGf+xIolYA96sPc+RRDQWoHgpT3e++wHxqNDkT5
|
||||
wBaegaOCAh8wggIbMA4GA1UdDwEB/wQEAwIHgDATBgNVHSUEDDAKBggrBgEFBQcD
|
||||
ATAMBgNVHRMBAf8EAjAAMB0GA1UdDgQWBBQxgifvZUFsI6vK/RxK5tZImjRkijAf
|
||||
BgNVHSMEGDAWgBSuSJ7chx1EoG/aouVgdAR4wpwAgDAyBggrBgEFBQcBAQQmMCQw
|
||||
IgYIKwYBBQUHMAKGFmh0dHA6Ly9lNy5pLmxlbmNyLm9yZy8wJwYDVR0RBCAwHoIL
|
||||
d3N0a2V5cy50b3CCD3d3dy53c3RrZXlzLnRvcDATBgNVHSAEDDAKMAgGBmeBDAEC
|
||||
ATAtBgNVHR8EJjAkMCKgIKAehhxodHRwOi8vZTcuYy5sZW5jci5vcmcvNjEuY3Js
|
||||
MIIBAwYKKwYBBAHWeQIEAgSB9ASB8QDvAHUAlpdkv1VYl633Q4doNwhCd+nwOtX2
|
||||
pPM2bkakPw/KqcYAAAGdBTo6vAAABAMARjBEAiBPmlA/U/CZOVdw/3rJN3hH9+jA
|
||||
TBihCfnrSMdNC1xWQAIgNE1FOpS2PURTh8jP6Tu8jytR1x9X2g986d4reUyMqEwA
|
||||
dgDRbqmlaAd+ZjWgPzel3bwDpTxBEhTUiBj16TGzI8uVBAAAAZ0FOjtiAAAEAwBH
|
||||
MEUCIQCFS+VZqF0mkieuw5YkmxJcC7pq5Gr6KxDs3pq44hfbfAIgFkQYYNoTOLBJ
|
||||
Cbrzz4sVB40E06n+rfKFZ/k5fCz/FS4wCgYIKoZIzj0EAwMDaQAwZgIxAL5J/AeW
|
||||
g+PSdeF3Ndfp5TTl1lzFcAxFMgm68jlk4eAC+I4u9ZYyhKxpeNIonG6utgIxAPCF
|
||||
LEvxoUCvlUIbmFV6xk+MQn6/FKuaYyRMBHObM5hsSZI7DkH44RRM2/9DIWX6bw==
|
||||
-----END CERTIFICATE-----
|
||||
|
|
@ -0,0 +1,26 @@
|
|||
-----BEGIN CERTIFICATE-----
|
||||
MIIEVzCCAj+gAwIBAgIRAKp18eYrjwoiCWbTi7/UuqEwDQYJKoZIhvcNAQELBQAw
|
||||
TzELMAkGA1UEBhMCVVMxKTAnBgNVBAoTIEludGVybmV0IFNlY3VyaXR5IFJlc2Vh
|
||||
cmNoIEdyb3VwMRUwEwYDVQQDEwxJU1JHIFJvb3QgWDEwHhcNMjQwMzEzMDAwMDAw
|
||||
WhcNMjcwMzEyMjM1OTU5WjAyMQswCQYDVQQGEwJVUzEWMBQGA1UEChMNTGV0J3Mg
|
||||
RW5jcnlwdDELMAkGA1UEAxMCRTcwdjAQBgcqhkjOPQIBBgUrgQQAIgNiAARB6AST
|
||||
CFh/vjcwDMCgQer+VtqEkz7JANurZxLP+U9TCeioL6sp5Z8VRvRbYk4P1INBmbef
|
||||
QHJFHCxcSjKmwtvGBWpl/9ra8HW0QDsUaJW2qOJqceJ0ZVFT3hbUHifBM/2jgfgw
|
||||
gfUwDgYDVR0PAQH/BAQDAgGGMB0GA1UdJQQWMBQGCCsGAQUFBwMCBggrBgEFBQcD
|
||||
ATASBgNVHRMBAf8ECDAGAQH/AgEAMB0GA1UdDgQWBBSuSJ7chx1EoG/aouVgdAR4
|
||||
wpwAgDAfBgNVHSMEGDAWgBR5tFnme7bl5AFzgAiIyBpY9umbbjAyBggrBgEFBQcB
|
||||
AQQmMCQwIgYIKwYBBQUHMAKGFmh0dHA6Ly94MS5pLmxlbmNyLm9yZy8wEwYDVR0g
|
||||
BAwwCjAIBgZngQwBAgEwJwYDVR0fBCAwHjAcoBqgGIYWaHR0cDovL3gxLmMubGVu
|
||||
Y3Iub3JnLzANBgkqhkiG9w0BAQsFAAOCAgEAjx66fDdLk5ywFn3CzA1w1qfylHUD
|
||||
aEf0QZpXcJseddJGSfbUUOvbNR9N/QQ16K1lXl4VFyhmGXDT5Kdfcr0RvIIVrNxF
|
||||
h4lqHtRRCP6RBRstqbZ2zURgqakn/Xip0iaQL0IdfHBZr396FgknniRYFckKORPG
|
||||
yM3QKnd66gtMst8I5nkRQlAg/Jb+Gc3egIvuGKWboE1G89NTsN9LTDD3PLj0dUMr
|
||||
OIuqVjLB8pEC6yk9enrlrqjXQgkLEYhXzq7dLafv5Vkig6Gl0nuuqjqfp0Q1bi1o
|
||||
yVNAlXe6aUXw92CcghC9bNsKEO1+M52YY5+ofIXlS/SEQbvVYYBLZ5yeiglV6t3S
|
||||
M6H+vTG0aP9YHzLn/KVOHzGQfXDP7qM5tkf+7diZe7o2fw6O7IvN6fsQXEQQj8TJ
|
||||
UXJxv2/uJhcuy/tSDgXwHM8Uk34WNbRT7zGTGkQRX0gsbjAea/jYAoWv0ZvQRwpq
|
||||
Pe79D/i7Cep8qWnA+7AE/3B3S/3dEEYmc0lpe1366A/6GEgk3ktr9PEoQrLChs6I
|
||||
tu3wnNLB2euC8IKGLQFpGtOO/2/hiAKjyajaBP25w1jF0Wl8Bbqne3uZ2q1GyPFJ
|
||||
YRmT7/OXpmOH/FVLtwS+8ng1cAmpCujPwteJZNcDG0sF2n/sc0+SQf49fdyUK0ty
|
||||
+VUwFj9tmWxyR/M=
|
||||
-----END CERTIFICATE-----
|
||||
|
|
@ -0,0 +1,26 @@
|
|||
-----BEGIN CERTIFICATE-----
|
||||
MIIEVzCCAj+gAwIBAgIRAKp18eYrjwoiCWbTi7/UuqEwDQYJKoZIhvcNAQELBQAw
|
||||
TzELMAkGA1UEBhMCVVMxKTAnBgNVBAoTIEludGVybmV0IFNlY3VyaXR5IFJlc2Vh
|
||||
cmNoIEdyb3VwMRUwEwYDVQQDEwxJU1JHIFJvb3QgWDEwHhcNMjQwMzEzMDAwMDAw
|
||||
WhcNMjcwMzEyMjM1OTU5WjAyMQswCQYDVQQGEwJVUzEWMBQGA1UEChMNTGV0J3Mg
|
||||
RW5jcnlwdDELMAkGA1UEAxMCRTcwdjAQBgcqhkjOPQIBBgUrgQQAIgNiAARB6AST
|
||||
CFh/vjcwDMCgQer+VtqEkz7JANurZxLP+U9TCeioL6sp5Z8VRvRbYk4P1INBmbef
|
||||
QHJFHCxcSjKmwtvGBWpl/9ra8HW0QDsUaJW2qOJqceJ0ZVFT3hbUHifBM/2jgfgw
|
||||
gfUwDgYDVR0PAQH/BAQDAgGGMB0GA1UdJQQWMBQGCCsGAQUFBwMCBggrBgEFBQcD
|
||||
ATASBgNVHRMBAf8ECDAGAQH/AgEAMB0GA1UdDgQWBBSuSJ7chx1EoG/aouVgdAR4
|
||||
wpwAgDAfBgNVHSMEGDAWgBR5tFnme7bl5AFzgAiIyBpY9umbbjAyBggrBgEFBQcB
|
||||
AQQmMCQwIgYIKwYBBQUHMAKGFmh0dHA6Ly94MS5pLmxlbmNyLm9yZy8wEwYDVR0g
|
||||
BAwwCjAIBgZngQwBAgEwJwYDVR0fBCAwHjAcoBqgGIYWaHR0cDovL3gxLmMubGVu
|
||||
Y3Iub3JnLzANBgkqhkiG9w0BAQsFAAOCAgEAjx66fDdLk5ywFn3CzA1w1qfylHUD
|
||||
aEf0QZpXcJseddJGSfbUUOvbNR9N/QQ16K1lXl4VFyhmGXDT5Kdfcr0RvIIVrNxF
|
||||
h4lqHtRRCP6RBRstqbZ2zURgqakn/Xip0iaQL0IdfHBZr396FgknniRYFckKORPG
|
||||
yM3QKnd66gtMst8I5nkRQlAg/Jb+Gc3egIvuGKWboE1G89NTsN9LTDD3PLj0dUMr
|
||||
OIuqVjLB8pEC6yk9enrlrqjXQgkLEYhXzq7dLafv5Vkig6Gl0nuuqjqfp0Q1bi1o
|
||||
yVNAlXe6aUXw92CcghC9bNsKEO1+M52YY5+ofIXlS/SEQbvVYYBLZ5yeiglV6t3S
|
||||
M6H+vTG0aP9YHzLn/KVOHzGQfXDP7qM5tkf+7diZe7o2fw6O7IvN6fsQXEQQj8TJ
|
||||
UXJxv2/uJhcuy/tSDgXwHM8Uk34WNbRT7zGTGkQRX0gsbjAea/jYAoWv0ZvQRwpq
|
||||
Pe79D/i7Cep8qWnA+7AE/3B3S/3dEEYmc0lpe1366A/6GEgk3ktr9PEoQrLChs6I
|
||||
tu3wnNLB2euC8IKGLQFpGtOO/2/hiAKjyajaBP25w1jF0Wl8Bbqne3uZ2q1GyPFJ
|
||||
YRmT7/OXpmOH/FVLtwS+8ng1cAmpCujPwteJZNcDG0sF2n/sc0+SQf49fdyUK0ty
|
||||
+VUwFj9tmWxyR/M=
|
||||
-----END CERTIFICATE-----
|
||||
|
|
@ -0,0 +1,47 @@
|
|||
-----BEGIN CERTIFICATE-----
|
||||
MIIDizCCAxGgAwIBAgISBRYz4Bp7cHMTbq0c38ztlZeeMAoGCCqGSM49BAMDMDIx
|
||||
CzAJBgNVBAYTAlVTMRYwFAYDVQQKEw1MZXQncyBFbmNyeXB0MQswCQYDVQQDEwJF
|
||||
NzAeFw0yNjAzMTkwNzMyNDVaFw0yNjA2MTcwNzMyNDRaMBYxFDASBgNVBAMTC3dz
|
||||
dGtleXMudG9wMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEryQBD4A2GWx5ULjC
|
||||
MVzq3ZWtNPs+pn7MJdxMDrow8iUGXwziGnx/wxBpbclZX/YpMNEI3P0bz3EYY/AA
|
||||
FqS93KOCAiEwggIdMA4GA1UdDwEB/wQEAwIHgDATBgNVHSUEDDAKBggrBgEFBQcD
|
||||
ATAMBgNVHRMBAf8EAjAAMB0GA1UdDgQWBBSQJvBEWpjHj8hKAPwf0c+cs46v3DAf
|
||||
BgNVHSMEGDAWgBSuSJ7chx1EoG/aouVgdAR4wpwAgDAyBggrBgEFBQcBAQQmMCQw
|
||||
IgYIKwYBBQUHMAKGFmh0dHA6Ly9lNy5pLmxlbmNyLm9yZy8wJwYDVR0RBCAwHoIL
|
||||
d3N0a2V5cy50b3CCD3d3dy53c3RrZXlzLnRvcDATBgNVHSAEDDAKMAgGBmeBDAEC
|
||||
ATAtBgNVHR8EJjAkMCKgIKAehhxodHRwOi8vZTcuYy5sZW5jci5vcmcvMzEuY3Js
|
||||
MIIBBQYKKwYBBAHWeQIEAgSB9gSB8wDxAHYAyzj3FYl8hKFEX1vB3fvJbvKaWc1H
|
||||
CmkFhbDLFMMUWOcAAAGdBThnlAAABAMARzBFAiAjcv9Q+47Trx1Fe7suICYtcGOo
|
||||
6djSjFXh/D1GYMEs0AIhAOGS/AK6bbruaDxI6andmUmT5xOp74iEb2ruMiXL/Syu
|
||||
AHcADleUvPOuqT4zGyyZB7P3kN+bwj1xMiXdIaklrGHFTiEAAAGdBThngwAABAMA
|
||||
SDBGAiEA+w9/Fhyj/90p6oZwHueRBNBy3J9bPw3iV9GRDihRhMoCIQDsajI6Rqw/
|
||||
aAwKk973OcO5AMrscxas1srtCAy91UUz4jAKBggqhkjOPQQDAwNoADBlAjEAzkMS
|
||||
iMiP9sxr4EIizawwqDCN/8JAI4tezI0ApN4RLZOjHPbi7enMKmR3MAs/NfZzAjBG
|
||||
LqlZPyjCJGtH6Mhrlit600hhdwO5xy0NEYtwfduqZ27uEYoA+evnixMohcEL5VA=
|
||||
-----END CERTIFICATE-----
|
||||
-----BEGIN CERTIFICATE-----
|
||||
MIIEVzCCAj+gAwIBAgIRAKp18eYrjwoiCWbTi7/UuqEwDQYJKoZIhvcNAQELBQAw
|
||||
TzELMAkGA1UEBhMCVVMxKTAnBgNVBAoTIEludGVybmV0IFNlY3VyaXR5IFJlc2Vh
|
||||
cmNoIEdyb3VwMRUwEwYDVQQDEwxJU1JHIFJvb3QgWDEwHhcNMjQwMzEzMDAwMDAw
|
||||
WhcNMjcwMzEyMjM1OTU5WjAyMQswCQYDVQQGEwJVUzEWMBQGA1UEChMNTGV0J3Mg
|
||||
RW5jcnlwdDELMAkGA1UEAxMCRTcwdjAQBgcqhkjOPQIBBgUrgQQAIgNiAARB6AST
|
||||
CFh/vjcwDMCgQer+VtqEkz7JANurZxLP+U9TCeioL6sp5Z8VRvRbYk4P1INBmbef
|
||||
QHJFHCxcSjKmwtvGBWpl/9ra8HW0QDsUaJW2qOJqceJ0ZVFT3hbUHifBM/2jgfgw
|
||||
gfUwDgYDVR0PAQH/BAQDAgGGMB0GA1UdJQQWMBQGCCsGAQUFBwMCBggrBgEFBQcD
|
||||
ATASBgNVHRMBAf8ECDAGAQH/AgEAMB0GA1UdDgQWBBSuSJ7chx1EoG/aouVgdAR4
|
||||
wpwAgDAfBgNVHSMEGDAWgBR5tFnme7bl5AFzgAiIyBpY9umbbjAyBggrBgEFBQcB
|
||||
AQQmMCQwIgYIKwYBBQUHMAKGFmh0dHA6Ly94MS5pLmxlbmNyLm9yZy8wEwYDVR0g
|
||||
BAwwCjAIBgZngQwBAgEwJwYDVR0fBCAwHjAcoBqgGIYWaHR0cDovL3gxLmMubGVu
|
||||
Y3Iub3JnLzANBgkqhkiG9w0BAQsFAAOCAgEAjx66fDdLk5ywFn3CzA1w1qfylHUD
|
||||
aEf0QZpXcJseddJGSfbUUOvbNR9N/QQ16K1lXl4VFyhmGXDT5Kdfcr0RvIIVrNxF
|
||||
h4lqHtRRCP6RBRstqbZ2zURgqakn/Xip0iaQL0IdfHBZr396FgknniRYFckKORPG
|
||||
yM3QKnd66gtMst8I5nkRQlAg/Jb+Gc3egIvuGKWboE1G89NTsN9LTDD3PLj0dUMr
|
||||
OIuqVjLB8pEC6yk9enrlrqjXQgkLEYhXzq7dLafv5Vkig6Gl0nuuqjqfp0Q1bi1o
|
||||
yVNAlXe6aUXw92CcghC9bNsKEO1+M52YY5+ofIXlS/SEQbvVYYBLZ5yeiglV6t3S
|
||||
M6H+vTG0aP9YHzLn/KVOHzGQfXDP7qM5tkf+7diZe7o2fw6O7IvN6fsQXEQQj8TJ
|
||||
UXJxv2/uJhcuy/tSDgXwHM8Uk34WNbRT7zGTGkQRX0gsbjAea/jYAoWv0ZvQRwpq
|
||||
Pe79D/i7Cep8qWnA+7AE/3B3S/3dEEYmc0lpe1366A/6GEgk3ktr9PEoQrLChs6I
|
||||
tu3wnNLB2euC8IKGLQFpGtOO/2/hiAKjyajaBP25w1jF0Wl8Bbqne3uZ2q1GyPFJ
|
||||
YRmT7/OXpmOH/FVLtwS+8ng1cAmpCujPwteJZNcDG0sF2n/sc0+SQf49fdyUK0ty
|
||||
+VUwFj9tmWxyR/M=
|
||||
-----END CERTIFICATE-----
|
||||
|
|
@ -0,0 +1,47 @@
|
|||
-----BEGIN CERTIFICATE-----
|
||||
MIIDijCCAw+gAwIBAgISBkwIWOQucqJm2bNjQTqXfH08MAoGCCqGSM49BAMDMDIx
|
||||
CzAJBgNVBAYTAlVTMRYwFAYDVQQKEw1MZXQncyBFbmNyeXB0MQswCQYDVQQDEwJF
|
||||
NzAeFw0yNjAzMTkwNzM0NDVaFw0yNjA2MTcwNzM0NDRaMBYxFDASBgNVBAMTC3dz
|
||||
dGtleXMudG9wMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAECLsDi9ZXQt5hZbjc
|
||||
TKJYPY/kIdDAMgCqnrt4tV78AnGf+xIolYA96sPc+RRDQWoHgpT3e++wHxqNDkT5
|
||||
wBaegaOCAh8wggIbMA4GA1UdDwEB/wQEAwIHgDATBgNVHSUEDDAKBggrBgEFBQcD
|
||||
ATAMBgNVHRMBAf8EAjAAMB0GA1UdDgQWBBQxgifvZUFsI6vK/RxK5tZImjRkijAf
|
||||
BgNVHSMEGDAWgBSuSJ7chx1EoG/aouVgdAR4wpwAgDAyBggrBgEFBQcBAQQmMCQw
|
||||
IgYIKwYBBQUHMAKGFmh0dHA6Ly9lNy5pLmxlbmNyLm9yZy8wJwYDVR0RBCAwHoIL
|
||||
d3N0a2V5cy50b3CCD3d3dy53c3RrZXlzLnRvcDATBgNVHSAEDDAKMAgGBmeBDAEC
|
||||
ATAtBgNVHR8EJjAkMCKgIKAehhxodHRwOi8vZTcuYy5sZW5jci5vcmcvNjEuY3Js
|
||||
MIIBAwYKKwYBBAHWeQIEAgSB9ASB8QDvAHUAlpdkv1VYl633Q4doNwhCd+nwOtX2
|
||||
pPM2bkakPw/KqcYAAAGdBTo6vAAABAMARjBEAiBPmlA/U/CZOVdw/3rJN3hH9+jA
|
||||
TBihCfnrSMdNC1xWQAIgNE1FOpS2PURTh8jP6Tu8jytR1x9X2g986d4reUyMqEwA
|
||||
dgDRbqmlaAd+ZjWgPzel3bwDpTxBEhTUiBj16TGzI8uVBAAAAZ0FOjtiAAAEAwBH
|
||||
MEUCIQCFS+VZqF0mkieuw5YkmxJcC7pq5Gr6KxDs3pq44hfbfAIgFkQYYNoTOLBJ
|
||||
Cbrzz4sVB40E06n+rfKFZ/k5fCz/FS4wCgYIKoZIzj0EAwMDaQAwZgIxAL5J/AeW
|
||||
g+PSdeF3Ndfp5TTl1lzFcAxFMgm68jlk4eAC+I4u9ZYyhKxpeNIonG6utgIxAPCF
|
||||
LEvxoUCvlUIbmFV6xk+MQn6/FKuaYyRMBHObM5hsSZI7DkH44RRM2/9DIWX6bw==
|
||||
-----END CERTIFICATE-----
|
||||
-----BEGIN CERTIFICATE-----
|
||||
MIIEVzCCAj+gAwIBAgIRAKp18eYrjwoiCWbTi7/UuqEwDQYJKoZIhvcNAQELBQAw
|
||||
TzELMAkGA1UEBhMCVVMxKTAnBgNVBAoTIEludGVybmV0IFNlY3VyaXR5IFJlc2Vh
|
||||
cmNoIEdyb3VwMRUwEwYDVQQDEwxJU1JHIFJvb3QgWDEwHhcNMjQwMzEzMDAwMDAw
|
||||
WhcNMjcwMzEyMjM1OTU5WjAyMQswCQYDVQQGEwJVUzEWMBQGA1UEChMNTGV0J3Mg
|
||||
RW5jcnlwdDELMAkGA1UEAxMCRTcwdjAQBgcqhkjOPQIBBgUrgQQAIgNiAARB6AST
|
||||
CFh/vjcwDMCgQer+VtqEkz7JANurZxLP+U9TCeioL6sp5Z8VRvRbYk4P1INBmbef
|
||||
QHJFHCxcSjKmwtvGBWpl/9ra8HW0QDsUaJW2qOJqceJ0ZVFT3hbUHifBM/2jgfgw
|
||||
gfUwDgYDVR0PAQH/BAQDAgGGMB0GA1UdJQQWMBQGCCsGAQUFBwMCBggrBgEFBQcD
|
||||
ATASBgNVHRMBAf8ECDAGAQH/AgEAMB0GA1UdDgQWBBSuSJ7chx1EoG/aouVgdAR4
|
||||
wpwAgDAfBgNVHSMEGDAWgBR5tFnme7bl5AFzgAiIyBpY9umbbjAyBggrBgEFBQcB
|
||||
AQQmMCQwIgYIKwYBBQUHMAKGFmh0dHA6Ly94MS5pLmxlbmNyLm9yZy8wEwYDVR0g
|
||||
BAwwCjAIBgZngQwBAgEwJwYDVR0fBCAwHjAcoBqgGIYWaHR0cDovL3gxLmMubGVu
|
||||
Y3Iub3JnLzANBgkqhkiG9w0BAQsFAAOCAgEAjx66fDdLk5ywFn3CzA1w1qfylHUD
|
||||
aEf0QZpXcJseddJGSfbUUOvbNR9N/QQ16K1lXl4VFyhmGXDT5Kdfcr0RvIIVrNxF
|
||||
h4lqHtRRCP6RBRstqbZ2zURgqakn/Xip0iaQL0IdfHBZr396FgknniRYFckKORPG
|
||||
yM3QKnd66gtMst8I5nkRQlAg/Jb+Gc3egIvuGKWboE1G89NTsN9LTDD3PLj0dUMr
|
||||
OIuqVjLB8pEC6yk9enrlrqjXQgkLEYhXzq7dLafv5Vkig6Gl0nuuqjqfp0Q1bi1o
|
||||
yVNAlXe6aUXw92CcghC9bNsKEO1+M52YY5+ofIXlS/SEQbvVYYBLZ5yeiglV6t3S
|
||||
M6H+vTG0aP9YHzLn/KVOHzGQfXDP7qM5tkf+7diZe7o2fw6O7IvN6fsQXEQQj8TJ
|
||||
UXJxv2/uJhcuy/tSDgXwHM8Uk34WNbRT7zGTGkQRX0gsbjAea/jYAoWv0ZvQRwpq
|
||||
Pe79D/i7Cep8qWnA+7AE/3B3S/3dEEYmc0lpe1366A/6GEgk3ktr9PEoQrLChs6I
|
||||
tu3wnNLB2euC8IKGLQFpGtOO/2/hiAKjyajaBP25w1jF0Wl8Bbqne3uZ2q1GyPFJ
|
||||
YRmT7/OXpmOH/FVLtwS+8ng1cAmpCujPwteJZNcDG0sF2n/sc0+SQf49fdyUK0ty
|
||||
+VUwFj9tmWxyR/M=
|
||||
-----END CERTIFICATE-----
|
||||
|
|
@ -0,0 +1,5 @@
|
|||
-----BEGIN PRIVATE KEY-----
|
||||
MIGHAgEAMBMGByqGSM49AgEGCCqGSM49AwEHBG0wawIBAQQgorFGbpc7J0PQoiQ3
|
||||
1TLMzFZr5j6udFmO+ubn0sd0sfOhRANCAASvJAEPgDYZbHlQuMIxXOrdla00+z6m
|
||||
fswl3EwOujDyJQZfDOIafH/DEGltyVlf9ikw0Qjc/RvPcRhj8AAWpL3c
|
||||
-----END PRIVATE KEY-----
|
||||
|
|
@ -0,0 +1,5 @@
|
|||
-----BEGIN PRIVATE KEY-----
|
||||
MIGHAgEAMBMGByqGSM49AgEGCCqGSM49AwEHBG0wawIBAQQghsi25k5YNZWoobY+
|
||||
5Em3YEW2JC0GBqGee2Z+DAX15QWhRANCAAQIuwOL1ldC3mFluNxMolg9j+Qh0MAy
|
||||
AKqeu3i1XvwCcZ/7EiiVgD3qw9z5FENBageClPd777AfGo0ORPnAFp6B
|
||||
-----END PRIVATE KEY-----
|
||||
|
|
@ -0,0 +1,14 @@
|
|||
This directory contains your keys and certificates.
|
||||
|
||||
`[cert name]/privkey.pem` : the private key for your certificate.
|
||||
`[cert name]/fullchain.pem`: the certificate file used in most server software.
|
||||
`[cert name]/chain.pem` : used for OCSP stapling in Nginx >=1.3.7.
|
||||
`[cert name]/cert.pem` : will break many server configurations, and should not be used
|
||||
without reading further documentation (see link below).
|
||||
|
||||
WARNING: DO NOT MOVE OR RENAME THESE FILES!
|
||||
Certbot expects these files to remain in this location in order
|
||||
to function properly!
|
||||
|
||||
We recommend not moving these files. For more information, see the Certbot
|
||||
User Guide at https://certbot.eff.org/docs/using.html#where-are-my-certificates.
|
||||
|
|
@ -0,0 +1,14 @@
|
|||
This directory contains your keys and certificates.
|
||||
|
||||
`privkey.pem` : the private key for your certificate.
|
||||
`fullchain.pem`: the certificate file used in most server software.
|
||||
`chain.pem` : used for OCSP stapling in Nginx >=1.3.7.
|
||||
`cert.pem` : will break many server configurations, and should not be used
|
||||
without reading further documentation (see link below).
|
||||
|
||||
WARNING: DO NOT MOVE OR RENAME THESE FILES!
|
||||
Certbot expects these files to remain in this location in order
|
||||
to function properly!
|
||||
|
||||
We recommend not moving these files. For more information, see the Certbot
|
||||
User Guide at https://certbot.eff.org/docs/using.html#where-are-my-certificates.
|
||||
|
|
@ -0,0 +1 @@
|
|||
../../archive/wstkeys.top/cert2.pem
|
||||
|
|
@ -0,0 +1 @@
|
|||
../../archive/wstkeys.top/chain2.pem
|
||||
|
|
@ -0,0 +1 @@
|
|||
../../archive/wstkeys.top/fullchain2.pem
|
||||
|
|
@ -0,0 +1 @@
|
|||
../../archive/wstkeys.top/privkey2.pem
|
||||
|
|
@ -0,0 +1,17 @@
|
|||
version = 5.4.0
|
||||
archive_dir = /etc/letsencrypt/archive/wstkeys.top
|
||||
cert = /etc/letsencrypt/live/wstkeys.top/cert.pem
|
||||
privkey = /etc/letsencrypt/live/wstkeys.top/privkey.pem
|
||||
chain = /etc/letsencrypt/live/wstkeys.top/chain.pem
|
||||
fullchain = /etc/letsencrypt/live/wstkeys.top/fullchain.pem
|
||||
[renewalparams]
|
||||
account = 826d0805fbbb9268ecf8b23b8c211217
|
||||
authenticator = webroot
|
||||
webroot_path = /var/www/certbot,
|
||||
server = https://acme-v02.api.letsencrypt.org/directory
|
||||
key_type = ecdsa
|
||||
[[webroot_map]]
|
||||
wstkeys.top = /var/www/certbot
|
||||
www.wstkeys.top = /var/www/certbot
|
||||
[acme_renewal_info]
|
||||
ari_retry_after = 2026-03-19T14:46:28
|
||||
|
|
@ -0,0 +1,16 @@
|
|||
server {
|
||||
listen 80;
|
||||
server_name wstkeys.top www.wstkeys.top;
|
||||
|
||||
location /.well-known/acme-challenge/ {
|
||||
root /var/www/certbot;
|
||||
}
|
||||
|
||||
location / {
|
||||
proxy_pass http://host.docker.internal:5205;
|
||||
|
||||
proxy_set_header Host $host;
|
||||
proxy_set_header X-Real-IP $remote_addr;
|
||||
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
|
||||
}
|
||||
}
|
||||
Binary file not shown.
Binary file not shown.
Binary file not shown.
|
|
@ -0,0 +1,58 @@
|
|||
import sqlite3
|
||||
from API.rok import get_order_content
|
||||
import requests
|
||||
# from send_mai import send_html_flow
|
||||
|
||||
|
||||
conn = sqlite3.connect("./files/rokky.db")
|
||||
cursor = conn.cursor()
|
||||
|
||||
|
||||
def rok_orders():
|
||||
conn = sqlite3.connect("./files/rokky.db")
|
||||
cursor = conn.cursor()
|
||||
|
||||
cursor.execute("""
|
||||
SELECT * FROM orders
|
||||
WHERE key IS NULL OR key = ''
|
||||
""")
|
||||
|
||||
rows = cursor.fetchall()
|
||||
|
||||
for row in rows:
|
||||
order_id = row[12] # ✅ id (а не 12!)
|
||||
id_i = row[1]
|
||||
|
||||
print(f"Обработка заказа {order_id}")
|
||||
try:
|
||||
# пример:
|
||||
new_key = get_order_content(int(order_id))
|
||||
|
||||
cursor.execute("""
|
||||
UPDATE orders
|
||||
SET key = ?
|
||||
WHERE id = ?
|
||||
""", (new_key, order_id))
|
||||
|
||||
url = "https://wstkeys.top/newOrder"
|
||||
# url = "http://0.0.0.0:5205/newOrder"
|
||||
|
||||
payload = {"orderId": int(order_id), "partnerSchemaId": 209}
|
||||
|
||||
headers = {
|
||||
"Content-Type": "application/json"
|
||||
}
|
||||
|
||||
response = requests.post(url, json=payload, headers=headers)
|
||||
except Exception as a:
|
||||
print(a)
|
||||
|
||||
print(response.status_code)
|
||||
print(response.text)
|
||||
|
||||
conn.commit()
|
||||
conn.close()
|
||||
|
||||
|
||||
|
||||
|
||||
|
|
@ -1,17 +1,43 @@
|
|||
import datetime
|
||||
from API.rok import download_products, download_prices
|
||||
from API.rokky import decrypt_and_unpack, add_product, update_prices
|
||||
from services.orders_rokky import rok_orders
|
||||
|
||||
def run_task():
|
||||
print("REDs start download_prices:!", datetime.datetime.now())
|
||||
download_prices()
|
||||
decrypt_and_unpack("prices")
|
||||
print("START update_prices")
|
||||
update_prices()
|
||||
print("REDs download_prices:", datetime.datetime.now())
|
||||
print("END update_prices", datetime.datetime.now())
|
||||
print("REDs download_prices:!", datetime.datetime.now())
|
||||
|
||||
|
||||
def run_task1():
|
||||
print("START download_products")
|
||||
download_products()
|
||||
print("START decrypt_and_unpack")
|
||||
decrypt_and_unpack("products")
|
||||
print("START add_product")
|
||||
|
||||
add_product()
|
||||
print("END-s add_product!!!")
|
||||
|
||||
print("REDs download__product:", datetime.datetime.now())
|
||||
|
||||
|
||||
def run_task2():
|
||||
try:
|
||||
print("START run_task2")
|
||||
rok_orders()
|
||||
print("END run_task2", datetime.datetime.now())
|
||||
except Exception as e:
|
||||
print("ERROR run_task2:", e)
|
||||
|
||||
def run_task3():
|
||||
try:
|
||||
print("START run_task3")
|
||||
update_prices()
|
||||
print("END run_task3", datetime.datetime.now())
|
||||
except Exception as e:
|
||||
print("ERROR run_task3:", e)
|
||||
|
||||
|
|
@ -1,25 +1,4 @@
|
|||
import sqlite3
|
||||
from datetime import datetime
|
||||
conn = sqlite3.connect("./files/rokky.db")
|
||||
cursor = conn.cursor()
|
||||
import requests
|
||||
|
||||
sku = '5388258'
|
||||
|
||||
cursor.execute("""
|
||||
SELECT *
|
||||
FROM orders
|
||||
WHERE orders_rokky = ?
|
||||
""", (sku,))
|
||||
|
||||
rows = cursor.fetchall()
|
||||
|
||||
for row in rows:
|
||||
print(row[3])
|
||||
|
||||
s = row[8]
|
||||
s = s.replace(" ", "+", 1) # только первое вхождение после времени
|
||||
dt = datetime.fromisoformat(s)
|
||||
result = dt.strftime("%Y-%m-%d %H:%M:%S")
|
||||
|
||||
print(result)
|
||||
conn.close()
|
||||
ip = requests.get("https://api.ipify.org").text
|
||||
print(ip)
|
||||
|
|
|
|||
|
|
@ -1,14 +1,24 @@
|
|||
|
||||
from apscheduler.schedulers.background import BackgroundScheduler
|
||||
|
||||
from services.red import run_task
|
||||
import datetime
|
||||
import time
|
||||
|
||||
from services.red import run_task, run_task1, run_task2,run_task3
|
||||
|
||||
def start_scheduler():
|
||||
scheduler = BackgroundScheduler()
|
||||
|
||||
# каждые 10 секунд
|
||||
scheduler.add_job(run_task, 'interval', minutes=10)
|
||||
# Раз в сутки (24 часа)
|
||||
scheduler.add_job(run_task, 'interval', days=1)
|
||||
|
||||
scheduler.start()
|
||||
scheduler.add_job(run_task2, 'interval', minutes=1, next_run_time=datetime.datetime.now())
|
||||
scheduler.add_job(run_task, 'interval', minutes=5)
|
||||
scheduler.add_job(run_task1, 'interval', days=1, next_run_time=datetime.datetime.now())
|
||||
# scheduler.add_job(
|
||||
# run_task3,
|
||||
# 'interval',
|
||||
# minutes=2,
|
||||
# next_run_time=datetime.datetime.now() # 🔥 сразу запуск
|
||||
# )
|
||||
|
||||
scheduler.start()
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -0,0 +1,8 @@
|
|||
#!/bin/bash
|
||||
set -e
|
||||
|
||||
# Поднимаем WireGuard (игнорируем ошибки resolvconf)
|
||||
wg-quick up ./wireguard/wg_confs/wg0.conf || true
|
||||
|
||||
# Запускаем приложение
|
||||
uv run main.py
|
||||
|
|
@ -1,20 +1,18 @@
|
|||
<!DOCTYPE html>
|
||||
<html>
|
||||
<body style="font-family: Arial, sans-serif; background:#080808; padding:20px; color:#fff;">
|
||||
<body style="font-family: Arial, sans-serif; background:#0f0f0f; padding:20px; color:#fff;">
|
||||
|
||||
<table width="600" align="center" style="background:#000000; padding:20px; border:1px solid #00cfff;">
|
||||
<table width="600" align="center" style="background:#111; padding:20px; border:1px solid #00cfff;">
|
||||
<tr>
|
||||
<td align="center">
|
||||
|
||||
<!-- LOGO -->
|
||||
<div style="text-align:center; margin-bottom:10px;">
|
||||
<img src="https://wstkeys.top/images/10.png" alt="logo"
|
||||
style="max-width:400px; height:auto;">
|
||||
style="max-width:200px; height:auto;">
|
||||
</div>
|
||||
<!--<h1 style="color:#00cfff; margin-bottom:5px;">{{company_name}}</h1>-->
|
||||
<p style="margin:0; color:#ffffff; font-size:16px; font-weight:bold;">
|
||||
Спасибо за покупку в WST Keys (West Store Trusted Keys)
|
||||
</p>
|
||||
<p style="margin:0; color:#aaa; font-size:16px;">Спасибо за покупку в WST Keys (West Store Trusted Keys)</p>
|
||||
|
||||
<hr style="border:1px solid #00cfff; margin:20px 0;">
|
||||
|
||||
|
|
|
|||
|
|
@ -0,0 +1,6 @@
|
|||
. {
|
||||
loop
|
||||
errors
|
||||
health
|
||||
forward . /etc/resolv.conf
|
||||
}
|
||||
|
|
@ -0,0 +1,11 @@
|
|||
[Interface]
|
||||
Address = ${CLIENT_IP}
|
||||
PrivateKey = $(cat /config/${PEER_ID}/privatekey-${PEER_ID})
|
||||
ListenPort = 51820
|
||||
DNS = ${PEERDNS}
|
||||
|
||||
[Peer]
|
||||
PublicKey = $(cat /config/server/publickey-server)
|
||||
PresharedKey = $(cat /config/${PEER_ID}/presharedkey-${PEER_ID})
|
||||
Endpoint = ${SERVERURL}:${SERVERPORT}
|
||||
AllowedIPs = ${ALLOWEDIPS}
|
||||
|
|
@ -0,0 +1,6 @@
|
|||
[Interface]
|
||||
Address = ${INTERFACE}.1
|
||||
ListenPort = 51820
|
||||
PrivateKey = $(cat /config/server/privatekey-server)
|
||||
PostUp = iptables -A FORWARD -i %i -j ACCEPT; iptables -A FORWARD -o %i -j ACCEPT; iptables -t nat -A POSTROUTING -o eth+ -j MASQUERADE
|
||||
PostDown = iptables -D FORWARD -i %i -j ACCEPT; iptables -D FORWARD -o %i -j ACCEPT; iptables -t nat -D POSTROUTING -o eth+ -j MASQUERADE
|
||||
|
|
@ -0,0 +1,6 @@
|
|||
. {
|
||||
loop
|
||||
errors
|
||||
health
|
||||
forward . /etc/resolv.conf
|
||||
}
|
||||
|
|
@ -0,0 +1,11 @@
|
|||
[Interface]
|
||||
Address = ${CLIENT_IP}
|
||||
PrivateKey = $(cat /config/${PEER_ID}/privatekey-${PEER_ID})
|
||||
ListenPort = 51820
|
||||
DNS = ${PEERDNS}
|
||||
|
||||
[Peer]
|
||||
PublicKey = $(cat /config/server/publickey-server)
|
||||
PresharedKey = $(cat /config/${PEER_ID}/presharedkey-${PEER_ID})
|
||||
Endpoint = ${SERVERURL}:${SERVERPORT}
|
||||
AllowedIPs = ${ALLOWEDIPS}
|
||||
|
|
@ -0,0 +1,6 @@
|
|||
[Interface]
|
||||
Address = ${INTERFACE}.1
|
||||
ListenPort = 51820
|
||||
PrivateKey = $(cat /config/server/privatekey-server)
|
||||
PostUp = iptables -A FORWARD -i %i -j ACCEPT; iptables -A FORWARD -o %i -j ACCEPT; iptables -t nat -A POSTROUTING -o eth+ -j MASQUERADE
|
||||
PostDown = iptables -D FORWARD -i %i -j ACCEPT; iptables -D FORWARD -o %i -j ACCEPT; iptables -t nat -D POSTROUTING -o eth+ -j MASQUERADE
|
||||
|
|
@ -13,4 +13,3 @@ PublicKey = bcJDrYlhWls25zz9+bJcWiONw8Qfx1tai504+vKLcgQ=
|
|||
PresharedKey = 40DSkC0TTySjBFyUj19++ngCdYxAHZaLnsrz8Ck9R2Q=
|
||||
Endpoint = 85.208.110.167:50395
|
||||
AllowedIPs = 0.0.0.0/0,::/0
|
||||
|
||||
Loading…
Reference in New Issue