update 2024-02-19 22:54:22

This commit is contained in:
github-actions[bot] 2024-02-19 22:54:22 +08:00
parent 32cc05e737
commit b0aefd6581
16 changed files with 588 additions and 0 deletions

60
ddns-go/Makefile Normal file
View File

@ -0,0 +1,60 @@
# SPDX-License-Identifier: GPL-3.0-only
#
# Copyright (C) 2021-2023 sirpdboy <herboy2008@gmail.com>
#
# This is free software, licensed under the Apache License, Version 2.0 .
#
include $(TOPDIR)/rules.mk
PKG_NAME:=ddns-go
KG_VERSION:=6.1.1
PKG_RELEASE:=1
PKG_SOURCE_PROTO:=git
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
PKG_SOURCE_URL:=https://github.com/jeessy2/ddns-go.git
PKG_MIRROR_HASH:=738e16f09df958a8425e19fb717c1d2365632756babea2332e17d500b4ee1266
PKG_SOURCE_VERSION:=6410dad8a20411c75c8eca2026a2588ae355ccb1
PKG_LICENSE:=AGPL-3.0-only
PKG_LICENSE_FILES:=LICENSE
PKG_MAINTAINER:=herboy2008 <herboy2008@gmail.com>
PKG_BUILD_DEPENDS:=golang/host
PKG_BUILD_PARALLEL:=1
PKG_BUILD_FLAGS:=no-mips16
GO_PKG:=github.com/jeessy2/ddns-go/v6
GO_PKG_LDFLAGS_X:=main.version=$(PKG_VERSION)
include $(INCLUDE_DIR)/package.mk
include $(TOPDIR)/feeds/packages/lang/golang/golang-package.mk
define Package/ddns-go
TITLE:=A Linux web GUI client of ddns-go
SECTION:=net
CATEGORY:=Network
SUBMENU:=Web Servers/Proxies
DEPENDS:=$(GO_ARCH_DEPENDS) +ca-bundle
URL:=https://github.com/jeessy2/ddns-go
USERID:=ddns-go:ddns-go
endef
define Package/ddns-go/description
ddns-go is a automatically obtain your public IPv4 or IPv6 address and resolve it to the corresponding domain name service,
support Alidns Dnspod Cloudflare Hicloud Callback Baiducloud porkbun GoDaddy Google Domains.
endef
define Package/ddns-go/install
$(call GoPackage/Package/Install/Bin,$(1))
$(INSTALL_DIR) $(1)/etc/init.d
$(INSTALL_BIN) $(CURDIR)/file/ddns-go.init $(1)/etc/init.d/ddns-go
$(INSTALL_DIR) $(1)/etc/uci-defaults
$(INSTALL_BIN) $(CURDIR)/file/luci-ddns-go.uci-default $(1)/etc/uci-defaults/luci-ddns-go
endef
$(eval $(call GoBinPackage,ddns-go))
$(eval $(call BuildPackage,ddns-go))

82
ddns-go/file/ddns-go.init Normal file
View File

@ -0,0 +1,82 @@
#!/bin/sh /etc/rc.common
#
# Copyright (C) 2021-2023 sirpdboy <herboy2008@gmail.com> https://github.com/sirpdboy/luci-app-ddns-go
#
# This file is part of ddns-go .
#
# This is free software, licensed under the Apache License, Version 2.0 .
#
START=99
USE_PROCD=1
NAME=ddns-go
PROG=/usr/bin/ddns-go
CONFDIR=/etc/ddns-go
CONF=$CONFDIR/ddns-go-config.yaml
get_tz()
{
SET_TZ=""
[ -e "/etc/localtime" ] && return
for tzfile in /etc/TZ /var/etc/TZ
do
[ -e "$tzfile" ] || continue
tz="$(cat $tzfile 2>/dev/null)"
done
[ -z "$tz" ] && return
SET_TZ=$tz
}
init_yaml(){
[ -d $CONFDIR ] || mkdir -p $CONFDIR 2>/dev/null
cat /usr/share/ddns-go/ddns-go-default.yaml > $CONF
}
xappend() { param="$param $1"; }
append_parm() {
local section="$1"
local option="$2"
local switch="$3"
local default="$4"
local _tmp
config_get _tmp "$section" "$option" "$default"
[[ -z "$_tmp" ]] && return
[[ x$default = x && x$_tmp = x0 ]] && return
[[ x$default = x && x$_tmp = x1 ]] && xappend "$switch" || xappend "$switch $_tmp"
}
start_instance() {
local cfg="$1" param
config_get_bool enabled $cfg enabled 1
[[ x$enabled = x1 ]] || return 1
[[ -s ${CONF} ]] || init_yaml
config_get_bool logger $cfg logger 1
config_get port $cfg port '9876'
append_parm "$cfg" 'time' '-f' '300'
append_parm "$cfg" 'ctimes' '-cacheTimes' '5'
append_parm "$cfg" 'dns' '-dns' '223.5.5.5'
append_parm "$cfg" 'noweb' '-noweb'
append_parm "$cfg" 'skipverify' '-skipVerify'
procd_open_instance
get_tz
[[ -z "$SET_TZ" ]] || procd_set_param env TZ="$SET_TZ"
procd_set_param command ${PROG} -l :$port -c "$CONF" ${param}
[[ "x$logger" == x1 ]] && procd_set_param stderr 1
procd_set_param respawn
procd_close_instance
}
start_service() {
config_load 'ddns-go'
config_foreach start_instance 'basic'
}
service_triggers() {
procd_add_reload_trigger "ddns-go"
}

