GithubHelp home page GithubHelp logo

daeuniverse / daed Goto Github PK

View Code? Open in Web Editor NEW
375.0 3.0 46.0 47.64 MB

daed, a modern dashboard for dae.

Home Page: https://daeuniverse.github.io/daed/

License: MIT License

Shell 0.72% HTML 0.12% TypeScript 98.16% CSS 0.06% Dockerfile 0.58% Makefile 0.35%
dae dashboard

daed's Introduction

daed

A modern web dashboard for dae

build-status license hits version pr/issue lastcommit

Features

  • Easy to use, with keyboard navigation / shortcuts builtin
  • Beautiful and intuitive UI
  • Light / Dark mode
  • Mobile friendly

Getting Started

Please refer to Quick Start Guide to start using daed right away!

Contrubuting

Feel free to open issues or submit your PR, any feedbacks or help are greatly appreciated.

Special thanks go to all contributors. If you would like to contribute, please see the instructions. Also, it is recommended following the commit-msg-guide.

License

Made with passion 🔥 by @daeuniverse

The project is dual licensed under the GNU Affero General Public License v3.0 (dae-wing) and the MIT License (daed).

Dependencies used in this project

daed's People

Contributors

bradfordzhang avatar dae-prow[bot] avatar dependabot[bot] avatar douglarek avatar hero-intelligent avatar integral-tech avatar kecrily avatar kunish avatar marksonhon avatar miooochi avatar mzz2017 avatar shenghuang147 avatar wanlce avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar

daed's Issues

感觉这个可以很方便的部署在410棒子上

很多棒子为了网速刷的debian系统,但debian固件1.不会分配ipv6,2.不能一键那个啥。

这个项目弥补了debian wifi棒子一大缺失。

给开发组打call。

另外不知道docker部署方式,官方镜像是否支持armv7l,手边没有设备可以尝试,想后面在玩客云上部署一下。

ci: docker build workflow upgrade

Basically done. Please review my code first. Now there is a big commented block which keepsalmost all the working process. repo: hero-intelligent/daed

Details tomorrow.

[Release Changelogs] v0.1.0

Context

🪿 @daebot proposed the following changelogs for release v0.1.0 generated in workflow run.

Changelogs

'%0A%0AFull Changelog%0A%0A- refactor: split orchestrate page into multiple components #81 (kunish)%0A- feat: restrict drag and drop area #80 (kunish)%0A- feat: drag nodes and subscriptions between groups #79 (kunish)%0A- fix(subscription): loading indicator of update #78 (kunish)%0A- feat(group): show subscription tag on node hover #77 (kunish)%0A- ci: add sync-upstream workflow #76 (yqlbu)%0A- ci(prerelease): include v*.*.*rc* (v0.1.1rc1) case #75 (yqlbu)%0A- ci(release): retrieve release tag (version) from dispatch inputs #74 (yqlbu)%0A- fix(config): disable allow insecure by default #73 (kunish)%0A- feat(config): show interface ip addresses in interface select #72 (kunish)%0A- feat: add description text for group policies #71 (kunish)%0A- feat: add loading state indicators #70 (kunish)%0A- chore(issue-template): update default labels for bug-report #69 (yqlbu)%0A- ci(build-nightly): add fetch-depth: 0 #67 (kunish)'

快速从订阅中筛选节点,批量添加到群组中;添加 fixed 群组策略

Greetings

No response

Feature Request

通过关键字、正则等手段快速从订阅中筛选出想要的节点,并且能批量选中并加入群组,或者像dae中一样,允许在群组中以正则等形式添加节点。
加入dae中的fixed群组策略。

Use Cases

节点比较多时,手动一个个拖非常耗时。群组节点比较多时,测一轮速可能就被机场ban号了,fixed策略更实用一些。

Potential Benefits

No response

分享链接无法复制

What happened

分享链接无法复制,没有报错信息

What you expect to happen

How to reproduce it (as minimally and precisely as possible):

Anything else we need to know

Environment

  • daed version (use daed --version):
commit 091f7f4cadc53ccdbdb06c928dfa19aee35b2de9 (HEAD -> main, origin/main, origin/HEAD)
Author: dae-bot[bot] <136105375+dae-bot[bot]@users.noreply.github.com>
Date:   Sat Aug 5 10:25:40 2023 +0000
  • OS (e.g cat /etc/os-release):
  • Kernel (e.g. uname -a): macOS
  • Others: edge 浏览器

[Bug Report] mac地址代理白名单时无法正常 block 一个域名

Checks

  • I have searched the existing issues
  • I have read the documentation
  • Is it your first time sumbitting an issue

Current Behavior

我当前的路由配置:

pname(NetworkManager, systemd-resolved) -> direct

# miwifi
domain(full:api.miwifi.com)	-> block

# only proxy these devices
!mac('a')	-> direct(must)

dip(geoip:cn, geoip:private) -> direct
domain(geosite:cn) -> direct

fallback: proxy

按上面的设置,除了我 mac 地址为 a 的设备都能被代理,而不管设备有没有被代理它都应该不能访问 api.miwifi.com,但实际是在 b 电脑上依然能访问这个地址。

Expected Behavior

如果规则是按顺序执行,那么在所有设备上都不应该能访问 api.miwifi.com

Steps to Reproduce

No response

Environment

  • Daed version:
    0.3.2
  • OS (e.g cat /etc/os-release):
    imm 23.05
  • Kernel (e.g. uname -a):
    5.15.123
  • Others:

Anything else?

No response

Avoid login after registration

createUser interface returns a token that we don't need to retrieve by token again.

So we can simplify the registration procedure.

[Bug Report] <title>订阅添加509

Checks

  • I have searched the existing issues
  • I have read the documentation
  • Is it your first time sumbitting an issue

Current Behavior

添加订阅是出现错误。该订阅在passwall下能添加订阅。一下是记录
1702281436389

Expected Behavior

No response

Steps to Reproduce

No response

Environment

  • Daed version:
  • OS (e.g cat /etc/os-release):
  • Kernel (e.g. uname -a):
  • Others:

Anything else?

No response

[Roadmap] Version v0.1.0

Overview

As we continue to develop our project, it is important to have a clear roadmap towards version v1.0.0. This will help us stay focused on our goals and ensure that we are making progress towards a stable and reliable first release.

Goals

Our goals for version v0.1.0 are as follows:

  • Enhance documentation and user guides
  • Integrate with dae-wing by bundle it within daed this project itself
  • Under simple mode, make sure a user, who has very limited knowledge about this project, can run this thing without having too much headache.
  • Under advanced mode, make sure every resource required to run a proxy service is exposed to user completely
  • Resolve all known bugs and issues
  • Determine release cycle
  • Utilize full-tested and stable CI workflows

Feedback

We welcome any feedback or suggestions on the proposed goals. Please feel free to leave your comments and ideas below.

Thank you for your support and contribution to our project!

[Bug Report] 无限启动新线程,消耗巨量内存

Checks

  • I have searched the existing issues
  • I have read the documentation
  • Is it your first time sumbitting an issue

Current Behavior

启用后会慢慢无限开启新线程,消耗巨量内存,这是启动1天后的进程status

root@R66S:~# cat /proc/10167/status
Name:   dae-wing
Umask:  0022
State:  S (sleeping)
Tgid:   10167
Ngid:   0
Pid:    10167
PPid:   1
TracerPid:      0
Uid:    0       0       0       0
Gid:    0       0       0       0
FDSize: 2048
Groups:
NStgid: 10167
NSpid:  10167
NSpgid: 1
NSsid:  1
VmPeak:  1649004 kB
VmSize:  1649004 kB
VmLck:         0 kB
VmPin:         0 kB
VmHWM:    169484 kB
VmRSS:    136764 kB
RssAnon:          118888 kB
RssFile:           17876 kB
RssShmem:              0 kB
VmData:   436344 kB
VmStk:       132 kB
VmExe:     25144 kB
VmLib:       720 kB
VmPTE:       904 kB
VmSwap:        0 kB
HugetlbPages:          0 kB
CoreDumping:    0
THP_enabled:    1
Threads:        1774
SigQ:   0/3853
SigPnd: 0000000000000000
ShdPnd: 0000000000000000
SigBlk: 0000000000000000
SigIgn: 0000000000000000
SigCgt: fffffffc7fc1feff
CapInh: 0000000000000000
CapPrm: 000001ffffffffff
CapEff: 000001ffffffffff
CapBnd: 000001ffffffffff
CapAmb: 0000000000000000
NoNewPrivs:     0
Seccomp:        0
Seccomp_filters:        0
Speculation_Store_Bypass:       not vulnerable
SpeculationIndirectBranch:      unknown

