52 char BuildVersion[]=
"delagent build version: " VERSION_S 
" r(" COMMIT_HASH_S 
").\n";
 
   69 void usage (
char *Name)
 
   71   fprintf(stderr,
"Usage: %s [options]\n",Name);
 
   72   fprintf(stderr,
"  List or delete uploads.\n");
 
   73   fprintf(stderr,
"  Options\n");
 
   74   fprintf(stderr,
"  -i   :: Initialize the DB, then exit.\n");
 
   75   fprintf(stderr,
"  -u   :: List uploads IDs.\n");
 
   76   fprintf(stderr,
"  -U # :: Delete upload ID.\n");
 
   77   fprintf(stderr,
"  -f   :: List folder IDs.\n");
 
   78   fprintf(stderr,
"  -F # :: Delete folder ID and all uploads under this folder.\n");
 
   79   fprintf(stderr,
"          Folder '1' is the default folder.  '-F 1' will delete\n");
 
   80   fprintf(stderr,
"          every upload and folder in the navigation tree.\n");
 
   81   fprintf(stderr,
"          use -P to indicate parent of the copied folder.\n");
 
   82   fprintf(stderr,
"  -s   :: Run from the scheduler.\n");
 
   83   fprintf(stderr,
"  -T   :: TEST -- do not update the DB or delete any files (just pretend)\n");
 
   84   fprintf(stderr,
"  -v   :: Verbose (-vv for more verbose)\n");
 
   85   fprintf(stderr,
"  -c # :: Specify the directory for the system configuration\n");
 
   86   fprintf(stderr,
"  -V   :: print the version info, then exit.\n");
 
   87   fprintf(stderr,
"  --user|-n # :: user name\n");
 
   88   fprintf(stderr,
"  --password|-p # :: password\n");
 
  100   if (0 == returnedCode)
 
  102     fprintf(stdout, 
"The %s '%ld' is deleted by the user '%s'.\n", kind, 
id, userName);
 
  106     fprintf(stdout, 
"Deletion failed: user '%s' does not have the permsssion to delete the %s '%ld', or the %s '%ld' does not exist.\n", userName, kind, 
id, kind, 
id);
 
  151 int main (
int argc, 
char *argv[])
 
  154   int  listProj=0, listFolder=0;
 
  155   long delUpload=0, delFolder=0, delFolderParent=0;
 
  157   char *agentDesc = 
"Deletes upload.  Other list/delete options available from the command line.";
 
  160   char agentRev[myBUFSIZ];
 
  162   char *userName = NULL;
 
  163   char *password = NULL;
 
  166   int  returnedCode = 0;
 
  170   static struct option long_options[] =
 
  172     {
"user", required_argument, 0, 
'n'},
 
  173     {
"password", required_argument, 0, 
'p'},
 
  177   while ((c = getopt_long (argc, argv, 
"n:p:ifF:lL:sTuU:P:vVc:h",
 
  178          long_options, &optionIndex)) != -1)
 
  196         delFolder=atol(optarg);
 
  200         delFolderParent=atol(optarg);
 
  215         delUpload=atol(optarg);
 
  244       LOG_FATAL(
"User name or password is invalid.\n");
 
  250     sprintf(agentRev, 
"%s.%s", version, commitHash);
 
  258     if (returnedCode < 0)
 
  266     if (returnedCode < 0)
 
  274       returnedCode = 
deleteUpload(delUpload, userId, userPerm);
 
  280       returnedCode = 
deleteFolder(delFolder, delFolderParent, userId, userPerm);
 
  292   return(returnedCode);
 
PGconn * pgConn
Database connection.
void doSchedulerTasks()
process the jobs from scheduler
int authentication(char *user, char *password, int *userId, int *userPerm)
if this account is valid
void exitNow(int exitVal)
Exit function. This does all cleanup and should be used instead of calling exit() or main() return.
int Verbose
Verbose level.
int listUploads(int userId, int userPerm)
List every upload ID.
int listFolders(int userId, int userPerm)
List every folder.
int deleteUpload(long uploadId, int userId, int userPerm)
Given an upload ID, delete it.
int deleteFolder(long cFolder, long pFolder, int userId, int userPerm)
recursively delete a folder
int main(int argc, char *argv[])
main function for the delagent
void writeMessageAfterDelete(char *kind, long id, char *userName, int returnedCode)
Write message to user after success/failure.
FUNCTION int fo_GetAgentKey(PGconn *pgConn, const char *agent_name, long Upload_pk, const char *rev, const char *agent_desc)
Get the latest enabled agent key (agent_pk) from the database.
char * fo_sysconfig(const char *sectionname, const char *variablename)
gets a system configuration variable from the configuration data.
void fo_scheduler_connect(int *argc, char **argv, PGconn **db_conn)
Establish a connection between an agent and the scheduler.
FUNCTION void usage(char *name)