Difference between revisions of "ACF Libraries"

From Alpine Linux
Jump to: navigation, search
(fs.lua)
(join.lua <span style="color:red">(not working)</span>)
Line 58: Line 58:
 
**form.stop
 
**form.stop
  
== join.lua <span style="color:red">(not working)</span>==
+
== join.lua <span style="color:red">put in fs.lua</span>==
'''INPUT:'''<BR>
 
This library required the following inputs/parameters.
 
* Delimiter
 
** Could be one or more chars.
 
* Array
 
** Data which is to be joined into a string.
 
'''OUTPUT:'''<BR>
 
This library deliverers the following output/parameters.
 
* String
 
** Could be something like "Word, Word, Word, Word"
 
'''CODING EXAMPLE:'''
 
-- Set variable/Call for this library
 
ourlib = require("join")
 
-- Create a array of data <span style="color:red">(Not sure if the next row is correct)</span>
 
arraytojoin = "Bird", "Fish", "Cow", "Hammer"
 
-- Process the data (note the delimiter)
 
liboutput = ourlib(";", arraytojoin)
 
'liboutput' would contain:
 
Bird;Fish;Cow;Hammer
 
  
 
== menubuilder.lua ==
 
== menubuilder.lua ==

Revision as of 15:39, 28 November 2007

ACF Libraries

Because of using lua, a very small language, the need arises to build everything from scratch. This can lead to some confusion, apprehension, or just feeling overwhelmed. Here is documentation on what we have now in the form of libraries and common functions. We hope to build some more and use this information to get the juices flowing in regard to ACF.

Some of these are lua libs or ones written for ACF. We are also using as a standard the lposix library which is documented here LPOSIX


date.lua

Date and time functions To be used with os.time() and os.date()

  • date_to_seconds - Takes a date table and converts it to seconds since 1970
  • seconds_to_date - Takes table of seconds values and converts to a date
  • date_diff - Takes two values of seconds and give back difference in years,days,months...
  • num_month_name - Month number to name of month
  • num_month_name_abr - Month number to abr of month
  • name_month_num -Month name to number
  • abr_month_num -Month abbreviation to number
  • num_dow_name -Day of Week number to name
  • num_dow_abr - Day of week number to abbreviation
  • name_dow_num -Day of Week full name to number
  • name_dow_num -Day of week abbreviation to number

fs.lua

Used for various file specific functions

  • is_dir - test if the a directory
  • is_file - test if is a file
  • is_link - test if file is a link
  • read_file / read_file_as_array - will read a file as a string / array
  • dostounix - converts dos line endings to unix
  • remove_blanks_comments - takes out the blank and commented lines
  • search_replace - will go through a file and do a full search and replace
  • ipairs_string - will take a table and convert it to a sting, one entry per line
  • write_file - replace contents of a file
  • write_line_file - appends lines to a file
  • find - Give a path and a filename and search for it
  • table_to_string - formally the join.lua takes a table and makes into a string with delimiter
  • string_to_table - formally split.lua. takes a delimited string and turns it into a table

html.lua

Functions used by web_elements.lua. Written by nangel for ACF.

  • cookie.set -creates a cookie to be used with ACF
  • html_escape - will escape html encoded strings
  • nv_pair - returns name value pairings as string
  • entity
  • link
  • Form setup functions
    • form.text
    • form.longtext
    • form.passwd
    • form.hidden
    • form.submit
    • form.action
    • form.file
    • form.image
    • form.select
    • form.checkbox
    • form.start
    • form.stop

join.lua put in fs.lua

menubuilder.lua

Written by nangel for ACF

pidof.lua

pidof

find the process ID of a running program

pidof.pidof(program)

INPUT

  • program

OUTPUT returns the PID's of running program or nil if there are none.

CODING EXAMPLE

require "pidof"
if pidof.pidof("mini_httpd") ~= nil then
  print("mini_httpd is running")
else
  print("mini_httpd is not running")
end

privsep.lua

drop_privs

Drop privileges while allowing a few functions still have root permissions.

privsep.drop_privs(user, group, functable)

Depends on posix and json.

INPUT:

  • user
  • group
  • functable
    • a table of functions that will run as root

OUTPUT: returns a table identical to functable, except the funcs are wrapped and runs in a separate process with root permissions.

CODING EXAMPLE:

#!/usr/bin/env lua

require "posix" 
require "privsep"

-- register those as privileged funcs 
a = {}
function a.getuid()
        return posix.getpid().euid
end

-- main ---------------------------------------------------------
priv = privsep.drop_privs("nobody", "nogroup", a)
if priv == nil then
        error("failed to drop privileges")
end

print("current uid:", posix.getpid().euid)
print("privileged uid:", priv.getuid())

session.lua

Written by nangel for ACF.

  • random_hash - will create a bash64 like hash from /dev/urandom
  • hash_ip_address -a hash encoded ip address
  • ip_addr_from_hash -take the hash encoded ip and give me the ip
  • serialize -go through a table or set of tables
  • save_session -save the session table

split.lua

INPUT:
This library required the following inputs/parameters.

  • Delimiter
    • Could be one or more chars.
  • String or line from a file: bobo~foo~bar~baz~1
    • Data is to be split into a table

OUTPUT:
This library deliverers the following output/parameters.

  • Table
    • { 1 = "bobo", 2 = "foo", 3 = "bar", 4 = "baz", 5 = 1}

CODING EXAMPLE:

-- Set variable/Call for this library
strsplit = require("split")
-- Grab the line from a file or input it into the funtcion
line = "bobo~foo~bar~baz~1"
-- Process the data (note the delimiter)
t = ourlib("~", line)
't' would contain: 
{ 1 = "bobo", 2 = "foo", 3 = "bar", 4 = "baz", 5 = 1}
for a,b in ipairs(t) do print(a,b) end
1 bobo
2 foo
3 bar
4 baz
5 1

validator.lua

This contains multiple different functions that each will validate input in there own way.

  • is_ipv4 - test if this is a valid ipv4 address
  • is_mac - test to see if this is a valid mac address
  • is_integer - is the number and int
  • is_integer_in_range - is the int in the range of numbers
  • is_port - the the number in the ip port range

web_elements.lua

Written by nangel for ACF.

  • render_table -walks through a table rendered for a template
  • render_mainmenu - will render the side menu
  • render_submenu - will render all the sub menu items