From 7d52e00a51450bc4a080d4e21b7dda02c0a65191 Mon Sep 17 00:00:00 2001
From: Marius Cramer <m.cramer@pixcept.de>
Date: Thu, 14 Nov 2013 05:42:06 -0500
Subject: [PATCH] Fixed list sorting
---
server/lib/classes/system.inc.php | 116 ++++++++++++++++++++++++++++++++++++++++++++++++++++++----
1 files changed, 108 insertions(+), 8 deletions(-)
diff --git a/server/lib/classes/system.inc.php b/server/lib/classes/system.inc.php
index 14b9413..a1e7c00 100644
--- a/server/lib/classes/system.inc.php
+++ b/server/lib/classes/system.inc.php
@@ -41,9 +41,9 @@
* @return system
*/
public function system(){
- global $go_info;
- $this->server_id = $go_info['isp']['server_id'];
- $this->server_conf = $go_info['isp']['server_conf'];
+ //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';
@@ -575,6 +575,58 @@
}
/**
+ * Get the group id from an group
+ *
+ */
+ function getgid($group){
+ global $app;
+ if($this->is_group($group)){
+ $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 $f3;
+ }
+ }
+ }
+ } else {
+ return false;
+ }
+ }
+
+ /**
+ * Return info about a group by name
+ *
+ */
+ function posix_getgrnam($group) {
+ if(!function_exists('posix_getgrnam')){
+ $group_datei = $this->server_conf['group_datei'];
+ $cmd = 'grep -m 1 "^'.$group.':" '.$group_datei;
+ exec($cmd, $output, $return_var);
+ if($return_var != 0 || !$output[0]) return false;
+ list($f1, $f2, $f3, $f4) = explode(':', $output[0]);
+ $f2 = trim($f2);
+ $f3 = trim($f3);
+ $f4 = trim($f4);
+ if($f4 != ''){
+ $members = explode(',', $f4);
+ } else {
+ $members = array();
+ }
+ $group_details = array( 'name' => $group,
+ 'passwd' => $f2,
+ 'members' => $members,
+ 'gid' => $f3);
+ return $group_details;
+ } else {
+ return posix_getgrnam($group);
+ }
+ }
+
+ /**
* Get all information from a user
*
*/
@@ -673,7 +725,7 @@
$app->log("Action aborted, file is a symlink: $filename",LOGLEVEL_WARN);
return false;
}
- return file_put_contents($filename, $data);
+ return file_get_contents($filename, $data);
}
function rename($filename, $new_filename, $allow_symlink = false) {
@@ -699,8 +751,8 @@
}
}
- function unlink($file) {
- if(file_exists($filename)) {
+ function unlink($filename) {
+ if(file_exists($filename) || is_link($filename)) {
return unlink($filename);
}
}
@@ -709,13 +761,27 @@
return copy($file1,$file2);
}
+ function touch($file, $allow_symlink = false){
+ global $app;
+ if($allow_symlink == false && @file_exists($file) && $this->checkpath($file) == false) {
+ $this->unlink($file);
+ }
+ if(@touch($file)) {
+ return true;
+ } else {
+ $app->log("touch failed: $file",LOGLEVEL_DEBUG);
+ return false;
+ }
+ }
+
function checkpath($path) {
$path = trim($path);
//* We allow only absolute paths
if(substr($path,0,1) != '/') return false;
//* We allow only some characters in the path
- if(!preg_match('/[a-zA-Z0-9_\.\-]{1,}/',$path)) return false;
+ // * is allowed, for example it is part of wildcard certificates/keys: *.example.com.crt
+ if(!preg_match('@^/[-a-zA-Z0-9_/.*~]{1,}$@',$path)) return false;
//* Check path for symlinks
$path_parts = explode('/',$path);
@@ -1152,7 +1218,7 @@
function make_trashscan(){
global $app;
//trashscan erstellen
- // Template �ffnen
+ // Template Öffnen
$app->tpl->clear_all();
$app->tpl->define( array(table => 'trashscan.master'));
@@ -1514,6 +1580,40 @@
unset($shadow_file_array);
}
}
+
+ function intval($string, $force_numeric = false) {
+ if(intval($string) == 2147483647) {
+ if($force_numeric == true) return floatval($string);
+ elseif(preg_match('/^([-]?)[0]*([1-9][0-9]*)([^0-9].*)*$/', $string, $match)) return $match[1].$match[2];
+ else return 0;
+ } else {
+ return intval($string);
+ }
+ }
+
+ function is_mounted($mountpoint){
+ //$cmd = 'df 2>/dev/null | grep " '.$mountpoint.'$"';
+ $cmd = 'mount 2>/dev/null | grep " on '.$mountpoint.' type "';
+ exec($cmd, $output, $return_var);
+ return $return_var == 0 ? true : false;
+ }
+
+ function getinitcommand($servicename, $action, $init_script_directory = ''){
+ global $conf;
+ // systemd
+ if(is_executable('/bin/systemd')){
+ return 'systemctl '.$action.' '.$servicename.'.service';
+ }
+ // upstart
+ if(is_executable('/sbin/initctl')){
+ exec('/sbin/initctl version 2>/dev/null | /bin/grep -q upstart', $retval['output'], $retval['retval']);
+ if(intval($retval['retval']) == 0) return 'service '.$servicename.' '.$action;
+ }
+ // sysvinit
+ if($init_script_directory == '') $init_script_directory = $conf['init_scripts'];
+ if(substr($init_script_directory, -1) === '/') $init_script_directory = substr($init_script_directory, 0, -1);
+ return $init_script_directory.'/'.$servicename.' '.$action;
+ }
}
?>
--
Gitblit v1.9.1