mirror of
https://github.com/itdoginfo/podkop.git
synced 2025-12-06 11:36:50 +03:00
Compare commits
14 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
17172dbc54 | ||
|
|
9294b8a16f | ||
|
|
281aeb7540 | ||
|
|
e87eea0fd8 | ||
|
|
d7ea5d50a2 | ||
|
|
952dd6215a | ||
|
|
a230f48ba3 | ||
|
|
b2f3199895 | ||
|
|
c3e99399ae | ||
|
|
d0a1a2b801 | ||
|
|
cd0b19ae46 | ||
|
|
a4e5cd437d | ||
|
|
6a86b3df40 | ||
|
|
147f5b561c |
4
.github/workflows/build.yml
vendored
4
.github/workflows/build.yml
vendored
@@ -24,8 +24,8 @@ jobs:
|
||||
|
||||
- name: Copy file from Docker container
|
||||
run: |
|
||||
docker cp podkop:/builder/bin/packages/x86_64/utilites ./bin/
|
||||
docker cp podkop:/builder/bin/packages/x86_64/luci ./bin/
|
||||
docker cp podkop:/builder/bin/packages/x86_64/utilites/. ./bin/
|
||||
docker cp podkop:/builder/bin/packages/x86_64/luci/. ./bin/
|
||||
|
||||
- name: Remove Docker container
|
||||
run: docker rm podkop
|
||||
|
||||
132
README.md
132
README.md
@@ -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
35
install.sh
Executable 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"
|
||||
@@ -4,7 +4,7 @@
|
||||
include $(TOPDIR)/rules.mk
|
||||
|
||||
PKG_NAME:=luci-app-podkop
|
||||
PKG_VERSION:=0.1.0
|
||||
PKG_VERSION:=0.1.5
|
||||
PKG_RELEASE:=1
|
||||
|
||||
LUCI_TITLE:=LuCI podkop app
|
||||
|
||||
@@ -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;
|
||||
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
include $(TOPDIR)/rules.mk
|
||||
|
||||
PKG_NAME:=podkop
|
||||
PKG_VERSION:=0.1.0
|
||||
PKG_VERSION:=0.1.5
|
||||
PKG_RELEASE:=1
|
||||
|
||||
PKG_MAINTAINER:=ITDog <podkop@itdog.info>
|
||||
|
||||
@@ -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")
|
||||
|
||||
Reference in New Issue
Block a user