可以看到Threads已经有1774个了,PID占了非常多
image
image

关联issue:sbwml/luci-app-daed-next#1

Expected Behavior

No response

Steps to Reproduce

No response

Environment

  • Daed version:
root@R66S:~# dae-wing --version
daed-next version 2023-10-25-952b1c9
  • OS (e.g cat /etc/os-release):
immportalwrt 23.05-rc4
  • Kernel (e.g. uname -a):
root@R66S:~# uname -a
Linux R66S 5.15.132 #0 SMP PREEMPT Sun Oct 1 02:21:58 2023 aarch64 GNU/Linux

  • Others:

配置文件:

global {
    ##### Software options.

    # tproxy port to listen on. It is NOT a HTTP/SOCKS port, and is just used by eBPF program.
    # In normal case, you do not need to use it.
    tproxy_port: 12345

    # Set it true to protect tproxy port from unsolicited traffic. Set it false to allow users to use self-managed
    # iptables tproxy rules.
    tproxy_port_protect: true

    # If not zero, traffic sent from dae will be set SO_MARK. It is useful to avoid traffic loop with iptables tproxy
    # rules.
    so_mark_from_dae: 0

    # Log level: error, warn, info, debug, trace.
    log_level: warning

    # Disable waiting for network before pulling subscriptions.
    disable_waiting_network: true


    ##### Interface and kernel options.

    # The LAN interface to bind. Use it if you want to proxy LAN.
    # Multiple interfaces split by ",".
    lan_interface: eth0

    # The WAN interface to bind. Use it if you want to proxy localhost.
    # Multiple interfaces split by ",". Use "auto" to auto detect.
    wan_interface: eth1

    # Automatically configure Linux kernel parameters like ip_forward and send_redirects. Check out
    # https://github.com/daeuniverse/dae/blob/main/docs/en/user-guide/kernel-parameters.md to see what will dae do.
    auto_config_kernel_parameter: true


    ##### Node connectivity check.

    # Host of URL should have both IPv4 and IPv6 if you have double stack in local.
    # First is URL, others are IP addresses if given.
    # Considering traffic consumption, it is recommended to choose a site with anycast IP and less response.
    #tcp_check_url: 'http://cp.cloudflare.com'
    tcp_check_url: 'http://cp.cloudflare.com,1.1.1.1'

    # The HTTP request method to `tcp_check_url`. Use 'HEAD' by default because some server implementations bypass
    # accounting for this kind of traffic.
    tcp_check_http_method: HEAD

    # This DNS will be used to check UDP connectivity of nodes. And if dns_upstream below contains tcp, it also be used to check
    # TCP DNS connectivity of nodes.
    # First is URL, others are IP addresses if given.
    # This DNS should have both IPv4 and IPv6 if you have double stack in local.
    #udp_check_dns: 'dns.google.com:53'
    udp_check_dns: 'dns.google.com:53,8.8.8.8,1.1.1.1'

    check_interval: 30s

    # Group will switch node only when new_latency <= old_latency - tolerance.
    check_tolerance: 50ms


    ##### Connecting options.

    # Optional values of dial_mode are:
    # 1. "ip". Dial proxy using the IP from DNS directly. This allows your ipv4, ipv6 to choose the optimal path
    #       respectively, and makes the IP version requested by the application meet expectations. For example, if you
    #       use curl -4 ip.sb, you will request IPv4 via proxy and get a IPv4 echo. And curl -6 ip.sb will request IPv6.
    #       This may solve some wierd full-cone problem if your are be your node support that. Sniffing will be disabled
    #       in this mode.
    # 2. "domain". Dial proxy using the domain from sniffing. This will relieve DNS pollution problem to a great extent
    #       if have impure DNS environment. Generally, this mode brings faster proxy response time because proxy will
    #       re-resolve the domain in remote, thus get better IP result to connect. This policy does not impact routing.
    #       That is to say, domain rewrite will be after traffic split of routing and dae will not re-route it.
    # 3. "domain+". Based on domain mode but do not check the reality of sniffed domain. It is useful for users whose
    #       DNS requests do not go through dae but want faster proxy response time. Notice that, if DNS requests do not
    #       go through dae, dae cannot split traffic by domain.
    # 4. "domain++". Based on domain+ mode but force to re-route traffic using sniffed domain to partially recover
    #       domain based traffic split ability. It doesn't work for direct traffic and consumes more CPU resources.
    dial_mode: domain

    # Allow insecure TLS certificates. It is not recommended to turn it on unless you have to.
    allow_insecure: false

    # Timeout to waiting for first data sending for sniffing. It is always 0 if dial_mode is ip. Set it higher is useful
    # in high latency LAN network.
    sniffing_timeout: 100ms

    # TLS implementation. tls is to use Go's crypto/tls. utls is to use uTLS, which can imitate browser's Client Hello.
    tls_implementation: tls

    # The Client Hello ID for uTLS to imitate. This takes effect only if tls_implementation is utls.
    # See more: https://github.com/daeuniverse/dae/blob/331fa23c16/component/outbound/transport/tls/utls.go#L17
    utls_imitate: chrome_auto
}

# See https://github.com/daeuniverse/dae/blob/main/docs/en/configuration/dns.md for full examples.
dns {
    upstream {
         # 这是上游adguardhome
        localdns: 'udp://127.0.0.1:1745'
    }
    routing {
        request {
            fallback: localdns
        }
        response {
            fallback: accept
        }
    }
}

# Node group (outbound).
group {
    proxy {
        # Filter nodes from the global node pool defined by the subscription and node section above.
        #filter: subtag(regex: '^my_', another_sub) && !name(keyword: 'ExpireAt:')

        # Filter nodes from the global node pool defined by tag.
        #filter: name(node1, node2)

        # Filter nodes and give a fixed latency offset to archive latency-based failover.
        # In this example, there is bigger possibility to choose US node even if original latency of US node is higher.
        filter: name(keyword: 'HK')
        #filter: name(US_node) [add_latency: -500ms]

        # Select the node with min average of the last 10 latencies from the group for every connection.
        policy: min_moving_avg
    }
}

# See https://github.com/daeuniverse/dae/blob/main/docs/en/configuration/routing.md for full examples.
routing {
    ### Preset rules.
    l4proto(udp) && dport(443) -> block
    pname(mosdns, dnsmasq) && l4proto(udp) && dport(53) -> must_direct

    dip(224.0.0.0/3, 'ff00::/8') -> direct
    dip(geoip:private) -> direct

    dip(223.5.5.5, 223.6.6.6) -> direct
    dip(8.8.8.8, 8.8.4.4) -> proxy
    domain(full: dns.alidns.com) -> direct
    domain(full: dns.googledns.com) -> proxy
    domain(full: dns.opendns.com) -> proxy
    domain(full: cloudflare-dns.com) -> proxy
    
    
    ########################## Must Direct Start #########################

    # Google GCM
    domain(suffix: mtalk.google.com) -> direct

    ########################## Must Direct End ############################

    ### GeoSite proxy

    # Goole Play
    domain(keyword: googleapis) -> proxy

    domain(geosite: linkedin) -> proxy
    domain(geosite: speedtest) -> proxy
    domain(geosite: yahoo) -> proxy
    domain(geosite: github) -> proxy
    domain(geosite: twitter) -> proxy
    domain(geosite: telegram) -> proxy
    domain(geosite: google) -> proxy
    domain(geosite: category-container) -> proxy
    domain(geosite: category-dev) -> proxy
    domain(geosite: google-scholar) -> proxy
    domain(geosite: category-scholar-!cn) -> proxy
    domain(geosite: category-cryptocurrency) -> proxy
    domain(geosite: geolocation-!cn) -> proxy

    ### GeoSite Direct

    domain(geosite: alibaba) -> direct
    domain(geosite: bilibili) -> direct
    domain(geosite: bilibili2) -> direct
    domain(geosite: tencent) -> direct
    domain(geosite: zhihu) -> direct
    domain(geosite: cloudflare-cn) -> direct
    domain(geosite: category-scholar-cn) -> direct
    domain(geosite: category-media-cn) -> direct
    domain(geosite: category-social-media-cn) -> direct
    domain(geosite: category-dev-cn) -> direct
    domain(geosite: category-bank-cn) -> direct
    domain(geosite: apple) -> direct
    domain(geosite: microsoft) -> direct
    domain(geosite: geolocation-cn) -> direct
    domain(geosite: cn) -> direct

    # GeoIP
    dip(geoip: cn) -> direct

    fallback: proxy
}

