From: paulr Date: Tue, 8 Nov 2011 16:42:13 +0000 (+1100) Subject: moved the old git poc code off and away from the main directory X-Git-Url: http://git.pjr.cc/?p=gwvp.git;a=commitdiff_plain;h=942b821d861aba1da43ef6c999141853e9f8b3a8;hp=e9c10b0bc2d09d21b4ff0e630a140ddc58a7dccb moved the old git poc code off and away from the main directory added a permission level "4" which is "can manage repo as an owner" - which only extends to site admins and repo owners. Replaces the gwvp_canManageRepo() function --- diff --git a/gwvplib/gwvpgitbackend.php b/archive/gwvpgitbackend_poccode.php similarity index 100% rename from gwvplib/gwvpgitbackend.php rename to archive/gwvpgitbackend_poccode.php diff --git a/gwvplib/gwvpauth.php b/gwvplib/gwvpauth.php index e06fdde..2602256 100644 --- a/gwvplib/gwvpauth.php +++ b/gwvplib/gwvpauth.php @@ -39,8 +39,8 @@ function gwvp_AskForBasicAuth() { error_log("AUTH: asking for basic auth"); if(!isset($_SERVER["PHP_AUTH_USER"])) { - header('WWW-Authenticate: Basic realm="My Realm"'); - header('HTTP/1.0 401 Unauthorized'); + header('WWW-Authenticate: Basic realm="GIT Repo"'); + header('HTTP/1.1 401 Unauthorized'); } else return; } diff --git a/gwvplib/gwvpdebug.php b/gwvplib/gwvpdebug.php index dcc7c7a..4a5c303 100644 --- a/gwvplib/gwvpdebug.php +++ b/gwvplib/gwvpdebug.php @@ -8,6 +8,21 @@ function gwvp_DebugEnabled() { global $BASE_URL, $LOGIN_TYPE; + $isgitagent = false; + + // tested the user agent bit with jgit from eclipse and normal git... seems to work + if(isset($_SERVER["HTTP_USER_AGENT"])) { + $agent = $_SERVER["HTTP_USER_AGENT"]; + error_log("in git backend with user agent $agent"); + if(stristr($agent, "git")!==false) { + $isgitagent = true; + } + } + + // we dont wan to send this to a git agent + if($isgitagent) return; + + echo "
";
 	if(isset($_SERVER["PHP_AUTH_USER"])) error_log("authuser: ".$_SERVER["PHP_AUTH_USER"]."\n");
 	echo "USERTYPE: $LOGIN_TYPE\n";
