Skip to content

Commit 7713025

Browse files
committed
Hub: link module web panel (AdGuard :3000) with auto-resolved LAN IP
1 parent 500591b commit 7713025

227 files changed

Lines changed: 68312 additions & 2 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

‎.dockerignore‎

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
.wsl-build
2+
dist
3+
fe-app-podkop
4+
scripts
5+
sdk
6+
.github
7+
.git
8+
*.md
9+
LICENSE
10+
**/.DS_Store

‎.gitattributes‎

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
* text=auto eol=lf

‎.github/CODEOWNERS‎

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
* @itdoginfo
Lines changed: 74 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,74 @@
1+
---
2+
name: 🐛 Сообщение об ошибке
3+
description: Создавайте только, если проблема точно не на вашей стороне.
4+
title: "[BUG] "
5+
labels: ["bug"]
6+
assignees: []
7+
body:
8+
- type: markdown
9+
attributes:
10+
value: |
11+
Спасибо за создание отчета об ошибке!
12+
13+
Перед отправкой, пожалуйста:
14+
- Проверьте [существующие issues](https://github.com/titovcode/krot/issues)
15+
- Просмотрите [README проекта](https://github.com/titovcode/krot#readme)
16+
17+
- type: textarea
18+
id: description
19+
attributes:
20+
label: 📝 Описание проблемы
21+
description: Четкое и краткое описание того, что не работает
22+
placeholder: Опишите проблему
23+
validations:
24+
required: true
25+
26+
- type: textarea
27+
id: reproduction
28+
attributes:
29+
label: Шаги для воспроизведения
30+
description: Шаги для воспроизведения проблемы. Если вы настраваете что-то по мануалу, приложите ссылку на него.
31+
placeholder: |
32+
1.
33+
2.
34+
3.
35+
4.
36+
validations:
37+
required: true
38+
39+
- type: textarea
40+
id: expected
41+
attributes:
42+
label: ✅ Ожидаемое поведение
43+
description: Четкое и краткое описание того, что должно было произойти
44+
placeholder: Опишите ожидаемое поведение
45+
validations:
46+
required: true
47+
48+
- type: textarea
49+
id: environment
50+
attributes:
51+
label: 🖥️ Информация о системе
52+
description: |
53+
Информация о вашей системе (заполните всё применимое)
54+
value: |
55+
- **OpenWrt версия**:
56+
- **Podkop Plus версия**:
57+
- **Роутер модель**:
58+
- **Sing-box версия**:
59+
render: markdown
60+
validations:
61+
required: true
62+
63+
- type: textarea
64+
id: config
65+
attributes:
66+
label: ⚙️ Конфигурация
67+
description: |
68+
Релевантные части конфигурации (удалите чувствительную информацию!)
69+
placeholder: |
70+
Например:
71+
- Содержимое /etc/config/krot
72+
- Конфигурация sing-box (если релевантно)
73+
- Дополнительные конфиги, которые потребуются wireless/network/dhcp и т.д.
74+
render: shell

‎.github/ISSUE_TEMPLATE/config.yml‎

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
blank_issues_enabled: false
2+
contact_links:
3+
- name: 💬 Если у вас что-то не работает, прежде всего прочитайте README проекта
4+
url: https://github.com/titovcode/krot
5+
- name: Telegram
6+
url: https://github.com/titovcode/krot#readme
7+
about: README Podkop Plus
Lines changed: 68 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,68 @@
1+
---
2+
name: ✨ Запрос новой функции
3+
description: Предложите новую функцию или улучшение для Podkop Plus
4+
title: "[FEATURE] "
5+
labels: ["enhancement", "needs-discussion"]
6+
assignees: []
7+
body:
8+
- type: markdown
9+
attributes:
10+
value: |
11+
Спасибо за предложение новой функции!
12+
13+
Перед отправкой, пожалуйста:
14+
- Проверьте [существующие запросы](https://github.com/titovcode/krot/issues?q=is%3Aissue+label%3Aenhancement)
15+
- Убедитесь, что функции не существует в [README проекта](https://github.com/titovcode/krot#readme)
16+
17+
- type: textarea
18+
id: summary
19+
attributes:
20+
label: Краткое описание
21+
description: Краткое описание предлагаемой функции для Podkop Plus
22+
placeholder: В одном предложении опишите, что вы хотите добавить...
23+
validations:
24+
required: true
25+
26+
- type: textarea
27+
id: problem
28+
attributes:
29+
label: Проблема, которую решает
30+
description: |
31+
Описание проблемы или неудобства, которое решит эта функция
32+
placeholder: |
33+
Сейчас нет возможности [...]
34+
validations:
35+
required: true
36+
37+
- type: textarea
38+
id: solution
39+
attributes:
40+
label: 💡 Предлагаемое решение
41+
description: Четкое и краткое описание того, что вы хотите реализовать
42+
placeholder: |
43+
Я хочу, чтобы Podkop мог [...]
44+
Предлагаю добавить функцию, которая [...]
45+
Можно было бы улучшить [...] путем [...]
46+
validations:
47+
required: true
48+
49+
- type: textarea
50+
id: alternatives
51+
attributes:
52+
label: Workaround
53+
description: |
54+
Опишите альтернативные решения или функции, которые вы рассматривали
55+
Есть ли обходные пути, которые вы используете сейчас?
56+
placeholder: |
57+
Сейчас я решаю это проблему путем [...]
58+
Альтернативой могло бы быть [...]
59+
Пробовал использовать [...], но это не подходит потому что [...]
60+
61+
- type: textarea
62+
id: implementation
63+
attributes:
64+
label: Идеи реализации (опционально)
65+
description: |
66+
Если у вас есть идеи о том, как это можно реализовать, поделитесь ими. Помните про ограничения LuCI.
67+
placeholder: |
68+
Это можно реализовать с помощью [...]

‎.github/pull_request_template.md‎

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
# Описание изменений
2+
3+
Краткое описание ваших изменений и их цель.
4+
5+
## Что изменено
6+
7+
Детальное описание изменений:
8+
-
9+
-
10+
-
11+
12+
(Этим вы экономите время ревьювера)

‎.github/workflows/build.yml‎

Lines changed: 93 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,93 @@
1+
name: Build packages
2+
on:
3+
push:
4+
tags:
5+
- '*'
6+
workflow_dispatch:
7+
inputs:
8+
release_tag:
9+
description: Release tag to build and publish
10+
required: true
11+
type: string
12+
13+
permissions:
14+
contents: write
15+
16+
jobs:
17+
preparation:
18+
name: Setup build version
19+
runs-on: ubuntu-latest
20+
outputs:
21+
version: ${{ steps.version.outputs.version }}
22+
commitish: ${{ steps.version.outputs.commitish }}
23+
steps:
24+
- uses: actions/checkout@v5.0.0
25+
with:
26+
fetch-depth: 0
27+
- id: version
28+
shell: bash
29+
run: |
30+
INPUT_VERSION="${{ inputs.release_tag || '' }}"
31+
if [ -n "$INPUT_VERSION" ]; then
32+
VERSION="$INPUT_VERSION"
33+
else
34+
VERSION=$(git describe --tags --exact-match 2>/dev/null || true)
35+
fi
36+
if [[ ! "$VERSION" =~ ^([0-9]+(\.[0-9]+)*-[0-9]+|[0-9]+(\.[0-9]+){3})$ ]]; then
37+
echo "Release version must use x.y.z.n format; legacy x.y.z-n is also accepted, got: ${VERSION:-<empty>}" >&2
38+
exit 1
39+
fi
40+
echo "version=$VERSION" >> "$GITHUB_OUTPUT"
41+
echo "commitish=$(git rev-parse HEAD)" >> "$GITHUB_OUTPUT"
42+
43+
build:
44+
name: Build Podkop Plus release packages
45+
runs-on: ubuntu-latest
46+
needs: preparation
47+
steps:
48+
- uses: actions/checkout@v5.0.0
49+
with:
50+
fetch-depth: 0
51+
52+
- name: Build release artifacts
53+
shell: bash
54+
run: |
55+
VERSION="${{ needs.preparation.outputs.version }}"
56+
bash ./scripts/build-openwrt-packages-wsl.sh "$VERSION" "$PWD/filtered-bin/release"
57+
ls -la "$PWD/filtered-bin/release"
58+
59+
- name: Upload build artifacts
60+
uses: actions/upload-artifact@v4.6.2
61+
with:
62+
name: release-files-${{ needs.preparation.outputs.version }}
63+
path: ./filtered-bin/release/*
64+
retention-days: 1
65+
if-no-files-found: error
66+
67+
release:
68+
name: Create Release
69+
runs-on: ubuntu-latest
70+
needs:
71+
- preparation
72+
- build
73+
steps:
74+
- uses: actions/checkout@v5.0.0
75+
- name: Create release dir
76+
run: mkdir -p ./filtered-bin/release
77+
78+
- name: Download release artifacts
79+
uses: actions/download-artifact@v4
80+
with:
81+
name: release-files-${{ needs.preparation.outputs.version }}
82+
path: ./filtered-bin/release
83+
84+
- name: Release
85+
uses: softprops/action-gh-release@v2.4.0
86+
with:
87+
files: ./filtered-bin/release/*.*
88+
draft: false
89+
prerelease: false
90+
make_latest: true
91+
name: ${{ needs.preparation.outputs.version }}
92+
tag_name: ${{ needs.preparation.outputs.version }}
93+
target_commitish: ${{ needs.preparation.outputs.commitish }}

‎.github/workflows/frontend-ci.yml‎

Lines changed: 78 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,78 @@
1+
name: Frontend CI
2+
3+
on:
4+
pull_request:
5+
paths:
6+
- 'fe-app-podkop/**'
7+
- '.github/workflows/frontend-ci.yml'
8+
9+
jobs:
10+
frontend-checks:
11+
name: Frontend Quality Checks
12+
runs-on: ubuntu-24.04
13+
defaults:
14+
run:
15+
working-directory: fe-app-podkop
16+
17+
steps:
18+
- name: Checkout code
19+
uses: actions/checkout@v5.0.0
20+
21+
- name: Setup Node.js
22+
uses: actions/setup-node@v5.0.0
23+
with:
24+
node-version: '22'
25+
26+
- name: Enable Corepack
27+
run: corepack enable
28+
29+
- name: Get yarn cache directory path
30+
id: yarn-cache-dir-path
31+
working-directory: fe-app-podkop
32+
run: echo "dir=$(yarn config get cacheFolder)" >> $GITHUB_OUTPUT
33+
34+
- name: Cache yarn dependencies
35+
uses: actions/cache@v4.3.0
36+
with:
37+
path: ${{ steps.yarn-cache-dir-path.outputs.dir }}
38+
key: ${{ runner.os }}-yarn-${{ hashFiles('fe-app-podkop/yarn.lock') }}
39+
restore-keys: |
40+
${{ runner.os }}-yarn-
41+
42+
- name: Install dependencies
43+
run: yarn install --frozen-lockfile
44+
45+
- name: Check formatting
46+
id: format
47+
run: |
48+
yarn format
49+
if ! git diff --exit-code; then
50+
echo "::error::Code is not formatted. Run 'yarn format' locally."
51+
exit 1
52+
fi
53+
54+
- name: Run linter
55+
run: yarn lint --max-warnings=0
56+
57+
- name: Run tests
58+
run: yarn test --run
59+
60+
- name: Build project
61+
id: build
62+
run: |
63+
yarn build
64+
if ! git diff --exit-code; then
65+
echo "::error::Build generated changes. Check build output."
66+
exit 1
67+
fi
68+
69+
- name: Summary
70+
if: always()
71+
run: |
72+
echo "## Frontend CI Results" >> $GITHUB_STEP_SUMMARY
73+
echo "" >> $GITHUB_STEP_SUMMARY
74+
echo "- ✅ Format check: ${{ steps.format.outcome }}" >> $GITHUB_STEP_SUMMARY
75+
echo "- ✅ Lint check: ${{ job.status }}" >> $GITHUB_STEP_SUMMARY
76+
echo "- ✅ Tests: ${{ job.status }}" >> $GITHUB_STEP_SUMMARY
77+
echo "- ✅ Build: ${{ steps.build.outcome }}" >> $GITHUB_STEP_SUMMARY
78+
echo "![Success](https://cdn2.combot.org/boratbrat/webp/6xf09f988f.webp)" >> $GITHUB_STEP_SUMMARY

0 commit comments

Comments
 (0)