diff options
Diffstat (limited to '')
-rwxr-xr-x | lclipd.lua (renamed from lclipd) | 52 |
1 files changed, 30 insertions, 22 deletions
@@ -11,6 +11,7 @@ local sys_stat = require("posix.sys.stat") local unistd = require("posix.unistd") local posix_syslog = require("posix.syslog") +--- Adds LUA_PATH and LUA_CPATH to the current interpreters path. local function default_luarocks_modules() local luarocks_handle = io.popen("luarocks-5.3 path --bin") local path_b = false @@ -39,6 +40,9 @@ parser:option("-s --hist_size", "history file size", 200) parser:option("-f --hist_file", "history file location", "/home/devi/.clip_history") +--- Log the given string to syslog with the given priority. +-- @param log_str the string passed to the logging facility +-- @param log_priority the priority of the log string local function log_to_syslog(log_str, log_priority) posix_syslog.openlog("clipd", posix_syslog.LOG_NDELAY | posix_syslog.LOG_PID, @@ -47,38 +51,35 @@ local function log_to_syslog(log_str, log_priority) posix_syslog.closelog() end +--- Checks to make sure the cliphistory file's permission is 0600. +-- @param clip_hist the history file's path local function check_clip_hist_perms(clip_hist) local uid = unistd.getuid() local gid = unistd.getgid() for k, v in pairs(sys_stat.stat(clip_hist)) do - if k == "st_uid" then - if v ~= uid then - log_to_syslog( - "clipboard history file owned by uid other than the clipd uid", - posix_syslog.LOG_CRIT) - os.exit(1) - end + if k == "st_uid" and v ~= uid then + log_to_syslog( + "clipboard history file owned by uid other than the clipd uid", + posix_syslog.LOG_CRIT) + os.exit(1) end - if k == "st_gid" then - if v ~= gid then - log_to_syslog( - "clipboard history file owned by gid other than the clipd gid", - posix_syslog.LOG_CRIT) - os.exit(1) - end + if k == "st_gid" and v ~= gid then + log_to_syslog( + "clipboard history file owned by gid other than the clipd gid", + posix_syslog.LOG_CRIT) + os.exit(1) end - if k == "st_mode" then - if v and (sys_stat.S_IRUSR or sys_stat.S_IWUSR) ~= - (sys_stat.S_IRUSR or sys_stat.S_IWUSR) then - log_to_syslog( - "file permissions are too open. they need to be 0600.", - posix_syslog.LOG_CRIT) - os.exit(1) - end + if k == "st_mode" and v and (sys_stat.S_IRUSR or sys_stat.S_IWUSR) ~= + (sys_stat.S_IRUSR or sys_stat.S_IWUSR) then + log_to_syslog( + "file permissions are too open. they need to be 0600.", + posix_syslog.LOG_CRIT) + os.exit(1) end end end +--- Checks to make sure there the pid file for clipd does not exist. local function check_pid_file() local f = sys_stat.stat("/var/run/clipd.pid") if f ~= nil then @@ -88,6 +89,8 @@ local function check_pid_file() end -- FIXME- we cant write to /var/run since we are running as non-root user +--- Writes the pidfile to we can later check to make sure this is the only +-- instance running. local function write_pid_file() local f = io.open("/var/run/clipd.pid", "w") if f == nil then @@ -97,8 +100,12 @@ local function write_pid_file() f.write(unistd.getpid()) end +-- TODO- implement me local function remove_pid_file() end +--- The clipboard's main loop +-- @param clip_hist path to the clip history file +-- @param clip_hist_size number of entries limit for the clip history file local function loop(clip_hist, clip_hist_size) local clips_table = {} local hist_current_count = 0 @@ -144,6 +151,7 @@ local function loop(clip_hist, clip_hist_size) end end +--- The entry point local function main() signal.signal(signal.SIGINT, function(signum) os.exit(128 + signum) end) local args = parser:parse() |