@@ -148,6 +163,8 @@ function gwvp_DebugCall()
 function gwvp_DebugBody()
 {
 	global $BASE_URL;
+	
+	
 	?>
 	Generate error message
Generate info message
diff --git a/gwvplib/gwvpgitcontrol.php b/gwvplib/gwvpgitcontrol.php index 842d040..7c34d9b 100644 --- a/gwvplib/gwvpgitcontrol.php +++ b/gwvplib/gwvpgitcontrol.php @@ -6,6 +6,9 @@ $CALL_ME_FUNCTIONS["gitcontrol"] = "gwvp_gitControlCallMe"; //$MENU_ITEMS["20repos"]["link"] = "$BASE_URL/admin/repos"; $HOME_PAGE_PROVIDERS["gitlog"] = "gwvp_GitLogProvider"; +// TODO: we could actually change backend interface such that is +// will respond to any url's that contain "repo.git" rather then +// having to be $BASE_URL/git/repo.git function gwvp_gitControlCallMe() { if(isset($_REQUEST["q"])) { @@ -42,6 +45,20 @@ function gwvp_gitBackendInterface() // TODO: we need to stop passing the repo name around as "repo.git", it needs to be just "repo" + + /* bizare git problem that ignores 403's or continues on with a push despite them + error_log("FLAP for ".$_SERVER["REQUEST_URI"]); + if(isset($_REQUEST)) { + $dump = print_r($_REQUEST, true); + error_log("FLAP, $dump"); + } + if(isset($_SERVER["PHP_AUTH_USER"])) { + error_log("FLAP: donut hole"); + }*/ + + + + $repo = ""; $repoid = false; $newloc = "/"; @@ -71,12 +88,18 @@ function gwvp_gitBackendInterface() $write = false; if(isset($_REQUEST["service"])) { if($_REQUEST["service"] == "git-receive-pack") { + error_log("got write as receivepack in post"); $write = true; } } if($_SERVER["REQUEST_METHOD"] == "POST") { $write = true; } + // THIS MAY CAUSE ISSUES LATER ON but we do it cause the git client ignores our 403 when it uses git-receive-pack after an auth + // no, this isnt a solution cause auth'd read attempts will come up as writes... + //if(isset($_SERVER["PHP_AUTH_USER"])) { + //$write = true; + //} // if its a write, we push for authentication if($write) { @@ -465,6 +488,7 @@ function gwvp_createGitRepo($name, $ownerid, $desc, $bundle=null, $defaultperms= // 1 - visible // 2 - read // 3 - write +// 4 - owner/administrator function gwvp_resolvRepoPerms($userid, $repoid) { $ownerid = gwvp_getRepoOwner($repoid); @@ -472,9 +496,9 @@ function gwvp_resolvRepoPerms($userid, $repoid) error_log("USerid is $userid, ownerid $ownerid"); - if($isadmin) return 3; + if($isadmin) return 4; - if($userid == $ownerid) return 3; + if($userid == $ownerid) return 4; // now we load the perms table and pray $repoperms = gwvp_getRepoPermissions($repoid); diff --git a/gwvplib/gwvplib.php b/gwvplib/gwvplib.php index 0158b45..9850e97 100644 --- a/gwvplib/gwvplib.php +++ b/gwvplib/gwvplib.php @@ -2,7 +2,6 @@ require_once("gwvpweb.php"); -require_once("gwvpgitbackend.php"); require_once("gwvpuseradmin.php"); require_once("gwvprepoadmin.php"); require_once("gwvpauth.php"); @@ -17,7 +16,7 @@ require_once("gwvpemail.php"); require_once("gwvppluginloader.php"); // only enable this if you need it: -//require_once("gwvpdebug.php"); +require_once("gwvpdebug.php"); ?> \ No newline at end of file diff --git a/gwvplib/gwvprepoadmin.php b/gwvplib/gwvprepoadmin.php index cc78ba4..cb533bf 100644 --- a/gwvplib/gwvprepoadmin.php +++ b/gwvplib/gwvprepoadmin.php @@ -265,7 +265,7 @@ function gwvp_RepoAdminPageBody() $manordetslink = "details"; $manordets = "Details"; if(isset($_SESSION["id"])) { - if(gwvp_canManageRepo($_SESSION["id"], $rid)) { + if(gwvp_resolvRepoPerms($_SESSION["id"], $rid)>3) { $manordetslink = "manage"; $manordets = "Manage"; } diff --git a/gwvplib/gwvpweb.php b/gwvplib/gwvpweb.php index b9e7e1b..f01e537 100644 --- a/gwvplib/gwvpweb.php +++ b/gwvplib/gwvpweb.php @@ -154,7 +154,6 @@ function gwvp_MenuBuilder() ksort($MENU_ITEMS); - echo "\n\n\n"; echo ""; foreach($MENU_ITEMS as $key => $val) { $link = $val["link"]; @@ -187,7 +186,6 @@ function gwvp_MenuBuilder() } } echo "
Menu
"; - echo "\n\n\n"; } @@ -195,14 +193,12 @@ function gwvp_LoginBuilder() { global $WEB_ROOT_FS, $BASE_URL; - echo "\n\n\n"; $login = gwvp_IsLoggedIn(); if($login === false) { gwvp_SingleLineLoginForm(); } else { echo "Hello, ".gwvp_GetFullName($login)." logout"; } - echo "\n\n\n"; } // builds the body structure