sterepando commited on
Commit
34933ae
·
verified ·
1 Parent(s): e0fa400

Update Dockerfile

Browse files
Files changed (1) hide show
  1. Dockerfile +15 -17
Dockerfile CHANGED
@@ -8,6 +8,7 @@ RUN apt-get update && apt-get install -y \
8
  build-essential \
9
  libssl-dev \
10
  pkg-config \
 
11
  && rm -rf /var/lib/apt/lists/*
12
 
13
  # 2. Установка Android NDK
@@ -28,8 +29,13 @@ RUN cargo install cargo-ndk
28
  WORKDIR /app
29
  RUN cargo init --lib --name vless_core
30
 
31
- # 5. Настройка Cargo.toml (Зависимости: Tokio, Log, JNI/CTypes совместимость)
32
- RUN echo '[lib]\n\
 
 
 
 
 
33
  crate-type = ["cdylib"]\n\
34
  \n\
35
  [dependencies]\n\
@@ -40,14 +46,11 @@ log = "0.4"\n\
40
  android_logger = "0.13"\n\
41
  lazy_static = "1.4"\n\
42
  serde = { version = "1.0", features = ["derive"] }\n\
43
- serde_json = "1.0"\n\
44
- # В реальном продакшене здесь были бы крейты для VLESS протокола (напр. v2ray-core rust port)\n\
45
- # Для примера реализуем сокет-логику\n\
46
- ' > Cargo.toml
47
 
48
  # 6. Написание исходного кода (src/lib.rs)
49
- # Реализует экспорт функций для Python (ctypes) и базовый цикл VLESS клиента
50
- RUN echo 'use std::ffi::{CStr, CString};\n\
51
  use std::os::raw::{c_char, c_int};\n\
52
  use std::sync::{Arc, Mutex};\n\
53
  use log::{info, error, LevelFilter};\n\
@@ -75,11 +78,7 @@ struct VlessConfig {\n\
75
  \n\
76
  async fn vless_worker(config: VlessConfig) {\n\
77
  info!("Starting VLESS Core connecting to {}:{}", config.address, config.port);\n\
78
- // Имитация работы VLESS (Keepalive)\n\
79
  loop {\n\
80
- // В реальном коде здесь происходит TCP Handshake и VLESS Request\n\
81
- // use tokio::net::TcpStream;\n\
82
- // let stream = TcpStream::connect((config.address.as_str(), config.port)).await;\n\
83
  info!("VLESS Keepalive: Ping to {}", config.address);\n\
84
  tokio::time::sleep(tokio::time::Duration::from_secs(5)).await;\n\
85
  }\n\
@@ -103,7 +102,7 @@ pub extern "C" fn start_vless(config_json: *const c_char) -> c_int {\n\
103
  \n\
104
  let mut handle = VPN_HANDLE.lock().unwrap();\n\
105
  if handle.is_some() {\n\
106
- return 1; // Already running\n\
107
  }\n\
108
  \n\
109
  *handle = Some(RUNTIME.spawn(vless_worker(config)));\n\
@@ -119,9 +118,8 @@ pub extern "C" fn stop_vless() -> c_int {\n\
119
  info!("VLESS Service Stopped");\n\
120
  return 0;\n\
121
  }\n\
122
- return 1; // Was not running\n\
123
- }\n\
124
- ' > src/lib.rs
125
 
126
  # 7. Сборка библиотек под разные архитектуры
127
  RUN cargo ndk -t armeabi-v7a -t arm64-v8a -t x86_64 -o ./jniLibs build --release
@@ -130,6 +128,6 @@ RUN cargo ndk -t armeabi-v7a -t arm64-v8a -t x86_64 -o ./jniLibs build --release
130
  WORKDIR /app
131
  RUN zip -r vless_libs.zip jniLibs
132
 
133
- # 9. Запуск сервера для скачивания (Hugging Face Spaces слушает 7860)
134
  EXPOSE 7860
135
  CMD ["python3", "-m", "http.server", "7860"]
 
8
  build-essential \
9
  libssl-dev \
10
  pkg-config \
11
+ zip \
12
  && rm -rf /var/lib/apt/lists/*
13
 
14
  # 2. Установка Android NDK
 
29
  WORKDIR /app
30
  RUN cargo init --lib --name vless_core
31
 
32
+ # 5. Настройка Cargo.toml (ИСПРАВЛЕНО: добавлена секция [package])
33
+ RUN printf '[package]\n\
34
+ name = "vless_core"\n\
35
+ version = "0.1.0"\n\
36
+ edition = "2021"\n\
37
+ \n\
38
+ [lib]\n\
39
  crate-type = ["cdylib"]\n\
40
  \n\
41
  [dependencies]\n\
 
46
  android_logger = "0.13"\n\
47
  lazy_static = "1.4"\n\
48
  serde = { version = "1.0", features = ["derive"] }\n\
49
+ serde_json = "1.0"\n' > Cargo.toml
 
 
 
50
 
51
  # 6. Написание исходного кода (src/lib.rs)
52
+ # Используем printf для корректной обработки переносов строк и спецсимволов
53
+ RUN printf 'use std::ffi::CStr;\n\
54
  use std::os::raw::{c_char, c_int};\n\
55
  use std::sync::{Arc, Mutex};\n\
56
  use log::{info, error, LevelFilter};\n\
 
78
  \n\
79
  async fn vless_worker(config: VlessConfig) {\n\
80
  info!("Starting VLESS Core connecting to {}:{}", config.address, config.port);\n\
 
81
  loop {\n\
 
 
 
82
  info!("VLESS Keepalive: Ping to {}", config.address);\n\
83
  tokio::time::sleep(tokio::time::Duration::from_secs(5)).await;\n\
84
  }\n\
 
102
  \n\
103
  let mut handle = VPN_HANDLE.lock().unwrap();\n\
104
  if handle.is_some() {\n\
105
+ return 1;\n\
106
  }\n\
107
  \n\
108
  *handle = Some(RUNTIME.spawn(vless_worker(config)));\n\
 
118
  info!("VLESS Service Stopped");\n\
119
  return 0;\n\
120
  }\n\
121
+ return 1;\n\
122
+ }\n' > src/lib.rs
 
123
 
124
  # 7. Сборка библиотек под разные архитектуры
125
  RUN cargo ndk -t armeabi-v7a -t arm64-v8a -t x86_64 -o ./jniLibs build --release
 
128
  WORKDIR /app
129
  RUN zip -r vless_libs.zip jniLibs
130
 
131
+ # 9. Запуск сервера для скачивания
132
  EXPOSE 7860
133
  CMD ["python3", "-m", "http.server", "7860"]