our $PASTEBIN_PROPCOLS = join ", ", @PASTEBIN_PROPS;
our $PASTEBIN_PROPPLACES = join ", ", map "?", @PASTEBIN_PROPS;
+sub check_lang ($) {
+ my ($lang) = @_;
+
+ return unless defined $lang;
+ my $db = open_db;
+ @{$db->selectall_arrayref
+ ("SELECT lang FROM odin_pastebin_lang WHERE lang = ?", undef, $lang)}
+ or fail "unknown language `$lang'";
+}
+
sub new_pastebin (\%) {
my ($new) = @_;
my $tag;
merge_hash %$new, %PASTEBIN_DEFAULTS;
+ check_lang $new->{lang};
xact {
$tag = encode_tag next_seq $db, "odin_pastebin_seq";
insert_record $db, "odin_pastebin",
my $db = open_db;
my $editp = 0;
+ check_lang $new->{lang};
xact {
get_pastebin_check_editkey_or_owner $db, $tag, $editkey, my %old;
for my $p (@PASTEBIN_PROPS) {
my ($db, $gen) = @_;
for (my $try = 0; $try < $MAIL_MAXGENTRY; $try++) {
- my $l = $gen->gen;
+ my $l = lc $gen->gen;
return $l
unless $db->selectrow_arrayref
("SELECT 1 FROM odin_mailredir WHERE lpart = ? AND dom = ?",
while (@l < $n) {
my $l = Odin::gen_redir_name $db, $gen;
insert_record $db, "odin_mailredir",
- lpart => $l, dom => $dom, owner => $WHO, st => 'live',
+ lpart => $l, dom => $dom, st => 'live',
+ owner => $WHO, creator => $WHO,
recip => $r->{recip} // qualify_recip $Odin::WHO,
expire => $r->{expire} // -1,
comment => $r->{comment} // "";
for (my $i = 0; $i < $n; $i++) { push @l, gen_redir_name $db, $gen; }
for my $l (@l) {
insert_record $db, "odin_mailredir",
- lpart => $l, dom => $dom, owner => $WHO,
+ lpart => $l, dom => $dom, owner => $WHO, creator => $WHO,
st => 'reserved', expire => $NOW + $MAIL_AGEMAX_RESV;
}
check_redir_limits $db;