luci-app-tor: add config for tor

Currently the UCI for the Tor allows to set only a list of configs to include.
The only way to configure it for a user is to upload its own config and add it to list of included.
We can simplify this with the app.

Signed-off-by: Sergey Ponomarev <stokito@gmail.com>
This commit is contained in:
Sergey Ponomarev 2024-02-09 03:07:22 +02:00 committed by Paul Donald
parent a4e586397e
commit c170dfab91
4 changed files with 49 additions and 2 deletions

View file

@ -5,7 +5,7 @@ include $(TOPDIR)/rules.mk
LUCI_TITLE:=LuCI app to configure Tor
LUCI_DEPENDS:=+luci-base +tor +tor-hs
PKG_VERSION:=1.0.0
PKG_VERSION:=1.1.0
PKG_RELEASE:=1
PKG_MAINTAINER:=Sergey Ponomarev <stokito@gmail.com>

View file

@ -0,0 +1,36 @@
'use strict';
'require view';
'require form';
'require uci';
return view.extend({
render: function () {
var m, s, o;
m = new form.Map('tor', _('Tor onion router'),
_('For further information <a %s>check the documentation</a>')
.format('href="https://openwrt.org/docs/guide-user/services/tor/client" target="_blank" rel="noreferrer"')
);
s = m.section(form.NamedSection, 'conf', 'tor');
o = s.option(form.DynamicList, 'tail_include', _('Include configs'));
o.datatype = 'list(string)';
o = s.option(form.FileUpload, '_custom_config', _('Custom config'));
o.default = '/etc/tor/torrc_custom';
o.root_directory = '/etc/tor/';
o.optional = true;
o.write = function(section_id, formvalue) {
let tail_include = uci.get('tor', section_id, 'tail_include');
if (!tail_include.includes(formvalue)) {
tail_include.push(formvalue);
return uci.set('tor', section_id, 'tail_include', tail_include);
}
};
return m.render();
},
});

View file

@ -19,5 +19,13 @@
"type": "view",
"path": "tor/tor-hs"
}
},
"admin/services/tor/tor": {
"title": "Tor Onion router",
"order": 30,
"action": {
"type": "view",
"path": "tor/tor"
}
}
}

View file

@ -16,7 +16,10 @@
"uci": [
"tor",
"tor-hs"
]
],
"file": {
"/etc/tor/*": [ "write" ]
}
}
}
}