#include #include #include "libpq-fe.h" #include static void exit_nicely(PGconn *conn) { PQfinish(conn); exit(1); } int main(int argc, char **argv) { PGconn *conn; PGresult *res; int nFields; int j,i; /* char *password; const char *passFileName = "/srv/bdd/pipi-system.pass"; FILE *passFile; passFile = fopen(passFileName, "r"); fgets(password,127,passFile); fclose(passFile); printf("%-15s",password); const char *connfirst = "dbname='pipi-system' user=pipiadmin password="; //int lgt = strlen(connfirst) + strlen(password); char * conninfo = (char *) malloc(256); strcpy(conninfo,connfirst); strcat(conninfo,password); /* Crée une connexion à la base de données */ char *conninfo = "dbname='pipi-system' user=pipiadmin password='oaelEAAZH3Pr+hej43NnISY+RqkDpl09EHqzWu4XGQWUkG/Tkb+an2Triybhog/lkb/NRYK6b277duP0d3MF'"; conn = PQconnectdb(conninfo); /* Vérifier que la connexion au backend a été faite avec succès */ if (PQstatus(conn) != CONNECTION_OK) { fprintf(stderr, "Connection to database failed: %s", PQerrorMessage(conn)); exit_nicely(conn); } /* Initialise un search path sûr, pour qu'un utilisateur malveillant ne puisse prendre le contrôle. */ res = PQexec(conn, "SELECT pg_catalog.set_config('search_path', '', false)"); if (PQresultStatus(res) != PGRES_TUPLES_OK) { fprintf(stderr, "SET failed: %s", PQerrorMessage(conn)); PQclear(res); exit_nicely(conn); } /* * Il faut libérer PGresult avec PQclear dès que l'on en a plus besoin pour * éviter les fuites de mémoire. */ PQclear(res); //res = PQprepare(conn,"GettingAllLoginGitUsersInfo","SELECT * FROM $1",1,NULL); //const char * tablename = "git-users"; //res = PQexecPrepared(conn,"GettingAllLoginGitUsersInfo",1,"git-users",NULL,NULL,0); res = PQexec(conn,"SELECT * FROM login.\"git-users\""); /* affiche d'abord les noms des attributs */ nFields = PQnfields(res); fprintf(stderr, PQerrorMessage(conn)); /* puis affiche les lignes */ for (i = 0; i < PQntuples(res); i++) { printf("ssh-ed25519 %s\n",PQgetvalue(res,i,3)); //printf("environment=\"GIT_USER_UID=%s\" ssh-ed25519 %s\n",PQgetvalue(res, i, 1),PQgetvalue(res,i,3)); } PQclear(res); /* ferme la connexion à la base et nettoie */ PQfinish(conn); return 0; }