-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathUtils.pm
122 lines (98 loc) · 2.01 KB
/
Utils.pm
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
# -*- Mode: perl; indent-tabs-mode: nil -*-
#
# Util routines
#
# Copyright (C) 2008 - 2009 Nano-opt
# Licence: GPL
package Utils;
use strict;
use base qw(Exporter);
use MIME::Base64;
use Encode;
use Constants;
use LMConfig;
%Utils::EXPORT = qw(
print_base64
get_stdin
exec_from_cgi
filter_none
filter_js
filter_html_lb
filter_html_nb
filter_html
filter_text
filter_url_quote
);
sub print_base64 {
my ($text) = @_;
print MIME::Base64::encode_base64($text, '') . "\n";
}
sub get_stdin {
my ($text) = @_;
print $text if ($text ne '');
print ": ";
my $value = <STDIN>;
chomp($value);
return $value;
}
sub exec_from_cgi {
# SERVER_SOFTWARE is required to be defined for all by CGI spec
return exists $ENV{'SERVER_SOFTWARE'} ? TRUE : FALSE;
}
# --------------- template_filters -------------
sub filter_none {
return $_[0];
}
sub filter_js {
my ($var) = @_;
$var =~ s/([\\\'\"\/])/\\$1/g;
$var =~ s/\n/\\n/g;
$var =~ s/\r/\\r/g;
$var =~ s/\@/\\x40/g; # anti-spam for email addresses
return $var;
}
sub filter_html_lb {
my ($var) = @_;
$var =~ s/\r\n/\
/g;
$var =~ s/\n\r/\
/g;
$var =~ s/\r/\
/g;
$var =~ s/\n/\
/g;
return $var;
}
sub filter_html_nb {
my ($var) = @_;
$var =~ s/ /\ /g;
$var =~ s/-/\‑/g;
return $var ;
}
sub filter_html {
my ($var) = Template::Filters::html_filter(@_);
$var =~ s/\@/\@/g;
return $var;
}
sub filter_text {
my ($var) = @_;
$var =~ s/<[^>]*>//g;
$var =~ s/\@/@/g;
$var =~ s/\</</g;
$var =~ s/\>/>/g;
$var =~ s/\"/\"/g;
$var =~ s/\&/\&/g;
return $var;
}
sub filter_url_quote {
my ($var) = @_;
# IF utf8 mode, must utf8::encode 'var'
$var =~ s/([^a-zA-Z0-9_\-.])/uc sprintf("%%%02x",ord($1))/eg;
return $var;
}
# --------------- private -------------
1;
__END__
=head1 NAME
=head1 SYNOPSIS
=head1 DESCRIPTION
=head1 METHODS
=over
=item C<>
=back