mirror of
https://github.com/Telecominfraproject/wlan-ap.git
synced 2025-11-03 20:07:59 +00:00
ucentral: various updates and fixes
* Gateway and client are now talking jsonrpc on the wire. * update the datamodel to the latest version. * add github workflow * add zero touch on-boarding Signed-off-by: John Crispin <john@phrozen.org>
This commit is contained in:
37
.github/workflows/build-dev.yml
vendored
Normal file
37
.github/workflows/build-dev.yml
vendored
Normal file
@@ -0,0 +1,37 @@
|
||||
name: Build OpenWrt with OpenSync
|
||||
|
||||
on:
|
||||
push:
|
||||
branches: [ uCentral-* ]
|
||||
|
||||
jobs:
|
||||
build:
|
||||
runs-on: ubuntu-latest
|
||||
strategy:
|
||||
fail-fast: false
|
||||
matrix:
|
||||
target: ['e8450', 'ea8300', 'wf194c', 'zyxel_gs1900-10hp', 'edgecore_ecs4100-12ph']
|
||||
|
||||
steps:
|
||||
- uses: actions/checkout@v2
|
||||
|
||||
- name: Build image for ${{ matrix.target }}
|
||||
id: build
|
||||
run: |
|
||||
git config --global user.email "you@example.com"
|
||||
git config --global user.name "Your Name"
|
||||
make -j TARGET=${{ matrix.target }}
|
||||
|
||||
- name: Package and upload image for ${{ matrix.target }}
|
||||
env:
|
||||
GH_BUILD_USERNAME: ${{ secrets.GH_BUILD_USERNAME }}
|
||||
GH_BUILD_PASSWORD: ${{ secrets.GH_BUILD_PASSWORD }}
|
||||
ARTIFACTORY_USERNAME: cicd-indoor-main
|
||||
ARTIFACTORY_PASSWORD: ${{ secrets.ARTIFACTORY_PASSWORD }}
|
||||
run: |
|
||||
BRANCH=$(git rev-parse --abbrev-ref HEAD)
|
||||
LOWERCASE_TARGET=`echo ${{ matrix.target }} | tr '[:upper:]' '[:lower:]'`
|
||||
TAR_NAME="$LOWERCASE_TARGET-$BRANCH.tar.gz"
|
||||
ls openwrt/bin/targets/
|
||||
tar cfz "$TAR_NAME" -C openwrt/bin/targets/ .
|
||||
curl -u $GH_BUILD_USERNAME:$GH_BUILD_USERNAME -T "$TAR_NAME" "https://tip.jfrog.io/artifactory/tip-wlan-ap-firmware/$LOWERCASE_TARGET/uCentral/dev/"$TAR_NAME""
|
||||
20
README.md
Normal file
20
README.md
Normal file
@@ -0,0 +1,20 @@
|
||||
# Setting up your build machine
|
||||
|
||||
Requires a recent linux installation. Older systems without python 3.7 will have trouble. See this link for details: https://openwrt.org/docs/guide-developer/quickstart-build-images
|
||||
|
||||
Install build packages: sudo apt install build-essential libncurses5-dev gawk git libssl-dev gettext zlib1g-dev swig unzip time rsync python3 python3-setuptools python3-yaml.
|
||||
|
||||
# Doing a native build on Linux
|
||||
First we need to clone and setup our tree. This will result in an openwrt/.
|
||||
```
|
||||
python3 setup.py --setup
|
||||
```
|
||||
Next we need to select the profile and base package selection. This setup will install the feeds, packages and generate the .config file.
|
||||
```
|
||||
cd openwrt
|
||||
./scripts/gen_config.py ea8300 ucentral-ap wifi
|
||||
```
|
||||
Finally we can build the tree.
|
||||
```
|
||||
make -j X V=s
|
||||
```
|
||||
15
build.sh
15
build.sh
@@ -7,7 +7,6 @@ TARGET=${1}
|
||||
|
||||
if [ -z "$1" ]; then
|
||||
echo "Error: please specify TARGET"
|
||||
echo "One of: WF194C, ZYXEL_GS1900-10HP"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
@@ -19,20 +18,8 @@ else
|
||||
echo "### OpenWrt repo already setup"
|
||||
fi
|
||||
|
||||
case "${TARGET}" in
|
||||
WF194C)
|
||||
TARGET=wf194c
|
||||
;;
|
||||
ZYXEL_GS1900-10HP)
|
||||
TARGET=zyxel_gs1900-10hp
|
||||
;;
|
||||
*)
|
||||
echo "${TARGET} is unknown"
|
||||
exit 1
|
||||
;;
|
||||
esac
|
||||
cd ${BUILD_DIR}
|
||||
./scripts/gen_config.py ${TARGET} ucentral-ap || exit 1
|
||||
./scripts/gen_config.py ${TARGET} || exit 1
|
||||
cd -
|
||||
|
||||
echo "### Building image ..."
|
||||
|
||||
25
feeds/tip/firstcontact/Makefile
Normal file
25
feeds/tip/firstcontact/Makefile
Normal file
@@ -0,0 +1,25 @@
|
||||
include $(TOPDIR)/rules.mk
|
||||
|
||||
PKG_NAME:=firstcontact
|
||||
PKG_RELEASE:=1
|
||||
|
||||
PKG_LICENSE:=BSD-3-Clause
|
||||
PKG_MAINTAINER:=John Crispin <john@phrozen.org>
|
||||
|
||||
include $(INCLUDE_DIR)/package.mk
|
||||
include $(INCLUDE_DIR)/cmake.mk
|
||||
|
||||
define Package/firstcontact
|
||||
SECTION:=ucentral
|
||||
CATEGORY:=uCentral
|
||||
TITLE:=TIP DigiCert firstcontact
|
||||
DEPENDS:=+libubox +libcurl +libopenssl
|
||||
endef
|
||||
|
||||
define Package/firstcontact/install
|
||||
$(INSTALL_DIR) $(1)/usr/sbin
|
||||
$(INSTALL_BIN) $(PKG_BUILD_DIR)/firstcontact $(1)/usr/sbin/
|
||||
$(CP) ./files/* $(1)
|
||||
endef
|
||||
|
||||
$(eval $(call BuildPackage,firstcontact))
|
||||
13
feeds/tip/firstcontact/files/etc/init.d/firstcontact
Executable file
13
feeds/tip/firstcontact/files/etc/init.d/firstcontact
Executable file
@@ -0,0 +1,13 @@
|
||||
#!/bin/sh /etc/rc.common
|
||||
|
||||
START=99
|
||||
|
||||
USE_PROCD=1
|
||||
PROG=/usr/bin/ucode
|
||||
|
||||
start_service() {
|
||||
procd_open_instance
|
||||
procd_set_param command "$PROG" -m uci -m fs -i /usr/share/ucentral/firstcontact.uc
|
||||
procd_set_param respawn 1 60 0
|
||||
procd_close_instance
|
||||
}
|
||||
2
feeds/tip/firstcontact/files/etc/uci-defaults/zzz-firstcontact
Executable file
2
feeds/tip/firstcontact/files/etc/uci-defaults/zzz-firstcontact
Executable file
@@ -0,0 +1,2 @@
|
||||
#!/bin/sh
|
||||
/etc/init.d/ucentral disable
|
||||
@@ -0,0 +1,57 @@
|
||||
{%
|
||||
let devid;
|
||||
let fd = fs.open("/etc/ucentral/dev-id", "r");
|
||||
if (!fd) {
|
||||
warn("firstcontact: failed to find device id");
|
||||
exit(1);
|
||||
}
|
||||
devid = fd.read("all");
|
||||
fd.close();
|
||||
|
||||
ret = system(sprintf('/usr/sbin/firstcontact -i %s', devid));
|
||||
|
||||
if (ret) {
|
||||
warn("firstcontact failed to contact redirector\n");
|
||||
exit(1);
|
||||
}
|
||||
|
||||
let redirector = { };
|
||||
let fd = fs.open("/etc/ucentral/redirector.json", "r");
|
||||
if (fd) {
|
||||
let data = fd.read("all");
|
||||
fd.close();
|
||||
|
||||
try {
|
||||
redirector = json(data);
|
||||
}
|
||||
catch (e) {
|
||||
warn("firstcontact: Unable to parse JSON data in %s: %s", path, e);
|
||||
|
||||
exit(1);
|
||||
}
|
||||
}
|
||||
let config = {};
|
||||
|
||||
for (let r in redirector.fields)
|
||||
if (r.name && r.value)
|
||||
config[r.name] = r.value;
|
||||
if (!config.Redirector) {
|
||||
warn("Reply is missing Redirector field\n");
|
||||
|
||||
exit(1);
|
||||
}
|
||||
|
||||
let cursor = uci.cursor("/etc/config-shadow/");
|
||||
cursor.load("ucentral");
|
||||
cursor.set("ucentral", "config", "server", config.Redirector);
|
||||
cursor.set("ucentral", "config", "serial", devid);
|
||||
cursor.commit();
|
||||
|
||||
warn("firstcontact: managed to look up redirector\n");
|
||||
|
||||
system("/etc/init.d/ucentral enable");
|
||||
system("/etc/init.d/ucentral restart");
|
||||
|
||||
system("/etc/init.d/firstcontact disable");
|
||||
system("/etc/init.d/firstcontact stop");
|
||||
%}
|
||||
13
feeds/tip/firstcontact/src/CMakeLists.txt
Normal file
13
feeds/tip/firstcontact/src/CMakeLists.txt
Normal file
@@ -0,0 +1,13 @@
|
||||
cmake_minimum_required(VERSION 2.6)
|
||||
|
||||
PROJECT(firstcontact C)
|
||||
INCLUDE(GNUInstallDirs)
|
||||
ADD_DEFINITIONS(-Os -ggdb -Wall -Werror --std=gnu99 -Wmissing-declarations)
|
||||
|
||||
SET(CMAKE_SHARED_LIBRARY_LINK_C_FLAGS "")
|
||||
|
||||
ADD_EXECUTABLE(firstcontact firstcontact.c)
|
||||
TARGET_LINK_LIBRARIES(firstcontact curl crypto ssl ubox)
|
||||
INSTALL(TARGETS firstcontact
|
||||
RUNTIME DESTINATION ${CMAKE_INSTALL_SBINDIR}
|
||||
)
|
||||
100
feeds/tip/firstcontact/src/firstcontact.c
Normal file
100
feeds/tip/firstcontact/src/firstcontact.c
Normal file
@@ -0,0 +1,100 @@
|
||||
#define _GNU_SOURCE
|
||||
#include <stdio.h>
|
||||
#include <getopt.h>
|
||||
|
||||
#include <curl/curl.h>
|
||||
|
||||
#include <libubox/ulog.h>
|
||||
|
||||
static const char *file_cert = "/etc/ucentral/cert.pem";
|
||||
static const char *file_key = "/etc/ucentral/cert.key";
|
||||
static const char *file_json = "/etc/ucentral/redirector.json";
|
||||
static const char *file_dbg = "/tmp/firstcontact.hdr";
|
||||
|
||||
int main(int argc, char **argv)
|
||||
{
|
||||
FILE *fp_json;
|
||||
FILE *fp_dbg;
|
||||
CURLcode res;
|
||||
CURL *curl;
|
||||
char *devid = NULL;
|
||||
char *url;
|
||||
|
||||
while (1) {
|
||||
int option = getopt(argc, argv, "k:c:o:hi:");
|
||||
|
||||
if (option == -1)
|
||||
break;
|
||||
|
||||
switch (option) {
|
||||
case 'k':
|
||||
file_key = optarg;
|
||||
break;
|
||||
case 'c':
|
||||
file_cert = optarg;
|
||||
break;
|
||||
case 'o':
|
||||
file_json = optarg;
|
||||
break;
|
||||
case 'i':
|
||||
devid = optarg;
|
||||
break;
|
||||
default:
|
||||
case 'h':
|
||||
printf("Usage: firstcontact OPTIONS\n"
|
||||
" -k <keyfile>\n"
|
||||
" -c <certfile>\n"
|
||||
" -o <outfile>\n"
|
||||
" -i <devid>\n");
|
||||
return -1;
|
||||
}
|
||||
}
|
||||
|
||||
if (!devid) {
|
||||
fprintf(stderr, "missing devid\n");
|
||||
return -1;
|
||||
}
|
||||
|
||||
ulog_open(ULOG_SYSLOG | ULOG_STDIO, LOG_DAEMON, "firstcontact");
|
||||
ULOG_INFO("attempting first contact\n");
|
||||
|
||||
fp_dbg = fopen(file_dbg, "wb");
|
||||
fp_json = fopen(file_json, "wb");
|
||||
if (!fp_json) {
|
||||
ULOG_ERR("failed to create %s\n", file_json);
|
||||
return -1;
|
||||
}
|
||||
|
||||
curl_global_init(CURL_GLOBAL_DEFAULT);
|
||||
curl = curl_easy_init();
|
||||
if (!curl) {
|
||||
ULOG_ERR("curl_easy_init failed\n");
|
||||
return -1;
|
||||
}
|
||||
|
||||
if (asprintf(&url, "https://clientauth.demo.one.digicert.com/iot/api/v2/device/%s", devid) < 0) {
|
||||
ULOG_ERR("failed to assemble url\n");
|
||||
return -1;
|
||||
}
|
||||
|
||||
curl_easy_setopt(curl, CURLOPT_URL, url);
|
||||
curl_easy_setopt(curl, CURLOPT_WRITEDATA, fp_json);
|
||||
curl_easy_setopt(curl, CURLOPT_HEADERDATA, fp_dbg);
|
||||
curl_easy_setopt(curl, CURLOPT_SSLCERTTYPE, "PEM");
|
||||
curl_easy_setopt(curl, CURLOPT_SSLCERT, file_cert);
|
||||
curl_easy_setopt(curl, CURLOPT_SSLKEYTYPE, "PEM");
|
||||
curl_easy_setopt(curl, CURLOPT_SSLKEY, file_key);
|
||||
curl_easy_setopt(curl, CURLOPT_SSL_VERIFYPEER, 1L);
|
||||
|
||||
res = curl_easy_perform(curl);
|
||||
if (res != CURLE_OK)
|
||||
ULOG_ERR("curl_easy_perform() failed: %s\n", curl_easy_strerror(res));
|
||||
else
|
||||
ULOG_INFO("downloaded first contact data\n");
|
||||
curl_easy_cleanup(curl);
|
||||
curl_global_cleanup();
|
||||
|
||||
ulog_close();
|
||||
|
||||
return (res != CURLE_OK);
|
||||
}
|
||||
@@ -14,7 +14,9 @@ validate_rtty_section() {
|
||||
'port:port' \
|
||||
'ssl:bool:0' \
|
||||
'token:maxlength(32)' \
|
||||
'verbose:bool:0'
|
||||
'verbose:bool:0' \
|
||||
'enable:bool:0' \
|
||||
'interval:uinteger:0'
|
||||
}
|
||||
|
||||
start_rtty() {
|
||||
@@ -27,6 +29,8 @@ start_rtty() {
|
||||
return 1
|
||||
}
|
||||
|
||||
[ $enable -eq 0 -a $interval -eq 0 ] && return 1
|
||||
|
||||
[ -n "$interface" ] && network_get_device ifname "$interface"
|
||||
|
||||
[ -z "$ifname" -a -z "$id" ] && {
|
||||
@@ -50,7 +54,8 @@ start_rtty() {
|
||||
[ "$ssl" = "1" ] && procd_append_param command -s
|
||||
[ -n "$token" ] && procd_append_param command -t "$token"
|
||||
[ "$verbose" = "1" ] && procd_append_param command -v
|
||||
procd_set_param respawn
|
||||
[ "$interval" -eq "0" ] || procd_append_param command -e $interval
|
||||
[ "$interval" -eq "0" ] && procd_set_param respawn
|
||||
procd_close_instance
|
||||
}
|
||||
|
||||
|
||||
68
feeds/ucentral/rtty/patches/100-max_timeout.patch
Normal file
68
feeds/ucentral/rtty/patches/100-max_timeout.patch
Normal file
@@ -0,0 +1,68 @@
|
||||
Index: rtty-7.1.4/src/main.c
|
||||
===================================================================
|
||||
--- rtty-7.1.4.orig/src/main.c
|
||||
+++ rtty-7.1.4/src/main.c
|
||||
@@ -37,6 +37,8 @@ enum {
|
||||
LONG_OPT_HELP = 1
|
||||
};
|
||||
|
||||
+static int force_exit;
|
||||
+
|
||||
static void signal_cb(struct ev_loop *loop, ev_signal *w, int revents)
|
||||
{
|
||||
if (w->signum == SIGINT) {
|
||||
@@ -53,6 +55,7 @@ static struct option long_options[] = {
|
||||
{"token", required_argument, NULL, 't'},
|
||||
{"verbose", no_argument, NULL, 'v'},
|
||||
{"version", no_argument, NULL, 'V'},
|
||||
+ {"exit", required_argument, NULL, 'V'},
|
||||
{"help", no_argument, NULL, LONG_OPT_HELP},
|
||||
{0, 0, 0, 0}
|
||||
};
|
||||
@@ -79,10 +82,16 @@ static void usage(const char *prog)
|
||||
exit(1);
|
||||
}
|
||||
|
||||
+static void timeout_cb(EV_P_ ev_timer *w, int revents)
|
||||
+{
|
||||
+ exit(1);
|
||||
+}
|
||||
+
|
||||
int main(int argc, char **argv)
|
||||
{
|
||||
struct ev_loop *loop = EV_DEFAULT;
|
||||
struct ev_signal signal_watcher;
|
||||
+ struct ev_timer timeout_watcher;
|
||||
bool background = false;
|
||||
bool verbose = false;
|
||||
struct rtty rtty = {
|
||||
@@ -95,7 +104,7 @@ int main(int argc, char **argv)
|
||||
int c;
|
||||
|
||||
while (true) {
|
||||
- c = getopt_long(argc, argv, "I:h:p:d:asDt:f:RS:vV", long_options, &option_index);
|
||||
+ c = getopt_long(argc, argv, "I:h:p:d:asDt:f:RS:vVe:", long_options, &option_index);
|
||||
if (c == -1)
|
||||
break;
|
||||
|
||||
@@ -146,6 +155,9 @@ int main(int argc, char **argv)
|
||||
case LONG_OPT_HELP:
|
||||
usage(argv[0]);
|
||||
break;
|
||||
+ case 'e':
|
||||
+ force_exit = atoi(optarg);
|
||||
+ break;
|
||||
default: /* '?' */
|
||||
usage(argv[0]);
|
||||
break;
|
||||
@@ -167,6 +179,10 @@ int main(int argc, char **argv)
|
||||
|
||||
ev_signal_init(&signal_watcher, signal_cb, SIGINT);
|
||||
ev_signal_start(loop, &signal_watcher);
|
||||
+ if (force_exit) {
|
||||
+ ev_timer_init(&timeout_watcher, timeout_cb, force_exit, 0.);
|
||||
+ ev_timer_start(loop, &timeout_watcher);
|
||||
+ }
|
||||
|
||||
if (rtty_start(&rtty) < 0)
|
||||
return -1;
|
||||
@@ -1,65 +0,0 @@
|
||||
Index: rtty-7.1.4/src/rtty.c
|
||||
===================================================================
|
||||
--- rtty-7.1.4.orig/src/rtty.c
|
||||
+++ rtty-7.1.4/src/rtty.c
|
||||
@@ -308,7 +308,8 @@ static void parse_msg(struct rtty *rtty)
|
||||
|
||||
case MSG_TYPE_LOGOUT:
|
||||
tty_logout(rtty, buffer_pull_u8(rb));
|
||||
- break;
|
||||
+ exit(1);
|
||||
+ break;
|
||||
|
||||
case MSG_TYPE_TERMDATA:
|
||||
write_data_to_tty(rtty, buffer_pull_u8(rb), msglen - 1);
|
||||
@@ -429,12 +430,12 @@ static void rtty_timer_cb(struct ev_loop
|
||||
return;
|
||||
}
|
||||
|
||||
- if (now - rtty->active > RTTY_HEARTBEAT_INTEVAL * 3 / 2) {
|
||||
+/* if (now - rtty->active > RTTY_HEARTBEAT_INTEVAL * 3 / 2) {
|
||||
log_err("Inactive too long time\n");
|
||||
rtty_exit(rtty);
|
||||
return;
|
||||
}
|
||||
-
|
||||
+*/
|
||||
if (now - rtty->last_heartbeat > RTTY_HEARTBEAT_INTEVAL - 1) {
|
||||
rtty->last_heartbeat = now;
|
||||
rtty_send_msg(rtty, MSG_TYPE_HEARTBEAT, NULL, 0);
|
||||
Index: rtty-7.1.4/src/main.c
|
||||
===================================================================
|
||||
--- rtty-7.1.4.orig/src/main.c
|
||||
+++ rtty-7.1.4/src/main.c
|
||||
@@ -95,7 +95,7 @@ int main(int argc, char **argv)
|
||||
int c;
|
||||
|
||||
while (true) {
|
||||
- c = getopt_long(argc, argv, "I:h:p:d:asDt:f:RS:vV", long_options, &option_index);
|
||||
+ c = getopt_long(argc, argv, "I:h:p:d:asDt:f:RS:vVT:", long_options, &option_index);
|
||||
if (c == -1)
|
||||
break;
|
||||
|
||||
@@ -109,6 +109,9 @@ int main(int argc, char **argv)
|
||||
case 'p':
|
||||
rtty.port = atoi(optarg);
|
||||
break;
|
||||
+ case 'T':
|
||||
+ rtty.timeout = atoi(optarg);
|
||||
+ break;
|
||||
case 'd':
|
||||
if (strlen(optarg) > 126) {
|
||||
log_err("Description too long\n");
|
||||
Index: rtty-7.1.4/src/rtty.h
|
||||
===================================================================
|
||||
--- rtty-7.1.4.orig/src/rtty.h
|
||||
+++ rtty-7.1.4/src/rtty.h
|
||||
@@ -79,6 +79,8 @@ struct rtty {
|
||||
void *ssl; /* Context wrap of openssl, wolfssl and mbedtls */
|
||||
struct tty *ttys[RTTY_MAX_TTY];
|
||||
struct file_context file_context;
|
||||
+ int timeout;
|
||||
+ struct ev_timer kill_timer;
|
||||
};
|
||||
|
||||
int rtty_start(struct rtty *rtty);
|
||||
@@ -6,7 +6,7 @@ PKG_RELEASE:=1
|
||||
PKG_SOURCE_URL=https://github.com/blogic/ucentral-client.git
|
||||
PKG_SOURCE_PROTO:=git
|
||||
PKG_SOURCE_DATE:=2021-02-15
|
||||
PKG_SOURCE_VERSION:=cf6333e0934f1b83fdb5cc8368cea2421c97d90b
|
||||
PKG_SOURCE_VERSION:=6194debc0995550c5169972e150506617a2df970
|
||||
|
||||
PKG_LICENSE:=BSD-3-Clause
|
||||
PKG_MAINTAINER:=John Crispin <john@phrozen.org>
|
||||
|
||||
1
feeds/ucentral/ucentral-client/files/etc/init.d/ucentral
Normal file → Executable file
1
feeds/ucentral/ucentral-client/files/etc/init.d/ucentral
Normal file → Executable file
@@ -15,6 +15,7 @@ start_service() {
|
||||
}
|
||||
|
||||
. /lib/functions.sh
|
||||
cp /etc/config-shadow/ucentral /etc/config/
|
||||
config_load 'ucentral'
|
||||
config_get serial 'config' 'serial'
|
||||
config_get server 'config' 'server'
|
||||
|
||||
0
feeds/ucentral/ucentral-client/files/etc/init.d/ustats
Normal file → Executable file
0
feeds/ucentral/ucentral-client/files/etc/init.d/ustats
Normal file → Executable file
2
feeds/ucentral/ucentral-client/files/etc/uci-defaults/zzz-ucentral
Normal file → Executable file
2
feeds/ucentral/ucentral-client/files/etc/uci-defaults/zzz-ucentral
Normal file → Executable file
@@ -7,6 +7,8 @@ uci set system.@system[-1].hostname=$hname
|
||||
uci set ucentral.config.serial=$hname
|
||||
uci set network.wan6.ifname=@wan
|
||||
uci set network.wan.type=bridge
|
||||
uci rename opennds.@opennds[-1]=opennds
|
||||
uci set opennds.opennds.enabled=0
|
||||
uci commit
|
||||
|
||||
cp -r /etc/config/ /etc/config-shadow/
|
||||
|
||||
0
feeds/ucentral/ucentral-client/files/usr/libexec/ucentral/ucentral_factory.sh
Normal file → Executable file
0
feeds/ucentral/ucentral-client/files/usr/libexec/ucentral/ucentral_factory.sh
Normal file → Executable file
@@ -1,7 +1,10 @@
|
||||
#!/bin/sh
|
||||
|
||||
timeout=$1
|
||||
|
||||
. /etc/diag.sh
|
||||
set_state upgrade
|
||||
sleep 60
|
||||
sleep $1
|
||||
status_led_off
|
||||
set_state done
|
||||
exit 0
|
||||
|
||||
0
feeds/ucentral/ucentral-client/files/usr/libexec/ucentral/ucentral_sysupgrade.sh
Normal file → Executable file
0
feeds/ucentral/ucentral-client/files/usr/libexec/ucentral/ucentral_sysupgrade.sh
Normal file → Executable file
@@ -1 +0,0 @@
|
||||
/ucentral/ucentral-client/.git
|
||||
@@ -6,7 +6,7 @@ PKG_RELEASE:=1
|
||||
PKG_SOURCE_URL=https://github.com/blogic/ucentral-schema.git
|
||||
PKG_SOURCE_PROTO:=git
|
||||
PKG_SOURCE_DATE:=2021-02-15
|
||||
PKG_SOURCE_VERSION:=16d19ac0a02b29828c92479fdba69f0d7a96cb03
|
||||
PKG_SOURCE_VERSION:=7fb6336b47ebc06a9d990226a028cdf58b7110bd
|
||||
|
||||
PKG_MAINTAINER:=John Crispin <john@phrozen.org>
|
||||
PKG_LICENSE:=BSD-3-Clause
|
||||
|
||||
@@ -23,7 +23,7 @@ endef
|
||||
|
||||
define Package/ucentral-tools/install
|
||||
$(INSTALL_DIR) $(1)/usr/sbin
|
||||
$(INSTALL_BIN) $(PKG_BUILD_DIR)/{dhcpdiscover,dnsprobe,firstcontact,radiusprobe,ip-collide} $(1)/usr/sbin/
|
||||
$(INSTALL_BIN) $(PKG_BUILD_DIR)/{dhcpdiscover,dnsprobe,radiusprobe,ip-collide} $(1)/usr/sbin/
|
||||
endef
|
||||
|
||||
$(eval $(call BuildPackage,ucentral-tools))
|
||||
|
||||
@@ -1 +0,0 @@
|
||||
/ucentral/ucentral-wifi/.git
|
||||
@@ -5,8 +5,8 @@ PKG_RELEASE:=1
|
||||
|
||||
PKG_SOURCE_PROTO:=git
|
||||
PKG_SOURCE_URL=git@github.com:stephb9959/ucentralgw.git
|
||||
PKG_SOURCE_DATE:=2021-03-22
|
||||
PKG_SOURCE_VERSION:=d4ae407d8b2fabc6ea4ba555061adf3e11025188
|
||||
PKG_SOURCE_DATE:=2021-03-28
|
||||
PKG_SOURCE_VERSION:=f45dac773971b7ad6f1e0687f0e60b0d9c61c02d
|
||||
#PKG_MIRROR_HASH:=3f6569a5e63fdfd032976ac0f79d736d3935101ac1b97fb370514b013c5e6bb6
|
||||
CMAKE_INSTALL:=1
|
||||
|
||||
|
||||
@@ -1 +0,0 @@
|
||||
/projects/udevmand/.git/
|
||||
@@ -0,0 +1,38 @@
|
||||
From b4b632ac77e22d2522c3cb2cccf24b1dfae379f4 Mon Sep 17 00:00:00 2001
|
||||
From: John Crispin <john@phrozen.org>
|
||||
Date: Mon, 29 Mar 2021 16:05:14 +0200
|
||||
Subject: [PATCH] target: enable vlan-filtering on various targets
|
||||
|
||||
Signed-off-by: John Crispin <john@phrozen.org>
|
||||
---
|
||||
target/linux/ipq40xx/base-files/etc/board.d/02_network | 1 +
|
||||
target/linux/mediatek/mt7622/base-files/etc/board.d/02_network | 1 +
|
||||
2 files changed, 2 insertions(+)
|
||||
|
||||
diff --git a/target/linux/ipq40xx/base-files/etc/board.d/02_network b/target/linux/ipq40xx/base-files/etc/board.d/02_network
|
||||
index fe21dc8035..8b7364ff33 100755
|
||||
--- a/target/linux/ipq40xx/base-files/etc/board.d/02_network
|
||||
+++ b/target/linux/ipq40xx/base-files/etc/board.d/02_network
|
||||
@@ -179,6 +179,7 @@ ipq40xx_setup_macs()
|
||||
|
||||
board_config_update
|
||||
board=$(board_name)
|
||||
+ucidef_set_bridge_device bridge
|
||||
ipq40xx_setup_interfaces $board
|
||||
ipq40xx_setup_macs $board
|
||||
board_config_flush
|
||||
diff --git a/target/linux/mediatek/mt7622/base-files/etc/board.d/02_network b/target/linux/mediatek/mt7622/base-files/etc/board.d/02_network
|
||||
index 82dba44587..d8a90e507e 100755
|
||||
--- a/target/linux/mediatek/mt7622/base-files/etc/board.d/02_network
|
||||
+++ b/target/linux/mediatek/mt7622/base-files/etc/board.d/02_network
|
||||
@@ -43,6 +43,7 @@ mediatek_setup_macs()
|
||||
|
||||
board_config_update
|
||||
board=$(board_name)
|
||||
+ucidef_set_bridge_device bridge
|
||||
mediatek_setup_interfaces $board
|
||||
mediatek_setup_macs $board
|
||||
board_config_flush
|
||||
--
|
||||
2.25.1
|
||||
|
||||
@@ -3,5 +3,7 @@ profile: linksys_e8450_ubi
|
||||
target: mediatek
|
||||
subtarget: mt7622
|
||||
description: Build image for the Linksys E8450
|
||||
include:
|
||||
- ucentral-ap
|
||||
diffconfig: |
|
||||
CONFIG_TESTING_KERNEL=y
|
||||
|
||||
@@ -3,6 +3,8 @@ profile: linksys_ea8300
|
||||
target: ipq40xx
|
||||
subtarget: generic
|
||||
description: Build image for the Linksys ea8300
|
||||
include:
|
||||
- ucentral-ap
|
||||
packages:
|
||||
- ath10k-firmware-qca4019-ct-htt
|
||||
- ath10k-firmware-qca9888-ct-htt
|
||||
|
||||
@@ -8,3 +8,4 @@ feeds:
|
||||
path: ../../feeds/ipq807x
|
||||
include:
|
||||
- wifi-ax
|
||||
- ucentral-ap
|
||||
|
||||
@@ -8,3 +8,4 @@ feeds:
|
||||
path: ../../feeds/ipq807x
|
||||
include:
|
||||
- wifi-ax
|
||||
- ucentral-ap
|
||||
|
||||
@@ -5,3 +5,4 @@ subtarget: generic
|
||||
description: Build image for the EdgeCore ECS4100-12ph
|
||||
include:
|
||||
- realtek
|
||||
- ucentral-switch
|
||||
|
||||
@@ -3,6 +3,8 @@ description: Add the ucentral dependencies
|
||||
feeds:
|
||||
- name: ucentral
|
||||
path: ../../feeds/ucentral
|
||||
- name: tip
|
||||
path: ../../feeds/tip
|
||||
|
||||
packages:
|
||||
- kmod-batman-adv
|
||||
@@ -16,10 +18,10 @@ packages:
|
||||
- wpad-mesh-openssl
|
||||
- ip-bridge
|
||||
- dnsmasq-full
|
||||
- firstcontact
|
||||
- gre
|
||||
- ucentral-client
|
||||
- ucentral-jsonschema
|
||||
- ucentral-mqtt
|
||||
- ucentral-schema
|
||||
- ucentral-wifi
|
||||
- ucentral-defaults
|
||||
@@ -28,8 +30,10 @@ packages:
|
||||
- uledd
|
||||
- usteer
|
||||
- udevmand
|
||||
- opennds
|
||||
- rtty-openssl
|
||||
- sqm-scripts
|
||||
- tmate
|
||||
- tcpdump
|
||||
- vxlan
|
||||
diffconfig: |
|
||||
|
||||
@@ -8,3 +8,4 @@ feeds:
|
||||
path: ../../feeds/ipq807x
|
||||
include:
|
||||
- wifi-ax
|
||||
- ucentral-ap
|
||||
|
||||
@@ -8,6 +8,7 @@ feeds:
|
||||
path: ../../feeds/ipq807x
|
||||
include:
|
||||
- wifi-ax
|
||||
- ucentral-ap
|
||||
packages:
|
||||
- kmod-usb-serial
|
||||
- kmod-usb-serial-pl2303
|
||||
|
||||
@@ -5,3 +5,4 @@ subtarget: generic
|
||||
description: Build image for the Zyxel GS1900-10HP
|
||||
include:
|
||||
- realtek
|
||||
- ucentral-switch
|
||||
|
||||
Reference in New Issue
Block a user