forked from osmocom/wireshark
45fb37718e
The recent wiretap changes broke the generation of init.lua among other things, though it did coincidentally fix one of the "yuck" comments in the generator regex. (Note that this is entirely untested, because out-of-tree init.lua is and always has been broken, but it should work) Change-Id: Id0c27b31c596613997de4ba2f6088eb9d6c8fc53 Reviewed-on: https://code.wireshark.org/review/4361 Reviewed-by: Evan Huus <eapache@gmail.com>
151 lines
4.7 KiB
Lua
151 lines
4.7 KiB
Lua
-- init.lua
|
|
--
|
|
-- initialize wireshark's lua
|
|
--
|
|
-- This file is going to be executed before any other lua script.
|
|
-- It can be used to load libraries, disable functions and more.
|
|
--
|
|
-- Wireshark - Network traffic analyzer
|
|
-- By Gerald Combs <gerald@wireshark.org>
|
|
-- Copyright 1998 Gerald Combs
|
|
--
|
|
-- This program is free software; you can redistribute it and/or
|
|
-- modify it under the terms of the GNU General Public License
|
|
-- as published by the Free Software Foundation; either version 2
|
|
-- of the License, or (at your option) any later version.
|
|
--
|
|
-- This program is distributed in the hope that it will be useful,
|
|
-- but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
-- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
-- GNU General Public License for more details.
|
|
--
|
|
-- You should have received a copy of the GNU General Public License
|
|
-- along with this program; if not, write to the Free Software
|
|
-- Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
|
|
|
|
-- Set disable_lua to true to disable Lua support.
|
|
disable_lua = false
|
|
|
|
if disable_lua then
|
|
return
|
|
end
|
|
|
|
-- If set and we are running with special privileges this setting
|
|
-- tells whether scripts other than this one are to be run.
|
|
run_user_scripts_when_superuser = false
|
|
|
|
|
|
-- disable potentialy harmful lua functions when running superuser
|
|
if running_superuser then
|
|
local hint = "has been disabled due to running Wireshark as superuser. See http://wiki.wireshark.org/CaptureSetup/CapturePrivileges for help in running Wireshark as an unprivileged user."
|
|
local disabled_lib = {}
|
|
setmetatable(disabled_lib,{ __index = function() error("this package ".. hint) end } );
|
|
|
|
dofile = function() error("dofile " .. hint) end
|
|
loadfile = function() error("loadfile " .. hint) end
|
|
loadlib = function() error("loadlib " .. hint) end
|
|
require = function() error("require " .. hint) end
|
|
os = disabled_lib
|
|
io = disabled_lib
|
|
file = disabled_lib
|
|
end
|
|
|
|
-- to avoid output to stdout which can cause problems lua's print ()
|
|
-- has been suppresed so that it yields an error.
|
|
-- have print() call info() instead.
|
|
if gui_enabled() then
|
|
print = info
|
|
end
|
|
|
|
function typeof(obj)
|
|
local mt = getmetatable(obj)
|
|
return mt and mt.__typeof or obj.__typeof or type(obj)
|
|
end
|
|
|
|
-- the following function checks if a file exists
|
|
-- since 1.11.3
|
|
function file_exists(name)
|
|
local f = io.open(name,"r")
|
|
if f ~= nil then io.close(f) return true else return false end
|
|
end
|
|
|
|
-- the following function prepends the given directory name to
|
|
-- the package.path, so that a 'require "foo"' will work if 'foo'
|
|
-- is in the directory name given to this function. For example,
|
|
-- if your Lua file will do a 'require "foo"' and the foo.lua
|
|
-- file is in a local directory (local to your script) named 'bar',
|
|
-- then call this function before doing your 'require', by doing
|
|
-- package.prepend_path("bar")
|
|
-- and that will let Wireshark's Lua find the file "bar/foo.lua"
|
|
-- when you later do 'require "foo"'
|
|
--
|
|
-- Because this function resides here in init.lua, it does not
|
|
-- have the same environment as your script, so it has to get it
|
|
-- using the debug library, which is why the code appears so
|
|
-- cumbersome.
|
|
--
|
|
-- since 1.11.3
|
|
function package.prepend_path(name)
|
|
local debug = require "debug"
|
|
-- get the function calling this package.prepend_path function
|
|
local dt = debug.getinfo(2, "f")
|
|
if not dt then
|
|
error("could not retrieve debug info table")
|
|
end
|
|
-- get its upvalue
|
|
local _, val = debug.getupvalue(dt.func, 1)
|
|
if not val or type(val) ~= 'table' then
|
|
error("No calling function upvalue or it is not a table")
|
|
end
|
|
-- get the __DIR__ field in its upvalue table
|
|
local dir = val["__DIR__"]
|
|
-- get the platform-specific directory separator character
|
|
local sep = package.config:sub(1,1)
|
|
-- prepend the dir and given name to path
|
|
if dir and dir:len() > 0 then
|
|
package.path = dir .. sep .. name .. sep .. "?.lua;" .. package.path
|
|
end
|
|
-- also prepend just the name as a directory
|
|
package.path = name .. sep .. "?.lua;" .. package.path
|
|
end
|
|
|
|
-- %WTAP_ENCAPS%
|
|
|
|
-- %WTAP_FILETYPES%
|
|
|
|
-- %WTAP_TSPRECS%
|
|
|
|
-- %WTAP_COMMENTTYPES%
|
|
|
|
-- %FT_TYPES%
|
|
|
|
-- the following table is since 1.12
|
|
-- %WTAP_REC_TYPES%
|
|
|
|
-- the following table is since 1.11.3
|
|
-- %WTAP_PRESENCE_FLAGS%
|
|
|
|
-- %BASES%
|
|
|
|
-- %ENCODINGS%
|
|
|
|
-- %EXPERT%
|
|
|
|
-- the following table is since 1.11.3
|
|
-- %EXPERT_TABLE%
|
|
|
|
-- %MENU_GROUPS%
|
|
|
|
-- other useful constants
|
|
GUI_ENABLED = gui_enabled()
|
|
DATA_DIR = Dir.global_config_path()
|
|
USER_DIR = Dir.personal_config_path()
|
|
|
|
-- deprecated function names
|
|
datafile_path = Dir.global_config_path
|
|
persconffile_path = Dir.personal_config_path
|
|
|
|
|
|
dofile(DATA_DIR.."console.lua")
|
|
--dofile(DATA_DIR.."dtd_gen.lua")
|