Toon posts:

debian: lighttpd + webdav + git

Pagina: 1
Acties:

  • Mister_X
  • Registratie: Februari 2000
  • Laatst online: 25-05 10:54
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]


  • gertvdijk
  • Registratie: November 2003
  • Laatst online: 31-05 11:53
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?

Follow me on TwitterMy blog for articles on security and other stuff.


  • Mister_X
  • Registratie: Februari 2000
  • Laatst online: 25-05 10:54
http://www.toofishes.net/...-http-transport-lighttpd/

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

  • Mister_X
  • Registratie: Februari 2000
  • Laatst online: 25-05 10:54
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.

  • Mister_X
  • Registratie: Februari 2000
  • Laatst online: 25-05 10:54
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]


  • gertvdijk
  • Registratie: November 2003
  • Laatst online: 31-05 11:53
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]

Follow me on TwitterMy blog for articles on security and other stuff.


  • Mister_X
  • Registratie: Februari 2000
  • Laatst online: 25-05 10:54
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]


  • gertvdijk
  • Registratie: November 2003
  • Laatst online: 31-05 11:53
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...

Follow me on TwitterMy blog for articles on security and other stuff.

Pagina: 1


Tweakers maakt gebruik van cookies

Tweakers plaatst functionele en analytische cookies voor het functioneren van de website en het verbeteren van de website-ervaring. Deze cookies zijn noodzakelijk. Om op Tweakers relevantere advertenties te tonen en om ingesloten content van derden te tonen (bijvoorbeeld video's), vragen we je toestemming. Via ingesloten content kunnen derde partijen diensten leveren en verbeteren, bezoekersstatistieken bijhouden, gepersonaliseerde content tonen, gerichte advertenties tonen en gebruikersprofielen opbouwen. Hiervoor worden apparaatgegevens, IP-adres, geolocatie en surfgedrag vastgelegd.

Meer informatie vind je in ons cookiebeleid.

Sluiten

Toestemming beheren

Hieronder kun je per doeleinde of partij toestemming geven of intrekken. Meer informatie vind je in ons cookiebeleid.

Functioneel en analytisch

Deze cookies zijn noodzakelijk voor het functioneren van de website en het verbeteren van de website-ervaring. Klik op het informatie-icoon voor meer informatie. Meer details

janee

    Relevantere advertenties

    Dit beperkt het aantal keer dat dezelfde advertentie getoond wordt (frequency capping) en maakt het mogelijk om binnen Tweakers contextuele advertenties te tonen op basis van pagina's die je hebt bezocht. Meer details

    Tweakers genereert een willekeurige unieke code als identifier. Deze data wordt niet gedeeld met adverteerders of andere derde partijen en je kunt niet buiten Tweakers gevolgd worden. Indien je bent ingelogd, wordt deze identifier gekoppeld aan je account. Indien je niet bent ingelogd, wordt deze identifier gekoppeld aan je sessie die maximaal 4 maanden actief blijft. Je kunt deze toestemming te allen tijde intrekken.

    Ingesloten content van derden

    Deze cookies kunnen door derde partijen geplaatst worden via ingesloten content. Klik op het informatie-icoon voor meer informatie over de verwerkingsdoeleinden. Meer details

    janee