使用自定义流程实现网关协议解析转发功能
This commit is contained in:
@@ -1,42 +0,0 @@
|
||||
Remove-Job *
|
||||
|
||||
$tasks = 0
|
||||
$start = Get-Date
|
||||
|
||||
$tasks++
|
||||
Write-Output "building proxy for windows amd64..."
|
||||
Start-Job -ScriptBlock {
|
||||
$env:GOOS = "windows"; $env:GOARCH = "amd64"; go build -ldflags '-w -s' -o bin/proxy_win_amd64.exe main.go
|
||||
} | Out-Null
|
||||
|
||||
$tasks++
|
||||
Write-Output "building proxy for linux amd64..."
|
||||
Start-Job -ScriptBlock {
|
||||
$env:GOOS = "linux"; $env:GOARCH = "amd64"; go build -ldflags '-w -s' -o bin/proxy_linux_amd64 main.go
|
||||
} | Out-Null
|
||||
|
||||
$tasks++
|
||||
Write-Output "building proxy for linux arm64..."
|
||||
Start-Job -ScriptBlock {
|
||||
$env:GOOS = "linux"; $env:GOARCH = "arm64"; go build -ldflags '-w -s' -o bin/proxy_linux_arm64 main.go
|
||||
} | Out-Null
|
||||
|
||||
# Wait for all jobs to complete
|
||||
while ($tasks -gt 0)
|
||||
{
|
||||
foreach ($job in Get-Job)
|
||||
{
|
||||
if ($job.State -eq "Completed")
|
||||
{
|
||||
$tasks--
|
||||
$job | Receive-Job
|
||||
$job | Remove-Job
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
$end = Get-Date
|
||||
|
||||
Write-Output "build completed"
|
||||
Write-Output "time taken: $( ($end - $start).TotalSeconds ) seconds"
|
||||
Write-Output "output files are in ./bin/"
|
||||
@@ -1,38 +0,0 @@
|
||||
name: proxy-server
|
||||
|
||||
services:
|
||||
|
||||
frp:
|
||||
container_name: proxy-server-dev-frp
|
||||
build:
|
||||
context: ./frp
|
||||
dockerfile: Dockerfile
|
||||
ports:
|
||||
- "18080:18080"
|
||||
- "20000-20100:20000-20100"
|
||||
networks:
|
||||
- proxy-server-dev
|
||||
restart: always
|
||||
|
||||
postgres:
|
||||
container_name: proxy-server-dev-postgres
|
||||
image: postgres:17
|
||||
environment:
|
||||
POSTGRES_DB: $DB_DATABASE
|
||||
POSTGRES_USER: $DB_USERNAME
|
||||
POSTGRES_PASSWORD: $DB_PASSWORD
|
||||
ports:
|
||||
- "${DB_PORT}:5432"
|
||||
volumes:
|
||||
- postgres-data:/var/lib/postgresql/data
|
||||
networks:
|
||||
- proxy-server-dev
|
||||
restart: always
|
||||
|
||||
networks:
|
||||
proxy-server-dev:
|
||||
driver: bridge
|
||||
|
||||
volumes:
|
||||
postgres-data:
|
||||
name: proxy-server-dev-postgres-data
|
||||
@@ -1,10 +0,0 @@
|
||||
FROM ubuntu:20.04
|
||||
|
||||
WORKDIR /app
|
||||
|
||||
COPY frps frps
|
||||
COPY frps.toml frps.toml
|
||||
|
||||
EXPOSE 18080
|
||||
|
||||
CMD ["./frps", "-c", "frps.toml"]
|
||||
Binary file not shown.
@@ -1,14 +0,0 @@
|
||||
bindPort = 18080
|
||||
transport.tcpMux = true
|
||||
|
||||
[[httpPlugins]]
|
||||
name = "chan-req"
|
||||
addr = "host.docker.internal:8080"
|
||||
path = "/chan/request"
|
||||
ops = ["NewUserConn"]
|
||||
|
||||
[[httpPlugins]]
|
||||
name = "chan-test"
|
||||
addr = "host.docker.internal:8080"
|
||||
path = "/chan/test"
|
||||
ops = ["NewProxy", "NewWorkConn"]
|
||||
@@ -1,73 +0,0 @@
|
||||
-- nodes
|
||||
DROP TABLE IF EXISTS nodes;
|
||||
CREATE TABLE nodes (
|
||||
id SERIAL PRIMARY KEY,
|
||||
name VARCHAR(255) NOT NULL UNIQUE,
|
||||
provider VARCHAR(255) NOT NULL,
|
||||
location VARCHAR(255) NOT NULL,
|
||||
ip_address VARCHAR(255) NOT NULL,
|
||||
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
|
||||
updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
|
||||
deleted_at TIMESTAMP
|
||||
);
|
||||
CREATE INDEX devices_provider_index ON nodes (provider);
|
||||
CREATE INDEX devices_location_index ON nodes (location);
|
||||
|
||||
-- users
|
||||
DROP TABLE IF EXISTS users;
|
||||
CREATE TABLE users (
|
||||
id SERIAL PRIMARY KEY,
|
||||
password VARCHAR(255) NOT NULL,
|
||||
username VARCHAR(255) NOT NULL UNIQUE,
|
||||
email VARCHAR(255) NOT NULL UNIQUE,
|
||||
phone VARCHAR(255) NOT NULL UNIQUE,
|
||||
name VARCHAR(255) NOT NULL,
|
||||
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
|
||||
updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
|
||||
deleted_at TIMESTAMP
|
||||
);
|
||||
|
||||
-- user_ips
|
||||
DROP TABLE IF EXISTS user_ips;
|
||||
CREATE TABLE user_ips (
|
||||
id SERIAL PRIMARY KEY,
|
||||
user_id int NOT NULL REFERENCES users (id)
|
||||
ON UPDATE CASCADE
|
||||
ON DELETE CASCADE,
|
||||
ip_address VARCHAR(255) NOT NULL,
|
||||
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
|
||||
updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
|
||||
deleted_at TIMESTAMP
|
||||
);
|
||||
CREATE INDEX user_ips_user_id_index ON user_ips (user_id);
|
||||
CREATE INDEX user_ips_ip_address_index ON user_ips (ip_address);
|
||||
|
||||
-- channel
|
||||
DROP TABLE IF EXISTS channels;
|
||||
CREATE TABLE channels (
|
||||
id SERIAL PRIMARY KEY,
|
||||
user_id int NOT NULL REFERENCES users (id)
|
||||
ON UPDATE CASCADE
|
||||
ON DELETE CASCADE,
|
||||
node_id int NOT NULL REFERENCES nodes (id) --
|
||||
ON UPDATE CASCADE --
|
||||
ON DELETE SET NULL, -- 节点删除后,用户侧需要保留提取记录
|
||||
forward_snapshot VARCHAR(255),
|
||||
protocol VARCHAR(255),
|
||||
auth_ip bool,
|
||||
auth_pass bool,
|
||||
username VARCHAR(255),
|
||||
password VARCHAR(255),
|
||||
expiration TIMESTAMP NOT NULL,
|
||||
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
|
||||
updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
|
||||
deleted_at TIMESTAMP
|
||||
);
|
||||
CREATE INDEX channel_user_id_index ON channels (user_id);
|
||||
CREATE INDEX channel_node_id_index ON channels (node_id);
|
||||
|
||||
-- ====================
|
||||
-- 填充数据
|
||||
-- ====================
|
||||
|
||||
|
||||
@@ -1,4 +0,0 @@
|
||||
====================
|
||||
删除 channels.target_snapshot 不需要目标地址快照
|
||||
添加 channels.auth_ip 是否验证白名单
|
||||
添加 channels.auth_pass 是否验证密码
|
||||
@@ -1,59 +0,0 @@
|
||||
name: proxy-server
|
||||
|
||||
services:
|
||||
|
||||
frp:
|
||||
container_name: proxy-server-dev-frp
|
||||
build:
|
||||
context: ./frp
|
||||
dockerfile: Dockerfile
|
||||
ports:
|
||||
- "18080:18080"
|
||||
- "20000-20100:20000-20100"
|
||||
networks:
|
||||
- proxy-server-test
|
||||
restart: always
|
||||
|
||||
postgres:
|
||||
container_name: proxy-server-dev-postgres
|
||||
image: postgres:17
|
||||
environment:
|
||||
POSTGRES_DB: $DB_DATABASE
|
||||
POSTGRES_USER: $DB_USERNAME
|
||||
POSTGRES_PASSWORD: $DB_PASSWORD
|
||||
ports:
|
||||
- "${DB_PORT}:5432"
|
||||
volumes:
|
||||
- postgres-data:/var/lib/postgresql/data
|
||||
networks:
|
||||
- proxy-server-test
|
||||
restart: always
|
||||
|
||||
service:
|
||||
container_name: proxy-server-dev-service
|
||||
build:
|
||||
context: ../..
|
||||
dockerfile: Dockerfile
|
||||
environment:
|
||||
PORT: $PORT
|
||||
DB_HOST: $DB_HOST
|
||||
DB_PORT: $DB_PORT
|
||||
DB_DATABASE: $DB_DATABASE
|
||||
DB_USERNAME: $DB_USERNAME
|
||||
DB_PASSWORD: $DB_PASSWORD
|
||||
DB_TIMEZONE: $DB_TIMEZONE
|
||||
ports:
|
||||
- "${PORT}:${PORT}"
|
||||
networks:
|
||||
- proxy-server-test
|
||||
depends_on:
|
||||
- postgres
|
||||
restart: always
|
||||
|
||||
networks:
|
||||
proxy-server-test:
|
||||
driver: bridge
|
||||
|
||||
volumes:
|
||||
postgres-data:
|
||||
name: proxy-server-test-postgres-data
|
||||
@@ -1,10 +0,0 @@
|
||||
FROM ubuntu:20.04
|
||||
|
||||
WORKDIR /app
|
||||
|
||||
COPY frps frps
|
||||
COPY frps.toml frps.toml
|
||||
|
||||
EXPOSE 18080
|
||||
|
||||
CMD ["./frps", "-c", "frps.toml"]
|
||||
Binary file not shown.
@@ -1,8 +0,0 @@
|
||||
bindPort = 18080
|
||||
transport.tcpMux = true
|
||||
|
||||
[[httpPlugins]]
|
||||
name = "chan-req"
|
||||
addr = "service:8080"
|
||||
path = "/chan/request"
|
||||
ops = ["NewUserConn"]
|
||||
Reference in New Issue
Block a user