View File

@ -0,0 +1,7 @@
#!/bin/sh
[ -s "/etc/ddns-go/localtime" ] && mv -f /etc/ddns-go/localtime /etc/localtime
/etc/init.d/ddns-go enable
/etc/init.d/ddns-go start
rm -f /tmp/luci*
exit 0

23
luci-app-ddns-go/Makefile Normal file
View File

@ -0,0 +1,23 @@
# SPDX-License-Identifier: GPL-3.0-only
#
# Copyright (C) 2021-2022 sirpdboy <herboy2008@gmail.com> https://github.com/sirpdboy/luci-app-ddns-go
#
# This is free software, licensed under the Apache License, Version 2.0 .
#
include $(TOPDIR)/rules.mk
PKG_NAME:=luci-app-ddns-go
PKG_VERSION:=1.4.1
PKG_RELEASE:=10
LUCI_TITLE:=LuCI Support for Dynamic ddns-go Client
LUCI_DEPENDS:=+ddns-go
LUCI_PKGARCH:=all
define Package/$(PKG_NAME)/conffiles
/etc/config/ddns-go
/etc/ddns-go/ddns-go-config.yaml
endef
include $(TOPDIR)/feeds/luci/luci.mk
# call BuildPackage - OpenWrt buildroot signature

118
luci-app-ddns-go/README.md Normal file
View File

