Skip to content
GitLab
Projects
Groups
Snippets
Help
Loading...
Help
What's new
10
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
Open sidebar
lolo888
ISPConfig 3
Commits
c6943950
Commit
c6943950
authored
Sep 20, 2011
by
tbrehm
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Some fixes in folder protection.
parent
2c273e99
Changes
2
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
20 additions
and
9 deletions
+20
-9
server/mods-available/web_module.inc.php
server/mods-available/web_module.inc.php
+2
-0
server/plugins-available/apache2_plugin.inc.php
server/plugins-available/apache2_plugin.inc.php
+18
-9
No files found.
server/mods-available/web_module.inc.php
View file @
c6943950
...
...
@@ -92,6 +92,8 @@ class web_module {
$app
->
modules
->
registerTableHook
(
'ftp_user'
,
'web_module'
,
'process'
);
$app
->
modules
->
registerTableHook
(
'shell_user'
,
'web_module'
,
'process'
);
$app
->
modules
->
registerTableHook
(
'webdav_user'
,
'web_module'
,
'process'
);
$app
->
modules
->
registerTableHook
(
'web_folder'
,
'web_module'
,
'process'
);
$app
->
modules
->
registerTableHook
(
'web_folder_user'
,
'web_module'
,
'process'
);
// Register service
$app
->
services
->
registerService
(
'httpd'
,
'web_module'
,
'restartHttpd'
);
...
...
server/plugins-available/apache2_plugin.inc.php
View file @
c6943950
...
...
@@ -1195,7 +1195,7 @@ class apache2_plugin {
//* Create or update the .htaccess folder protection
function
web_folder_user
(
$event_name
,
$data
)
{
global
$app
,
$conf
;
$app
->
uses
(
'system'
);
if
(
$event_name
==
'web_folder_user_delete'
)
{
...
...
@@ -1213,17 +1213,19 @@ class apache2_plugin {
}
//* Get the folder path.
$folder_path
=
realpath
(
$website
[
'document_root'
]
.
'/web/'
.
$folder
[
'path'
]);
if
(
substr
(
$folder
[
'path'
],
0
,
1
)
==
'/'
)
$folder
[
'path'
]
=
substr
(
$folder
[
'path'
],
1
);
if
(
substr
(
$folder
[
'path'
],
-
1
)
==
'/'
)
$folder
[
'path'
]
=
substr
(
$folder
[
'path'
],
0
,
-
1
);
$folder_path
=
escapeshellcmd
(
$website
[
'document_root'
]
.
'/web/'
.
$folder
[
'path'
]);
if
(
substr
(
$folder_path
,
-
1
!=
'/'
))
$folder_path
.
=
'/'
;
//* Check if the resulting path is inside the docroot
if
(
s
ub
str
(
$folder_path
,
0
,
strlen
(
$website
[
'document_root'
]))
!=
$website
[
'document_root'
]
)
{
$app
->
log
(
'Folder path
is outside of docroot
.'
,
LOGLEVEL_DEBUG
);
if
(
s
tri
str
(
$folder_path
,
'..'
)
||
stristr
(
$folder_path
,
'./'
)
||
stristr
(
$folder_path
,
'\\'
)
)
{
$app
->
log
(
'Folder path
"'
.
$folder_path
.
'" contains .. or ./
.'
,
LOGLEVEL_DEBUG
);
return
false
;
}
//* Create the folder path, if it does not exist
if
(
!
is_dir
(
$folder_path
))
exec
(
'mkdir -p '
.
escapehsellarg
(
$folder_path
)
)
;
if
(
!
is_dir
(
$folder_path
))
exec
(
'mkdir -p '
.
$folder_path
);
//* Create empty .htpasswd file, if it does not exist
if
(
!
is_file
(
$folder_path
.
'.htpasswd'
))
{
...
...
@@ -1232,13 +1234,20 @@ class apache2_plugin {
$app
->
log
(
'Created file'
.
$folder_path
.
'.htpasswd'
,
LOGLEVEL_DEBUG
);
}
if
(
$data
[
'new'
][
'username'
]
!=
$data
[
'old'
][
'username'
]
||
$data
[
'new'
][
'active'
]
==
'n'
)
{
$app
->
system
->
removeLine
(
$folder_path
.
'.htpasswd'
,
$data
[
'old'
][
'username'
]
.
':'
);
$app
->
log
(
'Removed user: '
.
$data
[
'old'
][
'username'
],
LOGLEVEL_DEBUG
);
}
//* Add or remove the user from .htpasswd file
if
(
$event_name
==
'web_folder_user_delete'
)
{
$app
->
system
->
removeLine
(
$folder_path
.
'.htpasswd'
,
$data
[
'
new
'
][
'username'
]
.
':'
);
$app
->
log
(
'Removed user: '
.
$data
[
'
new
'
][
'username'
],
LOGLEVEL_DEBUG
);
$app
->
system
->
removeLine
(
$folder_path
.
'.htpasswd'
,
$data
[
'
old
'
][
'username'
]
.
':'
);
$app
->
log
(
'Removed user: '
.
$data
[
'
old
'
][
'username'
],
LOGLEVEL_DEBUG
);
}
else
{
$app
->
system
->
replaceLine
(
$folder_path
.
'.htpasswd'
,
$data
[
'new'
][
'username'
]
.
':'
,
$data
[
'new'
][
'username'
]
.
':'
.
$data
[
'new'
][
'password'
],
0
,
1
);
$app
->
log
(
'Added or updated user: '
.
$data
[
'new'
][
'username'
],
LOGLEVEL_DEBUG
);
if
(
$data
[
'new'
][
'active'
]
==
'y'
)
{
$app
->
system
->
replaceLine
(
$folder_path
.
'.htpasswd'
,
$data
[
'new'
][
'username'
]
.
':'
,
$data
[
'new'
][
'username'
]
.
':'
.
$data
[
'new'
][
'password'
],
0
,
1
);
$app
->
log
(
'Added or updated user: '
.
$data
[
'new'
][
'username'
],
LOGLEVEL_DEBUG
);
}
}
//* Create the .htaccess file
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment