frp-tunnel 1.0.4__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- frp_tunnel-1.0.4/.github/ISSUE_TEMPLATE/bug_report.yml +87 -0
- frp_tunnel-1.0.4/.github/ISSUE_TEMPLATE/feature_request.yml +63 -0
- frp_tunnel-1.0.4/.github/workflows/ci.yml +83 -0
- frp_tunnel-1.0.4/.github/workflows/publish.yml +56 -0
- frp_tunnel-1.0.4/.gitignore +126 -0
- frp_tunnel-1.0.4/CHANGELOG.md +72 -0
- frp_tunnel-1.0.4/CONTRIBUTING.md +149 -0
- frp_tunnel-1.0.4/GITHUB_SECRETS.md +80 -0
- frp_tunnel-1.0.4/LICENSE +21 -0
- frp_tunnel-1.0.4/PKG-INFO +170 -0
- frp_tunnel-1.0.4/PUBLISHING.md +93 -0
- frp_tunnel-1.0.4/QUICKSTART.md +51 -0
- frp_tunnel-1.0.4/README.md +131 -0
- frp_tunnel-1.0.4/README_CN.md +131 -0
- frp_tunnel-1.0.4/ROADMAP.md +248 -0
- frp_tunnel-1.0.4/SECURITY.md +92 -0
- frp_tunnel-1.0.4/SKILL_SHOWCASE.md +201 -0
- frp_tunnel-1.0.4/config/frpc.ini +10 -0
- frp_tunnel-1.0.4/config/frps.ini +22 -0
- frp_tunnel-1.0.4/config/ssh-config-template +35 -0
- frp_tunnel-1.0.4/docs/CONFIGURATION.md +249 -0
- frp_tunnel-1.0.4/docs/INSTALLATION.md +116 -0
- frp_tunnel-1.0.4/docs/TROUBLESHOOTING.md +387 -0
- frp_tunnel-1.0.4/examples/automation-example.sh +303 -0
- frp_tunnel-1.0.4/examples/colab-example.ipynb +283 -0
- frp_tunnel-1.0.4/frp_tunnel/__init__.py +9 -0
- frp_tunnel-1.0.4/frp_tunnel/_version.py +1 -0
- frp_tunnel-1.0.4/frp_tunnel/cli.py +172 -0
- frp_tunnel-1.0.4/frp_tunnel/core/__init__.py +16 -0
- frp_tunnel-1.0.4/frp_tunnel/core/config.py +98 -0
- frp_tunnel-1.0.4/frp_tunnel/core/installer.py +118 -0
- frp_tunnel-1.0.4/frp_tunnel/core/platform.py +92 -0
- frp_tunnel-1.0.4/frp_tunnel/core/tunnel.py +208 -0
- frp_tunnel-1.0.4/frp_tunnel.egg-info/PKG-INFO +170 -0
- frp_tunnel-1.0.4/frp_tunnel.egg-info/SOURCES.txt +47 -0
- frp_tunnel-1.0.4/frp_tunnel.egg-info/dependency_links.txt +1 -0
- frp_tunnel-1.0.4/frp_tunnel.egg-info/entry_points.txt +3 -0
- frp_tunnel-1.0.4/frp_tunnel.egg-info/requires.txt +12 -0
- frp_tunnel-1.0.4/frp_tunnel.egg-info/top_level.txt +1 -0
- frp_tunnel-1.0.4/publish.bat +43 -0
- frp_tunnel-1.0.4/publish.py +68 -0
- frp_tunnel-1.0.4/publish.sh +44 -0
- frp_tunnel-1.0.4/pyproject.toml +64 -0
- frp_tunnel-1.0.4/scripts/frp-client-colab.sh +239 -0
- frp_tunnel-1.0.4/scripts/frp-client-linux.sh +164 -0
- frp_tunnel-1.0.4/scripts/frp-client-windows.ps1 +190 -0
- frp_tunnel-1.0.4/scripts/frp-server-gcp.sh +156 -0
- frp_tunnel-1.0.4/setup-github.sh +44 -0
- frp_tunnel-1.0.4/setup.cfg +4 -0
|
@@ -0,0 +1,87 @@
|
|
|
1
|
+
name: Bug Report
|
|
2
|
+
description: File a bug report to help us improve
|
|
3
|
+
title: "[Bug]: "
|
|
4
|
+
labels: ["bug", "triage"]
|
|
5
|
+
body:
|
|
6
|
+
- type: markdown
|
|
7
|
+
attributes:
|
|
8
|
+
value: |
|
|
9
|
+
Thanks for taking the time to fill out this bug report!
|
|
10
|
+
|
|
11
|
+
- type: input
|
|
12
|
+
id: contact
|
|
13
|
+
attributes:
|
|
14
|
+
label: Contact Details
|
|
15
|
+
description: How can we get in touch with you if we need more info?
|
|
16
|
+
placeholder: ex. email@example.com
|
|
17
|
+
validations:
|
|
18
|
+
required: false
|
|
19
|
+
|
|
20
|
+
- type: dropdown
|
|
21
|
+
id: platform
|
|
22
|
+
attributes:
|
|
23
|
+
label: Platform
|
|
24
|
+
description: What platform are you running on?
|
|
25
|
+
options:
|
|
26
|
+
- Google Colab
|
|
27
|
+
- Linux (Ubuntu/Debian)
|
|
28
|
+
- Linux (CentOS/RHEL)
|
|
29
|
+
- macOS
|
|
30
|
+
- Windows
|
|
31
|
+
- Other
|
|
32
|
+
validations:
|
|
33
|
+
required: true
|
|
34
|
+
|
|
35
|
+
- type: dropdown
|
|
36
|
+
id: component
|
|
37
|
+
attributes:
|
|
38
|
+
label: Component
|
|
39
|
+
description: Which component is affected?
|
|
40
|
+
options:
|
|
41
|
+
- FRP Server Setup
|
|
42
|
+
- FRP Client (Colab)
|
|
43
|
+
- FRP Client (Linux/macOS)
|
|
44
|
+
- FRP Client (Windows)
|
|
45
|
+
- SSH Configuration
|
|
46
|
+
- Documentation
|
|
47
|
+
- Other
|
|
48
|
+
validations:
|
|
49
|
+
required: true
|
|
50
|
+
|
|
51
|
+
- type: textarea
|
|
52
|
+
id: what-happened
|
|
53
|
+
attributes:
|
|
54
|
+
label: What happened?
|
|
55
|
+
description: Also tell us, what did you expect to happen?
|
|
56
|
+
placeholder: Tell us what you see!
|
|
57
|
+
value: "A bug happened!"
|
|
58
|
+
validations:
|
|
59
|
+
required: true
|
|
60
|
+
|
|
61
|
+
- type: textarea
|
|
62
|
+
id: steps
|
|
63
|
+
attributes:
|
|
64
|
+
label: Steps to Reproduce
|
|
65
|
+
description: Please provide detailed steps to reproduce the issue
|
|
66
|
+
placeholder: |
|
|
67
|
+
1. Run command '...'
|
|
68
|
+
2. See error '...'
|
|
69
|
+
3. Expected '...' but got '...'
|
|
70
|
+
validations:
|
|
71
|
+
required: true
|
|
72
|
+
|
|
73
|
+
- type: textarea
|
|
74
|
+
id: logs
|
|
75
|
+
attributes:
|
|
76
|
+
label: Relevant log output
|
|
77
|
+
description: Please copy and paste any relevant log output. This will be automatically formatted into code, so no need for backticks.
|
|
78
|
+
render: shell
|
|
79
|
+
|
|
80
|
+
- type: checkboxes
|
|
81
|
+
id: terms
|
|
82
|
+
attributes:
|
|
83
|
+
label: Code of Conduct
|
|
84
|
+
description: By submitting this issue, you agree to follow our [Code of Conduct](https://github.com/cicy-dev/frp-tunnel/blob/main/CONTRIBUTING.md#code-of-conduct)
|
|
85
|
+
options:
|
|
86
|
+
- label: I agree to follow this project's Code of Conduct
|
|
87
|
+
required: true
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
name: Feature Request
|
|
2
|
+
description: Suggest an idea for this project
|
|
3
|
+
title: "[Feature]: "
|
|
4
|
+
labels: ["enhancement"]
|
|
5
|
+
body:
|
|
6
|
+
- type: markdown
|
|
7
|
+
attributes:
|
|
8
|
+
value: |
|
|
9
|
+
Thanks for suggesting a new feature!
|
|
10
|
+
|
|
11
|
+
- type: textarea
|
|
12
|
+
id: problem
|
|
13
|
+
attributes:
|
|
14
|
+
label: Is your feature request related to a problem?
|
|
15
|
+
description: A clear and concise description of what the problem is.
|
|
16
|
+
placeholder: I'm always frustrated when...
|
|
17
|
+
validations:
|
|
18
|
+
required: false
|
|
19
|
+
|
|
20
|
+
- type: textarea
|
|
21
|
+
id: solution
|
|
22
|
+
attributes:
|
|
23
|
+
label: Describe the solution you'd like
|
|
24
|
+
description: A clear and concise description of what you want to happen.
|
|
25
|
+
validations:
|
|
26
|
+
required: true
|
|
27
|
+
|
|
28
|
+
- type: textarea
|
|
29
|
+
id: alternatives
|
|
30
|
+
attributes:
|
|
31
|
+
label: Describe alternatives you've considered
|
|
32
|
+
description: A clear and concise description of any alternative solutions or features you've considered.
|
|
33
|
+
validations:
|
|
34
|
+
required: false
|
|
35
|
+
|
|
36
|
+
- type: dropdown
|
|
37
|
+
id: priority
|
|
38
|
+
attributes:
|
|
39
|
+
label: Priority
|
|
40
|
+
description: How important is this feature to you?
|
|
41
|
+
options:
|
|
42
|
+
- Low
|
|
43
|
+
- Medium
|
|
44
|
+
- High
|
|
45
|
+
- Critical
|
|
46
|
+
validations:
|
|
47
|
+
required: true
|
|
48
|
+
|
|
49
|
+
- type: checkboxes
|
|
50
|
+
id: implementation
|
|
51
|
+
attributes:
|
|
52
|
+
label: Implementation
|
|
53
|
+
description: Are you willing to help implement this feature?
|
|
54
|
+
options:
|
|
55
|
+
- label: I'm willing to submit a pull request for this feature
|
|
56
|
+
- label: I can help with testing
|
|
57
|
+
- label: I can help with documentation
|
|
58
|
+
|
|
59
|
+
- type: textarea
|
|
60
|
+
id: additional
|
|
61
|
+
attributes:
|
|
62
|
+
label: Additional context
|
|
63
|
+
description: Add any other context or screenshots about the feature request here.
|
|
@@ -0,0 +1,83 @@
|
|
|
1
|
+
name: CI/CD
|
|
2
|
+
|
|
3
|
+
on:
|
|
4
|
+
push:
|
|
5
|
+
branches: [ main, develop ]
|
|
6
|
+
pull_request:
|
|
7
|
+
branches: [ main ]
|
|
8
|
+
|
|
9
|
+
jobs:
|
|
10
|
+
test-scripts:
|
|
11
|
+
runs-on: ubuntu-latest
|
|
12
|
+
|
|
13
|
+
steps:
|
|
14
|
+
- uses: actions/checkout@v3
|
|
15
|
+
|
|
16
|
+
- name: Make scripts executable
|
|
17
|
+
run: chmod +x scripts/*.sh examples/*.sh
|
|
18
|
+
|
|
19
|
+
- name: Test script syntax
|
|
20
|
+
run: |
|
|
21
|
+
for script in scripts/*.sh examples/*.sh; do
|
|
22
|
+
echo "Testing $script"
|
|
23
|
+
bash -n "$script"
|
|
24
|
+
done
|
|
25
|
+
|
|
26
|
+
- name: Install shellcheck
|
|
27
|
+
run: sudo apt-get install -y shellcheck
|
|
28
|
+
|
|
29
|
+
- name: Run shellcheck
|
|
30
|
+
run: |
|
|
31
|
+
for script in scripts/*.sh examples/*.sh; do
|
|
32
|
+
echo "Checking $script"
|
|
33
|
+
shellcheck "$script" || true
|
|
34
|
+
done
|
|
35
|
+
|
|
36
|
+
test-powershell:
|
|
37
|
+
runs-on: windows-latest
|
|
38
|
+
|
|
39
|
+
steps:
|
|
40
|
+
- uses: actions/checkout@v3
|
|
41
|
+
|
|
42
|
+
- name: Test PowerShell script syntax
|
|
43
|
+
run: |
|
|
44
|
+
Get-ChildItem -Path scripts -Filter "*.ps1" | ForEach-Object {
|
|
45
|
+
Write-Host "Testing $($_.Name)"
|
|
46
|
+
powershell -NoProfile -ExecutionPolicy Bypass -Command "& { . '$($_.FullName)'; exit 0 }" -WhatIf
|
|
47
|
+
}
|
|
48
|
+
shell: powershell
|
|
49
|
+
|
|
50
|
+
test-documentation:
|
|
51
|
+
runs-on: ubuntu-latest
|
|
52
|
+
|
|
53
|
+
steps:
|
|
54
|
+
- uses: actions/checkout@v3
|
|
55
|
+
|
|
56
|
+
- name: Install markdown linter
|
|
57
|
+
run: npm install -g markdownlint-cli
|
|
58
|
+
|
|
59
|
+
- name: Lint markdown files
|
|
60
|
+
run: |
|
|
61
|
+
markdownlint README.md docs/*.md || true
|
|
62
|
+
|
|
63
|
+
- name: Check links in documentation
|
|
64
|
+
run: |
|
|
65
|
+
# Simple link check - can be enhanced with proper tools
|
|
66
|
+
grep -r "http" docs/ README.md || true
|
|
67
|
+
|
|
68
|
+
security-scan:
|
|
69
|
+
runs-on: ubuntu-latest
|
|
70
|
+
|
|
71
|
+
steps:
|
|
72
|
+
- uses: actions/checkout@v3
|
|
73
|
+
|
|
74
|
+
- name: Run security scan
|
|
75
|
+
run: |
|
|
76
|
+
# Check for hardcoded secrets/tokens
|
|
77
|
+
if grep -r "frp_[a-f0-9]\{32\}" scripts/ examples/ || \
|
|
78
|
+
grep -r "password.*=" scripts/ examples/ || \
|
|
79
|
+
grep -r "secret.*=" scripts/ examples/; then
|
|
80
|
+
echo "⚠️ Potential hardcoded secrets found"
|
|
81
|
+
exit 1
|
|
82
|
+
fi
|
|
83
|
+
echo "✅ No hardcoded secrets detected"
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
name: Publish to PyPI
|
|
2
|
+
|
|
3
|
+
on:
|
|
4
|
+
release:
|
|
5
|
+
types: [published]
|
|
6
|
+
push:
|
|
7
|
+
tags:
|
|
8
|
+
- 'v*.*.*'
|
|
9
|
+
workflow_dispatch:
|
|
10
|
+
inputs:
|
|
11
|
+
test_pypi:
|
|
12
|
+
description: 'Publish to TestPyPI instead of PyPI'
|
|
13
|
+
required: false
|
|
14
|
+
default: false
|
|
15
|
+
type: boolean
|
|
16
|
+
|
|
17
|
+
jobs:
|
|
18
|
+
publish:
|
|
19
|
+
runs-on: ubuntu-latest
|
|
20
|
+
permissions:
|
|
21
|
+
id-token: write
|
|
22
|
+
contents: read
|
|
23
|
+
|
|
24
|
+
steps:
|
|
25
|
+
- uses: actions/checkout@v4
|
|
26
|
+
with:
|
|
27
|
+
fetch-depth: 0
|
|
28
|
+
|
|
29
|
+
- name: Set up Python
|
|
30
|
+
uses: actions/setup-python@v4
|
|
31
|
+
with:
|
|
32
|
+
python-version: '3.9'
|
|
33
|
+
|
|
34
|
+
- name: Install dependencies
|
|
35
|
+
run: |
|
|
36
|
+
python -m pip install --upgrade pip
|
|
37
|
+
pip install build twine
|
|
38
|
+
|
|
39
|
+
- name: Build package
|
|
40
|
+
run: python -m build
|
|
41
|
+
|
|
42
|
+
- name: Check package
|
|
43
|
+
run: twine check dist/*
|
|
44
|
+
|
|
45
|
+
- name: Publish to TestPyPI
|
|
46
|
+
if: github.event.inputs.test_pypi == 'true'
|
|
47
|
+
uses: pypa/gh-action-pypi-publish@release/v1
|
|
48
|
+
with:
|
|
49
|
+
repository-url: https://test.pypi.org/legacy/
|
|
50
|
+
password: ${{ secrets.TEST_PYPI_API_TOKEN }}
|
|
51
|
+
|
|
52
|
+
- name: Publish to PyPI
|
|
53
|
+
if: github.event.inputs.test_pypi != 'true'
|
|
54
|
+
uses: pypa/gh-action-pypi-publish@release/v1
|
|
55
|
+
with:
|
|
56
|
+
password: ${{ secrets.PYPI_API_TOKEN }}
|
|
@@ -0,0 +1,126 @@
|
|
|
1
|
+
# Byte-compiled / optimized / DLL files
|
|
2
|
+
__pycache__/
|
|
3
|
+
*.py[cod]
|
|
4
|
+
*$py.class
|
|
5
|
+
|
|
6
|
+
# C extensions
|
|
7
|
+
*.so
|
|
8
|
+
|
|
9
|
+
# Distribution / packaging
|
|
10
|
+
.Python
|
|
11
|
+
build/
|
|
12
|
+
develop-eggs/
|
|
13
|
+
dist/
|
|
14
|
+
downloads/
|
|
15
|
+
eggs/
|
|
16
|
+
.eggs/
|
|
17
|
+
lib/
|
|
18
|
+
lib64/
|
|
19
|
+
parts/
|
|
20
|
+
sdist/
|
|
21
|
+
var/
|
|
22
|
+
wheels/
|
|
23
|
+
pip-wheel-metadata/
|
|
24
|
+
share/python-wheels/
|
|
25
|
+
*.egg-info/
|
|
26
|
+
.installed.cfg
|
|
27
|
+
*.egg
|
|
28
|
+
MANIFEST
|
|
29
|
+
|
|
30
|
+
# PyInstaller
|
|
31
|
+
*.manifest
|
|
32
|
+
*.spec
|
|
33
|
+
|
|
34
|
+
# Installer logs
|
|
35
|
+
pip-log.txt
|
|
36
|
+
pip-delete-this-directory.txt
|
|
37
|
+
|
|
38
|
+
# Unit test / coverage reports
|
|
39
|
+
htmlcov/
|
|
40
|
+
.tox/
|
|
41
|
+
.nox/
|
|
42
|
+
.coverage
|
|
43
|
+
.coverage.*
|
|
44
|
+
.cache
|
|
45
|
+
nosetests.xml
|
|
46
|
+
coverage.xml
|
|
47
|
+
*.cover
|
|
48
|
+
*.py,cover
|
|
49
|
+
.hypothesis/
|
|
50
|
+
.pytest_cache/
|
|
51
|
+
|
|
52
|
+
# Jupyter Notebook
|
|
53
|
+
.ipynb_checkpoints
|
|
54
|
+
|
|
55
|
+
# IPython
|
|
56
|
+
profile_default/
|
|
57
|
+
ipython_config.py
|
|
58
|
+
|
|
59
|
+
# pyenv
|
|
60
|
+
.python-version
|
|
61
|
+
|
|
62
|
+
# pipenv
|
|
63
|
+
Pipfile.lock
|
|
64
|
+
|
|
65
|
+
# PEP 582
|
|
66
|
+
__pypackages__/
|
|
67
|
+
|
|
68
|
+
# Celery stuff
|
|
69
|
+
celerybeat-schedule
|
|
70
|
+
celerybeat.pid
|
|
71
|
+
|
|
72
|
+
# SageMath parsed files
|
|
73
|
+
*.sage.py
|
|
74
|
+
|
|
75
|
+
# Environments
|
|
76
|
+
.env
|
|
77
|
+
.venv
|
|
78
|
+
env/
|
|
79
|
+
venv/
|
|
80
|
+
ENV/
|
|
81
|
+
env.bak/
|
|
82
|
+
venv.bak/
|
|
83
|
+
|
|
84
|
+
# Spyder project settings
|
|
85
|
+
.spyderproject
|
|
86
|
+
.spyproject
|
|
87
|
+
|
|
88
|
+
# Rope project settings
|
|
89
|
+
.ropeproject
|
|
90
|
+
|
|
91
|
+
# mkdocs documentation
|
|
92
|
+
/site
|
|
93
|
+
|
|
94
|
+
# mypy
|
|
95
|
+
.mypy_cache/
|
|
96
|
+
.dmypy.json
|
|
97
|
+
dmypy.json
|
|
98
|
+
|
|
99
|
+
# Pyre type checker
|
|
100
|
+
.pyre/
|
|
101
|
+
|
|
102
|
+
# FRP specific
|
|
103
|
+
*.log
|
|
104
|
+
*.pid
|
|
105
|
+
frps
|
|
106
|
+
frpc
|
|
107
|
+
frps.exe
|
|
108
|
+
frpc.exe
|
|
109
|
+
|
|
110
|
+
# Local configuration
|
|
111
|
+
.frp-tunnel/
|
|
112
|
+
config/local_*
|
|
113
|
+
|
|
114
|
+
# IDE
|
|
115
|
+
.vscode/
|
|
116
|
+
.idea/
|
|
117
|
+
*.swp
|
|
118
|
+
*.swo
|
|
119
|
+
|
|
120
|
+
# macOS
|
|
121
|
+
.DS_Store
|
|
122
|
+
|
|
123
|
+
# Windows
|
|
124
|
+
Thumbs.db
|
|
125
|
+
ehthumbs.db
|
|
126
|
+
Desktop.ini
|
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
# Changelog
|
|
2
|
+
|
|
3
|
+
All notable changes to this project will be documented in this file.
|
|
4
|
+
|
|
5
|
+
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
|
|
6
|
+
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
|
|
7
|
+
|
|
8
|
+
## [Unreleased]
|
|
9
|
+
|
|
10
|
+
### Added
|
|
11
|
+
- Initial project structure
|
|
12
|
+
- Comprehensive documentation
|
|
13
|
+
- Multi-platform support
|
|
14
|
+
- GitHub Actions CI/CD pipeline
|
|
15
|
+
|
|
16
|
+
## [1.0.0] - 2026-02-04
|
|
17
|
+
|
|
18
|
+
### Added
|
|
19
|
+
- FRP server setup script for GCP/VPS
|
|
20
|
+
- FRP client scripts for multiple platforms:
|
|
21
|
+
- Google Colab
|
|
22
|
+
- Linux/macOS
|
|
23
|
+
- Windows PowerShell
|
|
24
|
+
- Automated SSH tunnel configuration
|
|
25
|
+
- Token-based authentication system
|
|
26
|
+
- Multi-client support (ports 6001-6010)
|
|
27
|
+
- Smart configuration management
|
|
28
|
+
- Real-time monitoring and diagnostics
|
|
29
|
+
- Comprehensive documentation:
|
|
30
|
+
- Installation guide
|
|
31
|
+
- Configuration reference
|
|
32
|
+
- Troubleshooting guide
|
|
33
|
+
- Example implementations:
|
|
34
|
+
- Jupyter notebook for Colab
|
|
35
|
+
- Automation script for batch operations
|
|
36
|
+
- Security features:
|
|
37
|
+
- RSA key authentication
|
|
38
|
+
- Token validation
|
|
39
|
+
- Firewall configuration
|
|
40
|
+
- Project templates:
|
|
41
|
+
- GitHub issue templates
|
|
42
|
+
- Pull request template
|
|
43
|
+
- Contributing guidelines
|
|
44
|
+
- Security policy
|
|
45
|
+
|
|
46
|
+
### Features
|
|
47
|
+
- **One-click deployment**: Single command setup for all platforms
|
|
48
|
+
- **Cross-platform compatibility**: Works on Linux, Windows, macOS, and Google Colab
|
|
49
|
+
- **Secure by default**: Implements RSA key authentication and token validation
|
|
50
|
+
- **Scalable architecture**: Supports up to 10 concurrent client connections
|
|
51
|
+
- **Smart configuration**: Preserves existing configs, optional force overwrite
|
|
52
|
+
- **Comprehensive logging**: Detailed logs for debugging and monitoring
|
|
53
|
+
- **Auto-recovery**: Built-in health checks and restart mechanisms
|
|
54
|
+
|
|
55
|
+
### Documentation
|
|
56
|
+
- Complete README with quick start guide
|
|
57
|
+
- Detailed installation instructions
|
|
58
|
+
- Configuration reference with examples
|
|
59
|
+
- Troubleshooting guide with common solutions
|
|
60
|
+
- Contributing guidelines for developers
|
|
61
|
+
- Security policy and best practices
|
|
62
|
+
- Example implementations and automation scripts
|
|
63
|
+
|
|
64
|
+
### Infrastructure
|
|
65
|
+
- GitHub Actions CI/CD pipeline
|
|
66
|
+
- Automated testing for shell scripts and PowerShell
|
|
67
|
+
- Security scanning for hardcoded secrets
|
|
68
|
+
- Documentation linting and link checking
|
|
69
|
+
- Issue and PR templates for better collaboration
|
|
70
|
+
|
|
71
|
+
[Unreleased]: https://github.com/cicy-dev/frp-tunnel/compare/v1.0.0...HEAD
|
|
72
|
+
[1.0.0]: https://github.com/cicy-dev/frp-tunnel/releases/tag/v1.0.0
|
|
@@ -0,0 +1,149 @@
|
|
|
1
|
+
# Contributing to FRP SSH Tunnel
|
|
2
|
+
|
|
3
|
+
We love your input! We want to make contributing to this project as easy and transparent as possible, whether it's:
|
|
4
|
+
|
|
5
|
+
- Reporting a bug
|
|
6
|
+
- Discussing the current state of the code
|
|
7
|
+
- Submitting a fix
|
|
8
|
+
- Proposing new features
|
|
9
|
+
- Becoming a maintainer
|
|
10
|
+
|
|
11
|
+
## Development Process
|
|
12
|
+
|
|
13
|
+
We use GitHub to host code, to track issues and feature requests, as well as accept pull requests.
|
|
14
|
+
|
|
15
|
+
## Pull Requests
|
|
16
|
+
|
|
17
|
+
Pull requests are the best way to propose changes to the codebase. We actively welcome your pull requests:
|
|
18
|
+
|
|
19
|
+
1. Fork the repo and create your branch from `main`.
|
|
20
|
+
2. If you've added code that should be tested, add tests.
|
|
21
|
+
3. If you've changed APIs, update the documentation.
|
|
22
|
+
4. Ensure the test suite passes.
|
|
23
|
+
5. Make sure your code lints.
|
|
24
|
+
6. Issue that pull request!
|
|
25
|
+
|
|
26
|
+
## Any contributions you make will be under the MIT Software License
|
|
27
|
+
|
|
28
|
+
In short, when you submit code changes, your submissions are understood to be under the same [MIT License](http://choosealicense.com/licenses/mit/) that covers the project. Feel free to contact the maintainers if that's a concern.
|
|
29
|
+
|
|
30
|
+
## Report bugs using GitHub's [issue tracker](https://github.com/cicy-dev/frp-tunnel/issues)
|
|
31
|
+
|
|
32
|
+
We use GitHub issues to track public bugs. Report a bug by [opening a new issue](https://github.com/cicy-dev/frp-tunnel/issues/new); it's that easy!
|
|
33
|
+
|
|
34
|
+
## Write bug reports with detail, background, and sample code
|
|
35
|
+
|
|
36
|
+
**Great Bug Reports** tend to have:
|
|
37
|
+
|
|
38
|
+
- A quick summary and/or background
|
|
39
|
+
- Steps to reproduce
|
|
40
|
+
- Be specific!
|
|
41
|
+
- Give sample code if you can
|
|
42
|
+
- What you expected would happen
|
|
43
|
+
- What actually happens
|
|
44
|
+
- Notes (possibly including why you think this might be happening, or stuff you tried that didn't work)
|
|
45
|
+
|
|
46
|
+
## Development Setup
|
|
47
|
+
|
|
48
|
+
### Prerequisites
|
|
49
|
+
|
|
50
|
+
- Linux/macOS/Windows with WSL
|
|
51
|
+
- Bash 4.0+
|
|
52
|
+
- SSH client
|
|
53
|
+
- Git
|
|
54
|
+
|
|
55
|
+
### Local Development
|
|
56
|
+
|
|
57
|
+
```bash
|
|
58
|
+
# Clone the repository
|
|
59
|
+
git clone https://github.com/cicy-dev/frp-tunnel.git
|
|
60
|
+
cd frp-tunnel
|
|
61
|
+
|
|
62
|
+
# Make scripts executable
|
|
63
|
+
chmod +x scripts/*.sh
|
|
64
|
+
|
|
65
|
+
# Test server script
|
|
66
|
+
./scripts/frp-server-gcp.sh -t
|
|
67
|
+
|
|
68
|
+
# Test client script
|
|
69
|
+
./scripts/frp-client-colab.sh --help
|
|
70
|
+
```
|
|
71
|
+
|
|
72
|
+
### Testing
|
|
73
|
+
|
|
74
|
+
```bash
|
|
75
|
+
# Run basic tests
|
|
76
|
+
./tests/run-tests.sh
|
|
77
|
+
|
|
78
|
+
# Test specific platform
|
|
79
|
+
./tests/test-linux.sh
|
|
80
|
+
./tests/test-windows.ps1
|
|
81
|
+
```
|
|
82
|
+
|
|
83
|
+
## Code Style
|
|
84
|
+
|
|
85
|
+
### Shell Scripts
|
|
86
|
+
|
|
87
|
+
- Use `#!/bin/bash` shebang
|
|
88
|
+
- Use `set -e` for error handling
|
|
89
|
+
- Use meaningful variable names
|
|
90
|
+
- Add comments for complex logic
|
|
91
|
+
- Follow [Google Shell Style Guide](https://google.github.io/styleguide/shellguide.html)
|
|
92
|
+
|
|
93
|
+
### PowerShell Scripts
|
|
94
|
+
|
|
95
|
+
- Use approved verbs
|
|
96
|
+
- Include help documentation
|
|
97
|
+
- Handle errors gracefully
|
|
98
|
+
- Follow [PowerShell Best Practices](https://docs.microsoft.com/en-us/powershell/scripting/developer/cmdlet/strongly-encouraged-development-guidelines)
|
|
99
|
+
|
|
100
|
+
### Documentation
|
|
101
|
+
|
|
102
|
+
- Use clear, concise language
|
|
103
|
+
- Include code examples
|
|
104
|
+
- Update README.md for new features
|
|
105
|
+
- Add troubleshooting entries for common issues
|
|
106
|
+
|
|
107
|
+
## Commit Messages
|
|
108
|
+
|
|
109
|
+
- Use the present tense ("Add feature" not "Added feature")
|
|
110
|
+
- Use the imperative mood ("Move cursor to..." not "Moves cursor to...")
|
|
111
|
+
- Limit the first line to 72 characters or less
|
|
112
|
+
- Reference issues and pull requests liberally after the first line
|
|
113
|
+
|
|
114
|
+
## Feature Requests
|
|
115
|
+
|
|
116
|
+
We welcome feature requests! Please:
|
|
117
|
+
|
|
118
|
+
1. Check if the feature already exists
|
|
119
|
+
2. Search existing issues to avoid duplicates
|
|
120
|
+
3. Provide detailed use cases
|
|
121
|
+
4. Consider implementation complexity
|
|
122
|
+
|
|
123
|
+
## Code of Conduct
|
|
124
|
+
|
|
125
|
+
### Our Pledge
|
|
126
|
+
|
|
127
|
+
We pledge to make participation in our project a harassment-free experience for everyone, regardless of age, body size, disability, ethnicity, gender identity and expression, level of experience, nationality, personal appearance, race, religion, or sexual identity and orientation.
|
|
128
|
+
|
|
129
|
+
### Our Standards
|
|
130
|
+
|
|
131
|
+
Examples of behavior that contributes to creating a positive environment include:
|
|
132
|
+
|
|
133
|
+
- Using welcoming and inclusive language
|
|
134
|
+
- Being respectful of differing viewpoints and experiences
|
|
135
|
+
- Gracefully accepting constructive criticism
|
|
136
|
+
- Focusing on what is best for the community
|
|
137
|
+
- Showing empathy towards other community members
|
|
138
|
+
|
|
139
|
+
### Enforcement
|
|
140
|
+
|
|
141
|
+
Project maintainers are responsible for clarifying the standards of acceptable behavior and are expected to take appropriate and fair corrective action in response to any instances of unacceptable behavior.
|
|
142
|
+
|
|
143
|
+
## License
|
|
144
|
+
|
|
145
|
+
By contributing, you agree that your contributions will be licensed under its MIT License.
|
|
146
|
+
|
|
147
|
+
## References
|
|
148
|
+
|
|
149
|
+
This document was adapted from the open-source contribution guidelines for [Facebook's Draft](https://github.com/facebook/draft-js/blob/a9316a723f9e918afde44dea68b5f9f39b7d9b00/CONTRIBUTING.md)
|