debian: lighttpd + webdav + git

Pagina: 1
Acties:

Acties:
  • 0 Henk 'm!

  • Mister_X
  • Registratie: Februari 2000
  • Laatst online: 17-04 14:07
Beste,
Ik probeer al enige tijd een remote git repo op te zetten d.m.v. http. Ik heb de volgende http url, http://webdav.blaat.com. Hier kan ik netjes naar webdaven (cadaver werkt!).

De opzet:
/home/git voor de repos
/home/webdav voor webdav

In /home/webdav is een symlink (`git`) naar /home/git. De git user is lid van www-data groep en de home dir van git heeft group read en write access (werkt). de user webdav is nog niet relevant, maar de www-data user mag ook in die home folder lezen en schrijven (werkt).

Een git clone werkt ook! het gaat helaas alleen nog mis bij een push:
error: Cannot access URL http://blaat@webdav.blaat.com/git/repo/, return code 22
fatal: git-http-push failed
code 22 is >= http-status 400 (unauthorized?). Maar een curl --location -v op het adres+repo+HEAD geeft gewoon de inhoud weer! (ik heb dus rechten!).

De repo's zijn --bare --shared=0777. De error.log van lighttpd melden geen errors, de access.log meld wel de pogingen, (het inloggen op de webdav en daarna een PROPFIND /git/repo/).

Ben best wel einde raad:
- meeste howto's gaat over apache2 ipv lighttpd

De reden waarom ik het overigens op deze manier aan de praat wil krijgen, webdav is niets meer dan een hulpmiddel om bij verschillende elementen van de server te komen, git is 1 zo'n element. Vandaar de 'symlink' naar een andere home dir, in de webdav home dir komen nog meerdere symlinks naar bv, stable source code of trunk source code.

Op deze manier blijft alles netjes gescheiden maar maak ik het mij wel lastiger, ik vermoed zelf dat het toch met permissions te maken heb, maar kan niet vinden waar het fout gaat.

Als ik su naar www-data kan ik gewoon in de home dir van de git repos schrijven en lezen, zelfs bestaande git bestanden aanpassen.

[edit]

ik zie dat http://webdav.blaat.com/g...s?service=git-upload-pack deze url opgevraagd word in het access log, kan zijn dat webdav dat niet slikt...

