Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Co-authored-by: Tianling Shen <cnsztl@immortalwrt.org> Signed-off-by: Tianling Shen <cnsztl@immortalwrt.org> Co-authored-by: He Cheng <57560866+hecheng337@users.noreply.github.com> Co-authored-by: Tianling Shen <cnsztl@immortalwrt.org>
- Loading branch information
1 parent
80125b8
commit 886a9fd
Showing
6 changed files
with
230 additions
and
173 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,82 @@ | ||
# SPDX-License-Identifer: GPL-3.0-only | ||
# | ||
# Copyright (C) 2020 - ntop.org and contributors | ||
# Copyright (C) 2021-2022 ImmortalWrt.org | ||
|
||
include $(TOPDIR)/rules.mk | ||
|
||
PKG_NAME:=n2n | ||
PKG_VERSION:=3.0 | ||
PKG_RELEASE:=$(AUTORELEASE) | ||
|
||
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz | ||
PKG_SOURCE_URL:=https://codeload.github.com/ntop/n2n/tar.gz/$(PKG_VERSION)? | ||
PKG_HASH:=25fcabba7bfcf25f4c9cd7fecc7ce11de48beb0b0f3506053d8485604ea8f50d | ||
|
||
PKG_LICENSE:=GPL-3.0 | ||
PKG_LICENSE_FILE:=LICENSE | ||
PKG_MAINTAINER:=Emanuele Faranda <faranda@ntop.org> | ||
|
||
include $(INCLUDE_DIR)/package.mk | ||
include $(INCLUDE_DIR)/cmake.mk | ||
|
||
define Package/n2n/template | ||
SECTION:=net | ||
CATEGORY:=Network | ||
SUBMENU:=VPN | ||
TITLE:=N2N Peer-to-peer VPN | ||
URL:=http://www.ntop.org/n2n | ||
DEPENDS:=+libcap +libopenssl +libpthread +libzstd | ||
endef | ||
|
||
define Package/n2n | ||
$(call Package/n2n/template) | ||
DEPENDS+=+kmod-tun +resolveip | ||
endef | ||
|
||
define Package/n2n/description | ||
This package contains client node and supernode for the N2N infrastructure. | ||
endef | ||
|
||
define Package/n2n/conffiles | ||
/etc/config/n2n | ||
endef | ||
|
||
define Package/n2n-utils | ||
$(call Package/n2n/template) | ||
DEPENDS+=+n2n +libpcap | ||
endef | ||
|
||
define Package/n2n-utils/description | ||
This package contains extend utilities for the N2N infrastructure. | ||
endef | ||
|
||
CMAKE_OPTIONS+= \ | ||
-DCMAKE_BUILD_TYPE=Release \ | ||
-DN2N_OPTION_USE_PTHREAD=ON \ | ||
-DN2N_OPTION_USE_OPENSSL=ON \ | ||
-DN2N_OPTION_USE_PCAPLIB=ON \ | ||
-DN2N_OPTION_USE_ZSTD=ON | ||
|
||
define Package/n2n/install | ||
$(INSTALL_DIR) $(1)/usr/bin | ||
$(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/sbin/edge $(1)/usr/bin/n2n-edge | ||
$(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/sbin/supernode $(1)/usr/bin/n2n-supernode | ||
|
||
$(INSTALL_DIR) $(1)/etc/config | ||
$(INSTALL_CONF) ./files/n2n.config $(1)/etc/config/n2n | ||
$(INSTALL_DIR) $(1)/etc/init.d | ||
$(INSTALL_BIN) ./files/n2n.init $(1)/etc/init.d/n2n | ||
$(INSTALL_DIR) $(1)/etc/uci-defaults | ||
$(INSTALL_BIN) ./files/n2n-migrate-conf.sh $(1)/etc/uci-defaults/50-n2n-migrate-conf | ||
endef | ||
|
||
define Package/n2n-utils/install | ||
$(INSTALL_DIR) $(1)/usr/bin | ||
$(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/bin/n2n-benchmark $(1)/usr/bin/ | ||
$(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/bin/n2n-decode $(1)/usr/bin/ | ||
$(INSTALL_BIN) $(PKG_BUILD_DIR)/n2n-keygen $(1)/usr/bin/ | ||
endef | ||
|
||
$(eval $(call BuildPackage,n2n)) | ||
$(eval $(call BuildPackage,n2n-utils)) |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,4 @@ | ||
#!/bin/sh | ||
|
||
[ ! -e "/etc/config/n2n_v2" ] || mv "/etc/config/n2n_v2" "/etc/config/n2n" | ||
exit 0 |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,143 @@ | ||
#!/bin/sh /etc/rc.common | ||
# Copyright (C) 2008-2020 OpenWrt.org | ||
# Copyright (C) 2022 ImmortalWrt.org | ||
|
||
START=99 | ||
USE_PROCD=1 | ||
|
||
start_instance() { | ||
local cfg="$1" | ||
|
||
local type | ||
config_get type "$cfg" TYPE | ||
|
||
case "$type" in | ||
edge) | ||
local enabled | ||
config_get_bool enabled "$cfg" 'enabled' '0' | ||
[ "$enabled" = "1" ] || return 1 | ||
|
||
local masquerade tunname mode ipaddr prefix mtu | ||
local supernode port second_supernode second_port | ||
local community key route | ||
config_get_bool masquerade "$cfg" 'masquerade' '0' | ||
config_get tunname "$cfg" 'tunname' | ||
config_get mode "$cfg" 'mode' | ||
config_get ipaddr "$cfg" 'ipaddr' | ||
config_get prefix "$cfg" 'prefix' | ||
config_get mtu "$cfg" 'mtu' | ||
config_get supernode "$cfg" 'supernode' | ||
config_get port "$cfg" 'port' | ||
config_get second_supernode "$cfg" 'second_supernode' | ||
config_get second_port "$cfg" 'second_port' | ||
config_get community "$cfg" 'community' | ||
config_get key "$cfg" 'key' | ||
config_get_bool route "$cfg" 'route' '0' | ||
|
||
local address | ||
address="$ipaddr/$prefix" | ||
[ "$mode" != 'dhcp' ] || address='0.0.0.0' | ||
|
||
procd_open_instance "edge_$cfg" | ||
procd_set_param command /usr/bin/n2n-edge -f | ||
procd_append_param command -u 0 -g 0 | ||
procd_append_param command -d "$tunname" | ||
procd_append_param command -a "$mode:$address" | ||
procd_append_param command -c "$community" | ||
procd_append_param command -l "$supernode:$port" | ||
[ -z "$key" ] || procd_append_param command -k "$key" | ||
[ -z "$mtu" ] || procd_append_param command -M "$mtu" | ||
[ -z "$second_supernode" -o -z "$second_port" ] || procd_append_param command -l "$second_supernode:$second_port" | ||
[ "$route" = "0" ] || procd_append_param command -r | ||
|
||
procd_set_param stdout 1 | ||
procd_set_param stderr 1 | ||
procd_set_param respawn | ||
procd_close_instance | ||
|
||
iptables -I FORWARD -i "$tunname" -j ACCEPT -m comment --comment 'n2n edge eth' | ||
iptables -I FORWARD -o "$tunname" -j ACCEPT -m comment --comment 'n2n edge eth' | ||
[ "$masquerade" = "0" ] || iptables -t nat -I POSTROUTING -o "$tunname" -j MASQUERADE -m comment --comment 'n2n edge net' | ||
;; | ||
supernode) | ||
local enabled | ||
config_get_bool enabled "$cfg" 'enabled' '0' | ||
[ "$enabled" = "1" ] || return 1 | ||
|
||
local port subnet | ||
config_get port "$cfg" 'port' | ||
config_get subnet "$cfg" 'subnet' | ||
|
||
procd_open_instance "supernode_$cfg" | ||
procd_set_param command /usr/bin/n2n-supernode -f | ||
procd_append_param command -p "$port" | ||
procd_append_param command -a "$subnet" | ||
|
||
procd_set_param stdout 1 | ||
procd_set_param stderr 1 | ||
procd_set_param respawn | ||
procd_close_instance | ||
|
||
iptables -I INPUT -p udp --dport $port -j ACCEPT -m comment --comment 'n2n supernode port' | ||
;; | ||
route) | ||
local enabled | ||
config_get_bool enabled "$cfg" 'enabled' '0' | ||
[ "$enabled" = "1" ] || return 1 | ||
|
||
local ip mask gw | ||
config_get ip "$cfg" 'ip' | ||
config_get mask "$cfg" 'mask' | ||
config_get gw "$cfg" 'gw' | ||
route add -net "$ip/$mask" gw "$gw" | ||
;; | ||
esac | ||
} | ||
|
||
stop_instance() { | ||
local cfg="$1" | ||
|
||
local type | ||
config_get type "$cfg" TYPE | ||
|
||
case "$type" in | ||
edge) | ||
local tunname masquerade | ||
config_get tunname "$cfg" 'tunname' | ||
config_get_bool masquerade "$cfg" 'masquerade' '0' | ||
|
||
iptables -D FORWARD -i "$tunname" -j ACCEPT -m comment --comment 'n2n edge eth' 2>/dev/null | ||
iptables -D FORWARD -o "$tunname" -j ACCEPT -m comment --comment 'n2n edge eth' 2>/dev/null | ||
iptables -t nat -D POSTROUTING -o "$tunname" -j MASQUERADE -m comment --comment 'n2n edge net' 2>"/dev/null" | ||
;; | ||
supernode) | ||
local port | ||
config_get port "$cfg" 'port' | ||
|
||
iptables -D INPUT -p udp --dport "$port" -j ACCEPT -m comment --comment 'n2n supernode port' 2>"/dev/null" | ||
;; | ||
esac | ||
} | ||
|
||
start_service() { | ||
config_load 'n2n' | ||
config_foreach start_instance 'edge' | ||
config_foreach start_instance 'supernode' | ||
sleep 2 | ||
config_foreach start_instance 'route' | ||
} | ||
|
||
stop_service() { | ||
config_load 'n2n' | ||
config_foreach stop_instance 'edge' | ||
config_foreach stop_instance 'supernode' | ||
} | ||
|
||
reload_service() { | ||
stop | ||
start | ||
} | ||
|
||
service_triggers() { | ||
procd_add_reload_trigger "n2n" | ||
} |
This file was deleted.
Oops, something went wrong.
Oops, something went wrong.