1
0
Fork 0
mirror of https://github.com/Ysurac/openmptcprouter-feeds.git synced 2025-03-09 15:40:03 +00:00
This commit is contained in:
suyuan 2023-06-23 09:42:48 +08:00
parent b3d17da339
commit 7f7ccd1afb
207 changed files with 0 additions and 37374 deletions

View file

@ -1,14 +0,0 @@
# Copyright 2020 Wojciech Jowsa (wojciech.jowsa@gmail.com)
# This is free software, licensed under the Apache License, Version 2.0
include $(TOPDIR)/rules.mk
LUCI_TITLE:=Packet capture application
LUCI_DEPENDS:=+luci-mod-admin-full +tcpdump +uhttpd-mod-ubus +coreutils +coreutils-timeout
PKG_MAINTAINER:=Wojciech Jowsa <wojciech.jowsa@gmail.com>
PKG_LICENSE:=Apache-2.0
include $(TOPDIR)/feeds/luci/luci.mk
# call BuildPackage - OpenWrt buildroot signatureet

View file

@ -1,287 +0,0 @@
'use strict';
'require rpc';
'require uci';
'require ui';
'require fs';
'require form';
'require network';
'require tools.widgets as widgets';
var eventSource,
captureFilePoll,
hostName;
function stopTcpdump() {
fs.exec("/usr/libexec/packet_capture_stop").then(function(replay) {
if (eventSource)
eventSource.close();
}.bind(this)).catch(function(error) {
console.log(error);
});
}
window.addEventListener('beforeunload', stopTcpdump);
var callLuciProcessList = rpc.declare({
object: 'luci',
method: 'getProcessList',
expect: { result: [] }
});
var callInitAction = rpc.declare({
object: 'luci',
method: 'setInitAction',
params: [ 'name', 'action' ],
expect: { result: false }
});
function addOutput() {
var tcpdumpOut = document.querySelectorAll('[id$="tcpdump_out"]')[0];
if (tcpdumpOut)
return;
var frameEl = E('div', {'class': 'cbi-value'});
frameEl.appendChild(E('textarea', {
'id': 'tcpdump_out',
'class': 'cbi-input-textarea',
'readonly': '',
'style': 'width:100%',
'rows': 30,
}));
frameEl.firstElementChild.style.fontFamily = 'monospace';
var downloadBtn = document.querySelectorAll('[id$="download_file"]')[0];
if (downloadBtn)
downloadBtn.parentNode.insertBefore(frameEl, downloadBtn.nextSibling);
}
var downloadCaptureFile = function(ev) {
var form = E('form', {
method: 'post',
action: '/cgi-bin/cgi-download',
enctype: 'application/x-www-form-urlencoded'
}, E('input', { type: 'hidden', name: 'sessionid', value: rpc.getSessionID()},
E('input', { type: 'hidden', name: 'path', value: "/tmp/capture.pcap"},
E('input', { type: 'hidden', name: 'filename', value: hostName + "-" + Date.now() + ".pcap"},
E('input', { type: 'hidden', name: 'mimetype', value: 'application/vnd.tcpdump.pcap'}
)))));
ev.currentTarget.parentNode.appendChild(form);
form.submit();
form.parentNode.removeChild(form);
}
function subscribeTcpdump() {
if (eventSource)
eventSource.close();
eventSource = new EventSource('/ubus/subscribe/tcpdump' + '?' + rpc.getSessionID());
eventSource.onerror = function(event) {
eventSource.close();
console.log(event);
};
addOutput();
var textOut = document.querySelectorAll('[id$="tcpdump_out"]')[0];
textOut.value = "";
eventSource.addEventListener("tcpdump.data", function(event) {
textOut.value = textOut.value + "\n" + JSON.parse(event.data).data;
});
}
function updateButtons() {
var tasks = [];
tasks.push(fs.stat("/var/run/packet_capture.pid").then(L.bind(function(res) {
var downloadBtn = document.querySelectorAll('[id$="download_file"]')[0];
if (!downloadBtn)
return;
if (!eventSource || eventSource.readyState == 2)
subscribeTcpdump();
var textOut = document.querySelectorAll('[id$="tcpdump_out"]')[0];
if (textOut)
textOut.style.borderColor = "green";
var startBtn = document.querySelectorAll('[id$="start_tcpdump"]')[0];
if (startBtn)
startBtn.hidden = true;
var stopBtn = document.querySelectorAll('[id$="stop_tcpdump"]')[0];
if (stopBtn)
stopBtn.hidden = false;
return;
})).catch(function(error) {
var textOut = document.querySelectorAll('[id$="tcpdump_out"]')[0];
if (textOut)
textOut.style.borderColor = "red";
var startBtn = document.querySelectorAll('[id$="start_tcpdump"]')[0];
if (startBtn)
startBtn.hidden = false;
var stopBtn = document.querySelectorAll('[id$="stop_tcpdump"]')[0];
if (stopBtn)
stopBtn.hidden = true;
if (eventSource)
eventSource.close();
}));
return Promise.all(tasks);
}
function updatePollCheckCaptureFileExists() {
checkCaptureFileExists();
L.Poll.remove(captureFilePoll);
L.Poll.add(L.bind(checkCaptureFileExists, m),5);
}
function checkCaptureFileExists() {
var tasks = [];
tasks.push(fs.stat("/tmp/capture.pcap").then(L.bind(function(res) {
var downloadBtn = document.querySelector('[data-action="download"]');
if (!downloadBtn)
return;
var downloadCheckBox = document.querySelectorAll('[data-widget-id$="file"]')[0].checked;
if (!downloadCheckBox) {
fs.remove("/tmp/capture.pcap").then(function(replay) {
downloadBtn.disabled = true;;
}.bind(this)).catch(function(error) {
console.log(error);
});
} else {
downloadBtn.disabled = false;
}
})).catch(function(error) {
var downloadBtn = document.querySelector('[data-action="download"]');
if (downloadBtn)
downloadBtn.disabled = true;
}));
return Promise.all(tasks);
}
return L.view.extend({
load: function() {
return Promise.all([
uci.load('system')
]);
},
handleDownload: function(ev) {
downloadCaptureFile(ev);
},
render: function(processes) {
var m, s, o;
hostName = uci.get('system', '@system[0]', 'hostname');
m = new form.Map('packet_capture', _('Packet Capture - Tcpdump'), _('Capture packets with tcpdump.'));
s = m.section(form.TypedSection, 'tcpdump');
s.anonymous = 1;
o = s.option(widgets.DeviceSelect, 'interface', _('Interface'), _(''));
o.noaliases = true;
o.modalonly = true;
o.rmempty = false;
o.filter = function(section_id, value) {
return true;
}
o = s.option(form.Value, 'filter', _('Filter'), _('Tcpdump filter like protocol, port etc.'));
o.modalonly = false;
o.datatype = 'and(minlength(1),maxlength(1024))';
o = s.option(form.Value, 'duration', _('Duration'), _('Duration of packet capturing in seconds.'));
o.modalonly = false;
o.datatype = 'range(1,4294967296)';
o = s.option(form.Value, 'packets', _('Packets'), _('Number of packets to be captured.'));
o.modalonly = false;
o.datatype = 'range(1,4294967296)';
o = s.option(form.Flag, 'domains', _('Resolve domains'), _("Convert host addresses to names."));
o = s.option(form.Flag, 'verbose', _('Verbose output'), _("Print the link-level header on each dump line."));
o = s.option(form.Flag, 'file', _('Save to file'), _("Save capture to pcap file."));
o = s.option(form.Button, 'start_tcpdump', _('Start tcpdump'), _(''));
o.inputstyle = 'apply';
o.onclick = ui.createHandlerFn(this, function(section_id, ev) {
var downloadBtn = document.querySelector('[data-action="download"]');
if (!downloadBtn)
return;
fs.remove("/tmp/capture.pcap").then(function(replay) {
downloadBtn.disabled = true;;
}.bind(this)).catch(function(error) {
console.log(error);
});
var iface = document.querySelectorAll('[id$="interface"]')[1].value,
filter = document.querySelectorAll('[id$="filter"]')[2].value,
packets = document.querySelectorAll('[id$="packets"]')[2].value,
duration = document.querySelectorAll('[id$="duration"]')[2].value,
verbose = document.querySelectorAll('[data-widget-id$="verbose"]')[0].checked,
domains = document.querySelectorAll('[data-widget-id$="domains"]')[0].checked,
file = document.querySelectorAll('[data-widget-id$="file"]')[0].checked
var args = {
"interface": iface,
"filter": filter,
"packets": packets,
"duration": duration,
"verbose": verbose,
"domains": domains,
"file": file
}
return fs.exec_direct('/usr/libexec/packet_capture_start', [JSON.stringify(args)]).then(function(replay) {
var error_position = replay.search("error:");
if (error_position != -1){
ui.showModal(_(replay.substring(error_position + 6, replay.length)), [
E('div', { 'class': 'right' }, [
E('button', {
'class': 'cbi-button cbi-button-negative important',
'click': function(ev) {
ui.hideModal();
}
}, _('Close')),
])
]);
return;
}
rpc.list.apply(rpc).then(function(res) {
for (var k in res) {
if (res[k] == "tcpdump" )
subscribeTcpdump()
}
}.bind(this));
}.bind(this)).catch(function(error) {
console.log(error);
});
});
o = s.option(form.Button, 'stop_tcpdump', _('Stop tcpdump'), _(''));
o.inputstyle = 'apply';
o.onclick = ui.createHandlerFn(this, function(section_id, ev) {
if (!eventSource)
return;
return fs.exec("/usr/libexec/packet_capture_stop").then(function(replay) {
eventSource.close();
}.bind(this)).catch(function(error) {
console.log(error);
});
});
o = s.option(form.Button, 'download_file', _('Download capture file'));
o.inputstyle = 'action important';
o.inputtitle = _('Download');
o.data_action = 'download'
o.onclick = this.handleDownload;
L.Poll.add(L.bind(updateButtons, m),1);
captureFilePoll = L.bind(updatePollCheckCaptureFileExists, m);
L.Poll.add(captureFilePoll,1);
return m.render();
},
});

