From d549a9725e4e1f731a08a147a33d6f3a13c4e648 Mon Sep 17 00:00:00 2001 From: Sapan Bhatia Date: Fri, 14 Sep 2007 19:32:07 +0000 Subject: [PATCH] Adding some library functions that'll facilitate the creation of vsys scripts. --- fifowatcher.ml | 16 ++++++++++++---- frontend.ml | 2 +- globals.ml | 1 + lib/connect_fd | Bin 0 -> 6462 bytes main.ml | 3 ++- 5 files changed, 16 insertions(+), 6 deletions(-) create mode 100755 lib/connect_fd diff --git a/fifowatcher.ml b/fifowatcher.ml index 646ec31..dc79dad 100644 --- a/fifowatcher.ml +++ b/fifowatcher.ml @@ -146,16 +146,24 @@ and receive_fifo_event eventdescriptor outdescriptor = (** Make a pair of fifo entries *) -let mkentry fqp abspath perm = +let mkentry fqp abspath perm uname = printf "Making entry %s->%s\n" fqp abspath;flush Pervasives.stdout; let fifoin=sprintf "%s.in" fqp in let fifoout=sprintf "%s.out" fqp in (try Unix.unlink fifoin with _ -> ()); (try Unix.unlink fifoout with _ -> ()); (try - Unix.mkfifo (sprintf "%s.in" fqp) 0o666; - Unix.mkfifo (sprintf "%s.out" fqp) 0o666; - Success + let infname =(sprintf "%s.in" fqp) in + let outfname =(sprintf "%s.out" fqp) in + Unix.mkfifo infname 0o666; + Unix.mkfifo outfname 0o666; + ( (* Make the user the owner of the pipes in a non-chroot environment *) + if (!Globals.nochroot) then + let pwentry = Unix.getpwnam uname in + Unix.chown infname pwentry.pw_uid pwentry.pw_gid; + Unix.chown outfname pwentry.pw_uid pwentry.pw_gid + ); + Success with e->printf "Error creating FIFO: %s->%s. May be something wrong at the frontend.\n" fqp fifoout;flush Pervasives.stdout;Failed) diff --git a/frontend.ml b/frontend.ml index aca8e7b..7cc0c16 100644 --- a/frontend.ml +++ b/frontend.ml @@ -21,7 +21,7 @@ object(this) let realperm = perm land (lnot 0o111) in match rp with Relpath(rel) -> let fqp = String.concat "/" [root_dir;rel] in - let res = Fifowatcher.mkentry fqp abspath realperm in + let res = Fifowatcher.mkentry fqp abspath realperm slice_name in match res with | Success -> Fifowatcher.openentry fqp (abspath,slice_name) realperm diff --git a/globals.ml b/globals.ml index 0afb155..3ea4a32 100644 --- a/globals.ml +++ b/globals.ml @@ -2,6 +2,7 @@ let backend = ref "" let debug = ref true let vsys_version = "0.5" +let nochroot = ref false type result = Success | Failed diff --git a/lib/connect_fd b/lib/connect_fd new file mode 100755 index 0000000000000000000000000000000000000000..088271119999625d0f24e18ef8021ac502c5429b GIT binary patch literal 6462 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 literal 0 HcmV?d00001 diff --git a/main.ml b/main.ml index 91df33a..be96b82 100644 --- a/main.ml +++ b/main.ml @@ -13,7 +13,8 @@ let cur_slice = ref "" let cmdspeclist = [ ("-backend",Arg.Set_string(Globals.backend), "Backend directory"); - ("-frontend",Arg.Tuple[Arg.String(fun s->cur_dir:=s);Arg.String(fun s->cur_slice:=s;input_file_list:=(!cur_dir,!cur_slice)::!input_file_list)], "frontendN,slicenameN") + ("-frontend",Arg.Tuple[Arg.String(fun s->cur_dir:=s);Arg.String(fun s->cur_slice:=s;input_file_list:=(!cur_dir,!cur_slice)::!input_file_list)], "frontendN,slicenameN"); + ("-nochroot",Arg.Set(Globals.nochroot), "Run in non-chroot environment") ] let cont = ref true -- 2.43.0