From f0b03be2a39f1bc31fa3488bd457fadb878a32cd Mon Sep 17 00:00:00 2001
From: Florian Schaal <florian@schaal-24.de>
Date: Sat, 16 Jan 2016 04:43:38 -0500
Subject: [PATCH] Merge branch 'master' of http://git.ispconfig.org/ispconfig/ispconfig3
---
server/plugins-available/shelluser_base_plugin.inc.php | 4 ++
server/plugins-available/shelluser_jailkit_plugin.inc.php | 5 ++
interface/web/sites/shell_user_edit.php | 23 +++++++++++
interface/web/sites/templates/shell_user_advanced.htm | 36 ++++++++++-------
server/plugins-available/nginx_plugin.inc.php | 8 ++-
5 files changed, 56 insertions(+), 20 deletions(-)
diff --git a/interface/web/sites/shell_user_edit.php b/interface/web/sites/shell_user_edit.php
index 77c4509..2b606c2 100644
--- a/interface/web/sites/shell_user_edit.php
+++ b/interface/web/sites/shell_user_edit.php
@@ -95,6 +95,12 @@
} else {
$app->tpl->setVar("edit_disabled", 0);
}
+
+ if($this->dataRecord['chroot'] == 'jailkit'){
+ $app->tpl->setVar("is_jailkit", true);
+ } else {
+ $app->tpl->setVar("is_jailkit", false);
+ }
parent::onShowEnd();
}
@@ -164,7 +170,11 @@
$web = $app->db->queryOneRecord("SELECT * FROM web_domain WHERE domain_id = ?", $this->dataRecord["parent_domain_id"]);
$server_id = $app->functions->intval($web["server_id"]);
- $dir = $web["document_root"];
+ if($this->dataRecord['chroot'] == 'jailkit'){
+ $dir = $app->db->quote($web["document_root"]);
+ } else {
+ $dir = $app->db->quote($web["document_root"].'/home/'.$this->dataRecord['username']);
+ }
$uid = $web["system_user"];
$gid = $web["system_group"];
@@ -218,7 +228,18 @@
function onAfterUpdate() {
global $app, $conf;
+ if(isset($this->dataRecord['chroot'])){
+ $shell_user = $app->db->queryOneRecord("SELECT * FROM shell_user WHERE shell_user_id = ".$this->id);
+ $web = $app->db->queryOneRecord("SELECT * FROM web_domain WHERE domain_id = ".$app->functions->intval($this->dataRecord["parent_domain_id"]));
+ $dir = $shell_user['dir'];
+ if($this->dataRecord['chroot'] == 'jailkit'){
+ $dir = $app->db->quote($web["document_root"]);
+ } else {
+ if($this->oldDataRecord['chroot'] == 'jailkit') $dir = $app->db->quote($web["document_root"].'/home/'.$this->dataRecord['username']);
+ }
+ if($dir != $shell_user['dir']) $app->db->query("UPDATE shell_user SET dir = '$dir' WHERE shell_user_id = ".$this->id);
+ }
}
}
diff --git a/interface/web/sites/templates/shell_user_advanced.htm b/interface/web/sites/templates/shell_user_advanced.htm
index 3e335f9..bcbbdfa 100644
--- a/interface/web/sites/templates/shell_user_advanced.htm
+++ b/interface/web/sites/templates/shell_user_advanced.htm
@@ -3,21 +3,27 @@
</div>
<p><tmpl_var name="list_desc_txt"></p>
-
-
- <div class="form-group">
- <label for="puser" class="col-sm-3 control-label">{tmpl_var name='puser_txt'}</label>
- <div class="col-sm-9"><input type="text" name="puser" id="puser" value="{tmpl_var name='puser'}" class="form-control" /></div></div>
- <div class="form-group">
- <label for="pgroup" class="col-sm-3 control-label">{tmpl_var name='pgroup_txt'}</label>
- <div class="col-sm-9"><input type="text" name="pgroup" id="pgroup" value="{tmpl_var name='pgroup'}" class="form-control" /></div></div>
- <div class="form-group">
- <label for="shell" class="col-sm-3 control-label">{tmpl_var name='shell_txt'}</label>
- <div class="col-sm-9"><input type="text" name="shell" id="shell" value="{tmpl_var name='shell'}" class="form-control" /></div></div>
- <div class="form-group">
- <label for="dir" class="col-sm-3 control-label">{tmpl_var name='dir_txt'}</label>
- <div class="col-sm-9"><input type="text" name="dir" id="dir" value="{tmpl_var name='dir'}" class="form-control" /></div></div>
-
+ <div class="form-group">
+ <label for="puser" class="col-sm-3 control-label">{tmpl_var name='puser_txt'}</label>
+ <div class="col-sm-9"><input type="text" name="puser" id="puser" value="{tmpl_var name='puser'}" class="form-control" /></div>
+ </div>
+ <div class="form-group">
+ <label for="pgroup" class="col-sm-3 control-label">{tmpl_var name='pgroup_txt'}</label>
+ <div class="col-sm-9"><input type="text" name="pgroup" id="pgroup" value="{tmpl_var name='pgroup'}" class="form-control" /></div>
+ </div>
+ <div class="form-group">
+ <label for="shell" class="col-sm-3 control-label">{tmpl_var name='shell_txt'}</label>
+ <div class="col-sm-9"><input type="text" name="shell" id="shell" value="{tmpl_var name='shell'}" class="form-control" /></div>
+ </div>
+ <tmpl_if name="is_jailkit">
+ <input type="hidden" name="dir" id="dir" value="{tmpl_var name='dir'}">
+ </tmpl_else>
+ <div class="form-group">
+ <label for="dir" class="col-sm-3 control-label">{tmpl_var name='dir_txt'}</label>
+ <div class="col-sm-9"><input type="text" name="dir" id="dir" value="{tmpl_var name='dir'}" class="form-control" /></div>
+ </div>
+ </tmpl_if>
+
<input type="hidden" name="id" value="{tmpl_var name='id'}">
diff --git a/server/plugins-available/nginx_plugin.inc.php b/server/plugins-available/nginx_plugin.inc.php
index 3437b55..52bf73d 100644
--- a/server/plugins-available/nginx_plugin.inc.php
+++ b/server/plugins-available/nginx_plugin.inc.php
@@ -2985,13 +2985,15 @@
} else {
if($islocation){
- if(strpos($l, '{') !== false){
+ $openingbracketpos = strrpos($l, '{');
+ if($openingbracketpos !== false){
$level += 1;
}
- if(strpos($l, '}') !== false && $level > 0){
+ $closingbracketpos = strrpos($l, '}');
+ if($closingbracketpos !== false && $level > 0 && $closingbracketpos >= intval($openingbracketpos)){
$level -= 1;
$locations[$location]['location'] .= $lines[$i]."\n";
- } elseif(strpos($l, '}') !== false && $level == 0){
+ } elseif($closingbracketpos !== false && $level == 0 && $closingbracketpos >= intval($openingbracketpos)){
$islocation = false;
} else {
$locations[$location]['location'] .= $lines[$i]."\n";
diff --git a/server/plugins-available/shelluser_base_plugin.inc.php b/server/plugins-available/shelluser_base_plugin.inc.php
index 8a51b10..24b3469 100755
--- a/server/plugins-available/shelluser_base_plugin.inc.php
+++ b/server/plugins-available/shelluser_base_plugin.inc.php
@@ -136,6 +136,10 @@
exec($command);
$app->log("Executed command: ".$command, LOGLEVEL_DEBUG);
$app->log("Added shelluser: ".$data['new']['username'], LOGLEVEL_DEBUG);
+
+ $app->system->chown(escapeshellcmd($data['new']['dir']),escapeshellcmd($data['new']['username']));
+ $app->system->chgrp(escapeshellcmd($data['new']['dir']),escapeshellcmd($data['new']['pgroup']));
+
// call the ssh-rsa update function
$app->uses("getconf");
diff --git a/server/plugins-available/shelluser_jailkit_plugin.inc.php b/server/plugins-available/shelluser_jailkit_plugin.inc.php
index 4c400c7..5645953 100755
--- a/server/plugins-available/shelluser_jailkit_plugin.inc.php
+++ b/server/plugins-available/shelluser_jailkit_plugin.inc.php
@@ -386,7 +386,10 @@
}
}*/
- $app->system->usermod($this->data['new']['username'], 0, 0, $this->data['new']['dir'].'/.'.$jailkit_chroot_userhome, '/usr/sbin/jk_chrootsh');
+ $shell = '/usr/sbin/jk_chrootsh';
+ if($this->data['new']['active'] != 'y') $shell = '/bin/false';
+
+ $app->system->usermod($this->data['new']['username'], 0, 0, $this->data['new']['dir'].'/.'.$jailkit_chroot_userhome, $shell);
$app->system->usermod($this->data['new']['puser'], 0, 0, $this->data['new']['dir'].'/.'.$jailkit_chroot_userhome, '/usr/sbin/jk_chrootsh');
$this->app->log("Added jailkit user to chroot with command: ".$command, LOGLEVEL_DEBUG);
--
Gitblit v1.9.1