makefile and service
This commit is contained in:
@@ -0,0 +1,48 @@
|
|||||||
|
# Настройки
|
||||||
|
SERVER_IP = 62.60.244.156
|
||||||
|
REMOTE_USER = root
|
||||||
|
REMOTE_PATH = /root/netr-core
|
||||||
|
SERVICE_NAME = netrunner-server
|
||||||
|
|
||||||
|
.PHONY: build-client build-server deploy-server logs
|
||||||
|
|
||||||
|
# Сборка
|
||||||
|
build-client:
|
||||||
|
cargo build --bin netrunner-client --release
|
||||||
|
|
||||||
|
build-server:
|
||||||
|
cargo build --bin netrunner-server --release
|
||||||
|
|
||||||
|
setup-server:
|
||||||
|
@echo "--- Обновление системы и установка зависимостей ---"
|
||||||
|
ssh $(REMOTE_USER)@$(SERVER_IP) "\
|
||||||
|
apt-get update && \
|
||||||
|
apt-get upgrade -y && \
|
||||||
|
apt-get install -y build-essential libssl-dev pkg-config && \
|
||||||
|
mkdir -p $(REMOTE_PATH)"
|
||||||
|
|
||||||
|
# Деплой
|
||||||
|
deploy-server: build-server
|
||||||
|
@echo "--- Останавливаем старый сервер ---"
|
||||||
|
ssh $(REMOTE_USER)@$(SERVER_IP) "systemctl stop $(SERVICE_NAME)" || true
|
||||||
|
|
||||||
|
@echo "--- Копируем бинарник ---"
|
||||||
|
ssh $(REMOTE_USER)@$(SERVER_IP) "mkdir -p $(REMOTE_PATH)"
|
||||||
|
scp target/release/netrunner-server $(REMOTE_USER)@$(SERVER_IP):$(REMOTE_PATH)/
|
||||||
|
|
||||||
|
@echo "--- Копируем файл сервиса ---"
|
||||||
|
scp server/netrunner-server.service $(REMOTE_USER)@$(SERVER_IP):/etc/systemd/system/$(SERVICE_NAME).service
|
||||||
|
|
||||||
|
@echo "--- Запускаем сервис ---"
|
||||||
|
ssh $(REMOTE_USER)@$(SERVER_IP) "\
|
||||||
|
systemctl daemon-reload && \
|
||||||
|
systemctl enable $(SERVICE_NAME) && \
|
||||||
|
systemctl start $(SERVICE_NAME)"
|
||||||
|
|
||||||
|
# Логи
|
||||||
|
logs:
|
||||||
|
ssh $(REMOTE_USER)@$(SERVER_IP) "journalctl -u $(SERVICE_NAME) -f"
|
||||||
|
|
||||||
|
# Вход на сервер
|
||||||
|
ssh:
|
||||||
|
ssh $(REMOTE_USER)@$(SERVER_IP)
|
||||||
@@ -1,17 +0,0 @@
|
|||||||
use netrunner_common::{
|
|
||||||
logger_init,
|
|
||||||
proxy::{connection::connection::ConnectionRole, network::Network},
|
|
||||||
};
|
|
||||||
fn main() {
|
|
||||||
logger_init();
|
|
||||||
//todo normal address
|
|
||||||
let net = Network::new(8080, ConnectionRole::Client, Some("0.0.0.0:4443".into()));
|
|
||||||
|
|
||||||
// Создаем движок (Runtime)
|
|
||||||
let rt = tokio::runtime::Runtime::new().expect("Failed to create Tokio runtime");
|
|
||||||
|
|
||||||
// "Блокируем" основной поток, пока работает асинхронный код
|
|
||||||
rt.block_on(async {
|
|
||||||
net.run().await;
|
|
||||||
});
|
|
||||||
}
|
|
||||||
@@ -1,6 +1,7 @@
|
|||||||
use lru::LruCache;
|
use lru::LruCache;
|
||||||
use std::net::Ipv4Addr;
|
use std::net::Ipv4Addr;
|
||||||
use std::num::NonZeroUsize;
|
use std::num::NonZeroUsize;
|
||||||
|
use tracing::{debug, info};
|
||||||
|
|
||||||
pub struct FakeIpStore {
|
pub struct FakeIpStore {
|
||||||
cache: LruCache<String, Ipv4Addr>,
|
cache: LruCache<String, Ipv4Addr>,
|
||||||
@@ -12,6 +13,7 @@ const START_IP: u32 = 0x64400001; // 100.64.0.1 (IP for Service Networks/Shared
|
|||||||
|
|
||||||
impl FakeIpStore {
|
impl FakeIpStore {
|
||||||
pub fn new() -> Self {
|
pub fn new() -> Self {
|
||||||
|
info!("Initializing FakeIpStore starting at 100.64.0.1");
|
||||||
Self {
|
Self {
|
||||||
cache: LruCache::new(NonZeroUsize::new(2000).unwrap()),
|
cache: LruCache::new(NonZeroUsize::new(2000).unwrap()),
|
||||||
rev_cache: LruCache::new(NonZeroUsize::new(2000).unwrap()),
|
rev_cache: LruCache::new(NonZeroUsize::new(2000).unwrap()),
|
||||||
@@ -21,16 +23,24 @@ impl FakeIpStore {
|
|||||||
|
|
||||||
pub fn get_or_assign(&mut self, host: &str) -> Ipv4Addr {
|
pub fn get_or_assign(&mut self, host: &str) -> Ipv4Addr {
|
||||||
if let Some(&ip) = self.cache.get(host) {
|
if let Some(&ip) = self.cache.get(host) {
|
||||||
|
debug!(host = %host, ip = %ip, "Cache hit: IP already assigned");
|
||||||
return ip;
|
return ip;
|
||||||
}
|
}
|
||||||
let ip = Ipv4Addr::from(self.next_ip);
|
let ip = Ipv4Addr::from(self.next_ip);
|
||||||
self.next_ip += 1;
|
self.next_ip += 1;
|
||||||
self.cache.put(host.to_string(), ip);
|
self.cache.put(host.to_string(), ip);
|
||||||
self.rev_cache.put(ip, host.to_string());
|
self.rev_cache.put(ip, host.to_string());
|
||||||
|
info!(host = %host, ip = %ip, "Assigned new fake IP");
|
||||||
ip
|
ip
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn lookup_by_ip(&self, ip: &Ipv4Addr) -> Option<String> {
|
pub fn lookup_by_ip(&self, ip: &Ipv4Addr) -> Option<String> {
|
||||||
self.rev_cache.peek(ip).cloned()
|
if let Some(host) = self.rev_cache.peek(ip) {
|
||||||
|
debug!(ip = %ip, host = %host, "Reverse lookup successful");
|
||||||
|
Some(host.clone())
|
||||||
|
} else {
|
||||||
|
debug!(ip = %ip, "Reverse lookup miss");
|
||||||
|
None
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
+1
-1
@@ -31,7 +31,7 @@ async fn main() {
|
|||||||
let config = Config::new(smoltcp::wire::HardwareAddress::Ip);
|
let config = Config::new(smoltcp::wire::HardwareAddress::Ip);
|
||||||
|
|
||||||
let mut caps = DeviceCapabilities::default();
|
let mut caps = DeviceCapabilities::default();
|
||||||
let remote_address: String = "172.18.151.121:4443".into();
|
let remote_address: String = "62.60.244.156:443".into();
|
||||||
caps.max_transmission_unit = 1500;
|
caps.max_transmission_unit = 1500;
|
||||||
caps.medium = smoltcp::phy::Medium::Ip;
|
caps.medium = smoltcp::phy::Medium::Ip;
|
||||||
|
|
||||||
|
|||||||
@@ -64,7 +64,6 @@ impl Device for VirtTunDevice {
|
|||||||
|
|
||||||
fn receive(&mut self, _timestamp: Instant) -> Option<(Self::RxToken<'_>, Self::TxToken<'_>)> {
|
fn receive(&mut self, _timestamp: Instant) -> Option<(Self::RxToken<'_>, Self::TxToken<'_>)> {
|
||||||
if let Ok(buffer) = self.in_buf.try_recv() {
|
if let Ok(buffer) = self.in_buf.try_recv() {
|
||||||
trace!("--- TUN RX: {} bytes ---", buffer.len()); // Посмотри, что именно прилетает
|
|
||||||
let rx = Self::RxToken {
|
let rx = Self::RxToken {
|
||||||
buffer,
|
buffer,
|
||||||
phantom_device: PhantomData,
|
phantom_device: PhantomData,
|
||||||
|
|||||||
@@ -0,0 +1,20 @@
|
|||||||
|
[Unit]
|
||||||
|
Description=Netrunner Remote Proxy
|
||||||
|
After=network.target
|
||||||
|
|
||||||
|
[Service]
|
||||||
|
# Запускаем от root, так как файл лежит в /root/
|
||||||
|
User=root
|
||||||
|
|
||||||
|
# Путь к папке
|
||||||
|
WorkingDirectory=/root/netr-core
|
||||||
|
|
||||||
|
# Точный путь к файлу
|
||||||
|
ExecStart=/root/netr-core/netrunner-server --host=0.0.0.0 --port=443
|
||||||
|
|
||||||
|
Restart=always
|
||||||
|
RestartSec=3
|
||||||
|
LimitNOFILE=65535
|
||||||
|
|
||||||
|
[Install]
|
||||||
|
WantedBy=multi-user.target
|
||||||
Reference in New Issue
Block a user