58 lines
1.5 KiB
Perl
58 lines
1.5 KiB
Perl
use v5.10.1;
|
|
use strict;
|
|
use warnings;
|
|
use Carp;
|
|
|
|
use ACU::LDAP;
|
|
|
|
sub update_defense
|
|
{
|
|
my $args = shift;
|
|
|
|
my $project_id = $args->{param}{id};
|
|
my $year = $args->{param}{year} // LDAP::get_year;
|
|
|
|
if (! $project_id) {
|
|
log ERROR, "No project_id given.";
|
|
return "No project_id given";
|
|
}
|
|
|
|
my $defense_id = $args->{param}{defense_id};
|
|
|
|
if (! $defense_id) {
|
|
log ERROR, "No defense_id given.";
|
|
return "No defense_id given";
|
|
}
|
|
|
|
my $defense;
|
|
if (exists $args->{files}{"$defense_id.xml"}) {
|
|
$defense = $args->{files}{"$defense_id.xml"};
|
|
}
|
|
if (! $defense) {
|
|
log ERROR, "Invalid $defense_id.xml received!";
|
|
return "Invalid $defense_id.xml received!";
|
|
}
|
|
|
|
log INFO, "Update $year/$project_id/defenses/$defense_id.xml";
|
|
|
|
if (! -e "$main::intradata/$year/$project_id/defenses/") {
|
|
mkdir "$main::intradata/$year/$project_id/defenses/";
|
|
}
|
|
if (! -e "$main::intradata/$year/$project_id/traces/") {
|
|
mkdir "$main::intradata/$year/$project_id/traces/";
|
|
}
|
|
if (! -e "$main::intradata/$year/$project_id/traces/defense_$defense_id/") {
|
|
mkdir "$main::intradata/$year/$project_id/traces/defense_$defense_id/";
|
|
my ($login, $pass, $uid, $gid) = getpwnam("www-data");
|
|
chown $uid, $gid, "$main::intradata/$year/$project_id/traces/defense_$defense_id/";
|
|
chmod 0775, "$main::intradata/$year/$project_id/traces/defense_$defense_id/";
|
|
}
|
|
|
|
open my $out, ">", "$main::intradata/$year/$project_id/defenses/$defense_id.xml";
|
|
print $out $defense;
|
|
close $out;
|
|
|
|
return "Ok";
|
|
}
|
|
|
|
1;
|