Steven Edwards steven_ed4153@yahoo.com writes:
Like how to get winetest and the server to talk to each other and what is needed in the build and url files.
programs/winetest/README contains some relevant information.
Is there some good documentation on how winrash and winetest work and communicate with the server? I am interested it in using it as part of the ReactOS build system.
Winetest sends back a single file to winetest.cgi, the one which is linked from the summary page (report).
service.cgi is pretty much a mystery for me, too. Let me offer these hunks containing some of my experiences. Be careful with submitting requests to service.cgi, I strongly suspect that it's easy to nuke the whole database with an empty $publisher or $build...
Index: winetest/service.cgi =================================================================== RCS file: /home/wine/tools/winetest/service.cgi,v retrieving revision 1.24 diff -u -r1.24 service.cgi --- winetest/service.cgi 14 Jul 2004 18:33:47 -0000 1.24 +++ winetest/service.cgi 16 Mar 2005 23:41:45 -0000 @@ -29,7 +29,7 @@ # # We rely on the server to have directories available for every # program that can be published. For example, we need a winetest directory: -# winetest/ +# $data_root/$publisher/winetest/ # <name>.url contains url to find latest winetests at, must be # writable # url.mask contains a reg ex to match against, only needs to @@ -112,6 +113,7 @@ # removes the current release from disk sub releases_purge { my ($project) = @_; + # FIXME remove files of ALL publishers? Too easy to get here! system("rm -f $data_root/*/$project/*.cookie"); system("rm -f $data_root/*/$project/*.url"); } @@ -179,6 +182,7 @@ # FIXME: maybe we should check here that $build is sane
# test if this is a valid publisher + # FIXME empty $publisher passes! if (opendir(IMD, "$data_root/$publisher/")) { closedir(IMD); } else { @@ -193,6 +198,7 @@ return "Build is old, current build is $current_build"; } if ($build ne $current_build) { + # FIXME this is VERY dangerous without $build sanitizing. releases_purge is broken, too. &releases_purge($program); }
@@ -208,6 +214,7 @@ $cookie = &read_one_line("$lynx -source $url.sig |");
# all is good, store the cookie, and URL now, this activetes the release + # FIXME isn't $cookie a binary fingerprint already? &write_file(">$base_path/$name.cookie", &md5sum($cookie)); &write_file(">$base_path/$name.url", $url); &write_file(">>$data_root/$program.builds", $build);