View file

@ -1,99 +0,0 @@
msgid ""
msgstr ""
"PO-Revision-Date: 2021-03-31 15:07+0000\n"
"Last-Translator: Weblate Admin <contact@openmptcprouter.com>\n"
"Language-Team: French <http://weblate.openmptcprouter.com/projects/omr/"
"luciapplicationspacket-capture/fr/>\n"
"Language: fr\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=n > 1;\n"
"X-Generator: Weblate 4.5.2\n"
#: luci-app-packet-capture/htdocs/luci-static/resources/view/packet_capture/tcpdump.js:177
msgid "Capture packets with tcpdump."
msgstr "Capturez des paquets avec tcpdump."
#: luci-app-packet-capture/htdocs/luci-static/resources/view/packet_capture/tcpdump.js:247
msgid "Close"
msgstr "Fermer"
#: luci-app-packet-capture/htdocs/luci-static/resources/view/packet_capture/tcpdump.js:201
msgid "Convert host addresses to names."
msgstr "Convertissez les adresses d'hôte en noms."
#: luci-app-packet-capture/htdocs/luci-static/resources/view/packet_capture/tcpdump.js:277
msgid "Download"
msgstr "Téléchargement"
#: luci-app-packet-capture/htdocs/luci-static/resources/view/packet_capture/tcpdump.js:275
msgid "Download capture file"
msgstr "Télécharger le fichier de capture"
#: luci-app-packet-capture/htdocs/luci-static/resources/view/packet_capture/tcpdump.js:193
msgid "Duration"
msgstr "Durée"
#: luci-app-packet-capture/htdocs/luci-static/resources/view/packet_capture/tcpdump.js:193
msgid "Duration of packet capturing in seconds."
msgstr "Durée de la capture des paquets en secondes."
#: luci-app-packet-capture/htdocs/luci-static/resources/view/packet_capture/tcpdump.js:189
msgid "Filter"
msgstr "Filtre"
#: luci-app-packet-capture/root/usr/share/rpcd/acl.d/luci-app-packet-capture.json:3
msgid "Grant access to tcpdump ubus object"
msgstr "Accorder l'accès à l'objet ubus tcpdump"
#: luci-app-packet-capture/htdocs/luci-static/resources/view/packet_capture/tcpdump.js:181
msgid "Interface"
msgstr "Interface"
#: luci-app-packet-capture/htdocs/luci-static/resources/view/packet_capture/tcpdump.js:197
msgid "Number of packets to be captured."
msgstr "Nombre de paquets à capturer."
#: luci-app-packet-capture/root/usr/share/luci/menu.d/luci-app-packet-capture.json:3
msgid "Packet Capture"
msgstr "Capture de paquets"
#: luci-app-packet-capture/htdocs/luci-static/resources/view/packet_capture/tcpdump.js:177
msgid "Packet Capture - Tcpdump"
msgstr "Capture de paquets - Tcpdump"
#: luci-app-packet-capture/htdocs/luci-static/resources/view/packet_capture/tcpdump.js:197
msgid "Packets"
msgstr "Paquets"
#: luci-app-packet-capture/htdocs/luci-static/resources/view/packet_capture/tcpdump.js:203
msgid "Print the link-level header on each dump line."
msgstr "Imprimez l'en-tête du lien sur chaque ligne de capture."
#: luci-app-packet-capture/htdocs/luci-static/resources/view/packet_capture/tcpdump.js:201
msgid "Resolve domains"
msgstr "Résoudre les domaines"
#: luci-app-packet-capture/htdocs/luci-static/resources/view/packet_capture/tcpdump.js:205
msgid "Save capture to pcap file."
msgstr "Enregistrez la capture dans le fichier pcap."
#: luci-app-packet-capture/htdocs/luci-static/resources/view/packet_capture/tcpdump.js:205
msgid "Save to file"
msgstr "Enregistrer dans un fichier"
#: luci-app-packet-capture/htdocs/luci-static/resources/view/packet_capture/tcpdump.js:207
msgid "Start tcpdump"
msgstr "Démarrez tcpdump"
#: luci-app-packet-capture/htdocs/luci-static/resources/view/packet_capture/tcpdump.js:263
msgid "Stop tcpdump"
msgstr "Arrêter tcpdump"
#: luci-app-packet-capture/htdocs/luci-static/resources/view/packet_capture/tcpdump.js:189
msgid "Tcpdump filter like protocol, port etc."
msgstr "Filtre pour tcpdump comme le protocole, le port, etc."
#: luci-app-packet-capture/htdocs/luci-static/resources/view/packet_capture/tcpdump.js:203
msgid "Verbose output"
msgstr "Sortie verbeuse"

