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 zcmcgwZ)_CT5&!Mpo>_=PY$tKjh8R~lQfToWCI%AJssY*buFv36r}b;Wt2!wrL>AFT16FATp0zZqRNU;ldAqeq!5`xB-8K#wbWbv z-h1m?8=?}GcC7Wgc{6Y3{hN6+^PSG_O`4`5038t!8?6{-8vwIbQrgfA6U)(zdr<>` zw6^_*$xjT>fG7Y1K!h|6Xd5t0ezybQM;c|%YU9}bhWTz3;K%W(lXTH{*f9CkX}}#C zgkI8h0B57X*~5m(?-T%joELTQdqe{s88A$K%>eiXv?tDasbIZf2*&Tf({RH5v#?ys zi087s@m#7Um(7>=T5iEwE&J=#+Pb#v5JNam%3P@Sgsll+0n}O*%!7Q9^Tu|2wY7>0b@j(x;?D4XXo$(HBA_mty_K}!&|W`cm^CKw z))B*8paI9(>cAM=2ylX}0i0sH0C<Q?k{55YLF-(8i zu_FeL5B@Sr&hY2?v%c^9%cvnk+W85AQ&Wc5;ry7usWEdm@izrd%^7az`B8y$2ASo= z5Bk0@S0$nKlV^uMtb8>6`1Wm?=~t+A&@i8PGSl&jVNMogFA-K^;9kzQyj5t zV0^Lx7(R5>_x-{5yy(==eBXb1*Xi+t0^}O^e|?f`@oFzDsf-z~e!%6uca+U=-QauW z3-3fp*G`Ws{-cwJ4RdhJYj}$~2FJXGCyf~U{E5@!2S>VNM&+Yv|Jzr044r#o;9?9K zhBp|MF=H4fJ7Tcw8|9v|`U$H?(7b6z`!&OP;H&(t>o42&PG2PzkrOnv$<-yf+o`@TPNi2qki z{Nai|)H&^~YW0WyJn~x(RO5#`>$*7g;m%sld$`jaGGcyXDbnGpwtu^r%3Z>`cz2$5!)sk}h z66KuNl3n}Y+LmHcKAkP;e7PlG^m6f}TaG77Ue@ZlalutRNw>^5w|PTP^J=SgtLCy&6}@QkGh(Od5^iwyqz{VAE(dJkt0R>=i)`sWYDJF^m72zL5O3H z>U0*72ehV@P3xa((rch;i0Zsek^8i!mFxAW?BTtN+@jc0sg*0AYHDiIHE7z8|F1LW zk*JyTDn}Z$U>=C-yws6}nw%FbcVEAk=!NBaCD~?zU)j9pl!~zO1<$cIY~0-9CDO1m z2{!{PwJ-1P>zA!pf|bsftvyc3%@*==5W57cJ`1Z< zNF}@kEGJ|4l@k39tfW^cxv)~Qc`jKJ$`bwAB&>A76aS<%IkMMvVI>Rw{Z8J4m2!H^ zX**F$G$M2;OA9K6W z2w-p$3b=QKfe;@}|FtNvM9~O=-tQ_tiWnO-%(19kUjPB$4?=vW1`YF6v??Pk?5Up0e+57ue&Zp&i6e$NQ6pot0D}EHt?muwF(#k9j$Xo_l)M1QHyt1$ z+WVp3goy>f(;>bf!1{O|-*OZ9R$x3K+TTOJ3Ex{d*Uo2$XmVcyczq$TZI)Q2F^=R~ z1Ng@xp!Pa^>D0dHB*f_rSm< zUzNQC5NC280P%Q$2z$Qdub+n>Qn5C>b=2b3dGuc?KgVtjbvVxRSNpA@9)Aq&w}u8` zw<0GO{C5faWWFxPH{uiKRx1CYz6jsjS0w#<`ft;KiCKMhSfWAZOhSG=R%n>L9~y4M zI<0#CoKL$36xIEq{Q3K_Gh|rYuV2r@-`1-4ryjTCl%fZ9r@tsXsB8UAllPaF#k$oc z4LGCLU#~Y}Mgv$Mp`|sT7K`<&y)$Q(!X;3b-3iO(*f34 zUQ_h1DQ6SZ)pqLgoeKD$(=mI$o6(4}E^{x^8*nRLQsaa54bRi}BOOSq{cO-{@e93b zKlS>Zcv}a~s`YYyC+6vYU!Pmo`#3b8IyB-_rJumU6YF4vU_N(+e4?oHC3>?hBK+-v zWih);IYl>~ec-{haVOUo7qvdC2aIQ}q-YqF^;t>S zcKi0N+wAVmJ=<*?w%suYd$fI)lq~cYbB^bvtTk)f)}hE|4QxAAu+zChZz5-lsM}7I z_d-PDcBcXe;wxS`wLx@l8S=XQJhhK=2wHiYCks>Fr8whA5Aex1rTOV@Me61sr4jei5` C?fNJH 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.47.0