Ajout des sections dans le cgit-config-gen.

This commit is contained in:
Mysaa Java 2021-06-18 20:04:37 +02:00
parent 5edb145822
commit 09af348180
4 changed files with 21 additions and 15 deletions

View File

@ -15,6 +15,8 @@ auth-keys-gen: authKeysPg.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)
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
cp pam_oath_key.so /lib/security

View File

@ -26,7 +26,7 @@ main(int argc, char **argv)
PGconn *conn;
PGresult *res;
int i;
char* lastRgid;
// Euhhhhhhhhhh
/*
DIR *dp;
@ -55,7 +55,7 @@ main(int argc, char **argv)
c = fgetc(fd);
}
fclose(fd);
printf("## Maintenant les repos ##\n\n");
// Récupère le mdp à la BDD
@ -72,7 +72,6 @@ main(int argc, char **argv)
fclose(dbPassFile);
connInfo[pos] = '\'';
fprintf(stderr,"On va tenter de se connecter à la bdd en tant que %d\n",geteuid());
// Connecte à la BDD
conn = PQconnectdb(connInfo);
@ -95,18 +94,23 @@ main(int argc, char **argv)
// Demande les données à la BDD
const char const * sqlParamValues[] = {"1"};
res = PQexecParams(conn,"SELECT path,owner,description,logoUrl FROM git.\"ReadableRepos\"($1)",1,NULL,sqlParamValues,NULL,NULL,1);
const char const * sqlParamValues[] = {"0"};
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) {
fprintf(stderr,"Impossible de lancer la requête SQL pour la liste des repos: %s",PQerrorMessage(conn));
PQclear(res);
PQfinish(conn);
return 1;
}
lastRgid = "";
// Renvoie le résultat à travers stdout
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.path=/srv/git/%s\n",PQgetvalue(res,i,0));
if(PQgetisnull(res,i,1)!=1)
@ -118,7 +122,7 @@ main(int argc, char **argv)
printf("\n");
}
PQclear(res);
PQfinish(conn);
return 0;

View File

@ -28,7 +28,7 @@ BEGIN
FROM git.perms
JOIN git.repos ON repoID=repos."ID"
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
THEN RETURN selectedrepo;
@ -38,8 +38,8 @@ BEGIN
SELECT MAX('accessType')
INTO selectedrepo
FROM git.perms
JOIN git.repos ON repoID=-repos."groupeID"
WHERE repos.path=gitrepo AND userID=gituserid;
JOIN git.repos ON "repoID"=-repos."groupeID"
WHERE repos.path=gitrepo AND "userID"=gituserid;
IF selectedrepo != NULL
THEN RETURN selectedrepo;
@ -51,7 +51,7 @@ BEGIN
FROM git.perms
JOIN git.appartenances ON appartenances."groupeID"=-perms."userID"
JOIN git.repos ON "repoID"=-repos."groupeID"
WHERE repos.path=gitrepo AND userID=gituserid;
WHERE repos.path=gitrepo AND "userID"=gituserid;
RETURN selectedRepo;

View File

@ -18,26 +18,26 @@ BEGIN
SELECT repos.*
FROM git.perms
JOIN git.repos ON "repoID"=repos."ID"
WHERE "accessType">'READ' AND "userID"=gituserid
WHERE "accessType">='READ' AND "userID"=gituserid
UNION
/* groupe.repo */
SELECT repos.*
FROM git.perms
JOIN git.repos ON "repoID"=repos."ID"
JOIN git.appartenances ON appartenances."groupeID"=-perms."userID"
WHERE "accessType">'READ' AND appartenances."utilisateurID"=gituserid
WHERE "accessType">='READ' AND appartenances."utilisateurID"=gituserid
UNION
/* user.repoGroup */
SELECT repos.*
FROM git.perms
JOIN git.repos ON "repoID"=-repos."groupeID"
WHERE "accessType">'READ' AND "userID"=gituserid
WHERE "accessType">='READ' AND "userID"=gituserid
UNION
/* groupe.repoGroupe */
SELECT repos.*
FROM git.perms
JOIN git.appartenances ON appartenances."groupeID"=-perms."userID"
JOIN git.repos ON "repoID"=-repos."groupeID"
WHERE "accessType">'READ' AND "userID"=gituserid;
WHERE "accessType">='READ' AND "userID"=gituserid;
END
$code$