View file

@ -1,90 +0,0 @@
msgid ""
msgstr "Content-Type: text/plain; charset=UTF-8"
#: luci-app-packet-capture/htdocs/luci-static/resources/view/packet_capture/tcpdump.js:177
msgid "Capture packets with tcpdump."
msgstr ""
#: luci-app-packet-capture/htdocs/luci-static/resources/view/packet_capture/tcpdump.js:247
msgid "Close"
msgstr ""
#: luci-app-packet-capture/htdocs/luci-static/resources/view/packet_capture/tcpdump.js:201
msgid "Convert host addresses to names."
msgstr ""
#: luci-app-packet-capture/htdocs/luci-static/resources/view/packet_capture/tcpdump.js:277
msgid "Download"
msgstr ""
#: luci-app-packet-capture/htdocs/luci-static/resources/view/packet_capture/tcpdump.js:275
msgid "Download capture file"
msgstr ""
#: luci-app-packet-capture/htdocs/luci-static/resources/view/packet_capture/tcpdump.js:193
msgid "Duration"
msgstr ""
#: luci-app-packet-capture/htdocs/luci-static/resources/view/packet_capture/tcpdump.js:193
msgid "Duration of packet capturing in seconds."
msgstr ""
#: luci-app-packet-capture/htdocs/luci-static/resources/view/packet_capture/tcpdump.js:189
msgid "Filter"
msgstr ""
#: luci-app-packet-capture/root/usr/share/rpcd/acl.d/luci-app-packet-capture.json:3
msgid "Grant access to tcpdump ubus object"
msgstr ""
#: luci-app-packet-capture/htdocs/luci-static/resources/view/packet_capture/tcpdump.js:181
msgid "Interface"
msgstr ""
#: luci-app-packet-capture/htdocs/luci-static/resources/view/packet_capture/tcpdump.js:197
msgid "Number of packets to be captured."
msgstr ""
#: luci-app-packet-capture/root/usr/share/luci/menu.d/luci-app-packet-capture.json:3
msgid "Packet Capture"
msgstr ""
#: luci-app-packet-capture/htdocs/luci-static/resources/view/packet_capture/tcpdump.js:177
msgid "Packet Capture - Tcpdump"
msgstr ""
#: luci-app-packet-capture/htdocs/luci-static/resources/view/packet_capture/tcpdump.js:197
msgid "Packets"
msgstr ""
#: luci-app-packet-capture/htdocs/luci-static/resources/view/packet_capture/tcpdump.js:203
msgid "Print the link-level header on each dump line."
msgstr ""
#: luci-app-packet-capture/htdocs/luci-static/resources/view/packet_capture/tcpdump.js:201
msgid "Resolve domains"
msgstr ""
#: luci-app-packet-capture/htdocs/luci-static/resources/view/packet_capture/tcpdump.js:205
msgid "Save capture to pcap file."
msgstr ""
#: luci-app-packet-capture/htdocs/luci-static/resources/view/packet_capture/tcpdump.js:205
msgid "Save to file"
msgstr ""
#: luci-app-packet-capture/htdocs/luci-static/resources/view/packet_capture/tcpdump.js:207
msgid "Start tcpdump"
msgstr ""
#: luci-app-packet-capture/htdocs/luci-static/resources/view/packet_capture/tcpdump.js:263
msgid "Stop tcpdump"
msgstr ""
#: luci-app-packet-capture/htdocs/luci-static/resources/view/packet_capture/tcpdump.js:189
msgid "Tcpdump filter like protocol, port etc."
msgstr ""
#: luci-app-packet-capture/htdocs/luci-static/resources/view/packet_capture/tcpdump.js:203
msgid "Verbose output"
msgstr ""

