package/rpcd: fix luci 403 after reload

This commit is contained in:
jjm2473 2022-03-16 17:08:09 +08:00
parent 9471fe5644
commit 74a4f87a69
2 changed files with 40 additions and 1 deletions

View File

@ -8,7 +8,7 @@
include $(TOPDIR)/rules.mk
PKG_NAME:=rpcd
PKG_RELEASE:=1
PKG_RELEASE:=2
PKG_SOURCE_PROTO:=git
PKG_SOURCE_URL=$(PROJECT_GIT)/project/rpcd.git

View File

@ -0,0 +1,39 @@
From 1fa35765ddf64976aa48950cac53d501fb71dda0 Mon Sep 17 00:00:00 2001
From: Jo-Philipp Wich <jo@mein.io>
Date: Tue, 13 Jul 2021 20:31:16 +0200
Subject: [PATCH] session: unload rpcd configuration before checking login
Currently, rpcd cached /etc/config/rpcd once on the first login and then
keeps checking login attempts and ACL settings against the in-memory
copy until the process is restarted.
This is not desirable as we would like added, modified or removed accounts
to be effective immediately. In order to achive this behaviour, ensure to
unload the currently loaded rpcd configuration before looking up the login
account section.
Ref: https://github.com/openwrt/luci/issues/5179
Signed-off-by: Jo-Philipp Wich <jo@mein.io>
---
session.c | 6 ++++++
1 file changed, 6 insertions(+)
diff --git a/session.c b/session.c
index 908e298..347cf4e 100644
--- a/session.c
+++ b/session.c
@@ -834,6 +834,12 @@ rpc_login_test_login(struct uci_context *uci,
struct uci_element *e;
struct uci_ptr ptr = { .package = "rpcd" };
+ if (!uci_lookup_ptr(uci, &ptr, NULL, false) && ptr.p) {
+ uci_unload(uci, ptr.p);
+ ptr.flags = 0;
+ ptr.p = NULL;
+ }
+
uci_load(uci, ptr.package, &p);
if (!p)
--
2.30.2