Root access to an Ubuntu 16.04 installation via SSH, first run these commands before anything else.
sudo apt-get update
sudo apt-get install openvpn easy-rsa
One of the main criticisms of Lua is that the scope of a variable is global by default. This is not perfect, and people who have worked with me know I don't like useless globals.
That being said, I think the solution some people advocate ("Do like Python!!1") is "wrong". Global by default is clumsy but it makes sense because there is only one global scope. Local by default and a "global" keyword causes aliasing issues because there are other levels of scope besides "local" and "global".
Instead of a long explanation, let's take an example: you cannot do this in Python.
a = 1
-- globalsplus.lua | |
-- Like globals.lua in Lua 5.1.4 -- globalsplus.lua | |
-- Like globals.lua in Lua 5.1.4 but records fields in global tables too. | |
-- Probably works but not well tested. Could be extended even further. | |
-- | |
-- usage: lua globalsplus.lua example.lua | |
-- | |
-- D.Manura, 2010-07, public domain | |
-- | |
-- See http://lua-users.org/wiki/DetectingUndefinedVariables |
-- Lua 5.1+ base64 v3.0 (c) 2009 by Alex Kloss <[email protected]> | |
-- licensed under the terms of the LGPL2 | |
-- character table string | |
local b='ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/' | |
-- encoding | |
function enc(data) | |
return ((data:gsub('.', function(x) | |
local r,b='',x:byte() |