Anything else?

No response

[Release Changelogs] v0.1.0

Context

🚀 @daebot proposed the following changelogs for release v0.1.0 generated in workflow run.

Changelogs

Full Changelog

  • fix: default googledns add tcp #92 (kunish)
  • chore(sync): keep upstream source up-to-date #90 (dae-bot[bot])
  • chore(sync): keep upstream source up-to-date #86 (dae-bot[bot])
  • refactor: split orchestrate page into multiple components #81 (kunish)
  • feat: restrict drag and drop area #80 (kunish)
  • feat: drag nodes and subscriptions between groups #79 (kunish)
  • fix(subscription): loading indicator of update #78 (kunish)
  • feat(group): show subscription tag on node hover #77 (kunish)
  • ci: add sync-upstream workflow #76 (yqlbu)
  • ci(prerelease): include v*.*.*rc* (v0.1.1rc1) case #75 (yqlbu)
  • ci(release): retrieve release tag (version) from dispatch inputs #74 (yqlbu)
  • fix(config): disable allow insecure by default #73 (kunish)
  • feat(config): show interface ip addresses in interface select #72 (kunish)
  • feat: add description text for group policies #71 (kunish)
  • feat: add loading state indicators #70 (kunish)
  • chore(issue-template): update default labels for bug-report #69 (yqlbu)
  • ci(build-nightly): add fetch-depth: 0 #67 (kunish)

[Bug Report] <release zip file naming issue>

Checks

  • I have searched the existing issues
  • I have read the documentation
  • Is it your first time sumbitting an issue

Current Behavior

magicdian@magicdians-arm-ubuntu-server:~/dae$ wget -P /tmp https://github.com/daeuniverse/daed/releases/latest/download/installer-daed-linux-$(arch).deb
--2023-10-07 17:02:45--  https://github.com/daeuniverse/daed/releases/latest/download/installer-daed-linux-aarch64.deb
Resolving github.com (github.com)... 20.205.243.166
Connecting to github.com (github.com)|20.205.243.166|:443... connected.
HTTP request sent, awaiting response... 302 Found
Location: https://github.com/daeuniverse/daed/releases/download/v0.3.3.p1/installer-daed-linux-aarch64.deb [following]
--2023-10-07 17:02:45--  https://github.com/daeuniverse/daed/releases/download/v0.3.3.p1/installer-daed-linux-aarch64.deb
Reusing existing connection to github.com:443.
HTTP request sent, awaiting response... 404 Not Found
2023-10-07 17:02:45 ERROR 404: Not Found.

Here is a output from my vm running on my m1 macbook.

I think maybe installer-daed-linux-arm64.deb should rename to installer-daed-linux-aarch64.deb

Expected Behavior

using wget -P /tmp https://github.com/daeuniverse/daed/releases/latest/download/installer-daed-linux-$(arch).deb command to install daed successful

Steps to Reproduce

No response

Environment

  • Daed version: irrelevant
  • OS (e.g cat /etc/os-release): Ubuntu 22.04.3 LTS
  • Kernel (e.g. uname -a): Linux magicdians-arm-ubuntu-server 5.15.0-76-generic #83~20.04.1-Ubuntu SMP Wed Jun 21 20:24:56 UTC 2023 aarch64 aarch64 aarch64 GNU/Linux
  • Others:

Anything else?

No response

[Release Changelogs] v0.1.0

Context

🪿 @daebot proposed the following changelogs for release v0.1.0 generated in workflow run.

Changelogs

Full Changelog

  • refactor: split orchestrate page into multiple components #81 (kunish)
  • feat: restrict drag and drop area #80 (kunish)
  • feat: drag nodes and subscriptions between groups #79 (kunish)
  • fix(subscription): loading indicator of update #78 (kunish)
  • feat(group): show subscription tag on node hover #77 (kunish)
  • ci: add sync-upstream workflow #76 (yqlbu)
  • ci(prerelease): include v*.*.*rc* (v0.1.1rc1) case #75 (yqlbu)
  • ci(release): retrieve release tag (version) from dispatch inputs #74 (yqlbu)
  • fix(config): disable allow insecure by default #73 (kunish)
  • feat(config): show interface ip addresses in interface select #72 (kunish)
  • feat: add description text for group policies #71 (kunish)
  • feat: add loading state indicators #70 (kunish)
  • chore(issue-template): update default labels for bug-report #69 (yqlbu)
  • ci(build-nightly): add fetch-depth: 0 #67 (kunish)

[Support Request] 无法启动

没有在daed面板上关闭开关就在Debian上执行了systemctl restart daed导致无法启动。日志:WARN[0006] [Reload] Received reload signal; prepare to reload。能否从wing.db中提取出dns部分和路由部分(便于重新安装)?

支持修改密码

What would you like us to improve

支持修改密码。

Why is this needed

在使用 daed resetpass 之后,得到一个随机密码,但是 daed 没有支持修改密码,导致使用不便。

[Bug Report] 透明代理端口监听不变更

Checks

  • I have searched the existing issues
  • I have read the documentation
  • Is it your first time sumbitting an issue

Current Behavior

在daed中修改透明代理软口,daed依然监听12345,而不是设定端口

Expected Behavior

监听端口变更为设定端口

Steps to Reproduce

更改daed配置中的透明代理端口

Environment

  • Daed version: v0.4.0rc1
  • OS (e.g cat /etc/os-release): archlinux
  • Kernel (e.g. uname -a): 6.5.9-zen2-1-zen
  • Others:

Anything else?

image
image

[Bug Report] docker build failed.

Checks

  • I have searched the existing issues
  • I have read the documentation
  • Is it your first time sumbitting an issue

Current Behavior

docker-compose.yml

version: "3"
services:
  dae:
    privileged: true
    network_mode: host
    pid: host
    build:
      context: .
    volumes:
      - /sys:/sys
      - ~/goose/daed:/etc/daed
      - ~/goose/dae:/etc/dae
 

terminal output:

hero@MiWiFi-CR8806-srv:~/daed$ docker compose up
[+] Building 102.2s (27/29)                                                     
 => [dae internal] load .dockerignore                                      0.1s
 => => transferring context: 53B                                           0.0s
 => [dae internal] load build definition from Dockerfile                   0.1s
 => => transferring dockerfile: 1.07kB                                     0.0s
 => [dae internal] load metadata for docker.io/library/alpine:latest       3.4s
 => [dae internal] load metadata for docker.io/library/node:alpine         5.0s
 => [dae internal] load metadata for docker.io/library/golang:1.20-bullse  3.4s
 => [dae auth] library/node:pull token for registry-1.docker.io            0.0s
 => [dae auth] library/golang:pull token for registry-1.docker.io          0.0s
 => [dae auth] library/alpine:pull token for registry-1.docker.io          0.0s
 => [dae build-web 1/7] FROM docker.io/library/node:alpine@sha256:f62abc0  5.2s
 => => resolve docker.io/library/node:alpine@sha256:f62abc08fe1004555c4f2  0.1s
 => => sha256:33fbadb7f8c6573fef63b7f96eea4c9bd46eae92c 49.45MB / 49.45MB  3.8s
 => => sha256:5558ef53d261da1c22c90a2bd6fd1322bab7de0bd20 2.34MB / 2.34MB  2.2s
 => => sha256:3ae8a7119b2e772d526fc322ae91c525806bf4f9d4b00ee 451B / 451B  0.4s
 => => sha256:f62abc08fe1004555c4f28b6793af8345a76230b21d 1.43kB / 1.43kB  0.0s
 => => sha256:254989045b0555ee411cd8fe7bd8e3ae306fef34b4c 1.16kB / 1.16kB  0.0s
 => => sha256:ade38d68438a71189c41d5858b5a626959ed226a7d6 6.73kB / 6.73kB  0.0s
 => => extracting sha256:33fbadb7f8c6573fef63b7f96eea4c9bd46eae92c115beb0  1.0s
 => => extracting sha256:5558ef53d261da1c22c90a2bd6fd1322bab7de0bd201ddc7  0.0s
 => => extracting sha256:3ae8a7119b2e772d526fc322ae91c525806bf4f9d4b00eef  0.0s
 => CACHED [dae stage-2 1/6] FROM docker.io/library/alpine@sha256:7144f7b  0.0s
 => CACHED [dae build-bundle 1/7] FROM docker.io/library/golang:1.20-bull  0.0s
 => [dae internal] load build context                                      0.3s
 => => transferring context: 55.13MB                                       0.2s
 => [dae stage-2 2/6] RUN mkdir -p /usr/local/share/daed/                  0.4s
 => [dae build-bundle 2/7] WORKDIR /build                                  0.1s
 => [dae stage-2 3/6] RUN mkdir -p /etc/daed/                              0.5s
 => [dae stage-2 4/6] RUN wget -O /usr/local/share/daed/geoip.dat https:/  4.0s
 => [dae stage-2 5/6] RUN wget -O /usr/local/share/daed/geosite.dat https  3.5s
 => [dae build-web 2/7] WORKDIR /build                                     0.1s
 => [dae build-web 3/7] COPY . .                                           0.1s
 => [dae build-web 4/7] RUN corepack enable                                0.4s
 => [dae build-web 5/7] RUN corepack prepare pnpm@latest --activate        3.1s
 => [dae build-web 6/7] RUN pnpm install                                  32.1s
 => [dae build-web 7/7] RUN pnpm build                                    28.7s
 => [dae build-bundle 3/7] COPY --from=build-web /build/dist web           0.1s
 => [dae build-bundle 4/7] COPY --from=build-web /build/wing wing          0.1s
 => [dae build-bundle 5/7] RUN apt-get update && apt-get install -y llvm  19.9s
 => ERROR [dae build-bundle 6/7] RUN cd wing && make OUTPUT=daed WEB_DIST  6.4s
