Convert install-rpm/install-tarfile to use the web server instead of
tmcd (which is bad, since tying up the tmcd threads blocks all nodes in the testbed). The old functionality is left in tmcd for now. On the server side, a new web page (www/spewrpmtar.php3) receives a request for a file, along with the nodeid (pcXXX) making the request, and the secret key that is generated for each new experiment and transfered to the node via tmcd. If the key matches, the operation is handed off to tbsetup/spewrpmtar.in which verifies that the file is in the list of rpm/tar files for that node, and then spits it out to stdout. The web page uses fpassthru() to send the file out to the client. The client is using wget, and is required to use https (the web page checks). At present, the external script is run as the creator of the experiment, and gid of the experiment. Perhaps this is not a good idea. In any event, the file must be in the list of rpm/tarfiles, either owned by the experiment creator or with a group of the experiment, and the file must reside in either /proj or /groups. I use the realpath() function to make sure there are no symlink tricks pointing to outside those filesystems. I use the standard NFS read goo to prevent transient mount problems that we all know and love.
Showing with 274 additions and 0 deletions