Compare commits

...

12 Commits

Author SHA1 Message Date
itdoginfo
17172dbc54 Fix 2024-10-13 14:05:01 +03:00
itdoginfo
9294b8a16f Update 2024-10-13 13:54:26 +03:00
itdoginfo
281aeb7540 Fix / in vless string 2024-10-13 13:53:56 +03:00
itdoginfo
e87eea0fd8 rm ipk 2024-10-13 13:09:26 +03:00
itdoginfo
d7ea5d50a2 dnsmasq-full install 2024-10-13 13:02:34 +03:00
itdoginfo
952dd6215a dnsmasq-full install 2024-10-13 13:01:36 +03:00
itdoginfo
a230f48ba3 opkg update added 2024-10-13 10:48:42 +03:00
itdoginfo
b2f3199895 /etc/init.d/ucitrack restart 2024-10-13 01:04:15 +03:00
itdoginfo
c3e99399ae Command for autoinstall 2024-10-13 00:56:36 +03:00
itdoginfo
d0a1a2b801 Script for install 2024-10-13 00:53:10 +03:00
itdoginfo
cd0b19ae46 Discord added 2024-10-13 00:31:33 +03:00
itdoginfo
a4e5cd437d Added readme 2024-10-12 16:53:05 +03:00
6 changed files with 178 additions and 6 deletions

132
README.md
View File

