Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

ci: add check-docs workflow #93

Merged
merged 16 commits into from
May 20, 2023
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
8 changes: 8 additions & 0 deletions .autocorrectrc
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
rules:
# Default rules: https://github.com/huacnlee/autocorrect/raw/main/autocorrect/.autocorrectrc.default
spellcheck: 1
spellcheck:
words:
# Please do not add a general English word (eg. apple, python) here.
# Users can add their special words to their .autocorrectrc file by their need.
- filesystem = file system
4 changes: 2 additions & 2 deletions .github/workflows/build.yml
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@ on:
- "**/*.h"
- "go.mod"
- "go.sum"
- ".github/workflows/*.yml"
- ".github/workflows/build.yml"
release:
types: [ prereleased ]
pull_request:
Expand All @@ -23,7 +23,7 @@ on:
- "**/*.h"
- "go.mod"
- "go.sum"
- ".github/workflows/*.yml"
- ".github/workflows/build.yml"

jobs:
build:
Expand Down
47 changes: 47 additions & 0 deletions .github/workflows/check-docs.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,47 @@
name: Check document

on:
push:
branches: [main]
paths:
- 'README*.md'
- 'docs/**'
- 'package.json'
- '.autocorrectrc'
- '.markdownlint-cli2.jsonc'
- '.github/workflows/check-docs.yaml'
pull_request:
branches: [main]
paths:
- 'README*.md'
- 'docs/**'
- 'package.json'
- '.autocorrectrc'
- '.markdownlint-cli2.jsonc'
- '.github/workflows/check-docs.yaml'

jobs:
check-doc:
name: Check document
runs-on: ubuntu-latest
steps:
- name: Checkout repository
uses: actions/checkout@v3
- name: Use Node.js
uses: actions/setup-node@v3
with:
node-version: '16.x'
cache: 'npm'
- name: Install dependencies
run: |
npm ci
- name: Lint Markdown files (markdownlint)
run: |
npm run markdown-lint
- name: Lint Markdown files (autocorrect)
uses: huacnlee/autocorrect-action@main
with:
args: --lint ./docs/
- name: Check broken link (including broken anchor)
run: |
npm run check-broken-link
2 changes: 1 addition & 1 deletion .github/workflows/docker.yml
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@ on:
- "**/*.h"
- "go.mod"
- "go.sum"
- ".github/workflows/*.yml"
- ".github/workflows/docker.yml"
release:
types: [ prereleased ]

Expand Down
1 change: 1 addition & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -7,3 +7,4 @@ bpf_bpfel*.go
dae
outline.json
go-mod/
node_modules/
181 changes: 181 additions & 0 deletions .markdownlint-cli2.jsonc
Original file line number Diff line number Diff line change
@@ -0,0 +1,181 @@
{
"customRules": [
"markdownlint-rule-enhanced-proper-names/src/enhanced-proper-names.js",
"markdownlint-rule-no-trailing-slash-in-links/src/no-trailing-slash-in-links.js"
],
"config": {
"default": true,
"first-heading-h1": false,
"heading-style": {
"style": "atx"
},
"ul-style": false,
"no-hard-tabs": {
"spaces_per_tab": 4
},
"line-length": false,
"no-duplicate-heading": {
"allow_different_nesting": true
},
"no-inline-html": {
"allowed_elements": [
"Badge",
"TabItem",
"Tabs",
"a",
"br",
"div",
"img",
"li",
"ul",
"kbd",
"p",
"span",
"sup",
"iframe"
]
},
"fenced-code-language": false,
"first-line-heading": false,
"no-alt-text": false,
"code-block-style": {
"style": "fenced"
},
"code-fence-style": {
"style": "backtick"
},
"link-fragments": false,
"no-trailing-slash-in-links": true,
"enhanced-proper-names": {
"code_blocks": false,
"html_elements": false,
"heading_id": false,
"names": [
"ACL",
"AI",
"API",
"ARM",
"ARM64",
"AWS",
"Amazon",
"Ansible",
"Apache",
"Azure",
"BSD",
"BadgerDB",
"CDH",
"CPU",
"CSI Driver",
"CSI",
"CentOS",
"Ceph",
"CephFS",
"ClickHouse",
"Cloud SQL",
"Colab",
"Consul",
"Debian",
"DevOps",
"DistCp",
"Docker Compose",
"Docker",
"Dockerfile",
"Doris",
"ECI",
"Elasticsearch",
"FTP",
"FUSE",
"Flink",
"Fluid",
"FoundationDB",
"GCC",
"GID",
"Git",
"GitHub",
"Google",
"Grafana",
"Graphite",
"HBase",
"HDFS",
"HDP",
"HTTP",
"HTTPS",
"Hadoop",
"Hive Metastore",
"Hive",
"Hudi",
"IAM",
"ID",
"IOPS",
"IP",
"Iceberg",
"JAR",
"JDK",
"JSON",
"Java",
"JuiceFS",
"JuiceFSRuntime",
"Juicedata",
"K8s",
"Kerberos",
"KeyDB",
"Kubernetes",
"LDAP",
"LZ4",
"Linux",
"M1",
"MariaDB",
"Maven",
"MinIO",
"MySQL",
"NFS",
"POSIX",
"PV",
"PVC",
"PostgreSQL",
"PowerShell",
"Prometheus",
"Pushgateway",
"Python",
"QPS",
"QoS",
"RADOS",
"RESTful",
"RGW",
"RPC",
"Raft",
"Ranger",
"Redis",
"S3",
"SDK",
"SFTP",
"SID",
"SMB",
"SQL",
"SQLite",
"SSH",
"Samba",
"Scala",
"Spark",
"StarRocks",
"ThriftServer",
"TiKV",
"Trino",
"UID",
"UUID",
"Ubuntu",
"Unix",
"VFS",
"WebDAV",
"WinFsp",
"Windows",
"YAML",
"YARN",
"Zstandard",
"etcd",
"macFUSE",
"macOS"
]
}
}
}
20 changes: 10 additions & 10 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -12,25 +12,25 @@