de file is ook leeg dan :( hm krijg dan wel een status 200 ipv 401.... :x

[ Voor 5% gewijzigd door Mister_X op 13-06-2011 15:40 ]


Acties:
  • 0 Henk 'm!

  • gertvdijk
  • Registratie: November 2003
  • Laatst online: 26-07 22:48
Misschien kan je eerst eens je configs posten (pastebin evt.). Ik heb zo geen clue wat je precies gedaan hebt namelijk.
En als ik google op lighttpd en git dan krijg ik voorbeelden zonder webdav te configgen; dus native git-lighttpd. Misschien ook een idee?

Kia e-Niro 2021 64 kWh DynamicPlusLine. See my GitHub and my blog for articles on security and other stuff.


Acties:
  • 0 Henk 'm!

  • Mister_X
  • Registratie: Februari 2000
  • Laatst online: 17-04 14:07
http://www.toofishes.net/...-http-transport-lighttpd/

misschien is dit beter dan webdav, thx, dacht niet dat git dit ondersteunde icm lighttpd

Acties:
  • 0 Henk 'm!

  • Mister_X
  • Registratie: Februari 2000
  • Laatst online: 17-04 14:07
grappig - krijg dezelfde melding ... :x clonen gaat, pushen ho maar..

configs?
mwa gewoon lighttpd webdav (die werkt) config en nu nog eentje die lijkt op de toofishes howto.

Acties:
  • 0 Henk 'm!

  • Mister_X
  • Registratie: Februari 2000
  • Laatst online: 17-04 14:07
argh ik ben er bijna!

error: RPC failed; result=22, HTTP code = 417
fatal: The remote end hung up unexpectedly
fatal: The remote end hung up unexpectedly
(HTTP Status 417: Expectation Failed)

dit is de config so far:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
$HTTP["host"] =~ "git.blaat.com" {
    server.errorlog = "/home/git/error.log"
    accesslog.filename = "/home/git/acces.log"
    alias.url += ("" => "/usr/lib/git-core/git-http-backend")
    cgi.assign = ("" => "")
    auth.backend = "htpasswd"
    auth.backend.htpasswd.userfile = "/home/git/passwd.git"
    auth.require = ("" => ("method" => "basic",
                                      "realm" => "git",
                                      "require" => "valid-user"))
    setenv.add-environment = ("GIT_PROJECT_ROOT" => "/home/git",
                                               "GIT_HTTP_EXPORT_ALL" => "")
}


de git files hebben een chown git:ww-data, www-data is lid van de git group.. any ideas?

hier een git_curl_verbose=1 push
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
< HTTP/1.1 200 OK
< Expires: Fri, 01 Jan 1980 00:00:00 GMT
< Pragma: no-cache
< Cache-Control: no-cache, max-age=0, must-revalidate
< Content-Type: application/x-git-receive-pack-advertisement
< Transfer-Encoding: chunked
< Date: Tue, 14 Jun 2011 21:08:24 GMT
< Server: lighttpd/1.4.28
<
* Connection #0 to host git.blaat.com left intact
Counting objects: 17, done.
Compressing objects: 100% (16/16), done.
Writing objects: 100% (16/16), 3.10 KiB, done.
Total 16 (delta 2), reused 0 (delta 0)
* About to connect() to git.blaat.com port 80 (#0)
*   Trying 178.239.xx.xxx... * connected
* Connected to git.blaat.com (178.239.xx.xxx) port 80 (#0)
* Server auth using Basic with user 'blaat'
> POST /adaptor/git-receive-pack HTTP/1.1
Authorization: Basic ZXZlcmRpbzpnZWhlaW0yOSE=
User-Agent: git/1.7.2.5
Host: git.blaat.com
Accept-Encoding: deflate, gzip
Content-Type: application/x-git-receive-pack-request
Accept: application/x-git-receive-pack-result
Content-Length: 3312
Expect: 100-continue

* The requested URL returned error: 417
* Closing connection #0


Clonen werkt, push 'half' :) ik zie het echt even niet. Die post actie komt ook netjes in het acces log:
code:
1
2
217.121.xxx.xxx git.blaat.com - [14/Jun/2011:21:12:21 +0000] "GET /adaptor/info/refs?service=git-receive-pack HTTP/1.1" 401 351
217.121.xxx.xxx git.blaat.com blaat [14/Jun/2011:21:12:22 +0000] "GET /adaptor/info/refs?service=git-receive-pack HTTP/1.1" 20

[ Voor 16% gewijzigd door Mister_X op 14-06-2011 23:20 ]


Acties:
  • 0 Henk 'm!

  • gertvdijk
  • Registratie: November 2003
  • Laatst online: 26-07 22:48
Als ik google op die HTTP 417 error kom ik alleen problemen tegen met mensen die een HTTP-proxy draaien en daarin wat moeten fixen.
Draai je toevallig een (transparante of reverse) proxy?

[ Voor 8% gewijzigd door gertvdijk op 14-06-2011 23:24 ]

Kia e-Niro 2021 64 kWh DynamicPlusLine. See my GitHub and my blog for articles on security and other stuff.


Acties:
  • 0 Henk 'm!

  • Mister_X
  • Registratie: Februari 2000
  • Laatst online: 17-04 14:07
Nee, ik zag inderdaad het probleem en zette mij aan het denken, dus heb even ingelogd op een shell van me werk, en jahoor, daar werkt het....

dus zou het kunnen komen dat ik dit alles probeer van een VM draaiend op me laptop (win7) onder Sun virtualbox? ... (bridged adaptor, in het lokale netwerk hier), het lijkt me sterk maar ben bang dat dat het probleem kan zijn. (het clonen en pushen dus, repo's staan op een vps).

Al met al, mochten er fans van debian+lighttpd+git zijn, alhier een leuke config worth a try voor een eigen public git server :)

password file kun je runnen dmv htpasswd -c filename username, chownen naar root:www-data 0640, git repos 771 git:www-data (er vanuitgaand dat je git onder een eigen user wilt zetten).

oja en dat alles zonder webdav! *D

wat wel raar is, is dat als ik een lege repo clone van de server, hier een test filetje inzet met wat tekst, ik deze wel kan pushen, maar zodra ik wat php code oid ga pushen, gaat het dus ineens fout, echt maf.

[ Voor 47% gewijzigd door Mister_X op 14-06-2011 23:55 ]


Acties:
  • 0 Henk 'm!

  • gertvdijk
  • Registratie: November 2003
  • Laatst online: 26-07 22:48
Mister_X schreef op dinsdag 14 juni 2011 @ 23:30:
dus zou het kunnen komen dat ik dit alles probeer van een VM draaiend op me laptop (win7) onder Sun virtualbox? ... (bridged adaptor, in het lokale netwerk hier), het lijkt me sterk maar ben bang dat dat het probleem kan zijn. (het clonen en pushen dus, repo's staan op een vps).
Ik denk dat *ergens* in je route totaan die lighttpd machine een transparante proxy draait die roet in het eten gooit. Runt je ISP of VPS boer stiekem niet een transparante proxy?
Draai lighttpd eens op een andere poort, bijv. 8080/8000/whatever en kijk of het dan werkt. Je kan ook proberen een SSH tunnel te maken naar die doos (local port forwarding) en kijken wat er dan gebeurt...

Kia e-Niro 2021 64 kWh DynamicPlusLine. See my GitHub and my blog for articles on security and other stuff.

Pagina: 1