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 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

View File

@ -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;
@ -55,7 +55,7 @@ main(int argc, char **argv)
c = fgetc(fd); c = fgetc(fd);
} }
fclose(fd); fclose(fd);
printf("## Maintenant les repos ##\n\n"); printf("## Maintenant les repos ##\n\n");
// Récupère le mdp à la BDD // Récupère le mdp à la BDD
@ -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)
@ -118,7 +122,7 @@ main(int argc, char **argv)
printf("\n"); printf("\n");
} }
PQclear(res); PQclear(res);
PQfinish(conn); PQfinish(conn);
return 0; return 0;

View File

@ -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;

View File

@ -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$