@@ -1,2 +1,130 @@
# podkop
Dev podkop
Это альфа версия, может не работать. Обсуждение https://t.me/itdogchat - топик Podkop dev
# Выпил getdomains
По минимуму
```
rm /etc/hotplug.d/iface/30-vpnroute
sed -i '/getdomains start/d' /etc/crontabs/root
rm /tmp/dnsmasq.d/domains.lst
ip route del default scope link table vpn
```
Может потребоваться удалить правила фаервола касающиеся vpn_subnet, internal итд.
# Установка
Пакет работает на всех архитектурах.
Будет точно работать только на OpenWrt 23.05.
Нужен dnsmasq-full. В автоматическом режиме ставится сам. Вручную надо поставить [самостоятельно](https://github.com/itdoginfo/podkop/blob/952dd6215a2a83d65937cf9e33534c42809091ed/install.sh#L20).
## Вручную
Сделать `opkg update`, чтоб установились зависимости.
Скачать пакеты `podkop_*.ipk` и `luci-app-podkop_*.ipk` из релиза. `opkg install` сначала первый, потом второй.
```
/etc/init.d/ucitrack restart
```
## Автоматическая
```
sh <(wget -O - https://raw.githubusercontent.com/itdoginfo/podkop/refs/heads/main/install.sh)
```
# Удаление
```
opkg remove luci-app-podkop podkop
```
# Использование
Конфиг: /etc/config/podkop
Luci: Services/podkop
## Режимы
### Proxy
Для VLESS и Shadowsocks. Другие протоколы тоже будут, кидайте в чат примеры строк без чувствительных данных.
Для использования этого режима нужен sing-box:
```
opkg update && opkg install sing-box
```
В этом режиме просто копируйте строку в **Proxy String** и из неё автоматически настроится sing-box.
### VPN
Здесь у вас должен быть уже настроен WG/OpenVPN/OpenConnect etc, создана Zone и Forwarding.
Просто выбрать интерфейс из списка.
## Настройка доменов и подсетей
**Domain list enable** - Включить общий список.
**Delist domains from main list enable** - Выключение заданных доменов из общего списка. Задавать списком.
**Subnets list enable** - Включить подсети из общего списка, выбрать из предложенных.
**Custom domains enable** - Добавить свои домены. Задавать списком.
**Custom subnets enable** - Добавить подсети или IP-адреса. Для подсетей задать маску.
# Известные баги
1. ucitrack не рестартится автоматически после установки пакета
# ToDo
- [x] Скрипт для автоматической установки.
- [x] Подсети дискорда.
- [ ] Удаление getdomains через скрипт. Кроме туннеля и sing-box.
- [ ] Дополнительная вкладка для ещё одного туннеля. Домены, подсети.
- [ ] Wiki
- [ ] IPv6
- [ ] Исключение для IP, не ходить в туннель\прокси совсем 0x0
# Разработка
Есть два варианта:
- Просто поставить пакет на роутер или виртуалку и прям редактировать через SFTP (opkg install openssh-sftp-server)
- SDK, чтоб собирать пакеты
Для сборки пакетов нужен SDK, один из вариантов скачать прям файл и разархивировать
https://downloads.openwrt.org/releases/23.05.5/targets/x86/64/
Нужен файл с SDK в имени
```
wget https://downloads.openwrt.org/releases/23.05.5/targets/x86/64/openwrt-sdk-23.05.5-x86-64_gcc-12.3.0_musl.Linux-x86_64.tar.xz
tar xf openwrt-sdk-23.05.5-x86-64_gcc-12.3.0_musl.Linux-x86_64.tar.xz
mv openwrt-sdk-23.05.5-x86-64_gcc-12.3.0_musl.Linux-x86_64 SDK
```
Последнее для удобства.
Создаём директорию для пакета
```
mkdir package/utilites && mkdir package/luci
```
Симлинк из репозитория
```
ln -s ~/podkop/podkop package/utilites/podkop
ln -s ~/podkop/luci-app-podkop package/luci/luci-app-podkop
```
Сборка пакета
```
make package/podkop/{clean,compile} V=s
```
Также для luci
```
make package/luci-app-podkop/{clean,compile} V=s
```
При первом make выводится менюшка, можно просто сохранить и всё. Первый раз долго грузит зависимости.
## make зависимости
https://openwrt.org/docs/guide-developer/toolchain/install-buildsystem
Ubuntu
```
sudo apt update
sudo apt install build-essential clang flex bison g++ gawk \
gcc-multilib g++-multilib gettext git libncurses-dev libssl-dev \
python3-distutils rsync unzip zlib1g-dev file wget
```

35
install.sh Executable file
View File

@@ -0,0 +1,35 @@
#!/bin/sh
REPO="https://api.github.com/repos/itdoginfo/podkop/releases/latest"
DOWNLOAD_DIR="/tmp/podkop"
mkdir -p "$DOWNLOAD_DIR"
wget -qO- "$REPO" | grep -o 'https://[^"]*\.ipk' | while read -r url; do
filename=$(basename "$url")
echo "Download $filename..."
wget -q -O "$DOWNLOAD_DIR/$filename" "$url"
done
echo "opkg update"
opkg update
if opkg list-installed | grep -q dnsmasq-full; then
echo "dnsmasq-full already installed"
else
echo "Installed dnsmasq-full"
cd /tmp/ && opkg download dnsmasq-full
opkg remove dnsmasq && opkg install dnsmasq-full --cache /tmp/
[ -f /etc/config/dhcp-opkg ] && cp /etc/config/dhcp /etc/config/dhcp-old && mv /etc/config/dhcp-opkg /etc/config/dhcp
fi
echo "Installed..."
opkg install $DOWNLOAD_DIR/podkop*.ipk
opkg install $DOWNLOAD_DIR/luci-app-podkop*.ipk
rm -f $DOWNLOAD_DIR/podkop*.ipk $DOWNLOAD_DIR/luci-app-podkop*.ipk
/etc/init.d/ucitrack restart
echo "Install sing-box for proxy, or install and configure WG/OpenVPN/AWG/etc for VPN mode"

View File

@@ -4,7 +4,7 @@
include $(TOPDIR)/rules.mk
PKG_NAME:=luci-app-podkop
PKG_VERSION:=0.1.3
PKG_VERSION:=0.1.5
PKG_RELEASE:=1
LUCI_TITLE:=LuCI podkop app

View File

@@ -46,7 +46,7 @@ return view.extend({
o.default = '0';
o.rmempty = false;
o = s.option(form.ListValue, 'domain_list', _('Domain list'), _('A select list'));
o = s.option(form.ListValue, 'domain_list', _('Domain list'), _('Select a list'));
o.placeholder = 'placeholder';
o.value('ru_inside', 'Russia inside');
o.value('ru_outside', 'Russia outside');
@@ -71,6 +71,7 @@ return view.extend({
o.placeholder = 'Subnet list';
o.value('twitter', 'Twitter(x.com)');
o.value('meta', 'Meta');
o.value('discord', 'Discord(voice)');
o.depends('subnets_list_enabled', '1');
o.rmempty = false;

View File

@@ -1,7 +1,7 @@
include $(TOPDIR)/rules.mk
PKG_NAME:=podkop
PKG_VERSION:=0.1.3
PKG_VERSION:=0.1.5
PKG_RELEASE:=1
PKG_MAINTAINER:=ITDog <podkop@itdog.info>

View File

@@ -325,6 +325,7 @@ lists_domains_download() {
list_subnets_download() {
TWITTER_SUBNETS=https://raw.githubusercontent.com/itdoginfo/allow-domains/main/Subnets/IPv4/Twitter.lst
META_SUBNETS=https://raw.githubusercontent.com/itdoginfo/allow-domains/main/Subnets/IPv4/Meta.lst
DISCORD_SUBNETS=https://raw.githubusercontent.com/itdoginfo/allow-domains/refs/heads/main/Subnets/IPv4/Discord.lst
local URL="$1"
case "$URL" in
@@ -334,6 +335,9 @@ list_subnets_download() {
"meta")
URL=$META_SUBNETS
;;
"discord")
URL=$DISCORD_SUBNETS
;;
*)
log "Unidentified list of subnets"
exit 1
@@ -430,7 +434,11 @@ sing_box_config_vless() {
uuid=$(echo "$STRING" | cut -d'/' -f3 | cut -d'@' -f1)
server=$(echo "$STRING" | cut -d'@' -f2 | cut -d':' -f1)
port=$(echo "$STRING" | cut -d'@' -f2 | cut -d':' -f2 | cut -d'/' -f1)
#port=$(echo "$STRING" | cut -d'@' -f2 | cut -d':' -f2 | cut -d'/' -f1)
port=$(echo "$STRING" | cut -d'@' -f2 | cut -d':' -f2 | cut -d'?' -f1)
if [[ "$port" == */* ]]; then
port=$(echo "$port" | cut -d'/' -f1)
fi
type=$(get_param "type")
flow=$(get_param "flow")
sni=$(get_param "sni")