Skip to content
GitLab
Projects
Groups
Snippets
/
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
Menu
Open sidebar
Guilherme Filippo
ISPConfig 3
Commits
55da9053
Commit
55da9053
authored
Nov 11, 2007
by
bpssoft
Browse files
- Add comments to system.inc.php (PEAR) and cleanup wrong tabs
- Add some functionallity to MySQL class
parent
3eeed9bd
Changes
3
Hide whitespace changes
Inline
Side-by-side
TODO.txt
View file @
55da9053
...
...
@@ -73,6 +73,3 @@ General tasks
- Add, extend or modify comments in PEAR syntax so that they can be read with phpdocumentor.
- Add a function to prevent brute force password attacks to the login script. E.g. by
logging all login attempts and allowing only 5 logins every 15 minutes.
Task assigned to: BPSsoft
interface/lib/classes/db_mysql.inc.php
View file @
55da9053
...
...
@@ -217,10 +217,21 @@ class db
public
function
closeConn
()
{
if
(
$this
->
linkId
)
{
mysql_close
(
$this
->
linkId
);
return
true
;
}
else
{
return
false
;
}
}
public
function
freeResult
()
public
function
freeResult
(
$query
)
{
if
(
mysql_free_result
(
$query
))
{
return
true
;
}
else
{
return
false
;
}
}
public
function
delete
()
...
...
server/lib/classes/system.inc.php
View file @
55da9053
...
...
@@ -30,970 +30,1083 @@ EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
class
system
{
var
$FILE
=
"/root/ispconfig/scripts/lib/classes/ispconfig_system.lib.php"
;
var
$server_id
;
var
$server_conf
;
var
$data
;
function
system
(){
global
$go_info
;
$this
->
server_id
=
$go_info
[
"isp"
][
"server_id"
];
$this
->
server_conf
=
$go_info
[
"isp"
][
"server_conf"
];
$this
->
server_conf
[
"passwd_datei"
]
=
'/etc/passwd'
;
$this
->
server_conf
[
"shadow_datei"
]
=
'/etc/shadow'
;
$this
->
server_conf
[
"group_datei"
]
=
'/etc/group'
;
}
function
hostname
(){
$dist
=
$this
->
server_conf
[
"dist"
];
ob_start
();
passthru
(
"hostname"
);
$hostname
=
ob_get_contents
();
ob_end_clean
();
$hostname
=
trim
(
$hostname
);
ob_start
();
if
(
!
strstr
(
$dist
,
"freebsd"
)){
passthru
(
"dnsdomainname"
);
}
else
{
passthru
(
"domainname"
);
}
$domainname
=
ob_get_contents
();
ob_end_clean
();
$domainname
=
trim
(
$domainname
);
if
(
$domainname
!=
""
){
if
(
!
strstr
(
$hostname
,
$domainname
))
$hostname
.
=
"."
.
$domainname
;
}
return
$hostname
;
}
function
adduser
(
$user_username
,
$uid
,
$gid
,
$username
,
$homedir
,
$shell
,
$passwort
=
'*'
){
global
$app
;
if
(
$this
->
is_user
(
$user_username
)){
return
false
;
}
else
{
if
(
trim
(
$user_username
)
!=
''
)
{
$user_datei
=
$this
->
server_conf
[
"passwd_datei"
];
$shadow_datei
=
$this
->
server_conf
[
"shadow_datei"
];
$shell
=
realpath
(
$shell
);
if
(
trim
(
$passwort
)
==
""
)
$passwort
=
'*'
;
$new_user
=
"
\n
$user_username
:x:
$uid
:
$gid
:
$username
:
$homedir
:
$shell
\n
"
;
$app
->
log
->
msg
(
"USER:
$new_user
"
);
$app
->
file
->
af
(
$user_datei
,
$new_user
);
if
(
$shadow_datei
==
"/etc/shadow"
){
$datum
=
time
();
$tage
=
floor
(
$datum
/
86400
);
$new_passwd
=
"
\n
$user_username
:
$passwort
:
$tage
:0:99999:7:::
\n
"
;
}
else
{
$new_passwd
=
"
\n
$user_username
:
$passwort
:
$uid
:
$gid
::0:0:
$username
:
$homedir
:
$shell
\n
"
;
}
$app
->
file
->
af
(
$shadow_datei
,
$new_passwd
);
// TB: leere Zeilen entfernen
$app
->
file
->
remove_blank_lines
(
$shadow_datei
);
$app
->
file
->
remove_blank_lines
(
$user_datei
);
// TB: user Sortierung deaktiviert
//$this->order_users_groups();
if
(
$shadow_datei
!=
"/etc/shadow"
){
$app
->
file
->
af
(
$shadow_datei
,
"
\n
"
);
// TB: leere Zeilen entfernen
$app
->
file
->
remove_blank_lines
(
$shadow_datei
);
$app
->
log
->
caselog
(
"pwd_mkdb
$shadow_datei
&> /dev/null"
,
$this
->
FILE
,
__LINE__
);
}
return
true
;
}
}
}
function
updateuser
(
$user_username
,
$uid
,
$gid
,
$username
,
$homedir
,
$shell
,
$passwort
=
'*'
){
$this
->
deluser
(
$user_username
);
$this
->
adduser
(
$user_username
,
$uid
,
$gid
,
$username
,
$homedir
,
$shell
,
$passwort
);
}
function
deactivateuser
(
$user_username
){
$passwort
=
str_rot13
(
$this
->
getpasswd
(
$user_username
));
$user_attr
=
$this
->
get_user_attributes
(
$user_username
);
$uid
=
$user_attr
[
"uid"
];
$gid
=
$user_attr
[
"gid"
];
$username
=
$user_attr
[
"name"
];
$homedir
=
$user_attr
[
"homedir"
];
$shell
=
"/dev/null"
;
$this
->
deluser
(
$user_username
);
$this
->
adduser
(
$user_username
,
$uid
,
$gid
,
$username
,
$homedir
,
$shell
,
$passwort
);
}
function
deluser
(
$user_username
){
global
$app
;
if
(
$this
->
is_user
(
$user_username
)){
$user_datei
=
$this
->
server_conf
[
"passwd_datei"
];
$shadow_datei
=
$this
->
server_conf
[
"shadow_datei"
];
$users
=
$app
->
file
->
rf
(
$user_datei
);
$lines
=
explode
(
"
\n
"
,
$users
);
if
(
is_array
(
$lines
)){
$num_lines
=
sizeof
(
$lines
);
for
(
$i
=
0
;
$i
<
$num_lines
;
$i
++
){
if
(
trim
(
$lines
[
$i
])
!=
""
){
list
(
$f1
,)
=
explode
(
":"
,
$lines
[
$i
]);
if
(
$f1
!=
$user_username
)
$new_lines
[]
=
$lines
[
$i
];
}
}
$new_users
=
implode
(
"
\n
"
,
$new_lines
);
$app
->
file
->
wf
(
$user_datei
,
$new_users
);
unset
(
$new_lines
);
unset
(
$lines
);
unset
(
$new_users
);
}
$app
->
file
->
remove_blank_lines
(
$user_datei
);
$passwds
=
$app
->
file
->
rf
(
$shadow_datei
);
$lines
=
explode
(
"
\n
"
,
$passwds
);
if
(
is_array
(
$lines
)){
$num_lines
=
sizeof
(
$lines
);
for
(
$i
=
0
;
$i
<
$num_lines
;
$i
++
){
if
(
trim
(
$lines
[
$i
])
!=
""
){
list
(
$f1
,)
=
explode
(
":"
,
$lines
[
$i
]);
if
(
$f1
!=
$user_username
)
$new_lines
[]
=
$lines
[
$i
];
}
}
$new_passwds
=
implode
(
"
\n
"
,
$new_lines
);
$app
->
file
->
wf
(
$shadow_datei
,
$new_passwds
);
unset
(
$new_lines
);
unset
(
$lines
);
unset
(
$new_passwds
);
}
$app
->
file
->
remove_blank_lines
(
$shadow_datei
);
$group_file
=
$app
->
file
->
rf
(
$this
->
server_conf
[
"group_datei"
]);
$group_file_lines
=
explode
(
"
\n
"
,
$group_file
);
foreach
(
$group_file_lines
as
$group_file_line
){
if
(
trim
(
$group_file_line
)
!=
""
){
list
(
$f1
,
$f2
,
$f3
,
$f4
)
=
explode
(
":"
,
$group_file_line
);
$group_users
=
explode
(
","
,
str_replace
(
" "
,
""
,
$f4
));
if
(
in_array
(
$user_username
,
$group_users
)){
$g_users
=
array
();
foreach
(
$group_users
as
$group_user
){
if
(
$group_user
!=
$user_username
)
$g_users
[]
=
$group_user
;
}
$f4
=
implode
(
","
,
$g_users
);
}
$new_group_file
[]
=
$f1
.
":"
.
$f2
.
":"
.
$f3
.
":"
.
$f4
;
}
}
$new_group_file
=
implode
(
"
\n
"
,
$new_group_file
);
$app
->
file
->
wf
(
$this
->
server_conf
[
"group_datei"
],
$new_group_file
);
// TB: auskommentiert
//$this->order_users_groups();
if
(
$shadow_datei
!=
"/etc/shadow"
){
$app
->
file
->
af
(
$shadow_datei
,
"
\n
"
);
$app
->
log
->
caselog
(
"pwd_mkdb
$shadow_datei
&> /dev/null"
,
$this
->
FILE
,
__LINE__
);
}
return
true
;
}
else
{
return
false
;
}
}
function
addgroup
(
$group
,
$gid
,
$members
=
''
){
global
$app
;
if
(
$this
->
is_group
(
$group
)){
return
false
;
}
else
{
$group_datei
=
$this
->
server_conf
[
"group_datei"
];
$shadow_datei
=
$this
->
server_conf
[
"shadow_datei"
];
$new_group
=
"
\n
$group
:x:
$gid
:
$members
\n
"
;
$app
->
file
->
af
(
$group_datei
,
$new_group
);
// TB: auskommentiert
//$this->order_users_groups();
if
(
$shadow_datei
!=
"/etc/shadow"
){
$app
->
log
->
caselog
(
"pwd_mkdb
$shadow_datei
&> /dev/null"
,
$this
->
FILE
,
__LINE__
);
}
return
true
;
}
}
function
updategroup
(
$group
,
$gid
,
$members
=
''
){
$this
->
delgroup
(
$group
);
$this
->
addgroup
(
$group
,
$gid
,
$members
);
}
function
delgroup
(
$group
){
global
$app
;
if
(
$this
->
is_group
(
$group
)){
$group_datei
=
$this
->
server_conf
[
"group_datei"
];
$shadow_datei
=
$this
->
server_conf
[
"shadow_datei"
];
$groups
=
$app
->
file
->
rf
(
$group_datei
);
$lines
=
explode
(
"
\n
"
,
$groups
);
if
(
is_array
(
$lines
)){
$num_lines
=
sizeof
(
$lines
);
for
(
$i
=
0
;
$i
<
$num_lines
;
$i
++
){
if
(
trim
(
$lines
[
$i
])
!=
""
){
list
(
$f1
,)
=
explode
(
":"
,
$lines
[
$i
]);
if
(
$f1
!=
$group
)
$new_lines
[]
=
$lines
[
$i
];
}
}
$new_groups
=
implode
(
"
\n
"
,
$new_lines
);
$app
->
file
->
wf
(
$group_datei
,
$new_groups
);
unset
(
$new_lines
);
unset
(
$lines
);
unset
(
$new_groups
);
}
// TB: auskommentiert
//$this->order_users_groups();
if
(
$shadow_datei
!=
"/etc/shadow"
){
$app
->
log
->
caselog
(
"pwd_mkdb
$shadow_datei
&> /dev/null"
,
$this
->
FILE
,
__LINE__
);
}
return
true
;
}
else
{
return
false
;
}
}
function
order_users_groups
(){
global
$app
;
$user_datei
=
$this
->
server_conf
[
"passwd_datei"
];
$shadow_datei
=
$this
->
server_conf
[
"shadow_datei"
];
$group_datei
=
$this
->
server_conf
[
"group_datei"
];
$groups
=
$app
->
file
->
no_comments
(
$group_datei
);
$lines
=
explode
(
"
\n
"
,
$groups
);
if
(
is_array
(
$lines
)){
foreach
(
$lines
as
$line
){
if
(
trim
(
$line
)
!=
""
){
list
(
$f1
,
$f2
,
$f3
,
$f4
)
=
explode
(
":"
,
$line
);
$arr
[
$f3
]
=
$line
;
}
}
}
ksort
(
$arr
);
reset
(
$arr
);
if
(
$shadow_datei
!=
"/etc/shadow"
){
$app
->
file
->
wf
(
$group_datei
,
$app
->
file
->
remove_blank_lines
(
implode
(
"
\n
"
,
$arr
),
0
)
.
"
\n
"
);
}
else
{
$app
->
file
->
wf
(
$group_datei
,
$app
->
file
->
remove_blank_lines
(
implode
(
"
\n
"
,
$arr
),
0
));
}
unset
(
$arr
);
$users
=
$app
->
file
->
no_comments
(
$user_datei
);
$lines
=
explode
(
"
\n
"
,
$users
);
if
(
is_array
(
$lines
)){
foreach
(
$lines
as
$line
){
if
(
trim
(
$line
)
!=
""
){
list
(
$f1
,
$f2
,
$f3
,)
=
explode
(
":"
,
$line
);
if
(
$f1
!=
"toor"
){
$arr
[
$f3
]
=
$line
;
}
else
{
$arr
[
70000
]
=
$line
;
}
}
}
}
ksort
(
$arr
);
reset
(
$arr
);
$app
->
file
->
wf
(
$user_datei
,
$app
->
file
->
remove_blank_lines
(
implode
(
"
\n
"
,
$arr
),
0
));
unset
(
$arr
);
$passwds
=
$app
->
file
->
no_comments
(
$shadow_datei
);
$lines
=
explode
(
"
\n
"
,
$passwds
);
if
(
is_array
(
$lines
)){
foreach
(
$lines
as
$line
){
if
(
trim
(
$line
)
!=
""
){
list
(
$f1
,
$f2
,
$f3
,)
=
explode
(
":"
,
$line
);
if
(
$f1
!=
"toor"
){
$uid
=
$this
->
getuid
(
$f1
);
if
(
!
is_bool
(
$uid
))
$arr
[
$uid
]
=
$line
;
}
else
{
$arr
[
70000
]
=
$line
;
}
}
}
}
ksort
(
$arr
);
reset
(
$arr
);
$app
->
file
->
wf
(
$shadow_datei
,
$app
->
file
->
remove_blank_lines
(
implode
(
"
\n
"
,
$arr
),
0
));
unset
(
$arr
);
}
function
find_uid_gid
(
$min
,
$max
){
global
$app
;
if
(
$min
<
$max
&&
$min
>=
0
&&
$max
>=
0
&&
$min
<=
65536
&&
$max
<=
65536
&&
is_int
(
$min
)
&&
is_int
(
$max
)){
for
(
$i
=
$min
;
$i
<=
$max
;
$i
++
){
$uid_arr
[
$i
]
=
$gid_arr
[
$i
]
=
1
;
}
$user_datei
=
$this
->
server_conf
[
"passwd_datei"
];
$group_datei
=
$this
->
server_conf
[
"group_datei"
];
$users
=
$app
->
file
->
no_comments
(
$user_datei
);
$lines
=
explode
(
"
\n
"
,
$users
);
if
(
is_array
(
$lines
)){
foreach
(
$lines
as
$line
){
if
(
trim
(
$line
)
!=
""
){
list
(
$f1
,
$f2
,
$f3
,
$f4
,
$f5
,
$f6
,
$f7
)
=
explode
(
":"
,
$line
);
if
(
$f3
>=
$min
&&
$f3
<=
$max
)
unset
(
$uid_arr
[
$f3
]);
}
}
if
(
!
empty
(
$uid_arr
)){
foreach
(
$uid_arr
as
$key
=>
$val
){
$uids
[]
=
$key
;
}
$min_uid
=
min
(
$uids
);
unset
(
$uid_arr
);
}
else
{
return
false
;
}
}
$groups
=
$app
->
file
->
no_comments
(
$group_datei
);
$lines
=
explode
(
"
\n
"
,
$groups
);
if
(
is_array
(
$lines
)){
foreach
(
$lines
as
$line
){
if
(
trim
(
$line
)
!=
""
){
list
(
$f1
,
$f2
,
$f3
,
$f4
)
=
explode
(
":"
,
$line
);
if
(
$f3
>=
$min
&&
$f3
<=
$max
)
unset
(
$gid_arr
[
$f3
]);
}
}
if
(
!
empty
(
$gid_arr
)){
foreach
(
$gid_arr
as
$key
=>
$val
){
$gids
[]
=
$key
;
}
$min_gid
=
min
(
$gids
);
unset
(
$gid_arr
);
}
else
{
return
false
;
}
}
$result
=
array_intersect
(
$uids
,
$gids
);
$new_id
=
(
max
(
$result
));
unset
(
$uids
);
unset
(
$gids
);
unset
(
$result
);
if
(
$new_id
<=
$max
){
return
$new_id
;
}
else
{
return
false
;
}
}
else
{
return
false
;
}
}
function
is_user
(
$user
){
global
$app
;
$user_datei
=
$this
->
server_conf
[
"passwd_datei"
];
$users
=
$app
->
file
->
no_comments
(
$user_datei
);
$lines
=
explode
(
"
\n
"
,
$users
);
if
(
is_array
(
$lines
)){
foreach
(
$lines
as
$line
){
if
(
trim
(
$line
)
!=
""
){
list
(
$f1
,
$f2
,
$f3
,
$f4
,
$f5
,
$f6
,
$f7
)
=
explode
(
":"
,
$line
);
if
(
$f1
==
$user
)
return
true
;
}
}
}
return
false
;
}
function
is_group
(
$group
){
global
$app
;
$group_datei
=
$this
->
server_conf
[
"group_datei"
];
$groups
=
$app
->
file
->
no_comments
(
$group_datei
);
$lines
=
explode
(
"
\n
"
,
$groups
);
if
(
is_array
(
$lines
)){
foreach
(
$lines
as
$line
){
if
(
trim
(
$line
)
!=
""
){
list
(
$f1
,
$f2
,
$f3
,
$f4
)
=
explode
(
":"
,
$line
);
if
(
$f1
==
$group
)
return
true
;
}
}
}
return
false
;
}
function
root_group
(){
global
$app
;
$group_datei
=
$this
->
server_conf
[
"group_datei"
];
$groups
=
$app
->
file
->
no_comments
(
$group_datei
);
$lines
=
explode
(
"
\n
"
,
$groups
);
if
(
is_array
(
$lines
)){
foreach
(
$lines
as
$line
){
if
(
trim
(
$line
)
!=
""
){
list
(
$f1
,
$f2
,
$f3
,
$f4
)
=
explode
(
":"
,
$line
);
if
(
$f3
==
0
)
return
$f1
;
}
}
}
return
false
;
}
function
get_user_groups
(
$username
){
global
$app
;
$user_groups
=
array
();
$group_datei
=
$this
->
server_conf
[
"group_datei"
];
$groups
=
$app
->
file
->
no_comments
(
$group_datei
);
$lines
=
explode
(
"
\n
"
,
$groups
);
if
(
is_array
(
$lines
)){
foreach
(
$lines
as
$line
){
if
(
trim
(
$line
)
!=
""
){
list
(
$f1
,
$f2
,
$f3
,
$f4
)
=
explode
(
":"
,
$line
);
if
(
intval
(
$f3
)
<
intval
(
$this
->
server_conf
[
"groupid_von"
])
&&
trim
(
$f1
)
!=
'users'
){
$tmp_group_users
=
explode
(
','
,
str_replace
(
' '
,
''
,
$f4
));
if
(
in_array
(
$username
,
$tmp_group_users
)
&&
trim
(
$f1
)
!=
''
)
$user_groups
[]
=
$f1
;
unset
(
$tmp_group_users
);
}
}
}
}
if
(
!
empty
(
$user_groups
))
return
implode
(
','
,
$user_groups
);
return
''
;
}
function
getpasswd
(
$user
){
global
$app
;
if
(
$this
->
is_user
(
$user
)){
$shadow_datei
=
$this
->
server_conf
[
"shadow_datei"
];
$passwds
=
$app
->
file
->
no_comments
(
$shadow_datei
);
$lines
=
explode
(
"
\n
"
,
$passwds
);
if
(
is_array
(
$lines
)){
foreach
(
$lines
as
$line
){
if
(
trim
(
$line
)
!=
""
){
list
(
$f1
,
$f2
,)
=
explode
(
":"
,
$line
);
if
(
$f1
==
$user
)
return
$f2
;
}
}
}
}
else
{
return
false
;
}
}
function
getuid
(
$user
){
global
$app
;
if
(
$this
->
is_user
(
$user
)){
$user_datei
=
$this
->
server_conf
[
"passwd_datei"
];
$users
=
$app
->
file
->
no_comments
(
$user_datei
);
$lines
=
explode
(
"
\n
"
,
$users
);
if
(
is_array
(
$lines
)){
foreach
(
$lines
as
$line
){
if
(
trim
(
$line
)
!=
""
){
list
(
$f1
,
$f2
,
$f3
,)
=
explode
(
":"
,
$line
);
if
(
$f1
==
$user
)
return
$f3
;
}
}
}
}
else
{
return
false
;
}
}
function
get_user_attributes
(
$user
){
global
$app
;
if
(
$this
->
is_user
(
$user
)){
$user_datei
=
$this
->
server_conf
[
"passwd_datei"
];
$users
=
$app
->
file
->
no_comments
(
$user_datei
);
$lines
=
explode
(
"
\n
"
,
$users
);
if
(
is_array
(
$lines
)){
foreach
(
$lines
as
$line
){
if
(
trim
(
$line
)
!=
""
){
list
(
$f1
,
$f2
,
$f3
,
$f4
,
$f5
,
$f6
,
$f7
)
=
explode
(
":"
,
$line
);
if
(
$f1
==
$user
){
$user_attr
[
"username"
]
=
$f1
;
$user_attr
[
"x"
]
=
$f2
;
$user_attr
[
"uid"
]
=
$f3
;
$user_attr
[
"gid"
]
=
$f4
;
$user_attr
[
"name"
]
=
$f5
;
$user_attr
[
"homedir"
]
=
$f6
;
$user_attr
[
"shell"
]
=
$f7
;
return
$user_attr
;
}
}
}
}
}
else
{
return
false
;
}
}
function
chown
(
$file
,
$owner
,
$group
=
''
){
$owner_change
=
@
chown
(
$file
,
$owner
);
if
(
$group
!=
""
){
$group_change
=
@
chgrp
(
$file
,
$group
);
}
else
{
$group_change
=
1
;
}
if
(
$owner_change
&&
$group_change
){
return
true
;
}
else
{
return
false
;
}
}
function
add_user_to_group
(
$group
,
$user
=
'admispconfig'
){
global
$app
;
$group_file
=
$app
->
file
->
rf
(
$this
->
server_conf
[
"group_datei"
]);
$group_file_lines
=
explode
(
"
\n
"
,
$group_file
);
foreach
(
$group_file_lines
as
$group_file_line
){
list
(
$group_name
,
$group_x
,
$group_id
,
$group_users
)
=
explode
(
":"
,
$group_file_line
);
if
(
$group_name
==
$group
){
$group_users
=
explode
(
","
,
str_replace
(
" "
,
""
,
$group_users
));
if
(
!
in_array
(
$user
,
$group_users
)){
$group_users
[]
=
$user
;
}
$group_users
=
implode
(
","
,
$group_users
);
if
(
substr
(
$group_users
,
0
,
1
)
==
","
)
$group_users
=
substr
(
$group_users
,
1
);
$group_file_line
=
$group_name
.
":"
.
$group_x
.
":"
.
$group_id
.
":"
.
$group_users
;
}
$new_group_file
[]
=
$group_file_line
;
}
$new_group_file
=
implode
(
"
\n
"
,
$new_group_file
);
$app
->
file
->
wf
(
$this
->
server_conf
[
"group_datei"
],
$new_group_file
);
$app
->
file
->
remove_blank_lines
(
$this
->
server_conf
[
"group_datei"
]);
if
(
$this
->
server_conf
[
"shadow_datei"
]
!=
"/etc/shadow"
){
$app
->
log
->
caselog
(
"pwd_mkdb "
.
$this
->
server_conf
[
"shadow_datei"
]
.
" &> /dev/null"
,
$this
->
FILE
,
__LINE__
);
}
}
function
usermod
(
$user
,
$groups
){
global
$app
;
if
(
$this
->
is_user
(
$user
)){
$groups
=
explode
(
","
,
str_replace
(
" "
,
""
,
$groups
));
$group_file
=
$app
->
file
->
rf
(
$this
->
server_conf
[
"group_datei"
]);
$group_file_lines
=
explode
(
"
\n
"
,
$group_file
);
foreach
(
$group_file_lines
as
$group_file_line
){
if
(
trim
(
$group_file_line
)
!=
""
){
list
(
$f1
,
$f2
,
$f3
,
$f4
)
=
explode
(
":"
,
$group_file_line
);
$group_users
=
explode
(
","
,
str_replace
(
" "
,
""
,
$f4
));
if
(
!
in_array
(
$f1
,
$groups
)){
if
(
in_array
(
$user
,
$group_users
)){
$g_users
=
array
();
foreach
(
$group_users
as
$group_user
){
if
(
$group_user
!=
$user
)
$g_users
[]
=
$group_user
;
}
$f4
=
implode
(
","
,
$g_users
);
}
}
else
{
if
(
!
in_array
(
$user
,
$group_users
)){
if
(
trim
(
$group_users
[
0
])
==
""
)
unset
(
$group_users
);
$group_users
[]
=
$user
;
}
$f4
=
implode
(
","
,
$group_users
);
}
$new_group_file
[]
=
$f1
.
":"
.
$f2
.
":"
.
$f3
.
":"
.
$f4
;
}
}
$new_group_file
=
implode
(
"
\n
"
,
$new_group_file
);
$app
->
file
->
wf
(
$this
->
server_conf
[
"group_datei"
],
$new_group_file
);
$app
->
file
->
remove_blank_lines
(
$this
->
server_conf
[
"group_datei"
]);
if
(
$this
->
server_conf
[
"shadow_datei"
]
!=
"/etc/shadow"
){
$app
->
log
->
caselog
(
"pwd_mkdb "
.
$this
->
server_conf
[
"shadow_datei"
]
.
" &> /dev/null"
,
$this
->
FILE
,
__LINE__
);
}