View file

@ -1,99 +0,0 @@
msgid ""
msgstr ""
"PO-Revision-Date: 2021-04-30 16:03+0000\n"
"Last-Translator: niergouge <1150108426@qq.com>\n"
"Language-Team: Chinese (Simplified) <http://weblate.openmptcprouter.com/"
"projects/omr/luciapplicationspacket-capture/zh_Hans/>\n"
"Language: zh_Hans\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=1; plural=0;\n"
"X-Generator: Weblate 4.5.2\n"
#: luci-app-packet-capture/htdocs/luci-static/resources/view/packet_capture/tcpdump.js:177
msgid "Capture packets with tcpdump."
msgstr "使用tcpdump捕获数据包。"
#: luci-app-packet-capture/htdocs/luci-static/resources/view/packet_capture/tcpdump.js:247
msgid "Close"
msgstr "关闭"
#: luci-app-packet-capture/htdocs/luci-static/resources/view/packet_capture/tcpdump.js:201
msgid "Convert host addresses to names."
msgstr "将主机地址转换为名称。"
#: luci-app-packet-capture/htdocs/luci-static/resources/view/packet_capture/tcpdump.js:277
msgid "Download"
msgstr "下载"
#: luci-app-packet-capture/htdocs/luci-static/resources/view/packet_capture/tcpdump.js:275
msgid "Download capture file"
msgstr "下载抓包文件"
#: luci-app-packet-capture/htdocs/luci-static/resources/view/packet_capture/tcpdump.js:193
msgid "Duration"
msgstr "持续时间"
#: luci-app-packet-capture/htdocs/luci-static/resources/view/packet_capture/tcpdump.js:193
msgid "Duration of packet capturing in seconds."
msgstr "抓包时间(以秒为单位)。"
#: luci-app-packet-capture/htdocs/luci-static/resources/view/packet_capture/tcpdump.js:189
msgid "Filter"
msgstr "过滤器"
#: luci-app-packet-capture/root/usr/share/rpcd/acl.d/luci-app-packet-capture.json:3
msgid "Grant access to tcpdump ubus object"
msgstr "授权访问tcpdump ubus对象"
#: luci-app-packet-capture/htdocs/luci-static/resources/view/packet_capture/tcpdump.js:181
msgid "Interface"
msgstr "接口"
#: luci-app-packet-capture/htdocs/luci-static/resources/view/packet_capture/tcpdump.js:197
msgid "Number of packets to be captured."
msgstr "需要抓包的个数。"
#: luci-app-packet-capture/root/usr/share/luci/menu.d/luci-app-packet-capture.json:3
msgid "Packet Capture"
msgstr "数据包捕获"
#: luci-app-packet-capture/htdocs/luci-static/resources/view/packet_capture/tcpdump.js:177
msgid "Packet Capture - Tcpdump"
msgstr "Tcpdump抓包"
#: luci-app-packet-capture/htdocs/luci-static/resources/view/packet_capture/tcpdump.js:197
msgid "Packets"
msgstr "包"
#: luci-app-packet-capture/htdocs/luci-static/resources/view/packet_capture/tcpdump.js:203
msgid "Print the link-level header on each dump line."
msgstr "打印每个转储行上的链接标题。"
#: luci-app-packet-capture/htdocs/luci-static/resources/view/packet_capture/tcpdump.js:201
msgid "Resolve domains"
msgstr "解决域"
#: luci-app-packet-capture/htdocs/luci-static/resources/view/packet_capture/tcpdump.js:205
msgid "Save capture to pcap file."
msgstr "保存捕获到pcap文件。"
#: luci-app-packet-capture/htdocs/luci-static/resources/view/packet_capture/tcpdump.js:205
msgid "Save to file"
msgstr "保存到文件"
#: luci-app-packet-capture/htdocs/luci-static/resources/view/packet_capture/tcpdump.js:207
msgid "Start tcpdump"
msgstr "开始tcp转存"
#: luci-app-packet-capture/htdocs/luci-static/resources/view/packet_capture/tcpdump.js:263
msgid "Stop tcpdump"
msgstr "停止tcp转存"
#: luci-app-packet-capture/htdocs/luci-static/resources/view/packet_capture/tcpdump.js:189
msgid "Tcpdump filter like protocol, port etc."
msgstr "Tcp转存过滤协议端口等。"
#: luci-app-packet-capture/htdocs/luci-static/resources/view/packet_capture/tcpdump.js:203
msgid "Verbose output"
msgstr "详细输出"

View file

@ -1 +0,0 @@
config tcpdump

View file

@ -1,64 +0,0 @@
#!/usr/bin/env lua
local ubus = require "ubus"
local fs = require "nixio.fs"
local conn = ubus.connect()
if not conn then
error("Failed to connect to ubus")
return
end
local args = "-n"
local duration = ""
if arg[1] ~= nil then
args = arg[1]
if arg[2] ~= "" then
duration = arg[2]
end
end
local filter = fs.stat("/tmp/tcpdump_filter")
if filter then
args = args .. " -F /tmp/tcpdump_filter"
end
local ubus_objects = {
tcpdump = {
}
}
conn:add( ubus_objects )
os.execute("sleep 1")
local command = "tcpdump -l " .. args .. " 2>&1"
if duration ~= "" then
command = "timeout " .. duration .. " " .. command
end
local pipe = io.popen(command)
for line in pipe:lines() do
local params = {
data = line
}
conn:notify(ubus_objects.tcpdump.__ubusobj, "tcpdump.data", params)
end
local pcap = fs.stat("/tmp/capture.pcap0")
if pcap then
fs.move("/tmp/capture.pcap0","/tmp/capture.pcap")
fs.remove("/tmp/capture.pcap1")
end
if filter then
fs.remove("/tmp/tcpdump_filter")
end
conn:close()
pipe:close()
fs.remove("/var/run/packet_capture.pid")

