summaryrefslogtreecommitdiffstats
path: root/Bugzilla/Quantum/Legacy.pm
diff options
context:
space:
mode:
Diffstat (limited to 'Bugzilla/Quantum/Legacy.pm')
-rw-r--r--Bugzilla/Quantum/Legacy.pm47
1 files changed, 47 insertions, 0 deletions
diff --git a/Bugzilla/Quantum/Legacy.pm b/Bugzilla/Quantum/Legacy.pm
new file mode 100644
index 000000000..73e877af3
--- /dev/null
+++ b/Bugzilla/Quantum/Legacy.pm
@@ -0,0 +1,47 @@
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+# This Source Code Form is "Incompatible With Secondary Licenses", as
+# defined by the Mozilla Public License, v. 2.0.
+
+package Bugzilla::Quantum::Legacy;
+use Mojo::Base 'Mojolicious::Controller';
+use File::Spec::Functions qw(catfile);
+use Bugzilla::Constants qw(bz_locations);
+use Taint::Util qw(untaint);
+use Sub::Name qw(subname);
+use autodie;
+
+_load_cgi(index_cgi => 'index.cgi');
+_load_cgi(show_bug => 'show_bug.cgi');
+
+sub _load_cgi {
+ my ($name, $file) = @_;
+ my $content;
+ {
+ local $/ = undef;
+ open my $fh, '<', catfile(bz_locations->{cgi_path}, $file);
+ $content = <$fh>;
+ untaint($content);
+ close $fh;
+ }
+ my $pkg = __PACKAGE__ . '::' . $name;
+ my @lines = (
+ qq{package $pkg;},
+ qq{#line 1 "$file"},
+ "sub { my (\$self) = \@_; $content };"
+ );
+ my $code = join "\n", @lines;
+ my $sub = _eval($code);
+ {
+ no strict 'refs'; ## no critic (strict)
+ *{ $name } = subname($name, $sub);
+ }
+}
+
+sub _eval { ## no critic (unpack)
+ return eval $_[0]; ## no critic (eval)
+}
+
+1; \ No newline at end of file