From patchwork Fri Feb 16 10:22:58 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: =?utf-8?b?UmFmYcWCIE1pxYJlY2tp?= X-Patchwork-Id: 1899933 X-Patchwork-Delegate: zajec5@gmail.com Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@legolas.ozlabs.org Authentication-Results: legolas.ozlabs.org; dkim=pass (2048-bit key; secure) header.d=lists.infradead.org header.i=@lists.infradead.org header.a=rsa-sha256 header.s=bombadil.20210309 header.b=V+I8uzpv; dkim=fail reason="signature verification failed" (2048-bit key; unprotected) header.d=gmail.com header.i=@gmail.com header.a=rsa-sha256 header.s=20230601 header.b=jgZK1dgA; dkim-atps=neutral Authentication-Results: legolas.ozlabs.org; spf=none (no SPF record) smtp.mailfrom=lists.openwrt.org (client-ip=2607:7c80:54:3::133; helo=bombadil.infradead.org; envelope-from=openwrt-devel-bounces+incoming=patchwork.ozlabs.org@lists.openwrt.org; receiver=patchwork.ozlabs.org) Received: from bombadil.infradead.org (bombadil.infradead.org [IPv6:2607:7c80:54:3::133]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature ECDSA (secp384r1) server-digest SHA384) (No client certificate requested) by legolas.ozlabs.org (Postfix) with ESMTPS id 4Tbp2V08KYz23hy for ; Fri, 16 Feb 2024 21:24:33 +1100 (AEDT) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20210309; h=Sender: Content-Transfer-Encoding:Content-Type:List-Subscribe:List-Help:List-Post: List-Archive:List-Unsubscribe:List-Id:MIME-Version:Message-Id:Date:Subject:Cc :To:From:Reply-To:Content-ID:Content-Description:Resent-Date:Resent-From: Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID:In-Reply-To:References: List-Owner; bh=UayaoX9674fOHwU23EO9QDaE3ULsWs2hPe7uDeSwaGA=; b=V+I8uzpvI8xDQu r2HZdL4c3vSa67HHmcP/ggpPuyI5BFkfuSrmL/g5fyibhzoAZU9baOk+0HSzfC4EFvPWFHoUaf3rI wMgSQKftXiHLjs3BqGQPw1xPmBVs5cLSLh+R7PzRa1bJfsursWdlKK61EKP19ySaOUWqIrdcxDAXx OkdO1cyveNEXy/PRTSjfLVJDMWJAYHLnWn1oDVzNc6QVsVcg7dr2cHBFjmVRkMjqkP2rG3NuwX4g0 a1aUfCnjGRc2nAbKfS7CRthzMni+E31NKCgzSjd10waXV3F4pN9+es9HzCOV3IXJZsqLeVGIDjie8 alO75PCo6JXNedVGfLTQ==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.97.1 #2 (Red Hat Linux)) id 1ravNA-00000001wes-3Qbf; Fri, 16 Feb 2024 10:23:12 +0000 Received: from mail-ej1-x636.google.com ([2a00:1450:4864:20::636]) by bombadil.infradead.org with esmtps (Exim 4.97.1 #2 (Red Hat Linux)) id 1ravN7-00000001wd8-3oCU for openwrt-devel@lists.openwrt.org; Fri, 16 Feb 2024 10:23:11 +0000 Received: by mail-ej1-x636.google.com with SMTP id a640c23a62f3a-a2a17f3217aso235820166b.2 for ; Fri, 16 Feb 2024 02:23:09 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1708078988; x=1708683788; darn=lists.openwrt.org; h=content-transfer-encoding:mime-version:message-id:date:subject:cc :to:from:from:to:cc:subject:date:message-id:reply-to; bh=n7C1UNjxvc1sL60SlA5mF2cD+Bzs/K1j4ED5RsqjZ1M=; b=jgZK1dgAcFllZtiWCNGxlPg8MbPZss59dusTRzBTHOBU4lcHDqHVGpsU7TPkyzy65+ JtcpNcGp1whmAzVRr2LmViEei9NHsdfL8+L5NG+GEKp1M5IF9BQod3088nK1SLTMMFPK +LMmYe2wiFzalYuxVWbwy/1GYLat5mX8+rFCUHuZR0lRkmLn0rfI4zIXxUOVO6ggMJft 14qcIRJ/PY7TpKkOYTm20jpls2j2RF2fpFunwNuMbKs37BejfYBjm2rVyUFcVUoM7vwa o/JxWHLJHRKxCkuO1A0YBHQWObQ0ehtrjZQlyCgbFXG5pmhN6vCo7dzl12OG1710679d HLxg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1708078988; x=1708683788; h=content-transfer-encoding:mime-version:message-id:date:subject:cc :to:from:x-gm-message-state:from:to:cc:subject:date:message-id :reply-to; bh=n7C1UNjxvc1sL60SlA5mF2cD+Bzs/K1j4ED5RsqjZ1M=; b=NqcktVk7rxuix70jbJeoX8/q2ZehDwRO95HDPZ3uMmQKEW7QvxxHHc32Rrpsk1iwmG ZCTxHXFIwNdvf+ix/smyxc4bLP17w5aJNf0AqYaL0qtKm5x4xCJ6q47cA+Pn33VvQyu4 cVqxEGfdLgwGRFCGLShIUB1kViY5W2LN6JaP1TfgwDG1ofoChuoStTWIycUpoFlomqsv SxPHVn9RAtr1RYgmxKkRwXV6Ekb8ovVLkfgU49T+MaRaNnixD+j4XwTxDNhSPfLUW+gG m8bEoqm4gS2YcuhB5lZesZaikg1o59Iq9EFj63gekjCtUPtZaXrZuraggIQOgn8PuCsy 1ztg== X-Gm-Message-State: AOJu0Yy74H92H346W6TdVbFTSWUYa4IBBK+U3kYnjHpHnLPSSyuuQg9X OVenLOHBM5kry8iynjz8M5rddnU09bGakCwpcbnfvNaq1R4oO9BFBO8A3VGe X-Google-Smtp-Source: AGHT+IG9Ppzwbb8vzY9CuwE+L4EBIyLa5EsJg1iskteLDd/JHnbTaFkoBeoFP0bhVrlosTKwFsD4TQ== X-Received: by 2002:a17:906:3709:b0:a3d:f7cb:a409 with SMTP id d9-20020a170906370900b00a3df7cba409mr171484ejc.73.1708078987580; Fri, 16 Feb 2024 02:23:07 -0800 (PST) Received: from localhost.lan (031011218106.poznan.vectranet.pl. [31.11.218.106]) by smtp.gmail.com with ESMTPSA id t18-20020a1709063e5200b00a3d125b9c0asm1402301eji.81.2024.02.16.02.23.06 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 16 Feb 2024 02:23:07 -0800 (PST) From: =?utf-8?b?UmFmYcWCIE1pxYJlY2tp?= To: openwrt-devel@lists.openwrt.org Cc: =?utf-8?b?UmFmYcWCIE1pxYJlY2tp?= , Jo-Philipp Wich Subject: [WIP RFC luci] luci-mod-network: provide control over /etc/init.d/dnsmasq service Date: Fri, 16 Feb 2024 11:22:58 +0100 Message-Id: <20240216102258.21867-1-zajec5@gmail.com> X-Mailer: git-send-email 2.35.3 MIME-Version: 1.0 X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20240216_022309_975376_0E258E19 X-CRM114-Status: GOOD ( 11.47 ) X-Spam-Score: 0.0 (/) X-Spam-Report: =?unknown-8bit?q?Spam_detection_software=2C_running_on_the_sy?= =?unknown-8bit?q?stem_=22bombadil=2Einfradead=2Eorg=22=2C?= =?unknown-8bit?q?_has_NOT_identified_this_incoming_email_as_spam=2E__The_ori?= =?unknown-8bit?q?ginal?= =?unknown-8bit?q?_message_has_been_attached_to_this_so_you_can_view_it_or_la?= =?unknown-8bit?q?bel?= =?unknown-8bit?q?_similar_future_email=2E__If_you_have_any_questions=2C_see?= =?unknown-8bit?q?_the_administrator_of_that_system_for_details=2E?= =?unknown-8bit?q?_?= =?unknown-8bit?q?_Content_preview=3A__From=3A_Rafa=C5=82_Mi=C5=82ecki_It=27s?= =?unknown-8bit?q?_easier_to_control_service_from?= =?unknown-8bit?q?_the_same_page_that_allows_configuring_it=2E_Cc=3A_Jo-Phili?= =?unknown-8bit?q?pp_Wich_Signed-off-by=3A?= =?unknown-8bit?q?_Rafa=C5=82_Mi=C5=82ecki_---_Over_years_we_got_a_lot_of_red?= =?unknown-8bit?q?undant_=22enabled=22_=28or_=22disabled=22=29?= =?unknown-8bit?q?_UCI_config_options_where_it=27d_be_perfecly_enough_to_use_?= =?unknown-8bit?q?init=2Ed_script_for?= =?unknown-8bit?b?IGNvbnQgWy4uLl0g?= =?unknown-8bit?q?_?= =?unknown-8bit?q?_Content_analysis_details=3A___=280=2E0_points=2C_5=2E0_req?= =?unknown-8bit?q?uired=29?= =?unknown-8bit?q?_?= =?unknown-8bit?q?_pts_rule_name______________description?= =?unknown-8bit?q?_----_----------------------_------------------------------?= =?unknown-8bit?q?--------------------?= =?unknown-8bit?q?_-0=2E0_RCVD=5FIN=5FDNSWL=5FNONE_____RBL=3A_Sender_listed_a?= =?unknown-8bit?q?t_https=3A//www=2Ednswl=2Eorg/=2C_no?= =?unknown-8bit?q?_trust?= =?unknown-8bit?b?IFsyYTAwOjE0NTA6NDg2NDoyMDowOjA6MDo2MzYgbGlzdGVkIGluXQ==?= =?unknown-8bit?b?IFtsaXN0LmRuc3dsLm9yZ10=?= =?unknown-8bit?q?_-0=2E0_SPF=5FPASS_______________SPF=3A_sender_matches_SPF_?= =?unknown-8bit?q?record?= =?unknown-8bit?q?_0=2E0_SPF=5FHELO=5FNONE__________SPF=3A_HELO_does_not_publ?= =?unknown-8bit?q?ish_an_SPF_Record?= =?unknown-8bit?q?_0=2E1_DKIM=5FSIGNED____________Message_has_a_DKIM_or_DK_si?= =?unknown-8bit?q?gnature=2C_not_necessarily_valid?= =?unknown-8bit?q?_-0=2E1_DKIM=5FVALID_____________Message_has_at_least_one_v?= =?unknown-8bit?q?alid_DKIM_or_DK_signature?= =?unknown-8bit?q?_-0=2E1_DKIM=5FVALID=5FAU__________Message_has_a_valid_DKIM?= =?unknown-8bit?q?_or_DK_signature_from_author=27s?= =?unknown-8bit?q?_domain?= =?unknown-8bit?q?_-0=2E1_DKIM=5FVALID=5FEF__________Message_has_a_valid_DKIM?= =?unknown-8bit?q?_or_DK_signature_from?= =?unknown-8bit?q?_envelope-from_domain?= =?unknown-8bit?q?_0=2E0_FREEMAIL=5FFROM__________Sender_email_is_commonly_ab?= =?unknown-8bit?q?used_enduser_mail_provider?= =?unknown-8bit?q?_=5Bzajec5=28at=29gmail=2Ecom=5D?= =?unknown-8bit?q?_0=2E2_FREEMAIL=5FENVFROM=5FEND=5FDIGIT_Envelope-from_freem?= =?unknown-8bit?q?ail_username_ends_in?= =?unknown-8bit?q?_digit?= =?unknown-8bit?q?_=5Bzajec5=28at=29gmail=2Ecom=5D?= =?unknown-8bit?q?_-0=2E0_T=5FSCC=5FBODY=5FTEXT=5FLINE___No_description_avail?= =?unknown-8bit?q?able=2E?= X-BeenThere: openwrt-devel@lists.openwrt.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: OpenWrt Development List List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: "openwrt-devel" Errors-To: openwrt-devel-bounces+incoming=patchwork.ozlabs.org@lists.openwrt.org From: Rafał Miłecki It's easier to control service from the same page that allows configuring it. Cc: Jo-Philipp Wich Signed-off-by: Rafał Miłecki --- Over years we got a lot of redundant "enabled" (or "disabled") UCI config options where it'd be perfecly enough to use init.d script for controlling it. There are probably two reasons for that: 1. sysupgrade not preserving disabled services state 2. UI being more friendly by allowing disabling on configuration page The first issue is being handled as sysupgrade improvement. This change show how we could make UI more friendly for services management and hopefully avoid redundant "enabled" UCI config options. .../resources/view/network/dhcp.js | 47 ++++++++++++++++++- 1 file changed, 45 insertions(+), 2 deletions(-) diff --git a/modules/luci-mod-network/htdocs/luci-static/resources/view/network/dhcp.js b/modules/luci-mod-network/htdocs/luci-static/resources/view/network/dhcp.js index 7b0ae3c1f9..8b6a849915 100644 --- a/modules/luci-mod-network/htdocs/luci-static/resources/view/network/dhcp.js +++ b/modules/luci-mod-network/htdocs/luci-static/resources/view/network/dhcp.js @@ -9,7 +9,7 @@ 'require validation'; 'require tools.widgets as widgets'; -var callHostHints, callDUIDHints, callDHCPLeases, CBILeaseStatus, CBILease6Status; +var callHostHints, callDUIDHints, callDHCPLeases, callRcList, CBIServiceEnabled, CBIServiceRunning, CBILeaseStatus, CBILease6Status; callHostHints = rpc.declare({ object: 'luci-rpc', @@ -29,6 +29,37 @@ callDHCPLeases = rpc.declare({ expect: { '': {} } }); +callRcList = rpc.declare({ + object: 'rc', + method: 'list', + params: ['name'], + expect: { '': {} } +}); + +CBIServiceEnabled = form.DummyValue.extend({ + renderWidget: function(section_id, option_id, cfgvalue) { + return E([], [ + E('span', {}, cfgvalue ? _('Enabled') : _('Disabled')), + ' ', + E('button', { + 'class': 'btn' + }, [ cfgvalue ? _('Disable') : _('Enable') ]) + ]); + }, +}); + +CBIServiceRunning = form.DummyValue.extend({ + renderWidget: function(section_id, option_id, cfgvalue) { + return E([], [ + E('span', {}, cfgvalue ? _('Started') : _('Stopped')), + ' ', + E('button', { + 'class': 'btn' + }, [ cfgvalue ? _('Stop') : _('Start') ]) + ]); + }, +}); + CBILeaseStatus = form.DummyValue.extend({ renderWidget: function(section_id, option_id, cfgvalue) { return E([ @@ -277,7 +308,8 @@ return view.extend({ callHostHints(), callDUIDHints(), getDHCPPools(), - network.getNetworks() + network.getNetworks(), + callRcList('dnsmasq') ]); }, @@ -287,6 +319,7 @@ return view.extend({ duids = hosts_duids_pools[1], pools = hosts_duids_pools[2], networks = hosts_duids_pools[3], + service = hosts_duids_pools[4], m, s, o, ss, so; let noi18nstrings = { @@ -315,6 +348,16 @@ return view.extend({ m = new form.Map('dhcp', _('DHCP and DNS'), _('Dnsmasq is a lightweight DHCP server and DNS forwarder.')); + s = m.section(form.TypedSection); + s.anonymous = true; + s.cfgsections = function() { return [ '_status' ] }; + + o = s.option(CBIServiceEnabled, '_enabled', _('Autostart')); + o.cfgvalue = function() { return service.dnsmasq.enabled; }; + + o = s.option(CBIServiceRunning, '_running', _('Current status')); + o.cfgvalue = function() { return service.dnsmasq.running; }; + s = m.section(form.TypedSection, 'dnsmasq'); s.anonymous = false; s.addremove = true;