ACF Libraries: Difference between revisions
No edit summary |
|||
Line 5: | Line 5: | ||
We are also using as a standard the lposix library which is documented here [[LPOSIX]] | We are also using as a standard the lposix library which is documented here [[LPOSIX]] | ||
==[[apk.lua]]== | |||
Functions to load/unload apk packages | |||
* get_all_packages | |||
* get_loaded_packages | |||
* get_available_packages | |||
* delete_package | |||
* install_package | |||
==[[authenticator-plaintext.lua]]== | |||
Authentication module | |||
* authenticate | |||
* get_userinfo | |||
* get_userinfo_roles | |||
* list_users | |||
* list_roles | |||
* change_setting | |||
* change_settings | |||
* new_settings | |||
* delete_user | |||
==[[cfe.lua]]== | |||
cfe helper function | |||
* cfe | |||
==[[controllerfunctions.lua]]== | |||
Controller helper functions | |||
* handle_form | |||
* handle_startstop | |||
==[[daemoncontrol.lua]]== | |||
Service start/stop/restart function | |||
* daemoncontrol | |||
==[[date.lua]]== | ==[[date.lua]]== | ||
Line 11: | Line 44: | ||
*date_to_seconds - Takes a date table and converts it to seconds from 1970 | *date_to_seconds - Takes a date table and converts it to seconds from 1970 | ||
*seconds_to_date - Takes table of seconds values and converts to a date sorted smallest to largest | *seconds_to_date - Takes table of seconds values and converts to a date sorted smallest to largest | ||
*string_to_table | |||
*date_diff - Takes two values of seconds and gives back the difference | *date_diff - Takes two values of seconds and gives back the difference | ||
*num_month_name - Month number to name of month | *num_month_name - Month number to name of month | ||
*num_month_name_abr - Month number to abr of month | *num_month_name_abr - Month number to abr of month | ||
*name_month_num -Month name to number | *name_month_num - Month name to number | ||
*abr_month_num -Month abbreviation to number | *abr_month_num - Month abbreviation to number | ||
*num_dow_name -Day of Week number to name | *num_dow_name - Day of Week number to name | ||
* | *num_dow_name_abr - Day of week number to abbreviation | ||
*name_dow_num -Day of Week full name to number | *name_dow_num - Day of Week full name to number | ||
* | *abr_dow_num - Day of week abbreviation to number | ||
*what_tz - Checks to see what timezone the box is set to; /etc/TZ | *what_tz - Checks to see what timezone the box is set to; /etc/TZ | ||
*change_tz - Changes the timezone | *change_tz - Changes the timezone | ||
Line 42: | Line 76: | ||
*dostounix - converts dos line endings to unix | *dostounix - converts dos line endings to unix | ||
*remove_blanks_comments - takes out the blank and commented lines | *remove_blanks_comments - takes out the blank and commented lines | ||
*search_replace - will go through a file or table and search and replace | *search_replace - will go through a file or table and search and replace | ||
*search_for_lines - will go through a file and return a table with matches | *search_for_lines - will go through a file and return a table with matches | ||
*cap_begin_word - will capitalize beginning of words | *cap_begin_word - will capitalize beginning of words | ||
*ipairs_to_string | |||
*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 | |||
*md5sum_string | |||
== [[fs.lua]] == | |||
File system functions | |||
*is_dir | |||
*is_file | |||
*is_link | |||
*read_file | |||
*read_file_as_array | |||
*write_file | |||
*write_line_file | |||
*md5sum_file | |||
*md5sum_string | |||
*find | |||
*stat | |||
== [[getopts.lua]] == | |||
Functions to parse config files | |||
*opts_to_table | |||
*table_to_opts | |||
*setoptsinfile | |||
*getoptsfromfile | |||
== [[html.lua]] == | == [[html.lua]] == | ||
Functions used by web_elements.lua. Written by nangel for ACF. | Functions used by web_elements.lua. Written by nangel for ACF. | ||
*cookie.set -creates a cookie to be used with ACF | *cookie.set -creates a cookie to be used with ACF | ||
*cookie.unset | |||
*html_escape - will escape html encoded strings | *html_escape - will escape html encoded strings | ||
*nv_pair - returns name value pairings as string | *nv_pair - returns name value pairings as string | ||
Line 59: | Line 117: | ||
**form.text | **form.text | ||
**form.longtext | **form.longtext | ||
**form. | **form.password | ||
**form.hidden | **form.hidden | ||
**form.submit | **form.submit | ||
Line 69: | Line 127: | ||
**form.start | **form.start | ||
**form.stop | **form.stop | ||
== [[ipcalc.lua]] == | |||
*iptoint | |||
*nettoint | |||
*same_subnet | |||
== menubuilder.lua == | == menubuilder.lua == | ||
Written by nangel for ACF | Written by nangel for ACF | ||
*get_menuitems | |||
== | == [[modelfunctions.lua]] == | ||
*getenabled | |||
*startstop_service | |||
*getstatus | |||
*getfiledetails | |||
*validateselect | |||
*validatemulti | |||
* | |||
== privsep.lua == | == privsep.lua == | ||
Line 131: | Line 183: | ||
print("privileged uid:", priv.getuid()) | print("privileged uid:", priv.getuid()) | ||
</pre> | </pre> | ||
== [[processinfo.lua]] == | |||
*package_version | |||
*process_botsequence | |||
== procps.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 | |||
== [[roles.lua]] == | |||
*list_controllers | |||
*get_controllers | |||
*get_controllers_func | |||
*list_default_roles | |||
*list_roles | |||
*list_all_roles | |||
*get_roles_perm | |||
*get_role_perm | |||
*delete_role | |||
*set_role_perm | |||
== [[session.lua]] == | == [[session.lua]] == | ||
Line 147: | Line 235: | ||
== [[validator.lua]] == | == [[validator.lua]] == | ||
This contains multiple different functions that each will validate input in there own way. | This contains multiple different functions that each will validate input in there own way. | ||
*is_string | |||
*is_boolean | |||
*is_number | |||
*is_ipv4 - test if this is a valid ipv4 address | *is_ipv4 - test if this is a valid ipv4 address | ||
*is_partial_ipv4 | |||
*is_mac - test to see if this is a valid mac address | *is_mac - test to see if this is a valid mac address | ||
*is_integer - is the number and int | *is_integer - is the number and int | ||
*is_integer_in_range - is the int in the range of numbers | *is_integer_in_range - is the int in the range of numbers | ||
*is_port - the the number in the ip port range | *is_port - the the number in the ip port range | ||
*is_valid_filename | |||
== [[viewfunctions.lua]] == | |||
displayinfo | |||
displaymanagement | |||
*displayitem | |||
*displayformitem | |||
*displayform | |||
*displaycommandresults | |||
== [[web_elements.lua]] == | == [[web_elements.lua]] == |
Revision as of 20:33, 9 July 2008
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
apk.lua
Functions to load/unload apk packages
- get_all_packages
- get_loaded_packages
- get_available_packages
- delete_package
- install_package
authenticator-plaintext.lua
Authentication module
- authenticate
- get_userinfo
- get_userinfo_roles
- list_users
- list_roles
- change_setting
- change_settings
- new_settings
- delete_user
cfe.lua
cfe helper function
- cfe
controllerfunctions.lua
Controller helper functions
- handle_form
- handle_startstop
daemoncontrol.lua
Service start/stop/restart function
- daemoncontrol
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 from 1970
- seconds_to_date - Takes table of seconds values and converts to a date sorted smallest to largest
- string_to_table
- date_diff - Takes two values of seconds and gives back the difference
- 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_name_abr - Day of week number to abbreviation
- name_dow_num - Day of Week full name to number
- abr_dow_num - Day of week abbreviation to number
- what_tz - Checks to see what timezone the box is set to; /etc/TZ
- change_tz - Changes the timezone
- Tables are included with this information
- Timezones
- Days of Week
- Months of the Year
- Tables are included with this information
fs.lua
Used for various filesystem 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
- 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
- md5sum_file - give a hash, md5sum of a file
format.lua
Used to format table,string,input,output ...
- dostounix - converts dos line endings to unix
- remove_blanks_comments - takes out the blank and commented lines
- search_replace - will go through a file or table and search and replace
- search_for_lines - will go through a file and return a table with matches
- cap_begin_word - will capitalize beginning of words
- ipairs_to_string
- 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
- md5sum_string
fs.lua
File system functions
- is_dir
- is_file
- is_link
- read_file
- read_file_as_array
- write_file
- write_line_file
- md5sum_file
- md5sum_string
- find
- stat
getopts.lua
Functions to parse config files
- opts_to_table
- table_to_opts
- setoptsinfile
- getoptsfromfile
html.lua
Functions used by web_elements.lua. Written by nangel for ACF.
- cookie.set -creates a cookie to be used with ACF
- cookie.unset
- html_escape - will escape html encoded strings
- nv_pair - returns name value pairings as string
- entity
- link
- cfe_unpack - returns the whole of a cfe as a string. Great for troubleshooting.
- Form setup functions - also are the "types" of cfe. See ACF_core_principles
- form.text
- form.longtext
- form.password
- form.hidden
- form.submit
- form.action
- form.file
- form.image
- form.select
- form.checkbox
- form.start
- form.stop
ipcalc.lua
- iptoint
- nettoint
- same_subnet
Written by nangel for ACF
- get_menuitems
modelfunctions.lua
- getenabled
- startstop_service
- getstatus
- getfiledetails
- validateselect
- validatemulti
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())
processinfo.lua
- package_version
- process_botsequence
procps.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
roles.lua
- list_controllers
- get_controllers
- get_controllers_func
- list_default_roles
- list_roles
- list_all_roles
- get_roles_perm
- get_role_perm
- delete_role
- set_role_perm
session.lua
Written by nangel for ACF.
- random_hash - will create a bash64-like hash from /dev/urandom
- hash_ip_addr - create 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 and serialize
- save_session - save the session table
- load_session - load a saved session table
- unlink_session - delete a saved session table
- record_event - record an invalid login attempt
- count_events - check if there are too many invalid attempts
- expired_events - delete the expired invalid attempts and saved sessions
validator.lua
This contains multiple different functions that each will validate input in there own way.
- is_string
- is_boolean
- is_number
- is_ipv4 - test if this is a valid ipv4 address
- is_partial_ipv4
- 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
- is_valid_filename
viewfunctions.lua
displayinfo displaymanagement
- displayitem
- displayformitem
- displayform
- displaycommandresults
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