summaryrefslogtreecommitdiff
path: root/testing/gitano-test-tool.in
diff options
context:
space:
mode:
Diffstat (limited to 'testing/gitano-test-tool.in')
-rw-r--r--testing/gitano-test-tool.in67
1 files changed, 43 insertions, 24 deletions
diff --git a/testing/gitano-test-tool.in b/testing/gitano-test-tool.in
index 78a6c0e..ae2ee4d 100644
--- a/testing/gitano-test-tool.in
+++ b/testing/gitano-test-tool.in
@@ -163,6 +163,19 @@ local function load_auth(fname)
return ret
end
+local function set_stored_password(user, pass)
+ local fh = assert(io.open(user_home(user) .. "/passwd", "w"))
+ fh:write(pass .. "\n")
+ fh:close()
+end
+
+local function load_stored_password(user)
+ local fh = assert(io.open(user_home(user) .. "/passwd", "r"))
+ local pass = fh:read("*l")
+ fh:close()
+ return pass
+end
+
local function generate_exturl(user, key, repo)
local authkeys = load_auth(ssh_key_file("testinstance", "authorized_keys"))
local pubkey = (sio.open(ssh_key_file(user, key) .. ".pub", "r")):read("*l")
@@ -179,7 +192,7 @@ local function generate_exturl(user, key, repo)
esc(authline.user), esc(authline.keyset))
end
-local function generate_httpurl(user, key, repo)
+local function generate_httpurl(user, key, path)
local authkeys = load_auth(ssh_key_file("testinstance", "authorized_keys"))
local pubkey = (sio.open(ssh_key_file(user, key) .. ".pub", "r")):read("*l")
local authline = assert(authkeys[pubkey])
@@ -189,7 +202,7 @@ local function generate_httpurl(user, key, repo)
local port = tonumber(fh:read())
fh:close()
- return ("http://%s:%s@localhost:%d/git/%s"):format(authline.user, authline.user, port, repo)
+ return ("http://%s:%s@localhost:%d/%s"):format(authline.user, load_stored_password(user), port, path)
end
function cmd_setgitconfig(username, key, value)
@@ -218,6 +231,15 @@ function cmd_createunixuser(username)
cmd_setgitconfig(username, "user.name", username)
cmd_setgitconfig(username, "user.email", username.."@example.com")
cmd_setgitconfig(username, "push.default", "simple")
+ set_stored_password(username, username)
+end
+
+function cmd_getpasswd(username)
+ print(load_stored_password(username))
+end
+
+function cmd_setpasswd(username, passwd)
+ set_stored_password(username, passwd)
end
function cmd_createsshkey(username, keyname, optionaltype)
@@ -283,7 +305,11 @@ function cmd_setupstandard(owning_user, master_key, bypass_key)
fh:write(('server.port = %d\n'):format(port))
fh:write('server.modules = ( "mod_auth", "mod_alias", "mod_cgi", "mod_setenv" )\n')
fh:write(([[
-$HTTP["url"] =~ ".*/gitano-command.cgi$" {
+$HTTP["url"] =~ "/gitano-command.cgi$" {
+ alias.url += ( "/gitano-command.cgi" => %q )
+
+ cgi.assign = ("" => "")
+
setenv.add-environment = (
"HOME" => %q,
"LUA_INIT" => %q,
@@ -325,7 +351,8 @@ $HTTP["url"] =~ "^/git/.*$" {
auth.backend = "htpasswd"
auth.backend.htpasswd.userfile = %q
}
-]]):format(user_home(owning_user), lua_init, repo_path, htpasswd,
+]]):format(gitano.config.lib_bin_path() .. "/gitano-command.cgi",
+ user_home(owning_user), lua_init, repo_path, htpasswd,
gitano.config.lib_bin_path() .. "/gitano-smart-http.cgi", repo_path,
user_home(owning_user), lua_init, repo_path, htpasswd))
@@ -366,7 +393,7 @@ end
function cmd_clone(user, key, repo, localname, ...)
local url
if os.getenv("GTT_PROTO") == "http" then
- url = generate_httpurl(user, key, repo)
+ url = generate_httpurl(user, key, "git/" .. repo)
end
if os.getenv("GTT_PROTO") == "ssh" then
url = generate_exturl(user, key, repo)
@@ -380,7 +407,7 @@ end
function cmd_push(user, key, localname, repo, ...)
local url
if os.getenv("GTT_PROTO") == "http" then
- url = generate_httpurl(user, key, repo)
+ url = generate_httpurl(user, key, "git/" .. repo)
end
if os.getenv("GTT_PROTO") == "ssh" then
url = generate_exturl(user, key, repo)
@@ -433,30 +460,22 @@ function cmd_runcommand_ssh(user, key, ...)
end
function cmd_runcommand_http(user, key, ...)
- local authkeys = load_auth(ssh_key_file("testinstance", "authorized_keys"))
- local pubkey = (sio.open(ssh_key_file(user, key) .. ".pub", "r")):read("*l")
- local authline = assert(authkeys[pubkey])
- local cmdline = {
- "testing/http-unwrap",
- gitano.config.lib_bin_path() .. "/gitano-command.cgi",
- env = {
- HOME = user_home("testinstance"),
- REMOTE_USER = authline.user,
- REMOTE_ADDR = "10.0.0.1",
- GITANO_ROOT = authline.repopath,
- }
- }
+ local httpurl = generate_httpurl(user, key, "gitano-command.cgi")
local elems = esc_quote_all_({...})
- local function escape (str)
- str = string.gsub (str, "([^0-9a-zA-Z !'()*._~-])", -- locale independent
- function (c) return string.format ("%%%02X", string.byte(c)) end)
- str = string.gsub (str, " ", "+")
+ local function escape(str)
+ str = string.gsub(str, "([^0-9a-zA-Z !'()*._~-])", -- locale independent
+ function (c) return string.format ("%%%02X", string.byte(c)) end)
+ str = string.gsub(str, " ", "+")
return str
end
for i = 1, #elems do
elems[i] = escape(elems[i])
end
- cmdline.env.QUERY_STRING = "cmd=" .. table.concat(elems, "+")
+ httpurl = httpurl .. "?cmd=" .. table.concat(elems, "+")
+ local cmdline = {
+ "testing/http-unwrap",
+ httpurl
+ }
run_program(cmdline)
end