summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSadeep Madurange <sadeep@asciimx.com>2026-08-17 07:30:10 +0800
committerSadeep Madurange <sadeep@asciimx.com>2026-08-17 07:30:10 +0800
commitbdb2060407df9c798fd8460b8aaa1c395d7a16b4 (patch)
treecfb51fb2697373099bb978773c9ef144a9ac253f
parent356d060293e054d03145c005e7359cef6b5880cf (diff)
downloadlex-bdb2060407df9c798fd8460b8aaa1c395d7a16b4.tar.gz
Move cgi log to /var/log, set group permissions for queue, remove log truncate logic: use newsyslog.
-rwxr-xr-xlex.cgi23
1 files changed, 14 insertions, 9 deletions
diff --git a/lex.cgi b/lex.cgi
index 797fa1c..ea181c7 100755
--- a/lex.cgi
+++ b/lex.cgi
@@ -37,30 +37,24 @@ BEGIN {
};
}
+my $log_dir = "/var/log";
my $base_dir = "/var/lex";
my $keyring_file = "$base_dir/pubring.gpg";
unveil("/dev/null", "rw") or die "unveil /dev/null failed: $!";
+unveil($log_dir, "rwc") or die "unveil $base_dir failed: $!";
unveil($base_dir, "rwc") or die "unveil $base_dir failed: $!";
unveil() or die "unveil lock failed: $!";
pledge('stdio rpath wpath cpath flock') or die "pledge failed: $!";
my $dop = 5;
-my $log_file = "$base_dir/debug.log";
+my $log_file = "$log_dir/lexcgi.log";
my $max_log_bytes = 1024 * 1024; # 1 MB cap
sub log_msg {
my ($msg) = @_;
- # Truncate if >$max_log_bytes
- if (-e $log_file && -s $log_file >= $max_log_bytes) {
- my $clrh;
- if (open($clrh, '>', $log_file)) {
- close($clrh);
- }
- }
-
my $lh;
if (open($lh, '>>', $log_file)) {
my $tz_offset = 8 * 3600;
@@ -226,14 +220,25 @@ unless (length($plain_text) > 0) {
respond_ok();
}
+# Set umask so group gets read/write (0666 & ~0007 = 0660)
+my $old_umask = umask(007);
my $queue_file = "$base_dir/queue.txt";
+my $is_new = ! -e $queue_file;
+
my $qfh;
unless (open($qfh, '>>:utf8', $queue_file)) {
log_msg("ERROR: Failed to append to $queue_file: $!");
respond_ok();
}
+
+if ($is_new) {
+ my $tool_gid = getgrnam('tool');
+ chown -1, $tool_gid, $queue_file;
+}
+
print $qfh $plain_text . "\n";
close($qfh);
+umask($old_umask);
my $elapsed_ms = sprintf("%.2fms", (time() - $start_time) * 1000);
my $msg_id = sprintf("msg_%.6f_$$", time());