View file

@ -1,69 +0,0 @@
#!/bin/sh
. /usr/share/libubox/jshn.sh
PIDFILE="/var/run/packet_capture.pid"
if [ -f "$PIDFILE"];then
echo "error: Packet capture is running"
exit 1
fi
json_load "$1"
json_get_var interface interface
json_get_var filter filter
json_get_var duration duration
json_get_var packets packets
json_get_var verbose verbose
json_get_var domains domains
json_get_var file file
args="-n"
if [ "$domains" == "1" ];then
args=""
fi
if [ -n "$interface" ];then
ip a show "$interface" > /dev/null 2>&1
if [ "$?" == "1" ]; then
echo "error: Incorrect format of an interface"
exit 1
fi
args="$args -i $interface"
fi
if [ -n "$packets" ];then
echo "$packets" | egrep '^[0-9]*$'
if [ "$?" -eq 0 ];then
args="$args -c $packets"
else
echo "error: Incorrect packets argument"
exit 1
fi
fi
if [ "$verbose" == "1" ];then
args="$args -e"
fi
if [ "$file" == "1" ];then
mem=$(awk '/MemTotal/ {print $2}' /proc/meminfo)
args="$args -W 2 -C $((mem/(1024 * 10))) -w /tmp/capture.pcap -z /usr/libexec/packet_capture_stop"
fi
if [ -n "$filter" ];then
tcpdump -i lo -d "$filter" >/dev/null 2>/dev/null
if [ $? -eq 1 ];then
echo "error: Incorrect filter argument"
exit 1
fi
echo "$filter" > /tmp/tcpdump_filter
fi
(/usr/libexec/packet_capture "$args" "$duration")&
echo $! > /var/run/packet_capture.pid
exit 0

