summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRichard Ipsum <richard.ipsum@codethink.co.uk>2014-01-24 17:09:39 +0000
committerRichard Ipsum <richard.ipsum@codethink.co.uk>2014-01-24 17:09:39 +0000
commit6e67115735b5f834762f6a8fccbcf5a948a0923f (patch)
treef021369f464cfa3ca8953dabedb51a8b34b24956
parentdec3f31ad4ee0c95709fb771dd2a04010096ce2a (diff)
downloadgitano-6e67115735b5f834762f6a8fccbcf5a948a0923f.tar.gz
more things
-rwxr-xr-xcgi/gitano-smart-http.cgi59
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