Ajout des sections dans le cgit-config-gen.
This commit is contained in:
parent
5edb145822
commit
09af348180
2
Makefile
2
Makefile
@ -15,6 +15,8 @@ auth-keys-gen: authKeysPg.c
|
|||||||
cgit-config-gen: cgit-config-gen.c
|
cgit-config-gen: cgit-config-gen.c
|
||||||
gcc cgit-config-gen.c -o cgit-config-gen -L/usr/server/postgresql/lib -I/usr/server/postgresql/include -lpq $(CFLAGS)
|
gcc cgit-config-gen.c -o cgit-config-gen -L/usr/server/postgresql/lib -I/usr/server/postgresql/include -lpq $(CFLAGS)
|
||||||
|
|
||||||
|
install-sql: sql/AccessType.sql sql/ReadableRepos.sql
|
||||||
|
/usr/server/postgresql/bin/psql -Upostgres -dpipi -f sql/AccessType.sql -f sql/ReadableRepos.sql
|
||||||
|
|
||||||
install: all
|
install: all
|
||||||
cp pam_oath_key.so /lib/security
|
cp pam_oath_key.so /lib/security
|
||||||
|
|||||||
@ -26,7 +26,7 @@ main(int argc, char **argv)
|
|||||||
PGconn *conn;
|
PGconn *conn;
|
||||||
PGresult *res;
|
PGresult *res;
|
||||||
int i;
|
int i;
|
||||||
|
char* lastRgid;
|
||||||
// Euhhhhhhhhhh
|
// Euhhhhhhhhhh
|
||||||
/*
|
/*
|
||||||
DIR *dp;
|
DIR *dp;
|
||||||
@ -72,7 +72,6 @@ main(int argc, char **argv)
|
|||||||
fclose(dbPassFile);
|
fclose(dbPassFile);
|
||||||
connInfo[pos] = '\'';
|
connInfo[pos] = '\'';
|
||||||
|
|
||||||
fprintf(stderr,"On va tenter de se connecter à la bdd en tant que %d\n",geteuid());
|
|
||||||
|
|
||||||
// Connecte à la BDD
|
// Connecte à la BDD
|
||||||
conn = PQconnectdb(connInfo);
|
conn = PQconnectdb(connInfo);
|
||||||
@ -95,18 +94,23 @@ main(int argc, char **argv)
|
|||||||
|
|
||||||
|
|
||||||
// Demande les données à la BDD
|
// Demande les données à la BDD
|
||||||
const char const * sqlParamValues[] = {"1"};
|
const char const * sqlParamValues[] = {"0"};
|
||||||
res = PQexecParams(conn,"SELECT path,owner,description,logoUrl FROM git.\"ReadableRepos\"($1)",1,NULL,sqlParamValues,NULL,NULL,1);
|
res = PQexecParams(conn,"SELECT path,owner,description,logoUrl,groupeID,gdr.nom FROM git.\"ReadableRepos\"($1) JOIN git.\"groupesDeRepo\" AS gdr ON gdr.\"ID\"=groupeID ORDER BY groupeID",1,NULL,sqlParamValues,NULL,NULL,0);
|
||||||
if (PQresultStatus(res) != PGRES_TUPLES_OK) {
|
if (PQresultStatus(res) != PGRES_TUPLES_OK) {
|
||||||
fprintf(stderr,"Impossible de lancer la requête SQL pour la liste des repos: %s",PQerrorMessage(conn));
|
fprintf(stderr,"Impossible de lancer la requête SQL pour la liste des repos: %s",PQerrorMessage(conn));
|
||||||
PQclear(res);
|
PQclear(res);
|
||||||
PQfinish(conn);
|
PQfinish(conn);
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
lastRgid = "";
|
||||||
// Renvoie le résultat à travers stdout
|
// Renvoie le résultat à travers stdout
|
||||||
for (i = 0; i < PQntuples(res); i++)
|
for (i = 0; i < PQntuples(res); i++)
|
||||||
{
|
{
|
||||||
|
|
||||||
|
if(PQgetisnull(res,i,4)!=1 && (strcmp(PQgetvalue(res, i, 4),lastRgid)!=0)){
|
||||||
|
lastRgid = PQgetvalue(res, i, 4);
|
||||||
|
printf("\nsection=%s\n\n",PQgetvalue(res,i,5));
|
||||||
|
}
|
||||||
printf("repo.url=%s\n",PQgetvalue(res,i,0));
|
printf("repo.url=%s\n",PQgetvalue(res,i,0));
|
||||||
printf("repo.path=/srv/git/%s\n",PQgetvalue(res,i,0));
|
printf("repo.path=/srv/git/%s\n",PQgetvalue(res,i,0));
|
||||||
if(PQgetisnull(res,i,1)!=1)
|
if(PQgetisnull(res,i,1)!=1)
|
||||||
|
|||||||
@ -28,7 +28,7 @@ BEGIN
|
|||||||
FROM git.perms
|
FROM git.perms
|
||||||
JOIN git.repos ON repoID=repos."ID"
|
JOIN git.repos ON repoID=repos."ID"
|
||||||
JOIN git.appartenances ON appartenances."groupeID"=-perms."userID"
|
JOIN git.appartenances ON appartenances."groupeID"=-perms."userID"
|
||||||
WHERE repos.path=gitrepo AND appartenances.utilisateurID=gituserid;
|
WHERE repos.path=gitrepo AND appartenances."utilisateurID"=gituserid;
|
||||||
|
|
||||||
IF selectedrepo != NULL
|
IF selectedrepo != NULL
|
||||||
THEN RETURN selectedrepo;
|
THEN RETURN selectedrepo;
|
||||||
@ -38,8 +38,8 @@ BEGIN
|
|||||||
SELECT MAX('accessType')
|
SELECT MAX('accessType')
|
||||||
INTO selectedrepo
|
INTO selectedrepo
|
||||||
FROM git.perms
|
FROM git.perms
|
||||||
JOIN git.repos ON repoID=-repos."groupeID"
|
JOIN git.repos ON "repoID"=-repos."groupeID"
|
||||||
WHERE repos.path=gitrepo AND userID=gituserid;
|
WHERE repos.path=gitrepo AND "userID"=gituserid;
|
||||||
|
|
||||||
IF selectedrepo != NULL
|
IF selectedrepo != NULL
|
||||||
THEN RETURN selectedrepo;
|
THEN RETURN selectedrepo;
|
||||||
@ -51,7 +51,7 @@ BEGIN
|
|||||||
FROM git.perms
|
FROM git.perms
|
||||||
JOIN git.appartenances ON appartenances."groupeID"=-perms."userID"
|
JOIN git.appartenances ON appartenances."groupeID"=-perms."userID"
|
||||||
JOIN git.repos ON "repoID"=-repos."groupeID"
|
JOIN git.repos ON "repoID"=-repos."groupeID"
|
||||||
WHERE repos.path=gitrepo AND userID=gituserid;
|
WHERE repos.path=gitrepo AND "userID"=gituserid;
|
||||||
|
|
||||||
RETURN selectedRepo;
|
RETURN selectedRepo;
|
||||||
|
|
||||||
|
|||||||
@ -18,26 +18,26 @@ BEGIN
|
|||||||
SELECT repos.*
|
SELECT repos.*
|
||||||
FROM git.perms
|
FROM git.perms
|
||||||
JOIN git.repos ON "repoID"=repos."ID"
|
JOIN git.repos ON "repoID"=repos."ID"
|
||||||
WHERE "accessType">'READ' AND "userID"=gituserid
|
WHERE "accessType">='READ' AND "userID"=gituserid
|
||||||
UNION
|
UNION
|
||||||
/* groupe.repo */
|
/* groupe.repo */
|
||||||
SELECT repos.*
|
SELECT repos.*
|
||||||
FROM git.perms
|
FROM git.perms
|
||||||
JOIN git.repos ON "repoID"=repos."ID"
|
JOIN git.repos ON "repoID"=repos."ID"
|
||||||
JOIN git.appartenances ON appartenances."groupeID"=-perms."userID"
|
JOIN git.appartenances ON appartenances."groupeID"=-perms."userID"
|
||||||
WHERE "accessType">'READ' AND appartenances."utilisateurID"=gituserid
|
WHERE "accessType">='READ' AND appartenances."utilisateurID"=gituserid
|
||||||
UNION
|
UNION
|
||||||
/* user.repoGroup */
|
/* user.repoGroup */
|
||||||
SELECT repos.*
|
SELECT repos.*
|
||||||
FROM git.perms
|
FROM git.perms
|
||||||
JOIN git.repos ON "repoID"=-repos."groupeID"
|
JOIN git.repos ON "repoID"=-repos."groupeID"
|
||||||
WHERE "accessType">'READ' AND "userID"=gituserid
|
WHERE "accessType">='READ' AND "userID"=gituserid
|
||||||
UNION
|
UNION
|
||||||
/* groupe.repoGroupe */
|
/* groupe.repoGroupe */
|
||||||
SELECT repos.*
|
SELECT repos.*
|
||||||
FROM git.perms
|
FROM git.perms
|
||||||
JOIN git.appartenances ON appartenances."groupeID"=-perms."userID"
|
JOIN git.appartenances ON appartenances."groupeID"=-perms."userID"
|
||||||
JOIN git.repos ON "repoID"=-repos."groupeID"
|
JOIN git.repos ON "repoID"=-repos."groupeID"
|
||||||
WHERE "accessType">'READ' AND "userID"=gituserid;
|
WHERE "accessType">='READ' AND "userID"=gituserid;
|
||||||
END
|
END
|
||||||
$code$
|
$code$
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user