View file

@ -1,9 +0,0 @@
#!/bin/sh
pid=$(cat /var/run/packet_capture.pid)
if [ -n "$pid" ] && grep -sq packet_capture "/proc/$pid/cmdline"; then
ppid=$(pgrep -P $pid)
kill -TERM $ppid
fi
exit 0

View file

@ -1,18 +0,0 @@
{
"admin/services/packet_capture": {
"title": "Packet Capture",
"order": 90,
"action": {
"type": "view",
"path": "packet_capture/tcpdump"
},
"depends" : {
"acl": [ "luci-app-packet-capture" ],
"uci": { "packet_capture": true },
"fs": { "/usr/libexec/packet_capture": "executable",
"/usr/libexec/packet_capture_start": "executable",
"/usr/libexec/packet_capture_stop": "executable"
}
}
}
}

View file

@ -1,25 +0,0 @@
{
"luci-app-packet-capture": {
"description": "Grant access to tcpdump ubus object",
"read": {
"cgi-io": [ "download", "exec" ],
"ubus": {
"tcpdump": [ "*" ],
"luci": [ "getProcessList" ]
},
"uci": [ "packet_capture", "system" ],
"file": {
"/tmp/capture.pcap": [ "read" ]
}
},
"write": {
"uci": [ "packet_capture" ],
"file": {
"/usr/libexec/packet_capture_start": [ "exec" ],
"/usr/libexec/packet_capture_stop": [ "exec" ],
"/usr/libexec/packet_capture": [ "exec" ],
"/tmp/capture.pcap": [ "write" ]
}
}
}
}