merge with 0_6_dev branch
This commit is contained in:
parent
d514c6ae16
commit
fdfc9f8dca
|
@ -11,39 +11,9 @@ admins: cn=Manager,dc=my-domain,dc=com
|
|||
# password to change these preferences via webfrontend
|
||||
passwd: lam
|
||||
|
||||
# suffix of users
|
||||
# e.g. ou=People,dc=yourdomain,dc=org
|
||||
usersuffix: ou=people,dc=my-domain,dc=com
|
||||
|
||||
# suffix of groups
|
||||
# e.g. ou=Groups,dc=yourdomain,dc=org
|
||||
groupsuffix: ou=groups,dc=my-domain,dc=com
|
||||
|
||||
# suffix of Samba hosts
|
||||
# e.g. ou=machines,dc=yourdomain,dc=org
|
||||
hostsuffix: ou=machines,dc=my-domain,dc=com
|
||||
|
||||
# suffix of Samba 3 domains
|
||||
# e.g. ou=domains,dc=yourdomain,dc=org
|
||||
domainsuffix: ou=domains,dc=my-domain,dc=com
|
||||
|
||||
# list of attributes to show in user list
|
||||
# entries can either be predefined values (e.g. '#cn' or '#uid')
|
||||
# or individual ones (e.g. 'uid:User ID' or 'host:Host Name')
|
||||
# values have to be seperated by semicolons
|
||||
userlistAttributes: #uid;#givenName;#sn;#uidNumber;#gidNumber
|
||||
|
||||
# list of attributes to show in group list
|
||||
# entries can either be predefined values (e.g. '#cn' or '#gidNumber')
|
||||
# or individual ones (e.g. 'cn:Group Name')
|
||||
# values have to be seperated by semicolons
|
||||
grouplistAttributes: #cn;#gidNumber;#memberUID;#description
|
||||
|
||||
# list of attributes to show in host list
|
||||
# entries can either be predefined values (e.g. '#cn' or '#uid')
|
||||
# or individual ones (e.g. 'cn:Host Name')
|
||||
# values have to be seperated by semicolons
|
||||
hostlistAttributes: #cn;#description;#uidNumber;#gidNumber
|
||||
# suffix of tree view
|
||||
# e.g. dc=yourdomain,dc=org
|
||||
treesuffix: dc=yourdomain,dc=org
|
||||
|
||||
# maximum number of rows to show in user/group/host lists
|
||||
maxlistentries: 30
|
||||
|
@ -60,15 +30,6 @@ scriptServer:
|
|||
# Number of minutes LAM caches LDAP searches.
|
||||
cachetimeout: 5
|
||||
|
||||
# List of used user modules
|
||||
usermodules: shadowAccount,inetOrgPerson,posixAccount,sambaSamAccount
|
||||
|
||||
# List of used group modules
|
||||
groupmodules: posixGroup,sambaGroupMapping
|
||||
|
||||
# List of used host modules
|
||||
hostmodules: account,sambaSamAccount,posixAccount
|
||||
|
||||
# Module settings
|
||||
|
||||
modules: posixAccount_minUID: 10000
|
||||
|
@ -80,3 +41,23 @@ modules: posixGroup_maxGID: 20000
|
|||
modules: posixGroup_pwdHash: SSHA
|
||||
modules: posixAccount_pwdHash: SSHA
|
||||
|
||||
# List of active account types.
|
||||
activeTypes: user,group,host,smbDomain
|
||||
|
||||
|
||||
types: suffix_user: ou=People,dc=my-domain,dc=com
|
||||
types: attr_user: #uid;#givenName;#sn;#uidNumber;#gidNumber
|
||||
types: modules_user: inetOrgPerson,posixAccount,shadowAccount,sambaSamAccount
|
||||
|
||||
types: suffix_group: ou=group,dc=my-domain,dc=com
|
||||
types: attr_group: #cn;#gidNumber;#memberUID;#description
|
||||
types: modules_group: posixGroup,sambaGroupMapping
|
||||
|
||||
types: suffix_host: ou=machines,dc=my-domain,dc=com
|
||||
types: attr_host: #cn;#description;#uidNumber;#gidNumber
|
||||
types: modules_host: account,posixAccount,sambaSamAccount
|
||||
|
||||
types: suffix_smbDomain: ou=domains,dc=my-domain,dc=com
|
||||
types: attr_smbDomain: sambaDomainName:Domain name;sambaSID:Domain SID
|
||||
types: modules_smbDomain: sambaDomain
|
||||
|
||||
|
|
|
@ -0,0 +1 @@
|
|||
|
|
@ -0,0 +1 @@
|
|||
|
|
@ -90,7 +90,8 @@ browser</a><br>
|
|||
<br>
|
||||
<h2>Howtos</h2>
|
||||
<ul>
|
||||
<li><a href="mod_index.htm">Writing account modules</a><br>
|
||||
<li><a href="mod_index.htm">Writing account modules</a></li>
|
||||
<li><a href="type_index.htm">Defining other account types</a><br>
|
||||
</li>
|
||||
</ul>
|
||||
<br>
|
||||
|
|
|
@ -0,0 +1,70 @@
|
|||
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
|
||||
<html>
|
||||
<head>
|
||||
<title>Type HowTo - Basic concepts</title>
|
||||
<link rel="stylesheet" type="text/css" href="style/layout.css">
|
||||
</head>
|
||||
<body>
|
||||
<div style="text-align: center;">
|
||||
<h1>Type HowTo - Basic concepts<br>
|
||||
</h1>
|
||||
<br>
|
||||
<br>
|
||||
<div style="text-align: left;"><br>
|
||||
<h2>1. Licensing</h2>
|
||||
LAM is licensed under the <a href="http://www.gnu.org/licenses/gpl.txt">GNU
|
||||
General Public License</a>. This means your plugins need a compatible
|
||||
license.<br>
|
||||
LAM is distributed with a copy of the GPL license.<br>
|
||||
<br>
|
||||
<br>
|
||||
<h2>2. Naming and position in directory structure</h2>
|
||||
Type names are usually named after the group of accounts they manage.
|
||||
However, you can use any name you want, it should be short and
|
||||
containing only a-z and 0-9. The type name is only shown in the
|
||||
configuration dialog, on all other pages LAM will show a provided <span
|
||||
style="font-style: italic;">alias</span> name.<br>
|
||||
All type modules are stored in <span style="font-weight: bold;">lib/types</span>.
|
||||
The filename must end with <span style="font-weight: bold;">.inc</span>
|
||||
and the file must have the same name as its inside class.<br>
|
||||
<br>
|
||||
<span style="font-weight: bold; text-decoration: underline;">Example:</span>
|
||||
Our example module will provide the <span style="font-weight: bold;">class
|
||||
</span><span style="font-style: italic; font-weight: bold;">smbDomain</span>,
|
||||
therefore the file will be called <span style="font-weight: bold;">lib/types/</span><span
|
||||
style="font-style: italic; font-weight: bold;">smbDomain.inc</span>.<span
|
||||
style="font-style: italic;"></span><br>
|
||||
<br>
|
||||
<br>
|
||||
<h2>3. Defining the class</h2>
|
||||
All type classes have <span style="font-weight: bold;">baseType</span>
|
||||
as parent class. This provides common functionality and dummy functions
|
||||
for all required class functions.<br>
|
||||
<br>
|
||||
<span style="font-weight: bold;">Example:</span><br>
|
||||
<br>
|
||||
<table style="width: 100%; text-align: left;" class="mod-code"
|
||||
border="0" cellpadding="2" cellspacing="2">
|
||||
<tbody>
|
||||
<tr>
|
||||
<td style="vertical-align: top;">/**<br>
|
||||
* The account type for Samba domains.<br>
|
||||
*<br>
|
||||
* @package types<br>
|
||||
*/<span style="font-weight: bold;"><br>
|
||||
class</span> <span style="color: rgb(255, 0, 0);">smbDomain</span><span
|
||||
style="font-style: italic;"> extends </span><span
|
||||
style="font-weight: bold;">baseType</span> {<br>
|
||||
<br>
|
||||
}<br>
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
<br>
|
||||
<br>
|
||||
<h2><span style="font-weight: bold;"></span></h2>
|
||||
</div>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
|
@ -0,0 +1,39 @@
|
|||
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
|
||||
<html>
|
||||
<head>
|
||||
<title>Type HowTo - CSS file</title>
|
||||
<link rel="stylesheet" type="text/css" href="style/layout.css">
|
||||
</head>
|
||||
<body>
|
||||
<div style="text-align: center;">
|
||||
<h1>Type HowTo - CSS file</h1>
|
||||
<br>
|
||||
<div style="text-align: left;"><br>
|
||||
Every account type has its own style sheet where it can define colors
|
||||
and fonts.<br>
|
||||
<br>
|
||||
<br>
|
||||
<h2>1. File name</h2>
|
||||
The CSS files are saved in <span style="font-weight: bold;">style/</span>.
|
||||
Your file must be named <span style="font-weight: bold;">type_<your
|
||||
type>.css</span>.<br>
|
||||
<br>
|
||||
<span style="font-weight: bold; text-decoration: underline;">Example:</span><br
|
||||
style="font-weight: bold; text-decoration: underline;">
|
||||
<br>
|
||||
The <span style="font-style: italic;">smbDomain</span> type has the
|
||||
CSS file <span style="font-weight: bold;">style/type_smbDomain.css</span>.<br>
|
||||
<br>
|
||||
<br>
|
||||
<h2>2. Contents</h2>
|
||||
Take the type_user.css file as template. It is well documented.<br>
|
||||
You have to replace all occurrences of "user" with your account type.<br>
|
||||
<br>
|
||||
<span style="font-weight: bold; text-decoration: underline;">Example:</span><br
|
||||
style="font-weight: bold; text-decoration: underline;">
|
||||
<br>
|
||||
Take a look at type_user.css and type_smbDomain.css.<br>
|
||||
</div>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
|
@ -0,0 +1,90 @@
|
|||
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
|
||||
<html>
|
||||
<head>
|
||||
<title>Type HowTo - General type options</title>
|
||||
<link rel="stylesheet" type="text/css" href="style/layout.css">
|
||||
</head>
|
||||
<body>
|
||||
<div style="text-align: center;">
|
||||
<h1>Type HowTo - General type options<br>
|
||||
</h1>
|
||||
<br>
|
||||
<br>
|
||||
<div style="text-align: left;"><br>
|
||||
<h2>1. Alias name</h2>
|
||||
The type name is very limited, therefore every type has an <span
|
||||
style="font-style: italic;">alias name</span>. This <span
|
||||
style="font-style: italic;">alias name</span> has no limitations and
|
||||
can be translated. It may contain special characters but make sure that
|
||||
it does not contain HTML special characters like "<".<br>
|
||||
<br>
|
||||
The <span style="font-style: italic;">alias name</span> is specified
|
||||
with <span style="font-weight: bold;">getAlias()</span><span
|
||||
style="font-weight: bold;"></span>.<br>
|
||||
<br>
|
||||
<span style="font-weight: bold; text-decoration: underline;">Example:</span><br
|
||||
style="font-weight: bold; text-decoration: underline;">
|
||||
<br>
|
||||
Our <span style="font-style: italic;">smbDomain</span> type will get
|
||||
the alias "Samba domains".<br>
|
||||
<br>
|
||||
<table style="width: 100%; text-align: left;" class="mod-code"
|
||||
border="0" cellpadding="2" cellspacing="2">
|
||||
<tbody>
|
||||
<tr>
|
||||
<td style="vertical-align: top;"> /**<br>
|
||||
* Returns the alias name of this account type.<br>
|
||||
*<br>
|
||||
* @return string alias name<br>
|
||||
*/<br>
|
||||
<span style="font-weight: bold;">function</span>
|
||||
<span style="color: rgb(255, 0, 0);">getAlias()</span> {<br>
|
||||
return _("Samba domains");<br>
|
||||
}<br>
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
<br>
|
||||
<br>
|
||||
<h2>2. Description<br>
|
||||
</h2>
|
||||
Each type has a description so that the user knows what accounts he can
|
||||
manage with that type. The description is displayed in the LAM
|
||||
configuration editor.<br>
|
||||
<br>
|
||||
The description is specified with <span style="font-weight: bold;">getDescription()</span><span
|
||||
style="font-weight: bold;"></span>.<br>
|
||||
<br>
|
||||
<span style="font-weight: bold; text-decoration: underline;">Example:</span><br
|
||||
style="font-weight: bold; text-decoration: underline;">
|
||||
<br>
|
||||
Our <span style="font-style: italic;">smbDomain</span> type has the
|
||||
description "Samba 3 domain entries".<br>
|
||||
<br>
|
||||
<table style="width: 100%; text-align: left;" class="mod-code"
|
||||
border="0" cellpadding="2" cellspacing="2">
|
||||
<tbody>
|
||||
<tr>
|
||||
<td style="vertical-align: top;"> /**<br>
|
||||
* Returns the description of this account type.<br>
|
||||
*<br>
|
||||
* @return string description<br>
|
||||
*/<br>
|
||||
<span style="font-weight: bold;">function</span>
|
||||
<span style="color: rgb(255, 0, 0);">getDescription()</span> {<br>
|
||||
return _("Samba 3 domain
|
||||
entries");<br>
|
||||
}<br>
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
<br>
|
||||
<br>
|
||||
<span style="font-weight: bold;"></span>
|
||||
<h2><span style="font-weight: bold;"></span></h2>
|
||||
</div>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
|
@ -0,0 +1,31 @@
|
|||
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
|
||||
<html>
|
||||
<head>
|
||||
<title>Type HowTo - Icon</title>
|
||||
<link rel="stylesheet" type="text/css" href="style/layout.css">
|
||||
</head>
|
||||
<body>
|
||||
<div style="text-align: center;">
|
||||
<h1>Type HowTo - Icon</h1>
|
||||
<br>
|
||||
<div style="text-align: left;"><br>
|
||||
You have to provide an icon for your account type. This icon is
|
||||
displayed in the upper frame next to the link to your account list.<br>
|
||||
The format of the image must be <span style="font-weight: bold;">PNG</span>
|
||||
and the size should be between <span style="font-weight: bold;">20x20</span>
|
||||
and <span style="font-weight: bold;">25x25</span> pixels.<br>
|
||||
<br>
|
||||
The file is stored in <span style="font-weight: bold;">graphics/</span>
|
||||
with the file name <span style="font-weight: bold;"><your
|
||||
type>.png</span>.<br>
|
||||
<br>
|
||||
<br>
|
||||
<span style="font-weight: bold; text-decoration: underline;">Example:</span><br
|
||||
style="font-weight: bold; text-decoration: underline;">
|
||||
<br>
|
||||
The <span style="font-style: italic;">smbDomain</span> type has the
|
||||
icon graphics/smbDomain.png.<br>
|
||||
</div>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
|
@ -0,0 +1,36 @@
|
|||
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
|
||||
<html>
|
||||
<head>
|
||||
<title>LAM type HowTo</title>
|
||||
<link rel="stylesheet" type="text/css" href="style/layout.css">
|
||||
</head>
|
||||
<body>
|
||||
<div style="text-align: center;">
|
||||
<h1>Type HowTo</h1>
|
||||
<br>
|
||||
<div style="text-align: left;">If you write new account modules they
|
||||
may not fit in the existing group of account types (user, group, host,
|
||||
...). In this case you can easily create a new account type.<br>
|
||||
This document provides a step-by-step description to build a type
|
||||
module. The <span style="font-style: italic;">smbDomain</span>
|
||||
module which handles Samba domains is used as example.<br>
|
||||
</div>
|
||||
<br>
|
||||
<div style="text-align: left;">
|
||||
<h2>1. Defining the type<br>
|
||||
</h2>
|
||||
<h3><a href="type_basics.htm">1. Basic concepts</a><br>
|
||||
</h3>
|
||||
<h3><a href="type_general.htm">2. General type options</a></h3>
|
||||
<h3><a href="type_list.htm">3. Custom list view</a></h3>
|
||||
<br>
|
||||
<br>
|
||||
<h2><a href="type_profile.htm">2. The default profile</a></h2>
|
||||
<br>
|
||||
<h2><a href="type_icon.htm">3. List icon</a></h2>
|
||||
<br>
|
||||
<h2><a href="type_css.htm">4. Type specific CSS file</a></h2>
|
||||
</div>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
|
@ -0,0 +1,181 @@
|
|||
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
|
||||
<html>
|
||||
<head>
|
||||
<title>Type HowTo - Custom list view</title>
|
||||
<link rel="stylesheet" type="text/css" href="style/layout.css">
|
||||
</head>
|
||||
<body>
|
||||
<div style="text-align: center;">
|
||||
<h1>Type HowTo - Custom list view<br>
|
||||
</h1>
|
||||
<br>
|
||||
<br>
|
||||
<div style="text-align: left;"><br>
|
||||
<h2>1. Default list attributes<br>
|
||||
</h2>
|
||||
Here you can specify what attributes are shown as default in the list
|
||||
view.<br>
|
||||
<br>
|
||||
The <span style="font-style: italic;">default attributes</span> are
|
||||
specified
|
||||
with <span style="font-weight: bold;">getDefaultListAttributes()</span><span
|
||||
style="font-weight: bold;"></span>.<br>
|
||||
<br>
|
||||
<span style="font-weight: bold; text-decoration: underline;">Example:</span><br
|
||||
style="font-weight: bold; text-decoration: underline;">
|
||||
<br>
|
||||
Our <span style="font-style: italic;">smbDomain</span> type will show
|
||||
the attributes "#sambaDomainName;#sambaSID" by default.<br>
|
||||
<br>
|
||||
<table style="width: 100%; text-align: left;" class="mod-code"
|
||||
border="0" cellpadding="2" cellspacing="2">
|
||||
<tbody>
|
||||
<tr>
|
||||
<td style="vertical-align: top;"> /**<br>
|
||||
* Returns the default attribute list for this
|
||||
account type.<br>
|
||||
*<br>
|
||||
* @return string attribute list<br>
|
||||
*/<br>
|
||||
<span style="font-weight: bold;">function</span> <span
|
||||
style="color: rgb(255, 0, 0);">getDefaultListAttributes()</span> {<br>
|
||||
return
|
||||
"#sambaDomainName;#sambaSID";<br>
|
||||
}<br>
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
<br>
|
||||
<br>
|
||||
<h2>2. Pretranslated attribute descriptions<br>
|
||||
</h2>
|
||||
You can provide translated descriptions for common attributes. This way
|
||||
the user only specifies the attributes and LAM will show a description
|
||||
for each language.<br>
|
||||
<br>
|
||||
The descriptions are specified with <span style="font-weight: bold;">getListAttributeDescriptions()</span><span
|
||||
style="font-weight: bold;"></span>.<br>
|
||||
<br>
|
||||
<span style="font-weight: bold; text-decoration: underline;">Example:</span><br
|
||||
style="font-weight: bold; text-decoration: underline;">
|
||||
<br>
|
||||
Our <span style="font-style: italic;">smbDomain</span> type has
|
||||
descriptions for sambaSID and sambaDomainName.<br>
|
||||
<br>
|
||||
<table style="width: 100%; text-align: left;" class="mod-code"
|
||||
border="0" cellpadding="2" cellspacing="2">
|
||||
<tbody>
|
||||
<tr>
|
||||
<td style="vertical-align: top;"> /**<br>
|
||||
* Returns a list of attributes which have a
|
||||
translated description.<br>
|
||||
* This is used for the head row in the list view.<br>
|
||||
*<br>
|
||||
* @return array list of descriptions<br>
|
||||
*/<br>
|
||||
<span style="font-weight: bold;">function</span> <span
|
||||
style="color: rgb(255, 0, 0);">getListAttributeDescriptions()</span> {<br>
|
||||
return array(<br>
|
||||
"sambaSID"
|
||||
=> _("Domain SID"),<br>
|
||||
|
||||
"sambaDomainName" => _("Domain name")<br>
|
||||
);<br>
|
||||
}<br>
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
<br>
|
||||
<br>
|
||||
<br>
|
||||
<h2>3. Specifying a custom list view</h2>
|
||||
The default list view has only very generic labels for the buttons and
|
||||
navigation bar. So you should at least provide some new labels which
|
||||
fit to your type.<br>
|
||||
<br>
|
||||
The class name of your list view is specified with <span
|
||||
style="font-weight: bold;">getListClassName()</span><span
|
||||
style="font-weight: bold;"></span>.<br>
|
||||
<br>
|
||||
<span style="font-weight: bold; text-decoration: underline;">Example:</span><br
|
||||
style="font-weight: bold; text-decoration: underline;">
|
||||
<br>
|
||||
Our <span style="font-style: italic;">smbDomain</span> type sets the
|
||||
list view class to <span style="font-style: italic;">lamSmbDomainList</span>.
|
||||
The list class is defined in the same file as your type class
|
||||
(smbDomain.inc in this case).<br>
|
||||
The labels are set in the constructor. Do not forget to call the parent
|
||||
constructor first.<br>
|
||||
<br>
|
||||
If you want to change more than just the labels, take a look at <span
|
||||
style="font-weight: bold;">lib/lists.inc</span> and <span
|
||||
style="font-weight: bold;">lib/types/user.inc</span>. When a list is
|
||||
displayed then the <span style="font-weight: bold;">showPage()</span>
|
||||
function is called. You can overwrite this function to display a
|
||||
completly new list or just one of the other functions.<br>
|
||||
<br>
|
||||
<table style="width: 100%; text-align: left;" class="mod-code"
|
||||
border="0" cellpadding="2" cellspacing="2">
|
||||
<tbody>
|
||||
<tr>
|
||||
<td style="vertical-align: top;">/**<br>
|
||||
* Returns the class name for the list object.<br>
|
||||
*<br>
|
||||
* @return string class name<br>
|
||||
*/<br>
|
||||
function <span style="color: rgb(255, 0, 0);">getListClassName()</span>
|
||||
{<br>
|
||||
return "lamSmbDomainList";<br>
|
||||
}<br>
|
||||
<br>
|
||||
<br>
|
||||
/**<br>
|
||||
* Generates the list view.<br>
|
||||
*<br>
|
||||
* @package lists<br>
|
||||
* @author Roland Gruber<br>
|
||||
* <br>
|
||||
*/<br>
|
||||
class <span style="color: rgb(255, 0, 0);">lamSmbDomainList</span>
|
||||
extends <span style="font-weight: bold;">lamList</span> {<br>
|
||||
<br>
|
||||
/**<br>
|
||||
* Constructor<br>
|
||||
*<br>
|
||||
* @param string $type account type<br>
|
||||
* @return lamList list object<br>
|
||||
*/<br>
|
||||
function lamSmbDomainList($type) {<br>
|
||||
parent::lamList($type);<br>
|
||||
$this->labels = array(<br>
|
||||
'nav' =>
|
||||
_("%s domain(s) found"),<br>
|
||||
|
||||
'error_noneFound' => _("No domains found!"),<br>
|
||||
'newEntry'
|
||||
=> _("New domain"),<br>
|
||||
'deleteEntry'
|
||||
=> _("Delete domain"),<br>
|
||||
'createPDF'
|
||||
=> _("Create PDF for selected domain(s)"),<br>
|
||||
'createPDFAll'
|
||||
=> _("Create PDF for all domains"));<br>
|
||||
}<br>
|
||||
<br>
|
||||
}<br>
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
<br>
|
||||
<br>
|
||||
<br>
|
||||
<br>
|
||||
<span style="font-weight: bold;"></span>
|
||||
<h2><span style="font-weight: bold;"></span></h2>
|
||||
</div>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
|
@ -0,0 +1,27 @@
|
|||
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
|
||||
<html>
|
||||
<head>
|
||||
<title>Type HowTo - Default profile</title>
|
||||
<link rel="stylesheet" type="text/css" href="style/layout.css">
|
||||
</head>
|
||||
<body>
|
||||
<div style="text-align: center;">
|
||||
<h1>Type HowTo - Default profile</h1>
|
||||
<br>
|
||||
<div style="text-align: left;"><br>
|
||||
You have to provide a default profile for your account type. If you do
|
||||
not want to specify default values then just provide an empty file.<br>
|
||||
Save your profile as <span style="font-weight: bold;">default.<your
|
||||
type></span> in <span style="font-weight: bold;">config/profiles</span>.<br>
|
||||
<br>
|
||||
<br>
|
||||
<span style="font-weight: bold; text-decoration: underline;">Example:</span><br
|
||||
style="font-weight: bold; text-decoration: underline;">
|
||||
<br>
|
||||
The <span style="font-style: italic;">smbDomain</span> type has only
|
||||
an empty default profile. It is saved as <span
|
||||
style="font-weight: bold;">config/profiles/default.smbDomain</span>.<br>
|
||||
</div>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
|
@ -0,0 +1,144 @@
|
|||
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
|
||||
<html>
|
||||
<head>
|
||||
<meta content="text/html; charset=ISO-8859-15"
|
||||
http-equiv="content-type">
|
||||
<title>Type specification</title>
|
||||
<style>
|
||||
<!--
|
||||
h2 {
|
||||
color:darkblue;
|
||||
}
|
||||
h3 {
|
||||
color:darkblue;
|
||||
}
|
||||
h4 {
|
||||
color:darkblue;
|
||||
}
|
||||
table {
|
||||
background-color:#bdcaff;
|
||||
}
|
||||
-->
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
<h1 style="text-align: center;">This document describes the type
|
||||
interface for LDAP Account Manager</h1>
|
||||
<br>
|
||||
Account types are used to manage a group of accounts by grouping one or
|
||||
more account modules. Examples for account types are user, group, host
|
||||
and smbDomain.<br>
|
||||
<br>
|
||||
<h2>1. Location and naming of types<br>
|
||||
</h2>
|
||||
All LAM types are placed in lib/types/ and are named "<class
|
||||
name>.inc".<br>
|
||||
E.g. if you create a new type and its class name is "myUser" then the
|
||||
filename would be "myUser.inc".<br>
|
||||
<br>
|
||||
The class name of a type must contain only a-z, A-Z, 0-9, -, and _.<br>
|
||||
All type classes should extend the baseType class.<br>
|
||||
<br>
|
||||
<h2>2. Functions</h2>
|
||||
<h3>2.1. getAlias<br>
|
||||
</h3>
|
||||
<br>
|
||||
<table border="0" cellpadding="2" cellspacing="2">
|
||||
<tbody>
|
||||
<tr>
|
||||
<td style="vertical-align: top; text-align: center;"><span
|
||||
style="font-weight: bold;">function getAlias()</span><br>
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
<br>
|
||||
Returns <span style="font-style: italic;"></span>the alias name for
|
||||
this type. E.g. the alias for smbDomain is "Samba domains".<br>
|
||||
<br>
|
||||
<h3>2.2. getDescription<br>
|
||||
</h3>
|
||||
<br>
|
||||
<table border="0" cellpadding="2" cellspacing="2">
|
||||
<tbody>
|
||||
<tr>
|
||||
<td style="vertical-align: top; text-align: center;"><span
|
||||
style="font-weight: bold;">function getDescription()</span><br>
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
<br>
|
||||
Returns <span style="font-style: italic;"></span>a description for the
|
||||
account type. This should be a short sentence describing the account
|
||||
type.<br>
|
||||
<br>
|
||||
<h3>2.3. getListClassName<br>
|
||||
</h3>
|
||||
<br>
|
||||
<table border="0" cellpadding="2" cellspacing="2">
|
||||
<tbody>
|
||||
<tr>
|
||||
<td style="vertical-align: top; text-align: center;"><span
|
||||
style="font-weight: bold;">function getListClassName()</span><br>
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
<br>
|
||||
Here you can specify your own class to handle the list view. The class
|
||||
must be a subclass of <span style="font-weight: bold;">lamList</span>.<br>
|
||||
<br>
|
||||
<h3>2.4. getDefaultListAttributes<br>
|
||||
</h3>
|
||||
<br>
|
||||
<table border="0" cellpadding="2" cellspacing="2">
|
||||
<tbody>
|
||||
<tr>
|
||||
<td style="vertical-align: top; text-align: center;"><span
|
||||
style="font-weight: bold;">function getDefaultListAttributes()</span><br>
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
<br>
|
||||
Returns <span style="font-style: italic;"></span>the default setting
|
||||
for the displayed list attributes. It is used as default for config and
|
||||
the syntax is equal to the config setting.<br>
|
||||
<br>
|
||||
<h3>2.5. getListAttributeDescriptions<br>
|
||||
</h3>
|
||||
<br>
|
||||
<table border="0" cellpadding="2" cellspacing="2">
|
||||
<tbody>
|
||||
<tr>
|
||||
<td style="vertical-align: top; text-align: center;"><span
|
||||
style="font-weight: bold;">function getListAttributeDescriptions()</span><br>
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
<br>
|
||||
Returns a hash array which contains predefined, translated descriptions
|
||||
of LDAP attributes.<br>
|
||||
<br>
|
||||
<span style="text-decoration: underline; font-weight: bold;"><br>
|
||||
Example:</span><br
|
||||
style="text-decoration: underline; font-weight: bold;">
|
||||
<br>
|
||||
return array(<br>
|
||||
"sambaSID" => _("Domain SID"),<br>
|
||||
"sambaDomainName" => _("Domain name")<br>
|
||||
);<br>
|
||||
<br>
|
||||
<br>
|
||||
<br>
|
||||
<br>
|
||||
<br>
|
||||
<span style="font-weight: bold;"></span><span style="font-weight: bold;"><span
|
||||
style="font-style: italic;"></span></span><span
|
||||
style="font-style: italic; font-weight: bold;"></span><span
|
||||
style="font-style: italic; font-weight: bold;"></span><span
|
||||
style="font-style: italic; font-weight: bold;"></span>
|
||||
</body>
|
||||
</html>
|
Binary file not shown.
After Width: | Height: | Size: 1.3 KiB |
Binary file not shown.
After Width: | Height: | Size: 899 B |
Binary file not shown.
After Width: | Height: | Size: 1.1 KiB |
|
@ -153,21 +153,7 @@ $helpArray = array (
|
|||
"601" => array ("ext" => "FALSE", "Headline" => _("OU-Editor") . " - " . _("New organizational unit"),
|
||||
"Text" => _("This will create a new organizational unit under the selected one.")),
|
||||
"602" => array ("ext" => "FALSE", "Headline" => _("OU-Editor") . " - " . _("Delete organizational unit"),
|
||||
"Text" => _("This will delete the selected organizational unit. The OU has to be empty.")),
|
||||
"651" => array ("ext" => "FALSE", "Headline" => _("Domain name"),
|
||||
"Text" => _("The name of your Windows domain or workgroup.")),
|
||||
"652" => array ("ext" => "FALSE", "Headline" => _("Suffix"),
|
||||
"Text" => _("The domain entry will be saved under this suffix.")),
|
||||
"653" => array ("ext" => "FALSE", "Headline" => _("Domain SID"),
|
||||
"Text" => _("The SID of your Samba server. Get it with \"net getlocalsid\".")),
|
||||
"654" => array ("ext" => "FALSE", "Headline" => _("Next RID"),
|
||||
"Text" => _("Next RID to use when creating accounts.")),
|
||||
"655" => array ("ext" => "FALSE", "Headline" => _("Next User RID"),
|
||||
"Text" => _("Next RID to use when creating user accounts.")),
|
||||
"656" => array ("ext" => "FALSE", "Headline" => _("Next Group RID"),
|
||||
"Text" => _("Next RID to use when creating groups.")),
|
||||
"657" => array ("ext" => "FALSE", "Headline" => _("Algorithmic RID Base"),
|
||||
"Text" => _("Used for calculating RIDs from UID/GID. Do not change if unsure."))
|
||||
"Text" => _("This will delete the selected organizational unit. The OU has to be empty."))
|
||||
|
||||
);
|
||||
|
||||
|
|
|
@ -357,50 +357,50 @@ function pwd_is_enabled($hash) {
|
|||
else return true;
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns an array with all Samba 3 domain entries under the given suffix
|
||||
*
|
||||
* @param string $suffix search suffix
|
||||
* @return array list of samba3domain objects
|
||||
*/
|
||||
function search_domains($suffix) {
|
||||
$ret = array();
|
||||
$attr = array("DN", "sambaDomainName", "sambaSID", "sambaNextRid", "sambaNextGroupRid",
|
||||
"sambaNextUserRid", "sambaAlgorithmicRidBase");
|
||||
$sr = @ldap_search($_SESSION['ldap']->server(), $suffix, "objectClass=sambaDomain", $attr);
|
||||
if ($sr) {
|
||||
$units = ldap_get_entries($_SESSION['ldap']->server, $sr);
|
||||
// delete count entry
|
||||
unset($units['count']);
|
||||
// extract attributes
|
||||
for ($i = 0; $i < sizeof($units); $i++) {
|
||||
$ret[$i] = new samba3domain();
|
||||
$ret[$i]->dn = $units[$i]['dn'];
|
||||
$ret[$i]->name = $units[$i]['sambadomainname'][0];
|
||||
$ret[$i]->SID = $units[$i]['sambasid'][0];
|
||||
if (isset($units[$i]['sambanextrid'][0])) $ret[$i]->nextRID = $units[$i]['sambanextrid'][0];
|
||||
if (isset($units[$i]['sambanextgrouprid'][0])) $ret[$i]->nextGroupRID = $units[$i]['sambanextgrouprid'][0];
|
||||
if (isset($units[$i]['sambanextuserrid'][0])) $ret[$i]->nextUserRID = $units[$i]['sambanextuserrid'][0];
|
||||
if (isset($units[$i]['sambaalgorithmicridbase'][0])) $ret[$i]->RIDbase = $units[$i]['sambaalgorithmicridbase'][0];
|
||||
}
|
||||
// sort array by domain name
|
||||
usort($ret, "cmp_domain");
|
||||
/**
|
||||
* Returns an array with all Samba 3 domain entries under the given suffix
|
||||
*
|
||||
* @return array list of samba3domain objects
|
||||
*/
|
||||
function search_domains() {
|
||||
$suffix = $_SESSION['config']->get_Suffix('smbDomain');
|
||||
$ret = array();
|
||||
$attr = array("DN", "sambaDomainName", "sambaSID", "sambaNextRid", "sambaNextGroupRid",
|
||||
"sambaNextUserRid", "sambaAlgorithmicRidBase");
|
||||
$sr = @ldap_search($_SESSION['ldap']->server(), $suffix, "objectClass=sambaDomain", $attr);
|
||||
if ($sr) {
|
||||
$units = ldap_get_entries($_SESSION['ldap']->server, $sr);
|
||||
// delete count entry
|
||||
unset($units['count']);
|
||||
// extract attributes
|
||||
for ($i = 0; $i < sizeof($units); $i++) {
|
||||
$ret[$i] = new samba3domain();
|
||||
$ret[$i]->dn = $units[$i]['dn'];
|
||||
$ret[$i]->name = $units[$i]['sambadomainname'][0];
|
||||
$ret[$i]->SID = $units[$i]['sambasid'][0];
|
||||
if (isset($units[$i]['sambanextrid'][0])) $ret[$i]->nextRID = $units[$i]['sambanextrid'][0];
|
||||
if (isset($units[$i]['sambanextgrouprid'][0])) $ret[$i]->nextGroupRID = $units[$i]['sambanextgrouprid'][0];
|
||||
if (isset($units[$i]['sambanextuserrid'][0])) $ret[$i]->nextUserRID = $units[$i]['sambanextuserrid'][0];
|
||||
if (isset($units[$i]['sambaalgorithmicridbase'][0])) $ret[$i]->RIDbase = $units[$i]['sambaalgorithmicridbase'][0];
|
||||
}
|
||||
return $ret;
|
||||
// sort array by domain name
|
||||
usort($ret, "cmp_domain");
|
||||
}
|
||||
return $ret;
|
||||
}
|
||||
|
||||
/**
|
||||
* Helper function to sort the domains
|
||||
*
|
||||
* @param string $a first argument to compare
|
||||
* @param string $b second argument to compare
|
||||
* @return integer 0 if equal, 1 if $a is greater, -1 if $b is greater
|
||||
*/
|
||||
function cmp_domain($a, $b) {
|
||||
if ($a->name == $b->name) return 0;
|
||||
elseif ($a->name == max($a->name, $b->name)) return 1;
|
||||
else return -1;
|
||||
}
|
||||
/**
|
||||
* Helper function to sort the domains
|
||||
*
|
||||
* @param string $a first argument to compare
|
||||
* @param string $b second argument to compare
|
||||
* @return integer 0 if equal, 1 if $a is greater, -1 if $b is greater
|
||||
*/
|
||||
function cmp_domain($a, $b) {
|
||||
if ($a->name == $b->name) return 0;
|
||||
elseif ($a->name == max($a->name, $b->name)) return 1;
|
||||
else return -1;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
|
@ -498,7 +498,7 @@ function get_preg($argument, $regexp) {
|
|||
$pregexpr = '/^(([a-zA-Z0-9\\.\\_-])+(,[a-zA-Z0-9\\.\\_-])*)*$/';
|
||||
break;
|
||||
case "domainname": // Windows Domainname
|
||||
$pregexpr = '/^([a-z0-9\\.\\_-])+$/';
|
||||
$pregexpr = '/^([A-Za-z0-9\\.\\_-])+$/';
|
||||
break;
|
||||
case "unixhost": // Unix hosts
|
||||
$pregexpr = '/^([a-z0-9,\\.\\_-])*$/';
|
||||
|
@ -533,6 +533,8 @@ function get_preg($argument, $regexp) {
|
|||
case 'dn': // LDAP DN
|
||||
$pregexpr = '/^([^=,]+=[^=,]+)(,([^=,]+=[^=,]+))*$/';
|
||||
break;
|
||||
case 'domainSID': // Samba domain SID
|
||||
$pregexpr = "/^S\\-[0-9]\\-[0-9]\\-[0-9]{2,2}\\-[0-9]+\\-[0-9]+\\-[0-9]+$/";
|
||||
}
|
||||
if ($pregexpr!='')
|
||||
if (preg_match($pregexpr, $argument)) {
|
||||
|
|
|
@ -0,0 +1,90 @@
|
|||
<?php
|
||||
/*
|
||||
$Id$
|
||||
|
||||
This code is part of LDAP Account Manager (http://www.sourceforge.net/projects/lam)
|
||||
Copyright (C) 2005 Roland Gruber
|
||||
|
||||
This program is free software; you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation; either version 2 of the License, or
|
||||
(at your option) any later version.
|
||||
|
||||
This program is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with this program; if not, write to the Free Software
|
||||
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
|
||||
*/
|
||||
|
||||
/**
|
||||
* This is the parent class of all account types.
|
||||
*
|
||||
* @package types
|
||||
* @author Roland Gruber
|
||||
*/
|
||||
|
||||
/**
|
||||
* This is the parent class of all account types.
|
||||
*
|
||||
* @package types
|
||||
*/
|
||||
class baseType {
|
||||
|
||||
/**
|
||||
* Returns the alias name of this account type.
|
||||
* This function must be overwritten by the child classes.
|
||||
*
|
||||
* @return string alias name
|
||||
*/
|
||||
function getAlias() {
|
||||
return "baseType";
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the description of this account type.
|
||||
* This function must be overwritten by the child classes.
|
||||
*
|
||||
* @return string description
|
||||
*/
|
||||
function getDescription() {
|
||||
return "base type";
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the class name for the list object.
|
||||
*
|
||||
* @return string class name
|
||||
*/
|
||||
function getListClassName() {
|
||||
return "lamList";
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the default attribute list for this account type.
|
||||
* This function must be overwritten by the child classes.
|
||||
*
|
||||
* @return string attribute list
|
||||
*/
|
||||
function getDefaultListAttributes() {
|
||||
return "dn:DN,objectClass:Object classes";
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns a list of attributes which have a translated description.
|
||||
* This is used for the head row in the list view.
|
||||
*
|
||||
* @return array list of descriptions
|
||||
*/
|
||||
function getListAttributeDescriptions() {
|
||||
return array();
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
?>
|
|
@ -33,6 +33,8 @@ $Id$
|
|||
include_once("status.inc");
|
||||
/** Used to get module information. */
|
||||
include_once("modules.inc");
|
||||
/** Used to get type information. */
|
||||
include_once("types.inc");
|
||||
|
||||
/**
|
||||
* Sets language settings for automatic translation
|
||||
|
@ -129,28 +131,9 @@ class Config {
|
|||
/** Password to edit preferences */
|
||||
var $Passwd;
|
||||
|
||||
/** LDAP suffix for users */
|
||||
var $usersuffix;
|
||||
|
||||
/** LDAP suffix for groups */
|
||||
var $groupsuffix;
|
||||
|
||||
/** LDAP suffix for Samba hosts */
|
||||
var $hostsuffix;
|
||||
|
||||
/** LDAP suffix for Samba 3 domains */
|
||||
var $domainsuffix;
|
||||
|
||||
/** LDAP suffix for tree view */
|
||||
var $treesuffix;
|
||||
|
||||
/** Attributes that are shown in the user list */
|
||||
var $userlistAttributes;
|
||||
/** Attributes that are shown in the group list */
|
||||
var $grouplistAttributes;
|
||||
/** Attributes that are shown in the host list */
|
||||
var $hostlistAttributes;
|
||||
|
||||
/** Maximum number of rows shown in user/group/host lists */
|
||||
var $maxlistentries;
|
||||
|
||||
|
@ -160,6 +143,9 @@ class Config {
|
|||
/** module settings */
|
||||
var $moduleSettings = array();
|
||||
|
||||
/** type settings */
|
||||
var $typeSettings = array();
|
||||
|
||||
/**
|
||||
* Path to external lamdaemon script on server where it is executed
|
||||
*
|
||||
|
@ -179,20 +165,16 @@ class Config {
|
|||
/** LDAP cache timeout */
|
||||
var $cachetimeout;
|
||||
|
||||
var $usermodules = "posixAccount,shadowAccount,quota";
|
||||
/** Account modules for groups */
|
||||
var $groupmodules = "posixGroup,quota";
|
||||
/** Account modules for hosts */
|
||||
var $hostmodules = "account,sambaSamAccount";
|
||||
/** Active account types */
|
||||
var $activeTypes = "user,group,host,smbDomain";
|
||||
|
||||
/** Name of configuration file */
|
||||
var $file;
|
||||
|
||||
/** List of all settings in config file */
|
||||
var $settings = array("ServerURL", "Passwd", "Admins", "usersuffix", "groupsuffix", "hostsuffix", "treesuffix",
|
||||
"domainsuffix", "userlistAttributes", "grouplistAttributes", "hostlistAttributes", "maxlistentries",
|
||||
var $settings = array("ServerURL", "Passwd", "Admins", "treesuffix", "maxlistentries",
|
||||
"defaultLanguage", "scriptPath", "scriptServer", "cachetimeout",
|
||||
"usermodules", "groupmodules", "hostmodules", "modules");
|
||||
"modules", "activeTypes", "types");
|
||||
|
||||
|
||||
/**
|
||||
|
@ -233,7 +215,13 @@ class Config {
|
|||
if (strtolower(substr($line, 0, $keylen + 2)) == "modules: ") {
|
||||
$option = substr($line, $keylen + 2, strlen($line) - $keylen - 2);
|
||||
$pos = strpos($option, ":");
|
||||
$this->moduleSettings[substr($option, 0, $pos)] = explode("+::+", substr($option, $pos + 2, strlen($option) - $pos - 2));
|
||||
$this->moduleSettings[substr($option, 0, $pos)] = explode("+::+", substr($option, $pos + 2));
|
||||
}
|
||||
// type settings
|
||||
elseif (strtolower(substr($line, 0, $keylen + 2)) == "types: ") {
|
||||
$option = substr($line, $keylen + 2, strlen($line) - $keylen - 2);
|
||||
$pos = strpos($option, ":");
|
||||
$this->typeSettings[substr($option, 0, $pos)] = substr($option, $pos + 2);
|
||||
}
|
||||
// general settings
|
||||
else {
|
||||
|
@ -246,7 +234,7 @@ class Config {
|
|||
fclose($file);
|
||||
}
|
||||
// check modules
|
||||
$scopes = array('user', 'group', 'host');
|
||||
$scopes = $this->get_ActiveTypes();
|
||||
for ($s = 0; $s < sizeof($scopes); $s++) {
|
||||
$scope = $scopes[$s];
|
||||
$moduleVar = $scope . "modules";
|
||||
|
@ -293,6 +281,15 @@ class Config {
|
|||
$file_array[$i] = "modules: " . $name . ": " . implode("+::+", $this->moduleSettings[$name]) . "\n";
|
||||
$mod_saved[] = $name; // mark keyword as saved
|
||||
}
|
||||
// type settings
|
||||
elseif (strtolower(substr($line, 0, $keylen + 2)) == "types: ") {
|
||||
$option = substr($line, $keylen + 2, strlen($line) - $keylen - 2);
|
||||
$pos = strpos($option, ":");
|
||||
$name = substr($option, 0, $pos);
|
||||
if (!isset($this->typeSettings[$name])) continue;
|
||||
$file_array[$i] = "types: " . $name . ": " . $this->typeSettings[$name] . "\n";
|
||||
$mod_saved[] = $name; // mark keyword as saved
|
||||
}
|
||||
// general settings
|
||||
else {
|
||||
$file_array[$i] = $keyword . ": " . $this->$keyword . "\n";
|
||||
|
@ -308,30 +305,14 @@ class Config {
|
|||
if (!in_array("Admins", $saved)) array_push($file_array, "\n\n# list of users who are allowed to use LDAP Account Manager\n" .
|
||||
"# names have to be seperated by semicolons\n" .
|
||||
"# e.g. admins: cn=admin,dc=yourdomain,dc=org;cn=root,dc=yourdomain,dc=org\n" . "admins: " . $this->Admins . "\n");
|
||||
if (!in_array("usersuffix", $saved)) array_push($file_array, "\n\n# suffix of users\n" .
|
||||
"# e.g. ou=People,dc=yourdomain,dc=org\n" . "usersuffix: " . $this->usersuffix . "\n");
|
||||
if (!in_array("groupsuffix", $saved)) array_push($file_array, "\n\n# suffix of groups\n" .
|
||||
"# e.g. ou=Groups,dc=yourdomain,dc=org\n" . "groupsuffix: " . $this->groupsuffix . "\n");
|
||||
if (!in_array("hostsuffix", $saved)) array_push($file_array, "\n\n# suffix of hosts\n" .
|
||||
"# e.g. ou=machines,dc=yourdomain,dc=org\n" . "hostsuffix: " . $this->hostsuffix . "\n");
|
||||
if (!in_array("domainsuffix", $saved)) array_push($file_array, "\n\n# suffix of Samba 3 domains\n" .
|
||||
"# e.g. ou=domains,dc=yourdomain,dc=org\n" . "domainsuffix: " . $this->domainsuffix . "\n");
|
||||
if (!in_array("treesuffix", $saved)) array_push($file_array, "\n\n# suffix of tree view\n" .
|
||||
"# e.g. dc=yourdomain,dc=org\n" . "treesuffix: " . $this->treesuffix . "\n");
|
||||
if (!in_array("userlistAttributes", $saved)) array_push($file_array, "\n\n# list of attributes to show in user list\n# entries can either be predefined values (e.g. '#cn' or '#uid')" .
|
||||
"\n# or individual ones (e.g. 'uid:User ID' or 'host:Host Name')\n# values have to be seperated by semicolons\n" . "userlistAttributes: " . $this->userlistAttributes . "\n");
|
||||
if (!in_array("grouplistAttributes", $saved)) array_push($file_array, "\n\n# list of attributes to show in group list\n# entries can either be predefined values (e.g. '#cn' or '#gidNumber')" .
|
||||
"\n# or individual ones (e.g. 'cn:Group Name')\n# values have to be seperated by semicolons\n" . "grouplistAttributes: " . $this->grouplistAttributes . "\n");
|
||||
if (!in_array("hostlistAttributes", $saved)) array_push($file_array, "\n\n# list of attributes to show in host list\n# entries can either be predefined values (e.g. '#cn' or '#uid')" .
|
||||
"\n# or individual ones (e.g. 'cn:Host Name')\n# values have to be seperated by semicolons\n" . "hostlistAttributes: " . $this->hostlistAttributes . "\n");
|
||||
if (!in_array("maxlistentries", $saved)) array_push($file_array, "\n\n# maximum number of rows to show in user/group/host lists\n" . "maxlistentries: " . $this->maxlistentries . "\n");
|
||||
if (!in_array("defaultLanguage", $saved)) array_push($file_array, "\n\n# default language (a line from config/language)\n" . "defaultLanguage: " . $this->defaultLanguage . "\n");
|
||||
if (!in_array("scriptPath", $saved)) array_push($file_array, "\n\n# Path to external Script\n" . "scriptPath: " . $this->scriptPath . "\n");
|
||||
if (!in_array("scriptServer", $saved)) array_push($file_array, "\n\n# Server of external Script\n" . "scriptServer: " . $this->scriptServer . "\n");
|
||||
if (!in_array("cachetimeout", $saved)) array_push($file_array, "\n\n# Number of minutes LAM caches LDAP searches.\n" . "cacheTimeout: " . $this->cachetimeout . "\n");
|
||||
if (!in_array("usermodules", $saved)) array_push($file_array, "\n\n# List of used user modules\n" . "usermodules: " . $this->usermodules . "\n");
|
||||
if (!in_array("groupmodules", $saved)) array_push($file_array, "\n\n# List of used group modules\n" . "groupmodules: " . $this->groupmodules . "\n");
|
||||
if (!in_array("hostmodules", $saved)) array_push($file_array, "\n\n# List of used host modules\n" . "hostmodules: " . $this->hostmodules . "\n");
|
||||
if (!in_array("activeTypes", $saved)) array_push($file_array, "\n\n# List of active account types.\n" . "activeTypes: " . $this->activeTypes . "\n");
|
||||
// check if all module settings were added
|
||||
$m_settings = array_keys($this->moduleSettings);
|
||||
for ($i = 0; $i < sizeof($m_settings); $i++) {
|
||||
|
@ -339,54 +320,27 @@ class Config {
|
|||
array_push($file_array, "modules: " . $m_settings[$i] . ": " . implode("+::+", $this->moduleSettings[$m_settings[$i]]) . "\n");
|
||||
}
|
||||
}
|
||||
// check if all type settings were added
|
||||
$t_settings = array_keys($this->typeSettings);
|
||||
for ($i = 0; $i < sizeof($t_settings); $i++) {
|
||||
if (!in_array($t_settings[$i], $mod_saved)) {
|
||||
array_push($file_array, "types: " . $t_settings[$i] . ": " . $this->typeSettings[$t_settings[$i]] . "\n");
|
||||
}
|
||||
}
|
||||
$file = fopen($conffile, "w");
|
||||
if ($file) {
|
||||
for ($i = 0; $i < sizeof($file_array); $i++) fputs($file, $file_array[$i]);
|
||||
fclose($file);
|
||||
@chmod ($conffile, 0600);
|
||||
StatusMessage("INFO", _("Your settings were successfully saved.") , " (" . $conffile . ")");
|
||||
}
|
||||
else {
|
||||
StatusMessage("ERROR", "", _("Cannot open config file!") . " (" . $conffile . ")");
|
||||
StatusMessage("ERROR", _("Cannot open config file!") . " (" . $conffile . ")");
|
||||
exit;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/** Prints current preferences */
|
||||
function printconf() {
|
||||
echo "<b>" . _("Server address") . ": </b>" . $this->ServerURL . "<br>\n";
|
||||
echo "<b>" . _("Cache timeout") . ": </b>" . $this->cachetimeout . "<br>\n";
|
||||
echo "<b>" . _("UserSuffix") . ": </b>" . $this->usersuffix . "<br>\n";
|
||||
echo "<b>" . _("GroupSuffix") . ": </b>" . $this->groupsuffix . "<br>\n";
|
||||
echo "<b>" . _("HostSuffix") . ": </b>" . $this->hostsuffix . "<br>\n";
|
||||
echo "<b>" . _("DomainSuffix") . ": </b>" . $this->domainsuffix . "<br>\n";
|
||||
echo "<b>" . _("TreeSuffix") . ": </b>" . $this->treesuffix . "<br>\n";
|
||||
echo "<b>" . _("Attributes in User List") . ": </b>" . $this->userlistAttributes . "<br>\n";
|
||||
echo "<b>" . _("Attributes in Group List") . ": </b>" . $this->grouplistAttributes . "<br>\n";
|
||||
echo "<b>" . _("Attributes in Host List") . ": </b>" . $this->hostlistAttributes . "<br>\n";
|
||||
echo "<b>" . _("Maximum list entries") . ": </b>" . $this->maxlistentries . "<br>\n";
|
||||
echo "<b>" . _("Default language") . ": </b>" . $this->defaultLanguage . "<br>\n";
|
||||
echo "<b>" . _("Path to external script") . ": </b>" . $this->scriptPath . "<br>\n";
|
||||
echo "<b>" . _("Server of external script") . ": </b>" . $this->scriptServer . "<br>\n";
|
||||
echo "<b>" . _("List of valid users") . ": </b>" . $this->Admins . "<br>\n";
|
||||
echo "<b>" . _("User modules") . ": </b>" . $this->usermodules . "<br>\n";
|
||||
echo "<b>" . _("Group modules") . ": </b>" . $this->groupmodules . "<br>\n";
|
||||
echo "<b>" . _("Host modules") . ": </b>" . $this->hostmodules . "<br><br>\n";
|
||||
echo "<b>" . _("Module settings") . ": </b><br>\n";
|
||||
echo "<ul>\n";
|
||||
$names = array_keys($this->moduleSettings);
|
||||
$descriptions = getConfigDescriptions();
|
||||
$descriptions = $descriptions['descriptions'];
|
||||
for ($i = 0; $i < sizeof($names); $i++) {
|
||||
echo "<li><b>";
|
||||
// print description if available
|
||||
if (isset($descriptions[$names[$i]])) echo $descriptions[$names[$i]];
|
||||
else echo $names[$i];
|
||||
echo ": </b>" . implode(", ", $this->moduleSettings[$names[$i]]) . "</li>\n";
|
||||
}
|
||||
echo "</ul>\n";
|
||||
}
|
||||
|
||||
// functions to read/write preferences
|
||||
|
||||
/**
|
||||
|
@ -471,24 +425,12 @@ class Config {
|
|||
* @return string the LDAP suffix
|
||||
*/
|
||||
function get_Suffix($scope) {
|
||||
switch ($scope) {
|
||||
case 'user':
|
||||
return $this->usersuffix;
|
||||
break;
|
||||
case 'group':
|
||||
return $this->groupsuffix;
|
||||
break;
|
||||
case 'host':
|
||||
return $this->hostsuffix;
|
||||
break;
|
||||
case 'domain':
|
||||
return $this->domainsuffix;
|
||||
break;
|
||||
case 'tree':
|
||||
return $this->treesuffix;
|
||||
break;
|
||||
if ($scope == "tree") {
|
||||
return $this->treesuffix;
|
||||
}
|
||||
else {
|
||||
return $this->typeSettings['suffix_' . $scope];
|
||||
}
|
||||
return "";
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -503,22 +445,11 @@ class Config {
|
|||
elseif (!is_string($value)) {
|
||||
return false;
|
||||
}
|
||||
switch ($scope) {
|
||||
case 'user':
|
||||
$this->usersuffix = $value;
|
||||
break;
|
||||
case 'group':
|
||||
$this->groupsuffix = $value;
|
||||
break;
|
||||
case 'host':
|
||||
$this->hostsuffix = $value;
|
||||
break;
|
||||
case 'domain':
|
||||
$this->domainsuffix = $value;
|
||||
break;
|
||||
case 'tree':
|
||||
$this->treesuffix = $value;
|
||||
break;
|
||||
if ($scope == "tree") {
|
||||
$this->treesuffix = $value;
|
||||
}
|
||||
else {
|
||||
$this->typeSettings['suffix_' . $scope] = $value;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
@ -530,20 +461,7 @@ class Config {
|
|||
* @return string the attribute list
|
||||
*/
|
||||
function get_listAttributes($scope) {
|
||||
switch ($scope) {
|
||||
case 'user':
|
||||
return $this->userlistAttributes;
|
||||
break;
|
||||
case 'group':
|
||||
return $this->grouplistAttributes;
|
||||
break;
|
||||
case 'host':
|
||||
return $this->hostlistAttributes;
|
||||
break;
|
||||
default:
|
||||
return '';
|
||||
break;
|
||||
}
|
||||
return $this->typeSettings['attr_' . $scope];
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -555,20 +473,7 @@ class Config {
|
|||
*/
|
||||
function set_listAttributes($value, $scope) {
|
||||
if (is_string($value) && eregi("^((#[^:;]+)|([^:;]*:[^:;]+))(;((#[^:;]+)|([^:;]*:[^:;]+)))*$", $value)) {
|
||||
switch ($scope) {
|
||||
case 'user':
|
||||
$this->userlistAttributes = $value;
|
||||
break;
|
||||
case 'group':
|
||||
$this->grouplistAttributes = $value;
|
||||
break;
|
||||
case 'host':
|
||||
$this->hostlistAttributes = $value;
|
||||
break;
|
||||
default:
|
||||
return false;
|
||||
break;
|
||||
}
|
||||
$this->typeSettings['attr_' . $scope] = $value;
|
||||
return true;
|
||||
}
|
||||
else {
|
||||
|
@ -576,20 +481,6 @@ class Config {
|
|||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Sets the list of attributes to show in group list
|
||||
*
|
||||
* @param string $value new attribute string
|
||||
* @return boolean true if $value has correct format
|
||||
*/
|
||||
function set_grouplistAttributes($value) {
|
||||
if (is_string($value) && eregi("^((#[^:;]+)|([^:;]*:[^:;]+))(;((#[^:;]+)|([^:;]*:[^:;]+)))*$", $value)) {
|
||||
$this->grouplistAttributes = $value;
|
||||
}
|
||||
else return false;
|
||||
return true;
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the maximum number of rows in user/group/host lists
|
||||
*
|
||||
|
@ -718,21 +609,12 @@ class Config {
|
|||
* @return array user modules
|
||||
*/
|
||||
function get_AccountModules($scope) {
|
||||
switch ($scope) {
|
||||
case 'user':
|
||||
return explode(",", $this->usermodules);
|
||||
break;
|
||||
case 'group':
|
||||
return explode(",", $this->groupmodules);
|
||||
break;
|
||||
case 'host':
|
||||
return explode(",", $this->hostmodules);
|
||||
break;
|
||||
default:
|
||||
return array();
|
||||
break;
|
||||
if (isset($this->typeSettings["modules_" . $scope])) {
|
||||
return explode(",", $this->typeSettings["modules_" . $scope]);
|
||||
}
|
||||
else {
|
||||
return array();
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -752,19 +634,7 @@ class Config {
|
|||
// check depends/conflicts
|
||||
if (check_module_conflicts($modules, getModulesDependencies($scope)) != false) return false;
|
||||
if (check_module_depends($modules, getModulesDependencies($scope)) != false) return false;
|
||||
switch ($scope) {
|
||||
case 'user':
|
||||
$this->usermodules = implode(",", $modules);
|
||||
break;
|
||||
case 'group':
|
||||
$this->groupmodules = implode(",", $modules);
|
||||
break;
|
||||
case 'host':
|
||||
$this->hostmodules = implode(",", $modules);
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
$this->typeSettings["modules_" . $scope] = implode(",", $modules);
|
||||
return true;
|
||||
}
|
||||
|
||||
|
@ -789,6 +659,45 @@ class Config {
|
|||
return $this->moduleSettings;
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns a list of active account types.
|
||||
*
|
||||
* @return array list of types
|
||||
*/
|
||||
function get_ActiveTypes() {
|
||||
return explode(",", $this->activeTypes);
|
||||
}
|
||||
|
||||
/**
|
||||
* Sets the list of active types.
|
||||
*
|
||||
* @param array list of types
|
||||
*/
|
||||
function set_ActiveTypes($types) {
|
||||
$this->activeTypes = implode(",", $types);
|
||||
}
|
||||
|
||||
/**
|
||||
* Sets the settings for the account types.
|
||||
*
|
||||
* @param array $settings list of type setting array(name => value)
|
||||
* @return boolean true if $settings has correct format
|
||||
*/
|
||||
function set_typeSettings($settings) {
|
||||
if (!is_array($settings)) return false;
|
||||
$this->typeSettings = $settings;
|
||||
return true;
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns a list of saved type settings
|
||||
*
|
||||
* @return array list of settings: array(name => value)
|
||||
*/
|
||||
function get_typeSettings() {
|
||||
return $this->typeSettings;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
|
|
@ -29,72 +29,209 @@ $Id$
|
|||
* @author Roland Gruber
|
||||
*/
|
||||
|
||||
/** Used to get type information. */
|
||||
include_once("types.inc");
|
||||
/** Used to get PDF information. */
|
||||
include_once("pdfstruct.inc");
|
||||
|
||||
|
||||
/**
|
||||
* Builds the regular expressions from the filter values.
|
||||
*
|
||||
* @param array $attributes list of displayed attributes
|
||||
* @return array filter data array($attribute => array('regex' => $reg, 'original' => $orig))
|
||||
* $reg is the regular expression to use, $orig the user's unmodified input string
|
||||
*/
|
||||
function listBuildFilter($attributes) {
|
||||
$filter = array();
|
||||
for ($i = 0; $i < sizeof($attributes); $i++) {
|
||||
if (isset($_POST["filter" . strtolower($attributes[$i])]) && eregi('^([0-9a-z _\\*\\$-])+$', $_POST["filter" . strtolower($attributes[$i])])) {
|
||||
$filter[$attributes[$i]]['original'] = $_POST["filter" . strtolower($attributes[$i])];
|
||||
$filter[$attributes[$i]]['regex'] = $_POST["filter" . strtolower($attributes[$i])];
|
||||
// replace special characters
|
||||
$filter[$attributes[$i]]['regex'] = str_replace("*", "(.)*", $filter[$attributes[$i]]['regex']);
|
||||
$filter[$attributes[$i]]['regex'] = str_replace('$', '[$]', $filter[$attributes[$i]]['regex']);
|
||||
// add string begin and end
|
||||
$filter[$attributes[$i]]['regex'] = "^" . $filter[$attributes[$i]]['regex'] . "$";
|
||||
}
|
||||
* Generates the list view.
|
||||
*
|
||||
* @package lists
|
||||
* @author Roland Gruber
|
||||
*
|
||||
*/
|
||||
class lamList {
|
||||
|
||||
/** Account type */
|
||||
var $type;
|
||||
|
||||
/** current page number */
|
||||
var $page = 1;
|
||||
|
||||
/** list of LDAP attributes */
|
||||
var $attrArray = array();
|
||||
|
||||
/** list of attribute descriptions */
|
||||
var $descArray = array();
|
||||
|
||||
/** maximum count of entries per page */
|
||||
var $maxPageEntries = 10;
|
||||
|
||||
/** sort column name */
|
||||
var $sortColumn;
|
||||
|
||||
/** LDAP suffix */
|
||||
var $suffix;
|
||||
|
||||
/** refresh page switch */
|
||||
var $refresh = true;
|
||||
|
||||
/** LDAP entries */
|
||||
var $entries;
|
||||
|
||||
/** filter string to include in URL */
|
||||
var $filterText;
|
||||
|
||||
/** list of possible LDAP suffixes(organizational units) */
|
||||
var $possibleSuffixes;
|
||||
|
||||
/** list of account specific labels */
|
||||
var $labels;
|
||||
|
||||
/**
|
||||
* Constructor
|
||||
*
|
||||
* @param string $type account type
|
||||
* @return lamList list object
|
||||
*/
|
||||
function lamList($type) {
|
||||
$this->type = $type;
|
||||
$this->labels = array(
|
||||
'nav' => _("%s object(s) found"),
|
||||
'error_noneFound' => _("No objects found!"),
|
||||
'newEntry' => _("New object"),
|
||||
'deleteEntry' => _("Delete object"),
|
||||
'createPDF' => _("Create PDF for selected object(s)"),
|
||||
'createPDFAll' => _("Create PDF for all objects"));
|
||||
}
|
||||
|
||||
/**
|
||||
* Prints the HTML code to display the list view.
|
||||
*/
|
||||
function showPage() {
|
||||
// do POST actions
|
||||
$this->listDoPost();
|
||||
// get some parameters
|
||||
$this->listGetParams();
|
||||
// print HTML head
|
||||
$this->listPrintHeader();
|
||||
// refresh data if needed
|
||||
if ($this->refresh) $this->listRefreshData();
|
||||
// filter entries
|
||||
$filteredEntries = $this->listFilterAccounts();
|
||||
// sort rows by sort column
|
||||
if ($filteredEntries) {
|
||||
$filteredEntries = $this->listSort($filteredEntries);
|
||||
}
|
||||
// show form
|
||||
echo ("<form action=\"list.php?type=" . $this->type . "&norefresh=true\" method=\"post\">\n");
|
||||
// draw account list if accounts were found
|
||||
if (sizeof($filteredEntries) > 0) {
|
||||
// navigation bar
|
||||
$this->listDrawNavigationBar(sizeof($filteredEntries));
|
||||
echo ("<br>\n");
|
||||
// account table head
|
||||
$this->listPrintTableHeader();
|
||||
// account table body
|
||||
$this->listPrintTableBody($filteredEntries);
|
||||
// navigation bar
|
||||
$this->listDrawNavigationBar(sizeof($filteredEntries));
|
||||
echo ("<br>\n");
|
||||
// print combobox with possible sub-DNs
|
||||
$this->listShowOUSelection();
|
||||
// buttons
|
||||
$this->listPrintButtons(false);
|
||||
}
|
||||
else {
|
||||
// account table head
|
||||
$this->listPrintTableHeader();
|
||||
echo "</table><br>\n";
|
||||
// print combobox with possible sub-DNs
|
||||
$this->listShowOUSelection();
|
||||
echo ("<br>\n");
|
||||
$this->listPrintButtons(true);
|
||||
}
|
||||
echo ("</form>\n");
|
||||
echo "</body></html>\n";
|
||||
}
|
||||
return $filter;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Removes all entries which do not fit to the filter.
|
||||
*
|
||||
* @param array $entries list of accounts
|
||||
* @param array $filter attribute filter
|
||||
* @return array filtered list of accounts
|
||||
*/
|
||||
function listFilterAccounts($entries, $filter) {
|
||||
$attributes = array_keys($filter);
|
||||
for ($r = 0; $r < sizeof($entries); $r++) {
|
||||
for ($a = 0; $a < sizeof($attributes); $a++) {
|
||||
// check if filter fits
|
||||
$found = false;
|
||||
for ($i = 0; $i < sizeof($entries[$r][$attributes[$a]]); $i++) {
|
||||
if (eregi($filter[$attributes[$a]]['regex'], $entries[$r][$attributes[$a]][$i])) {
|
||||
$found = true;
|
||||
/**
|
||||
* Builds the regular expressions from the filter values.
|
||||
*
|
||||
* @return array filter data array($attribute => array('regex' => $reg, 'original' => $orig))
|
||||
* $reg is the regular expression to use, $orig the user's unmodified input string
|
||||
*/
|
||||
function listBuildFilter() {
|
||||
$filter = array();
|
||||
// build filter array
|
||||
for ($i = 0; $i < sizeof($this->attrArray); $i++) {
|
||||
if (isset($_POST["filter" . strtolower($this->attrArray[$i])]) && eregi('^([0-9a-z _\\*\\$-])+$', $_POST["filter" . strtolower($this->attrArray[$i])])) {
|
||||
$filter[$this->attrArray[$i]]['original'] = $_POST["filter" . strtolower($this->attrArray[$i])];
|
||||
$filter[$this->attrArray[$i]]['regex'] = $_POST["filter" . strtolower($this->attrArray[$i])];
|
||||
// replace special characters
|
||||
$filter[$this->attrArray[$i]]['regex'] = str_replace("*", "(.)*", $filter[$this->attrArray[$i]]['regex']);
|
||||
$filter[$this->attrArray[$i]]['regex'] = str_replace('$', '[$]', $filter[$this->attrArray[$i]]['regex']);
|
||||
// add string begin and end
|
||||
$filter[$this->attrArray[$i]]['regex'] = "^" . $filter[$this->attrArray[$i]]['regex'] . "$";
|
||||
}
|
||||
}
|
||||
// save filter string
|
||||
$filterAttributes = array_keys($filter);
|
||||
$searchFilter = array();
|
||||
for ($i = 0; $i < sizeof($filterAttributes); $i++) {
|
||||
$searchFilter[] = "filter" . $filterAttributes[$i] . "=" . $filter[$filterAttributes[$i]]['original'];
|
||||
}
|
||||
if (sizeof($searchFilter) > 0) {
|
||||
$searchFilter = "&" . implode("&", $searchFilter);
|
||||
}
|
||||
else {
|
||||
$searchFilter = "";
|
||||
}
|
||||
$this->filterText = $searchFilter;
|
||||
return $filter;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Removes all entries which do not fit to the filter.
|
||||
*
|
||||
* @return array filtered list of accounts
|
||||
*/
|
||||
function listFilterAccounts() {
|
||||
$entries = $this->entries;
|
||||
$filter = $this->listBuildFilter();
|
||||
$attributes = array_keys($filter);
|
||||
for ($r = 0; $r < sizeof($entries); $r++) {
|
||||
for ($a = 0; $a < sizeof($attributes); $a++) {
|
||||
// check if filter fits
|
||||
$found = false;
|
||||
for ($i = 0; $i < sizeof($entries[$r][$attributes[$a]]); $i++) {
|
||||
if (eregi($filter[$attributes[$a]]['regex'], $entries[$r][$attributes[$a]][$i])) {
|
||||
$found = true;
|
||||
break;
|
||||
}
|
||||
}
|
||||
if (!$found) {
|
||||
// remove account and reindex array
|
||||
unset($entries[$r]);
|
||||
$entries = array_values($entries);
|
||||
$r--;
|
||||
break;
|
||||
}
|
||||
}
|
||||
if (!$found) {
|
||||
// remove account and reindex array
|
||||
unset($entries[$r]);
|
||||
$entries = array_values($entries);
|
||||
$r--;
|
||||
break;
|
||||
}
|
||||
}
|
||||
if (sizeof($entries) == 0) StatusMessage("WARN", "", $this->labels['error_noneFound']); // TODO correct message
|
||||
return $entries;
|
||||
}
|
||||
return $entries;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Sorts an account list by a given attribute
|
||||
*
|
||||
* @param string $sort the attribute by which to sort
|
||||
* @param array $attr_array array of displayed attributes
|
||||
* @param array $info the account list
|
||||
* @return array sorted account list
|
||||
*/
|
||||
function listSort($sort, $attr_array, $info) {
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* Sorts an account list by a given attribute
|
||||
*
|
||||
* @param array $info the account list
|
||||
* @return array sorted account list
|
||||
*/
|
||||
function listSort($info) {
|
||||
if (!is_array($this->attrArray)) return $info;
|
||||
if (!is_string($this->sortColumn)) return $info;
|
||||
// sort and return account list
|
||||
usort($info, array($this, "cmp_array"));
|
||||
return $info;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Compare function used for usort-method
|
||||
*
|
||||
|
@ -107,328 +244,402 @@ function listSort($sort, $attr_array, $info) {
|
|||
*/
|
||||
function cmp_array($a, $b) {
|
||||
// sort specifies the sort column
|
||||
global $sort;
|
||||
global $attr_array;
|
||||
$sort = $this->sortColumn;
|
||||
$attr_array = $this->attrArray;
|
||||
// sort by first column if no attribute is given
|
||||
if (!$sort) $sort = strtolower($attr_array[0]);
|
||||
if ($sort != "dn") {
|
||||
// sort by first attribute with name $sort
|
||||
if ($a[$sort][0] == $b[$sort][0]) return 0;
|
||||
elseif ($a[$sort][0] == max($a[$sort][0], $b[$sort][0])) return 1;
|
||||
else return -1;
|
||||
return strcmp($a[$sort][0], $b[$sort][0]);
|
||||
}
|
||||
else {
|
||||
if ($a[$sort] == $b[$sort]) return 0;
|
||||
elseif ($a[$sort] == max($a[$sort], $b[$sort])) return 1;
|
||||
else return -1;
|
||||
return strcmp($a[$sort], $b[$sort]);
|
||||
}
|
||||
}
|
||||
|
||||
if (!is_array($attr_array)) return $info;
|
||||
if (!is_string($sort)) return $info;
|
||||
// sort and return account list
|
||||
usort($info, "cmp_array");
|
||||
return $info;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Draws a navigation bar to switch between pages
|
||||
*
|
||||
* @param integer $count number of account entries
|
||||
* @param integer $max_page_entries maximum number of account per page
|
||||
* @param integer $page current page number
|
||||
* @param string $sort sort attribute
|
||||
* @param string $searchFilter LDAP search filter
|
||||
* @param string $scope account type (user/group/host/domain)
|
||||
* @param string $text string including the number of accounts
|
||||
*/
|
||||
function listDrawNavigationBar($count, $max_page_entries, $page, $sort, $searchFilter, $scope, $text) {
|
||||
|
||||
echo("<table class=\"" . $scope . "nav\" width=\"100%\" border=\"0\">\n");
|
||||
echo("<tr>\n");
|
||||
echo("<td><input type=\"submit\" name=\"refresh\" value=\"" . _("Refresh") . "\"> ");
|
||||
if ($page != 1) {
|
||||
echo("<a href=\"list" . $scope . "s.php?norefresh=true&page=" . ($page - 1) . "&sort=" . $sort . $searchFilter . "\"><=</a>\n");
|
||||
}
|
||||
else {
|
||||
echo("<=");
|
||||
}
|
||||
echo(" ");
|
||||
|
||||
if ($page < ($count / $max_page_entries)) {
|
||||
echo("<a href=\"list" . $scope . "s.php?norefresh=true&page=" . ($page + 1) . "&sort=" . $sort . $searchFilter . "\">=></a>\n");
|
||||
}
|
||||
else {
|
||||
echo("=></td>");
|
||||
}
|
||||
|
||||
echo("<td class=\"" . $scope . "nav-text\">");
|
||||
echo" ";
|
||||
printf($text, $count);
|
||||
echo("</td>");
|
||||
|
||||
echo("<td class=\"" . $scope . "nav-activepage\" align=\"right\">");
|
||||
for ($i = 0; $i < ($count / $max_page_entries); $i++) {
|
||||
if ($i == $page - 1) {
|
||||
echo(" " . ($i + 1));
|
||||
}
|
||||
else {
|
||||
echo(" <a href=\"list" . $scope . "s.php?norefresh=true&page=" . ($i + 1) . "&sort=" . $sort . "\">" . ($i + 1) . "</a>\n");
|
||||
}
|
||||
}
|
||||
echo("</td></tr></table>\n");
|
||||
}
|
||||
|
||||
/**
|
||||
* Prints the attribute and filter row at the account table head
|
||||
*
|
||||
* @param string $scope account type (user, group, host)
|
||||
* @param string $searchFilter search filter for hyperlinks
|
||||
* @param array $desc_array list of attribute descriptions
|
||||
* @param array $attr_array list of attribute names
|
||||
* @param array $_POST HTTP-POST values
|
||||
* @param string $sort sort attribute
|
||||
*/
|
||||
function listPrintTableHeader($scope, $searchFilter, $desc_array, $attr_array, $_POST, $sort) {
|
||||
// print table header
|
||||
echo "<table rules=\"all\" class=\"" . $scope . "list\" width=\"100%\">\n";
|
||||
echo "<tr class=\"" . $scope . "list-head\">\n<th width=22 height=34></th>\n<th></th>\n";
|
||||
// table header
|
||||
for ($k = 0; $k < sizeof($desc_array); $k++) {
|
||||
if (strtolower($attr_array[$k]) == $sort) {
|
||||
echo "<th class=\"" . $scope . "list-sort\"><a href=\"list" . $scope . "s.php?".
|
||||
"sort=" . strtolower($attr_array[$k]) . $searchFilter . "&norefresh=y" . "\">" . $desc_array[$k] . "</a></th>\n";
|
||||
}
|
||||
else echo "<th><a href=\"list" . $scope . "s.php?".
|
||||
"sort=" . strtolower($attr_array[$k]) . $searchFilter . "&norefresh=y" . "\">" . $desc_array[$k] . "</a></th>\n";
|
||||
}
|
||||
echo "</tr>\n";
|
||||
/**
|
||||
* Draws a navigation bar to switch between pages
|
||||
*
|
||||
* @param integer $count number of account entries
|
||||
*/
|
||||
function listDrawNavigationBar($count) {
|
||||
|
||||
// print filter row
|
||||
echo "<tr align=\"center\" class=\"" . $scope . "list\">\n";
|
||||
echo "<td width=22 height=34>";
|
||||
// help link
|
||||
echo "<a href=\"../help.php?HelpNumber=250\" target=\"lamhelp\">";
|
||||
echo "<img src=\"../../graphics/help.png\" alt=\"" . _('Help') . "\" title=\"" . _('Help') . "\">";
|
||||
echo "</a>\n";
|
||||
echo "</td>\n";
|
||||
echo "<td>";
|
||||
echo "<input type=\"submit\" name=\"apply_filter\" value=\"" . _("Filter") . "\">";
|
||||
echo "</td>\n";
|
||||
// print input boxes for filters
|
||||
for ($k = 0; $k < sizeof ($desc_array); $k++) {
|
||||
$value = "";
|
||||
if (isset($_POST["filter" . strtolower($attr_array[$k])])) {
|
||||
$value = " value=\"" . $_POST["filter" . strtolower($attr_array[$k])] . "\"";
|
||||
echo("<table class=\"" . $this->type . "nav\" width=\"100%\" border=\"0\">\n");
|
||||
echo("<tr>\n");
|
||||
echo("<td><input type=\"submit\" name=\"refresh\" value=\"" . _("Refresh") . "\"> ");
|
||||
if ($this->page != 1) {
|
||||
echo("<a href=\"list.php?type=" . $this->type . "&norefresh=true&page=" . ($this->page - 1) . "&sort=" . $this->sortColumn . $this->filterText . "\"><=</a>\n");
|
||||
}
|
||||
echo "<td>";
|
||||
echo ("<input type=\"text\" size=15 name=\"filter" . strtolower ($attr_array[$k]) ."\"" . $value . ">");
|
||||
else {
|
||||
echo("<=");
|
||||
}
|
||||
echo(" ");
|
||||
|
||||
if ($this->page < ($count / $this->maxPageEntries)) {
|
||||
echo("<a href=\"list.php?type=" . $this->type . "&norefresh=true&page=" . ($this->page + 1) . "&sort=" . $this->sortColumn . $this->filterText . "\">=></a>\n");
|
||||
}
|
||||
else {
|
||||
echo("=></td>");
|
||||
}
|
||||
|
||||
echo("<td class=\"" . $this->type . "nav-text\">");
|
||||
echo" ";
|
||||
printf($this->labels['nav'], $count);
|
||||
echo("</td>");
|
||||
|
||||
echo("<td class=\"" . $this->type . "nav-activepage\" align=\"right\">");
|
||||
for ($i = 0; $i < ($count / $this->maxPageEntries); $i++) {
|
||||
if ($i == $this->page - 1) {
|
||||
echo(" " . ($i + 1));
|
||||
}
|
||||
else {
|
||||
echo(" <a href=\"list.php?type=" . $this->type . "&norefresh=true&page=" . ($i + 1) . "&sort=" . $this->sortColumn . "\">" . ($i + 1) . "</a>\n");
|
||||
}
|
||||
}
|
||||
echo("</td></tr></table>\n");
|
||||
}
|
||||
|
||||
/**
|
||||
* Prints the attribute and filter row at the account table head
|
||||
*/
|
||||
function listPrintTableHeader() {
|
||||
// print table header
|
||||
echo "<table rules=\"all\" class=\"" . $this->type . "list\" width=\"100%\">\n";
|
||||
echo "<tr class=\"" . $this->type . "list-head\">\n<th width=22 height=34></th>\n<th></th>\n";
|
||||
// table header
|
||||
for ($k = 0; $k < sizeof($this->descArray); $k++) {
|
||||
if (strtolower($this->attrArray[$k]) == $this->sortColumn) {
|
||||
echo "<th class=\"" . $this->type . "list-sort\"><a href=\"list.php?type=" . $this->type . "&".
|
||||
"sort=" . strtolower($this->attrArray[$k]) . $this->filterText . "&norefresh=y" . "\">" . $this->descArray[$k] . "</a></th>\n";
|
||||
}
|
||||
else echo "<th><a href=\"list.php?type=" . $this->type . "&".
|
||||
"sort=" . strtolower($this->attrArray[$k]) . $this->filterText . "&norefresh=y" . "\">" . $this->descArray[$k] . "</a></th>\n";
|
||||
}
|
||||
echo "</tr>\n";
|
||||
|
||||
// print filter row
|
||||
echo "<tr align=\"center\" class=\"" . $this->type . "list\">\n";
|
||||
echo "<td width=22 height=34>";
|
||||
// help link
|
||||
echo "<a href=\"../help.php?HelpNumber=250\" target=\"lamhelp\">";
|
||||
echo "<img src=\"../../graphics/help.png\" alt=\"" . _('Help') . "\" title=\"" . _('Help') . "\">";
|
||||
echo "</a>\n";
|
||||
echo "</td>\n";
|
||||
echo "<td>";
|
||||
echo "<input type=\"submit\" name=\"apply_filter\" value=\"" . _("Filter") . "\">";
|
||||
echo "</td>\n";
|
||||
// print input boxes for filters
|
||||
for ($k = 0; $k < sizeof ($this->descArray); $k++) {
|
||||
$value = "";
|
||||
if (isset($_POST["filter" . strtolower($this->attrArray[$k])])) {
|
||||
$value = " value=\"" . $_POST["filter" . strtolower($this->attrArray[$k])] . "\"";
|
||||
}
|
||||
echo "<td>";
|
||||
echo ("<input type=\"text\" size=15 name=\"filter" . strtolower ($this->attrArray[$k]) ."\"" . $value . ">");
|
||||
echo "</td>\n";
|
||||
}
|
||||
echo "</tr>\n";
|
||||
}
|
||||
echo "</tr>\n";
|
||||
}
|
||||
|
||||
/**
|
||||
* Manages all POST actions (e.g. button pressed) for the account lists.
|
||||
*
|
||||
* @param string $scope account type
|
||||
*/
|
||||
function listDoPost($scope) {
|
||||
// check if button was pressed and if we have to add/delete an account
|
||||
if (isset($_POST['new']) || isset($_POST['del']) || isset($_POST['pdf']) || isset($_POST['pdf_all'])){
|
||||
// add new account
|
||||
if (isset($_POST['new'])){
|
||||
metaRefresh("../account/edit.php?type=" . $scope);
|
||||
exit;
|
||||
}
|
||||
// delete account(s)
|
||||
elseif (isset($_POST['del'])){
|
||||
// search for checkboxes
|
||||
$accounts = array_keys($_POST, "on");
|
||||
$_SESSION['delete_dn'] = array();
|
||||
for ($i = 0; $i < sizeof($accounts); $i++) {
|
||||
$_SESSION['delete_dn'][] = $_SESSION[$scope . 'info'][$accounts[$i]]['dn'];
|
||||
}
|
||||
if (sizeof($accounts) > 0) {
|
||||
metaRefresh("../delete.php?type=" . $scope);
|
||||
exit;
|
||||
}
|
||||
}
|
||||
// PDF for selected accounts
|
||||
elseif (isset($_POST['pdf'])){
|
||||
$pdf_structure = $_POST['pdf_structure'];
|
||||
// search for checkboxes
|
||||
$accounts = array_keys($_POST, "on");
|
||||
$list = array();
|
||||
// load accounts from LDAP
|
||||
for ($i = 0; $i < sizeof($accounts); $i++) {
|
||||
$_SESSION["accountPDF-$i"] = new accountContainer($scope, "accountPDF-$i");
|
||||
$_SESSION["accountPDF-$i"]->load_account($_SESSION[$scope . 'info'][$accounts[$i]]['dn']);
|
||||
$list[$i] = $_SESSION["accountPDF-$i"];
|
||||
}
|
||||
if (sizeof($list) > 0) {
|
||||
createModulePDF($list,$pdf_structure);
|
||||
exit;
|
||||
}
|
||||
}
|
||||
// PDF for all accounts
|
||||
elseif (isset($_POST['pdf_all'])){
|
||||
$list = array();
|
||||
for ($i = 0; $i < sizeof($_SESSION[$scope . 'info']); $i++) {
|
||||
$_SESSION["accountPDF-$i"] = new accountContainer($scope, "accountPDF-$i");
|
||||
$_SESSION["accountPDF-$i"]->load_account($_SESSION[$scope . 'info'][$i]['dn']);
|
||||
$list[$i] = $_SESSION["accountPDF-$i"];
|
||||
}
|
||||
if (sizeof($list) > 0) {
|
||||
createModulePDF($list,$_POST['pdf_structure']);
|
||||
exit;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Returns the LDAP attribute names and their description for the user list
|
||||
*
|
||||
* @param string $scope account type
|
||||
* @return array list of LDAP attributes and descriptions
|
||||
*/
|
||||
function listGetAttributeArray($scope) {
|
||||
switch ($scope) {
|
||||
case 'user':
|
||||
return array (
|
||||
"uid" => _("User ID"),
|
||||
"uidnumber" => _("UID number"),
|
||||
"gidnumber" => _("GID number"),
|
||||
"cn" => _("User name"),
|
||||
"host" => _("Allowed hosts"),
|
||||
"givenname" => _("First name"),
|
||||
"sn" => _("Last name"),
|
||||
"homedirectory" => _("Home directory"),
|
||||
"loginshell" => _("Login shell"),
|
||||
"mail" => _("E-Mail"),
|
||||
"gecos" => _("Description")
|
||||
);
|
||||
break;
|
||||
case 'group':
|
||||
return array (
|
||||
"cn" => _("Group name"),
|
||||
"gidnumber" => _("GID number"),
|
||||
"memberuid" => _("Group members"),
|
||||
"member" => _("Group member DNs"),
|
||||
"description" => _("Group description")
|
||||
);
|
||||
break;
|
||||
case 'host':
|
||||
return array (
|
||||
"uid" => _("Host name"),
|
||||
"cn" => _("Host name"),
|
||||
"rid" => _("RID (Windows UID)"),
|
||||
"description" => _("Host description"),
|
||||
"uidnumber" => _("UID number"),
|
||||
"gidnumber" => _("GID number")
|
||||
);
|
||||
break;
|
||||
default:
|
||||
return array();
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Prints a combobox with possible sub-DNs.
|
||||
*
|
||||
* @param array $units list of OUs
|
||||
* @param string $suffix current LDAP suffix
|
||||
*/
|
||||
function listShowOUSelection($units, $suffix) {
|
||||
if (sizeof($units) > 1) {
|
||||
echo ("<p align=\"left\">\n");
|
||||
echo ("<b>" . _("Suffix") . ": </b>");
|
||||
echo ("<select size=1 name=\"suffix\">\n");
|
||||
for ($i = 0; $i < sizeof($units); $i++) {
|
||||
if ($suffix == $units[$i]) echo ("<option selected>" . $units[$i] . "</option>\n");
|
||||
else echo("<option>" . $units[$i] . "</option>\n");
|
||||
}
|
||||
echo ("</select>\n");
|
||||
echo ("<input type=\"submit\" name=\"refresh\" value=\"" . _("Change suffix") . "\">");
|
||||
echo ("</p>\n");
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Prints JavaScript code needed for mouse-over effects.
|
||||
*/
|
||||
function listPrintJavaScript() {
|
||||
echo "<script type=\"text/javascript\" language=\"javascript\">\n";
|
||||
echo "<!--\n";
|
||||
// mouseOver function
|
||||
echo "function list_over(list, box, scope) {\n";
|
||||
echo "cbox = document.getElementsByName(box)[0];\n";
|
||||
echo "if (cbox.checked == false) list.setAttribute('class', scope + 'list-over', 0);\n";
|
||||
echo "}";
|
||||
|
||||
// mouseOut function
|
||||
echo "function list_out(list, box, scope) {\n";
|
||||
echo "cbox = document.getElementsByName(box)[0];\n";
|
||||
echo "if (cbox.checked == false) list.setAttribute('class', scope + 'list', 0);\n";
|
||||
echo "}\n";
|
||||
|
||||
// onClick function
|
||||
echo "function list_click(list, box, scope) {\n";
|
||||
echo "cbox = document.getElementsByName(box)[0];\n";
|
||||
echo "if (cbox.checked == true) {\n";
|
||||
echo "cbox.checked = false;\n";
|
||||
echo "list.setAttribute('class', scope + 'list-over', 0);\n";
|
||||
echo "}\n";
|
||||
echo "else {\n";
|
||||
echo "cbox.checked = true;\n";
|
||||
echo "list.setAttribute('class', scope + 'list-checked', 0);\n";
|
||||
echo "}\n";
|
||||
echo "}\n";
|
||||
echo "//-->\n";
|
||||
echo "</script>\n";
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns an hash array containing with all attributes to be shown and their descriptions.
|
||||
* Format: array(attribute => description)
|
||||
*
|
||||
* @param string $scope account type
|
||||
* @return array attribute list
|
||||
*/
|
||||
function listGetAttributeDescriptionList($scope) {
|
||||
$ret = array();
|
||||
$attr_string = $_SESSION["config"]->get_listAttributes($scope);
|
||||
$temp_array = explode(";", $attr_string);
|
||||
$hash_table = listGetAttributeArray($scope);
|
||||
// generate column attributes and descriptions
|
||||
for ($i = 0; $i < sizeof($temp_array); $i++) {
|
||||
// if value is predifined, look up description in hash_table
|
||||
if (substr($temp_array[$i],0,1) == "#") {
|
||||
$attr = strtolower(substr($temp_array[$i],1));
|
||||
if (isset($hash_table[$attr])) {
|
||||
$ret[$attr] = $hash_table[$attr];
|
||||
/**
|
||||
* Prints the entry list
|
||||
*
|
||||
* @param array $info entries
|
||||
*/
|
||||
function listPrintTableBody($info) {
|
||||
// calculate which rows to show
|
||||
$table_begin = ($this->page - 1) * $this->maxPageEntries;
|
||||
if (($this->page * $this->maxPageEntries) > sizeof($info)) $table_end = sizeof($info);
|
||||
else $table_end = ($this->page * $this->maxPageEntries);
|
||||
// print account list
|
||||
for ($i = $table_begin; $i < $table_end; $i++) {
|
||||
echo("<tr class=\"" . $this->type . "list\" onMouseOver=\"list_over(this, '" . $info[$i]['LAM_ID'] . "', '" . $this->type . "')\"\n" .
|
||||
" onMouseOut=\"list_out(this, '" . $info[$i]['LAM_ID'] . "', '" . $this->type . "')\"\n" .
|
||||
" onClick=\"list_click(this, '" . $info[$i]['LAM_ID'] . "', '" . $this->type . "')\"\n" .
|
||||
" onDblClick=\"parent.frames[1].location.href='../account/edit.php?type=" . $this->type . "&DN=" . $info[$i]['dn'] . "'\">\n");
|
||||
if (isset($_GET['selectall'])) {
|
||||
echo " <td height=22 align=\"center\"><input onClick=\"list_click(this, '" . $info[$i]['LAM_ID'] . "', '" . $this->type . "')\"" .
|
||||
" type=\"checkbox\" checked name=\"" . $info[$i]['LAM_ID'] . "\"></td>\n";
|
||||
}
|
||||
else {
|
||||
$ret[$attr] = $attr;
|
||||
echo " <td height=22 align=\"center\"><input onClick=\"list_click(this, '" . $info[$i]['LAM_ID'] . "', '" . $this->type . "')\"" .
|
||||
" type=\"checkbox\" name=\"" . $info[$i]['LAM_ID'] . "\"></td>\n";
|
||||
}
|
||||
echo (" <td align='center'><a href=\"../account/edit.php?type=" . $this->type . "&DN='" . $info[$i]['dn'] . "'\">" . _("Edit") . "</a></td>\n");
|
||||
for ($k = 0; $k < sizeof($this->attrArray); $k++) {
|
||||
echo ("<td>");
|
||||
// print all attribute entries seperated by "; "
|
||||
$attrName = strtolower($this->attrArray[$k]);
|
||||
if (isset($info[$i][$attrName]) && sizeof($info[$i][$attrName]) > 0) {
|
||||
// delete "count" entry
|
||||
unset($info[$i][$attrName]['count']);
|
||||
if (is_array($info[$i][$attrName])) {
|
||||
// sort array
|
||||
sort($info[$i][$attrName]);
|
||||
echo implode("; ", $info[$i][$attrName]);
|
||||
}
|
||||
else echo $info[$i][$attrName];
|
||||
}
|
||||
echo ("</td>\n");
|
||||
}
|
||||
echo("</tr>\n");
|
||||
}
|
||||
// display select all link
|
||||
$colspan = sizeof($this->attrArray) + 1;
|
||||
echo "<tr class=\"" . $this->type . "list\">\n";
|
||||
echo "<td align=\"center\"><img src=\"../../graphics/select.png\" alt=\"select all\"></td>\n";
|
||||
echo "<td colspan=$colspan> <a href=\"list.php?type=" . $this->type . "&norefresh=y&page=" . $this->page .
|
||||
"&sort=" . $this->sortColumn . $this->filterText . "&selectall=yes\">" .
|
||||
"<font color=\"black\"><b>" . _("Select all") . "</b></font></a></td>\n";
|
||||
echo "</tr>\n";
|
||||
echo ("</table>");
|
||||
|
||||
echo ("<br>");
|
||||
}
|
||||
|
||||
/**
|
||||
* Manages all POST actions (e.g. button pressed) for the account lists.
|
||||
*/
|
||||
function listDoPost() {
|
||||
// check if button was pressed and if we have to add/delete an account
|
||||
if (isset($_POST['new']) || isset($_POST['del']) || isset($_POST['pdf']) || isset($_POST['pdf_all'])){
|
||||
// add new account
|
||||
if (isset($_POST['new'])){
|
||||
metaRefresh("../account/edit.php?type=" . $this->type);
|
||||
exit;
|
||||
}
|
||||
// delete account(s)
|
||||
elseif (isset($_POST['del'])){
|
||||
// search for checkboxes
|
||||
$accounts = array_keys($_POST, "on");
|
||||
$_SESSION['delete_dn'] = array();
|
||||
for ($i = 0; $i < sizeof($accounts); $i++) {
|
||||
$_SESSION['delete_dn'][] = $_SESSION[$this->type . 'info'][$accounts[$i]]['dn'];
|
||||
}
|
||||
if (sizeof($accounts) > 0) {
|
||||
metaRefresh("../delete.php?type=" . $this->type);
|
||||
exit;
|
||||
}
|
||||
}
|
||||
// PDF for selected accounts
|
||||
elseif (isset($_POST['pdf'])){
|
||||
$pdf_structure = $_POST['pdf_structure'];
|
||||
// search for checkboxes
|
||||
$accounts = array_keys($_POST, "on");
|
||||
$list = array();
|
||||
// load accounts from LDAP
|
||||
for ($i = 0; $i < sizeof($accounts); $i++) {
|
||||
$_SESSION["accountPDF-$i"] = new accountContainer($this->type, "accountPDF-$i");
|
||||
$_SESSION["accountPDF-$i"]->load_account($_SESSION[$this->type . 'info'][$accounts[$i]]['dn']);
|
||||
$list[$i] = $_SESSION["accountPDF-$i"];
|
||||
}
|
||||
if (sizeof($list) > 0) {
|
||||
createModulePDF($list,$pdf_structure);
|
||||
exit;
|
||||
}
|
||||
}
|
||||
// PDF for all accounts
|
||||
elseif (isset($_POST['pdf_all'])){
|
||||
$list = array();
|
||||
for ($i = 0; $i < sizeof($_SESSION[$this->type . 'info']); $i++) {
|
||||
$_SESSION["accountPDF-$i"] = new accountContainer($this->type, "accountPDF-$i");
|
||||
$_SESSION["accountPDF-$i"]->load_account($_SESSION[$this->type . 'info'][$i]['dn']);
|
||||
$list[$i] = $_SESSION["accountPDF-$i"];
|
||||
}
|
||||
if (sizeof($list) > 0) {
|
||||
createModulePDF($list,$_POST['pdf_structure']);
|
||||
exit;
|
||||
}
|
||||
}
|
||||
}
|
||||
// if not predefined, the attribute is seperated by a ":" from description
|
||||
}
|
||||
|
||||
/**
|
||||
* Prints a combobox with possible sub-DNs.
|
||||
*/
|
||||
function listShowOUSelection() {
|
||||
if (sizeof($this->possibleSuffixes) > 1) {
|
||||
echo ("<p align=\"left\">\n");
|
||||
echo ("<b>" . _("Suffix") . ": </b>");
|
||||
echo ("<select size=1 name=\"suffix\">\n");
|
||||
for ($i = 0; $i < sizeof($this->possibleSuffixes); $i++) {
|
||||
if ($this->suffix == $this->possibleSuffixes[$i]) {
|
||||
echo ("<option selected>" . $this->possibleSuffixes[$i] . "</option>\n");
|
||||
}
|
||||
else echo("<option>" . $this->possibleSuffixes[$i] . "</option>\n");
|
||||
}
|
||||
echo ("</select>\n");
|
||||
echo ("<input type=\"submit\" name=\"refresh\" value=\"" . _("Change suffix") . "\">");
|
||||
echo ("</p>\n");
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Prints the create, delete and PDF buttons.
|
||||
*
|
||||
* @param boolean $createOnly true if only the create button should be displayed
|
||||
*/
|
||||
function listPrintButtons($createOnly) {
|
||||
// add/delete/PDF buttons
|
||||
echo ("<input type=\"submit\" name=\"new\" value=\"" . $this->labels['newEntry'] . "\">\n");
|
||||
if (!$createOnly) {
|
||||
echo ("<input type=\"submit\" name=\"del\" value=\"" . $this->labels['deleteEntry'] . "\">\n");
|
||||
echo ("<br><br><br>\n");
|
||||
echo "<fieldset><legend><b>PDF</b></legend>\n";
|
||||
echo ("<b>" . _('PDF structure') . ":</b> <select name=\"pdf_structure\">\n");
|
||||
$pdf_structures = getPDFStructureDefinitions($this->type);
|
||||
foreach($pdf_structures as $pdf_structure) {
|
||||
echo "<option " . (($pdf_structure == 'default') ? " selected" : "") . ">" . $pdf_structure . "</option>";
|
||||
}
|
||||
echo "</select> \n";
|
||||
echo ("<input type=\"submit\" name=\"pdf\" value=\"" . $this->labels['createPDF'] . "\">\n");
|
||||
echo " ";
|
||||
echo ("<input type=\"submit\" name=\"pdf_all\" value=\"" . $this->labels['createPDFAll'] . "\">\n");
|
||||
echo "</fieldset>";
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Prints the HTML head.
|
||||
*/
|
||||
function listPrintHeader() {
|
||||
echo $_SESSION['header'];
|
||||
echo "<title>Account list</title>\n";
|
||||
echo "<link rel=\"stylesheet\" type=\"text/css\" href=\"../../style/layout.css\">\n";
|
||||
echo "<link rel=\"stylesheet\" type=\"text/css\" href=\"../../style/type_" . $this->type . ".css\">\n";
|
||||
echo "</head><body>\n";
|
||||
$this->listPrintJavaScript();
|
||||
}
|
||||
|
||||
/**
|
||||
* Prints JavaScript code needed for mouse-over effects.
|
||||
*/
|
||||
function listPrintJavaScript() {
|
||||
echo "<script type=\"text/javascript\" language=\"javascript\">\n";
|
||||
echo "<!--\n";
|
||||
// mouseOver function
|
||||
echo "function list_over(list, box, scope) {\n";
|
||||
echo "cbox = document.getElementsByName(box)[0];\n";
|
||||
echo "if (cbox.checked == false) list.setAttribute('class', scope + 'list-over', 0);\n";
|
||||
echo "}";
|
||||
|
||||
// mouseOut function
|
||||
echo "function list_out(list, box, scope) {\n";
|
||||
echo "cbox = document.getElementsByName(box)[0];\n";
|
||||
echo "if (cbox.checked == false) list.setAttribute('class', scope + 'list', 0);\n";
|
||||
echo "}\n";
|
||||
|
||||
// onClick function
|
||||
echo "function list_click(list, box, scope) {\n";
|
||||
echo "cbox = document.getElementsByName(box)[0];\n";
|
||||
echo "if (cbox.checked == true) {\n";
|
||||
echo "cbox.checked = false;\n";
|
||||
echo "list.setAttribute('class', scope + 'list-over', 0);\n";
|
||||
echo "}\n";
|
||||
echo "else {\n";
|
||||
echo "cbox.checked = true;\n";
|
||||
echo "list.setAttribute('class', scope + 'list-checked', 0);\n";
|
||||
echo "}\n";
|
||||
echo "}\n";
|
||||
echo "//-->\n";
|
||||
echo "</script>\n";
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns an hash array containing with all attributes to be shown and their descriptions.
|
||||
* Format: array(attribute => description)
|
||||
*
|
||||
* @return array attribute list
|
||||
*/
|
||||
function listGetAttributeDescriptionList() {
|
||||
$ret = array();
|
||||
$attr_string = $_SESSION["config"]->get_listAttributes($this->type);
|
||||
$temp_array = explode(";", $attr_string);
|
||||
$hash_table = getListAttributeDescriptions($this->type);
|
||||
// generate column attributes and descriptions
|
||||
for ($i = 0; $i < sizeof($temp_array); $i++) {
|
||||
// if value is predifined, look up description in hash_table
|
||||
if (substr($temp_array[$i],0,1) == "#") {
|
||||
$attr = strtolower(substr($temp_array[$i],1));
|
||||
if (isset($hash_table[$attr])) {
|
||||
$ret[$attr] = $hash_table[$attr];
|
||||
}
|
||||
else {
|
||||
$ret[$attr] = $attr;
|
||||
}
|
||||
}
|
||||
// if not predefined, the attribute is seperated by a ":" from description
|
||||
else {
|
||||
$attr = explode(":", $temp_array[$i]);
|
||||
if (isset($attr[1])) {
|
||||
$ret[$attr[0]] = $attr[1];
|
||||
}
|
||||
else {
|
||||
$ret[$attr[0]] = $attr[0];
|
||||
}
|
||||
}
|
||||
}
|
||||
return $ret;
|
||||
}
|
||||
|
||||
/**
|
||||
* Sets some internal parameters.
|
||||
*/
|
||||
function listGetParams() {
|
||||
// get current page
|
||||
if (isset($_GET["page"])) $this->page = $_GET["page"];
|
||||
else $this->page = 1;
|
||||
// generate attribute-description table
|
||||
$temp_array = $this->listGetAttributeDescriptionList();
|
||||
$this->attrArray = array_keys($temp_array); // list of LDAP attributes to show
|
||||
$this->descArray = array_values($temp_array); // list of descriptions for the attributes
|
||||
// get maximum count of entries shown on one page
|
||||
if ($_SESSION["config"]->get_MaxListEntries() <= 0)
|
||||
$this->maxPageEntries = 10; // default setting, if not yet set
|
||||
else
|
||||
$this->maxPageEntries = $_SESSION["config"]->get_MaxListEntries();
|
||||
// get sorting column
|
||||
if (isset($_GET["sort"])) $this->sortColumn = $_GET["sort"];
|
||||
else $this->sortColumn = strtolower($this->attrArray[0]);
|
||||
// check search suffix
|
||||
if ($_POST['suffix']) $this->suffix = $_POST['suffix']; // new suffix selected via combobox
|
||||
elseif (!$this->suffix) $this->suffix = $_SESSION["config"]->get_Suffix($this->type); // default suffix
|
||||
// check if LDAP data should be refreshed
|
||||
$this->refresh = true;
|
||||
if (isset($_GET['norefresh'])) $this->refresh = false;
|
||||
if (isset($_POST['refresh'])) $this->refresh = true;
|
||||
}
|
||||
|
||||
/**
|
||||
* Rereads the entries from LDAP.
|
||||
*/
|
||||
function listRefreshData() {
|
||||
// configure search filter
|
||||
$module_filter = get_ldap_filter($this->type); // basic filter is provided by modules
|
||||
$filter = "(&" . $module_filter . ")";
|
||||
$attrs = $this->attrArray;
|
||||
$sr = @ldap_search($_SESSION["ldap"]->server(), $this->suffix, $filter, $attrs);
|
||||
if (ldap_errno($_SESSION["ldap"]->server()) == 4) {
|
||||
StatusMessage("WARN", _("LDAP sizelimit exceeded, not all entries are shown."), _("See README.openldap.txt to solve this problem."));
|
||||
}
|
||||
if ($sr) {
|
||||
$info = ldap_get_entries($_SESSION["ldap"]->server, $sr);
|
||||
ldap_free_result($sr);
|
||||
// delete first array entry which is "count"
|
||||
unset($info['count']);
|
||||
// save position in original $info
|
||||
for ($i = 0; $i < sizeof($info); $i++) $info[$i]['LAM_ID'] = $i;
|
||||
// save results
|
||||
$this->entries = $info;
|
||||
}
|
||||
else {
|
||||
$attr = explode(":", $temp_array[$i]);
|
||||
if (isset($attr[1])) {
|
||||
$ret[$attr[0]] = $attr[1];
|
||||
}
|
||||
else {
|
||||
$ret[$attr[0]] = $attr[0];
|
||||
}
|
||||
$this->entries = array();
|
||||
StatusMessage("ERROR", _("LDAP Search failed! Please check your preferences."), $this->labels['error_noneFound']); // TODO correct message
|
||||
}
|
||||
// generate list of possible suffixes
|
||||
$this->possibleSuffixes = $_SESSION['ldap']->search_units($_SESSION["config"]->get_Suffix($this->type));
|
||||
}
|
||||
return $ret;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
?>
|
|
@ -317,6 +317,11 @@ function getConfigOptions($scopes) {
|
|||
*/
|
||||
function getConfigDescriptions() {
|
||||
$return = array('legend' => array(), 'descriptions' => array());
|
||||
$modules = array();
|
||||
$types = $_SESSION['config']->get_ActiveTypes();
|
||||
for ($i = 0; $i < sizeof($types); $i++) {
|
||||
$modules = array_merge($modules, getAvailableModules($types[$i]));
|
||||
}
|
||||
$modules = array_merge(getAvailableModules('user'), getAvailableModules('group'), getAvailableModules('host'));
|
||||
$modules = array_values(array_unique($modules));
|
||||
for ($i = 0; $i < sizeof($modules); $i++) {
|
||||
|
@ -375,15 +380,6 @@ function getAvailablePDFFields($scope) {
|
|||
return $return;
|
||||
}
|
||||
|
||||
/**
|
||||
* Return a list of current available scopes
|
||||
*
|
||||
* @return array Available scopes
|
||||
*/
|
||||
function getAvailableScopes() {
|
||||
return array('user','group','host', 'domain');
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns an array containing all input columns for the file upload.
|
||||
*
|
||||
|
@ -707,8 +703,6 @@ class accountContainer {
|
|||
|
||||
if (!is_string($type)) trigger_error('Argument of accountContainer must be string.', E_USER_ERROR);
|
||||
if (!is_string($base)) trigger_error('Argument of accountContainer must be string.', E_USER_ERROR);
|
||||
// *** fixme use global variable to determine allowed types
|
||||
if (!in_array($type, getAvailableScopes())) trigger_error('Account type not recognized.', E_USER_ERROR);
|
||||
$this->type = $type;
|
||||
$this->base = $base;
|
||||
// Set startpage
|
||||
|
@ -900,6 +894,7 @@ class accountContainer {
|
|||
else echo _("Create new Account");
|
||||
echo "</title>\n";
|
||||
echo "<link rel=\"stylesheet\" type=\"text/css\" href=\"../../style/layout.css\">\n";
|
||||
echo "<link rel=\"stylesheet\" type=\"text/css\" href=\"../../style/type_" . $this->type . ".css\">\n";
|
||||
echo "</head><body>\n";
|
||||
echo "<form enctype=\"multipart/form-data\" action=\"edit.php\" method=\"post\">\n";
|
||||
// Display error-messages
|
||||
|
@ -937,7 +932,7 @@ class accountContainer {
|
|||
|
||||
echo "<fieldset class=\"".$this->type."edit\"><legend><b>";
|
||||
echo _('Please select page:');
|
||||
echo "</b></legend>\n";
|
||||
echo "</b></legend><center>\n";
|
||||
// calculate button width
|
||||
$buttonWidth = round(0.8 * strlen(utf8_decode(_("Reset changes"))));
|
||||
for ($b = 0; $b < sizeof($this->order); $b++) {
|
||||
|
@ -971,7 +966,7 @@ class accountContainer {
|
|||
if ($this->subpage == 'finish') echo " disabled";
|
||||
echo "><br>\n";
|
||||
}
|
||||
echo "</fieldset>\n";
|
||||
echo "</center></fieldset>\n";
|
||||
echo "</td>\n<td>";
|
||||
if ($this->current_page==0) {
|
||||
echo "<fieldset class=\"".$this->type."edit\"><legend><b>";
|
||||
|
@ -1177,7 +1172,7 @@ class accountContainer {
|
|||
$string = trim($string);
|
||||
// Add must
|
||||
foreach (explode(" $ ", $string) as $attribute) {
|
||||
$return[$attribute] = array('');
|
||||
$return[$attribute] = array();
|
||||
}
|
||||
}
|
||||
elseif (strpos($_SESSION['ldap']->objectClasses[$line], 'MUST ')) {
|
||||
|
@ -1186,7 +1181,7 @@ class accountContainer {
|
|||
$string = substr($string_withtail, 0, strpos($string_withtail, ' '));
|
||||
$string = trim($string);
|
||||
// Add must
|
||||
$return[$string] = array('');
|
||||
$return[$string] = array();
|
||||
}
|
||||
// create array with may-attributes
|
||||
// Get startposition in string
|
||||
|
@ -1197,7 +1192,7 @@ class accountContainer {
|
|||
$string = trim($string);
|
||||
// Add may
|
||||
foreach (explode(" $ ", $string) as $attribute) {
|
||||
$return[$attribute] = array('');
|
||||
$return[$attribute] = array();
|
||||
}
|
||||
}
|
||||
elseif (strpos($_SESSION['ldap']->objectClasses[$line], 'MAY ')) {
|
||||
|
@ -1206,7 +1201,7 @@ class accountContainer {
|
|||
$string = substr($string_withtail, 0, strpos($string_withtail, ' '));
|
||||
$string = trim($string);
|
||||
// Add must
|
||||
$return[$string] = array('');
|
||||
$return[$string] = array();
|
||||
}
|
||||
// Get attributes of subclasses
|
||||
while (strpos($_SESSION['ldap']->objectClasses[$line], "SUP ")) {
|
||||
|
@ -1227,7 +1222,7 @@ class accountContainer {
|
|||
$string = trim($string);
|
||||
// Add must
|
||||
foreach (explode(" $ ", $string) as $attribute) {
|
||||
$return[$attribute] = array('');
|
||||
$return[$attribute] = array();
|
||||
}
|
||||
}
|
||||
elseif (strpos($_SESSION['ldap']->objectClasses[$line], 'MUST ')) {
|
||||
|
@ -1236,7 +1231,7 @@ class accountContainer {
|
|||
$string = substr($string_withtail, 0, strpos($string_withtail, ' '));
|
||||
$string = trim($string);
|
||||
// Add must
|
||||
$return[$string] = array('');
|
||||
$return[$string] = array();
|
||||
}
|
||||
// create array with may-attributes
|
||||
// Get startposition in string
|
||||
|
@ -1247,7 +1242,7 @@ class accountContainer {
|
|||
$string = trim($string);
|
||||
// Add may
|
||||
foreach (explode(" $ ", $string) as $attribute) {
|
||||
$return[$attribute] = array('');
|
||||
$return[$attribute] = array();
|
||||
}
|
||||
}
|
||||
elseif (strpos($_SESSION['ldap']->objectClasses[$line], 'MAY ')) {
|
||||
|
@ -1256,7 +1251,7 @@ class accountContainer {
|
|||
$string = substr($string_withtail, 0, strpos($string_withtail, ' '));
|
||||
$string = trim($string);
|
||||
// Add must
|
||||
$return[$string] = array('');
|
||||
$return[$string] = array();
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -45,7 +45,7 @@ class nisMailAlias extends baseModule {
|
|||
function get_metaData() {
|
||||
$return = array();
|
||||
// manages host accounts
|
||||
$return["account_types"] = array("group");
|
||||
$return["account_types"] = array("mailAlias");
|
||||
// base module
|
||||
$return["is_base"] = true;
|
||||
// LDAP filter
|
||||
|
|
|
@ -832,7 +832,7 @@ class posixGroup extends baseModule {
|
|||
$DNs = array_keys($result);
|
||||
for ($i=0; $i<count($DNs); $i++) {
|
||||
// Get Domain SID from name
|
||||
$sambaDomains = search_domains($_SESSION['config']->get_Suffix('domain'));
|
||||
$sambaDomains = search_domains();
|
||||
// Get Domain-SID from group SID
|
||||
$domainSID = substr($result[$DNs[$i]], 0, strrpos($result[$DNs[$i]], "-"));
|
||||
for ($i=0; $i<count($sambaDomains); $i++ )
|
||||
|
|
|
@ -0,0 +1,428 @@
|
|||
<?php
|
||||
/*
|
||||
$Id$
|
||||
|
||||
This code is part of LDAP Account Manager (http://www.sourceforge.net/projects/lam)
|
||||
Copyright (C) 2005 Roland Gruber
|
||||
|
||||
This program is free software; you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation; either version 2 of the License, or
|
||||
(at your option) any later version.
|
||||
|
||||
This program is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with this program; if not, write to the Free Software
|
||||
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
*/
|
||||
|
||||
/**
|
||||
* Manages Samba 3 domain entries.
|
||||
*
|
||||
* @package modules
|
||||
* @author Roland Gruber
|
||||
*/
|
||||
|
||||
/**
|
||||
* Manages Samba 3 domain entries.
|
||||
*
|
||||
* @package modules
|
||||
*/
|
||||
class sambaDomain extends baseModule {
|
||||
|
||||
/**
|
||||
* Returns meta data that is interpreted by parent class
|
||||
*
|
||||
* @return array array with meta data
|
||||
*/
|
||||
function get_metaData() {
|
||||
$return = array();
|
||||
// manages host accounts
|
||||
$return["account_types"] = array("smbDomain");
|
||||
// alias name
|
||||
$return["alias"] = _("Samba domain");
|
||||
// this is a base module
|
||||
$return["is_base"] = true;
|
||||
// RDN attribute
|
||||
$return["RDN"] = array("sambaDomainName" => "high");
|
||||
// LDAP filter
|
||||
$return["ldap_filter"] = array('or' => "(objectClass=sambaDomain)");
|
||||
// module dependencies
|
||||
$return['dependencies'] = array('depends' => array(), 'conflicts' => array());
|
||||
// help Entries
|
||||
$return['help'] = array(
|
||||
'domainName' => array(
|
||||
"Headline" => _("Domain name"),
|
||||
"Text" => _("The name of your Windows domain or workgroup.")
|
||||
),
|
||||
'domainSID' => array(
|
||||
"Headline" => _("Domain SID"),
|
||||
"Text" => _("The SID of your Samba server. Get it with \"net getlocalsid\".")
|
||||
),
|
||||
'nextRID' => array(
|
||||
"Headline" => _("Next RID"),
|
||||
"Text" => _("Next RID to use when creating accounts (only used by Winbind).")
|
||||
),
|
||||
'nextUserRID' => array(
|
||||
"Headline" => _("Next user RID"),
|
||||
"Text" => _("Next RID to use when creating user accounts (only used by Winbind).")
|
||||
),
|
||||
'nextGroupRID' => array(
|
||||
"Headline" => _("Next group RID"),
|
||||
"Text" => _("Next RID to use when creating group accounts (only used by Winbind).")
|
||||
),
|
||||
'nextRID' => array(
|
||||
"Headline" => _("RID base"),
|
||||
"Text" => _("Used for calculating RIDs from UID/GID. Do not change if unsure.")
|
||||
));
|
||||
// upload fields
|
||||
$return['upload_columns'] = array(
|
||||
array(
|
||||
'name' => 'sambaDomain_domainName',
|
||||
'description' => _('Domain name'),
|
||||
'help' => 'domainName',
|
||||
'example' => _('Workgroup'),
|
||||
'required' => true
|
||||
),
|
||||
array(
|
||||
'name' => 'sambaDomain_domainSID',
|
||||
'description' => _('Domain SID'),
|
||||
'help' => 'domainSID',
|
||||
'example' => 'S-1-1-22-123-123-123',
|
||||
'required' => true
|
||||
),
|
||||
array(
|
||||
'name' => 'sambaDomain_RIDbase',
|
||||
'description' => _('RID base'),
|
||||
'help' => 'RIDbase',
|
||||
'example' => '1000',
|
||||
'default' => 1000
|
||||
),
|
||||
array(
|
||||
'name' => 'sambaDomain_nextRID',
|
||||
'description' => _('Next RID'),
|
||||
'help' => 'nextRID',
|
||||
'example' => '12345'
|
||||
),
|
||||
array(
|
||||
'name' => 'sambaDomain_nextUserRID',
|
||||
'description' => _('Next user RID'),
|
||||
'help' => 'nextUserRID',
|
||||
'example' => '12345'
|
||||
),
|
||||
array(
|
||||
'name' => 'sambaDomain_nextGroupRID',
|
||||
'description' => _('Next group RID'),
|
||||
'help' => 'nextGroupRID',
|
||||
'example' => '12345'
|
||||
)
|
||||
);
|
||||
// available PDF fields
|
||||
$return['PDF_fields'] = array(
|
||||
'domainName', 'domainSID', 'nextRID',
|
||||
'nextUserRID', 'nextGroupRID', 'RIDbase'
|
||||
);
|
||||
return $return;
|
||||
}
|
||||
|
||||
/**
|
||||
* This function fills the error message array with messages
|
||||
*/
|
||||
function load_Messages() {
|
||||
$this->messages['domainName'][0] = array('ERROR', _('Domain name is invalid!'));
|
||||
$this->messages['domainName'][1] = array('ERROR', _('Account %s:') . ' sambaDomain_domainName', _('Domain name is invalid!'));
|
||||
$this->messages['domainSID'][0] = array('ERROR', _('Samba 3 domain SID is invalid!'));
|
||||
$this->messages['domainSID'][1] = array('ERROR', _('Account %s:') . ' sambaDomain_domainSID', _('Samba 3 domain SID is invalid!'));
|
||||
$this->messages['nextRID'][0] = array('ERROR', _('Next RID is not a number!'));
|
||||
$this->messages['nextRID'][1] = array('ERROR', _('Account %s:') . ' sambaDomain_nextRID', _('Next RID is not a number!'));
|
||||
$this->messages['nextUserRID'][0] = array('ERROR', _('Next user RID is not a number!'));
|
||||
$this->messages['nextUserRID'][1] = array('ERROR', _('Account %s:') . ' sambaDomain_nextUserRID', _('Next user RID is not a number!'));
|
||||
$this->messages['nextGroupRID'][0] = array('ERROR', _('Next group RID is not a number!'));
|
||||
$this->messages['nextGroupRID'][1] = array('ERROR', _('Account %s:') . ' sambaDomain_nextGroupRID', _('Next group RID is not a number!'));
|
||||
$this->messages['RIDbase'][0] = array('ERROR', _('Algorithmic RID base is not a number!'));
|
||||
$this->messages['RIDbase'][1] = array('ERROR', _('Account %s:') . ' sambaDomain_RIDbase', _('Algorithmic RID base is not a number!'));
|
||||
}
|
||||
|
||||
/**
|
||||
* This function loads all needed attributes into the object.
|
||||
*
|
||||
* @param array $attr an array as it is retured from ldap_get_attributes
|
||||
*/
|
||||
function load_attributes($attr) {
|
||||
$attributes = array('sambaAlgorithmicRidBase', 'sambaDomainName', 'sambaNextGroupRid',
|
||||
'sambaNextRid', 'sambaNextUserRid', 'sambaSID');
|
||||
$this->attributes['objectClass'] = array();
|
||||
$this->attributes['macAddress'] = array();
|
||||
$this->orig['objectClass'] = array();
|
||||
$this->orig['macAddress'] = array();
|
||||
if (isset($attr['objectClass'])) {
|
||||
$this->attributes['objectClass'] = $attr['objectClass'];
|
||||
$this->orig['objectClass'] = $attr['objectClass'];
|
||||
}
|
||||
for ($i = 0; $i < sizeof($attributes); $i++) {
|
||||
if (isset($attr[$attributes[$i]])) {
|
||||
$this->attributes[$attributes[$i]] = $attr[$attributes[$i]];
|
||||
$this->orig[$attributes[$i]] = $attr[$attributes[$i]];
|
||||
}
|
||||
}
|
||||
// add object class if needed
|
||||
if (! in_array('sambaDomain', $this->orig['objectClass'])) {
|
||||
$this->attributes['objectClass'][] = 'sambaDomain';
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns a list of modifications which have to be made to the LDAP account.
|
||||
*
|
||||
* @return array list of modifications
|
||||
* <br>This function returns an array with 3 entries:
|
||||
* <br>array( DN1 ('add' => array($attr), 'remove' => array($attr), 'modify' => array($attr)), DN2 .... )
|
||||
* <br>DN is the DN to change. It may be possible to change several DNs (e.g. create a new user and add him to some groups via attribute memberUid)
|
||||
* <br>"add" are attributes which have to be added to LDAP entry
|
||||
* <br>"remove" are attributes which have to be removed from LDAP entry
|
||||
* <br>"modify" are attributes which have to been modified in LDAP entry
|
||||
*/
|
||||
function save_attributes() {
|
||||
return $_SESSION[$this->base]->save_module_attributes($this->attributes, $this->orig);
|
||||
}
|
||||
|
||||
/**
|
||||
* This function will create the meta HTML code to show a page with all attributes.
|
||||
*
|
||||
* @param array $post HTTP-POST values
|
||||
*/
|
||||
function display_html_attributes(&$post) {
|
||||
$return = array();
|
||||
// domain name
|
||||
if ($_SESSION[$this->base]->isNewAccount) {
|
||||
$return[] = array(
|
||||
0 => array('kind' => 'text', 'text' => _('Domain name').'*'),
|
||||
1 => array('kind' => 'input', 'name' => 'domainName', 'type' => 'text', 'value' => $this->attributes['sambaDomainName'][0]),
|
||||
2 => array('kind' => 'help', 'value' => 'domainName'));
|
||||
}
|
||||
else {
|
||||
$return[] = array(
|
||||
0 => array('kind' => 'text', 'text' => _('Domain name')),
|
||||
1 => array('kind' => 'text', 'text' => $this->attributes['sambaDomainName'][0]),
|
||||
2 => array('kind' => 'help', 'value' => 'domainName'));
|
||||
}
|
||||
// domain SID
|
||||
if ($_SESSION[$this->base]->isNewAccount) {
|
||||
$return[] = array(
|
||||
0 => array('kind' => 'text', 'text' => _('Domain SID').'*'),
|
||||
1 => array('kind' => 'input', 'name' => 'domainSID', 'type' => 'text', 'value' => $this->attributes['sambaSID'][0]),
|
||||
2 => array('kind' => 'help', 'value' => 'domainSID'));
|
||||
}
|
||||
else {
|
||||
$return[] = array(
|
||||
0 => array('kind' => 'text', 'text' => _('Domain SID')),
|
||||
1 => array('kind' => 'text', 'text' => $this->attributes['sambaSID'][0]),
|
||||
2 => array('kind' => 'help', 'value' => 'domainSID'));
|
||||
}
|
||||
// next RID
|
||||
$return[] = array(
|
||||
0 => array('kind' => 'text', 'text' => _('Next RID')),
|
||||
1 => array('kind' => 'input', 'name' => 'nextRID', 'type' => 'text', 'value' => $this->attributes['sambaNextRid'][0]),
|
||||
2 => array('kind' => 'help', 'value' => 'nextRID'));
|
||||
// next user RID
|
||||
$return[] = array(
|
||||
0 => array('kind' => 'text', 'text' => _('Next user RID')),
|
||||
1 => array('kind' => 'input', 'name' => 'nextUserRID', 'type' => 'text', 'value' => $this->attributes['sambaNextUserRid'][0]),
|
||||
2 => array('kind' => 'help', 'value' => 'nextUserRID'));
|
||||
// next group RID
|
||||
$return[] = array(
|
||||
0 => array('kind' => 'text', 'text' => _('Next group RID')),
|
||||
1 => array('kind' => 'input', 'name' => 'nextGroupRID', 'type' => 'text', 'value' => $this->attributes['sambaNextGroupRid'][0]),
|
||||
2 => array('kind' => 'help', 'value' => 'nextGroupRID'));
|
||||
// RID base
|
||||
if (!isset($this->attributes['sambaAlgorithmicRidBase'][0])) $this->attributes['sambaAlgorithmicRidBase'][0] = 1000;
|
||||
if ($_SESSION[$this->base]->isNewAccount) {
|
||||
$return[] = array(
|
||||
0 => array('kind' => 'text', 'text' => _('RID base').'*'),
|
||||
1 => array('kind' => 'input', 'name' => 'RIDbase', 'type' => 'text', 'value' => $this->attributes['sambaAlgorithmicRidBase'][0]),
|
||||
2 => array('kind' => 'help', 'value' => 'RIDbase'));
|
||||
}
|
||||
else {
|
||||
$return[] = array(
|
||||
0 => array('kind' => 'text', 'text' => _('RID base')),
|
||||
1 => array('kind' => 'text', 'text' => $this->attributes['sambaAlgorithmicRidBase'][0]),
|
||||
2 => array('kind' => 'help', 'value' => 'RIDbase'));
|
||||
}
|
||||
return $return;
|
||||
}
|
||||
|
||||
/**
|
||||
* Processes user input of the primary module page.
|
||||
* It checks if all input values are correct and updates the associated LDAP attributes.
|
||||
*
|
||||
* @param array $post HTTP-POST values
|
||||
* @return array list of info/error messages
|
||||
*/
|
||||
function process_attributes(&$post) {
|
||||
$errors = array();
|
||||
if ($_SESSION[$this->base]->isNewAccount) {
|
||||
// domain SID
|
||||
if (!get_preg($_POST['domainSID'], 'domainSID')) {
|
||||
$errors[] = $this->messages['domainSID'][0];
|
||||
}
|
||||
else {
|
||||
$this->attributes['sambaSID'][0] = $_POST['domainSID'];
|
||||
}
|
||||
// RID base
|
||||
if (!get_preg($_POST['RIDbase'], 'digit') && !($_POST['RIDbase'] == '')) {
|
||||
$errors[] = $this->messages['RIDbase'][0];
|
||||
}
|
||||
else {
|
||||
$this->attributes['sambaAlgorithmicRidBase'][0] = $_POST['RIDbase'];
|
||||
}
|
||||
// domain name
|
||||
if (!get_preg($_POST['domainName'], 'domainname') && !($_POST['domainName'] == '')) {
|
||||
$errors[] = $this->messages['domainName'][0];
|
||||
}
|
||||
else {
|
||||
$this->attributes['sambaDomainName'][0] = $_POST['domainName'];
|
||||
}
|
||||
}
|
||||
// next RID
|
||||
if (!get_preg($_POST['nextRID'], 'digit')) {
|
||||
$errors[] = $this->messages['nextRID'][0];
|
||||
}
|
||||
else {
|
||||
$this->attributes['sambaNextRid'][0] = $_POST['nextRID'];
|
||||
}
|
||||
// next user RID
|
||||
if (!get_preg($_POST['nextUserRID'], 'digit')) {
|
||||
$errors[] = $this->messages['nextUserRID'][0];
|
||||
}
|
||||
else {
|
||||
$this->attributes['sambaNextUserRid'][0] = $_POST['nextUserRID'];
|
||||
}
|
||||
// next group RID
|
||||
if (!get_preg($_POST['nextGroupRID'], 'digit')) {
|
||||
$errors[] = $this->messages['nextGroupRID'][0];
|
||||
}
|
||||
else {
|
||||
$this->attributes['sambaNextGroupRid'][0] = $_POST['nextGroupRID'];
|
||||
}
|
||||
return $errors;
|
||||
}
|
||||
|
||||
/**
|
||||
* In this function the LDAP account is built up.
|
||||
*
|
||||
* @param array $rawAccounts list of hash arrays (name => value) from user input
|
||||
* @param array $partialAccounts list of hash arrays (name => value) which are later added to LDAP
|
||||
* @param array $ids list of IDs for column position (e.g. "posixAccount_uid" => 5)
|
||||
* @return array list of error messages if any
|
||||
*/
|
||||
function build_uploadAccounts($rawAccounts, $ids, &$partialAccounts) {
|
||||
$messages = array();
|
||||
for ($i = 0; $i < sizeof($rawAccounts); $i++) {
|
||||
// add object class
|
||||
if (!in_array("sambaDomain", $partialAccounts[$i]['objectClass'])) $partialAccounts[$i]['objectClass'][] = "sambaDomain";
|
||||
// domain name
|
||||
if (get_preg($rawAccounts[$i][$ids['sambaDomain_domainName']], 'domainname')) {
|
||||
$partialAccounts[$i]['sambaDomainName'] = $rawAccounts[$i][$ids['sambaDomain_domainName']];
|
||||
}
|
||||
else {
|
||||
$errMsg = $this->messages['domainName'][1];
|
||||
array_push($errMsg, array($i));
|
||||
$messages[] = $errMsg;
|
||||
}
|
||||
// domain SID
|
||||
if (get_preg($rawAccounts[$i][$ids['sambaDomain_domainSID']], 'domainSID')) {
|
||||
$partialAccounts[$i]['sambaSID'] = $rawAccounts[$i][$ids['sambaDomain_domainSID']];
|
||||
}
|
||||
else {
|
||||
$errMsg = $this->messages['domainSID'][1];
|
||||
array_push($errMsg, array($i));
|
||||
$messages[] = $errMsg;
|
||||
}
|
||||
// RID base
|
||||
if ($rawAccounts[$i][$ids['sambaDomain_RIDbase']]) {
|
||||
if (get_preg($rawAccounts[$i][$ids['sambaDomain_RIDbase']], 'digit')) {
|
||||
$partialAccounts[$i]['sambaAlgorithmicRidBase'] = $rawAccounts[$i][$ids['sambaDomain_RIDbase']];
|
||||
}
|
||||
else {
|
||||
$errMsg = $this->messages['RIDbase'][1];
|
||||
array_push($errMsg, array($i));
|
||||
$messages[] = $errMsg;
|
||||
}
|
||||
}
|
||||
else {
|
||||
$partialAccounts[$i]['sambaAlgorithmicRidBase'] = '1000';
|
||||
}
|
||||
// next RID
|
||||
if ($rawAccounts[$i][$ids['sambaDomain_nextRID']]) {
|
||||
if (get_preg($rawAccounts[$i][$ids['sambaDomain_nextRID']], 'digit')) {
|
||||
$partialAccounts[$i]['sambaNextRid'] = $rawAccounts[$i][$ids['sambaDomain_nextRID']];
|
||||
}
|
||||
else {
|
||||
$errMsg = $this->messages['nextRID'][1];
|
||||
array_push($errMsg, array($i));
|
||||
$messages[] = $errMsg;
|
||||
}
|
||||
}
|
||||
// next user RID
|
||||
if ($rawAccounts[$i][$ids['sambaDomain_nextUserRID']]) {
|
||||
if (get_preg($rawAccounts[$i][$ids['sambaDomain_nextUserRID']], 'digit')) {
|
||||
$partialAccounts[$i]['sambaNextUserRid'] = $rawAccounts[$i][$ids['sambaDomain_nextUserRID']];
|
||||
}
|
||||
else {
|
||||
$errMsg = $this->messages['nextUserRID'][1];
|
||||
array_push($errMsg, array($i));
|
||||
$messages[] = $errMsg;
|
||||
}
|
||||
}
|
||||
// next group RID
|
||||
if ($rawAccounts[$i][$ids['sambaDomain_nextGroupRID']]) {
|
||||
if (get_preg($rawAccounts[$i][$ids['sambaDomain_nextGroupRID']], 'digit')) {
|
||||
$partialAccounts[$i]['sambaNextGroupRid'] = $rawAccounts[$i][$ids['sambaDomain_nextGroupRID']];
|
||||
}
|
||||
else {
|
||||
$errMsg = $this->messages['nextGroupRID'][1];
|
||||
array_push($errMsg, array($i));
|
||||
$messages[] = $errMsg;
|
||||
}
|
||||
}
|
||||
}
|
||||
return $messages;
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the PDF entries for this module.
|
||||
*
|
||||
* @return array list of possible PDF entries
|
||||
*/
|
||||
function get_pdfEntries() {
|
||||
$return = array();
|
||||
if (sizeof($this->attributes['sambaDomainName']) > 0) {
|
||||
$return['sambaDomain_domainName'][0] = '<block><key>' . _('Domain name') . '</key><value>' . implode(', ', $this->attributes['sambaDomainName']) . '</value></block>';
|
||||
}
|
||||
if (sizeof($this->attributes['sambaSID']) > 0) {
|
||||
$return['sambaDomain_domainSID'][0] = '<block><key>' . _('Domain SID') . '</key><value>' . implode(', ', $this->attributes['sambaSID']) . '</value></block>';
|
||||
}
|
||||
if (sizeof($this->attributes['sambaNextRid']) > 0) {
|
||||
$return['sambaDomain_nextRID'][0] = '<block><key>' . _('Next RID') . '</key><value>' . implode(', ', $this->attributes['sambaNextRid']) . '</value></block>';
|
||||
}
|
||||
if (sizeof($this->attributes['sambaNextUserRid']) > 0) {
|
||||
$return['sambaDomain_nextUserRID'][0] = '<block><key>' . _('Next user RID') . '</key><value>' . implode(', ', $this->attributes['sambaNextUserRid']) . '</value></block>';
|
||||
}
|
||||
if (sizeof($this->attributes['sambaNextGroupRid']) > 0) {
|
||||
$return['sambaDomain_nextGroupRID'][0] = '<block><key>' . _('Next group RID') . '</key><value>' . implode(', ', $this->attributes['sambaNextGroupRid']) . '</value></block>';
|
||||
}
|
||||
if (sizeof($this->attributes['sambaAlgorithmicRidBase']) > 0) {
|
||||
$return['sambaDomain_RIDbase'][0] = '<block><key>' . _('RID base') . '</key><value>' . implode(', ', $this->attributes['sambaAlgorithmicRidBase']) . '</value></block>';
|
||||
}
|
||||
return $return;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
?>
|
|
@ -83,7 +83,7 @@ class sambaGroupMapping extends baseModule {
|
|||
function init($base) {
|
||||
// call parent init
|
||||
parent::init($base);
|
||||
$sambaDomains = search_domains($_SESSION['config']->get_Suffix('domain'));
|
||||
$sambaDomains = search_domains();
|
||||
if (sizeof($sambaDomains) == 0) {
|
||||
StatusMessage("ERROR", _('No Samba 3 domains found in LDAP! Please create one first.'), '');
|
||||
return;
|
||||
|
@ -100,7 +100,7 @@ class sambaGroupMapping extends baseModule {
|
|||
*/
|
||||
function build_uploadAccounts($rawAccounts, $ids, &$partialAccounts) {
|
||||
// search existing Samba 3 domains
|
||||
$domains = search_domains($_SESSION['config']->get_Suffix('domain'));
|
||||
$domains = search_domains();
|
||||
$nameToSID = array();
|
||||
// get domain SIDs
|
||||
for ($i = 0; $i < sizeof($domains); $i++) {
|
||||
|
@ -168,7 +168,7 @@ class sambaGroupMapping extends baseModule {
|
|||
* It will output a complete html-table
|
||||
*/
|
||||
function display_html_attributes(&$post) {
|
||||
$sambaDomains = search_domains($_SESSION['config']->get_Suffix('domain'));
|
||||
$sambaDomains = search_domains();
|
||||
if (sizeof($sambaDomains) == 0) {
|
||||
StatusMessage("ERROR", _('No Samba 3 domains found in LDAP! Please create one first.'), '');
|
||||
return;
|
||||
|
@ -243,7 +243,7 @@ class sambaGroupMapping extends baseModule {
|
|||
// upload fields
|
||||
// search existing Samba 3 domains
|
||||
if ($_SESSION['loggedIn']) {
|
||||
$domains = search_domains($_SESSION['config']->get_Suffix('domain'));
|
||||
$domains = search_domains();
|
||||
$domainNames = array();
|
||||
for ($i = 0; $i < sizeof($domains); $i++) $domainNames[] = $domains[$i]->name;
|
||||
$return['upload_columns'] = array(
|
||||
|
@ -327,7 +327,7 @@ class sambaGroupMapping extends baseModule {
|
|||
function get_profileOptions() {
|
||||
$return = array();
|
||||
// get list of domains
|
||||
$sambaDomains = search_domains($_SESSION['config']->get_Suffix('domain'));
|
||||
$sambaDomains = search_domains();
|
||||
$sambaDomainNames = array();
|
||||
for ($i = 0; $i < count($sambaDomains); $i++ ) {
|
||||
// extract names
|
||||
|
@ -350,7 +350,7 @@ class sambaGroupMapping extends baseModule {
|
|||
function load_profile($profile) {
|
||||
if (isset($profile['sambaGroupMapping_sambaDomainName'][0])) {
|
||||
// get list of domains
|
||||
$sambaDomains = search_domains($_SESSION['config']->get_Suffix('domain'));
|
||||
$sambaDomains = search_domains();
|
||||
for ($i = 0; $i < sizeof($sambaDomains); $i++) {
|
||||
if ($sambaDomains[$i]->name == $profile['sambaGroupMapping_sambaDomainName'][0]) {
|
||||
$this->attributes['sambaSID'][0] = $sambaDomains[$i]->SID . "-0";
|
||||
|
@ -394,7 +394,7 @@ class sambaGroupMapping extends baseModule {
|
|||
* @return array list of info/error messages
|
||||
*/
|
||||
function process_attributes(&$post) {
|
||||
$sambaDomains = search_domains($_SESSION['config']->get_Suffix('domain'));
|
||||
$sambaDomains = search_domains();
|
||||
if (sizeof($sambaDomains) == 0) {
|
||||
return array(array(array("ERROR", _('No Samba 3 domains found in LDAP! Please create one first.'))));
|
||||
}
|
||||
|
@ -448,7 +448,7 @@ class sambaGroupMapping extends baseModule {
|
|||
*/
|
||||
function save_attributes() {
|
||||
// Get Domain SID from name
|
||||
$sambaDomains = search_domains($_SESSION['config']->get_Suffix('domain'));
|
||||
$sambaDomains = search_domains();
|
||||
// Get Domain-SID from group SID
|
||||
$domainSID = substr($this->attributes['sambaSID'][0], 0, strrpos($this->attributes['sambaSID'][0], "-"));
|
||||
for ($i=0; $i<count($sambaDomains); $i++ )
|
||||
|
|
|
@ -416,7 +416,7 @@ class sambaSamAccount extends baseModule {
|
|||
$this->noexpire = true;
|
||||
$this->nopwd = false;
|
||||
$this->deactivated = false;
|
||||
$sambaDomains = search_domains($_SESSION['config']->get_Suffix('domain'));
|
||||
$sambaDomains = search_domains();
|
||||
if (sizeof($sambaDomains) == 0) {
|
||||
StatusMessage("ERROR", _('No Samba 3 domains found in LDAP! Please create one first.'), '');
|
||||
return;
|
||||
|
@ -468,7 +468,7 @@ class sambaSamAccount extends baseModule {
|
|||
* it's psssible uidNumber has changed
|
||||
*/
|
||||
// Get Domain SID from name
|
||||
$sambaDomains = search_domains($_SESSION['config']->get_Suffix('domain'));
|
||||
$sambaDomains = search_domains();
|
||||
for ($i=0; $i<count($sambaDomains); $i++ ) {
|
||||
if ($this->attributes['sambaDomainName'][0] == $sambaDomains[$i]->name) {
|
||||
$SID = $sambaDomains[$i]->SID;
|
||||
|
@ -493,7 +493,7 @@ class sambaSamAccount extends baseModule {
|
|||
* @return array list of info/error messages
|
||||
*/
|
||||
function process_attributes(&$post) {
|
||||
$sambaDomains = search_domains($_SESSION['config']->get_Suffix('domain'));
|
||||
$sambaDomains = search_domains();
|
||||
if (sizeof($sambaDomains) == 0) {
|
||||
return array(array(array("ERROR", _('No Samba 3 domains found in LDAP! Please create one first.'))));
|
||||
}
|
||||
|
@ -739,7 +739,7 @@ class sambaSamAccount extends baseModule {
|
|||
*/
|
||||
function display_html_attributes(&$post) {
|
||||
// Get Domain SID from user SID
|
||||
$sambaDomains = search_domains($_SESSION['config']->get_Suffix('domain'));
|
||||
$sambaDomains = search_domains();
|
||||
if (sizeof($sambaDomains) == 0) {
|
||||
StatusMessage("ERROR", _('No Samba 3 domains found in LDAP! Please create one first.'), '');
|
||||
return;
|
||||
|
@ -1073,7 +1073,7 @@ class sambaSamAccount extends baseModule {
|
|||
2 => array('kind' => 'help', 'value' => 'workstations')
|
||||
);
|
||||
// domains
|
||||
$sambaDomains = search_domains($_SESSION['config']->get_Suffix('domain'));
|
||||
$sambaDomains = search_domains();
|
||||
$sambaDomainNames = array();
|
||||
for ($i = 0; $i < count($sambaDomains); $i++) {
|
||||
$sambaDomainNames[] = $sambaDomains[$i]->name;
|
||||
|
@ -1092,7 +1092,7 @@ class sambaSamAccount extends baseModule {
|
|||
}
|
||||
elseif ($this->get_scope() == 'host') {
|
||||
// domains
|
||||
$sambaDomains = search_domains($_SESSION['config']->get_Suffix('domain'));
|
||||
$sambaDomains = search_domains();
|
||||
$sambaDomainNames = array();
|
||||
for ($i = 0; $i < count($sambaDomains); $i++) {
|
||||
$sambaDomainNames[] = $sambaDomains[$i]->name;
|
||||
|
@ -1159,7 +1159,7 @@ class sambaSamAccount extends baseModule {
|
|||
// domain -> change SID
|
||||
if ($this->attributes['sambaSID'][0]) {
|
||||
if (isset($profile['sambaSamAccount_sambaDomainName'][0]) && ($profile['sambaSamAccount_sambaDomainName'][0] != "")) {
|
||||
$domains = search_domains($_SESSION['config']->get_Suffix('domain'));
|
||||
$domains = search_domains();
|
||||
$domSID = '';
|
||||
// find domain SID
|
||||
for ($i = 0; $i < sizeof($domains); $i++) {
|
||||
|
@ -1208,7 +1208,7 @@ class sambaSamAccount extends baseModule {
|
|||
function build_uploadAccounts($rawAccounts, $ids, &$partialAccounts) {
|
||||
$triggered_messages = array();
|
||||
// get list of Samba 3 domains
|
||||
$domains = search_domains($_SESSION['config']->get_Suffix('domain'));
|
||||
$domains = search_domains();
|
||||
// get list of Unix groups and their sambaSID + gidNumber
|
||||
$groups = $_SESSION['cache']->get_cache(array('cn', 'sambaSID', 'gidNumber'), 'posixGroup', 'group');
|
||||
$groups_k = array_keys($groups);
|
||||
|
|
|
@ -301,6 +301,8 @@ function get_icon( $dn )
|
|||
return 'nt_machine.png';
|
||||
if( in_array( 'sambaaccount', $object_classes ) )
|
||||
return 'nt_user.png';
|
||||
elseif( in_array( 'sambadomain', $object_classes ) )
|
||||
return 'smbDomain.png';
|
||||
elseif( in_array( 'person', $object_classes ) ||
|
||||
in_array( 'organizationalperson', $object_classes ) ||
|
||||
in_array( 'inetorgperson', $object_classes ) ||
|
||||
|
|
|
@ -0,0 +1,124 @@
|
|||
<?php
|
||||
/*
|
||||
$Id$
|
||||
|
||||
This code is part of LDAP Account Manager (http://www.sourceforge.net/projects/lam)
|
||||
Copyright (C) 2005 Roland Gruber
|
||||
|
||||
This program is free software; you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation; either version 2 of the License, or
|
||||
(at your option) any later version.
|
||||
|
||||
This program is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with this program; if not, write to the Free Software
|
||||
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
|
||||
*/
|
||||
|
||||
/**
|
||||
* This file is the interface to the different account types.
|
||||
*
|
||||
* @package types
|
||||
* @author Roland Gruber
|
||||
*/
|
||||
|
||||
/** parent class of account types */
|
||||
include_once("baseType.inc");
|
||||
/** parent class of list views */
|
||||
include_once("lists.inc");
|
||||
|
||||
|
||||
/**
|
||||
* This includes all type definitions.
|
||||
*/
|
||||
$typesINC_dirname = substr(__FILE__, 0, strlen(__FILE__) - 10) . "/types";
|
||||
$typesINC_dir = dir($typesINC_dirname);
|
||||
// get module names.
|
||||
while ($entry = $typesINC_dir->read())
|
||||
if ((substr($entry, strlen($entry) - 4, 4) == '.inc') && is_file($typesINC_dirname . '/'.$entry)) {
|
||||
include_once($typesINC_dirname . '/'.$entry);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Returns a list of available account types.
|
||||
*
|
||||
* @return array list of types
|
||||
*/
|
||||
function getTypes() {
|
||||
$dirname = substr(__FILE__, 0, strlen(__FILE__) - 10) . "/types";
|
||||
$dir = dir($dirname);
|
||||
$return = array();
|
||||
// get type names.
|
||||
while ($entry = $dir->read())
|
||||
if ((substr($entry, strlen($entry) - 4, 4) == '.inc') && is_file($dirname . '/'.$entry)) {
|
||||
$entry = substr($entry, 0, strpos($entry, '.'));
|
||||
$return[] = $entry;
|
||||
}
|
||||
return $return;
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the alias name of an account type.
|
||||
*
|
||||
* @param string $type type name
|
||||
* @return string type alias
|
||||
*/
|
||||
function getTypeAlias($type) {
|
||||
$obj = new $type();
|
||||
return $obj->getAlias();
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the description of an account type.
|
||||
*
|
||||
* @param string $type type name
|
||||
* @return string type description
|
||||
*/
|
||||
function getTypeDescription($type) {
|
||||
$obj = new $type();
|
||||
return $obj->getDescription();
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the class name for the list object.
|
||||
*
|
||||
* @param string $type account type
|
||||
* @return string class name
|
||||
*/
|
||||
function getListClassName($type) {
|
||||
$obj = new $type();
|
||||
return $obj->getListClassName();
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the default attribute list for an account type.
|
||||
* It is used as default value for the configuration editor.
|
||||
*
|
||||
* @param string $type account type
|
||||
* @return string attribute list
|
||||
*/
|
||||
function getDefaultListAttributes($type) {
|
||||
$obj = new $type();
|
||||
return $obj->getDefaultListAttributes();
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns a list of attributes which have a translated description.
|
||||
* This is used for the head row in the list view.
|
||||
*
|
||||
* @param string $type account type
|
||||
* @return array list of descriptions
|
||||
*/
|
||||
function getListAttributeDescriptions($type) {
|
||||
$obj = new $type();
|
||||
return $obj->getListAttributeDescriptions();
|
||||
}
|
||||
|
||||
?>
|
|
@ -0,0 +1,190 @@
|
|||
<?php
|
||||
/*
|
||||
$Id$
|
||||
|
||||
This code is part of LDAP Account Manager (http://www.sourceforge.net/projects/lam)
|
||||
Copyright (C) 2005 Roland Gruber
|
||||
|
||||
This program is free software; you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation; either version 2 of the License, or
|
||||
(at your option) any later version.
|
||||
|
||||
This program is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with this program; if not, write to the Free Software
|
||||
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
|
||||
*/
|
||||
|
||||
/**
|
||||
* The account type for group accounts (e.g. Unix and Samba).
|
||||
*
|
||||
* @package types
|
||||
* @author Roland Gruber
|
||||
*/
|
||||
|
||||
/**
|
||||
* The account type for group accounts (e.g. Unix and Samba).
|
||||
*/
|
||||
class group extends baseType {
|
||||
|
||||
/**
|
||||
* Returns the alias name of this account type.
|
||||
*
|
||||
* @return string alias name
|
||||
*/
|
||||
function getAlias() {
|
||||
return _("Groups");
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the description of this account type.
|
||||
*
|
||||
* @return string description
|
||||
*/
|
||||
function getDescription() {
|
||||
return _("Group accounts (e.g. Unix and Samba)");
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the class name for the list object.
|
||||
*
|
||||
* @return string class name
|
||||
*/
|
||||
function getListClassName() {
|
||||
return "lamGroupList";
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the default attribute list for this account type.
|
||||
*
|
||||
* @return string attribute list
|
||||
*/
|
||||
function getDefaultListAttributes() {
|
||||
return "#cn;#gidNumber;#memberUID;#description";
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns a list of attributes which have a translated description.
|
||||
* This is used for the head row in the list view.
|
||||
*
|
||||
* @return array list of descriptions
|
||||
*/
|
||||
function getListAttributeDescriptions() {
|
||||
return array (
|
||||
"cn" => _("Group name"),
|
||||
"gidnumber" => _("GID number"),
|
||||
"memberuid" => _("Group members"),
|
||||
"member" => _("Group member DNs"),
|
||||
"description" => _("Group description")
|
||||
);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* Generates the list view.
|
||||
*
|
||||
* @package lists
|
||||
* @author Roland Gruber
|
||||
*
|
||||
*/
|
||||
class lamGroupList extends lamList {
|
||||
|
||||
/**
|
||||
* Constructor
|
||||
*
|
||||
* @param string $type account type
|
||||
* @return lamList list object
|
||||
*/
|
||||
function lamGroupList($type) {
|
||||
parent::lamList($type);
|
||||
$this->labels = array(
|
||||
'nav' => _("%s group(s) found"),
|
||||
'error_noneFound' => _("No groups found!"),
|
||||
'newEntry' => _("New group"),
|
||||
'deleteEntry' => _("Delete group"),
|
||||
'createPDF' => _("Create PDF for selected group(s)"),
|
||||
'createPDFAll' => _("Create PDF for all groups"));
|
||||
}
|
||||
|
||||
/**
|
||||
* Prints the entry list
|
||||
*
|
||||
* @param array $info entries
|
||||
*/
|
||||
function listPrintTableBody($info) {
|
||||
// calculate which rows to show
|
||||
$table_begin = ($this->page - 1) * $this->maxPageEntries;
|
||||
if (($this->page * $this->maxPageEntries) > sizeof($info)) $table_end = sizeof($info);
|
||||
else $table_end = ($this->page * $this->maxPageEntries);
|
||||
// print account list
|
||||
for ($i = $table_begin; $i < $table_end; $i++) {
|
||||
echo("<tr class=\"" . $this->type . "list\" onMouseOver=\"list_over(this, '" . $info[$i]['LAM_ID'] . "', '" . $this->type . "')\"\n" .
|
||||
" onMouseOut=\"list_out(this, '" . $info[$i]['LAM_ID'] . "', '" . $this->type . "')\"\n" .
|
||||
" onClick=\"list_click(this, '" . $info[$i]['LAM_ID'] . "', '" . $this->type . "')\"\n" .
|
||||
" onDblClick=\"parent.frames[1].location.href='../account/edit.php?type=" . $this->type . "&DN=" . $info[$i]['dn'] . "'\">\n");
|
||||
if (isset($_GET['selectall'])) {
|
||||
echo " <td height=22 align=\"center\"><input onClick=\"list_click(this, '" . $info[$i]['LAM_ID'] . "', '" . $this->type . "')\"" .
|
||||
" type=\"checkbox\" checked name=\"" . $info[$i]['LAM_ID'] . "\"></td>\n";
|
||||
}
|
||||
else {
|
||||
echo " <td height=22 align=\"center\"><input onClick=\"list_click(this, '" . $info[$i]['LAM_ID'] . "', '" . $this->type . "')\"" .
|
||||
" type=\"checkbox\" name=\"" . $info[$i]['LAM_ID'] . "\"></td>\n";
|
||||
}
|
||||
echo (" <td align='center'><a href=\"../account/edit.php?type=" . $this->type . "&DN='" . $info[$i]['dn'] . "'\">" . _("Edit") . "</a></td>\n");
|
||||
for ($k = 0; $k < sizeof($this->attrArray); $k++) {
|
||||
echo ("<td>");
|
||||
// print all attribute entries seperated by "; "
|
||||
$attrName = strtolower($this->attrArray[$k]);
|
||||
if (isset($info[$i][$attrName]) && sizeof($info[$i][$attrName]) > 0) {
|
||||
// delete "count" entry
|
||||
unset($info[$i][$attrName]['count']);
|
||||
// generate links for group members
|
||||
if ($attrName == "memberuid") {
|
||||
// sort array
|
||||
sort($info[$i][$attrName]);
|
||||
// make a link for each member of the group
|
||||
$linklist = array();
|
||||
for ($d = 0; $d < sizeof($info[$i][$attrName]); $d++) {
|
||||
$user = $info[$i][$attrName][$d]; // user name
|
||||
$linklist[$d] = "<a href=\"userlink.php?user='" . $user . "' \">" . $user . "</a>";
|
||||
}
|
||||
echo implode("; ", $linklist);
|
||||
}
|
||||
// print all other attributes
|
||||
else {
|
||||
if (is_array($info[$i][$attrName])) {
|
||||
// sort array
|
||||
sort($info[$i][$attrName]);
|
||||
echo implode("; ", $info[$i][$attrName]);
|
||||
}
|
||||
else echo $info[$i][$attrName];
|
||||
}
|
||||
}
|
||||
echo ("</td>\n");
|
||||
}
|
||||
echo("</tr>\n");
|
||||
}
|
||||
// display select all link
|
||||
$colspan = sizeof($this->attrArray) + 1;
|
||||
echo "<tr class=\"" . $this->type . "list\">\n";
|
||||
echo "<td align=\"center\"><img src=\"../../graphics/select.png\" alt=\"select all\"></td>\n";
|
||||
echo "<td colspan=$colspan> <a href=\"list.php?type=" . $this->type . "&norefresh=y&page=" . $this->page .
|
||||
"&sort=" . $this->sortColumn . $this->filterText . "&selectall=yes\">" .
|
||||
"<font color=\"black\"><b>" . _("Select all") . "</b></font></a></td>\n";
|
||||
echo "</tr>\n";
|
||||
echo ("</table>");
|
||||
|
||||
echo ("<br>");
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
?>
|
|
@ -0,0 +1,121 @@
|
|||
<?php
|
||||
/*
|
||||
$Id$
|
||||
|
||||
This code is part of LDAP Account Manager (http://www.sourceforge.net/projects/lam)
|
||||
Copyright (C) 2005 Roland Gruber
|
||||
|
||||
This program is free software; you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation; either version 2 of the License, or
|
||||
(at your option) any later version.
|
||||
|
||||
This program is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with this program; if not, write to the Free Software
|
||||
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
|
||||
*/
|
||||
|
||||
/**
|
||||
* The account type for host accounts (e.g. Samba).
|
||||
*
|
||||
* @package types
|
||||
* @author Roland Gruber
|
||||
*/
|
||||
|
||||
/**
|
||||
* The account type for host accounts (e.g. Samba).
|
||||
*/
|
||||
class host extends baseType {
|
||||
|
||||
/**
|
||||
* Returns the alias name of this account type.
|
||||
*
|
||||
* @return string alias name
|
||||
*/
|
||||
function getAlias() {
|
||||
return _("Hosts");
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the description of this account type.
|
||||
*
|
||||
* @return string description
|
||||
*/
|
||||
function getDescription() {
|
||||
return _("Host accounts (e.g. Samba)");
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the class name for the list object.
|
||||
*
|
||||
* @return string class name
|
||||
*/
|
||||
function getListClassName() {
|
||||
return "lamHostList";
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the default attribute list for this account type.
|
||||
*
|
||||
* @return string attribute list
|
||||
*/
|
||||
function getDefaultListAttributes() {
|
||||
return "#cn;#description;#uidNumber;#gidNumber";
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns a list of attributes which have a translated description.
|
||||
* This is used for the head row in the list view.
|
||||
*
|
||||
* @return array list of descriptions
|
||||
*/
|
||||
function getListAttributeDescriptions() {
|
||||
return array (
|
||||
"uid" => _("Host name"),
|
||||
"cn" => _("Host name"),
|
||||
"rid" => _("RID (Windows UID)"),
|
||||
"description" => _("Host description"),
|
||||
"uidnumber" => _("UID number"),
|
||||
"gidnumber" => _("GID number")
|
||||
);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Generates the list view.
|
||||
*
|
||||
* @package lists
|
||||
* @author Roland Gruber
|
||||
*
|
||||
*/
|
||||
class lamHostList extends lamList {
|
||||
|
||||
/**
|
||||
* Constructor
|
||||
*
|
||||
* @param string $type account type
|
||||
* @return lamList list object
|
||||
*/
|
||||
function lamHostList($type) {
|
||||
parent::lamList($type);
|
||||
$this->labels = array(
|
||||
'nav' => _("%s host(s) found"),
|
||||
'error_noneFound' => _("No hosts found!"),
|
||||
'newEntry' => _("New host"),
|
||||
'deleteEntry' => _("Delete host"),
|
||||
'createPDF' => _("Create PDF for selected host(s)"),
|
||||
'createPDFAll' => _("Create PDF for all hosts"));
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
?>
|
|
@ -0,0 +1,117 @@
|
|||
<?php
|
||||
/*
|
||||
$Id$
|
||||
|
||||
This code is part of LDAP Account Manager (http://www.sourceforge.net/projects/lam)
|
||||
Copyright (C) 2005 Roland Gruber
|
||||
|
||||
This program is free software; you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation; either version 2 of the License, or
|
||||
(at your option) any later version.
|
||||
|
||||
This program is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with this program; if not, write to the Free Software
|
||||
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
|
||||
*/
|
||||
|
||||
/**
|
||||
* The account type for mail aliases.
|
||||
*
|
||||
* @package types
|
||||
* @author Roland Gruber
|
||||
*/
|
||||
|
||||
/**
|
||||
* The account type for mail aliases.
|
||||
*/
|
||||
class mailAlias extends baseType {
|
||||
|
||||
/**
|
||||
* Returns the alias name of this account type.
|
||||
*
|
||||
* @return string alias name
|
||||
*/
|
||||
function getAlias() {
|
||||
return _("Mail aliases");
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the description of this account type.
|
||||
*
|
||||
* @return string description
|
||||
*/
|
||||
function getDescription() {
|
||||
return _("Mailing aliases (e.g. NIS mail aliases)");
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the class name for the list object.
|
||||
*
|
||||
* @return string class name
|
||||
*/
|
||||
function getListClassName() {
|
||||
return "lamMailAliasList";
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the default attribute list for this account type.
|
||||
*
|
||||
* @return string attribute list
|
||||
*/
|
||||
function getDefaultListAttributes() {
|
||||
return "#cn;#rfc822MailMember";
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns a list of attributes which have a translated description.
|
||||
* This is used for the head row in the list view.
|
||||
*
|
||||
* @return array list of descriptions
|
||||
*/
|
||||
function getListAttributeDescriptions() {
|
||||
return array(
|
||||
"cn" => _("Alias name"),
|
||||
"rfc822MailMember" => _("Recipient list")
|
||||
);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Generates the list view.
|
||||
*
|
||||
* @package lists
|
||||
* @author Roland Gruber
|
||||
*
|
||||
*/
|
||||
class lamMailAliasList extends lamList {
|
||||
|
||||
/**
|
||||
* Constructor
|
||||
*
|
||||
* @param string $type account type
|
||||
* @return lamList list object
|
||||
*/
|
||||
function lamMailAliasList($type) {
|
||||
parent::lamList($type);
|
||||
$this->labels = array(
|
||||
'nav' => _("%s alias(es) found"),
|
||||
'error_noneFound' => _("No aliases found!"),
|
||||
'newEntry' => _("New alias"),
|
||||
'deleteEntry' => _("Delete alias"),
|
||||
'createPDF' => _("Create PDF for selected alias(es)"),
|
||||
'createPDFAll' => _("Create PDF for all aliases"));
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
?>
|
|
@ -0,0 +1,116 @@
|
|||
<?php
|
||||
/*
|
||||
$Id$
|
||||
|
||||
This code is part of LDAP Account Manager (http://www.sourceforge.net/projects/lam)
|
||||
Copyright (C) 2005 Roland Gruber
|
||||
|
||||
This program is free software; you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation; either version 2 of the License, or
|
||||
(at your option) any later version.
|
||||
|
||||
This program is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with this program; if not, write to the Free Software
|
||||
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
|
||||
*/
|
||||
|
||||
/**
|
||||
* The account type for Samba domains.
|
||||
*
|
||||
* @package types
|
||||
* @author Roland Gruber
|
||||
*/
|
||||
|
||||
/**
|
||||
* The account type for Samba domains.
|
||||
*/
|
||||
class smbDomain extends baseType {
|
||||
|
||||
/**
|
||||
* Returns the alias name of this account type.
|
||||
*
|
||||
* @return string alias name
|
||||
*/
|
||||
function getAlias() {
|
||||
return _("Samba domains");
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the description of this account type.
|
||||
*
|
||||
* @return string description
|
||||
*/
|
||||
function getDescription() {
|
||||
return _("Samba 3 domain entries");
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the class name for the list object.
|
||||
*
|
||||
* @return string class name
|
||||
*/
|
||||
function getListClassName() {
|
||||
return "lamSmbDomainList";
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the default attribute list for this account type.
|
||||
*
|
||||
* @return string attribute list
|
||||
*/
|
||||
function getDefaultListAttributes() {
|
||||
return "#sambaDomainName;#sambaSID";
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns a list of attributes which have a translated description.
|
||||
* This is used for the head row in the list view.
|
||||
*
|
||||
* @return array list of descriptions
|
||||
*/
|
||||
function getListAttributeDescriptions() {
|
||||
return array(
|
||||
"sambaSID" => _("Domain SID"),
|
||||
"sambaDomainName" => _("Domain name")
|
||||
);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Generates the list view.
|
||||
*
|
||||
* @package lists
|
||||
* @author Roland Gruber
|
||||
*
|
||||
*/
|
||||
class lamSmbDomainList extends lamList {
|
||||
|
||||
/**
|
||||
* Constructor
|
||||
*
|
||||
* @param string $type account type
|
||||
* @return lamList list object
|
||||
*/
|
||||
function lamSmbDomainList($type) {
|
||||
parent::lamList($type);
|
||||
$this->labels = array(
|
||||
'nav' => _("%s domain(s) found"),
|
||||
'error_noneFound' => _("No domains found!"),
|
||||
'newEntry' => _("New domain"),
|
||||
'deleteEntry' => _("Delete domain"),
|
||||
'createPDF' => _("Create PDF for selected domain(s)"),
|
||||
'createPDFAll' => _("Create PDF for all domains"));
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
?>
|
|
@ -0,0 +1,247 @@
|
|||
<?php
|
||||
/*
|
||||
$Id$
|
||||
|
||||
This code is part of LDAP Account Manager (http://www.sourceforge.net/projects/lam)
|
||||
Copyright (C) 2005 Roland Gruber
|
||||
|
||||
This program is free software; you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation; either version 2 of the License, or
|
||||
(at your option) any later version.
|
||||
|
||||
This program is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with this program; if not, write to the Free Software
|
||||
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
|
||||
*/
|
||||
|
||||
/**
|
||||
* The account type for user accounts (e.g. Unix, Samba and Kolab).
|
||||
*
|
||||
* @package types
|
||||
* @author Roland Gruber
|
||||
*/
|
||||
|
||||
/**
|
||||
* The account type for user accounts (e.g. Unix, Samba and Kolab).
|
||||
*/
|
||||
class user extends baseType {
|
||||
|
||||
/**
|
||||
* Returns the alias name of this account type.
|
||||
*
|
||||
* @return string alias name
|
||||
*/
|
||||
function getAlias() {
|
||||
return _("Users");
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the description of this account type.
|
||||
*
|
||||
* @return string description
|
||||
*/
|
||||
function getDescription() {
|
||||
return _("User accounts (e.g. Unix, Samba and Kolab)");
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the class name for the list object.
|
||||
*
|
||||
* @return string class name
|
||||
*/
|
||||
function getListClassName() {
|
||||
return "lamUserList";
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the default attribute list for this account type.
|
||||
*
|
||||
* @return string attribute list
|
||||
*/
|
||||
function getDefaultListAttributes() {
|
||||
return "#uid;#givenName;#sn;#uidNumber;#gidNumber";
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns a list of attributes which have a translated description.
|
||||
* This is used for the head row in the list view.
|
||||
*
|
||||
* @return array list of descriptions
|
||||
*/
|
||||
function getListAttributeDescriptions() {
|
||||
return array (
|
||||
"uid" => _("User ID"),
|
||||
"uidnumber" => _("UID number"),
|
||||
"gidnumber" => _("GID number"),
|
||||
"cn" => _("User name"),
|
||||
"host" => _("Allowed hosts"),
|
||||
"givenname" => _("First name"),
|
||||
"sn" => _("Last name"),
|
||||
"homedirectory" => _("Home directory"),
|
||||
"loginshell" => _("Login shell"),
|
||||
"mail" => _("E-Mail"),
|
||||
"gecos" => _("Description")
|
||||
);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* Generates the list view.
|
||||
*
|
||||
* @package lists
|
||||
* @author Roland Gruber
|
||||
*
|
||||
*/
|
||||
class lamUserList extends lamList {
|
||||
|
||||
/** Controls if GID number is translated to group name */
|
||||
var $trans_primary = false;
|
||||
|
||||
/** translates GID to group name */
|
||||
var $trans_primary_hash = array();
|
||||
|
||||
/**
|
||||
* Constructor
|
||||
*
|
||||
* @param string $type account type
|
||||
* @return lamList list object
|
||||
*/
|
||||
function lamUserList($type) {
|
||||
parent::lamList($type);
|
||||
$this->labels = array(
|
||||
'nav' => _("%s user(s) found"),
|
||||
'error_noneFound' => _("No users found!"),
|
||||
'newEntry' => _("New user"),
|
||||
'deleteEntry' => _("Delete user"),
|
||||
'createPDF' => _("Create PDF for selected user(s)"),
|
||||
'createPDFAll' => _("Create PDF for all users"));
|
||||
}
|
||||
|
||||
/**
|
||||
* Manages all POST actions (e.g. button pressed) for the account lists.
|
||||
*/
|
||||
function listDoPost() {
|
||||
parent::listDoPost();
|
||||
// check if primary group should be translated
|
||||
if (isset($_POST['apply_trans_primary'])) {
|
||||
$this->trans_primary = $_POST['trans_primary'];
|
||||
}
|
||||
// generate hash table for group translation
|
||||
if ($this->trans_primary == "on" && ($this->refresh || (sizeof($this->trans_primary_hash) == 0))) {
|
||||
$this->trans_primary_hash = array();
|
||||
$grp_suffix = $_SESSION['config']->get_Suffix('group');
|
||||
$filter = "objectClass=posixGroup";
|
||||
$attrs = array("cn", "gidNumber");
|
||||
$sr = @ldap_search($_SESSION["ldap"]->server(), $grp_suffix, $filter, $attrs);
|
||||
if ($sr) {
|
||||
$info = @ldap_get_entries($_SESSION["ldap"]->server(), $sr);
|
||||
unset($info['count']); // delete count entry
|
||||
for ($i = 0; $i < sizeof($info); $i++) {
|
||||
$this->trans_primary_hash[$info[$i]['gidnumber'][0]] = $info[$i]['cn'][0];
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Prints the entry list
|
||||
*
|
||||
* @param array $info entries
|
||||
*/
|
||||
function listPrintTableBody($info) {
|
||||
// calculate which rows to show
|
||||
$table_begin = ($this->page - 1) * $this->maxPageEntries;
|
||||
if (($this->page * $this->maxPageEntries) > sizeof($info)) $table_end = sizeof($info);
|
||||
else $table_end = ($this->page * $this->maxPageEntries);
|
||||
// translate GIDs and resort array if selected
|
||||
if ($this->trans_primary == "on") {
|
||||
// translate GIDs
|
||||
for ($i = 0; $i < sizeof($info); $i++) {
|
||||
if (isset($this->trans_primary_hash[$info[$i]['gidnumber'][0]])) {
|
||||
$info[$i]['gidnumber'][0] = $this->trans_primary_hash[$info[$i]['gidnumber'][0]];
|
||||
}
|
||||
}
|
||||
// resort if needed
|
||||
if ($this->sortColumn == "gidnumber") {
|
||||
$info = $this->listSort($info);
|
||||
}
|
||||
}
|
||||
// print account list
|
||||
for ($i = $table_begin; $i < $table_end; $i++) {
|
||||
echo("<tr class=\"" . $this->type . "list\" onMouseOver=\"list_over(this, '" . $info[$i]['LAM_ID'] . "', '" . $this->type . "')\"\n" .
|
||||
" onMouseOut=\"list_out(this, '" . $info[$i]['LAM_ID'] . "', '" . $this->type . "')\"\n" .
|
||||
" onClick=\"list_click(this, '" . $info[$i]['LAM_ID'] . "', '" . $this->type . "')\"\n" .
|
||||
" onDblClick=\"parent.frames[1].location.href='../account/edit.php?type=" . $this->type . "&DN=" . $info[$i]['dn'] . "'\">\n");
|
||||
if (isset($_GET['selectall'])) {
|
||||
echo " <td height=22 align=\"center\"><input onClick=\"list_click(this, '" . $info[$i]['LAM_ID'] . "', '" . $this->type . "')\"" .
|
||||
" type=\"checkbox\" checked name=\"" . $info[$i]['LAM_ID'] . "\"></td>\n";
|
||||
}
|
||||
else {
|
||||
echo " <td height=22 align=\"center\"><input onClick=\"list_click(this, '" . $info[$i]['LAM_ID'] . "', '" . $this->type . "')\"" .
|
||||
" type=\"checkbox\" name=\"" . $info[$i]['LAM_ID'] . "\"></td>\n";
|
||||
}
|
||||
echo (" <td align='center'><a href=\"../account/edit.php?type=" . $this->type . "&DN='" . $info[$i]['dn'] . "'\">" . _("Edit") . "</a></td>\n");
|
||||
for ($k = 0; $k < sizeof($this->attrArray); $k++) {
|
||||
echo ("<td>");
|
||||
// print all attribute entries seperated by "; "
|
||||
$attrName = strtolower($this->attrArray[$k]);
|
||||
if (isset($info[$i][$attrName]) && sizeof($info[$i][$attrName]) > 0) {
|
||||
// delete "count" entry
|
||||
unset($info[$i][$attrName]['count']);
|
||||
if (is_array($info[$i][$attrName])) {
|
||||
// sort array
|
||||
sort($info[$i][$attrName]);
|
||||
echo implode("; ", $info[$i][$attrName]);
|
||||
}
|
||||
else echo $info[$i][$attrName];
|
||||
}
|
||||
echo ("</td>\n");
|
||||
}
|
||||
echo("</tr>\n");
|
||||
}
|
||||
// display select all link
|
||||
$colspan = sizeof($this->attrArray) + 1;
|
||||
echo "<tr class=\"" . $this->type . "list\">\n";
|
||||
echo "<td align=\"center\"><img src=\"../../graphics/select.png\" alt=\"select all\"></td>\n";
|
||||
echo "<td colspan=$colspan> <a href=\"list.php?type=" . $this->type . "&norefresh=y&page=" . $this->page .
|
||||
"&sort=" . $this->sortColumn . $this->filterText . "&selectall=yes\">" .
|
||||
"<font color=\"black\"><b>" . _("Select all") . "</b></font></a></td>\n";
|
||||
echo "</tr>\n";
|
||||
echo ("</table>");
|
||||
|
||||
echo ("<br>");
|
||||
}
|
||||
|
||||
/**
|
||||
* Prints the create, delete and PDF buttons.
|
||||
*
|
||||
* @param boolean $createOnly true if only the create button should be displayed
|
||||
*/
|
||||
function listPrintButtons($createOnly) {
|
||||
// show translate GID to group name box if there is a column with gidnumber
|
||||
if (in_array("gidnumber", $this->attrArray)) {
|
||||
echo "<p align=\"left\">\n";
|
||||
echo "<b>" . _("Translate GID number to group name") . ": </b>";
|
||||
if ($this->trans_primary == "on") {
|
||||
echo "<input type=\"checkbox\" name=\"trans_primary\" checked>";
|
||||
}
|
||||
else echo "<input type=\"checkbox\" name=\"trans_primary\">";
|
||||
echo (" <input type=\"submit\" name=\"apply_trans_primary\" value=\"" . _("Apply") . "\">");
|
||||
echo "</p>\n";
|
||||
}
|
||||
|
||||
echo ("<p> </p>\n");
|
||||
parent::listPrintButtons($createOnly);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
?>
|
|
@ -79,253 +79,8 @@ legend {
|
|||
color:#007a3b;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* style for userlist.php
|
||||
*
|
||||
*/
|
||||
|
||||
/* table preferences */
|
||||
table.userlist {
|
||||
border-width:1px;
|
||||
border-style:solid;
|
||||
border-color:#9b8523;
|
||||
}
|
||||
|
||||
/* color of entry rows */
|
||||
tr.userlist {
|
||||
background-color:#fffde2;
|
||||
}
|
||||
|
||||
/* color of head row */
|
||||
tr.userlist-head {
|
||||
background-color:#fff2a3;
|
||||
font-weight:bold;
|
||||
}
|
||||
|
||||
/* color of rows on mouseOver */
|
||||
tr.userlist-over {
|
||||
background-color:#ccccff;
|
||||
}
|
||||
|
||||
/* color of checked rows */
|
||||
tr.userlist-checked {
|
||||
background-color:#f27c71;
|
||||
}
|
||||
|
||||
/* color for active page digit */
|
||||
td.usernav-activepage {
|
||||
color:red;
|
||||
}
|
||||
|
||||
/* style of navigation bar */
|
||||
td.usernav {
|
||||
color:#AAAAAA;
|
||||
}
|
||||
|
||||
table.usernav {
|
||||
background-color:#fff2a3;
|
||||
border-width:1px;
|
||||
border-style:solid;
|
||||
border-color:#9b8523;
|
||||
}
|
||||
|
||||
td.usernav-text {
|
||||
color:green;
|
||||
font-family:Verdana,sans-serif;
|
||||
font-size:12px;
|
||||
}
|
||||
|
||||
/* style of active column */
|
||||
th.userlist-sort {
|
||||
background-color:#fffde2;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* table style for grouplist.php
|
||||
*
|
||||
*/
|
||||
|
||||
/* navigation bar */
|
||||
table.groupnav {
|
||||
background-color:#a8c3ff;
|
||||
border-width:1px;
|
||||
border-style:solid;
|
||||
border-color:#7167bf;
|
||||
}
|
||||
|
||||
/* text in navigation bar */
|
||||
td.groupnav-text {
|
||||
color:green;
|
||||
font-family:Verdana,sans-serif;
|
||||
font-size:12px;
|
||||
}
|
||||
|
||||
/* color for active page digit */
|
||||
td.groupnav-activepage {
|
||||
color:red;
|
||||
}
|
||||
|
||||
/* table preferences */
|
||||
table.grouplist {
|
||||
border-width:1px;
|
||||
border-style:solid;
|
||||
border-color:#7167bf;
|
||||
}
|
||||
|
||||
/* color of entry rows */
|
||||
tr.grouplist {
|
||||
background-color:#d6e3ff;
|
||||
}
|
||||
|
||||
/* color of head row */
|
||||
tr.grouplist-head {
|
||||
background-color:#a8c3ff;
|
||||
}
|
||||
|
||||
/* color of sorted column in head row */
|
||||
th.grouplist-sort {
|
||||
background-color:#d6e3ff;
|
||||
}
|
||||
|
||||
/* color of rows on mouseOver */
|
||||
tr.grouplist-over {
|
||||
background-color:#C7E7C7;
|
||||
}
|
||||
|
||||
/* color of checked rows */
|
||||
tr.grouplist-checked {
|
||||
background-color:#f27c71;
|
||||
}
|
||||
|
||||
/**
|
||||
* table style for hostlist.php
|
||||
*
|
||||
*/
|
||||
|
||||
/* */
|
||||
table.hostnav {
|
||||
background-color:#ffc4ba;
|
||||
border-width:1px;
|
||||
border-style:solid;
|
||||
border-color:#911a1a;
|
||||
}
|
||||
|
||||
/* text in navigation bar */
|
||||
td.hostnav-text {
|
||||
color:green;
|
||||
font-family:Verdana,sans-serif;
|
||||
font-size:12px;
|
||||
}
|
||||
|
||||
/* color for active page digit */
|
||||
td.hostnav-activepage {
|
||||
color:red;
|
||||
}
|
||||
|
||||
/* table preferences */
|
||||
table.hostlist {
|
||||
border-width:1px;
|
||||
border-style:solid;
|
||||
border-color:#911a1a;
|
||||
}
|
||||
|
||||
/* color of entry rows */
|
||||
tr.hostlist {
|
||||
background-color:#ffe2dd;
|
||||
}
|
||||
|
||||
/* color of head row */
|
||||
tr.hostlist-head {
|
||||
background-color:#ffc4ba;
|
||||
}
|
||||
|
||||
/* color of sorted column in head row */
|
||||
th.hostlist-sort {
|
||||
background-color:#ffe2dd;
|
||||
}
|
||||
|
||||
/* color of rows on mouseOver */
|
||||
tr.hostlist-over {
|
||||
background-color:#ffe265;
|
||||
}
|
||||
|
||||
/* color of checked rows */
|
||||
tr.hostlist-checked {
|
||||
background-color:#f27c71;
|
||||
}
|
||||
|
||||
/**
|
||||
* table style for domainlist.php
|
||||
*
|
||||
*/
|
||||
|
||||
/* */
|
||||
table.domainnav {
|
||||
background-color:#a8ddbf;
|
||||
border-width:1px;
|
||||
border-style:solid;
|
||||
border-color:#1d993e;
|
||||
}
|
||||
|
||||
/* text in navigation bar */
|
||||
td.domainnav-text {
|
||||
color:green;
|
||||
font-family:Verdana,sans-serif;
|
||||
font-size:12px;
|
||||
}
|
||||
|
||||
/* color for active page digit */
|
||||
td.domainnav-activepage {
|
||||
color:red;
|
||||
}
|
||||
|
||||
/* table preferences */
|
||||
table.domainlist {
|
||||
border-width:1px;
|
||||
border-style:solid;
|
||||
border-color:#1d993e;
|
||||
}
|
||||
|
||||
/* color of entry rows */
|
||||
tr.domainlist {
|
||||
background-color:#c9ddd2;
|
||||
}
|
||||
|
||||
/* color of head row */
|
||||
tr.domainlist-head {
|
||||
background-color:#a8ddbf;
|
||||
}
|
||||
|
||||
/* color of sorted column in head row */
|
||||
th.domainlist-sort {
|
||||
background-color:#c9ddd2;
|
||||
}
|
||||
|
||||
/* color of rows on mouseOver */
|
||||
tr.domainlist-over {
|
||||
background-color:#ffe265;
|
||||
}
|
||||
|
||||
/* color of checked rows */
|
||||
tr.domainlist-checked {
|
||||
background-color:#f27c71;
|
||||
}
|
||||
|
||||
/**
|
||||
* style for domain.php
|
||||
*
|
||||
*/
|
||||
|
||||
/* fieldset and legend */
|
||||
|
||||
fieldset.domedit {
|
||||
background-color:#c9ddd2;
|
||||
}
|
||||
|
||||
legend.domedit {
|
||||
color:blue;
|
||||
fieldset fieldset legend {
|
||||
color:black;
|
||||
}
|
||||
|
||||
|
||||
|
@ -437,83 +192,6 @@ p.statusError {
|
|||
margin-right:35px;
|
||||
}
|
||||
|
||||
/**
|
||||
* table style for groupedit.php
|
||||
*
|
||||
*/
|
||||
|
||||
fieldset.groupedit {
|
||||
background-color:#d6e3ff;
|
||||
}
|
||||
|
||||
fieldset.groupedit legend {
|
||||
color:blue;
|
||||
}
|
||||
|
||||
fieldset.groupedit fieldset {
|
||||
background-color:#d6e3ff;
|
||||
}
|
||||
|
||||
fieldset.groupedit fieldset fieldset {
|
||||
background-color:#d6e3ff;
|
||||
}
|
||||
|
||||
fieldset.groupedit select {
|
||||
background-color:#a8c3ff;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* table style for hostedit.php
|
||||
*
|
||||
*/
|
||||
|
||||
fieldset.hostedit {
|
||||
background-color:#ffe2dd;
|
||||
}
|
||||
|
||||
fieldset.hostedit legend {
|
||||
color:blue;
|
||||
}
|
||||
|
||||
fieldset.hostedit fieldset {
|
||||
background-color:#ffe2dd;
|
||||
}
|
||||
|
||||
fieldset.hostedit fieldset fieldset {
|
||||
background-color:#ffe2dd;
|
||||
}
|
||||
|
||||
fieldset.hostedit select {
|
||||
background-color:#ffc4ba;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* table style for useredit.php
|
||||
*
|
||||
*/
|
||||
|
||||
fieldset.useredit {
|
||||
background-color:#fff2a3;
|
||||
}
|
||||
|
||||
fieldset.useredit legend {
|
||||
color:blue;
|
||||
}
|
||||
|
||||
fieldset.useredit fieldset {
|
||||
background-color:#fff2a3;
|
||||
}
|
||||
|
||||
fieldset.useredit fieldset fieldset {
|
||||
background-color:#fff2a3;
|
||||
}
|
||||
|
||||
fieldset.useredit select {
|
||||
background-color:#fffde2;
|
||||
}
|
||||
|
||||
|
||||
/* schema browser */
|
||||
|
||||
|
|
|
@ -0,0 +1,100 @@
|
|||
/*
|
||||
$Id$
|
||||
|
||||
This code is part of LDAP Account Manager (http://www.sourceforge.net/projects/lam)
|
||||
Copyright (C) 2005-2006 Roland Gruber
|
||||
|
||||
This program is free software; you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation; either version 2 of the License, or
|
||||
(at your option) any later version.
|
||||
|
||||
This program is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License for more detaexils.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with this program; if not, write to the Free Software
|
||||
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
|
||||
*/
|
||||
|
||||
|
||||
/**
|
||||
* style definition for group accounts
|
||||
*/
|
||||
|
||||
|
||||
/* navigation bar */
|
||||
table.groupnav {
|
||||
background-color:#a8c3ff;
|
||||
border-width:1px;
|
||||
border-style:solid;
|
||||
border-color:#7167bf;
|
||||
}
|
||||
|
||||
/* text in navigation bar */
|
||||
td.groupnav-text {
|
||||
color:green;
|
||||
font-family:Verdana,sans-serif;
|
||||
font-size:12px;
|
||||
}
|
||||
|
||||
/* color for active page digit */
|
||||
td.groupnav-activepage {
|
||||
color:red;
|
||||
}
|
||||
|
||||
/* table preferences */
|
||||
table.grouplist {
|
||||
border-width:1px;
|
||||
border-style:solid;
|
||||
border-color:#7167bf;
|
||||
}
|
||||
|
||||
/* color of entry rows */
|
||||
tr.grouplist {
|
||||
background-color:#d6e3ff;
|
||||
}
|
||||
|
||||
/* color of head row */
|
||||
tr.grouplist-head {
|
||||
background-color:#a8c3ff;
|
||||
}
|
||||
|
||||
/* color of sorted column in head row */
|
||||
th.grouplist-sort {
|
||||
background-color:#d6e3ff;
|
||||
}
|
||||
|
||||
/* color of rows on mouseOver */
|
||||
tr.grouplist-over {
|
||||
background-color:#C7E7C7;
|
||||
}
|
||||
|
||||
/* color of checked rows */
|
||||
tr.grouplist-checked {
|
||||
background-color:#f27c71;
|
||||
}
|
||||
|
||||
fieldset.groupedit {
|
||||
background-color:#d6e3ff;
|
||||
}
|
||||
|
||||
fieldset.groupedit legend {
|
||||
color:blue;
|
||||
}
|
||||
|
||||
fieldset.groupedit fieldset {
|
||||
background-color:#d6e3ff;
|
||||
}
|
||||
|
||||
fieldset.groupedit fieldset fieldset {
|
||||
background-color:#d6e3ff;
|
||||
}
|
||||
|
||||
fieldset.groupedit select {
|
||||
background-color:#a8c3ff;
|
||||
}
|
||||
|
|
@ -0,0 +1,100 @@
|
|||
/*
|
||||
$Id$
|
||||
|
||||
This code is part of LDAP Account Manager (http://www.sourceforge.net/projects/lam)
|
||||
Copyright (C) 2005-2006 Roland Gruber
|
||||
|
||||
This program is free software; you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation; either version 2 of the License, or
|
||||
(at your option) any later version.
|
||||
|
||||
This program is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License for more detaexils.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with this program; if not, write to the Free Software
|
||||
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
|
||||
*/
|
||||
|
||||
|
||||
/**
|
||||
* style definition for host accounts
|
||||
*
|
||||
*/
|
||||
|
||||
/* */
|
||||
table.hostnav {
|
||||
background-color:#ffc4ba;
|
||||
border-width:1px;
|
||||
border-style:solid;
|
||||
border-color:#911a1a;
|
||||
}
|
||||
|
||||
/* text in navigation bar */
|
||||
td.hostnav-text {
|
||||
color:green;
|
||||
font-family:Verdana,sans-serif;
|
||||
font-size:12px;
|
||||
}
|
||||
|
||||
/* color for active page digit */
|
||||
td.hostnav-activepage {
|
||||
color:red;
|
||||
}
|
||||
|
||||
/* table preferences */
|
||||
table.hostlist {
|
||||
border-width:1px;
|
||||
border-style:solid;
|
||||
border-color:#911a1a;
|
||||
}
|
||||
|
||||
/* color of entry rows */
|
||||
tr.hostlist {
|
||||
background-color:#ffe2dd;
|
||||
}
|
||||
|
||||
/* color of head row */
|
||||
tr.hostlist-head {
|
||||
background-color:#ffc4ba;
|
||||
}
|
||||
|
||||
/* color of sorted column in head row */
|
||||
th.hostlist-sort {
|
||||
background-color:#ffe2dd;
|
||||
}
|
||||
|
||||
/* color of rows on mouseOver */
|
||||
tr.hostlist-over {
|
||||
background-color:#ffe265;
|
||||
}
|
||||
|
||||
/* color of checked rows */
|
||||
tr.hostlist-checked {
|
||||
background-color:#f27c71;
|
||||
}
|
||||
|
||||
fieldset.hostedit {
|
||||
background-color:#ffe2dd;
|
||||
}
|
||||
|
||||
fieldset.hostedit legend {
|
||||
color:blue;
|
||||
}
|
||||
|
||||
fieldset.hostedit fieldset {
|
||||
background-color:#ffe2dd;
|
||||
}
|
||||
|
||||
fieldset.hostedit fieldset fieldset {
|
||||
background-color:#ffe2dd;
|
||||
}
|
||||
|
||||
fieldset.hostedit select {
|
||||
background-color:#ffc4ba;
|
||||
}
|
||||
|
|
@ -0,0 +1,100 @@
|
|||
/*
|
||||
$Id$
|
||||
|
||||
This code is part of LDAP Account Manager (http://www.sourceforge.net/projects/lam)
|
||||
Copyright (C) 2005-2006 Roland Gruber
|
||||
|
||||
This program is free software; you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation; either version 2 of the License, or
|
||||
(at your option) any later version.
|
||||
|
||||
This program is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License for more detaexils.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with this program; if not, write to the Free Software
|
||||
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
|
||||
*/
|
||||
|
||||
|
||||
/**
|
||||
* style definition for mailing list accounts
|
||||
*/
|
||||
|
||||
|
||||
/* navigation bar */
|
||||
table.mailAliasnav {
|
||||
background-color:#ffe27f;
|
||||
border-width:1px;
|
||||
border-style:solid;
|
||||
border-color:#af8800;
|
||||
}
|
||||
|
||||
/* text in navigation bar */
|
||||
td.mailAliasnav-text {
|
||||
color:green;
|
||||
font-family:Verdana,sans-serif;
|
||||
font-size:12px;
|
||||
}
|
||||
|
||||
/* color for active page digit */
|
||||
td.mailAliasnav-activepage {
|
||||
color:red;
|
||||
}
|
||||
|
||||
/* table preferences */
|
||||
table.mailAliaslist {
|
||||
border-width:1px;
|
||||
border-style:solid;
|
||||
border-color:#af8800;
|
||||
}
|
||||
|
||||
/* color of entry rows */
|
||||
tr.mailAliaslist {
|
||||
background-color:#fff3c8;
|
||||
}
|
||||
|
||||
/* color of head row */
|
||||
tr.mailAliaslist-head {
|
||||
background-color:#ffe27f;
|
||||
}
|
||||
|
||||
/* color of sorted column in head row */
|
||||
th.mailAliaslist-sort {
|
||||
background-color:#fff3c8;
|
||||
}
|
||||
|
||||
/* color of rows on mouseOver */
|
||||
tr.mailAliaslist-over {
|
||||
background-color:#d6e3ff;
|
||||
}
|
||||
|
||||
/* color of checked rows */
|
||||
tr.mailAliaslist-checked {
|
||||
background-color:#f27c71;
|
||||
}
|
||||
|
||||
fieldset.mailAliasedit {
|
||||
background-color:#fff3c8;
|
||||
}
|
||||
|
||||
fieldset.mailAliasedit legend {
|
||||
color:blue;
|
||||
}
|
||||
|
||||
fieldset.mailAliasedit fieldset {
|
||||
background-color:#fff3c8;
|
||||
}
|
||||
|
||||
fieldset.mailAliasedit fieldset fieldset {
|
||||
background-color:#fff3c8;
|
||||
}
|
||||
|
||||
fieldset.mailAliasedit select {
|
||||
background-color:#ffe27f;
|
||||
}
|
||||
|
|
@ -0,0 +1,100 @@
|
|||
/*
|
||||
$Id$
|
||||
|
||||
This code is part of LDAP Account Manager (http://www.sourceforge.net/projects/lam)
|
||||
Copyright (C) 2005-2006 Roland Gruber
|
||||
|
||||
This program is free software; you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation; either version 2 of the License, or
|
||||
(at your option) any later version.
|
||||
|
||||
This program is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License for more detaexils.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with this program; if not, write to the Free Software
|
||||
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
|
||||
*/
|
||||
|
||||
|
||||
/**
|
||||
* style definition for smbDomain accounts
|
||||
*
|
||||
*/
|
||||
|
||||
/* */
|
||||
table.smbDomainnav {
|
||||
background-color:#a8ddbf;
|
||||
border-width:1px;
|
||||
border-style:solid;
|
||||
border-color:#1d993e;
|
||||
}
|
||||
|
||||
/* text in navigation bar */
|
||||
td.smbDomainnav-text {
|
||||
color:green;
|
||||
font-family:Verdana,sans-serif;
|
||||
font-size:12px;
|
||||
}
|
||||
|
||||
/* color for active page digit */
|
||||
td.smbDomainnav-activepage {
|
||||
color:red;
|
||||
}
|
||||
|
||||
/* table preferences */
|
||||
table.smbDomainlist {
|
||||
border-width:1px;
|
||||
border-style:solid;
|
||||
border-color:#1d993e;
|
||||
}
|
||||
|
||||
/* color of entry rows */
|
||||
tr.smbDomainlist {
|
||||
background-color:#c9ddd2;
|
||||
}
|
||||
|
||||
/* color of head row */
|
||||
tr.smbDomainlist-head {
|
||||
background-color:#a8ddbf;
|
||||
}
|
||||
|
||||
/* color of sorted column in head row */
|
||||
th.smbDomainlist-sort {
|
||||
background-color:#c9ddd2;
|
||||
}
|
||||
|
||||
/* color of rows on mouseOver */
|
||||
tr.smbDomainlist-over {
|
||||
background-color:#ffe265;
|
||||
}
|
||||
|
||||
/* color of checked rows */
|
||||
tr.smbDomainlist-checked {
|
||||
background-color:#f27c71;
|
||||
}
|
||||
|
||||
|
||||
fieldset.smbDomainedit {
|
||||
background-color:#c9ddd2;
|
||||
}
|
||||
|
||||
fieldset.smbDomainedit legend {
|
||||
color:blue;
|
||||
}
|
||||
|
||||
fieldset.smbDomainedit fieldset {
|
||||
background-color:#c9ddd2;
|
||||
}
|
||||
|
||||
fieldset.smbDomainedit fieldset fieldset {
|
||||
background-color:#c9ddd2;
|
||||
}
|
||||
|
||||
fieldset.smbDomainedit select {
|
||||
background-color:#a8ddbf;
|
||||
}
|
|
@ -0,0 +1,119 @@
|
|||
/*
|
||||
$Id$
|
||||
|
||||
This code is part of LDAP Account Manager (http://www.sourceforge.net/projects/lam)
|
||||
Copyright (C) 2005-2006 Roland Gruber
|
||||
|
||||
This program is free software; you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation; either version 2 of the License, or
|
||||
(at your option) any later version.
|
||||
|
||||
This program is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License for more detaexils.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with this program; if not, write to the Free Software
|
||||
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
|
||||
*/
|
||||
|
||||
|
||||
/**
|
||||
* style definition for user accounts
|
||||
*/
|
||||
|
||||
/**
|
||||
* Preferences for the list view and some other pages which have no own definitions (e.g. profile editor).
|
||||
*/
|
||||
|
||||
/* main table of account list */
|
||||
table.userlist {
|
||||
border-width:1px;
|
||||
border-style:solid;
|
||||
border-color:#9b8523;
|
||||
}
|
||||
|
||||
/* color of entry rows */
|
||||
tr.userlist {
|
||||
background-color:#fffde2;
|
||||
}
|
||||
|
||||
/* color of head row */
|
||||
tr.userlist-head {
|
||||
background-color:#fff2a3;
|
||||
font-weight:bold;
|
||||
}
|
||||
|
||||
/* color of rows on mouseOver */
|
||||
tr.userlist-over {
|
||||
background-color:#ccccff;
|
||||
}
|
||||
|
||||
/* color of checked rows */
|
||||
tr.userlist-checked {
|
||||
background-color:#f27c71;
|
||||
}
|
||||
|
||||
/* color of sorted column */
|
||||
th.userlist-sort {
|
||||
background-color:#fffde2;
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
/* style of navigation bar */
|
||||
table.usernav {
|
||||
background-color:#fff2a3;
|
||||
border-width:1px;
|
||||
border-style:solid;
|
||||
border-color:#9b8523;
|
||||
}
|
||||
|
||||
/* text area in the center, e.g. "100 object(s) found" */
|
||||
td.usernav-text {
|
||||
color:green;
|
||||
font-family:Verdana,sans-serif;
|
||||
font-size:12px;
|
||||
}
|
||||
|
||||
/* color for active page number */
|
||||
td.usernav-activepage {
|
||||
color:red;
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
/* account pages */
|
||||
|
||||
/* main fieldset */
|
||||
fieldset.useredit {
|
||||
background-color:#fff2a3;
|
||||
}
|
||||
|
||||
/* legend of main fieldset */
|
||||
fieldset.useredit legend {
|
||||
color:blue;
|
||||
}
|
||||
|
||||
/* subfieldset */
|
||||
fieldset.useredit fieldset {
|
||||
background-color:#fff2a3;
|
||||
}
|
||||
|
||||
/* subsubfieldset */
|
||||
fieldset.useredit fieldset fieldset {
|
||||
background-color:#fff2a3;
|
||||
}
|
||||
|
||||
/* select boxes */
|
||||
fieldset.useredit select {
|
||||
background-color:#fffde2;
|
||||
}
|
||||
|
||||
|
||||
|
|
@ -42,22 +42,10 @@ session_save_path("../../sess");
|
|||
setlanguage();
|
||||
|
||||
// remove settings from session
|
||||
unset($_SESSION['conf_passwd']);
|
||||
unset($_SESSION['conf_passwd1']);
|
||||
unset($_SESSION['conf_passwd2']);
|
||||
unset($_SESSION['conf_serverurl']);
|
||||
unset($_SESSION['conf_admins']);
|
||||
unset($_SESSION['conf_suffusers']);
|
||||
unset($_SESSION['conf_suffgroups']);
|
||||
unset($_SESSION['conf_suffhosts']);
|
||||
unset($_SESSION['conf_usrlstattr']);
|
||||
unset($_SESSION['conf_grplstattr']);
|
||||
unset($_SESSION['conf_hstlstattr']);
|
||||
unset($_SESSION['conf_maxlistentries']);
|
||||
unset($_SESSION['conf_lang']);
|
||||
unset($_SESSION['conf_scriptpath']);
|
||||
unset($_SESSION['conf_scriptserver']);
|
||||
unset($_SESSION['conf_filename']);
|
||||
$sessionKeys = array_keys($_SESSION);
|
||||
for ($i = 0; $i < sizeof($sessionKeys); $i++) {
|
||||
if (substr($sessionKeys[$i], 0, 5) == "conf_") unset($_SESSION[$sessionKeys[$i]]);
|
||||
}
|
||||
|
||||
echo $_SESSION['header'];
|
||||
|
||||
|
|
|
@ -43,9 +43,9 @@ session_save_path("../../sess");
|
|||
setlanguage();
|
||||
|
||||
// check if button was pressed and if we have to save the setting or go back to login
|
||||
if (isset($_POST['back']) || isset($_POST['submitconf']) || isset($_POST['editmodules'])){
|
||||
if (isset($_POST['back']) || isset($_POST['submitconf']) || isset($_POST['editmodules']) || isset($_POST['edittypes'])){
|
||||
// save settings
|
||||
if ($_POST['submitconf'] || $_POST['editmodules']){
|
||||
if ($_POST['submitconf'] || $_POST['editmodules'] || $_POST['edittypes']){
|
||||
// save HTTP-POST variables in session
|
||||
$_SESSION['conf_passwd'] = $_POST['passwd'];
|
||||
$_SESSION['conf_passwd1'] = $_POST['passwd1'];
|
||||
|
@ -53,21 +53,11 @@ if (isset($_POST['back']) || isset($_POST['submitconf']) || isset($_POST['editmo
|
|||
$_SESSION['conf_serverurl'] = $_POST['serverurl'];
|
||||
$_SESSION['conf_cachetimeout'] = $_POST['cachetimeout'];
|
||||
$_SESSION['conf_admins'] = $_POST['admins'];
|
||||
$_SESSION['conf_suffusers'] = $_POST['suffusers'];
|
||||
$_SESSION['conf_suffgroups'] = $_POST['suffgroups'];
|
||||
$_SESSION['conf_suffhosts'] = $_POST['suffhosts'];
|
||||
$_SESSION['conf_suffdomains'] = $_POST['suffdomains'];
|
||||
$_SESSION['conf_sufftree'] = $_POST['sufftree'];
|
||||
$_SESSION['conf_usrlstattr'] = $_POST['usrlstattr'];
|
||||
$_SESSION['conf_grplstattr'] = $_POST['grplstattr'];
|
||||
$_SESSION['conf_hstlstattr'] = $_POST['hstlstattr'];
|
||||
$_SESSION['conf_maxlistentries'] = $_POST['maxlistentries'];
|
||||
$_SESSION['conf_lang'] = $_POST['lang'];
|
||||
$_SESSION['conf_scriptpath'] = $_POST['scriptpath'];
|
||||
$_SESSION['conf_scriptserver'] = $_POST['scriptserver'];
|
||||
$_SESSION['conf_usermodules'] = explode(",", $_POST['usermodules']);
|
||||
$_SESSION['conf_groupmodules'] = explode(",", $_POST['groupmodules']);
|
||||
$_SESSION['conf_hostmodules'] = explode(",", $_POST['hostmodules']);
|
||||
$_SESSION['conf_filename'] = $_POST['filename'];
|
||||
$modSettings = array_keys($_SESSION['config_types']);
|
||||
for ($i = 0; $i < sizeof($modSettings); $i++) $_SESSION['config_moduleSettings'][$modSettings[$i]] = $_POST[$modSettings[$i]];
|
||||
|
@ -80,6 +70,10 @@ if (isset($_POST['back']) || isset($_POST['submitconf']) || isset($_POST['editmo
|
|||
elseif ($_POST['editmodules']){
|
||||
metaRefresh("confmodules.php");
|
||||
}
|
||||
// go to types page
|
||||
elseif ($_POST['edittypes']){
|
||||
metaRefresh("conftypes.php");
|
||||
}
|
||||
// back to login
|
||||
else if ($_POST['back']){
|
||||
metaRefresh("../login.php");
|
||||
|
@ -89,7 +83,7 @@ if (isset($_POST['back']) || isset($_POST['submitconf']) || isset($_POST['editmo
|
|||
|
||||
// get password if register_globals is off
|
||||
if (isset($_POST['passwd'])) $passwd = $_POST['passwd'];
|
||||
if (isset($_GET["modulesback"])) $passwd = $_SESSION['conf_passwd'];
|
||||
if (isset($_GET["modulesback"]) || isset($_GET["typesback"])) $passwd = $_SESSION['conf_passwd'];
|
||||
|
||||
// check if password was entered
|
||||
// if not: load login page
|
||||
|
@ -101,7 +95,7 @@ if (! $passwd) {
|
|||
}
|
||||
|
||||
$filename = $_POST['filename'];
|
||||
if (isset($_GET["modulesback"])) $filename = $_SESSION['conf_filename'];
|
||||
if (isset($_GET["modulesback"]) || isset($_GET["typesback"])) $filename = $_SESSION['conf_filename'];
|
||||
$conf = new Config($filename);
|
||||
|
||||
// check if password is valid
|
||||
|
@ -119,26 +113,26 @@ if (isset($_GET["modulesback"])) {
|
|||
$conf->set_ServerURL($_SESSION['conf_serverurl']);
|
||||
$conf->set_cacheTimeout($_SESSION['conf_cachetimeout']);
|
||||
$conf->set_Adminstring($_SESSION['conf_admins']);
|
||||
$conf->set_Suffix('user', $_SESSION['conf_suffusers']);
|
||||
$conf->set_Suffix('group', $_SESSION['conf_suffgroups']);
|
||||
$conf->set_Suffix('host', $_SESSION['conf_suffhosts']);
|
||||
$conf->set_Suffix('domain', $_SESSION['conf_suffdomains']);
|
||||
$conf->set_Suffix('tree', $_SESSION['conf_sufftree']);
|
||||
$conf->set_listAttributes($_SESSION['conf_usrlstattr'], 'user');
|
||||
$conf->set_listAttributes($_SESSION['conf_grplstattr'], 'group');
|
||||
$conf->set_listAttributes($_SESSION['conf_hstlstattr'], 'host');
|
||||
$conf->set_MaxListEntries($_SESSION['conf_maxlistentries']);
|
||||
$conf->set_defaultLanguage($_SESSION['conf_lang']);
|
||||
$conf->set_scriptpath($_SESSION['conf_scriptpath']);
|
||||
$conf->set_scriptserver($_SESSION['conf_scriptserver']);
|
||||
// check if modules were edited
|
||||
if ($_GET["moduleschanged"] == "true") {
|
||||
$conf->set_AccountModules($_SESSION['conf_usermodules'], 'user');
|
||||
$conf->set_AccountModules($_SESSION['conf_groupmodules'], 'group');
|
||||
$conf->set_AccountModules($_SESSION['conf_hostmodules'], 'host');
|
||||
}
|
||||
|
||||
// check if user comes from types page
|
||||
if (isset($_GET["typesback"])) {
|
||||
// check if a new account type was added
|
||||
if (isset($_GET["typeschanged"])) {
|
||||
metaRefresh("confmodules.php");
|
||||
exit;
|
||||
}
|
||||
}
|
||||
|
||||
// type information
|
||||
if (!isset($_SESSION['conf_accountTypes'])) $_SESSION['conf_accountTypes'] = $conf->get_ActiveTypes();
|
||||
if (!isset($_SESSION['conf_typeSettings'])) $_SESSION['conf_typeSettings'] = $conf->get_typeSettings();
|
||||
|
||||
// index for tab order
|
||||
$tabindex = 1;
|
||||
$tabindexLink = 1000;
|
||||
|
@ -172,49 +166,9 @@ $tabindex++;
|
|||
// new line
|
||||
echo ("<tr><td colspan=3> </td></tr>");
|
||||
|
||||
// user suffix
|
||||
echo ("<tr><td align=\"right\"><b>".
|
||||
_("UserSuffix") . ": </b></td>".
|
||||
"<td><input tabindex=\"$tabindex\" size=50 type=\"text\" name=\"suffusers\" value=\"" . $conf->get_Suffix('user') . "\"></td>\n");
|
||||
echo "<td>";
|
||||
echo "<a href=\"../help.php?HelpNumber=202\" target=\"lamhelp\">";
|
||||
echo "<img src=\"../../graphics/help.png\" alt=\"" . _('Help') . "\" title=\"" . _('Help') . "\">";
|
||||
echo "</a>\n";
|
||||
echo "</td></tr>\n";
|
||||
$tabindex++;
|
||||
// group suffix
|
||||
echo ("<tr><td align=\"right\"><b>".
|
||||
_("GroupSuffix") . ": </b></td>".
|
||||
"<td><input tabindex=\"$tabindex\" size=50 type=\"text\" name=\"suffgroups\" value=\"" . $conf->get_Suffix('group') . "\"></td>\n");
|
||||
echo "<td>";
|
||||
echo "<a href=\"../help.php?HelpNumber=202\" target=\"lamhelp\">";
|
||||
echo "<img src=\"../../graphics/help.png\" alt=\"" . _('Help') . "\" title=\"" . _('Help') . "\">";
|
||||
echo "</a>\n";
|
||||
echo "</td></tr>\n";
|
||||
$tabindex++;
|
||||
// host suffix
|
||||
echo ("<tr><td align=\"right\"><b>".
|
||||
_("HostSuffix") . ": </b></td>".
|
||||
"<td><input tabindex=\"$tabindex\" size=50 type=\"text\" name=\"suffhosts\" value=\"" . $conf->get_Suffix('host') . "\"></td>\n");
|
||||
echo "<td>";
|
||||
echo "<a href=\"../help.php?HelpNumber=202\" target=\"lamhelp\">";
|
||||
echo "<img src=\"../../graphics/help.png\" alt=\"" . _('Help') . "\" title=\"" . _('Help') . "\">";
|
||||
echo "</a>\n";
|
||||
echo "</td></tr>\n";
|
||||
$tabindex++;
|
||||
// domain suffix
|
||||
echo ("<tr><td align=\"right\"><b>".
|
||||
_("DomainSuffix") . " **: </b></td>".
|
||||
"<td><input tabindex=\"$tabindex\" size=50 type=\"text\" name=\"suffdomains\" value=\"" . $conf->get_Suffix('domain') . "\"></td>\n");
|
||||
echo "<td>";
|
||||
echo "<a href=\"../help.php?HelpNumber=202\" target=\"lamhelp\">";
|
||||
echo "<img src=\"../../graphics/help.png\" alt=\"" . _('Help') . "\" title=\"" . _('Help') . "\">";
|
||||
echo "</a>\n";
|
||||
echo "</td></tr>\n";
|
||||
$tabindex++;
|
||||
// tree suffix
|
||||
echo ("<tr><td align=\"right\"><b>".
|
||||
_("TreeSuffix") . ": </b></td>".
|
||||
_("Tree suffix") . ": </b></td>".
|
||||
"<td><input tabindex=\"$tabindex\" size=50 type=\"text\" name=\"sufftree\" value=\"" . $conf->get_Suffix('tree') . "\"></td>\n");
|
||||
echo "<td>";
|
||||
echo "<a href=\"../help.php?HelpNumber=203\" target=\"lamhelp\">";
|
||||
|
@ -249,22 +203,22 @@ echo ("</fieldset>");
|
|||
|
||||
echo ("<p></p>");
|
||||
|
||||
echo ("<fieldset><legend><b>" . _("Account modules") . "</b></legend>");
|
||||
echo ("<table border=0>");
|
||||
echo ("<fieldset><legend><b>" . _("Account types and modules") . "</b></legend>");
|
||||
|
||||
// Account modules
|
||||
echo "<tr><td><b>" . _("User modules") . ": </b>" . implode(", ", $conf->get_AccountModules('user')) . "</td></tr>\n";
|
||||
echo "<tr><td><b>" . _("Group modules") . ": </b>" . implode(", ", $conf->get_AccountModules('group')) . "</td></tr>\n";
|
||||
echo "<tr><td><b>" . _("Host modules") . ": </b>" . implode(", ", $conf->get_AccountModules('host')) . "</td></tr>\n";
|
||||
echo "<tr><td> </td></tr>\n";
|
||||
echo "<tr><td><input tabindex=\"$tabindex\" type=\"submit\" name=\"editmodules\" value=\"" . _("Edit modules") . "\"> ";
|
||||
$types = $_SESSION['conf_accountTypes'];
|
||||
for ($i = 0; $i < sizeof($types); $i++) {
|
||||
echo "<b>" . getTypeAlias($types[$i]) . ": </b>" . implode(", ", $conf->get_AccountModules($types[$i])) . "<br>\n";
|
||||
}
|
||||
echo "<br>\n";
|
||||
echo "<input tabindex=\"$tabindex\" type=\"submit\" name=\"edittypes\" value=\"" . _("Edit account types") . "\"> ";
|
||||
$tabindex++;
|
||||
echo "<input tabindex=\"$tabindex\" type=\"submit\" name=\"editmodules\" value=\"" . _("Edit modules") . "\"> ";
|
||||
echo "<a href=\"../help.php?HelpNumber=217\" target=\"lamhelp\">";
|
||||
echo "<img src=\"../../graphics/help.png\" alt=\"" . _('Help') . "\" title=\"" . _('Help') . "\">";
|
||||
echo "</a>\n";
|
||||
echo "</td></tr>\n";
|
||||
$tabindex++;
|
||||
|
||||
echo ("</table>");
|
||||
echo ("</fieldset>");
|
||||
|
||||
echo ("<p></p>");
|
||||
|
@ -274,12 +228,10 @@ echo ("<p></p>");
|
|||
|
||||
// get list of scopes of modules
|
||||
$scopes = array();
|
||||
$mods = $conf->get_AccountModules('user');
|
||||
for ($i = 0; $i < sizeof($mods); $i++) $scopes[$mods[$i]][] = 'user';
|
||||
$mods = $conf->get_AccountModules('group');
|
||||
for ($i = 0; $i < sizeof($mods); $i++) $scopes[$mods[$i]][] = 'group';
|
||||
$mods = $conf->get_AccountModules('host');
|
||||
for ($i = 0; $i < sizeof($mods); $i++) $scopes[$mods[$i]][] = 'host';
|
||||
for ($m = 0; $m < sizeof($types); $m++) {
|
||||
$mods = $conf->get_AccountModules($types[$m]);
|
||||
for ($i = 0; $i < sizeof($mods); $i++) $scopes[$mods[$i]][] = $types[$m];
|
||||
}
|
||||
|
||||
// get module options
|
||||
$options = getConfigOptions($scopes);
|
||||
|
@ -305,42 +257,9 @@ for ($i = 0; $i < sizeof($modules); $i++) {
|
|||
}
|
||||
|
||||
|
||||
echo ("<fieldset><legend><b>" . _("LDAP List settings") . "</b></legend>\n");
|
||||
echo ("<fieldset><legend><b>" . _("List settings") . "</b></legend>\n");
|
||||
echo ("<table border=0>\n");
|
||||
|
||||
// user list attributes
|
||||
echo ("<tr><td align=\"right\"><b>".
|
||||
_("Attributes in User List") . " *:</b></td>".
|
||||
"<td><input tabindex=\"$tabindex\" size=50 type=\"text\" name=\"usrlstattr\" value=\"" . $conf->get_listAttributes('user') . "\"></td>");
|
||||
echo "<td>";
|
||||
echo "<a href=\"../help.php?HelpNumber=206\" target=\"lamhelp\">";
|
||||
echo "<img src=\"../../graphics/help.png\" alt=\"" . _('Help') . "\" title=\"" . _('Help') . "\">";
|
||||
echo "</a>\n";
|
||||
echo "</td></tr>\n";
|
||||
$tabindex++;
|
||||
// group list attributes
|
||||
echo ("<tr><td align=\"right\"><b>".
|
||||
_("Attributes in Group List") . " *:</b></td>".
|
||||
"<td><input tabindex=\"$tabindex\" size=50 type=\"text\" name=\"grplstattr\" value=\"" . $conf->get_listAttributes('group') . "\"></td>");
|
||||
echo "<td>";
|
||||
echo "<a href=\"../help.php?HelpNumber=206\" target=\"lamhelp\">";
|
||||
echo "<img src=\"../../graphics/help.png\" alt=\"" . _('Help') . "\" title=\"" . _('Help') . "\">";
|
||||
echo "</a>\n";
|
||||
echo "</td></tr>\n";
|
||||
$tabindex++;
|
||||
// host list attributes
|
||||
echo ("<tr><td align=\"right\"><b>".
|
||||
_("Attributes in Host List") . " **:</b></td>".
|
||||
"<td><input tabindex=\"$tabindex\" size=50 type=\"text\" name=\"hstlstattr\" value=\"" . $conf->get_listAttributes('host') . "\"></td>");
|
||||
echo "<td>";
|
||||
echo "<a href=\"../help.php?HelpNumber=206\" target=\"lamhelp\">";
|
||||
echo "<img src=\"../../graphics/help.png\" alt=\"" . _('Help') . "\" title=\"" . _('Help') . "\">";
|
||||
echo "</a>\n";
|
||||
echo "</td></tr>\n";
|
||||
$tabindex++;
|
||||
|
||||
echo ("<tr><td colspan=3> </td></tr>\n");
|
||||
|
||||
// maximum list entries
|
||||
echo ("<tr><td align=\"right\"><b>".
|
||||
_("Maximum list entries") . " : </b></td>".
|
||||
|
@ -500,11 +419,6 @@ echo ("<p><input type=\"hidden\" name=\"passwd\" value=\"" . $passwd . "\"></p>\
|
|||
// config file
|
||||
echo ("<p><input type=\"hidden\" name=\"filename\" value=\"" . $filename . "\"></p>\n");
|
||||
|
||||
// modules
|
||||
echo ("<p><input type=\"hidden\" name=\"usermodules\" value=\"" . implode(",", $conf->get_AccountModules('user')) . "\"></p>\n");
|
||||
echo ("<p><input type=\"hidden\" name=\"groupmodules\" value=\"" . implode(",", $conf->get_AccountModules('group')) . "\"></p>\n");
|
||||
echo ("<p><input type=\"hidden\" name=\"hostmodules\" value=\"" . implode(",", $conf->get_AccountModules('host')) . "\"></p>\n");
|
||||
|
||||
echo ("</form>\n");
|
||||
echo ("</body>\n");
|
||||
echo ("</html>\n");
|
||||
|
|
|
@ -56,30 +56,36 @@ if ($passwd != $conf->get_Passwd()) {
|
|||
if ($_POST['submit']) {
|
||||
//selection ok, back to other settings
|
||||
metarefresh('confmain.php?modulesback=true&moduleschanged=true');
|
||||
exit;
|
||||
}
|
||||
elseif ($_POST['abort']) {
|
||||
// no changes
|
||||
metarefresh('confmain.php?modulesback=true');
|
||||
exit;
|
||||
}
|
||||
|
||||
$types = $_SESSION['conf_accountTypes'];
|
||||
|
||||
echo $_SESSION['header'];
|
||||
|
||||
echo "<title>" . _("LDAP Account Manager Configuration") . "</title>\n";
|
||||
echo "<link rel=\"stylesheet\" type=\"text/css\" href=\"../../style/layout.css\">\n";
|
||||
for ($i = 0; $i < sizeof($types); $i++){
|
||||
echo "<link rel=\"stylesheet\" type=\"text/css\" href=\"../../style/type_" . $types[$i] . ".css\">\n";
|
||||
}
|
||||
echo "</head><body>\n";
|
||||
|
||||
echo ("<p align=\"center\"><a href=\"http://lam.sourceforge.net\" target=\"new_window\">".
|
||||
"<img src=\"../../graphics/banner.jpg\" border=1 alt=\"LDAP Account Manager\"></a></p><hr><br>\n");
|
||||
|
||||
echo ("<form action=\"confmodules.php\" method=\"post\">\n");
|
||||
echo "<p align=\"center\"><big><b>" . _("Module selection") . "</b></big><br><br></p>";
|
||||
echo "<h1 align=\"center\">" . _("Module selection") . "</h1>";
|
||||
|
||||
|
||||
$account_list = array(
|
||||
array('user', _('User modules')),
|
||||
array('group', _('Group modules')),
|
||||
array('host', _('Host modules'))
|
||||
);
|
||||
$account_list = array();
|
||||
for ($i = 0; $i < sizeof($types); $i++) {
|
||||
$account_list[] = array($types[$i], getTypeAlias($types[$i]));
|
||||
}
|
||||
|
||||
$allDependenciesOk = true;
|
||||
|
||||
|
@ -126,7 +132,8 @@ echo "</html>\n";
|
|||
*/
|
||||
function config_showAccountModules($scope, $title) {
|
||||
// account modules
|
||||
$selected_temp = $_SESSION['conf_' . $scope . 'modules'];
|
||||
$selected_temp = $_SESSION['conf_typeSettings']['modules_' . $scope];
|
||||
if (isset($selected_temp)) $selected_temp = explode(',', $selected_temp);
|
||||
$available = array();
|
||||
$available = getAvailableModules($scope);
|
||||
$selected = array();
|
||||
|
@ -145,7 +152,7 @@ function config_showAccountModules($scope, $title) {
|
|||
if (! in_array($selected[$i], $_POST[$scope . '_selected'])) $new_selected[] = $selected[$i];
|
||||
}
|
||||
$selected = $new_selected;
|
||||
$_SESSION['conf_' . $scope . 'modules'] = $selected;
|
||||
$_SESSION['conf_typeSettings']['modules_' . $scope] = implode(',', $selected);
|
||||
}
|
||||
|
||||
// add modules to selection
|
||||
|
@ -155,7 +162,7 @@ function config_showAccountModules($scope, $title) {
|
|||
if (! in_array($_POST[$scope . '_available'][$i], $selected)) $new_selected[] = $_POST[$scope . '_available'][$i];
|
||||
}
|
||||
$selected = $new_selected;
|
||||
$_SESSION['conf_' . $scope . 'modules'] = $selected;
|
||||
$_SESSION['conf_typeSettings']['modules_' . $scope] = implode(',', $selected);
|
||||
}
|
||||
|
||||
// show account modules
|
||||
|
|
|
@ -48,14 +48,7 @@ $passwd2 = $_SESSION['conf_passwd2'];
|
|||
$serverurl = $_SESSION['conf_serverurl'];
|
||||
$cachetimeout = $_SESSION['conf_cachetimeout'];
|
||||
$admins = $_SESSION['conf_admins'];
|
||||
$suffusers = $_SESSION['conf_suffusers'];
|
||||
$suffgroups = $_SESSION['conf_suffgroups'];
|
||||
$suffhosts = $_SESSION['conf_suffhosts'];
|
||||
$suffdomains = $_SESSION['conf_suffdomains'];
|
||||
$sufftree = $_SESSION['conf_sufftree'];
|
||||
$usrlstattr = $_SESSION['conf_usrlstattr'];
|
||||
$grplstattr = $_SESSION['conf_grplstattr'];
|
||||
$hstlstattr = $_SESSION['conf_hstlstattr'];
|
||||
$maxlistentries = $_SESSION['conf_maxlistentries'];
|
||||
$lang = $_SESSION['conf_lang'];
|
||||
$scriptpath = $_SESSION['conf_scriptpath'];
|
||||
|
@ -81,10 +74,7 @@ echo ("<p align=\"center\"><a href=\"http://lam.sourceforge.net\" target=\"new_w
|
|||
|
||||
// remove double slashes if magic quotes are on
|
||||
if (get_magic_quotes_gpc() == 1) {
|
||||
$suffusers = stripslashes($suffusers);
|
||||
$suffgroups = stripslashes($suffgroups);
|
||||
$suffhosts = stripslashes($suffhosts);
|
||||
$suffdomains = stripslashes($suffdomains);
|
||||
$sufftree = stripslashes($sufftree);
|
||||
}
|
||||
|
||||
// check new preferences
|
||||
|
@ -103,46 +93,11 @@ if (!$conf->set_Adminstring($admins)) {
|
|||
echo ("\n<br><br><br><a href=\"javascript:history.back()\">" . _("Back to preferences...") . "</a>");
|
||||
exit;
|
||||
}
|
||||
if (!$conf->set_Suffix('user', $suffusers)) {
|
||||
echo ("<font color=\"red\"><b>" . _("UserSuffix is invalid!") . "</b></font>");
|
||||
echo ("\n<br><br><br><a href=\"javascript:history.back()\">" . _("Back to preferences...") . "</a>");
|
||||
exit;
|
||||
}
|
||||
if (!$conf->set_Suffix('group', $suffgroups)) {
|
||||
echo ("<font color=\"red\"><b>" . _("GroupSuffix is invalid!") . "</b></font>");
|
||||
echo ("\n<br><br><br><a href=\"javascript:history.back()\">" . _("Back to preferences...") . "</a>");
|
||||
exit;
|
||||
}
|
||||
if (!$conf->set_Suffix('host', $suffhosts)) {
|
||||
echo ("<font color=\"red\"><b>" . _("HostSuffix is invalid!") . "</b></font>");
|
||||
echo ("\n<br><br><br><a href=\"javascript:history.back()\">" . _("Back to preferences...") . "</a>");
|
||||
exit;
|
||||
}
|
||||
if (!$conf->set_Suffix('domain', $suffdomains)) {
|
||||
echo ("<font color=\"red\"><b>" . _("DomainSuffix is invalid!") . "</b></font>");
|
||||
echo ("\n<br><br><br><a href=\"javascript:history.back()\">" . _("Back to preferences...") . "</a>");
|
||||
exit;
|
||||
}
|
||||
if (!$conf->set_Suffix("tree", $sufftree)) {
|
||||
echo ("<font color=\"red\"><b>" . _("TreeSuffix is invalid!") . "</b></font>");
|
||||
echo ("\n<br><br><br><a href=\"javascript:history.back()\">" . _("Back to preferences...") . "</a>");
|
||||
exit;
|
||||
}
|
||||
if (!$conf->set_listAttributes($usrlstattr, 'user')) {
|
||||
echo ("<font color=\"red\"><b>" . _("User list attributes are invalid!") . "</b></font>");
|
||||
echo ("\n<br><br><br><a href=\"javascript:history.back()\">" . _("Back to preferences...") . "</a>");
|
||||
exit;
|
||||
}
|
||||
if (!$conf->set_listAttributes($grplstattr, 'group')) {
|
||||
echo ("<font color=\"red\"><b>" . _("Group list attributes are invalid!") . "</b></font>");
|
||||
echo ("\n<br><br><br><a href=\"javascript:history.back()\">" . _("Back to preferences...") . "</a>");
|
||||
exit;
|
||||
}
|
||||
if (!$conf->set_listAttributes($hstlstattr, 'host')) {
|
||||
echo ("<font color=\"red\"><b>" . _("Host list attributes are invalid!") . "</b></font>");
|
||||
echo ("\n<br><br><br><a href=\"javascript:history.back()\">" . _("Back to preferences...") . "</a>");
|
||||
exit;
|
||||
}
|
||||
if (!$conf->set_MaxListEntries($maxlistentries)) {
|
||||
echo ("<font color=\"red\"><b>" . _("Max list entries is invalid!") . "</b></font>");
|
||||
echo ("\n<br><br><br><a href=\"javascript:history.back()\">" . _("Back to preferences...") . "</a>");
|
||||
|
@ -167,23 +122,8 @@ if (!$conf->set_scriptserver($scriptserver)) {
|
|||
exit;
|
||||
}
|
||||
|
||||
if (! $conf->set_AccountModules($_SESSION['conf_usermodules'], 'user')) {
|
||||
echo ("<font color=\"red\"><b>" . _("Saving user modules failed!") . "</b></font>");
|
||||
echo ("\n<br><br><br><a href=\"javascript:history.back()\">" . _("Back to preferences...") . "</a>");
|
||||
exit;
|
||||
}
|
||||
|
||||
if (! $conf->set_AccountModules($_SESSION['conf_groupmodules'], 'group')) {
|
||||
echo ("<font color=\"red\"><b>" . _("Saving group modules failed!") . "</b></font>");
|
||||
echo ("\n<br><br><br><a href=\"javascript:history.back()\">" . _("Back to preferences...") . "</a>");
|
||||
exit;
|
||||
}
|
||||
|
||||
if (! $conf->set_AccountModules($_SESSION['conf_hostmodules'], 'host')) {
|
||||
echo ("<font color=\"red\"><b>" . _("Saving host modules failed!") . "</b></font>");
|
||||
echo ("\n<br><br><br><a href=\"javascript:history.back()\">" . _("Back to preferences...") . "</a>");
|
||||
exit;
|
||||
}
|
||||
$conf->set_typeSettings($_SESSION['conf_typeSettings']);
|
||||
$conf->set_ActiveTypes($_SESSION['conf_accountTypes']);
|
||||
|
||||
// check module options
|
||||
// create option array to check and save
|
||||
|
@ -249,34 +189,14 @@ if ($passwd1) {
|
|||
|
||||
// save settings and display new settings
|
||||
$conf->save();
|
||||
echo ("<b>" . _("The following settings were saved to profile:") . " </b>" . $filename . "<br><br>");
|
||||
$conf->printconf();
|
||||
echo ("<br><br><br><br><br><a href=\"../login.php\" target=\"_top\">" . _("Back to Login") . "</a>");
|
||||
|
||||
echo("</body></html>");
|
||||
|
||||
// remove settings from session
|
||||
unset($_SESSION['conf_passwd']);
|
||||
unset($_SESSION['conf_passwd1']);
|
||||
unset($_SESSION['conf_passwd2']);
|
||||
unset($_SESSION['conf_serverurl']);
|
||||
unset($_SESSION['conf_cachetimeout']);
|
||||
unset($_SESSION['conf_admins']);
|
||||
unset($_SESSION['conf_suffusers']);
|
||||
unset($_SESSION['conf_suffgroups']);
|
||||
unset($_SESSION['conf_suffhosts']);
|
||||
unset($_SESSION['conf_suffdomains']);
|
||||
unset($_SESSION['conf_sufftree']);
|
||||
unset($_SESSION['conf_usrlstattr']);
|
||||
unset($_SESSION['conf_grplstattr']);
|
||||
unset($_SESSION['conf_hstlstattr']);
|
||||
unset($_SESSION['conf_maxlistentries']);
|
||||
unset($_SESSION['conf_lang']);
|
||||
unset($_SESSION['conf_scriptpath']);
|
||||
unset($_SESSION['conf_scriptserver']);
|
||||
unset($_SESSION['conf_filename']);
|
||||
unset($_SESSION['conf_usermodules']);
|
||||
unset($_SESSION['conf_groupmodules']);
|
||||
unset($_SESSION['conf_hostmodules']);
|
||||
$sessionKeys = array_keys($_SESSION);
|
||||
for ($i = 0; $i < sizeof($sessionKeys); $i++) {
|
||||
if (substr($sessionKeys[$i], 0, 5) == "conf_") unset($_SESSION[$sessionKeys[$i]]);
|
||||
}
|
||||
|
||||
?>
|
||||
|
|
|
@ -0,0 +1,224 @@
|
|||
<?php
|
||||
/*
|
||||
$Id$
|
||||
|
||||
This code is part of LDAP Account Manager (http://www.sourceforge.net/projects/lam)
|
||||
Copyright (C) 2004 Roland Gruber
|
||||
|
||||
This program is free software; you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation; either version 2 of the License, or
|
||||
(at your option) any later version.
|
||||
|
||||
This program is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with this program; if not, write to the Free Software
|
||||
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
|
||||
*/
|
||||
|
||||
|
||||
/**
|
||||
* Here the user can select the account types.
|
||||
*
|
||||
* @package configuration
|
||||
* @author Roland Gruber
|
||||
*/
|
||||
|
||||
|
||||
/** Access to config functions */
|
||||
include_once ('../../lib/config.inc');
|
||||
/** Access to account types */
|
||||
include_once ('../../lib/types.inc');
|
||||
|
||||
// start session
|
||||
session_save_path("../../sess");
|
||||
@session_start();
|
||||
|
||||
setlanguage();
|
||||
|
||||
$conf = new Config($_SESSION['conf_filename']);
|
||||
|
||||
$passwd = $_SESSION['conf_passwd'];
|
||||
// check if password is correct
|
||||
// if not: load login page
|
||||
if ($passwd != $conf->get_Passwd()) {
|
||||
/** go back to login if password is invalid */
|
||||
require('conflogin.php');
|
||||
exit;
|
||||
}
|
||||
|
||||
// update type settings
|
||||
if (isset($_POST['postAvailable'])) {
|
||||
$postKeys = array_keys($_POST);
|
||||
for ($i = 0; $i < sizeof($postKeys); $i++) {
|
||||
$key = $postKeys[$i];
|
||||
if (substr($key, 0, 7) == "suffix_") {
|
||||
$_SESSION['conf_typeSettings'][$key] = $_POST[$key];
|
||||
}
|
||||
elseif (substr($key, 0, 5) == "attr_") {
|
||||
$_SESSION['conf_typeSettings'][$key] = $_POST[$key];
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
$errors = array();
|
||||
// user pressed submit/abort button
|
||||
if ($_POST['submit']) {
|
||||
// check settings
|
||||
$allOK = true;
|
||||
$postKeys = array_keys($_POST);
|
||||
for ($i = 0; $i < sizeof($postKeys); $i++) {
|
||||
$key = $postKeys[$i];
|
||||
if (substr($key, 0, 7) == "suffix_") {
|
||||
$type = substr($postKeys[$i], 7);
|
||||
if (strlen($_POST[$key]) < 1) {
|
||||
$errors[] = array("ERROR", _("LDAP Suffix is invalid!"), getTypeAlias($type));
|
||||
$allOK = false;
|
||||
}
|
||||
}
|
||||
elseif (substr($key, 0, 5) == "attr_") {
|
||||
$type = substr($postKeys[$i], 5);
|
||||
if (!is_string($_POST[$key]) || !eregi("^((#[^:;]+)|([^:;]*:[^:;]+))(;((#[^:;]+)|([^:;]*:[^:;]+)))*$", $_POST[$key])) {
|
||||
$errors[] = array("ERROR", _("List attributes are invalid!"), getTypeAlias($type));
|
||||
$allOK = false;
|
||||
}
|
||||
}
|
||||
}
|
||||
if ($allOK) {
|
||||
//selection ok, back to other settings
|
||||
metarefresh('confmain.php?typesback=true&typeschanged=true');
|
||||
exit;
|
||||
}
|
||||
}
|
||||
elseif ($_POST['abort']) {
|
||||
// no changes
|
||||
metarefresh('confmain.php?typesback=true');
|
||||
exit;
|
||||
}
|
||||
|
||||
// check if remove button was pressed
|
||||
$postKeys = array_keys($_POST);
|
||||
for ($i = 0; $i < sizeof($postKeys); $i++) {
|
||||
$key = $postKeys[$i];
|
||||
if (substr($key, 0, 4) == "rem_") {
|
||||
$type = substr($key, 4);
|
||||
$_SESSION['conf_accountTypes'] = array_flip($_SESSION['conf_accountTypes']);
|
||||
unset($_SESSION['conf_accountTypes'][$type]);
|
||||
$_SESSION['conf_accountTypes'] = array_flip($_SESSION['conf_accountTypes']);
|
||||
$_SESSION['conf_accountTypes'] = array_values($_SESSION['conf_accountTypes']);
|
||||
}
|
||||
}
|
||||
|
||||
// check if add button was pressed
|
||||
$postKeys = array_keys($_POST);
|
||||
for ($i = 0; $i < sizeof($postKeys); $i++) {
|
||||
$key = $postKeys[$i];
|
||||
if (substr($key, 0, 4) == "add_") {
|
||||
$type = substr($key, 4);
|
||||
$_SESSION['conf_accountTypes'][] = $type;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
// get active and available types
|
||||
$allTypes = getTypes();
|
||||
$activeTypes = $_SESSION['conf_accountTypes'];
|
||||
$availableTypes = array();
|
||||
for ($i = 0; $i < sizeof($allTypes); $i++) {
|
||||
if (!in_array($allTypes[$i], $activeTypes)) $availableTypes[] = $allTypes[$i];
|
||||
}
|
||||
|
||||
echo $_SESSION['header'];
|
||||
|
||||
echo "<title>" . _("LDAP Account Manager Configuration") . "</title>\n";
|
||||
echo "<link rel=\"stylesheet\" type=\"text/css\" href=\"../../style/layout.css\">\n";
|
||||
for ($i = 0; $i < sizeof($allTypes); $i++){
|
||||
echo "<link rel=\"stylesheet\" type=\"text/css\" href=\"../../style/type_" . $allTypes[$i] . ".css\">\n";
|
||||
}
|
||||
echo "</head><body>\n";
|
||||
|
||||
echo ("<p align=\"center\"><a href=\"http://lam.sf.net\" target=\"new_window\">".
|
||||
"<img src=\"../../graphics/banner.jpg\" border=1 alt=\"LDAP Account Manager\"></a></p><hr><br>\n");
|
||||
|
||||
// print error messages
|
||||
for ($i = 0; $i < sizeof($errors); $i++) call_user_func_array('StatusMessage', $errors[$i]);
|
||||
|
||||
echo ("<form action=\"conftypes.php\" method=\"post\">\n");
|
||||
echo "<h1 align=\"center\">" . _("Account type selection") . "</h1>";
|
||||
|
||||
// show available types
|
||||
echo "<fieldset><legend><b>" . _("Available account types") . "</b></legend>\n";
|
||||
echo "<table>\n";
|
||||
for ($i = 0; $i < sizeof($availableTypes); $i++) {
|
||||
echo "<tr>\n";
|
||||
echo "<td><b>" . getTypeAlias($availableTypes[$i]) . ": </b></td>\n";
|
||||
echo "<td>" . getTypeDescription($availableTypes[$i]) . "</td>\n";
|
||||
echo "<td><input type=\"submit\" name=\"add_" . $availableTypes[$i] ."\" value=\"" . _("Add") . "\"></td>\n";
|
||||
echo "</tr>\n";
|
||||
}
|
||||
echo "</table>\n";
|
||||
echo "</fieldset>\n";
|
||||
|
||||
echo "<p><br><br></p>";
|
||||
|
||||
// show active types
|
||||
echo "<fieldset><legend><b>" . _("Active account types") . "</b></legend><br>\n";
|
||||
for ($i = 0; $i < sizeof($activeTypes); $i++) {
|
||||
echo "<fieldset class=\"" . $activeTypes[$i] . "edit\">\n";
|
||||
echo "<legend>" . "<b>" . getTypeAlias($activeTypes[$i]) . ": </b>" . getTypeDescription($activeTypes[$i]) . "</legend>";
|
||||
echo "<br>\n";
|
||||
echo "<table>\n";
|
||||
// LDAP suffix
|
||||
echo "<tr>\n";
|
||||
echo "<td>" . _("LDAP suffix") . "</td>\n";
|
||||
echo "<td><input type=\"text\" size=\"40\" name=\"suffix_" . $activeTypes[$i] . "\" value=\"" . $_SESSION['conf_typeSettings']['suffix_' . $activeTypes[$i]] . "\"></td>\n";
|
||||
echo "</tr>\n";
|
||||
// list attributes
|
||||
if (isset($_SESSION['conf_typeSettings']['attr_' . $activeTypes[$i]])) {
|
||||
$attributes = $_SESSION['conf_typeSettings']['attr_' . $activeTypes[$i]];
|
||||
}
|
||||
else {
|
||||
$attributes = getDefaultListAttributes($activeTypes[$i]);
|
||||
}
|
||||
echo "<tr>\n";
|
||||
echo "<td>" . _("List attributes") . "</td>\n";
|
||||
echo "<td><input type=\"text\" size=\"40\" name=\"attr_" . $activeTypes[$i] . "\" value=\"" . $attributes . "\"></td>\n";
|
||||
echo "</tr>\n";
|
||||
echo "<tr><td colspan=\"2\"> </td></tr>\n";
|
||||
// remove button
|
||||
echo "<tr>\n";
|
||||
echo "<td colspan=\"2\"><input type=\"submit\" name=\"rem_" . $activeTypes[$i] . "\" value=\"" . _("Remove this account type") . "\"></td>\n";
|
||||
echo "</tr>\n";
|
||||
echo "</table>\n";
|
||||
echo "</fieldset><br>\n";
|
||||
}
|
||||
echo "</fieldset>\n";
|
||||
|
||||
|
||||
echo "<p><br><br></p>\n";
|
||||
|
||||
// submit and abort button
|
||||
echo "<p>";
|
||||
echo "<input type=\"submit\" name=\"submit\" value=\"" . _("Submit") . "\">\n";
|
||||
echo "<input type=\"submit\" name=\"abort\" value=\"" . _("Abort") . "\">\n";
|
||||
echo "<input type=\"hidden\" name=\"postAvailable\" value=\"yes\">\n";
|
||||
echo "</p>";
|
||||
|
||||
echo "<p><br><br></p>\n";
|
||||
echo "</form>\n";
|
||||
echo "</body>\n";
|
||||
echo "</html>\n";
|
||||
|
||||
|
||||
|
||||
|
||||
?>
|
||||
|
||||
|
||||
|
||||
|
|
@ -1,357 +0,0 @@
|
|||
<?php
|
||||
/*
|
||||
$Id$
|
||||
|
||||
This code is part of LDAP Account Manager (http://www.sourceforge.net/projects/lam)
|
||||
Copyright (C) 2003 Roland Gruber
|
||||
|
||||
This program is free software; you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation; either version 2 of the License, or
|
||||
(at your option) any later version.
|
||||
|
||||
This program is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with this program; if not, write to the Free Software
|
||||
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
|
||||
*/
|
||||
|
||||
/**
|
||||
* Manages Samba 3 domain entries.
|
||||
*
|
||||
* @package tools
|
||||
* @author Roland Gruber
|
||||
*/
|
||||
|
||||
/** access to configuration options */
|
||||
include_once ("../lib/config.inc");
|
||||
/** access to LDAP server */
|
||||
include_once ("../lib/ldap.inc");
|
||||
/** Samba 3 domain object */
|
||||
include_once ("../lib/account.inc");
|
||||
|
||||
// start session
|
||||
session_save_path("../sess");
|
||||
@session_start();
|
||||
|
||||
setlanguage();
|
||||
|
||||
|
||||
// add/edit domain
|
||||
if (($_GET['action'] == "edit") || ($_GET['action'] == "new")) {
|
||||
// get list of domains
|
||||
$domlist = search_domains($_SESSION['config']->get_Suffix('domain'));
|
||||
// get possible suffixes
|
||||
$domsuff = $_SESSION['ldap']->search_units($_SESSION['config']->get_Suffix('domain'));
|
||||
if ($_GET['action'] == "edit") {
|
||||
// remove "\'"
|
||||
$_GET['DN'] = str_replace("\\", "", $_GET['DN']);
|
||||
$_GET['DN'] = str_replace("'", "", $_GET['DN']);
|
||||
// load attributes from domain
|
||||
for ($i = 0; $i < sizeof($domlist); $i++) {
|
||||
if ($domlist[$i]->dn == $_GET['DN']) {
|
||||
$domain = $domlist[$i];
|
||||
break;
|
||||
}
|
||||
}
|
||||
// get suffix
|
||||
$tmp_arr = explode(",", $domain->dn);
|
||||
array_shift($tmp_arr);
|
||||
$domain_suffix = implode(",", $tmp_arr);
|
||||
}
|
||||
else {
|
||||
$domain = new samba3domain();
|
||||
$domain_suffix = $_SESSION['config']->get_Suffix('domain');
|
||||
}
|
||||
// display page
|
||||
echo $_SESSION['header'];
|
||||
echo "<title>Domain Management</title>\n";
|
||||
echo "<link rel=\"stylesheet\" type=\"text/css\" href=\"../style/layout.css\">\n";
|
||||
echo "</head>\n";
|
||||
echo "<body>\n";
|
||||
// print message, if needed
|
||||
if ($_SESSION['domain_message']) StatusMessage("INFO", $_SESSION['domain_message'], "");
|
||||
// print fieldset
|
||||
echo "<form action=\"domain.php\" method=\"post\">\n";
|
||||
echo "<p> </p>\n";
|
||||
echo "<fieldset class=\"domedit\">\n";
|
||||
echo "<legend class=\"domedit\"><b>" . _("Domain Settings") . "</b></legend>\n";
|
||||
echo "<table border=0>\n";
|
||||
// domain name
|
||||
echo "<tr>\n";
|
||||
echo "<td>\n";
|
||||
echo "<b>" . _("Domain name") . ":</b>\n";
|
||||
echo "</td>\n";
|
||||
echo "<td>\n";
|
||||
if ($_GET['action'] == "edit") {
|
||||
echo $domain->name . "\n";
|
||||
}
|
||||
else echo "<input tabindex=\"1\" type=\"text\" name=\"dom_name\">\n";
|
||||
echo "</td>\n";
|
||||
echo ("<td>");
|
||||
// help link
|
||||
echo "<a href=\"help.php?HelpNumber=651\" target=\"lamhelp\">";
|
||||
echo "<img src=\"../graphics/help.png\" alt=\"" . _('Help') . "\" title=\"" . _('Help') . "\">";
|
||||
echo "</a>\n";
|
||||
echo ("</td>\n");
|
||||
echo "</tr>\n";
|
||||
echo "<tr>\n";
|
||||
echo "<td> </td><td> </td>\n";
|
||||
echo "</tr>\n";
|
||||
// domain SID
|
||||
echo "<tr>\n";
|
||||
echo "<td>\n";
|
||||
echo "<b>" . _("Domain SID") . ": </b>\n";
|
||||
echo "</td>\n";
|
||||
echo "<td>\n";
|
||||
if ($_GET['action'] == "edit") {
|
||||
echo $domain->SID . "\n";
|
||||
}
|
||||
else echo "<input tabindex=\"2\" type=\"text\" size=\"50\" name=\"dom_SID\">\n";
|
||||
echo "</td>\n";
|
||||
echo "<td>";
|
||||
// help link
|
||||
echo "<a href=\"help.php?HelpNumber=653\" target=\"lamhelp\">";
|
||||
echo "<img src=\"../graphics/help.png\" alt=\"" . _('Help') . "\" title=\"" . _('Help') . "\">";
|
||||
echo "</a>\n";
|
||||
echo "</td>\n";
|
||||
echo "</tr>\n";
|
||||
echo "<tr>\n";
|
||||
echo "<td> </td><td> </td>\n";
|
||||
echo "</tr>\n";
|
||||
// next RID
|
||||
echo "<tr>\n";
|
||||
echo "<td><b>" . _("Next RID") . ": </b></td>\n";
|
||||
echo "<td>\n";
|
||||
echo "<input tabindex=\"3\" type=\"text\" name=\"dom_nextRID\" value=\"" . $domain->nextRID . "\">\n";
|
||||
echo "</td>\n";
|
||||
echo "<td>";
|
||||
// help link
|
||||
echo "<a href=\"help.php?HelpNumber=654\" target=\"lamhelp\">";
|
||||
echo "<img src=\"../graphics/help.png\" alt=\"" . _('Help') . "\" title=\"" . _('Help') . "\">";
|
||||
echo "</a>\n";
|
||||
echo "</td>\n";
|
||||
echo "</tr>\n";
|
||||
// next user RID
|
||||
echo "<tr>\n";
|
||||
echo "<td><b>" . _("Next User RID") . ": </b></td>\n";
|
||||
echo "<td>\n";
|
||||
echo "<input tabindex=\"4\" type=\"text\" name=\"dom_nextUserRID\" value=\"" . $domain->nextUserRID . "\">\n";
|
||||
echo "</td>\n";
|
||||
echo "<td>";
|
||||
// help link
|
||||
echo "<a href=\"help.php?HelpNumber=655\" target=\"lamhelp\">";
|
||||
echo "<img src=\"../graphics/help.png\" alt=\"" . _('Help') . "\" title=\"" . _('Help') . "\">";
|
||||
echo "</a>\n";
|
||||
echo "</td>\n";
|
||||
echo "</tr>\n";
|
||||
// next group RID
|
||||
echo "<tr>\n";
|
||||
echo "<td><b>" . _("Next Group RID") . ": </b></td>\n";
|
||||
echo "<td>\n";
|
||||
echo "<input tabindex=\"5\" type=\"text\" name=\"dom_nextGroupRID\" value=\"" . $domain->nextGroupRID . "\">\n";
|
||||
echo "</td>\n";
|
||||
echo "<td>";
|
||||
// help link
|
||||
echo "<a href=\"help.php?HelpNumber=656\" target=\"lamhelp\">";
|
||||
echo "<img src=\"../graphics/help.png\" alt=\"" . _('Help') . "\" title=\"" . _('Help') . "\">";
|
||||
echo "</a>\n";
|
||||
echo "</td>\n";
|
||||
echo "</tr>\n";
|
||||
echo "<tr>\n";
|
||||
echo "<td> </td><td> </td>\n";
|
||||
echo "</tr>\n";
|
||||
// algorithmic RID base
|
||||
echo "<tr>\n";
|
||||
echo "<td><b>" . _("Algorithmic RID Base") . ": </b></td>\n";
|
||||
echo "<td>\n";
|
||||
if ($_GET['action'] == "edit") echo $domain->RIDbase . "\n";
|
||||
else echo "<input tabindex=\"6\" type=\"text\" name=\"dom_RIDbase\" value=\"" . $domain->RIDbase . "\">\n";
|
||||
echo "</td>\n";
|
||||
echo "<td>";
|
||||
// help link
|
||||
echo "<a href=\"help.php?HelpNumber=657\" target=\"lamhelp\">";
|
||||
echo "<img src=\"../graphics/help.png\" alt=\"" . _('Help') . "\" title=\"" . _('Help') . "\">";
|
||||
echo "</a>\n";
|
||||
echo "</td>\n";
|
||||
echo "</tr>\n";
|
||||
echo "<tr>\n";
|
||||
echo "<td> </td><td> </td>\n";
|
||||
echo "</tr>\n";
|
||||
// domain suffix
|
||||
echo "<tr>\n";
|
||||
echo "<td>\n";
|
||||
echo "<b>" . _("Suffix") . ": </b>\n";
|
||||
echo "</td>\n";
|
||||
echo "<td>\n";
|
||||
echo "<select tabindex=\"7\" name=\"dom_suffix\">\n";
|
||||
for ($i = 0; $i < sizeof($domsuff); $i++) {
|
||||
if ($domsuff[$i] == $domain_suffix) echo "<option selected>" . $domain_suffix . "</option>\n";
|
||||
else echo "<option>" . $domsuff[$i] . "</option>\n";
|
||||
}
|
||||
echo "</select>";
|
||||
echo "</td>\n";
|
||||
echo "<td>";
|
||||
// help link
|
||||
echo "<a href=\"help.php?HelpNumber=652\" target=\"lamhelp\">";
|
||||
echo "<img src=\"../graphics/help.png\" alt=\"" . _('Help') . "\" title=\"" . _('Help') . "\">";
|
||||
echo "</a>\n";
|
||||
echo "</td>\n";
|
||||
echo "</tr>\n";
|
||||
echo "<tr>\n";
|
||||
echo "<td> </td><td> </td>\n";
|
||||
echo "</tr>\n";
|
||||
echo "</table>\n";
|
||||
echo "</fieldset>\n";
|
||||
// post DN and old RID values
|
||||
echo "<input type=\"hidden\" name=\"dom_DN\" value=\"" . $domain->dn . "\">";
|
||||
echo "<input type=\"hidden\" name=\"dom_oldnextRID\" value=\"" . $domain->nextRID . "\">";
|
||||
echo "<input type=\"hidden\" name=\"dom_oldnextUserRID\" value=\"" . $domain->nextUserRID . "\">";
|
||||
echo "<input type=\"hidden\" name=\"dom_oldnextGroupRID\" value=\"" . $domain->nextGroupRID . "\">";
|
||||
// edit or add operation
|
||||
if ($_GET['action'] == "edit") echo "<input type=\"hidden\" name=\"edit\" value=\"yes\">";
|
||||
else echo "<input type=\"hidden\" name=\"add\" value=\"yes\">";
|
||||
echo "<p> </p>\n";
|
||||
echo "<p>\n";
|
||||
echo "<input tabindex=\"8\" type=\"submit\" name=\"sub_save\" value=\"" . _("Submit") . "\">\n";
|
||||
echo "<input tabindex=\"9\" type=\"reset\" value=\"" . _("Reset") . "\">\n";
|
||||
echo "<input tabindex=\"10\" type=\"submit\" name=\"sub_back\" value=\"" . _("Cancel") . "\">\n";
|
||||
echo "</p>\n";
|
||||
echo "</form>\n";
|
||||
echo "</body>\n";
|
||||
echo "</html>\n";
|
||||
}
|
||||
|
||||
|
||||
// delete domain, ask if sure
|
||||
elseif ($_GET['action'] == "delete") {
|
||||
// remove "\'" and make array
|
||||
$DNs = str_replace("\\", "", $_GET['DN']);
|
||||
$DNs = str_replace("'", "", $DNs);
|
||||
$DNs = explode(";", $DNs);
|
||||
// display page
|
||||
echo $_SESSION['header'];
|
||||
echo "<title>Domain Management</title>\n";
|
||||
echo "<link rel=\"stylesheet\" type=\"text/css\" href=\"../style/layout.css\">\n";
|
||||
echo "</head>\n";
|
||||
echo "<body>\n";
|
||||
echo "<p> </p>\n";
|
||||
echo "<fieldset class=\"domedit\"><legend class=\"domedit\"><b>" . _("Delete domain(s)") . "</b></legend>\n";
|
||||
echo "<p><b>" . _("Do you really want to delete domain(s):") . "</b></p>\n";
|
||||
echo "<p> </p>\n";
|
||||
for ($i = 0; $i < sizeof($DNs); $i++) {
|
||||
echo "<p>" . $DNs[$i] . "</p>\n";
|
||||
}
|
||||
echo "<p> </p>\n";
|
||||
echo "<form action=\"domain.php\" method=\"post\">\n";
|
||||
echo "<input type=\"hidden\" name=\"delDN\" value=\"" . implode(";", $DNs) . "\">\n";
|
||||
echo "<input type=\"submit\" name=\"sub_delete\" value=\"" . _("Delete") . "\">\n";
|
||||
echo "<input type=\"submit\" name=\"sub_back\" value=\"" . _("Cancel") . "\">\n";
|
||||
echo "</form>\n";
|
||||
echo "</fieldset>\n";
|
||||
echo "</body>\n";
|
||||
echo "</html>\n";
|
||||
}
|
||||
|
||||
|
||||
// save domain
|
||||
elseif ($_POST['sub_save']) {
|
||||
echo $_SESSION['header'];
|
||||
echo "<title>Domain Management</title>\n";
|
||||
echo "<link rel=\"stylesheet\" type=\"text/css\" href=\"../style/layout.css\">\n";
|
||||
echo "</head>\n";
|
||||
echo "<body>\n";
|
||||
// check input
|
||||
if ($_POST['add']) { // check for existing domains
|
||||
$suffix = $_SESSION['config']->get_Suffix('domain');
|
||||
$server = $_SESSION['ldap']->server;
|
||||
$filter = "(|(sambasid=" . $_POST['dom_SID'] . ")(sambadomainname=" . $_POST['dom_name'] . "))";
|
||||
$sr = @ldap_search($server, $suffix, $filter, array());
|
||||
$info = @ldap_get_entries($_SESSION["ldap"]->server, $sr);
|
||||
}
|
||||
if ($_POST['add'] && !eregi("^[a-z0-9_\\-]+$", $_POST['dom_name'])) StatusMessage("ERROR", "", _("Domain name is invalid!"));
|
||||
elseif ($_POST['add'] && !eregi("^S-[0-9]-[0-9]-[0-9]{2,2}-[0-9]*-[0-9]*-[0-9]*$", $_POST['dom_SID'])) {
|
||||
StatusMessage("ERROR", "", _("Samba 3 domain SID is invalid!"));
|
||||
}
|
||||
elseif ($_POST['add'] && ($info["count"] > 0)) {
|
||||
StatusMessage("ERROR", "", _("This Samba 3 domain is already present!"));
|
||||
}
|
||||
elseif ($_POST['dom_nextRID'] && !is_numeric($_POST['dom_nextRID'])) StatusMessage("ERROR", "", _("Next RID is not a number!"));
|
||||
elseif ($_POST['dom_nextUserRID'] && !is_numeric($_POST['dom_nextUserRID'])) StatusMessage("ERROR", "", _("Next user RID is not a number!"));
|
||||
elseif ($_POST['dom_nextGroupRID'] && !is_numeric($_POST['dom_nextGroupRID'])) StatusMessage("ERROR", "", _("Next group RID is not a number!"));
|
||||
elseif ($_POST['add'] && !is_numeric($_POST['dom_RIDbase'])) StatusMessage("ERROR", "", _("Algorithmic RID base is not a number!"));
|
||||
// edit entry
|
||||
elseif ($_POST['edit'] == "yes") {
|
||||
$success = true;
|
||||
// change attributes
|
||||
$attr = array();
|
||||
if ($_POST['dom_nextRID'] != $_POST['dom_oldnextRID']) $attr['sambaNextRid'] = $_POST['dom_nextRID'];
|
||||
if ($_POST['dom_nextUserRID'] != $_POST['dom_oldnextUserRID']) $attr['sambaNextUserRid'] = $_POST['dom_nextUserRID'];
|
||||
if ($_POST['dom_nextGroupRID'] != $_POST['dom_oldnextGroupRID']) $attr['sambaNextGroupRid'] = $_POST['dom_nextGroupRID'];
|
||||
if (sizeof($attr) > 0) $success = ldap_modify($_SESSION['ldap']->server(), $_POST['dom_DN'], $attr);
|
||||
// change suffix
|
||||
$RDN = explode(",", $_POST['dom_DN']);
|
||||
$RDN = $RDN[0];
|
||||
$newDN = $RDN . "," . $_POST['dom_suffix'];
|
||||
if ($_POST['dom_DN'] != $newDN) {
|
||||
$success = ldap_rename($_SESSION['ldap']->server(), $_POST['dom_DN'], $RDN, $_POST['dom_suffix'], true);
|
||||
}
|
||||
if ($success) StatusMessage("INFO", _("Domain has been modified."), $_POST['dom_DN']);
|
||||
else StatusMessage("ERROR", "", _("Failed to modify domain!"));
|
||||
}
|
||||
// add entry
|
||||
else {
|
||||
$DN = "sambaDomainName" . "=" . $_POST['dom_name'] . "," . $_POST['dom_suffix'];
|
||||
$attr = array();
|
||||
$attr['objectclass'] = "sambaDomain";
|
||||
$attr['sambaDomainName'] = $_POST['dom_name'];
|
||||
$attr['sambaSID'] = $_POST['dom_SID'];
|
||||
if ($_POST['dom_nextRID']) $attr['sambaNextRid'] = $_POST['dom_nextRID'];
|
||||
if ($_POST['dom_nextGroupRID']) $attr['sambaNextGroupRid'] = $_POST['dom_nextGroupRID'];
|
||||
if ($_POST['dom_nextUserRID']) $attr['sambaNextUserRid'] = $_POST['dom_nextUserRID'];
|
||||
$attr['sambaAlgorithmicRidBase'] = $_POST['dom_RIDbase'];
|
||||
// write to LDAP
|
||||
if (@ldap_add($_SESSION['ldap']->server(), $DN, $attr)) {
|
||||
StatusMessage("INFO", "Domain has been created.", $DN);
|
||||
}
|
||||
else StatusMessage("ERROR", "", _("Failed to add domain!") . "\n<br>" . ldap_error($_SESSION['ldap']->server()));
|
||||
}
|
||||
echo "<p> </p>\n";
|
||||
echo "<p><a href=\"lists/listdomains.php\">" . _("Back to domain list") . "</a></p>\n";
|
||||
echo "</body>\n";
|
||||
echo "</html>\n";
|
||||
}
|
||||
|
||||
|
||||
// back to list
|
||||
elseif ($_POST['sub_back']) {
|
||||
metaRefresh("lists/listdomains.php");
|
||||
}
|
||||
|
||||
|
||||
// delete domain, user was sure
|
||||
elseif ($_POST['sub_delete']) {
|
||||
$DNs = explode(";", $_POST['delDN']);
|
||||
// display page
|
||||
echo $_SESSION['header'];
|
||||
echo "<title>Domain Management</title>\n";
|
||||
echo "<link rel=\"stylesheet\" type=\"text/css\" href=\"../style/layout.css\">\n";
|
||||
echo "</head>\n";
|
||||
echo "<body>\n";
|
||||
// delete DNs
|
||||
for ($i = 0; $i < sizeof($DNs); $i++) {
|
||||
if (ldap_delete($_SESSION['ldap']->server(), $DNs[$i])) StatusMessage("INFO", _("Domain deleted successfully."), $DNs[$i]);
|
||||
else StatusMessage("ERROR", _("Unable to delete domain!"), $DNs[$i]);
|
||||
}
|
||||
echo "<p> </p>\n";
|
||||
echo "<p><a href=\"lists/listdomains.php\">" . _("Back to domain list") . "</a></p>\n";
|
||||
echo "</body>\n";
|
||||
echo "</html>\n";
|
||||
}
|
||||
|
||||
?>
|
|
@ -0,0 +1,55 @@
|
|||
<?php
|
||||
/*
|
||||
$Id$
|
||||
|
||||
This code is part of LDAP Account Manager (http://www.sourceforge.net/projects/lam)
|
||||
Copyright (C) 2003 - 2004 Roland Gruber
|
||||
|
||||
This program is free software; you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation; either version 2 of the License, or
|
||||
(at your option) any later version.
|
||||
|
||||
This program is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with this program; if not, write to the Free Software
|
||||
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
|
||||
|
||||
*/
|
||||
|
||||
/**
|
||||
* This file shows the list views.
|
||||
*
|
||||
* @package lists
|
||||
* @author Roland Gruber
|
||||
*/
|
||||
|
||||
/** Used to get type information. */
|
||||
include_once("../../lib/types.inc");
|
||||
/** Access to configuration options */
|
||||
include_once ("../../lib/config.inc");
|
||||
|
||||
// start session
|
||||
session_save_path("../../sess");
|
||||
@session_start();
|
||||
|
||||
setlanguage();
|
||||
|
||||
|
||||
// create list object if needed
|
||||
$type = $_GET['type'];
|
||||
$listClass = getListClassName($type);
|
||||
if (!isset($_SESSION['list_' . $type])) {
|
||||
$list = new $listClass($type);
|
||||
$_SESSION['list_' . $type] = $list;
|
||||
}
|
||||
|
||||
// show page
|
||||
$_SESSION['list_' . $type]->showPage();
|
||||
|
||||
?>
|
|
@ -1,222 +0,0 @@
|
|||
<?php
|
||||
/*
|
||||
$Id$
|
||||
|
||||
This code is part of LDAP Account Manager (http://www.sourceforge.net/projects/lam)
|
||||
Copyright (C) 2003 - 2004 Roland Gruber
|
||||
|
||||
This program is free software; you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation; either version 2 of the License, or
|
||||
(at your option) any later version.
|
||||
|
||||
This program is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License for more detaexils.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with this program; if not, write to the Free Software
|
||||
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
|
||||
*/
|
||||
|
||||
|
||||
/**
|
||||
* This page displays a list of all Samba domains.
|
||||
*
|
||||
* @package tools
|
||||
* @author Roland Gruber
|
||||
*/
|
||||
|
||||
|
||||
/** Access to configuration options */
|
||||
include_once("../../lib/config.inc");
|
||||
/** Access to LDAP connection */
|
||||
include_once("../../lib/ldap.inc");
|
||||
/** Used to print status messages */
|
||||
include_once("../../lib/status.inc");
|
||||
/** Basic list functions */
|
||||
include_once("../../lib/lists.inc");
|
||||
|
||||
// start session
|
||||
session_save_path("../../sess");
|
||||
@session_start();
|
||||
|
||||
setlanguage();
|
||||
|
||||
$scope = 'domain';
|
||||
|
||||
// copy HTTP-GET variables to HTTP-POST
|
||||
$_POST = $_POST + $_GET;
|
||||
|
||||
if (isset($_SESSION[$scope . 'info'])) $info = $_SESSION[$scope . 'info'];
|
||||
if (isset($_SESSION[$scope . '_units'])) $units = $_SESSION[$scope . '_units'];
|
||||
|
||||
// check if button was pressed and if we have to add/delete a domain
|
||||
if (isset($_POST['new']) || isset($_POST['del'])){
|
||||
// add new domain
|
||||
if (isset($_POST['new'])){
|
||||
metaRefresh("../domain.php?action=new");
|
||||
exit;
|
||||
}
|
||||
// delete domain(s)
|
||||
if (isset($_POST['del'])){
|
||||
// search for checkboxes
|
||||
$domains = array_keys($_POST, "on");
|
||||
$domainstr = implode(";", $domains);
|
||||
if ($domainstr) {
|
||||
metaRefresh("../domain.php?action=delete&DN='$domainstr'");
|
||||
exit;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
echo $_SESSION['header'];
|
||||
echo "<title>listdomains</title>\n";
|
||||
echo "<link rel=\"stylesheet\" type=\"text/css\" href=\"../../style/layout.css\">\n";
|
||||
echo "</head><body>\n";
|
||||
|
||||
listPrintJavaScript();
|
||||
|
||||
// get current page
|
||||
if (isset($_GET["page"])) $page = $_GET["page"];
|
||||
else $page = 1;
|
||||
|
||||
// take maximum count of domain entries shown on one page out of session
|
||||
if ($_SESSION["config"]->get_MaxListEntries() <= 0)
|
||||
$max_page_entries = 10; // default setting, if not yet set
|
||||
else
|
||||
$max_page_entries = $_SESSION["config"]->get_MaxListEntries();
|
||||
|
||||
|
||||
// generate attribute and description tables
|
||||
$attr_array = array(); // list of LDAP attributes to show
|
||||
$desc_array = array(); // list of descriptions for the attributes
|
||||
$attr_array[] = "sambaDomainName";
|
||||
$attr_array[] = "sambaSID";
|
||||
$attr_array[] = "dn";
|
||||
$desc_array[] = strtoupper(_("Domain name"));
|
||||
$desc_array[] = strtoupper(_("Domain SID"));
|
||||
$desc_array[] = "DN";
|
||||
|
||||
if (isset($_GET["sort"])) $sort = $_GET["sort"];
|
||||
else $sort = strtolower($attr_array[0]);
|
||||
|
||||
// check search suffix
|
||||
if (isset($_POST['suffix'])) $suffix = $_POST['suffix']; // new suffix selected via combobox
|
||||
elseif (isset($_SESSION[$scope . '_suffix'])) $suffix = $_SESSION[$scope . '_suffix']; // old suffix from session
|
||||
else $suffix = $_SESSION["config"]->get_Suffix($scope); // default suffix
|
||||
|
||||
$refresh = true;
|
||||
if (isset($_GET['norefresh'])) $refresh = false;
|
||||
if (isset($_POST['refresh'])) $refresh = true;
|
||||
|
||||
if ($refresh) {
|
||||
// configure search filter
|
||||
$filter = "(objectClass=sambaDomain)";
|
||||
$attrs = $attr_array;
|
||||
$sr = @ldap_search($_SESSION["ldap"]->server(), $suffix, $filter, $attrs);
|
||||
if (ldap_errno($_SESSION["ldap"]->server()) == 4) {
|
||||
StatusMessage("WARN", _("LDAP sizelimit exceeded, not all entries are shown."), _("See README.openldap.txt to solve this problem."));
|
||||
}
|
||||
if ($sr) {
|
||||
$info = ldap_get_entries($_SESSION["ldap"]->server, $sr);
|
||||
ldap_free_result($sr);
|
||||
if ($info["count"] == 0) StatusMessage("WARN", "", _("No Samba domains found!"));
|
||||
// delete first array entry which is "count"
|
||||
unset($info['count']);
|
||||
// sort rows by sort column ($sort)
|
||||
$info = listSort($sort, $attr_array, $info);
|
||||
}
|
||||
else StatusMessage("ERROR", _("LDAP Search failed! Please check your preferences."), _("No Samba domains found!"));
|
||||
}
|
||||
// use search result from session
|
||||
else {
|
||||
if (sizeof($info) == 0) StatusMessage("WARN", "", _("No Samba domains found!"));
|
||||
// sort rows by sort column ($sort)
|
||||
if ($info) $info = listSort($sort, $attr_array, $info);
|
||||
}
|
||||
|
||||
echo ("<form action=\"listdomains.php?norefresh=true\" method=\"post\">\n");
|
||||
|
||||
// draw navigation bar if domain accounts were found
|
||||
if (sizeof($info) > 0) {
|
||||
listDrawNavigationBar(sizeof($info), $max_page_entries, $page, $sort, '', "domain", _("%s Samba domain(s) found"));
|
||||
echo ("<br>\n");
|
||||
}
|
||||
|
||||
// print domain table header
|
||||
echo "<table rules=\"all\" class=\"domainlist\" width=\"100%\">\n";
|
||||
echo "<tr class=\"domainlist-head\"><th width=22 height=34></th><th></th>";
|
||||
// table header
|
||||
for ($k = 0; $k < sizeof($desc_array); $k++) {
|
||||
if (strtolower($attr_array[$k]) == $sort) {
|
||||
echo "<th class=\"domainlist-sort\"><a href=\"listdomains.php?".
|
||||
"sort=" . strtolower($attr_array[$k]) . "&norefresh=y" . "\">" . $desc_array[$k] . "</a></th>";
|
||||
}
|
||||
else echo "<th><a href=\"listdomains.php?".
|
||||
"sort=" . strtolower($attr_array[$k]) . "&norefresh=y" . "\">" . $desc_array[$k] . "</a></th>";
|
||||
}
|
||||
echo "</tr>\n";
|
||||
|
||||
// calculate which rows to show
|
||||
$table_begin = ($page - 1) * $max_page_entries;
|
||||
if (($page * $max_page_entries) > sizeof($info)) $table_end = sizeof($info);
|
||||
else $table_end = ($page * $max_page_entries);
|
||||
|
||||
// print domain list
|
||||
for ($i = $table_begin; $i < $table_end; $i++) {
|
||||
echo("<tr class=\"domainlist\" onMouseOver=\"list_over(this, '" . $info[$i]["dn"] . "', '" . $scope . "')\"" .
|
||||
" onMouseOut=\"list_out(this, '" . $info[$i]["dn"] . "', '" . $scope . "')\"" .
|
||||
" onClick=\"list_click(this, '" . $info[$i]["dn"] . "', '" . $scope . "')\"" .
|
||||
" onDblClick=\"parent.frames[1].location.href='../domain.php?action=edit&DN=" . $info[$i]["dn"] . "'\">" .
|
||||
" <td height=22 align=\"center\"><input onClick=\"list_click(this, '" . $info[$i]["dn"] . "', '" . $scope . "')\" type=\"checkbox\" name=\"" . $info[$i]["dn"] . "\"></td>" .
|
||||
" <td align='center'><a href=\"../domain.php?action=edit&DN='" . $info[$i]["dn"] . "'\">" . _("Edit") . "</a></td>");
|
||||
for ($k = 0; $k < sizeof($attr_array); $k++) {
|
||||
echo ("<td>");
|
||||
// print all attribute entries seperated by "; "
|
||||
if (sizeof($info[$i][strtolower($attr_array[$k])]) > 0) {
|
||||
// delete first array entry which is "count"
|
||||
if (is_array($info[$i][strtolower($attr_array[$k])])) unset($info[$i][strtolower($attr_array[$k])]['count']);
|
||||
if (is_array($info[$i][strtolower($attr_array[$k])])) echo implode("; ", $info[$i][strtolower($attr_array[$k])]);
|
||||
else echo $info[$i][strtolower($attr_array[$k])];
|
||||
}
|
||||
echo ("</td>");
|
||||
}
|
||||
echo("</tr>\n");
|
||||
}
|
||||
echo ("</table>");
|
||||
|
||||
echo ("<br>");
|
||||
|
||||
// draw navigation bar if domain accounts were found
|
||||
if (sizeof($info) > 0) {
|
||||
listDrawNavigationBar(sizeof($info), $max_page_entries, $page, $sort, '', "domain", _("%s Samba domain(s) found"));
|
||||
echo ("<br>\n");
|
||||
}
|
||||
|
||||
if ($refresh) {
|
||||
// generate list of possible suffixes
|
||||
$units = $_SESSION['ldap']->search_units($_SESSION["config"]->get_Suffix($scope));
|
||||
}
|
||||
|
||||
// print combobox with possible sub-DNs
|
||||
listShowOUSelection($units, $suffix);
|
||||
|
||||
echo ("<p align=\"left\">\n");
|
||||
echo ("<input type=\"submit\" name=\"new\" value=\"" . _("New Domain") . "\">\n");
|
||||
if (sizeof($info) > 0) echo ("<input type=\"submit\" name=\"del\" value=\"" . _("Delete Domain(s)") . "\">\n");
|
||||
echo ("</p>\n");
|
||||
|
||||
echo ("</form>\n");
|
||||
echo "</body></html>\n";
|
||||
|
||||
|
||||
|
||||
// save variables to session
|
||||
$_SESSION[$scope . 'info'] = $info;
|
||||
$_SESSION[$scope . '_units'] = $units;
|
||||
$_SESSION[$scope . '_suffix'] = $suffix;
|
||||
|
||||
?>
|
|
@ -1,261 +0,0 @@
|
|||
<?php
|
||||
/*
|
||||
$Id$
|
||||
|
||||
This code is part of LDAP Account Manager (http://www.sourceforge.net/projects/lam)
|
||||
Copyright (C) 2003 - 2004 Roland Gruber
|
||||
|
||||
This program is free software; you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation; either version 2 of the License, or
|
||||
(at your option) any later version.
|
||||
|
||||
This program is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License for more detaexils.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with this program; if not, write to the Free Software
|
||||
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
|
||||
*/
|
||||
|
||||
|
||||
/**
|
||||
* This page displays a list of all groups.
|
||||
*
|
||||
* @package lists
|
||||
* @author Roland Gruber
|
||||
*/
|
||||
|
||||
|
||||
/** Access to configuration options */
|
||||
include_once ("../../lib/config.inc");
|
||||
/** Access to LDAP connection */
|
||||
include_once ("../../lib/ldap.inc");
|
||||
/** Used to print status messages */
|
||||
include_once ("../../lib/status.inc");
|
||||
/** Used to create PDF files */
|
||||
include_once("../../lib/pdf.inc");
|
||||
/** Access to account modules */
|
||||
include_once("../../lib/modules.inc");
|
||||
/** Basic list functions */
|
||||
include_once("../../lib/lists.inc");
|
||||
|
||||
// start session
|
||||
session_save_path("../../sess");
|
||||
@session_start();
|
||||
|
||||
setlanguage();
|
||||
|
||||
$scope = 'group';
|
||||
|
||||
// copy HTTP-GET variables to HTTP-POST
|
||||
$_POST = $_POST + $_GET;
|
||||
|
||||
if (isset($_SESSION[$scope . 'info'])) $info = $_SESSION[$scope . 'info'];
|
||||
if (isset($_SESSION[$scope . '_units'])) $units = $_SESSION[$scope . '_units'];
|
||||
|
||||
listDoPost($scope);
|
||||
|
||||
echo $_SESSION['header'];
|
||||
echo "<title>listgroups</title>\n";
|
||||
echo "<link rel=\"stylesheet\" type=\"text/css\" href=\"../../style/layout.css\">\n";
|
||||
echo "</head><body>\n";
|
||||
|
||||
listPrintJavaScript();
|
||||
|
||||
// generate attribute-description table
|
||||
$temp_array = listGetAttributeDescriptionList($scope);
|
||||
$attr_array = array_keys($temp_array); // list of LDAP attributes to show
|
||||
$desc_array = array_values($temp_array); // list of descriptions for the attributes
|
||||
|
||||
// get current page
|
||||
if (isset($_GET["page"])) $page = $_GET["page"];
|
||||
else $page = 1;
|
||||
|
||||
// take maximum count of group entries shown on one page out of session
|
||||
if ($_SESSION["config"]->get_MaxListEntries() <= 0)
|
||||
$max_page_entries = 10; // default setting, if not yet set
|
||||
else
|
||||
$max_page_entries = $_SESSION["config"]->get_MaxListEntries();
|
||||
|
||||
// get sorting column
|
||||
if (isset($_GET["sort"])) $sort = $_GET["sort"];
|
||||
else $sort = strtolower($attr_array[0]);
|
||||
|
||||
// check search suffix
|
||||
if ($_POST['suffix']) $suffix = $_POST['suffix']; // new suffix selected via combobox
|
||||
elseif ($_SESSION[$scope . '_suffix']) $suffix = $_SESSION[$scope . '_suffix']; // old suffix from session
|
||||
else $suffix = $_SESSION["config"]->get_Suffix($scope); // default suffix
|
||||
|
||||
$refresh = true;
|
||||
if (isset($_GET['norefresh'])) $refresh = false;
|
||||
if (isset($_POST['refresh'])) $refresh = true;
|
||||
|
||||
if ($refresh) {
|
||||
// configure search filter
|
||||
$module_filter = get_ldap_filter($scope); // basic filter is provided by modules
|
||||
$filter = "(&" . $module_filter . ")";
|
||||
$attrs = $attr_array;
|
||||
$sr = @ldap_search($_SESSION["ldap"]->server(), $suffix, $filter, $attrs);
|
||||
if (ldap_errno($_SESSION["ldap"]->server()) == 4) {
|
||||
StatusMessage("WARN", _("LDAP sizelimit exceeded, not all entries are shown."), _("See README.openldap.txt to solve this problem."));
|
||||
}
|
||||
if ($sr) {
|
||||
$info = ldap_get_entries($_SESSION["ldap"]->server, $sr);
|
||||
ldap_free_result($sr);
|
||||
// delete first array entry which is "count"
|
||||
unset($info['count']);
|
||||
// save position in original $info
|
||||
for ($i = 0; $i < sizeof($info); $i++) $info[$i]['LAM_ID'] = $i;
|
||||
// save results
|
||||
$_SESSION[$scope . 'info'] = $info;
|
||||
}
|
||||
else {
|
||||
$info = array();
|
||||
$_SESSION[$scope . 'info'] = array();
|
||||
StatusMessage("ERROR", _("LDAP Search failed! Please check your preferences."), _("No groups found!"));
|
||||
}
|
||||
}
|
||||
|
||||
$filter = listBuildFilter($attr_array);
|
||||
$info = listFilterAccounts($info, $filter);
|
||||
if (sizeof($info) == 0) StatusMessage("WARN", "", _("No groups found!"));
|
||||
// sort rows by sort column ($sort)
|
||||
if ($info) {
|
||||
$info = listSort($sort, $attr_array, $info);
|
||||
}
|
||||
|
||||
// build filter URL
|
||||
$searchFilter = array();
|
||||
$filterAttributes = array_keys($filter);
|
||||
for ($i = 0; $i < sizeof($filterAttributes); $i++) {
|
||||
$searchFilter[] = "filter" . $filterAttributes[$i] . "=" . $filter[$filterAttributes[$i]]['original'];
|
||||
}
|
||||
if (sizeof($searchFilter) > 0) {
|
||||
$searchFilter = "&" . implode("&", $searchFilter);
|
||||
}
|
||||
else {
|
||||
$searchFilter = "";
|
||||
}
|
||||
|
||||
echo ("<form action=\"listgroups.php?norefresh=true\" method=\"post\">\n");
|
||||
|
||||
// draw navigation bar if group accounts were found
|
||||
if (sizeof($info) > 0) {
|
||||
listDrawNavigationBar(sizeof($info), $max_page_entries, $page, $sort, $searchFilter, $scope, _("%s group(s) found"));
|
||||
echo ("<br>");
|
||||
}
|
||||
|
||||
// account table head
|
||||
listPrintTableHeader($scope, $searchFilter, $desc_array, $attr_array, $_POST, $sort);
|
||||
|
||||
// calculate which rows to show
|
||||
$table_begin = ($page - 1) * $max_page_entries;
|
||||
if (($page * $max_page_entries) > sizeof($info)) $table_end = sizeof($info);
|
||||
else $table_end = ($page * $max_page_entries);
|
||||
|
||||
if (sizeof($info) > 0) {
|
||||
// print group list
|
||||
for ($i = $table_begin; $i < $table_end; $i++) {
|
||||
echo("<tr class=\"grouplist\" onMouseOver=\"list_over(this, '" . $info[$i]['LAM_ID'] . "', '" . $scope . "')\"\n" .
|
||||
" onMouseOut=\"list_out(this, '" . $info[$i]['LAM_ID'] . "', '" . $scope . "')\"\n" .
|
||||
" onClick=\"list_click(this, '" . $info[$i]['LAM_ID'] . "', '" . $scope . "')\"\n" .
|
||||
" onDblClick=\"parent.frames[1].location.href='../account/edit.php?type=group&DN=" . $info[$i]['dn'] . "'\">\n");
|
||||
if (isset($_GET['selectall'])) {
|
||||
echo " <td height=22 align=\"center\"><input onClick=\"list_click(this, '" . $info[$i]['LAM_ID'] . "', '" . $scope . "')\" type=\"checkbox\"" .
|
||||
" name=\"" . $info[$i]['LAM_ID'] . "\" checked></td>\n";
|
||||
}
|
||||
else {
|
||||
echo " <td height=22 align=\"center\"><input onClick=\"list_click(this, '" . $info[$i]['LAM_ID'] . "', '" . $scope . "')\" type=\"checkbox\"" .
|
||||
" name=\"" . $info[$i]['LAM_ID'] . "\"></td>\n";
|
||||
}
|
||||
echo (" <td align='center'><a href=\"../account/edit.php?type=group&DN='" . $info[$i]['dn'] . "'\">" . _("Edit") . "</a></td>\n");
|
||||
for ($k = 0; $k < sizeof($attr_array); $k++) {
|
||||
echo ("<td>");
|
||||
// print all attribute entries seperated by "; "
|
||||
$attrName = strtolower($attr_array[$k]);
|
||||
if (isset($info[$i][$attrName]) && sizeof($info[$i][$attrName]) > 0) {
|
||||
// delete first array entry which is "count"
|
||||
if (is_array($info[$i][$attrName])) unset($info[$i][$attrName]['count']);
|
||||
// generate links for group members
|
||||
if ($attrName == "memberuid") {
|
||||
// sort array
|
||||
sort($info[$i][$attrName]);
|
||||
// make a link for each member of the group
|
||||
$linklist = array();
|
||||
for ($d = 0; $d < sizeof($info[$i][$attrName]); $d++) {
|
||||
$user = $info[$i][$attrName][$d]; // user name
|
||||
$linklist[$d] = "<a href=\"userlink.php?user='" . $user . "' \">" . $user . "</a>";
|
||||
}
|
||||
echo implode("; ", $linklist);
|
||||
}
|
||||
// print all other attributes
|
||||
else {
|
||||
if (is_array($info[$i][$attrName])) {
|
||||
// delete "count" entry
|
||||
unset($info[$i][$attrName]['count']);
|
||||
// sort array
|
||||
sort($info[$i][$attrName]);
|
||||
echo implode("; ", $info[$i][$attrName]);
|
||||
}
|
||||
else echo $info[$i][$attrName];
|
||||
}
|
||||
}
|
||||
echo ("</td>\n");
|
||||
}
|
||||
echo("</tr>\n");
|
||||
}
|
||||
// display select all link
|
||||
$colspan = sizeof($attr_array) + 1;
|
||||
echo "<tr class=\"grouplist\">\n";
|
||||
echo "<td align=\"center\"><img src=\"../../graphics/select.png\" alt=\"select all\"></td>\n";
|
||||
echo "<td colspan=$colspan> <a href=\"listgroups.php?norefresh=y&page=" . $page . "&sort=" . $sort .
|
||||
$searchFilter . "&selectall=yes\">" .
|
||||
"<font color=\"black\"><b>" . _("Select all") . "</b></font></a></td>\n";
|
||||
echo "</tr>\n";
|
||||
}
|
||||
echo ("</table>");
|
||||
echo ("<br>");
|
||||
|
||||
// draw navigation bar if group accounts were found
|
||||
if (sizeof($info) > 0) {
|
||||
listDrawNavigationBar(sizeof($info), $max_page_entries, $page, $sort, $searchFilter, $scope, _("%s group(s) found"));
|
||||
echo ("<br>\n");
|
||||
}
|
||||
|
||||
if ($refresh) {
|
||||
// generate list of possible suffixes
|
||||
$units = $_SESSION['ldap']->search_units($_SESSION["config"]->get_Suffix($scope));
|
||||
}
|
||||
|
||||
// print combobox with possible sub-DNs
|
||||
listShowOUSelection($units, $suffix);
|
||||
|
||||
echo ("<input type=\"submit\" name=\"new\" value=\"" . _("New Group") . "\">\n");
|
||||
if (sizeof($info) > 0) {
|
||||
echo ("<input type=\"submit\" name=\"del\" value=\"" . _("Delete Group(s)") . "\">\n");
|
||||
echo ("<br><br><br>\n");
|
||||
echo "<fieldset><legend><b>PDF</b></legend>\n";
|
||||
echo ("<b>" . _('PDF structure') . ":</b> <select name=\"pdf_structure\">\n");
|
||||
$pdf_structures = getPDFStructureDefinitions($scope);
|
||||
foreach($pdf_structures as $pdf_structure) {
|
||||
echo "<option " . (($pdf_structure == 'default') ? " selected" : "") . ">" . $pdf_structure . "</option>";
|
||||
}
|
||||
echo "</select> \n";
|
||||
echo ("<input type=\"submit\" name=\"pdf\" value=\"" . _("Create PDF for selected group(s)") . "\">\n");
|
||||
echo " ";
|
||||
echo ("<input type=\"submit\" name=\"pdf_all\" value=\"" . _("Create PDF for all groups") . "\">\n");
|
||||
echo "</fieldset>";
|
||||
}
|
||||
|
||||
echo ("</form>\n");
|
||||
echo "</body></html>\n";
|
||||
|
||||
// save variables to session
|
||||
$_SESSION[$scope . '_units'] = $units;
|
||||
$_SESSION[$scope . '_suffix'] = $suffix;
|
||||
|
||||
?>
|
|
@ -1,246 +0,0 @@
|
|||
<?php
|
||||
/*
|
||||
$Id$
|
||||
|
||||
This code is part of LDAP Account Manager (http://www.sourceforge.net/projects/lam)
|
||||
Copyright (C) 2003 - 2004 Roland Gruber
|
||||
|
||||
This program is free software; you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation; either version 2 of the License, or
|
||||
(at your option) any later version.
|
||||
|
||||
This program is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License for more detaexils.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with this program; if not, write to the Free Software
|
||||
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
|
||||
*/
|
||||
|
||||
|
||||
/**
|
||||
* This page displays a list of all hosts.
|
||||
*
|
||||
* @package lists
|
||||
* @author Roland Gruber
|
||||
*/
|
||||
|
||||
|
||||
/** Access to configuration options */
|
||||
include_once ("../../lib/config.inc");
|
||||
/** Access to LDAP connection */
|
||||
include_once ("../../lib/ldap.inc");
|
||||
/** Used to print status messages */
|
||||
include_once ("../../lib/status.inc");
|
||||
/** Used to create PDF files */
|
||||
include_once("../../lib/pdf.inc");
|
||||
/** Access to account modules */
|
||||
include_once("../../lib/modules.inc");
|
||||
/** Basic list functions */
|
||||
include_once("../../lib/lists.inc");
|
||||
|
||||
// start session
|
||||
session_save_path("../../sess");
|
||||
@session_start();
|
||||
|
||||
setlanguage();
|
||||
|
||||
$scope = 'host';
|
||||
|
||||
// copy HTTP-GET variables to HTTP-POST
|
||||
$_POST = $_POST + $_GET;
|
||||
|
||||
if (isset($_SESSION[$scope . 'info'])) $info = $_SESSION[$scope . 'info'];
|
||||
if (isset($_SESSION[$scope . '_units'])) $units = $_SESSION[$scope . '_units'];
|
||||
|
||||
listDoPost($scope);
|
||||
|
||||
echo $_SESSION['header'];
|
||||
echo "<title>listhosts</title>\n";
|
||||
echo "<link rel=\"stylesheet\" type=\"text/css\" href=\"../../style/layout.css\">\n";
|
||||
echo "</head><body>\n";
|
||||
|
||||
listPrintJavaScript();
|
||||
|
||||
// generate attribute-description table
|
||||
$temp_array = listGetAttributeDescriptionList($scope);
|
||||
$attr_array = array_keys($temp_array); // list of LDAP attributes to show
|
||||
$desc_array = array_values($temp_array); // list of descriptions for the attributes
|
||||
|
||||
// get current page
|
||||
if (isset($_GET["page"])) $page = $_GET["page"];
|
||||
else $page = 1;
|
||||
|
||||
// take maximum count of host entries shown on one page out of session
|
||||
if ($_SESSION["config"]->get_MaxListEntries() <= 0)
|
||||
$max_page_entries = 10; // default setting, if not yet set
|
||||
else
|
||||
$max_page_entries = $_SESSION["config"]->get_MaxListEntries();
|
||||
|
||||
// get sorting column
|
||||
if (isset($_GET["sort"])) $sort = $_GET["sort"];
|
||||
else $sort = strtolower($attr_array[0]);
|
||||
|
||||
// check search suffix
|
||||
if ($_POST['suffix']) $suffix = $_POST['suffix']; // new suffix selected via combobox
|
||||
elseif ($_SESSION[$scope . '_suffix']) $suffix = $_SESSION[$scope . '_suffix']; // old suffix from session
|
||||
else $suffix = $_SESSION["config"]->get_Suffix($scope); // default suffix
|
||||
|
||||
$refresh = true;
|
||||
if (isset($_GET['norefresh'])) $refresh = false;
|
||||
if (isset($_POST['refresh'])) $refresh = true;
|
||||
|
||||
if ($refresh) {
|
||||
// configure search filter
|
||||
$module_filter = get_ldap_filter("host"); // basic filter is provided by modules
|
||||
$filter = "(&" . $module_filter . ")";
|
||||
$attrs = $attr_array;
|
||||
$sr = @ldap_search($_SESSION["ldap"]->server(), $suffix, $filter, $attrs);
|
||||
if (ldap_errno($_SESSION["ldap"]->server()) == 4) {
|
||||
StatusMessage("WARN", _("LDAP sizelimit exceeded, not all entries are shown."), _("See README.openldap.txt to solve this problem."));
|
||||
}
|
||||
if ($sr) {
|
||||
$info = ldap_get_entries($_SESSION["ldap"]->server, $sr);
|
||||
ldap_free_result($sr);
|
||||
// delete first array entry which is "count"
|
||||
unset($info['count']);
|
||||
// save position in original $info
|
||||
for ($i = 0; $i < sizeof($info); $i++) $info[$i]['LAM_ID'] = $i;
|
||||
// save results
|
||||
$_SESSION[$scope . 'info'] = $info;
|
||||
}
|
||||
else {
|
||||
$info = array();
|
||||
$_SESSION[$scope . 'info'] = array();
|
||||
StatusMessage("ERROR", _("LDAP Search failed! Please check your preferences."), _("No hosts found!"));
|
||||
}
|
||||
}
|
||||
|
||||
$filter = listBuildFilter($attr_array);
|
||||
$info = listFilterAccounts($info, $filter);
|
||||
if (sizeof($info) == 0) StatusMessage("WARN", "", _("No hosts found!"));
|
||||
// sort rows by sort column ($sort)
|
||||
if ($info) {
|
||||
$info = listSort($sort, $attr_array, $info);
|
||||
}
|
||||
|
||||
// build filter URL
|
||||
$searchFilter = array();
|
||||
$filterAttributes = array_keys($filter);
|
||||
for ($i = 0; $i < sizeof($filterAttributes); $i++) {
|
||||
$searchFilter[] = "filter" . $filterAttributes[$i] . "=" . $filter[$filterAttributes[$i]]['original'];
|
||||
}
|
||||
if (sizeof($searchFilter) > 0) {
|
||||
$searchFilter = "&" . implode("&", $searchFilter);
|
||||
}
|
||||
else {
|
||||
$searchFilter = "";
|
||||
}
|
||||
|
||||
echo ("<form action=\"listhosts.php?norefresh=true\" method=\"post\">\n");
|
||||
|
||||
// draw navigation bar if host accounts were found
|
||||
if (sizeof($info) > 0) {
|
||||
listDrawNavigationBar(sizeof($info), $max_page_entries, $page, $sort, $searchFilter, "host", _("%s host(s) found"));
|
||||
echo ("<br>\n");
|
||||
}
|
||||
|
||||
// account table head
|
||||
listPrintTableHeader("host", $searchFilter, $desc_array, $attr_array, $_POST, $sort);
|
||||
|
||||
// calculate which rows to show
|
||||
$table_begin = ($page - 1) * $max_page_entries;
|
||||
if (($page * $max_page_entries) > sizeof($info)) $table_end = sizeof($info);
|
||||
else $table_end = ($page * $max_page_entries);
|
||||
|
||||
if (sizeof($info) > 0) {
|
||||
// print host list
|
||||
for ($i = $table_begin; $i < $table_end; $i++) {
|
||||
echo("<tr class=\"hostlist\" onMouseOver=\"list_over(this, '" . $info[$i]['LAM_ID'] . "', '" . $scope . "')\"\n" .
|
||||
" onMouseOut=\"list_out(this, '" . $info[$i]['LAM_ID'] . "', '" . $scope . "')\"\n" .
|
||||
" onClick=\"list_click(this, '" . $info[$i]['LAM_ID'] . "', '" . $scope . "')\"\n" .
|
||||
" onDblClick=\"parent.frames[1].location.href='../account/edit.php?type=host&DN=" . $info[$i]['dn'] . "'\">\n");
|
||||
if (isset($_GET['selectall'])) {
|
||||
echo " <td height=22 align=\"center\"><input onClick=\"list_click(this, '" . $info[$i]['LAM_ID'] . "', '" . $scope . "')\"" .
|
||||
" type=\"checkbox\" checked name=\"" . $info[$i]['LAM_ID'] . "\"></td>\n";
|
||||
}
|
||||
else {
|
||||
echo " <td height=22 align=\"center\"><input onClick=\"list_click(this, '" . $info[$i]['LAM_ID'] . "', '" . $scope . "')\"" .
|
||||
" type=\"checkbox\" name=\"" . $info[$i]['LAM_ID'] . "\"></td>\n";
|
||||
}
|
||||
echo (" <td align='center'><a href=\"../account/edit.php?type=host&DN='" . $info[$i]['dn'] . "'\">" . _("Edit") . "</a></td>\n");
|
||||
for ($k = 0; $k < sizeof($attr_array); $k++) {
|
||||
echo ("<td>");
|
||||
// print all attribute entries seperated by "; "
|
||||
$attrName = strtolower($attr_array[$k]);
|
||||
if (isset($info[$i][$attrName]) && sizeof($info[$i][$attrName]) > 0) {
|
||||
// delete "count" entry
|
||||
unset($info[$i][$attrName]['count']);
|
||||
if (is_array($info[$i][$attrName])) {
|
||||
// sort array
|
||||
sort($info[$i][$attrName]);
|
||||
echo implode("; ", $info[$i][$attrName]);
|
||||
}
|
||||
else echo $info[$i][$attrName];
|
||||
}
|
||||
echo ("</td>\n");
|
||||
}
|
||||
echo("</tr>\n");
|
||||
}
|
||||
// display select all link
|
||||
$colspan = sizeof($attr_array) + 1;
|
||||
echo "<tr class=\"hostlist\">\n";
|
||||
echo "<td align=\"center\"><img src=\"../../graphics/select.png\" alt=\"select all\"></td>\n";
|
||||
echo "<td colspan=$colspan> <a href=\"listhosts.php?norefresh=y&page=" . $page . "&sort=" . $sort .
|
||||
$searchFilter . "&selectall=yes\">" .
|
||||
"<font color=\"black\"><b>" . _("Select all") . "</b></font></a></td>\n";
|
||||
echo "</tr>\n";
|
||||
}
|
||||
echo ("</table>");
|
||||
|
||||
echo ("<br>");
|
||||
|
||||
// draw navigation bar if host accounts were found
|
||||
if (sizeof($info) > 0) {
|
||||
listDrawNavigationBar(sizeof($info), $max_page_entries, $page, $sort, $searchFilter, "host", _("%s host(s) found"));
|
||||
echo ("<br>\n");
|
||||
}
|
||||
|
||||
if ($refresh) {
|
||||
// generate list of possible suffixes
|
||||
$units = $_SESSION['ldap']->search_units($_SESSION["config"]->get_Suffix($scope));
|
||||
}
|
||||
|
||||
// print combobox with possible sub-DNs
|
||||
listShowOUSelection($units, $suffix);
|
||||
|
||||
// add/delete/PDF buttons
|
||||
echo ("<input type=\"submit\" name=\"new\" value=\"" . _("New Host") . "\">\n");
|
||||
if (sizeof($info) > 0) {
|
||||
echo ("<input type=\"submit\" name=\"del\" value=\"" . _("Delete Host(s)") . "\">\n");
|
||||
echo ("<br><br><br>\n");
|
||||
echo "<fieldset><legend><b>PDF</b></legend>\n";
|
||||
echo ("<b>" . _('PDF structure') . ":</b> <select name=\"pdf_structure\">\n");
|
||||
$pdf_structures = getPDFStructureDefinitions($scope);
|
||||
foreach($pdf_structures as $pdf_structure) {
|
||||
echo "<option " . (($pdf_structure == 'default') ? " selected" : "") . ">" . $pdf_structure . "</option>";
|
||||
}
|
||||
echo "</select> \n";
|
||||
echo ("<input type=\"submit\" name=\"pdf\" value=\"" . _("Create PDF for selected host(s)") . "\">\n");
|
||||
echo " ";
|
||||
echo ("<input type=\"submit\" name=\"pdf_all\" value=\"" . _("Create PDF for all hosts") . "\">\n");
|
||||
echo "</fieldset>";
|
||||
}
|
||||
|
||||
echo ("</form>\n");
|
||||
echo "</body></html>\n";
|
||||
|
||||
// save variables to session
|
||||
$_SESSION[$scope . '_units'] = $units;
|
||||
$_SESSION[$scope . '_suffix'] = $suffix;
|
||||
|
||||
?>
|
|
@ -1,309 +0,0 @@
|
|||
<?php
|
||||
/*
|
||||
$Id$
|
||||
|
||||
This code is part of LDAP Account Manager (http://www.sourceforge.net/projects/lam)
|
||||
Copyright (C) 2003 Roland Gruber, Leonhard Walchshäusl
|
||||
Copyright (C) 2004 Roland Gruber
|
||||
|
||||
This program is free software; you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation; either version 2 of the License, or
|
||||
(at your option) any later version.
|
||||
|
||||
This program is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License for more detaexils.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with this program; if not, write to the Free Software
|
||||
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
|
||||
*/
|
||||
|
||||
|
||||
/**
|
||||
* This page displays a list of all users.
|
||||
*
|
||||
* @package lists
|
||||
* @author Roland Gruber
|
||||
*/
|
||||
|
||||
|
||||
/** Access to configuration options */
|
||||
include_once ("../../lib/config.inc");
|
||||
/** Access to LDAP connection */
|
||||
include_once ("../../lib/ldap.inc");
|
||||
/** Used to print status messages */
|
||||
include_once ("../../lib/status.inc");
|
||||
/** Used to create PDF files */
|
||||
include_once("../../lib/pdf.inc");
|
||||
/** Access to account modules */
|
||||
include_once("../../lib/modules.inc");
|
||||
/** Basic list functions */
|
||||
include_once("../../lib/lists.inc");
|
||||
|
||||
|
||||
// start session
|
||||
session_save_path("../../sess");
|
||||
@session_start();
|
||||
|
||||
setlanguage();
|
||||
|
||||
$scope = 'user';
|
||||
|
||||
// copy HTTP-GET variables to HTTP-POST
|
||||
$_POST = $_POST + $_GET;
|
||||
|
||||
$refresh = true;
|
||||
if (isset($_GET['norefresh'])) $refresh = false;
|
||||
if (isset($_POST['refresh'])) $refresh = true;
|
||||
|
||||
// check if primary group should be translated
|
||||
if (isset($_POST['trans_primary']) && ($_POST['trans_primary'] == 'on')) $trans_primary = "on";
|
||||
else $trans_primary = "off";
|
||||
if (isset($_SESSION['trans_primary_hash'])) $trans_primary_hash = $_SESSION['trans_primary_hash'];
|
||||
else $trans_primary_hash = array();
|
||||
// generate hash table for group translation
|
||||
if ($trans_primary == "on" && ($refresh || (sizeof($trans_primary_hash) == 0))) {
|
||||
$trans_primary_hash = array();
|
||||
$grp_suffix = $_SESSION['config']->get_Suffix('group');
|
||||
$filter = "objectClass=posixGroup";
|
||||
$attrs = array("cn", "gidNumber");
|
||||
$sr = @ldap_search($_SESSION["ldap"]->server(), $grp_suffix, $filter, $attrs);
|
||||
if ($sr) {
|
||||
$info = @ldap_get_entries($_SESSION["ldap"]->server(), $sr);
|
||||
unset($info['count']); // delete count entry
|
||||
for ($i = 0; $i < sizeof($info); $i++) {
|
||||
$trans_primary_hash[$info[$i]['gidnumber'][0]] = $info[$i]['cn'][0];
|
||||
}
|
||||
$_SESSION['trans_primary_hash'] = $trans_primary_hash;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
if (isset($_SESSION[$scope . 'info'])) $info = $_SESSION[$scope . 'info'];
|
||||
if (isset($_SESSION[$scope . '_units'])) $units = $_SESSION[$scope . '_units'];
|
||||
|
||||
listDoPost($scope);
|
||||
|
||||
echo $_SESSION['header'];
|
||||
|
||||
echo "<title>listusers</title>\n";
|
||||
echo "<link rel=\"stylesheet\" type=\"text/css\" href=\"../../style/layout.css\">\n";
|
||||
echo "</head><body>\n";
|
||||
|
||||
listPrintJavaScript();
|
||||
|
||||
// get current page
|
||||
if (isset($_GET["page"])) $page = $_GET["page"];
|
||||
else $page = 1;
|
||||
|
||||
// take maximum count of user entries shown on one page out of session
|
||||
if ($_SESSION["config"]->get_MaxListEntries() <= 0) {
|
||||
$max_page_entries = 10; // default setting, if not yet set
|
||||
}
|
||||
else $max_page_entries = $_SESSION["config"]->get_MaxListEntries();
|
||||
|
||||
// generate attribute-description table
|
||||
$temp_array = listGetAttributeDescriptionList($scope);
|
||||
$attr_array = array_keys($temp_array); // list of LDAP attributes to show
|
||||
$desc_array = array_values($temp_array); // list of descriptions for the attributes
|
||||
|
||||
if (isset($_GET["sort"])) $sort = $_GET["sort"];
|
||||
else $sort = strtolower($attr_array[0]);
|
||||
|
||||
// check search suffix
|
||||
if (isset($_POST['suffix'])) $suffix = $_POST['suffix']; // new suffix selected via combobox
|
||||
elseif (isset($_SESSION[$scope . '_suffix'])) $suffix = $_SESSION[$scope . '_suffix']; // old suffix from session
|
||||
else $suffix = $_SESSION["config"]->get_Suffix($scope); // default suffix
|
||||
|
||||
|
||||
// configure search filter for LDAP
|
||||
$module_filter = get_ldap_filter($scope); // basic filter is provided by modules
|
||||
$filter = "(&" . $module_filter . ")";
|
||||
|
||||
if ($refresh) {
|
||||
$attrs = $attr_array;
|
||||
$sr = @ldap_search($_SESSION["ldap"]->server(), $suffix, $filter, $attrs);
|
||||
if (ldap_errno($_SESSION["ldap"]->server()) == 4) {
|
||||
StatusMessage("WARN", _("LDAP sizelimit exceeded, not all entries are shown."), _("See README.openldap.txt to solve this problem."));
|
||||
}
|
||||
if ($sr) {
|
||||
$info = ldap_get_entries ($_SESSION["ldap"]->server, $sr);
|
||||
ldap_free_result ($sr);
|
||||
// delete first array entry which is "count"
|
||||
unset($info['count']);
|
||||
// save position in original $info
|
||||
for ($i = 0; $i < sizeof($info); $i++) $info[$i]['LAM_ID'] = $i;
|
||||
// save results
|
||||
$_SESSION[$scope . 'info'] = $info;
|
||||
}
|
||||
else {
|
||||
$_SESSION[$scope . 'info'] = array();
|
||||
$info = array();
|
||||
StatusMessage("ERROR",
|
||||
_("LDAP Search failed! Please check your preferences."),
|
||||
_("No users found!"));
|
||||
}
|
||||
}
|
||||
|
||||
$filter = listBuildFilter($attr_array);
|
||||
$info = listFilterAccounts($info, $filter);
|
||||
if (sizeof($info) == 0) StatusMessage("WARN", "", _("No users found!"));
|
||||
// sort rows by sort column ($sort)
|
||||
if ($info) {
|
||||
$info = listSort($sort, $attr_array, $info);
|
||||
}
|
||||
|
||||
// build filter URL
|
||||
$searchFilter = array();
|
||||
$filterAttributes = array_keys($filter);
|
||||
for ($i = 0; $i < sizeof($filterAttributes); $i++) {
|
||||
$searchFilter[] = "filter" . $filterAttributes[$i] . "=" . $filter[$filterAttributes[$i]]['original'];
|
||||
}
|
||||
if (sizeof($searchFilter) > 0) {
|
||||
$searchFilter = "&" . implode("&", $searchFilter);
|
||||
}
|
||||
else {
|
||||
$searchFilter = "";
|
||||
}
|
||||
|
||||
echo ("<form action=\"listusers.php?norefresh=true\" method=\"post\">\n");
|
||||
|
||||
// display table only if users exist in LDAP
|
||||
if (sizeof($info) != 0) {
|
||||
// create navigation bar on top of user table
|
||||
listDrawNavigationBar(sizeof($info), $max_page_entries, $page, $sort,
|
||||
$searchFilter . "&trans_primary=" . $trans_primary, $scope, _("%s user(s) found"));
|
||||
echo ("<br />");
|
||||
}
|
||||
|
||||
// account table head
|
||||
listPrintTableHeader($scope, $searchFilter . "&trans_primary=" . $trans_primary, $desc_array, $attr_array, $_POST, $sort);
|
||||
|
||||
// calculate which rows to show
|
||||
$table_begin = ($page - 1) * $max_page_entries;
|
||||
if (($page * $max_page_entries) > sizeof($info)) $table_end = sizeof($info);
|
||||
else $table_end = ($page * $max_page_entries);
|
||||
|
||||
if (sizeof($info) != 0) {
|
||||
// translate GIDs and resort array if selected
|
||||
if ($trans_primary == "on") {
|
||||
// translate GIDs
|
||||
for ($i = 0; $i < sizeof($info); $i++) {
|
||||
if (isset($trans_primary_hash[$info[$i]['gidnumber'][0]])) {
|
||||
$info[$i]['gidnumber'][0] = $trans_primary_hash[$info[$i]['gidnumber'][0]];
|
||||
}
|
||||
}
|
||||
// resort if needed
|
||||
if ($sort == "gidnumber") {
|
||||
$info = listSort($sort, $attr_array, $info);
|
||||
}
|
||||
}
|
||||
// print user list
|
||||
for ($i = $table_begin; $i < $table_end; $i++) {
|
||||
echo("<tr class=\"userlist\"\nonMouseOver=\"list_over(this, '" . $info[$i]['LAM_ID'] . "', '" . $scope . "')\"\n" .
|
||||
"onMouseOut=\"list_out(this, '" . $info[$i]['LAM_ID'] . "', '" . $scope . "')\"\n" .
|
||||
"onClick=\"list_click(this, '" . $info[$i]['LAM_ID'] . "', '" . $scope . "')\"\n" .
|
||||
"onDblClick=\"parent.frames[1].location.href='../account/edit.php?type=user&DN=" . $info[$i]['dn'] . "'\">\n");
|
||||
// checkboxes if selectall = "yes"
|
||||
if (isset($_GET['selectall'])) {
|
||||
echo "<td height=22 align=\"center\">\n<input onClick=\"list_click(this, '" . $info[$i]['LAM_ID'] . "', '" . $scope . "')\" type=\"checkbox\" name=\"" .
|
||||
$info[$i]['LAM_ID'] . "\" checked>\n</td>\n";
|
||||
}
|
||||
else {
|
||||
echo "<td height=22 align=\"center\">\n<input onClick=\"list_click(this, '" . $info[$i]['LAM_ID'] . "', '" . $scope . "')\" type=\"checkbox\" name=\"" .
|
||||
$info[$i]['LAM_ID'] . "\">\n</td>\n";
|
||||
}
|
||||
echo ("<td align='center'>\n<a href=\"../account/edit.php?type=user&DN='" . $info[$i]['dn'] . "'\">" .
|
||||
_("Edit") . "</a>\n</td>\n");
|
||||
for ($k = 0; $k < sizeof($attr_array); $k++) {
|
||||
echo ("<td>\n");
|
||||
// print attribute values
|
||||
$attrName = strtolower($attr_array[$k]);
|
||||
if (isset($info[$i][$attrName]) && sizeof($info[$i][$attrName]) > 0) {
|
||||
if (is_array($info[$i][$attrName])) {
|
||||
// delete first array entry which is "count"
|
||||
unset($info[$i][$attrName]['count']);
|
||||
// sort array
|
||||
sort($info[$i][$attrName]);
|
||||
// print all attribute entries seperated by "; "
|
||||
echo implode("; ", $info[$i][$attrName]) . "\n";
|
||||
}
|
||||
else echo $info[$i][$attrName] . "\n";
|
||||
}
|
||||
echo ("</td>\n");
|
||||
}
|
||||
echo("</tr>\n");
|
||||
}
|
||||
// display select all link
|
||||
$colspan = sizeof($attr_array) + 1;
|
||||
echo "<tr class=\"userlist\">\n";
|
||||
echo "<td align=\"center\"><img src=\"../../graphics/select.png\" alt=\"select all\"></td>\n";
|
||||
echo "<td colspan=$colspan> <a href=\"listusers.php?norefresh=1&page=" . $page . "&sort=" . $sort .
|
||||
$searchFilter . "&trans_primary=" . $trans_primary . "&selectall=yes\">" .
|
||||
"<font color=\"black\"><b>" . _("Select all") . "</b></font></a></td>\n";
|
||||
echo "</tr>\n";
|
||||
}
|
||||
echo ("</table>\n");
|
||||
|
||||
echo ("<br>");
|
||||
if (sizeof($info) != 0) {
|
||||
listDrawNavigationBar(sizeof($info), $max_page_entries, $page, $sort,
|
||||
$searchFilter . "&trans_primary=" . $trans_primary, $scope, _("%s user(s) found"));
|
||||
echo ("<br>");
|
||||
}
|
||||
|
||||
if ($refresh) {
|
||||
// generate list of possible suffixes
|
||||
$units = $_SESSION['ldap']->search_units($_SESSION["config"]->get_Suffix($scope));
|
||||
}
|
||||
|
||||
// print combobox with possible sub-DNs
|
||||
listShowOUSelection($units, $suffix);
|
||||
|
||||
// show translate GID to group name box if there is a column with gidnumber
|
||||
if (in_array("gidnumber", $attr_array)) {
|
||||
echo "<p align=\"left\">\n";
|
||||
echo "<b>" . _("Translate GID number to group name") . ": </b>";
|
||||
if ($trans_primary == "on") {
|
||||
echo "<input type=\"checkbox\" name=\"trans_primary\" checked>";
|
||||
}
|
||||
else echo "<input type=\"checkbox\" name=\"trans_primary\">";
|
||||
echo (" <input type=\"submit\" name=\"apply\" value=\"" . _("Apply") . "\">");
|
||||
echo "</p>\n";
|
||||
}
|
||||
|
||||
echo ("<p> </p>\n");
|
||||
|
||||
// new/delete/PDF buttons
|
||||
echo ("<input type=\"submit\" name=\"new\" value=\"" . _("New user") . "\">\n");
|
||||
if (sizeof($info) != 0) {
|
||||
echo ("<input type=\"submit\" name=\"del\" value=\"" . _("Delete user(s)") . "\">\n");
|
||||
echo ("<br><br><br>\n");
|
||||
echo "<fieldset><legend><b>PDF</b></legend>\n";
|
||||
echo ("<b>" . _('PDF structure') . ":</b> <select name=\"pdf_structure\">\n");
|
||||
$pdf_structures = getPDFStructureDefinitions($scope);
|
||||
foreach($pdf_structures as $pdf_structure) {
|
||||
echo "<option " . (($pdf_structure == 'default') ? " selected" : "") . ">" . $pdf_structure . "</option>";
|
||||
}
|
||||
echo "</select> \n";
|
||||
echo ("<input type=\"submit\" name=\"pdf\" value=\"" . _("Create PDF for selected user(s)") . "\">\n");
|
||||
echo " ";
|
||||
echo ("<input type=\"submit\" name=\"pdf_all\" value=\"" . _("Create PDF for all users") . "\">\n");
|
||||
echo "</fieldset>";
|
||||
}
|
||||
|
||||
echo ("<p> </p>\n");
|
||||
|
||||
echo ("</form>\n");
|
||||
echo "</body></html>\n";
|
||||
|
||||
|
||||
// save variables to session
|
||||
$_SESSION[$scope . '_units'] = $units;
|
||||
$_SESSION[$scope . '_suffix'] = $suffix;
|
||||
|
||||
?>
|
|
@ -62,7 +62,7 @@ else {
|
|||
echo "</head><body>\n";
|
||||
StatusMessage("ERROR", "", _("This user was not found!") . " (" . $user . ")");
|
||||
echo "<p> </p>";
|
||||
echo "<p><a href=\"listgroups.php\">" . _("Back to group list") . "</a></p>";
|
||||
echo "<p><a href=\"list.php?type=group\">" . _("Back to group list") . "</a></p>";
|
||||
echo ("</body></html>\n");
|
||||
}
|
||||
|
||||
|
|
|
@ -36,37 +36,15 @@ if (!isset($_SESSION['cache'])) {
|
|||
$_SESSION['cache'] = new cache();
|
||||
}
|
||||
|
||||
$startPage = "";
|
||||
|
||||
// check if all suffixes in conf-file exist
|
||||
$conf = $_SESSION['config'];
|
||||
$new_suffs = array();
|
||||
if ($conf->get_Suffix('user') && ($conf->get_Suffix('user') != "")) {
|
||||
$startPage = "./lists/listusers.php";
|
||||
$info = @ldap_search($_SESSION['ldap']->server, $conf->get_Suffix('user'), "", array());
|
||||
// get list of active types
|
||||
$types = $_SESSION['config']->get_ActiveTypes();
|
||||
for ($i = 0; $i < sizeof($types); $i++) {
|
||||
$info = @ldap_search($_SESSION['ldap']->server, $conf->get_Suffix($types[$i]), "(objectClass=*)", array());
|
||||
$res = @ldap_get_entries($_SESSION['ldap']->server, $info);
|
||||
if (!$res && !in_array($conf->get_Suffix('user'), $new_suffs)) $new_suffs[] = $conf->get_Suffix('user');
|
||||
}
|
||||
if ($conf->get_Suffix('group') && ($conf->get_Suffix('group') != "")) {
|
||||
if ($startPage == "") {
|
||||
$startPage = "./lists/listgroups.php";
|
||||
}
|
||||
$info = @ldap_search($_SESSION['ldap']->server, $conf->get_Suffix('group'), "", array());
|
||||
$res = @ldap_get_entries($_SESSION['ldap']->server, $info);
|
||||
if (!$res && !in_array($conf->get_Suffix('group'), $new_suffs)) $new_suffs[] = $conf->get_Suffix('group');
|
||||
}
|
||||
if ($conf->get_Suffix('host') && ($conf->get_Suffix('host') != "")) {
|
||||
if ($startPage == "") {
|
||||
$startPage = "./lists/listhosts.php";
|
||||
}
|
||||
$info = @ldap_search($_SESSION['ldap']->server, $conf->get_Suffix('host'), "", array());
|
||||
$res = @ldap_get_entries($_SESSION['ldap']->server, $info);
|
||||
if (!$res && !in_array($conf->get_Suffix('host'), $new_suffs)) $new_suffs[] = $conf->get_Suffix('host');
|
||||
}
|
||||
if ($conf->get_Suffix('domain') && ($conf->get_Suffix('domain') != "")) {
|
||||
$info = @ldap_search($_SESSION['ldap']->server, $conf->get_Suffix('domain'), "", array());
|
||||
$res = @ldap_get_entries($_SESSION['ldap']->server, $info);
|
||||
if (!$res && !in_array($conf->get_Suffix('domain'), $new_suffs)) $new_suffs[] = $conf->get_Suffix('domain');
|
||||
if (!$res && !in_array($conf->get_Suffix($types[$i]), $new_suffs)) $new_suffs[] = $conf->get_Suffix($types[$i]);
|
||||
}
|
||||
|
||||
// get encoding
|
||||
|
@ -88,7 +66,14 @@ echo ("<frame src=\"./main_header.php\" name=\"head\" frameborder=\"0\" scrollin
|
|||
// display page to add suffixes, if needed
|
||||
if (sizeof($new_suffs) > 0) echo ("<frame src=\"initsuff.php?suffs='" . implode(";", $new_suffs) .
|
||||
"'\" name=\"mainpart\" frameborder=\"0\" scrolling=\"yes\">\n");
|
||||
else echo ("<frame src=\"$startPage\" name=\"mainpart\" frameborder=\"0\" scrolling=\"yes\">\n");
|
||||
else {
|
||||
if (sizeof($types) > 0) {
|
||||
echo ("<frame src=\"./lists/list.php?type=" . $types[0] . "\" name=\"mainpart\" frameborder=\"0\" scrolling=\"yes\">\n");
|
||||
}
|
||||
else {
|
||||
echo ("<frame src=\"./tree/tree_view.php\" name=\"mainpart\" frameborder=\"0\" scrolling=\"yes\">\n");
|
||||
}
|
||||
}
|
||||
echo ("<noframes>\n");
|
||||
echo ("This page requires a browser that can show frames!\n");
|
||||
echo ("</noframes>\n");
|
||||
|
|
|
@ -40,10 +40,8 @@ setlanguage();
|
|||
echo $_SESSION['header'];
|
||||
|
||||
// number of list views (users, groups, ...)
|
||||
$lists = 0;
|
||||
if ($_SESSION['config']->get_Suffix('user') != "") $lists++;
|
||||
if ($_SESSION['config']->get_Suffix('group') != "") $lists++;
|
||||
if ($_SESSION['config']->get_Suffix('host') != "") $lists++;
|
||||
$types = $_SESSION['config']->get_ActiveTypes();
|
||||
$lists = sizeof($types);
|
||||
if ($_SESSION['config']->get_Suffix('tree') != "") $lists++;
|
||||
|
||||
?>
|
||||
|
@ -63,7 +61,7 @@ if ($_SESSION['config']->get_Suffix('tree') != "") $lists++;
|
|||
<?php
|
||||
echo "<td colspan=$lists align=\"center\">\n";
|
||||
?>
|
||||
<a href="http://lam.sf.net" target="new_window"><img src="../graphics/banner.jpg" border=1 alt="LDAP Account Manager"></a>
|
||||
<a href="http://lam.sourceforge.net" target="new_window"><img src="../graphics/banner.jpg" border=1 alt="LDAP Account Manager"></a>
|
||||
</td>
|
||||
<td width="200" align="right" height=20><img src="../graphics/go.png"> <a href="./logout.php" target="_top"><big><b><?php echo _("Logout") ?></b></big></a></td>
|
||||
</tr>
|
||||
|
@ -79,14 +77,11 @@ if ($_SESSION['config']->get_Suffix('tree') != "") $lists++;
|
|||
if ($_SESSION['config']->get_Suffix('tree') != "") {
|
||||
echo '<td width="120" align="center"><img src="../graphics/process.png"> <a href="./tree/tree_view.php" target="mainpart"><big>' . _("Tree view") . '</big></a></td>' . "\n";
|
||||
}
|
||||
if ($_SESSION['config']->get_Suffix('user') != "") {
|
||||
echo '<td width="120" align="center"><img src="../graphics/user.png"> <a href="./lists/listusers.php" target="mainpart"><big>' . _("Users") . '</big></a></td>' . "\n";
|
||||
}
|
||||
if ($_SESSION['config']->get_Suffix('group') != "") {
|
||||
echo '<td width="120" align="center"><img src="../graphics/ou.png"> <a href="./lists/listgroups.php" target="mainpart"><big>' . _("Groups") . '</big></a></td>' . "\n";
|
||||
}
|
||||
if ($_SESSION['config']->get_Suffix('host') != "") {
|
||||
echo '<td width="120" align="center"><img src="../graphics/host.png"> <a href="./lists/listhosts.php" target="mainpart"><big>' . _("Hosts") . '</big></a></td>' . "\n";
|
||||
for ($i = 0; $i < sizeof($types); $i++) {
|
||||
echo '<td width="120" align="center">';
|
||||
echo '<img src="../graphics/' . $types[$i] . '.png"> ';
|
||||
echo '<a href="./lists/list.php?type=' . $types[$i] . '" target="mainpart"><big>' . getTypeAlias($types[$i]) . '</big></a>';
|
||||
echo '</td>' . "\n";
|
||||
}
|
||||
?>
|
||||
<td></td>
|
||||
|
|
|
@ -63,16 +63,20 @@ if (isset($_GET['getCSV'])) {
|
|||
exit;
|
||||
}
|
||||
|
||||
$types = $_SESSION['config']->get_ActiveTypes();
|
||||
|
||||
echo $_SESSION['header'];
|
||||
echo "<title>account upload</title>\n";
|
||||
echo "<link rel=\"stylesheet\" type=\"text/css\" href=\"../style/layout.css\">\n";
|
||||
for ($i = 0; $i < sizeof($types); $i++) {
|
||||
echo "<link rel=\"stylesheet\" type=\"text/css\" href=\"../style/type_" . $types[$i] . ".css\">\n";
|
||||
}
|
||||
echo "</head>\n";
|
||||
echo "<body>\n";
|
||||
|
||||
// check if account specific page should be shown
|
||||
if (isset($_POST['user'])) showMainPage('user');
|
||||
elseif (isset($_POST['group'])) showMainPage('group');
|
||||
elseif (isset($_POST['host'])) showMainPage('host');
|
||||
if (isset($_POST['type'])) showMainPage($_POST['type']);
|
||||
|
||||
// show start page
|
||||
else {
|
||||
echo "<h1 align=\"center\">" . _("Account creation via file upload") . "</h1>\n";
|
||||
|
@ -91,18 +95,15 @@ else {
|
|||
|
||||
echo "<form enctype=\"multipart/form-data\" action=\"masscreate.php\" method=\"post\">\n";
|
||||
echo "<table style=\"border-color: grey\" cellpadding=\"10\" border=\"2\" cellspacing=\"0\">\n";
|
||||
echo "<tr>\n";
|
||||
echo "<th class=\"userlist-sort\">\n";
|
||||
echo "<input type=\"submit\" name=\"user\" value=\"" . _("Create user accounts") . "\">\n";
|
||||
echo "</th>\n";
|
||||
echo "<th class=\"grouplist-sort\">\n";
|
||||
echo "<input type=\"submit\" name=\"group\" value=\"" . _("Create group accounts") . "\">\n";
|
||||
echo "</th>\n";
|
||||
echo "<th class=\"hostlist-sort\">\n";
|
||||
echo "<input type=\"submit\" name=\"host\" value=\"" . _("Create host accounts") . "\">\n";
|
||||
echo "</th>\n";
|
||||
echo "</tr>\n";
|
||||
for ($i = 0; $i < sizeof($types); $i++) {
|
||||
echo "<tr>\n";
|
||||
echo "<th class=\"" . $types[$i] . "list-sort\" align=\"center\"><input type=\"radio\" name=\"type\" value=\"" . $types[$i] . "\"></th>\n";
|
||||
echo "<th class=\"" . $types[$i] . "list-sort\" align=\"left\">" . getTypeAlias($types[$i]) . "</th>\n";
|
||||
echo "</tr>\n";
|
||||
}
|
||||
echo "</table>\n";
|
||||
echo "<br><br>\n";
|
||||
echo "<input type=\"submit\" name=\"submit\" value=\"". _("Submit") . "\">\n";
|
||||
echo "</form>\n";
|
||||
|
||||
echo "</body>\n";
|
||||
|
@ -161,7 +162,6 @@ function showMainPage($scope) {
|
|||
echo "<ul>\n";
|
||||
echo "<li><b>" . _("Identifier") . ":</b> " . "dn_rdn</li>\n";
|
||||
echo "<li><b>" . _("Possible values") . ":</b> " . implode(", ", getRDNAttributes($scope)) . "</li>\n";
|
||||
echo "<li><b>" . _("Example value") . ":</b> " . "uid</li>\n";
|
||||
echo "</ul>\n";
|
||||
echo "</td>\n";
|
||||
echo "</tr>\n";
|
||||
|
|
|
@ -41,268 +41,78 @@ session_save_path("../sess");
|
|||
|
||||
setlanguage();
|
||||
|
||||
$types = $_SESSION['config']->get_ActiveTypes();
|
||||
|
||||
// check if submit button was pressed
|
||||
if ($_POST['submit']) {
|
||||
// user operations
|
||||
// new user ou
|
||||
if ($_POST['type'] == "new_usr") {
|
||||
// create ou if valid
|
||||
if (eregi("^[a-z0-9 _\\-]+$", $_POST['newsuff_u'])) {
|
||||
// check if ou already exists
|
||||
$new_dn = "ou=" . $_POST['newsuff_u'] . "," . $_POST['usersuff_n'];
|
||||
if (!in_array(strtolower($new_dn), $_SESSION['ldap']->search_units($_POST['usersuff_n']))) {
|
||||
// add new ou
|
||||
$ou = array();
|
||||
$ou['objectClass'] = "organizationalunit";
|
||||
$ou['ou'] = $_POST['newsuff_u'];
|
||||
$ret = @ldap_add($_SESSION['ldap']->server(), $new_dn, $ou);
|
||||
if ($ret) {
|
||||
$message = _("New OU created successfully.");
|
||||
}
|
||||
else {
|
||||
$error = _("Unable to create new OU!");
|
||||
// check user input
|
||||
for ($i = 0; $i < sizeof($types); $i++) {
|
||||
// new ou
|
||||
if ($_POST['type'] == "new_" . $types[$i]) {
|
||||
// create ou if valid
|
||||
if (eregi("^[a-z0-9 _\\-]+$", $_POST['newname_' . $types[$i]])) {
|
||||
// check if ou already exists
|
||||
$new_dn = "ou=" . $_POST['newname_' . $types[$i]] . "," . $_POST['parentsuff_' . $types[$i]];
|
||||
if (!in_array($new_dn, $_SESSION['ldap']->search_units($_POST['parentsuff_' . $types[$i]]))) {
|
||||
// add new ou
|
||||
$ou = array();
|
||||
$ou['objectClass'] = "organizationalunit";
|
||||
$ou['ou'] = $_POST['newname_' . $types[$i]];
|
||||
$ret = @ldap_add($_SESSION['ldap']->server(), $new_dn, $ou);
|
||||
if ($ret) {
|
||||
$message = _("New OU created successfully.");
|
||||
}
|
||||
else {
|
||||
$error = _("Unable to create new OU!");
|
||||
}
|
||||
}
|
||||
else $error = _("OU already exists!");
|
||||
}
|
||||
else $error = _("OU already exists!");
|
||||
}
|
||||
// show errormessage if ou is invalid
|
||||
else {
|
||||
$error = _("OU is invalid!") . " " . $_POST['newsuff_u'];
|
||||
}
|
||||
}
|
||||
// delete ou, user was sure
|
||||
elseif (($_POST['type'] == "del_usr") && ($_POST['sure'])) {
|
||||
$ret = @ldap_delete($_SESSION['ldap']->server(), $_POST['usersuff_d']);
|
||||
if ($ret) {
|
||||
$message = _("OU deleted successfully.");
|
||||
}
|
||||
else {
|
||||
$error = _("Unable to delete OU!");
|
||||
}
|
||||
}
|
||||
// do not delete ou
|
||||
elseif (($_POST['type'] == "del_usr") && ($_POST['abort'])) {
|
||||
display_main();
|
||||
exit;
|
||||
}
|
||||
// ask if user is sure to delete
|
||||
elseif ($_POST['type'] == "del_usr") {
|
||||
// check for sub entries
|
||||
$sr = @ldap_list($_SESSION['ldap']->server(), $_POST['usersuff_d'], "ObjectClass=*", array(""));
|
||||
$info = @ldap_get_entries($_SESSION['ldap']->server(), $sr);
|
||||
if ($sr && $info['count'] == 0) {
|
||||
$text = "<br>\n" .
|
||||
"<p><big><b>" . _("Do you really want to delete this OU?") . " </b></big>" . "\n" .
|
||||
"<br>\n<p>" . $_POST['usersuff_d'] . "</p>\n" .
|
||||
"<br>\n" .
|
||||
"<form action=\"ou_edit.php?type=user\" method=\"post\">\n" .
|
||||
"<input type=\"hidden\" name=\"type\" value=\"del_usr\">\n" .
|
||||
"<input type=\"hidden\" name=\"submit\" value=\"submit\">\n" .
|
||||
"<input type=\"hidden\" name=\"usersuff_d\" value=\"" . $_POST['usersuff_d'] . "\">\n" .
|
||||
"<input type=\"submit\" name=\"sure\" value=\"" . _("Submit") . "\">\n" .
|
||||
"<input type=\"submit\" name=\"abort\" value=\"" . _("Abort") . "\">\n" .
|
||||
"</form>";
|
||||
}
|
||||
else {
|
||||
$error = _("OU is not empty or invalid!");
|
||||
}
|
||||
}
|
||||
|
||||
// group operations
|
||||
// new group ou
|
||||
if ($_POST['type'] == "new_grp") {
|
||||
// create ou if valid
|
||||
if (eregi("^[a-z0-9 _\\-]+$", $_POST['newsuff_g'])) {
|
||||
// check if ou already exists
|
||||
$new_dn = "ou=" . $_POST['newsuff_g'] . "," . $_POST['groupsuff_n'];
|
||||
if (!in_array(strtolower($new_dn), $_SESSION['ldap']->search_units($_POST['groupsuff_n']))) {
|
||||
// add new ou
|
||||
$ou = array();
|
||||
$ou['objectClass'] = "organizationalunit";
|
||||
$ou['ou'] = $_POST['newsuff_g'];
|
||||
$ret = @ldap_add($_SESSION['ldap']->server(), $new_dn, $ou);
|
||||
if ($ret) {
|
||||
$message = _("New OU created successfully.");
|
||||
}
|
||||
else {
|
||||
$error = _("Unable to create new OU!");
|
||||
}
|
||||
// show errormessage if ou is invalid
|
||||
else {
|
||||
$error = _("OU is invalid!") . " " . $_POST['newname_' . $types[$i]];
|
||||
}
|
||||
else $error = _("OU already exists!");
|
||||
}
|
||||
// show errormessage if ou is invalid
|
||||
else {
|
||||
$error = _("OU is invalid!") . " " . $_POST['newsuff_g'];
|
||||
}
|
||||
}
|
||||
// delete ou, user was sure
|
||||
elseif (($_POST['type'] == "del_grp") && ($_POST['sure'])) {
|
||||
$ret = @ldap_delete($_SESSION['ldap']->server(), $_POST['groupsuff_d']);
|
||||
if ($ret) {
|
||||
$message = _("OU deleted successfully.");
|
||||
}
|
||||
else {
|
||||
$error = _("Unable to delete OU!");
|
||||
}
|
||||
}
|
||||
// do not delete ou
|
||||
elseif (($_POST['type'] == "del_grp") && ($_POST['abort'])) {
|
||||
display_main();
|
||||
exit;
|
||||
}
|
||||
// ask if user is sure to delete
|
||||
elseif ($_POST['type'] == "del_grp") {
|
||||
// check for sub entries
|
||||
$sr = @ldap_list($_SESSION['ldap']->server(), $_POST['groupsuff_d'], "ObjectClass=*", array(""));
|
||||
$info = @ldap_get_entries($_SESSION['ldap']->server(), $sr);
|
||||
if ($sr && $info['count'] == 0) {
|
||||
$text = "<br>\n" .
|
||||
"<p><big><b>" . _("Do you really want to delete this OU?") . " </b></big>" . "\n" .
|
||||
"<br>\n<p>" . $_POST['groupsuff_d'] . "</p>\n" .
|
||||
"<br>\n" .
|
||||
"<form action=\"ou_edit.php?type=group\" method=\"post\">\n" .
|
||||
"<input type=\"hidden\" name=\"type\" value=\"del_grp\">\n" .
|
||||
"<input type=\"hidden\" name=\"submit\" value=\"submit\">\n" .
|
||||
"<input type=\"hidden\" name=\"groupsuff_d\" value=\"" . $_POST['groupsuff_d'] . "\">\n" .
|
||||
"<input type=\"submit\" name=\"sure\" value=\"" . _("Submit") . "\">\n" .
|
||||
"<input type=\"submit\" name=\"abort\" value=\"" . _("Abort") . "\">\n" .
|
||||
"</form>";
|
||||
}
|
||||
else {
|
||||
$error = _("OU is not empty or invalid!");
|
||||
}
|
||||
}
|
||||
|
||||
// host operations
|
||||
// new host ou
|
||||
if ($_POST['type'] == "new_hst") {
|
||||
// create ou if valid
|
||||
if (eregi("^[a-z0-9 _\\-]+$", $_POST['newsuff_h'])) {
|
||||
// check if ou already exists
|
||||
$new_dn = "ou=" . $_POST['newsuff_h'] . "," . $_POST['hostsuff_n'];
|
||||
if (!in_array(strtolower($new_dn), $_SESSION['ldap']->search_units($_POST['hostsuff_n']))) {
|
||||
// add new ou
|
||||
$ou = array();
|
||||
$ou['objectClass'] = "organizationalunit";
|
||||
$ou['ou'] = $_POST['newsuff_h'];
|
||||
$ret = @ldap_add($_SESSION['ldap']->server(), $new_dn, $ou);
|
||||
if ($ret) {
|
||||
$message = _("New OU created successfully.");
|
||||
}
|
||||
else {
|
||||
$error = _("Unable to create new OU!");
|
||||
}
|
||||
// delete ou, user was sure
|
||||
elseif (($_POST['type'] == "del_" . $types[$i]) && ($_POST['sure'])) {
|
||||
$ret = @ldap_delete($_SESSION['ldap']->server(), $_POST['deletename_' . $types[$i]]);
|
||||
if ($ret) {
|
||||
$message = _("OU deleted successfully.");
|
||||
}
|
||||
else $error = _("OU already exists!");
|
||||
}
|
||||
// show errormessage if ou is invalid
|
||||
else {
|
||||
$error = _("OU is invalid!") . " " . $_POST['newsuff_h'];
|
||||
}
|
||||
}
|
||||
// delete ou, user was sure
|
||||
elseif (($_POST['type'] == "del_hst") && ($_POST['sure'])) {
|
||||
$ret = @ldap_delete($_SESSION['ldap']->server(), $_POST['hostsuff_d']);
|
||||
if ($ret) {
|
||||
$message = _("OU deleted successfully.");
|
||||
}
|
||||
else {
|
||||
$error = _("Unable to delete OU!");
|
||||
}
|
||||
}
|
||||
// do not delete ou
|
||||
elseif (($_POST['type'] == "del_hst") && ($_POST['abort'])) {
|
||||
display_main();
|
||||
exit;
|
||||
}
|
||||
// ask if user is sure to delete
|
||||
elseif ($_POST['type'] == "del_hst") {
|
||||
// check for sub entries
|
||||
$sr = @ldap_list($_SESSION['ldap']->server(), $_POST['hostsuff_d'], "ObjectClass=*", array(""));
|
||||
$info = @ldap_get_entries($_SESSION['ldap']->server(), $sr);
|
||||
if ($sr && $info['count'] == 0) {
|
||||
$text = "<br>\n" .
|
||||
"<p><big><b>" . _("Do you really want to delete this OU?") . " </b></big>" . "\n" .
|
||||
"<br>\n<p>" . $_POST['hostsuff_d'] . "</p>\n" .
|
||||
"<br>\n" .
|
||||
"<form action=\"ou_edit.php?type=host\" method=\"post\">\n" .
|
||||
"<input type=\"hidden\" name=\"type\" value=\"del_hst\">\n" .
|
||||
"<input type=\"hidden\" name=\"submit\" value=\"submit\">\n" .
|
||||
"<input type=\"hidden\" name=\"hostsuff_d\" value=\"" . $_POST['hostsuff_d'] . "\">\n" .
|
||||
"<input type=\"submit\" name=\"sure\" value=\"" . _("Submit") . "\">\n" .
|
||||
"<input type=\"submit\" name=\"abort\" value=\"" . _("Abort") . "\">\n" .
|
||||
"</form>";
|
||||
}
|
||||
else {
|
||||
$error = _("OU is not empty or invalid!");
|
||||
}
|
||||
}
|
||||
|
||||
// domain operations
|
||||
// new domain ou
|
||||
if ($_POST['type'] == "new_dom") {
|
||||
// create ou if valid
|
||||
if (eregi("^[a-z0-9 _\\-]+$", $_POST['newsuff_d'])) {
|
||||
// check if ou already exists
|
||||
$new_dn = "ou=" . $_POST['newsuff_d'] . "," . $_POST['domsuff_n'];
|
||||
if (!in_array(strtolower($new_dn), $_SESSION['ldap']->search_units($_POST['domsuff_n']))) {
|
||||
// add new ou
|
||||
$ou = array();
|
||||
$ou['objectClass'] = "organizationalunit";
|
||||
$ou['ou'] = $_POST['newsuff_d'];
|
||||
$ret = @ldap_add($_SESSION['ldap']->server(), $new_dn, $ou);
|
||||
if ($ret) {
|
||||
$message = _("New OU created successfully.");
|
||||
}
|
||||
else {
|
||||
$error = _("Unable to create new OU!");
|
||||
}
|
||||
else {
|
||||
$error = _("Unable to delete OU!");
|
||||
}
|
||||
else $error = _("OU already exists!");
|
||||
}
|
||||
// show errormessage if ou is invalid
|
||||
else {
|
||||
$error = _("OU is invalid!") . " " . $_POST['newsuff_d'];
|
||||
// do not delete ou
|
||||
elseif (($_POST['type'] == "del_" . $types[$i]) && ($_POST['abort'])) {
|
||||
display_main();
|
||||
exit;
|
||||
}
|
||||
// ask if user is sure to delete
|
||||
elseif ($_POST['type'] == "del_" . $types[$i]) {
|
||||
// check for sub entries
|
||||
$sr = @ldap_list($_SESSION['ldap']->server(), $_POST['deletename_' . $types[$i]], "ObjectClass=*", array(""));
|
||||
$info = @ldap_get_entries($_SESSION['ldap']->server(), $sr);
|
||||
if ($sr && $info['count'] == 0) {
|
||||
$text = "<br>\n" .
|
||||
"<p><big><b>" . _("Do you really want to delete this OU?") . " </b></big>" . "\n" .
|
||||
"<br>\n<p>" . $_POST['deletename_' . $types[$i]] . "</p>\n" .
|
||||
"<br>\n" .
|
||||
"<form action=\"ou_edit.php\" method=\"post\">\n" .
|
||||
"<input type=\"hidden\" name=\"type\" value=\"del_" . $types[$i] . "\">\n" .
|
||||
"<input type=\"hidden\" name=\"submit\" value=\"submit\">\n" .
|
||||
"<input type=\"hidden\" name=\"deletename_" . $types[$i] . "\" value=\"" . $_POST['deletename_' . $types[$i]] . "\">\n" .
|
||||
"<input type=\"submit\" name=\"sure\" value=\"" . _("Submit") . "\">\n" .
|
||||
"<input type=\"submit\" name=\"abort\" value=\"" . _("Abort") . "\">\n" .
|
||||
"</form>";
|
||||
}
|
||||
else {
|
||||
$error = _("OU is not empty or invalid!");
|
||||
}
|
||||
}
|
||||
}
|
||||
// delete ou, user was sure
|
||||
elseif (($_POST['type'] == "del_dom") && ($_POST['sure'])) {
|
||||
$ret = @ldap_delete($_SESSION['ldap']->server(), $_POST['domsuff_d']);
|
||||
if ($ret) {
|
||||
$message = _("OU deleted successfully.");
|
||||
}
|
||||
else {
|
||||
$error = _("Unable to delete OU!");
|
||||
}
|
||||
}
|
||||
// do not delete ou
|
||||
elseif (($_POST['type'] == "del_dom") && ($_POST['abort'])) {
|
||||
display_main();
|
||||
exit;
|
||||
}
|
||||
// ask if user is sure to delete
|
||||
elseif ($_POST['type'] == "del_dom") {
|
||||
// check for sub entries
|
||||
$sr = @ldap_list($_SESSION['ldap']->server(), $_POST['domsuff_d'], "ObjectClass=*", array(""));
|
||||
$info = @ldap_get_entries($_SESSION['ldap']->server(), $sr);
|
||||
if ($sr && $info['count'] == 0) {
|
||||
$text = "<br>\n" .
|
||||
"<p><big><b>" . _("Do you really want to delete this OU?") . " </b></big>" . "\n" .
|
||||
"<br>\n<p>" . $_POST['domsuff_d'] . "</p>\n" .
|
||||
"<br>\n" .
|
||||
"<form action=\"ou_edit.php?type=host\" method=\"post\">\n" .
|
||||
"<input type=\"hidden\" name=\"type\" value=\"del_dom\">\n" .
|
||||
"<input type=\"hidden\" name=\"submit\" value=\"submit\">\n" .
|
||||
"<input type=\"hidden\" name=\"domsuff_d\" value=\"" . $_POST['domsuff_d'] . "\">\n" .
|
||||
"<input type=\"submit\" name=\"sure\" value=\"" . _("Submit") . "\">\n" .
|
||||
"<input type=\"submit\" name=\"abort\" value=\"" . _("Abort") . "\">\n" .
|
||||
"</form>";
|
||||
}
|
||||
else {
|
||||
$error = _("OU is not empty or invalid!");
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
// print header
|
||||
echo $_SESSION['header'];
|
||||
echo ("<title>OU-Editor</title>\n");
|
||||
|
@ -328,153 +138,47 @@ exit;
|
|||
else display_main();
|
||||
|
||||
function display_main() {
|
||||
$types = $_SESSION['config']->get_ActiveTypes();
|
||||
// display main page
|
||||
echo $_SESSION['header'];
|
||||
echo ("<title>OU-Editor</title>\n");
|
||||
echo ("<link rel=\"stylesheet\" type=\"text/css\" href=\"../style/layout.css\">\n");
|
||||
for ($i = 0; $i < sizeof($types); $i++) {
|
||||
echo ("<link rel=\"stylesheet\" type=\"text/css\" href=\"../style/type_" . $types[$i] . ".css\">\n");
|
||||
}
|
||||
echo ("</head>\n");
|
||||
echo ("<body>\n");
|
||||
echo "<h1>" . _("OU editor") . "</h1>";
|
||||
echo ("<br>\n");
|
||||
echo ("<form action=\"ou_edit.php?type=user\" method=\"post\">\n");
|
||||
echo ("<form action=\"ou_edit.php\" method=\"post\">\n");
|
||||
|
||||
// user OUs
|
||||
if ($_SESSION["config"]->get_Suffix('user') != "") {
|
||||
// display fieldsets
|
||||
for ($i = 0; $i < sizeof($types); $i++) {
|
||||
// generate lists of possible suffixes
|
||||
$usr_units = $_SESSION['ldap']->search_units($_SESSION["config"]->get_Suffix('user'));
|
||||
echo ("<fieldset><legend><b>" . _("Users") . "</b></legend>\n");
|
||||
$units = $_SESSION['ldap']->search_units($_SESSION["config"]->get_Suffix($types[$i]));
|
||||
echo ("<fieldset class=\"" . $types[$i] . "edit\"><legend><b>" . getTypeAlias($types[$i]) . "</b></legend>\n");
|
||||
echo ("<table border=0>\n");
|
||||
// new OU
|
||||
echo ("<tr>\n");
|
||||
echo ("<td><input type=radio name=\"type\" value=\"new_usr\" checked></td>\n");
|
||||
echo ("<td><input type=radio name=\"type\" value=\"new_" . $types[$i] . "\"></td>\n");
|
||||
echo ("<td><b>" . _("New organizational unit") . ":</b></td>\n");
|
||||
echo ("<td> </td>\n");
|
||||
echo ("<td><select size=1 name=usersuff_n>");
|
||||
for ($i = 0; $i < sizeof($usr_units); $i++) {
|
||||
echo ("<option>" . $usr_units[$i] . "</option>\n");
|
||||
echo ("<td><select size=1 name=parentsuff_" . $types[$i] . ">");
|
||||
for ($u = 0; $u < sizeof($units); $u++) {
|
||||
echo ("<option>" . $units[$u] . "</option>\n");
|
||||
}
|
||||
echo ("</select><td>\n");
|
||||
echo ("<td><input type=text name=newsuff_u></td>\n");
|
||||
echo ("<td><input type=text name=newname_" . $types[$i] . "></td>\n");
|
||||
echo ("<td><a href=\"help.php?HelpNumber=601\" target=\"lamhelp\">". _("Help") ."</a></td>\n");
|
||||
echo ("</tr>\n");
|
||||
// delete OU
|
||||
echo ("<tr>\n");
|
||||
echo ("<td><input type=radio name=\"type\" value=\"del_usr\"></td>\n");
|
||||
echo ("<td><input type=radio name=\"type\" value=\"del_" . $types[$i] . "\"></td>\n");
|
||||
echo ("<td><b>" . _("Delete organizational unit") . ":</b></td>\n");
|
||||
echo ("<td> </td>\n");
|
||||
echo ("<td><select size=1 name=usersuff_d>");
|
||||
for ($i = 0; $i < sizeof($usr_units); $i++) {
|
||||
echo ("<option>" . $usr_units[$i] . "</option>\n");
|
||||
}
|
||||
echo ("</select><td>\n");
|
||||
echo ("<td> </td>\n");
|
||||
echo ("<td><a href=\"help.php?HelpNumber=602\" target=\"lamhelp\">". _("Help") ."</a></td>\n");
|
||||
echo ("</tr>\n");
|
||||
echo ("</table>\n");
|
||||
echo ("</fieldset>\n");
|
||||
echo ("<br>\n");
|
||||
}
|
||||
|
||||
// group OUs
|
||||
if ($_SESSION["config"]->get_Suffix('group') != "") {
|
||||
// generate lists of possible suffixes
|
||||
$grp_units = $_SESSION['ldap']->search_units($_SESSION["config"]->get_Suffix('group'));
|
||||
echo ("<fieldset><legend><b>" . _("Groups") . "</b></legend>\n");
|
||||
echo ("<table border=0>\n");
|
||||
// new OU
|
||||
echo ("<tr>\n");
|
||||
echo ("<td><input type=radio name=\"type\" value=\"new_grp\"></td>\n");
|
||||
echo ("<td><b>" . _("New organizational unit") . ":</b></td>\n");
|
||||
echo ("<td> </td>\n");
|
||||
echo ("<td><select size=1 name=groupsuff_n>");
|
||||
for ($i = 0; $i < sizeof($grp_units); $i++) {
|
||||
echo ("<option>" . $grp_units[$i] . "</option>\n");
|
||||
}
|
||||
echo ("</select><td>\n");
|
||||
echo ("<td><input type=text name=newsuff_g></td>\n");
|
||||
echo ("<td><a href=\"help.php?HelpNumber=601\" target=\"lamhelp\">". _("Help") ."</a></td>\n");
|
||||
echo ("</tr>\n");
|
||||
// delete OU
|
||||
echo ("<tr>\n");
|
||||
echo ("<td><input type=radio name=\"type\" value=\"del_grp\"></td>\n");
|
||||
echo ("<td><b>" . _("Delete organizational unit") . ":</b></td>\n");
|
||||
echo ("<td> </td>\n");
|
||||
echo ("<td><select size=1 name=groupsuff_d>");
|
||||
for ($i = 0; $i < sizeof($grp_units); $i++) {
|
||||
echo ("<option>" . $grp_units[$i] . "</option>\n");
|
||||
}
|
||||
echo ("</select><td>\n");
|
||||
echo ("<td> </td>\n");
|
||||
echo ("<td><a href=\"help.php?HelpNumber=602\" target=\"lamhelp\">". _("Help") ."</a></td>\n");
|
||||
echo ("</tr>\n");
|
||||
echo ("</table>\n");
|
||||
echo ("</fieldset>\n");
|
||||
echo ("<br>\n");
|
||||
}
|
||||
|
||||
// host OUs
|
||||
if ($_SESSION["config"]->get_Suffix('host') != "") {
|
||||
// generate lists of possible suffixes
|
||||
$hst_units = $_SESSION['ldap']->search_units($_SESSION["config"]->get_Suffix('host'));
|
||||
echo ("<fieldset><legend><b>" . _("Samba Hosts") . "</b></legend>\n");
|
||||
echo ("<table border=0>\n");
|
||||
// new OU
|
||||
echo ("<tr>\n");
|
||||
echo ("<td><input type=radio name=\"type\" value=\"new_hst\"></td>\n");
|
||||
echo ("<td><b>" . _("New organizational unit") . ":</b></td>\n");
|
||||
echo ("<td> </td>\n");
|
||||
echo ("<td><select size=1 name=hostsuff_n>");
|
||||
for ($i = 0; $i < sizeof($hst_units); $i++) {
|
||||
echo ("<option>" . $hst_units[$i] . "</option>\n");
|
||||
}
|
||||
echo ("</select><td>\n");
|
||||
echo ("<td><input type=text name=newsuff_h></td>\n");
|
||||
echo ("<td><a href=\"help.php?HelpNumber=601\" target=\"lamhelp\">". _("Help") ."</a></td>\n");
|
||||
echo ("</tr>\n");
|
||||
// delete OU
|
||||
echo ("<tr>\n");
|
||||
echo ("<td><input type=radio name=\"type\" value=\"del_hst\"></td>\n");
|
||||
echo ("<td><b>" . _("Delete organizational unit") . ":</b></td>\n");
|
||||
echo ("<td> </td>\n");
|
||||
echo ("<td><select size=1 name=hostsuff_d>");
|
||||
for ($i = 0; $i < sizeof($hst_units); $i++) {
|
||||
echo ("<option>" . $hst_units[$i] . "</option>\n");
|
||||
}
|
||||
echo ("</select><td>\n");
|
||||
echo ("<td> </td>\n");
|
||||
echo ("<td><a href=\"help.php?HelpNumber=602\" target=\"lamhelp\">". _("Help") ."</a></td>\n");
|
||||
echo ("</tr>\n");
|
||||
echo ("</table>\n");
|
||||
echo ("</fieldset>\n");
|
||||
echo ("<br>\n");
|
||||
}
|
||||
|
||||
// domain OUs
|
||||
if ($_SESSION["config"]->get_Suffix('domain') != "") {
|
||||
// generate lists of possible suffixes
|
||||
$dom_units = $_SESSION['ldap']->search_units($_SESSION["config"]->get_Suffix('domain'));
|
||||
echo ("<fieldset><legend><b>" . _("Domains") . "</b></legend>\n");
|
||||
echo ("<table border=0>\n");
|
||||
// new OU
|
||||
echo ("<tr>\n");
|
||||
echo ("<td><input type=radio name=\"type\" value=\"new_dom\"></td>\n");
|
||||
echo ("<td><b>" . _("New organizational unit") . ":</b></td>\n");
|
||||
echo ("<td> </td>\n");
|
||||
echo ("<td><select size=1 name=domsuff_n>");
|
||||
for ($i = 0; $i < sizeof($dom_units); $i++) {
|
||||
echo ("<option>" . $dom_units[$i] . "</option>\n");
|
||||
}
|
||||
echo ("</select><td>\n");
|
||||
echo ("<td><input type=text name=newsuff_d></td>\n");
|
||||
echo ("<td><a href=\"help.php?HelpNumber=601\" target=\"lamhelp\">". _("Help") ."</a></td>\n");
|
||||
echo ("</tr>\n");
|
||||
// delete OU
|
||||
echo ("<tr>\n");
|
||||
echo ("<td><input type=radio name=\"type\" value=\"del_dom\"></td>\n");
|
||||
echo ("<td><b>" . _("Delete organizational unit") . ":</b></td>\n");
|
||||
echo ("<td> </td>\n");
|
||||
echo ("<td><select size=1 name=domsuff_d>");
|
||||
for ($i = 0; $i < sizeof($dom_units); $i++) {
|
||||
echo ("<option>" . $dom_units[$i] . "</option>\n");
|
||||
echo ("<td><select size=1 name=deletename_" . $types[$i] . ">");
|
||||
for ($u = 0; $u < sizeof($units); $u++) {
|
||||
echo ("<option>" . $units[$u] . "</option>\n");
|
||||
}
|
||||
echo ("</select><td>\n");
|
||||
echo ("<td> </td>\n");
|
||||
|
|
|
@ -73,19 +73,22 @@ if ($_POST['abort']) {
|
|||
|
||||
// check if right type was given
|
||||
$type = $_GET['type'];
|
||||
if (($type == "user") || ($type == "host") || ($type == "group")) {
|
||||
echo ("<p align=\"center\"><big>" . _("Do you really want to delete this PDF structure?") . " <b>");
|
||||
echo (_('Scope') . ': ' . $_GET['type'] . ' ' . _('Name') . ': ' . $_GET['delete'] . "</b></big><br></p>\n");
|
||||
echo ("<form action=\"pdfdelete.php\" method=\"post\">\n");
|
||||
echo ("<p align=\"center\">\n");
|
||||
echo ("<input type=\"submit\" name=\"submit\" value=\"" . _("Submit") . "\">\n");
|
||||
echo ("<input type=\"submit\" name=\"abort\" value=\"" . _("Abort") . "\">\n");
|
||||
echo ("<input type=\"hidden\" name=\"type\" value=\"" . $_GET['type'] . "\">");
|
||||
echo ("<input type=\"hidden\" name=\"delete\" value=\"" . $_GET['delete'] . "\">");
|
||||
echo ("</p></form></body></html>\n");
|
||||
}
|
||||
else{
|
||||
// no valid pdf type
|
||||
StatusMessage("ERROR", "", _("Wrong or missing type!") . " " . $type);
|
||||
echo ("<a href=\"pdfmain.php\">" . _("Back to PDF Editor") . "</a>");
|
||||
}
|
||||
echo ("<p align=\"center\"><big>" . _("Do you really want to delete this PDF structure?") . "</big>");
|
||||
echo "<br>\n";
|
||||
echo "<br></p>\n";
|
||||
echo "<table align=\"center\">\n";
|
||||
echo "<tr><td>\n";
|
||||
echo "<b>" . _('Account type') . ': </b>' . $_GET['type'];
|
||||
echo "</td></tr>\n";
|
||||
echo "<tr><td>\n";
|
||||
echo "<b>" . _('Name') . ': </b>' . $_GET['delete'] . "<br>\n";
|
||||
echo "</td></tr>\n";
|
||||
echo "</table>\n";
|
||||
echo "<br>\n";
|
||||
echo ("<form action=\"pdfdelete.php\" method=\"post\">\n");
|
||||
echo ("<p align=\"center\">\n");
|
||||
echo ("<input type=\"submit\" name=\"submit\" value=\"" . _("Submit") . "\">\n");
|
||||
echo ("<input type=\"submit\" name=\"abort\" value=\"" . _("Abort") . "\">\n");
|
||||
echo ("<input type=\"hidden\" name=\"type\" value=\"" . $_GET['type'] . "\">");
|
||||
echo ("<input type=\"hidden\" name=\"delete\" value=\"" . $_GET['delete'] . "\">");
|
||||
echo ("</p></form></body></html>\n");
|
||||
|
|
|
@ -82,7 +82,7 @@ if ($_POST['forward'] == "yes") {
|
|||
exit;
|
||||
}
|
||||
|
||||
$scopes = getAvailableScopes();
|
||||
$scopes = $_SESSION['config']->get_ActiveTypes();
|
||||
|
||||
$availableStructureDefinitions = '';
|
||||
$availableScopes = '';
|
||||
|
|
|
@ -73,22 +73,13 @@ if ($_POST['abort']) {
|
|||
exit;
|
||||
}
|
||||
|
||||
// check if right type was given
|
||||
$type = $_GET['type'];
|
||||
if (($type == "user") || ($type == "host") || ($type == "group")) {
|
||||
// user profile
|
||||
echo ("<p align=\"center\"><big>" . _("Do you really want to delete this profile?") . " <b>");
|
||||
echo ($_GET['del'] . "</b></big><br></p>\n");
|
||||
echo ("<form action=\"profiledelete.php\" method=\"post\">\n");
|
||||
echo ("<p align=\"center\">\n");
|
||||
echo ("<input type=\"submit\" name=\"submit\" value=\"" . _("Submit") . "\">\n");
|
||||
echo ("<input type=\"submit\" name=\"abort\" value=\"" . _("Abort") . "\">\n");
|
||||
echo ("<input type=\"hidden\" name=\"type\" value=\"$type\">");
|
||||
echo ("<input type=\"hidden\" name=\"del\" value=\"" . $_GET['del'] . "\">");
|
||||
echo ("</p></form></body></html>\n");
|
||||
}
|
||||
else{
|
||||
// no valid profile type
|
||||
StatusMessage("ERROR", "", _("Wrong or missing type!") . " " . $type);
|
||||
echo ("<a href=\"profilemain.php\">" . _("Back to profile editor") . "</a>");
|
||||
}
|
||||
echo ("<p align=\"center\"><big>" . _("Do you really want to delete this profile?") . " <b>");
|
||||
echo ($_GET['del'] . "</b></big><br></p>\n");
|
||||
echo ("<form action=\"profiledelete.php\" method=\"post\">\n");
|
||||
echo ("<p align=\"center\">\n");
|
||||
echo ("<input type=\"submit\" name=\"submit\" value=\"" . _("Submit") . "\">\n");
|
||||
echo ("<input type=\"submit\" name=\"abort\" value=\"" . _("Abort") . "\">\n");
|
||||
echo ("<input type=\"hidden\" name=\"type\" value=\"$type\">");
|
||||
echo ("<input type=\"hidden\" name=\"del\" value=\"" . $_GET['del'] . "\">");
|
||||
echo ("</p></form></body></html>\n");
|
||||
|
|
|
@ -41,11 +41,15 @@ session_save_path("../../sess");
|
|||
|
||||
setlanguage();
|
||||
|
||||
$profileClasses = array(
|
||||
array('scope' => 'user', 'title' => _('User profiles'), 'profiles' => ""),
|
||||
array('scope' => 'group', 'title' => _('Group profiles'), 'profiles' => ""),
|
||||
array('scope' => 'host', 'title' => _('Host profiles'), 'profiles' => "")
|
||||
);
|
||||
$types = $_SESSION['config']->get_ActiveTypes();
|
||||
$profileClasses = array();
|
||||
for ($i = 0; $i < sizeof($types); $i++) {
|
||||
$profileClasses[] = array(
|
||||
'scope' => $types[$i],
|
||||
'title' => getTypeAlias($types[$i]),
|
||||
'profiles' => "");
|
||||
}
|
||||
|
||||
|
||||
// check if user is logged in, if not go to login
|
||||
if (!$_SESSION['ldap'] || !$_SESSION['ldap']->server()) {
|
||||
|
@ -97,6 +101,9 @@ echo $_SESSION['header'];
|
|||
|
||||
echo "<title>LDAP Account Manager</title>\n";
|
||||
echo "<link rel=\"stylesheet\" type=\"text/css\" href=\"../../style/layout.css\">\n";
|
||||
for ($i = 0; $i < sizeof($profileClasses); $i++) {
|
||||
echo "<link rel=\"stylesheet\" type=\"text/css\" href=\"../../style/type_" . $profileClasses[$i]['scope'] . ".css\">\n";
|
||||
}
|
||||
echo "</head>\n";
|
||||
echo "<body>\n";
|
||||
|
||||
|
@ -106,7 +113,7 @@ echo "<form action=\"profilemain.php\" method=\"post\">\n";
|
|||
|
||||
for ($i = 0; $i < sizeof($profileClasses); $i++) {
|
||||
|
||||
echo "<fieldset>\n";
|
||||
echo "<fieldset class=\"" . $profileClasses[$i]['scope'] . "edit\">\n";
|
||||
echo "<legend>\n";
|
||||
echo "<b>" . $profileClasses[$i]['title'] . "</b>\n";
|
||||
echo "</legend>\n";
|
||||
|
|
|
@ -65,6 +65,7 @@ if ($_POST['abort']) {
|
|||
// print header
|
||||
echo $_SESSION['header'];
|
||||
echo "<title></title>\n<link rel=\"stylesheet\" type=\"text/css\" href=\"../../style/layout.css\">\n";
|
||||
echo "<title></title>\n<link rel=\"stylesheet\" type=\"text/css\" href=\"../../style/type_" . $_GET['type'] . ".css\">\n";
|
||||
echo "</head><body><br>\n";
|
||||
|
||||
// save button was presed
|
||||
|
@ -130,7 +131,6 @@ $_SESSION['profile_types'] = array();
|
|||
|
||||
// check if account type is valid
|
||||
$type = $_GET['type'];
|
||||
if (!(($type == 'user') || ($type == 'group') || ($type == 'host'))) meta_refresh('profilemain.php');
|
||||
|
||||
// get module options
|
||||
$options = getProfileOptions($type);
|
||||
|
|
|
@ -42,6 +42,7 @@ echo $_SESSION['header'];
|
|||
|
||||
echo "<title></title>\n";
|
||||
echo "<link rel=\"stylesheet\" type=\"text/css\" href=\"../style/layout.css\">\n";
|
||||
echo "<link rel=\"stylesheet\" type=\"text/css\" href=\"../style/type_user.css\">\n";
|
||||
echo "</head>";
|
||||
|
||||
echo "<body>\n";
|
||||
|
@ -55,15 +56,6 @@ $tools[] = array(
|
|||
"link" => "profedit/profilemain.php"
|
||||
);
|
||||
|
||||
// Samba 3 domains
|
||||
if ($_SESSION['config']->get_Suffix('domain') && ($_SESSION['config']->get_Suffix('domain') != "")) {
|
||||
$tools[] = array(
|
||||
"name" => _("Samba 3 domains"),
|
||||
"description" => _("Manages Samba 3 domain accounts."),
|
||||
"link" => "lists/listdomains.php"
|
||||
);
|
||||
}
|
||||
|
||||
// file upload
|
||||
$tools[] = array(
|
||||
"name" => _("File upload"),
|
||||
|
|
|
@ -34,8 +34,6 @@ include ("../lib/config.inc");
|
|||
|
||||
$conf = new Config('test');
|
||||
echo "<html><head><title></title><link rel=\"stylesheet\" type=\"text/css\" href=\"../style/layout.css\"></head><body>";
|
||||
echo ("<b> Current Config</b><br><br>");
|
||||
$conf->printconf();
|
||||
echo ("<br><br><big><b> Starting Test...</b></big><br><br>");
|
||||
// now all preferences are loaded
|
||||
echo ("Loading preferences...");
|
||||
|
@ -46,7 +44,7 @@ $Adminstring = $conf->get_Adminstring();
|
|||
$Suff_users = $conf->get_Suffix('user');
|
||||
$Suff_groups = $conf->get_Suffix('group');
|
||||
$Suff_hosts = $conf->get_Suffix('host');
|
||||
$Suff_domains = $conf->get_Suffix('domain');
|
||||
$Suff_domains = $conf->get_Suffix('smbDomain');
|
||||
$userlistAttributes = $conf->get_listAttributes('user');
|
||||
$grouplistAttributes = $conf->get_listAttributes('group');
|
||||
$hostlistAttributes = $conf->get_listAttributes('host');
|
||||
|
@ -65,7 +63,7 @@ $conf->set_Adminstring("uid=test,o=test,dc=org;uid=root,o=test2,c=de");
|
|||
$conf->set_Suffix('user', "ou=test,o=test,c=de");
|
||||
$conf->set_Suffix('group', "ou=testgrp,o=test,c=de");
|
||||
$conf->set_Suffix('host', "ou=testhst,o=test,c=de");
|
||||
$conf->set_Suffix('domain', "ou=testdom,o=test,c=de");
|
||||
$conf->set_Suffix('smbDomain', "ou=testdom,o=test,c=de");
|
||||
$conf->set_listAttributes("#uid;#cn", 'user');
|
||||
$conf->set_listAttributes("#gidNumber;#cn;#memberUID", 'group');
|
||||
$conf->set_listAttributes("#cn;#uid;#description", 'host');
|
||||
|
@ -86,7 +84,7 @@ if ($conf2->get_Adminstring() != "uid=test,o=test,dc=org;uid=root,o=test2,c=de")
|
|||
if ($conf2->get_Suffix('user') != "ou=test,o=test,c=de") echo ("<br><font color=\"#FF0000\">Saving user suffix failed!</font><br>");
|
||||
if ($conf2->get_Suffix('group') != "ou=testgrp,o=test,c=de") echo ("<br><font color=\"#FF0000\">Saving group suffix failed!</font><br>");
|
||||
if ($conf2->get_Suffix('host') != "ou=testhst,o=test,c=de") echo ("<br><font color=\"#FF0000\">Saving host suffix failed!</font><br>");
|
||||
if ($conf2->get_Suffix('domain') != "ou=testdom,o=test,c=de") echo ("<br><font color=\"#FF0000\">Saving domain suffix failed!</font><br>");
|
||||
if ($conf2->get_Suffix('smbDomain') != "ou=testdom,o=test,c=de") echo ("<br><font color=\"#FF0000\">Saving domain suffix failed!</font><br>");
|
||||
if ($conf2->get_listAttributes('user') != "#uid;#cn") echo ("<br><font color=\"#FF0000\">Saving userlistAttributes failed!</font><br>");
|
||||
if ($conf2->get_listAttributes('group') != "#gidNumber;#cn;#memberUID") echo ("<br><font color=\"#FF0000\">Saving grouplistAttributes failed!</font><br>");
|
||||
if ($conf2->get_listAttributes('host') != "#cn;#uid;#description") echo ("<br><font color=\"#FF0000\">Saving hostlistAttributes failed!</font><br>");
|
||||
|
@ -106,7 +104,7 @@ $conf2->set_Adminstring($Adminstring);
|
|||
$conf2->set_Suffix('user', $Suff_users);
|
||||
$conf2->set_Suffix('group', $Suff_groups);
|
||||
$conf2->set_Suffix('host', $Suff_hosts);
|
||||
$conf2->set_Suffix('domain', $Suff_domains);
|
||||
$conf2->set_Suffix('smbDomain', $Suff_domains);
|
||||
$conf2->set_listAttributes($userlistAttributes, 'user');
|
||||
$conf2->set_listAttributes($grouplistAttributes, 'group');
|
||||
$conf2->set_listAttributes($hostlistAttributes, 'host');
|
||||
|
@ -119,7 +117,5 @@ $conf2->save();
|
|||
echo ("done<br>");
|
||||
// finished
|
||||
echo ("<br><b><font color=\"#00C000\">Test is complete.</font></b>");
|
||||
echo ("<br><br><b> Current Config</b><br><br>");
|
||||
$conf2->printconf();
|
||||
|
||||
?>
|
||||
|
|
Loading…
Reference in New Issue