@ -0,0 +1,118 @@
## 访问数:![hello](https://views.whatilearened.today/views/github/sirpdboy/deplives.svg)[![](https://img.shields.io/badge/TG群-点击加入-FFFFFF.svg)](https://t.me/joinchat/AAAAAEpRF88NfOK5vBXGBQ)
### 访问数:[![](https://visitor-badge.glitch.me/badge?page_id=sirpdboy-visitor-badge)] [![](https://img.shields.io/badge/TG群-点击加入-FFFFFF.svg)](https://t.me/joinchat/AAAAAEpRF88NfOK5vBXGBQ)
欢迎来到sirpdboy的源码仓库
=
# luci-app-ddns-go
luci-app-ddns-go 自动获得你的公网 IPv4 或 IPv6 地址,并解析到对应的域名服务。支持的域名服务商 Alidns(阿里云) Dnspod(腾讯云) Cloudflare 华为云 Callback 百度云 porkbun GoDaddy
[![若部分图片无法正常显示,请挂上机场浏览或点这里到末尾看修复教程](https://visitor-badge.glitch.me/badge?page_id=sirpdboy-visitor-badge)](#解决-github-网页上图片显示失败的问题) [![](https://img.shields.io/badge/TG群-点击加入-FFFFFF.svg)](https://t.me/joinchat/AAAAAEpRF88NfOK5vBXGBQ)
[luci-app-ddns-go ddns-go动态域名插件](https://github.com/sirpdboy/luci-app-ddns-go)
======================
**认真阅读完毕** 本页面,本页面包含注意事项和如何使用。
## 功能说明:
### ddns-go动态域名插件
#### 自动获得你的公网 IPv4 或 IPv6 地址,并解析到对应的域名服务。
<!-- TOC -->
- [ddns-go](#ddns-go)
- [特性](#特性)
- [使用方法](#使用方法)
- [说明](#说明)
- [界面](#界面)
- [捐助](#捐助)
<!-- /TOC -->
## 特性
- 支持Mac、Windows、Linux系统支持ARM、x86架构
- 支持的域名服务商 `Alidns(阿里云)` `Dnspod(腾讯云)` `Cloudflare` `华为云` `Callback` `百度云` `porkbun` `GoDaddy`
- 支持接口/网卡获取IP
- 支持以服务的方式运行
- 默认间隔5分钟同步一次
- 支持多个域名同时解析,公司必备
- 支持多级域名
- 网页中配置,简单又方便,可设置 `登录用户名和密码` / `禁止从公网访问`
- 网页中方便快速查看最近50条日志不需要跑docker中查看
- 支持webhook通知
- 支持TTL
- 支持部分dns服务商传递自定义参数实现地域解析等功能
## 使用方法
- 将luci-app-ddns-go添加至 LEDE/OpenWRT 源码的方法。
### 下载源码方法:
```Brach
# 下载源码
git clone https://github.com/sirpdboy/luci-app-ddns-go.git package/ddns-go
make menuconfig
```
### 配置菜单
```Brach
make menuconfig
# 找到 LuCI -> Applications, 选择 luci-app-ddns-go, 保存后退出。
```
### 编译
```Brach
# 编译固件
make package/ddns-go/luci-app-ddns-go/compile V=s
```
## 说明
-源码来源https://github.com/sirpdboy/luci-app-ddns-go
-你可以随意使用其中的源码,但请注明出处。
============================
## 界面
![screenshots](https://raw.githubusercontent.com/jeessy2/ddns-go/master/ddns-web.png)
# My other project
网络速度测试 https://github.com/sirpdboy/NetSpeedTest
定时设置插件 : https://github.com/sirpdboy/luci-app-autotimeset
关机功能插件 : https://github.com/sirpdboy/luci-app-poweroffdevice
opentopd主题 : https://github.com/sirpdboy/luci-theme-opentopd
opentoks 主题: https://github.com/sirpdboy/luci-theme-opentoks [仿KOOLSAHRE主题]
btmob 主题: https://github.com/sirpdboy/luci-theme-btmob
系统高级设置 : https://github.com/sirpdboy/luci-app-advanced
## 捐助
-如果你觉得此项目对你有帮助,请捐助我们,以使项目能持续发展,更加完善。··请作者喝杯咖啡~~~**
-你们的支持就是我的动力!**
| <img src="https://img.shields.io/badge/-支付宝-F5F5F5.svg" href="#赞助支持本项目-" height="25" alt="图飞了😂"/> | <img src="https://img.shields.io/badge/-微信-F5F5F5.svg" height="25" alt="图飞了😂" href="#赞助支持本项目-"/> |
| :-----------------: | :-------------: |
|![xm1](https://raw.githubusercontent.com/sirpdboy/openwrt/master/doc/支付宝.png) | ![xm1](https://raw.githubusercontent.com/sirpdboy/openwrt/master/doc/微信.png) |
<a href="#readme">
<img src="https://img.shields.io/badge/-返回顶部-orange.svg" alt="图飞了😂" title="返回顶部" align="right"/>
</a>

View File

@ -0,0 +1,25 @@
-- Copyright (C) 2021-2022 sirpdboy <herboy2008@gmail.com> https://github.com/sirpdboy/luci-app-ddns-go
-- Licensed to the public under the Apache License 2.0.
module("luci.controller.ddns-go", package.seeall)
function index()
if not nixio.fs.access("/etc/config/ddns-go") then
return
end
local e=entry({"admin", "services", "ddns-go"}, alias("admin", "services", "ddns-go", "setting"),_("DDNS-GO"), 58)
e.dependent=false
e.acl_depends={ "luci-app-ddns-go" }
entry({"admin", "services", "ddns-go", "setting"}, cbi("ddns-go"), _("Base Setting"), 20).leaf=true
entry({"admin", "services", "ddns-go", "ddns-go"}, template("ddns-go"), _("DDNS-GO"), 30).leaf = true
entry({"admin", "services", "ddnsgo_status"}, call("act_status"))
end
function act_status()
local sys = require "luci.sys"
local e = { }
e.running = sys.call("pidof ddns-go >/dev/null") == 0
luci.http.prepare_content("application/json")
luci.http.write_json(e)
end

View File

@ -0,0 +1,46 @@
-- Copyright (C) 2021-2022 sirpdboy <herboy2008@gmail.com> https://github.com/sirpdboy/luci-app-ddns-go
local m, s ,o
m = Map("ddns-go")
m.title = translate("DDNS-GO")
m.description = translate("DDNS-GO automatically obtains your public IPv4 or IPv6 address and resolves it to the corresponding domain name service.")..translate("</br>For specific usage, see:")..translate("<a href=\'https://github.com/sirpdboy/luci-app-ddns-go.git' target=\'_blank\'>GitHub @sirpdboy/luci-app-ddns-go </a>")
m:section(SimpleSection).template = "ddns-go_status"
s = m:section(TypedSection, "basic", translate("Global Settings"))
s.addremove = false
s.anonymous = true
o = s:option(Flag,"enabled",translate("Enable"))
o.default = 0
o = s:option(Value, "port",translate("Set the DDNS-TO access port"))
o.datatype = "uinteger"
o.default=9876
o = s:option(Value, "time",translate("update interval"))
o.default=600
o = s:option(Value, "ctimes",translate("Compare with service provider N times intervals"))
o.default=5
o = s:option(Flag,"skipverify",translate("Skip verifying certificates"))
o.default = 0
o = s:option(Value, "dns",translate("Specify DNS resolution server"))
o:value("223.5.5.5", ""..translate("Ali").." DNS (223.5.5.5)")
o:value("223.6.6.6", ""..translate("Ali").." DNS (223.6.6.6)")
o:value("119.29.29.29", ""..translate("Tencent").." DNS (119.29.29.29)")
o:value("1.1.1.1", translate("CloudFlare DNS(1.1.1.1)"))
o.default = "223.5.5.5"
o = s:option(Flag,"noweb",translate("Do not start web services"))
o.default = 0
m.apply_on_parse = true
m.on_after_apply = function(self,map)
luci.sys.exec("/etc/init.d/ddns-go restart")
end
return m

View File

@ -0,0 +1,22 @@
<%#
Copyright 2021-2022 sirpdboy Wich <sirpdboy@qq.com>
https://github.com/sirpdboy/luci-app-ddns-go
Licensed to the public under the Apache License 2.0.
-%>
<%+header%>
<div class="cbi-map">
<iframe id="ddnsgo" style="width: 100%; min-height: 780px; border: none; border-radius: .375rem;box-shadow: rgba(0, 0, 0, 0.75) 0px 0px 15px -5px;"><br/><em style=\"color:red\">
<p ><em><%:The DDNS-GO service is not running.%></em></p>
</iframe>
</div>
<script type="text/javascript">
document.getElementById("ddnsgo").src = window.location.protocol + "//" + window.location.hostname + ":<%=luci.model.uci.cursor():get_first("ddns-go", "basic", "port") %>";
document.getElementById("ddnsgo").height = document.documentElement.clientHeight;
window.onresize = function(){
document.getElementById("ddnsgo").height = document.documentElement.clientHeight;
}
</script>
<%+footer%>

View File

@ -0,0 +1,33 @@
<%
protocol="http://"
%>
<script type="text/javascript">//<![CDATA[
XHR.poll(3, '<%=url([[admin]], [[services]], [[ddnsgo_status]])%>', null,
function(x, data) {
var tb = document.getElementById('ddnsgo_status');
if (data && tb)
{
if (data.running)
{
var URL = "<%=protocol%>" + window.location.hostname +":<%=luci.model.uci.cursor():get_first("ddns-go", "basic", "port") %>";
tb.innerHTML = '<em><b style=\"color:green\"><%:The DDNS-GO service is running.%></b></em>';
tb.innerHTML +='<em> <br/><br/>' + ' <b > <%:Click the new page to open ddns-go%> </em>';
tb.innerHTML += "<input class=\"cbi-button cbi-button-reload \" type=\"button\" value=\" "+ URL+ "\" onclick=\"window.open('"+ URL+ "/')\"/>";
}
else
{
tb.innerHTML = '<em style=\"color:red\"><%:The DDNS-GO service is not running.%></em><br/>';
}
}
}
);
//]]></script>
<style>.mar-10 {margin-left: 50px; margin-right: 10px;}</style>
<fieldset class="cbi-section">
<legend><%:DDNS-GO Status%></legend>
<p id="ddnsgo_status">
<em><%:Collecting data...%></em>
</p>
</fieldset>

View File

@ -0,0 +1,51 @@
msgid ""
msgstr "Content-Type: text/plain; charset=UTF-8"
msgid "DDNS-GO"
msgstr "DDNS-GO"
msgid "DDNS-GO automatically obtains your public IPv4 or IPv6 address and resolves it to the corresponding domain name service."
msgstr "DDNS-GO自动获得你的公网 IPv4 或 IPv6 地址,并解析到对应的域名服务."
msgid "Base Setting"
msgstr "基本设置"
msgid "Running state"
msgstr "运行状态"
msgid "The DDNS-GO service is running."
msgstr "DDNS-GO服务已启动"
msgid "The DDNS-GO service is not running."
msgstr "DDNS-GO服务未启动"
msgid "DDNS-GO Status"
msgstr "DDNS-GO服务状态"
msgid "Click the new page to open ddns-go"
msgstr "点击打开ddns-go后台"
msgid "Set the DDNS-TO access port"
msgstr "设置访问端口"
msgid "</br>For specific usage, see:"
msgstr "</br>具体使用方法参见:"
msgid "Collecting data..."
msgstr "收集数据..."
msgid "update interval"
msgstr "更新间隔"
msgid "Skip verifying certificates"
msgstr "跳过验证证书"
msgid "Compare with service provider N times intervals"
msgstr "间隔N次与服务商比对"
msgid "Specify DNS resolution server"
msgstr "指定DNS解析服务器"
msgid "Do not start web services"
msgstr "不启动web服务"

View File

@ -0,0 +1,51 @@
msgid ""
msgstr "Content-Type: text/plain; charset=UTF-8"
msgid "DDNS-GO"
msgstr "DDNS-GO"
msgid "DDNS-GO automatically obtains your public IPv4 or IPv6 address and resolves it to the corresponding domain name service."
msgstr "DDNS-GO自动获得你的公网 IPv4 或 IPv6 地址,并解析到对应的域名服务."
msgid "Base Setting"
msgstr "基本设置"
msgid "Running state"
msgstr "运行状态"
msgid "The DDNS-GO service is running."
msgstr "DDNS-GO服务已启动"
msgid "The DDNS-GO service is not running."
msgstr "DDNS-GO服务未启动"
msgid "DDNS-GO Status"
msgstr "DDNS-GO服务状态"
msgid "Click the new page to open ddns-go"
msgstr "点击打开ddns-go后台"
msgid "Set the DDNS-TO access port"
msgstr "设置访问端口"
msgid "</br>For specific usage, see:"
msgstr "</br>具体使用方法参见:"
msgid "Collecting data..."
msgstr "收集数据..."
msgid "update interval"
msgstr "更新间隔"
msgid "Skip verifying certificates"
msgstr "跳过验证证书"
msgid "Compare with service provider N times intervals"
msgstr "间隔N次与服务商比对"
msgid "Specify DNS resolution server"
msgstr "指定DNS解析服务器"
msgid "Do not start web services"
msgstr "不启动web服务"

View File

@ -0,0 +1,5 @@
config basic
option enabled '0'
option logger '1'
option port 9876
option time 300

View File

@ -0,0 +1,27 @@
ipv4:
enable: true
gettype: url
url: https://myip4.ipip.net, https://ddns.oray.com/checkip, https://ip.3322.net
netinterface: br-lan
domains:
- ""
ipv6:
enable: false
gettype: url
url: https://myip6.ipip.net, https://speed.neu6.edu.cn/getIP.php, https://v6.ident.me
netinterface: ""
ipv6reg: ""
domains:
- ""
dns:
name: alidns
id: ""
secret: ""
user:
username: ""
password: ""
webhook:
webhookurl: ""
webhookrequestbody: ""
notallowwanaccess: true
ttl: ""

Binary file not shown.

View File

@ -0,0 +1,27 @@
ipv4:
enable: true
gettype: url
url: https://4.ipw.cn,https://myip4.ipip.net,https://ddns.oray.com/checkip,https://ip.3322.net
netinterface: br-lan
domains:
- ""
ipv6:
enable: false
gettype: url
url: https://6.ipw.cn, https://speed.neu6.edu.cn/getIP.php, https://v6.ident.me
netinterface: ""
ipv6reg: ""
domains:
- ""
dns:
name: alidns
id: ""
secret: ""
user:
username: ""
password: ""
webhook:
webhookurl: ""
webhookrequestbody: ""
notallowwanaccess: true
ttl: ""

View File

@ -0,0 +1,11 @@
{
"luci-app-ddns-go": {
"description": "Grant UCI access for luci-app-ddns-go",
"read": {
"uci": [ "ddns-go" ]
},
"write": {
"uci": [ "ddns-go" ]
}
}
}