------
 > [dae build-bundle 6/7] RUN cd wing && make OUTPUT=daed WEB_DIST=/build/web/ bundle:
0.421 cd dae-core && \
0.421 make ebpf && \
0.421 cd ../ && \
0.421 touch dae-core/control/bpf_bpfeb.o
0.423 make[1]: Entering directory '/build/wing/dae-core'
0.429 -strip=/usr/bin/llvm-strip
0.434 go: downloading github.com/cilium/ebpf v0.11.0
2.573 go: downloading golang.org/x/exp v0.0.0-20230728194245-b0cb94b80691
2.582 go: downloading golang.org/x/sys v0.10.0
6.302 /build/wing/dae-core/control/kern/tproxy.c:7:10: fatal error: 'headers/errno-base.h' file not found
6.302 #include "headers/errno-base.h"
6.302          ^~~~~~~~~~~~~~~~~~~~~~
6.303 1 error generated.
6.305 Error: can't execute clang: exit status 1
6.306 exit status 1
6.319 control/control.go:8: running "go": exit status 1
6.320 make[1]: *** [Makefile:83: ebpf] Error 1
6.320 make[1]: Leaving directory '/build/wing/dae-core'
6.320 make: *** [Makefile:50: dae-core/control/bpf_bpfeb.o] Error 2
------
failed to solve: process "/bin/sh -c cd wing && make OUTPUT=daed WEB_DIST=/build/web/ bundle" did not complete successfully: exit code: 2
hero@MiWiFi-CR8806-srv:~/daed$ 

Expected Behavior

No response

Steps to Reproduce

cd ~
git clone https://github.com/daeuniverse/daed.git

cd daed
git clone https://github.com/daeuniverse/dae-wing.git wing
git clone https://github.com/daeuniverse/dae.git wing/dae-core

# after touching and editing file `docker-compose.yml`

docker compose up

Environment

  • Daed version: self compile in docker 32d1af7
  • OS (e.g cat /etc/os-release): Debian 12
  • Kernel (e.g. uname -a): 6.1.0-11-amd64
  • Others: contents below

output of cat /etc/os-release:

PRETTY_NAME="Debian GNU/Linux 12 (bookworm)"
NAME="Debian GNU/Linux"
VERSION_ID="12"
VERSION="12 (bookworm)"
VERSION_CODENAME=bookworm
ID=debian
HOME_URL="https://www.debian.org/"
SUPPORT_URL="https://www.debian.org/support"
BUG_REPORT_URL="https://bugs.debian.org/"

output of uname -a:

Linux MiWiFi-CR8806-srv 6.1.0-11-amd64 #1 SMP PREEMPT_DYNAMIC Debian 6.1.38-4 (2023-08-08) x86_64 GNU/Linux

Anything else?

why there isn't a docker-compose.yml in the project like dae does? neither does wing?

[Bug Report] refuse to start

Checks

  • I have searched the existing issues
  • I have read the documentation
  • Is it your first time sumbitting an issue

Current Behavior

failed to load new config: ApplyRulesOptimizers error: geoip.dat: file does not exist in [/etc/daed, /root/.local/share/dae-wing, /usr/local/share/dae-wing, /usr/share/dae-wing]; see more in log

Expected Behavior

just RUN!

Steps to Reproduce

No response

Environment

Docker

Anything else?

I'll make a pull request to fix it.

[Release Changelogs] v0.1.0

Context

🚀 @daebot proposed the following changelogs for release v0.1.0 generated in workflow run.

Changelogs

