diff options
author | Richard Ipsum <richard.ipsum@codethink.co.uk> | 2014-01-24 17:09:39 +0000 |
---|---|---|
committer | Richard Ipsum <richard.ipsum@codethink.co.uk> | 2014-01-24 17:09:39 +0000 |
commit | 6e67115735b5f834762f6a8fccbcf5a948a0923f (patch) | |
tree | f021369f464cfa3ca8953dabedb51a8b34b24956 | |
parent | dec3f31ad4ee0c95709fb771dd2a04010096ce2a (diff) | |
download | gitano-6e67115735b5f834762f6a8fccbcf5a948a0923f.tar.gz |
more things
-rwxr-xr-x | cgi/gitano-smart-http.cgi | 59 |
1 files changed, 22 insertions, 37 deletions
diff --git a/cgi/gitano-smart-http.cgi b/cgi/gitano-smart-http.cgi index d73d043..1584fdf 100755 --- a/cgi/gitano-smart-http.cgi +++ b/cgi/gitano-smart-http.cgi @@ -1,33 +1,25 @@ -#!/usr/bin/lua5.1 +#!/usr/bin/env lua5.1 -require "luxio" -sio = require "luxio.simple" +local gitano = require "gitano" +local gall = require "gall" +local luxio = require "luxio" +local sio = require "luxio.simple" +local sp = require "luxio.subprocess" -stream = sio.stderr - -function is_authorized(cmdline) - --print("cmdline: " .. cmdline) - --print("package.path: " .. package.path .. '\n') - - local gitano = require "gitano" - local gall = require "gall" - local luxio = require "luxio" - local sio = require "luxio.simple" - local sp = require "luxio.subprocess" +gitano.config.lib_bin_path("/usr/lib/gitano/bin") +gitano.config.share_path("/usr/share/gitano") - gitano.config.lib_bin_path("/usr/lib/gitano/bin") - gitano.config.share_path("/usr/share/gitano") +stream = sio.stderr +function is_authorized(user, cmdline) local repo_root = "/home/git/repos" - local username = "richardipsum" -- TODO: sort out + local username = user local keytag = "default" local authorized = false gitano.config.repo_path(repo_root) - --gitano.log.set_source("ssh") - local transactionid = gitano.log.syslog.open() local parsed_cmdline, warnings = gitano.util.parse_cmdline(cmdline) @@ -202,32 +194,25 @@ function parse_request(request_method) end end ---if command == "git-upload-pack" or command == "git-receive-pack" then - if request_method == "GET" or request_method == "POST" then + local authenticated_user = os.getenv("REMOTE_USER") local cmdline = parse_request(request_method) - stream:write('cmdline: ' .. cmdline .. '\n') -- debug - - local authorized = is_authorized(cmdline) + if authenticated_user and cmdline then + stream:write('cmdline: ' .. cmdline .. '\n') -- debug - stream:write("authorized: " .. tostring(authorized) .. '\n') -- debug + local authorized = is_authorized(authenticated_user, cmdline) - if authorized == true then - -- set the push env var or whatever if push access is required + stream:write("authorized: " .. tostring(authorized) .. '\n') -- debug - os.execute("/usr/lib/git-core/git-http-backend") - else - print("Status: 403 Forbidden\r\n\r\n") + if authorized == true then + -- set the push env var or whatever if push access is required + os.execute("/usr/lib/git-core/git-http-backend") + else + print("Status: 403 Forbidden\r\n\r\n") + end end else -- some sort of error happens stream:write("no request method?") end - ---for _, name in pairs(names) do --- if envbackup[name] then --- stream:write("out: " .. name .. ": " .. envbackup[name] .. '\n') -- debug --- luxio.setenv(name, envbackup[name]) --- end ---end |