1 |
diff -Nur --no-dereference smeserver-php-3.0.0.old/root/etc/e-smith/templates/etc/httpd/conf/httpd.conf/20LoadModule80PHP smeserver-php-3.0.0/root/etc/e-smith/templates/etc/httpd/conf/httpd.conf/20LoadModule80PHP |
2 |
--- smeserver-php-3.0.0.old/root/etc/e-smith/templates/etc/httpd/conf/httpd.conf/20LoadModule80PHP 2021-03-07 15:11:54.624000000 -0500 |
3 |
+++ smeserver-php-3.0.0/root/etc/e-smith/templates/etc/httpd/conf/httpd.conf/20LoadModule80PHP 2021-03-08 01:04:26.910000000 -0500 |
4 |
@@ -3,8 +3,8 @@ |
5 |
# default we return with nothing activated |
6 |
return "#PHP mod is disabled by default, please use PHP-fpm" unless (exists $php{status} and $php{status} eq "enabled" and $phpModule eq "enabled"); |
7 |
|
8 |
- $PHPVersion = $php{'PHPVersion'} ||'73'; |
9 |
- ($PHPVersion) = $PHPVersion =~ /([0-9]{2})/; |
10 |
+ use esmith::php; |
11 |
+ our $PHPVersion = PHPdefault(1); |
12 |
my $phpMR = substr($PHPVersion,0,1) || ''; |
13 |
#php7 software collection libphp72.so |
14 |
return "LoadModule php$\{phpMR\}_module modules/libphp$PHPVersion.so\n" if (-r "/usr/lib64/httpd/modules/libphp$PHPVersion.so"); |
15 |
diff -Nur --no-dereference smeserver-php-3.0.0.old/root/etc/e-smith/templates/etc/httpd/conf/httpd.conf/20LoadModule81FastCGI smeserver-php-3.0.0/root/etc/e-smith/templates/etc/httpd/conf/httpd.conf/20LoadModule81FastCGI |
16 |
--- smeserver-php-3.0.0.old/root/etc/e-smith/templates/etc/httpd/conf/httpd.conf/20LoadModule81FastCGI 2020-01-28 13:50:45.000000000 -0500 |
17 |
+++ smeserver-php-3.0.0/root/etc/e-smith/templates/etc/httpd/conf/httpd.conf/20LoadModule81FastCGI 2021-03-08 01:04:07.503000000 -0500 |
18 |
@@ -1,6 +1,4 @@ |
19 |
{ |
20 |
-$PHPVersion = $php{'PHPVersion'} ||'73'; |
21 |
-my ($PHPVersion) = $PHPVersion =~ /([0-9]{2})/; |
22 |
$fastcgi_mod = 'mod_proxy_fcgi'; |
23 |
$OUT .=<<_EOF; |
24 |
LoadModule proxy_fcgi_module modules/mod_proxy_fcgi.so |
25 |
diff -Nur --no-dereference smeserver-php-3.0.0.old/root/etc/e-smith/templates/etc/httpd/conf/httpd.conf/95AddType00PHP2ibays smeserver-php-3.0.0/root/etc/e-smith/templates/etc/httpd/conf/httpd.conf/95AddType00PHP2ibays |
26 |
--- smeserver-php-3.0.0.old/root/etc/e-smith/templates/etc/httpd/conf/httpd.conf/95AddType00PHP2ibays 2021-03-07 15:11:54.710000000 -0500 |
27 |
+++ smeserver-php-3.0.0/root/etc/e-smith/templates/etc/httpd/conf/httpd.conf/95AddType00PHP2ibays 2021-03-08 01:04:47.612000000 -0500 |
28 |
@@ -14,8 +14,7 @@ |
29 |
# configuration to enable php-fpm for the ibay |
30 |
if ($fastcgi_mod eq 'mod_proxy_fcgi') |
31 |
{ |
32 |
- my $version = $ibay->prop('PHPVersion') || $PHPVersion || '73'; |
33 |
- ($version) = $version =~ /([0-9]{2})/ unless $version eq ''; |
34 |
+ my $version = PhpFpmVersionToUse($ibay); |
35 |
my $name = lc $key; |
36 |
$OUT .=<<"_EOF"; |
37 |
SetEnvIf Authorization "(.*)" HTTP_AUTHORIZATION=\$1 |
38 |
diff -Nur --no-dereference smeserver-php-3.0.0.old/root/etc/e-smith/templates/etc/php-fpm.d/ibays.conf/10Ibays smeserver-php-3.0.0/root/etc/e-smith/templates/etc/php-fpm.d/ibays.conf/10Ibays |
39 |
--- smeserver-php-3.0.0.old/root/etc/e-smith/templates/etc/php-fpm.d/ibays.conf/10Ibays 2021-03-07 15:11:54.736000000 -0500 |
40 |
+++ smeserver-php-3.0.0/root/etc/e-smith/templates/etc/php-fpm.d/ibays.conf/10Ibays 2021-03-08 01:06:11.720000000 -0500 |
41 |
@@ -1,12 +1,11 @@ |
42 |
{ |
43 |
|
44 |
use esmith::AccountsDB; |
45 |
+use esmith::php; |
46 |
my $a = esmith::AccountsDB->open_ro || die "Couldn't open the accounts database"; |
47 |
|
48 |
foreach my $ibay ($a->get_all_by_prop(type => 'ibay')){ |
49 |
- my $PHPVersion = $php{'PHPVersion'} ||'73'; |
50 |
- ($PHPVersion) = $PHPVersion =~ /([0-9]{2})/; |
51 |
- my $version = $ibay->prop('PHPVersion') || $PHPVersion || '73'; |
52 |
+ my $version = PhpFpmVersionToUse($ibay); |
53 |
my $dynamic = $ibay->prop('CgiBin') || 'disabled'; |
54 |
my $custom = $ibay->prop('PHPCustomPool') || undef; |
55 |
next unless ($dynamic eq 'enabled' && $version eq $PHP_VERSION && !$custom); |
56 |
diff -Nur --no-dereference smeserver-php-3.0.0.old/root/usr/share/perl5/vendor_perl/esmith/php.pm smeserver-php-3.0.0/root/usr/share/perl5/vendor_perl/esmith/php.pm |
57 |
--- smeserver-php-3.0.0.old/root/usr/share/perl5/vendor_perl/esmith/php.pm 2021-03-07 15:11:54.741000000 -0500 |
58 |
+++ smeserver-php-3.0.0/root/usr/share/perl5/vendor_perl/esmith/php.pm 2021-03-08 01:26:46.184000000 -0500 |
59 |
@@ -4,8 +4,11 @@ |
60 |
use warnings; |
61 |
use esmith::ConfigDB; |
62 |
|
63 |
+our $PHPDEFAULT = 74; |
64 |
+our $BASEPHP = 54; |
65 |
+ |
66 |
our @ISA = qw(Exporter); |
67 |
-our @EXPORT = qw( listPHPVersionFPM listPHPVersionShort listPHPVersionHash listPHPVersionHashShort); |
68 |
+our @EXPORT = qw( listPHPVersionFPM listPHPVersionShort listPHPVersionHash listPHPVersionHashShort PHPdefault VersionToUse PhpFpmVersionToUse); |
69 |
|
70 |
=head1 NAME |
71 |
|
72 |
@@ -58,7 +61,8 @@ |
73 |
} |
74 |
|
75 |
=head2 listPHPVersionShort |
76 |
-param = (enabled, disabled, all) , if empty default to all |
77 |
+param1 = (enabled, disabled, all) , if empty default to all |
78 |
+param2 = will use "" as output for base php |
79 |
|
80 |
this will return you an array of numerical available php version |
81 |
print "'$_'\n" for listPHPVersionShort('all'); |
82 |
@@ -77,15 +81,17 @@ |
83 |
=cut |
84 |
sub listPHPVersionShort { |
85 |
my $status = shift || 'all'; |
86 |
+ my $emptyforbase = shift; |
87 |
my @FPM = listPHPVersionFPM($status); |
88 |
s/^php([0-9]{2})-php-fpm$/$1/ for @FPM ; |
89 |
- s/^php-fpm$/54/ for @FPM ; |
90 |
+ my $base= (defined $emptyforbase) ? "" : $BASEPHP; |
91 |
+ s/^php-fpm$/$base/ for @FPM ; |
92 |
return @FPM; |
93 |
} |
94 |
|
95 |
=head2 listPHPVersionHash |
96 |
-param = (enabled, disabled, all) , if empty default to all |
97 |
- |
98 |
+param1 = (enabled, disabled, all) , if empty default to all |
99 |
+param2 = if defined will use "" as key for php-fpm |
100 |
this will return you a hash order by version |
101 |
my %list= listPHPVersionHash(); |
102 |
print "$_ => $list{$_}\n" for (sort keys %list); |
103 |
@@ -101,17 +107,20 @@ |
104 |
=cut |
105 |
sub listPHPVersionHash { |
106 |
my $status = shift || 'all'; |
107 |
+ my $emptyforbase = shift; |
108 |
my @FPM = listPHPVersionFPM($status); |
109 |
my %myfpm; |
110 |
+ my $base= (defined $emptyforbase) ? "" : $BASEPHP; |
111 |
for my $php ( @FPM) { |
112 |
- $myfpm{"54"}="$php" for ( $php=~/^php-fpm$/); |
113 |
+ $myfpm{$base}="$php" for ( $php=~/^php-fpm$/); |
114 |
$myfpm{$_}="$php" for ( $php=~/^php([0-9]{2})-php-fpm$/); |
115 |
} |
116 |
return %myfpm; |
117 |
} |
118 |
|
119 |
=head2 listPHPVersionHashShort |
120 |
-param = (enabled, disabled, all) , if empty default to all |
121 |
+param1 = (enabled, disabled, all) , if empty default to all |
122 |
+param2 = if defined will use "" as key for php-fpm |
123 |
|
124 |
this will return you a hash order by version |
125 |
my %list= listPHPVersionHashShort(); |
126 |
@@ -128,11 +137,94 @@ |
127 |
=cut |
128 |
sub listPHPVersionHashShort { |
129 |
my $status = shift || 'all'; |
130 |
- my %myfpm = listPHPVersionHash($status); |
131 |
+ my $emptyforbase = shift; |
132 |
+ my %myfpm = listPHPVersionHash($status, $emptyforbase); |
133 |
my %rfpm; |
134 |
foreach my $key (keys %myfpm) { |
135 |
my $php = $myfpm{$key}; |
136 |
- ($rfpm{$key}= $php)=~s/(php[0-9]{0,2}).*/$1/; |
137 |
+ ($rfpm{$key}= $php)=~s/(^php[0-9]{0,2}).*/$1/; |
138 |
} |
139 |
return %rfpm; |
140 |
} |
141 |
+ |
142 |
+=head2 PHPdefault |
143 |
+ return the php default version for the system, i.e. default chosen by rpm or the one overrided by the admin in php PHPVersion property. |
144 |
+ one optional argument is to display 54 as empty string (i.e. base php-fpm) |
145 |
+ |
146 |
+=cut |
147 |
+sub PHPdefault { |
148 |
+ my $emptyforbase = shift; |
149 |
+ my $conf = esmith::ConfigDB->open_ro or die "Could not open accounts db"; |
150 |
+ my $php = $conf->get('php') ; |
151 |
+ my $PHPVersion = ( defined $php->prop('PHPVersion') ) ? $php->prop('PHPVersion') : $PHPDEFAULT; |
152 |
+ $PHPVersion = ($PHPVersion eq "") ? $BASEPHP : $PHPVersion; |
153 |
+ $PHPVersion = ($PHPVersion =~ /([0-9]{2})/) ? $1 : $PHPDEFAULT; |
154 |
+ return $PHPVersion unless defined $emptyforbase; |
155 |
+ $PHPVersion = ( $PHPVersion eq $BASEPHP ) ? "" : $PHPVersion; |
156 |
+ return $PHPVersion; |
157 |
+} |
158 |
+ |
159 |
+=head2 VersionToUse |
160 |
+argument 1 : output from $account->get('ibayname') or similar (shares,custom) |
161 |
+ it is expected to find in this entry a property PHPVersion |
162 |
+artgument 2 : optional, a locally forced PHP version, if you do not want to trust globally prefered one. |
163 |
+ |
164 |
+output : a two digit php version : 74 for php 7.4 . 54 will be for php-fpm 5.4 as default php on CentOS 7 /SME 9 |
165 |
+ |
166 |
+ my $ibay=$account->get('ibayname'); |
167 |
+ my $version = VersionToUse($ibay,'80'); |
168 |
+ |
169 |
+logic: |
170 |
+# if not defined => $PHPDEFAULT |
171 |
+# if defined and empty strin => $BASEPHP |
172 |
+# if defined and not empty => its value |
173 |
+ |
174 |
+# defined entry (e.g. ibay) PHPVersion property override |
175 |
+ - defined forced PHPVersion provided (2nd argument, if provided) which override |
176 |
+ - php PHPVersion property which override |
177 |
+ - default $PHPDEFAULT |
178 |
+ |
179 |
+=cut |
180 |
+sub VersionToUse { |
181 |
+ my $entry = shift or return "need a db entry"; |
182 |
+ my $conf = esmith::ConfigDB->open_ro or die "Could not open accounts db"; |
183 |
+ |
184 |
+ my $PHPVersion = PHPdefault(); |
185 |
+ |
186 |
+ my $forcedefault = shift ; |
187 |
+ $forcedefault = ( defined $forcedefault ) ? $forcedefault : $PHPVersion; |
188 |
+ $forcedefault = ($forcedefault eq "") ? $BASEPHP : $forcedefault; |
189 |
+ $forcedefault = ($forcedefault =~ /([0-9]{2})/) ? $1 : $PHPVersion; |
190 |
+ |
191 |
+ my $entryPHPVersion = (defined $entry->prop('PHPVersion') ) ? $entry->prop('PHPVersion') : $forcedefault; |
192 |
+ $entryPHPVersion = ($entryPHPVersion eq "") ? $BASEPHP : $entryPHPVersion; |
193 |
+ $entryPHPVersion = ($entryPHPVersion =~ /([0-9]{2})/) ? $1 : $forcedefault; |
194 |
+ |
195 |
+ # we currently assume that it is installed and enabled, but could test it here |
196 |
+ |
197 |
+ my $version= $entryPHPVersion ; |
198 |
+ #$version = " $PHPDEFAULT - $PHPVersion - $forcedefault - $entryPHPVersion"; |
199 |
+ |
200 |
+ return $version; |
201 |
+} |
202 |
+ |
203 |
+=head2 PhpFpmVersionToUse |
204 |
+same as VersionToUse except it will return null string in place of $BASEPHP (i.e. "" in place of 54) |
205 |
+ |
206 |
+argument 1 : output from $account->get('ibayname') or similar (shares,custom) |
207 |
+ it is expected to find in this entry a property PHPVersion |
208 |
+artgument 2 : optional, a locally forced PHP version, if you do not want to trust globally prefered one. |
209 |
+ |
210 |
+output : a two digit php version : 74 for php 7.4 or empty string, as '' will take place of 54 for php-fpm 5.4 as default php on CentOS 7 /SME 9 |
211 |
+ |
212 |
+=cut |
213 |
+sub PhpFpmVersionToUse { |
214 |
+ #my $entry = shift or return "need a db entry"; |
215 |
+ #my $forcedefault = shift ; |
216 |
+ my $version ; |
217 |
+ $version = VersionToUse(@_) ;#$entry,$forcedefault);# if defined $forcedefault; |
218 |
+ #$version = VersionToUse($entry) unless defined $forcedefault; |
219 |
+ # here we convert $BASEPHP to empty string |
220 |
+ $version = ( $version eq $BASEPHP ) ? "" : $version; |
221 |
+ return $version; |
222 |
+} |