Full Changelog

  • chore(release-v0.1.0rc): update release changelogs (#66) (@yqlbu)
  • ci: separate release build from main_stream build (#65) (@yqlbu)
  • chore: refine license (#63) (@mzz2017)
  • chore: upgrade dae-wing (#61) (@daebot)
  • ci: fix sync upstream (#59) (@yqlbu)
  • ci(build): fix missing dependant job (#57) (@yqlbu)
  • chore: use go mod cache instead of go mod vendor (#42) (@mzz2017)

[Feature Request] 增加端口分享的功能

Feature Request

由于我需要同时使用透明代理+端口分享,所以希望能增加与v2rayA一样的端口分享的功能。

目前我只能同时开着daed和v2rayA,daed做透明代理,v2rayA仅开启端口分享,但这样我需要同时维护两套rules,比较麻烦。

Use Cases

同时使用透明代理+端口代理的场合

Potential Benefits

可以完全替代v2rayA

[Bug Report] 随机时间reload

Checks

  • I have searched the existing issues
  • I have read the documentation
  • Is it your first time sumbitting an issue

Current Behavior

time="2023-11-19T02:12:30+08:00" level=info msg="Loading eBPF programs and maps into the kernel..."
time="2023-11-19T02:12:30+08:00" level=info msg="The loading process takes about 120MB free memory, which will be released after loading. Insufficient memory will cause loading failure."
time="2023-11-19T02:12:46+08:00" level=info msg="Loaded eBPF programs and maps"
time="2023-11-19T02:12:46+08:00" level=info msg="Routing match set len: 1/64"
time="2023-11-19T02:12:46+08:00" level=warning msg="[Reload] Received reload signal; prepare to reload"
time="2023-11-19T02:12:58+08:00" level=info msg="Loading eBPF programs and maps into the kernel..."
time="2023-11-19T02:12:58+08:00" level=info msg="The loading process takes about 120MB free memory, which will be released after loading. Insufficient memory will cause loading failure."
time="2023-11-19T02:13:13+08:00" level=info msg="Loaded eBPF programs and maps"
time="2023-11-19T02:13:13+08:00" level=info msg="Routing match set len: 1/64"
time="2023-11-19T02:13:13+08:00" level=warning msg="[Reload] Received reload signal; prepare to reload"
time="2023-11-19T02:13:21+08:00" level=info msg="Loading eBPF programs and maps into the kernel..."
time="2023-11-19T02:13:21+08:00" level=info msg="The loading process takes about 120MB free memory, which will be released after loading. Insufficient memory will cause loading failure."
time="2023-11-19T02:13:37+08:00" level=info msg="Loaded eBPF programs and maps"
time="2023-11-19T02:13:37+08:00" level=info msg="Routing match set len: 1/64"
time="2023-11-19T02:13:37+08:00" level=warning msg="[Reload] Received reload signal; prepare to reload"
time="2023-11-19T02:16:08+08:00" level=info msg="Loading eBPF programs and maps into the kernel..."
time="2023-11-19T02:16:08+08:00" level=info msg="The loading process takes about 120MB free memory, which will be released after loading. Insufficient memory will cause loading failure."
time="2023-11-19T02:16:24+08:00" level=info msg="Loaded eBPF programs and maps"
time="2023-11-19T02:16:24+08:00" level=info msg="Routing match set len: 1/64"
time="2023-11-19T02:16:24+08:00" level=warning msg="[Reload] Received reload signal; prepare to reload"
time="2023-11-19T02:17:24+08:00" level=info msg="Loading eBPF programs and maps into the kernel..."
time="2023-11-19T02:17:24+08:00" level=info msg="The loading process takes about 120MB free memory, which will be released after loading. Insufficient memory will cause loading failure."
time="2023-11-19T02:17:40+08:00" level=info msg="Loaded eBPF programs and maps"
time="2023-11-19T02:17:40+08:00" level=info msg="Routing match set len: 1/64"
time="2023-11-19T02:17:40+08:00" level=warning msg="[Reload] Received reload signal; prepare to reload"
time="2023-11-19T02:23:31+08:00" level=info msg="Loading eBPF programs and maps into the kernel..."
time="2023-11-19T02:23:31+08:00" level=info msg="The loading process takes about 120MB free memory, which will be released after loading. Insufficient memory will cause loading failure."
time="2023-11-19T02:23:47+08:00" level=info msg="Loaded eBPF programs and maps"
time="2023-11-19T02:23:47+08:00" level=info msg="Routing match set len: 1/64"
time="2023-11-19T02:23:47+08:00" level=warning msg="[Reload] Received reload signal; prepare to reload"

Expected Behavior

No response

Steps to Reproduce

正常使用中,不知为何就会出现这种情况。他会自动重载几次。偶尔2-3次,偶尔5-6次甚至更多。

Environment

  • Daed version:0.4.0RC1
  • OS (e.g cat /etc/os-release): OpenWrt 23.05.2 r23630-842932a63d / LuCI openwrt-23.05 branch git-23.306.39416-c86c256
  • Kernel (e.g. uname -a):rockchip/armv8
  • Others:Friendly NANOPi R4S

Anything else?

config只修改了日志等级和绑定接口,其余默认。dns和router默认。

Openwrt 启动daed的init.d脚本

一、使用说明: touch /etc/init.d/daed 然后把以下内容替换到 /etc/init.d/daed

#!/bin/sh /etc/rc.common

START=99
STOP=99
#如果不需要记录日志,修改 LOG_FILE="/dev/null"
#LOG_FILE="/dev/null"

LOG_FILE="/var/log/daed.log"

start() {
    # 检查 dae 进程是否已经在运行
    if [ $(pidof /usr/bin/daed) ]; then
        echo "daed process is already running!"
        return 1
    fi
    # 启动 daed 进程,daed 监听Ip和端口可以自行修改,并将日志输出到 LOG_FILE 文件中
    /usr/bin/daed run -c /etc/dae/  >> $LOG_FILE 2>&1 &
    echo "Started daed process.default listening address http://ip:2023 "

    # 记录进程 PID
    echo $! > /var/run/daed.pid
   
}

stop() {
    # 停止 daed 进程
	if [ -f /var/run/daed.pid ]; then
		pid=$(cat /var/run/daed.pid)
		
		kill -15 $pid
		echo "daed stopped"
	else
		echo "daed is not running"
	fi

    # 删除进程 PID 文件
    rm -f /var/run/daed.pid
}

restart() {
    stop
    sleep 1
    start
}

[Bug Report] `network is unreachable` `context deadline exceeded` after waking up from sleep and connecting to another network, without turning off the proxy before closing the lid. This problem can be solved by restarting the program.

Checks

  • I have searched the existing issues
  • I have read the documentation
  • Is it your first time sumbitting an issue

Current Behavior

After waking up from sleep and connecting to another network, without turning off the proxy before closing the lid:

  1. Unable to access the pannel through localhost:2023 and access network
  2. The log output is network is unreachable context deadline exceeded

This problem can be solved simply by restarting the container.

non-proper behavior:

time="Sep 20 02:08:54" level=warning msg="handlePkt: failed to dial '8.8.8.8:53': [Tls]: dial to gzbgp01.33226163.xyz:14391: dial tcp: lookup gzbgp01.33226163.xyz on [2409:893d:e:3244::9]:53: dial udp [2409:893d:e:3244::9]:53: connect: network is unreachable"
time="Sep 20 02:09:02" level=warning msg="handlePkt: failed to dial '8.8.8.8:53': context deadline exceeded"

Expected Behavior

monitor network change and restart when changed automatically. Maybe the problem is on either dae-wing or dae

time="2023-09-20T02:06:34Z" level=debug msg="Rewrite dial target to domain" from="31.13.85.169:443" to="www.youtube.com:443"
time="2023-09-20T02:06:34Z" level=info msg="localhost:35356 <-> 31.13.85.169:443" dialer=direct dscp=0 ip="31.13.85.169:443" mac="64:d6:9a:99:1a:d3" network=tcp4 outbound=direct pid=0 pname= policy=fixed sniffed=www.youtube.com
time="2023-09-20T02:06:36Z" level=info msg="localhost:59575 <-> 192.168.82.78:53" _qname=avatars.githubusercontent.com. dialer=direct dscp=0 mac="64:d6:9a:99:1a:d3" network="udp4(DNS)" outbound=direct pid=2358 pname=firefox-esr policy=fixed qtype=A
time="2023-09-20T02:06:36Z" level=warning msg="dangerous converting: may exceeds graphQL int32 range" name=SoMarkFromDae type=uint32
time="2023-09-20T02:06:36Z" level=warning msg="dangerous converting: may exceeds graphQL int32 range" name=SoMarkFromDae type=uint32
time="2023-09-20T02:06:36Z" level=warning msg="dangerous converting: may exceeds graphQL int32 range" name=SoMarkFromDae type=uint32
time="2023-09-20T02:06:36Z" level=warning msg="dangerous converting: may exceeds graphQL int32 range" name=SoMarkFromDae type=uint32
time="Sep 20 02:06:36" level=info msg="localhost:54885 <-> 8.8.8.8:53" _qname=avatars.githubusercontent.com. dialer=hk dscp=0 mac="64:d6:9a:99:1a:d3" network="tcp4(DNS)" outbound=proxy pid=2358 pname=firefox-esr policy=min_moving_avg qtype=A
time="Sep 20 02:06:36" level=debug msg="Rewrite dial target to domain" from="185.199.108.133:443" to="avatars.githubusercontent.com:443"
time="Sep 20 02:06:36" level=info msg="localhost:58552 <-> avatars.githubusercontent.com:443" dialer=hk dscp=0 ip="185.199.108.133:443" mac="64:d6:9a:99:1a:d3" network=tcp4 outbound=proxy pid=0 pname=firefox-esr policy=min_moving_avg sniffed=avatars.githubusercontent.com
time="Sep 20 02:06:36" level=info msg="localhost:59575 <-> 8.8.8.8:53" _qname=avatars.githubusercontent.com. dialer=hk dscp=0 mac="64:d6:9a:99:1a:d3" network="tcp4(DNS)" outbound=proxy pid=2358 pname=firefox-esr policy=min_moving_avg qtype=AAAA
time="Sep 20 02:06:39" level=info msg="localhost:53249 <-> 8.8.8.8:53" _qname=github.com. dialer=hk dscp=0 mac="64:d6:9a:99:1a:d3" network="tcp4(DNS)" outbound=proxy pid=2358 pname=firefox-esr policy=min_moving_avg qtype=AAAA
time="Sep 20 02:06:39" level=info msg="localhost:53249 <-> 8.8.8.8:53" _qname=github.com. dialer=hk dscp=0 mac="64:d6:9a:99:1a:d3" network="tcp4(DNS)" outbound=proxy pid=2358 pname=firefox-esr policy=min_moving_avg qtype=A
time="Sep 20 02:06:40" level=debug msg="Rewrite dial target to domain" from="[2a03:2880:f134:83:face:b00c:0:25de]:443" to="www.youtube.com:443"
time="Sep 20 02:06:40" level=debug msg="Rewrite dial target to domain" from="[2a03:2880:f134:83:face:b00c:0:25de]:443" to="www.youtube.com:443"
time="Sep 20 02:06:40" level=info msg="localhost:41116 <-> www.youtube.com:443" dialer=hk dscp=0 ip="[2a03:2880:f134:83:face:b00c:0:25de]:443" mac="64:d6:9a:99:1a:d3" network=tcp4 outbound=proxy pid=0 pname= policy=min_moving_avg sniffed=www.youtube.com

Steps to Reproduce

  1. connect to mobile phone hot-spot
  2. spin and set up a container
  3. turn on the proxy
  4. close the lid to make the computer sleep
  5. turn off the hot-spot shared by mobile phone
  6. open the lid and log into my system

Environment

  • Daed version: self build newest version from source
  • OS (e.g cat /etc/os-release): Debian GNU/Linux 12 (bookworm)
  • Kernel (e.g. uname -a): 6.1.0-12-amd64
  • Others:
hero@debian:~$ cat /etc/os-release
PRETTY_NAME="Debian GNU/Linux 12 (bookworm)"
NAME="Debian GNU/Linux"
VERSION_ID="12"
VERSION="12 (bookworm)"
VERSION_CODENAME=bookworm
ID=debian
HOME_URL="https://www.debian.org/"
SUPPORT_URL="https://www.debian.org/support"
BUG_REPORT_URL="https://bugs.debian.org/"
hero@debian:~$ uname -a
Linux debian 6.1.0-12-amd64 #1 SMP PREEMPT_DYNAMIC Debian 6.1.52-1 (2023-09-07) x86_64 GNU/Linux

Anything else?

No response

[Bug Report] something went wrong in docker container. `level=fatal msg="dae.Run: load eBPF objects: field TproxyWanEgress: program tproxy_wan_egress: load program: argument list too long: ;: 1428: (71) r2 (truncated, 879 line(s) omitted)"`

Checks

  • I have searched the existing issues
  • I have read the documentation
  • Is it your first time sumbitting an issue

Current Behavior

docker-compose.yml

version: "3"
services:
  dae:
    privileged: true
    network_mode: host
    pid: host
    build:
      context: .
    volumes:
      - /sys:/sys
      - ~/goose/daed:/etc/daed
      - ~/goose/dae:/etc/dae

terminal output:

[+] Running 1/1
 ✔ Container daed-dae-1  Created                                                                                                       0.1s 
Attaching to daed-dae-1
daed-dae-1  | time="2023-09-01T04:02:59Z" level=info msg="Loading eBPF programs and maps into the kernel..."
daed-dae-1  | time="2023-09-01T04:02:59Z" level=info msg="The loading process takes about 120MB free memory, which will be released after loading. Insufficient memory will cause loading failure."
daed-dae-1  | time="2023-09-01T04:02:59Z" level=warning msg="dangerous converting: may exceeds graphQL int32 range" name=SoMarkFromDae type=uint32
daed-dae-1  | time="2023-09-01T04:02:59Z" level=warning msg="dangerous converting: may exceeds graphQL int32 range" name=SoMarkFromDae type=uint32
daed-dae-1  | time="2023-09-01T04:02:59Z" level=info msg="Listen on http://127.0.0.1:2023"
daed-dae-1  | time="2023-09-01T04:02:59Z" level=info msg="Listen on http://192.168.31.119:2023"
daed-dae-1  | time="2023-09-01T04:02:59Z" level=info msg="Listen on http://192.168.122.1:2023"
daed-dae-1  | time="2023-09-01T04:02:59Z" level=info msg="Listen on http://172.17.0.1:2023"
daed-dae-1  | time="2023-09-01T04:02:59Z" level=info msg="Listen on http://[::1]:2023"
daed-dae-1  | time="2023-09-01T04:02:59Z" level=info msg="Listen on http://[fe80::66d6:9aff:fe99:1ad3]:2023"
daed-dae-1  | time="2023-09-01T04:02:59Z" level=info msg="Listen on http://[fe80::42:25ff:fe63:8ea9]:2023"
daed-dae-1  | time="2023-09-01T04:02:59Z" level=info msg="Listen on http://[fe80::d407:1bff:fead:fa10]:2023"
daed-dae-1  | time="2023-09-01T04:03:02Z" level=fatal msg="dae.Run: load eBPF objects: field TproxyWanEgress: program tproxy_wan_egress: load program: argument list too long: ;: 1428: (71) r2 (truncated, 879 line(s) omitted)"
daed-dae-1 exited with code 1

Expected Behavior

just work correctly!

Steps to Reproduce

cd ~
git clone https://github.com/daeuniverse/daed.git

cd daed
git clone https://github.com/daeuniverse/dae-wing.git wing
git clone https://github.com/daeuniverse/dae.git wing/dae-core
git clone https://github.com/daeuniverse/dae_bpf_headers.git wing/dae-core/control/kern/headers

# after touching and editing file `docker-compose.yml`

docker compose up

build image works just fine, but when running a container, it spits out an error. this is what the last line of the log looks like:

level=fatal msg="dae.Run: load eBPF objects: field TproxyWanEgress: program tproxy_wan_egress: load program: argument list too long: ;: 1428: (71) r2 (truncated, 879 line(s) omitted)"

Environment

  • Daed version: self compile in docker 32d1af7
  • OS (e.g cat /etc/os-release): Debian 12
  • Kernel (e.g. uname -a): 6.1.0-11-amd64
  • Others: see contents below

output of cat /etc/os-release:

PRETTY_NAME="Debian GNU/Linux 12 (bookworm)"
NAME="Debian GNU/Linux"
VERSION_ID="12"
VERSION="12 (bookworm)"
VERSION_CODENAME=bookworm
ID=debian
HOME_URL="https://www.debian.org/"
SUPPORT_URL="https://www.debian.org/support"
BUG_REPORT_URL="https://bugs.debian.org/"

output of uname -a:

Linux MiWiFi-CR8806-srv 6.1.0-11-amd64 #1 SMP PREEMPT_DYNAMIC Debian 6.1.38-4 (2023-08-08) x86_64 GNU/Linux

Anything else?

No response

[Release Changelogs] v0.1.0

Context

🚀 @daebot proposed the following changelogs for release v0.1.0 generated in workflow run.

Changelogs

"

Full Changelog

  • chore(sync): keep upstream source up-to-date #86 (dae-bot[bot])
  • refactor: split orchestrate page into multiple components #81 (kunish)
  • feat: restrict drag and drop area #80 (kunish)
  • feat: drag nodes and subscriptions between groups #79 (kunish)
  • fix(subscription): loading indicator of update #78 (kunish)
  • feat(group): show subscription tag on node hover #77 (kunish)
  • ci: add sync-upstream workflow #76 (yqlbu)
  • ci(prerelease): include v*.*.*rc* (v0.1.1rc1) case #75 (yqlbu)
  • ci(release): retrieve release tag (version) from dispatch inputs #74 (yqlbu)
  • fix(config): disable allow insecure by default #73 (kunish)
  • feat(config): show interface ip addresses in interface select #72 (kunish)
  • feat: add description text for group policies #71 (kunish)
  • feat: add loading state indicators #70 (kunish)
  • chore(issue-template): update default labels for bug-report #69 (yqlbu)
  • ci(build-nightly): add fetch-depth: 0 #67 (kunish)

"

[Release Changelogs] v0.1.0

Context

🚀 @daebot proposed the following changelogs for release v0.1.0 generated in workflow run.

Changelogs

Full Changelog

  • fix: default googledns add tcp #92 (kunish)
  • chore(sync): keep upstream source up-to-date #90 (dae-bot[bot])
  • chore(sync): keep upstream source up-to-date #86 (dae-bot[bot])
  • refactor: split orchestrate page into multiple components #81 (kunish)
  • feat: restrict drag and drop area #80 (kunish)
  • feat: drag nodes and subscriptions between groups #79 (kunish)
  • fix(subscription): loading indicator of update #78 (kunish)
  • feat(group): show subscription tag on node hover #77 (kunish)
  • ci: add sync-upstream workflow #76 (yqlbu)
  • ci(prerelease): include v*.*.*rc* (v0.1.1rc1) case #75 (yqlbu)
  • ci(release): retrieve release tag (version) from dispatch inputs #74 (yqlbu)
  • fix(config): disable allow insecure by default #73 (kunish)
  • feat(config): show interface ip addresses in interface select #72 (kunish)
  • feat: add description text for group policies #71 (kunish)
  • feat: add loading state indicators #70 (kunish)
  • chore(issue-template): update default labels for bug-report #69 (yqlbu)
  • ci(build-nightly): add fetch-depth: 0 #67 (kunish)

[CI] Add auto-merge support for sync-upstream workflow

Why is this needed

Currently, PRs proposed by @daebot for sync-upstream workflow are NOT able to be merged automatically.

The proposed solution is to integrate check runs to indicate if all stages/steps in pr-build workflow are passed. If it is such a case per PR, dae-bot[bot] will merge the PR automatically. In case of any build failure occurs in the PR build, dae-bot[bot] will halt the auto-merge and alert the stakeholders instead.

References:

Implementaion

daeuniverse/automation-bot#71

[Release Changelogs] v0.1.0

Context

🪿 @daebot proposed the following changelogs for release v0.1.0 generated in workflow run.

Changelogs

%0A%0AFull Changelog%0A%0A- refactor: split orchestrate page into multiple components #81 (kunish)%0A- feat: restrict drag and drop area #80 (kunish)%0A- feat: drag nodes and subscriptions between groups #79 (kunish)%0A- fix(subscription): loading indicator of update #78 (kunish)%0A- feat(group): show subscription tag on node hover #77 (kunish)%0A- ci: add sync-upstream workflow #76 (yqlbu)%0A- ci(prerelease): include v*.*.*rc* (v0.1.1rc1) case #75 (yqlbu)%0A- ci(release): retrieve release tag (version) from dispatch inputs #74 (yqlbu)%0A- fix(config): disable allow insecure by default #73 (kunish)%0A- feat(config): show interface ip addresses in interface select #72 (kunish)%0A- feat: add description text for group policies #71 (kunish)%0A- feat: add loading state indicators #70 (kunish)%0A- chore(issue-template): update default labels for bug-report #69 (yqlbu)%0A- ci(build-nightly): add fetch-depth: 0 #67 (kunish)

[Bug Report] 更新订阅时遇到问题

Checks

  • I have searched the existing issues
  • I have read the documentation
  • Is it your first time sumbitting an issue

Current Behavior

1、更新订阅后,group 内的节点的配置信息不会随着订阅更新而更新。依然还是更新前的配置
2、更新订阅后,更新订阅前放在 group 内的节点会重复,并且都在顶部。如图
image

[Bug Report] 似乎 DAED/DAE 并未正确处理 SRV DNS 记录

Checks

  • I have searched the existing issues
  • I have read the documentation
  • Is it your first time sumbitting an issue

Current Behavior

DNS 规则如下 (其中 127.0.0.1:8053 为本地 smartdns ):

upstream {
  local:  'udp://114.114.114.114:53'
  remote: 'udp://127.0.0.1:8053'
}
routing {
  request {
    qname(geosite:category-ads-all) -> reject

    qname(geosite:china-list) -> local
    qname(geosite:apple-cn) -> local
    qname(geosite:google-cn) -> local

    qname(geosite:cn) -> local

    fallback: remote
  }
}

最近发现日志中存在如下日志:

level=info msg="localhost:59609 <-> 127.0.0.1:8053" _qname="_https._tcp.mirrors.ustc.edu.cn." dialer=direct dscp=5 mac="xx:xx:xx:xx:xx:e2" network="udp4(DNS)" outbound=direct pid=760 pname=smartdns policy=fixed qtype=SRV
level=info msg="localhost:49493 <-> 127.0.0.1:8053" _qname="_https._tcp.mirrors.ustc.edu.cn." dialer=direct dscp=5 mac="xx:xx:xx:xx:xx:e2" network="udp4(DNS)" outbound=direct pid=0 pname= policy=fixed qtype=SRV
level=info msg="x.x.x.5:54725 <-> 127.0.0.1:8053" _qname="_https._tcp.pkgs.tailscale.com." dialer=direct dscp=0 mac="xx:xx:xx:xx:xx:a1" network="udp4(DNS)" outbound=direct pid=0 pname= policy=fixed qtype=SRV
level=info msg="x.x.x.5:47464 <-> 127.0.0.1:8053" _qname="_https._tcp.mirrors.ustc.edu.cn." dialer=direct dscp=0 mac="xx:xx:xx:xx:xx:a1" network="udp4(DNS)" outbound=direct pid=0 pname= policy=fixed qtype=SRV
level=info msg="x.x.x.5:32983 <-> 127.0.0.1:8053" _qname="_https._tcp.pkgs.tailscale.com." dialer=direct dscp=0 mac="xx:xx:xx:xx:xx:a1" network="udp4(DNS)" outbound=direct pid=0 pname= policy=fixed qtype=SRV
level=info msg="x.x.x.5:43202 <-> 127.0.0.1:8053" _qname="_https._tcp.pkgs.tailscale.com." dialer=direct dscp=0 mac="xx:xx:xx:xx:xx:a1" network="udp4(DNS)" outbound=direct pid=0 pname= policy=fixed qtype=SRV
level=info msg="x.x.x.5:39599 <-> 127.0.0.1:8053" _qname="_https._tcp.mirrors.ustc.edu.cn." dialer=direct dscp=0 mac="xx:xx:xx:xx:xx:a1" network="udp4(DNS)" outbound=direct pid=0 pname= policy=fixed qtype=SRV
level=info msg="x.x.x.5:50338 <-> 127.0.0.1:8053" _qname="_https._tcp.pkgs.tailscale.com." dialer=direct dscp=0 mac="xx:xx:xx:xx:xx:a1" network="udp4(DNS)" outbound=direct pid=0 pname= policy=fixed qtype=SRV
level=info msg="x.x.x.5:46805 <-> 127.0.0.1:8053" _qname="_https._tcp.mirrors.ustc.edu.cn." dialer=direct dscp=0 mac="xx:xx:xx:xx:xx:a1" network="udp4(DNS)" outbound=direct pid=0 pname= policy=fixed qtype=SRV
level=info msg="localhost:38006 <-> 127.0.0.1:8053" _qname="_https._tcp.mirrors.ustc.edu.cn." dialer=direct dscp=5 mac="xx:xx:xx:xx:xx:e2" network="udp4(DNS)" outbound=direct pid=0 pname= policy=fixed qtype=SRV
level=info msg="localhost:59427 <-> 127.0.0.1:8053" _qname="_https._tcp.mirrors.ustc.edu.cn." dialer=direct dscp=5 mac="xx:xx:xx:xx:xx:e2" network="udp4(DNS)" outbound=direct pid=2808 pname=smartdns policy=fixed qtype=SRV

发现形如 _https._tcp.pkgs.tailscale.com 类型为 SRV 的域名均发送到了 127.0.0.1:8053 进行处理。

_https._tcp.pkgs.tailscale.com 域名处理应该符合规则,但 _https._tcp.mirrors.ustc.edu.cn 似乎处理的不正确。

为了判断是否为 Geo 数据库分流导致的问题,手动在 dns 规则中增加规则:

qname(suffix:_https._tcp.mirrors.ustc.edu.cn) -> local

得到如下告警:

level=warning msg="DomainMatcher: skip bad suffix domain: _https._tcp.mirrors.ustc.edu.cn: unexpected chat: 95"

进一步尝试:

qname(full:_https._tcp.mirrors.ustc.edu.cn) -> local

得到如下告警:

time="Dec 07 11:15:58" level=warning msg="[Reload] Received reload signal; prepare to reload"
time="Dec 07 11:15:58" level=warning msg="[Reload] Load new control plane"

time="Dec 07 11:15:59" level=warning msg="DomainMatcher: skip bad full domain: _https._tcp.mirrors.ustc.edu.cn: unexpected chat: 95"

time="Dec 07 11:16:00" level=warning msg="[Reload] Stopped old control plane"
time="Dec 07 11:16:00" level=warning msg="[Reload] Serve"
time="Dec 07 11:16:00" level=warning msg="[Reload] Finished"
time="2023-12-07T11:16:01+08:00" level=warning msg="dangerous converting: may exceeds graphQL int32 range" name=SoMarkFromDae type=uint32
time="2023-12-07T11:16:01+08:00" level=warning msg="dangerous converting: may exceeds graphQL int32 range" name=SoMarkFromDae type=uint32

这么看来是 DomainMatcher 对域名处理异常导致。

Expected Behavior

_https._tcp.mirrors.ustc.edu.cn 这类域名的 DomainMatcher ,应该被正确处理。

  • 如果 Geo 数据库可以判断这类域名的分流,则按照 dns 配置文件中的 Geo 规则处理
  • 如果手动指定 dns 出口,发送到指定的上游 dns 服务器,例如 _https._tcp.mirrors.ustc.edu.cn 发往 local dns

其他种类的 DNS 请求 (Domain Name System (DNS) Parameters), 还在进一步观察

Steps to Reproduce

No response

Environment

  • Daed version : latest rc
  • OS (e.g cat /etc/os-release) : Debian 12 latest
  • Kernel (e.g. uname -a) : 6.1.0-13-cloud-amd64 #1 SMP PREEMPT_DYNAMIC Debian 6.1.55-1 (2023-09-29) x86_64 GNU/Linux
  • Others:

Anything else?

No response

Suggestions and bugs

  • autoConfigKernelParameter cannot be set.
  • Lan interface should be optional.
  • Properly set wan interface.
  • Importing subscription should allow partial success.

[Bug Report] No mips binary being built in CI

What happened

No mips binary being built in CI

What you expect to happen

Can build and publish artifacts and release files for mips architectures.

How to reproduce it (as minimally and precisely as possible):

Anything else we need to know

Environment

  • daed version (use daed --version):
  • OS (e.g cat /etc/os-release):
  • Kernel (e.g. uname -a):
  • Others:

[CI] Bundle `dae-wing` and its deps in dockerfile

Summary

The current Dockerfile ONLY builds daed with its dependencies. However, end-users still need to manually install and configure dae-wing (back-end) to make the stack fully functional, which is quite inconvenient.

Expectation

Update Dockerfile and CI workflow to bundle dae-wing into the build process so that we can deliver a fully functional software stack (UI + backend) to the end-users

[Release Changelogs] v0.1.0

Context

🪿 @daebot proposed the following changelogs for release v0.1.0 generated in workflow run.

Changelogs

Full Changelog

  • refactor: split orchestrate page into multiple components #81 (kunish)
  • feat: restrict drag and drop area #80 (kunish)
  • feat: drag nodes and subscriptions between groups #79 (kunish)
  • fix(subscription): loading indicator of update #78 (kunish)
  • feat(group): show subscription tag on node hover #77 (kunish)
  • ci: add sync-upstream workflow #76 (yqlbu)
  • ci(prerelease): include v*.*.*rc* (v0.1.1rc1) case #75 (yqlbu)
  • ci(release): retrieve release tag (version) from dispatch inputs #74 (yqlbu)
  • fix(config): disable allow insecure by default #73 (kunish)
  • feat(config): show interface ip addresses in interface select #72 (kunish)
  • feat: add description text for group policies #71 (kunish)
  • feat: add loading state indicators #70 (kunish)
  • chore(issue-template): update default labels for bug-report #69 (yqlbu)
  • ci(build-nightly): add fetch-depth: 0 #67 (kunish)

[Feature Request] 为 group 添加 filter 选项

Greetings

No response

Feature Request

group 添加 filter 选项,可以自动选择节点而不是需要手动拖动

Use Cases

  1. group 板块可以自动按订阅过滤选择节点而不是需要手动拖动
  2. 当 note 板块有多个节点时可以快速过滤需要的节点

Potential Benefits

No response

[Support Request] Gentoo packaging dependencies issue

What would you like us to support (In short summary)

The Gentoo packaging environment requires a network sandbox, so the make process cannot be networked, using vendor may cause compilation errors when trying to download packages (because of the network sandbox), using go mod cache can ensure that all the dependent packages are local, so that the package can be packaged properly

[Bug Report] Inconsistent Version

What happened

image

What you expect to happen

Version tag should align with the release tag

How to reproduce it (as minimally and precisely as possible):

NA.

Anything else we need to know

NA.

Environment

  • daed version (use daed --version):
  • OS (e.g cat /etc/os-release):
  • Kernel (e.g. uname -a):
  • Others:

[Enhancement] CI Improvement

What would you like us to improve

See comments below

Why is this needed

CI issues must be resolved to facilitate overall CI quality and stability

[Feature] latency-based failover

What feature you would like us to integrate into the daed project

Latency-based failover is already implemented in dae, no add_latency related configuration is found in daed.

Related PR
daeuniverse/dae#119

Why is this needed

The add_latency can be set in daed.

[Release Changelogs] v0.1.0

Context

🚀 @daebot proposed the following changelogs for release v0.1.0 generated in workflow run.

Changelogs

Full Changelog

  • chore(sync): keep upstream source up-to-date #86 (dae-bot[bot])
  • refactor: split orchestrate page into multiple components #81 (kunish)
  • feat: restrict drag and drop area #80 (kunish)
  • feat: drag nodes and subscriptions between groups #79 (kunish)
  • fix(subscription): loading indicator of update #78 (kunish)
  • feat(group): show subscription tag on node hover #77 (kunish)
  • ci: add sync-upstream workflow #76 (yqlbu)
  • ci(prerelease): include v*.*.*rc* (v0.1.1rc1) case #75 (yqlbu)
  • ci(release): retrieve release tag (version) from dispatch inputs #74 (yqlbu)
  • fix(config): disable allow insecure by default #73 (kunish)
  • feat(config): show interface ip addresses in interface select #72 (kunish)
  • feat: add description text for group policies #71 (kunish)
  • feat: add loading state indicators #70 (kunish)
  • chore(issue-template): update default labels for bug-report #69 (yqlbu)
  • ci(build-nightly): add fetch-depth: 0 #67 (kunish)

配置daed之後,無法訪問谷歌,但是youtube、facebook等網站沒有問題

What happened

google不能訪問
image
youtube可以
image

What you expect to happen

預期是谷歌搜索也可以訪問

How to reproduce it (as minimally and precisely as possible):

daed的界面中,全局配置保持默認
dns配置頁面如下
image
路由配置如下
image
代理節點配置爲
image
daed的日誌
image
xray的日誌
image

Anything else we need to know

Environment

  • daed version (use daed --version): unstable-0.1.0rc.r49.g6f9b1b8
  • OS (e.g cat /etc/os-release): CachyOS Linux IMAGE_VERSION:2023.04.23
  • Kernel (e.g. uname -a): 6.4.2-1-cachyos
  • Others:
    image

❯ cat /etc/resolv.conf

Generated by NetworkManager

nameserver 192.168.3.1

其中nameserver 223.5.5.5和119.29.29.29都是一樣的結果

非常感謝各位大佬的幫助!!!!

[Release Changelogs] v0.1.0

Context

🚀 @daebot proposed the following changelogs for release v0.1.0 generated in workflow run.

Changelogs

  • feat: use theme github as default monaco editor light theme in #102 by (@kunish)
  • feat: use monaco editor for dns and routing in #101 by (@kunish)
  • feat: render qrcode in canvas to allow user to save image in #100 by (@kunish)
  • feat: add a modal to show node qrcode in #99 by (@kunish)
  • feat: show node protocol in card title in #98 by (@kunish)
  • feat: add tooltip for header actions in #97 by (@kunish)
  • fix(group): refresh after remove nodes/subs in #96 by (@kunish)
  • fix: default googledns add tcp in #92 by (@kunish)
  • fix: dragging not working properly in #91 by (@kunish)
  • chore(sync): keep upstream source up-to-date in #90 by (@dae-bot[bot])
  • chore(sync): keep upstream source up-to-date in #86 by (@dae-bot[bot])
  • refactor: split orchestrate page into multiple components in #81 by (@kunish)
  • feat: restrict drag and drop area in #80 by (@kunish)
  • feat: drag nodes and subscriptions between groups in #79 by (@kunish)
  • fix(subscription): loading indicator of update in #78 by (@kunish)
  • feat(group): show subscription tag on node hover in #77 by (@kunish)
  • ci: add sync-upstream workflow in #76 by (@yqlbu)
  • ci(prerelease): include v*.*.rc (v0.1.1rc1) case in #75 by (@yqlbu)
  • ci(release): retrieve release tag (version) from dispatch inputs in #74 by (@yqlbu)
  • fix(config): disable allow insecure by default in #73 by (@kunish)
  • feat(config): show interface ip addresses in interface select in #72 by (@kunish)
  • feat: add description text for group policies in #71 by (@kunish)
  • feat: add loading state indicators in #70 by (@kunish)
  • chore(issue-template): update default labels for bug-report in #69 by (@yqlbu)
  • ci(build-nightly): add fetch-depth: 0 in #67 by (@kunish)

Full Changelog: v0.1.0rc...v0.1.0

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.