**_dae_**, means goose, is a high-performance transparent proxy solution.

In order to improve the traffic split performance as much as possible, dae runs the transparent proxy and traffic split suite in the linux kernel by eBPF. Therefore, dae has the opportunity to make the direct traffic bypass the forwarding by proxy application and achieve true direct traffic through. Under such a magic trick, there is almost no performance loss and additional resource consumption for direct traffic.
In order to improve the traffic split performance as much as possible, dae runs the transparent proxy and traffic split suite in the Linux kernel by eBPF. Therefore, dae has the opportunity to make the direct traffic bypass the forwarding by proxy application and achieve true direct traffic through. Under such a magic trick, there is almost no performance loss and additional resource consumption for direct traffic.

As a successor of [v2rayA](https://github.com/v2rayA/v2rayA), dae abandoned v2ray-core to meet the needs of users more freely.

**Features**
## Features

1. Implement `Real Direct` traffic split (need ipforward on) to achieve [high performance](https://docs.google.com/spreadsheets/d/1UaWU6nNho7edBNjNqC8dfGXLlW0-cm84MM7sH6Gp7UE/edit?usp=sharing).
1. Support to split traffic by process name in local host.
1. Support to split traffic by MAC address in LAN.
1. Support to split traffic with invert match rules.
1. Support to automatically switch nodes according to policy. That is to say, support to automatically test independent TCP/UDP/IPv4/IPv6 latencies, and then use the best nodes for corresponding traffic according to user-defined policy.
1. Support advanced DNS resolution process.
1. Support full-cone NAT for shadowsocks, trojan(-go) and socks5 (no test).
- [x] Implement `Real Direct` traffic split (need ipforward on) to achieve [high performance](https://docs.google.com/spreadsheets/d/1UaWU6nNho7edBNjNqC8dfGXLlW0-cm84MM7sH6Gp7UE/edit?usp=sharing).
- [x] Support to split traffic by process name in local host.
- [x] Support to split traffic by MAC address in LAN.
- [x] Support to split traffic with invert match rules.
- [x] Support to automatically switch nodes according to policy. That is to say, support to automatically test independent TCP/UDP/IPv4/IPv6 latencies, and then use the best nodes for corresponding traffic according to user-defined policy.
- [x] Support advanced DNS resolution process.
- [x] Support full-cone NAT for shadowsocks, trojan(-go) and socks5 (no test).

## Getting Started

Please refer to [Quick Start Guide](./docs/getting-started) to start using `dae` right away!

Documentation: https://dae.v2raya.org
Documentation: <https://dae.v2raya.org>

## Notes

Expand Down
16 changes: 8 additions & 8 deletions docs/commit-msg-guide.md
Original file line number Diff line number Diff line change
@@ -1,9 +1,9 @@
# Semantic Commit Messages

## The reasons for these conventions:
## The reasons for these conventions

- automatic generating of the changelog
- simple navigation through git history (e.g. ignoring the style changes)
- simple navigation through Git history (e.g. ignoring the style changes)

See how a minor change to your commit message style can make you a better developer.

Expand Down Expand Up @@ -36,7 +36,7 @@ Example `<type>` values:
- `test`: (adding missing tests, refactoring tests; no production code change)
- `chore`: (updating grunt tasks etc; no production code change, e.g. dependencies upgrade)
- `perf`: (perfomance improvement change, e.g. better concurrency performance)
- `ci`: (updating CI configuration files and scripts e.g. .github/workflows/*.yml )
- `ci`: (updating CI configuration files and scripts e.g. `.gitHub/workflows/*.yml` )

Example `<Scope>` values:

Expand All @@ -59,7 +59,7 @@ use as in the `<subject>`, use the imperative, present tense: "change" not "chan

## Message footer

##### Referencing issues
### Referencing issues

Closed issues should be listed on a separate line in the footer prefixed with "Closes" keyword as the following:

Expand All @@ -75,7 +75,7 @@ Closes #123, #245, #992

## References

- https://www.conventionalcommits.org/
- https://seesparkbox.com/foundry/semantic_commit_messages
- http://karma-runner.github.io/1.0/dev/git-commit-msg.html
- https://wadehuanglearning.blogspot.com/2019/05/commit-commit-commit-why-what-commit.html
- <https://www.conventionalcommits.org/>
- <https://seesparkbox.com/foundry/semantic_commit_messages>
- <http://karma-runner.github.io/1.0/dev/git-commit-msg.html>
- <https://wadehuanglearning.blogspot.com/2019/05/commit-commit-commit-why-what-commit.html>
4 changes: 2 additions & 2 deletions docs/dns.md
Original file line number Diff line number Diff line change
Expand Up @@ -52,12 +52,12 @@ dns {
# Accept the response if the request is sent to upstream 'googledns'. This is useful to avoid loop.
upstream(googledns) -> accept
# If DNS request name is not in CN and response answers include private IP, which is most likely polluted
# in China mainland. Therefore, resend DNS request to 'googledns' to get correct result.
# in China mainland. Therefore, resend DNS request to 'googledns' to get correct result.
!qname(geosite:cn) && ip(geoip:private) -> googledns
fallback: accept
}
}

}
```

Expand Down
Loading