Compare commits

...

7 Commits

Author SHA1 Message Date
3f2cd56884 Change CI/CD build from gitlab to gitea
All checks were successful
Create Docker Image / Build Docker Image (x86_64) (push) Successful in 1m24s
Create Docker Image / Build Docker Image (arm64) (push) Successful in 3m12s
Create Docker Image / Final Docker Image Manifest (push) Successful in 10s
2025-01-02 19:53:14 +11:00
bfe71edc44 Swap out base docker container for dunglas/frankenphp, enabling us to run as non-root, addressing #271.
By default the container web address is now port 8080, so port mapping of -p 80:8080 will now be required
2025-01-02 19:53:14 +11:00
bd62897e80 Turn down the verbosity with an internal config attr when parsing the schema.
This helps while developing, without memcached running we get 100,000's of logs while rendering the test environment.
Also fixes a deprecated parsing null to strlen().
2025-01-02 19:53:14 +11:00
e399b733e9 Deprecate using osixia/openldap and setup test configuration using our own alpine/ldap container 2025-01-02 19:53:14 +11:00
7e25000e68 Test needs npm 2025-01-01 17:47:28 +11:00
41fb40983b Enable builds for armv7l and arm64 2025-01-01 17:47:28 +11:00
37cf1292df Updates to PHP 8.3 2025-01-01 17:47:28 +11:00
28 changed files with 695 additions and 374 deletions

View File

@ -1,10 +1,19 @@
.dockerignore
.editorconfig
.env.testing
.idea
.git*
docker/
.phpunit.result.cache
.styleci.yml
node_modules/
storage/debugbar
storage/framework/cache/data
storage/framework/sessions
storage/framework/views
storage/logs
package.json
package-lock.json
phpunit.xml
vendor/
webpack.mix.js
yarn.lock

View File

@ -0,0 +1,144 @@
name: Create Docker Image
run-name: ${{ gitea.actor }} Building Docker Image 🐳
on: [push]
env:
VERSION: latest
DOCKER_HOST: tcp://127.0.0.1:2375
jobs:
# test:
# strategy:
# matrix:
# arch:
# - x86_64
# # arm64
#
# name: Test Application
# runs-on: docker-${{ matrix.arch }}
# container:
# image: gitea.dege.au/docker/php:8.3-fpm-ldap-test
#
# steps:
# - name: Environment Setup
# run: |
# # If we have a proxy use it
# if [ -n "${HTTP_PROXY}" ]; then echo "HTTP PROXY [${HTTP_PROXY}]"; sed -i -e s'/https/http/' /etc/apk/repositories; fi
# # Some pre-reqs
# apk add git nodejs
# ## Some debugging info
# # env|sort
#
# - name: Code Checkout
# uses: actions/checkout@v4
#
# - name: Run Tests
# run: |
# mv .env.testing .env
# # Install Composer and project dependencies.
# mkdir -p ${COMPOSER_HOME}
# if [ -n "${{ secrets.COMPOSER_GITHUB_TOKEN }}" ]; then echo ${{ secrets.COMPOSER_GITHUB_TOKEN }} > ${COMPOSER_HOME}/auth.json; fi
# composer install
# # Generate an application key. Re-cache.
# php artisan key:generate
# php artisan migrate
# php artisan db:seed
# # run laravel tests
# touch storage/app/test/*ZIP storage/app/test/file/*
# XDEBUG_MODE=coverage php vendor/bin/phpunit --coverage-text --colors=never
build:
strategy:
matrix:
arch:
- x86_64
- arm64
# needs: [test]
name: Build Docker Image
runs-on: docker-${{ matrix.arch }}
container:
image: docker:dind
privileged: true
env:
ARCH: ${{ matrix.arch }}
VERSIONARCH: ${{ env.VERSION }}-${{ env.ARCH }}
steps:
- name: Environment Setup
run: |
# If we have a proxy use it
if [ -n "${HTTP_PROXY}" ]; then echo "HTTP PROXY [${HTTP_PROXY}]"; sed -i -e s'/https/http/' /etc/apk/repositories; fi
# Some pre-reqs
apk add git curl nodejs
# Start docker
( dockerd --host=tcp://0.0.0.0:2375 --tls=false & ) && sleep 3
## Some debugging info
# docker info && docker version
# env|sort
- name: Registry FQDN Setup
id: registry
run: |
registry=${{ github.server_url }}
echo "registry=${registry##http*://}" >> "$GITHUB_OUTPUT"
- name: Container Registry Login
uses: docker/login-action@v2
with:
registry: ${{ steps.registry.outputs.registry }}
username: ${{ gitea.actor }}
password: ${{ secrets.PKG_WRITE_TOKEN }}
- name: Code Checkout
uses: actions/checkout@v4
- name: Record version and Delete Unnecessary files
run: |
echo ${GITHUB_SHA::8} > VERSION
rm -rf .git* tests/ storage/app/test/
- name: Build and Push Docker Image
uses: docker/build-push-action@v5
with:
context: .
file: docker/Dockerfile
push: true
tags: "${{ steps.registry.outputs.registry }}/${{ env.GITHUB_REPOSITORY }}:${{ env.VERSIONARCH }}"
manifest:
name: Final Docker Image Manifest
runs-on: docker-x86_64
container:
image: docker:dind
privileged: true
needs: [build]
steps:
- name: Environment Setup
run: |
# If we have a proxy use it
if [ -n "${HTTP_PROXY}" ]; then echo "HTTP PROXY [${HTTP_PROXY}]"; sed -i -e s'/https/http/' /etc/apk/repositories; fi
# Some pre-reqs
apk add git curl nodejs
# Start docker
( dockerd --host=tcp://0.0.0.0:2375 --tls=false & ) && sleep 3
- name: Registry FQDN Setup
id: registry
run: |
registry=${{ github.server_url }}
echo "registry=${registry##http*://}" >> "$GITHUB_OUTPUT"
- name: Container Registry Login
uses: docker/login-action@v2
with:
registry: ${{ steps.registry.outputs.registry }}
username: ${{ gitea.actor }}
password: ${{ secrets.PKG_WRITE_TOKEN }}
- name: Build Docker Manifest
run: |
docker manifest create ${{ steps.registry.outputs.registry }}/${{ env.GITHUB_REPOSITORY }}:${{ env.VERSION }} \
${{ steps.registry.outputs.registry }}/${{ env.GITHUB_REPOSITORY }}:${{ env.VERSION }}-x86_64
# ${{ steps.registry.outputs.registry }}/${{ env.GITHUB_REPOSITORY }}:${{ env.VERSION }}-arm64
docker manifest push --purge ${{ steps.registry.outputs.registry }}/${{ env.GITHUB_REPOSITORY }}:${{ env.VERSION }}

View File

@ -1,20 +0,0 @@
stages:
- test
- build
# This folder is cached between builds
# http://docs.gitlab.com/ce/ci/yaml/README.html#cache
cache:
key: ${CI_COMMIT_REF_SLUG}
paths:
- public/css/app.css
- public/js/app.js
- public/js/manifest.js
- public/js/vendor.js
- public/*/vendor/
- node_modules/
- vendor/
include:
- .gitlab-test.yml
- .gitlab-docker-x86_64.yml

View File

@ -1,27 +0,0 @@
docker:
variables:
VERSION: latest
DOCKER_HOST: tcp://docker:2375
stage: build
image: docker:latest
services:
- docker:dind
before_script:
- docker info && docker version
- echo "$CI_JOB_TOKEN" | docker login -u "$CI_REGISTRY_USER" "$CI_REGISTRY" --password-stdin
- if [ -n "$GITHUB_TOKEN" ]; then cat $GITHUB_TOKEN |base64 -d > auth.json; fi
script:
- if [ -f init ]; then chmod 500 init; fi
- echo -n ${CI_COMMIT_SHORT_SHA} > VERSION
- rm -rf node_modules database/seeds database/schema database/factories/*
- docker build -f docker/Dockerfile -t ${CI_REGISTRY_IMAGE}:${VERSION} .
- docker push ${CI_REGISTRY_IMAGE}:${VERSION}
tags:
- docker
- x86_64
only:
- BRANCH-2.0

View File

@ -1,51 +0,0 @@
test:
image: ${CI_REGISTRY}/leenooks/php:8.1-fpm-alpine-ldap-test
stage: test
# NOTE: This service is dependant on project file configuration, which is not there if the cache was deleted
# resulting in the testing to fail on the first run.
services:
- name: osixia/openldap:latest
alias: test_ldap
command: ["--loglevel","debug"]
variables:
LDAP_SEED_INTERNAL_LDIF_PATH: "${CI_PROJECT_DIR}/tests/server/openldap/data"
LDAP_SEED_INTERNAL_SCHEMA_PATH: "${CI_PROJECT_DIR}/tests/server/openldap/schema"
LDAP_BASE_DN: "dc=Test"
LDAP_DOMAIN: "Test"
LDAP_ADMIN_PASSWORD: test
#CI_DEBUG_SERVICES: "true"
tags:
- php
only:
- BRANCH-2.0
before_script:
- mv .env.testing .env
# Install npm and dependancies
- npm i
- npm run prod
# Install Composer and project dependencies.
- mkdir -p ${COMPOSER_HOME}
- if [ -n "$GITHUB_TOKEN" ]; then cat $GITHUB_TOKEN |base64 -d > ${COMPOSER_HOME}/auth.json; fi
- composer install
# Generate an application key. Re-cache.
- php artisan key:generate
script:
# Sleep if we need to, in case we want to jump in and see what is going on during the test
- if [ -n "$DEBUG_PAUSE" ]; then echo "Pausing for $DEBUG_PAUSE seconds, so you can jump into the containers"; sleep $DEBUG_PAUSE; fi
# run laravel tests
- XDEBUG_MODE=coverage php vendor/bin/phpunit --coverage-text --colors=never
# run frontend tests
# if you have any task for testing frontend
# set it in your package.json script
# comment this out if you don't have a frontend test
# npm test

View File

@ -72,7 +72,8 @@ final class AttributeType extends Base {
* eg: ( 2.5.4.0 NAME 'objectClass' DESC 'RFC4512: object classes of the entity' EQUALITY objectIdentifierMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.38 )
*/
public function __construct(string $line) {
Log::debug(sprintf('Parsing AttributeType [%s]',$line));
if (static::DEBUG_VERBOSE)
Log::debug(sprintf('Parsing AttributeType [%s]',$line));
parent::__construct($line);
@ -94,7 +95,7 @@ final class AttributeType extends Base {
// @note Some schema's return a (' instead of a ( '
if ($strings[$i+1] != '(' && ! preg_match('/^\(/',$strings[$i+1])) {
do {
$this->name .= (strlen($this->name) ? ' ' : '').$strings[++$i];
$this->name .= ($this->name ? ' ' : '').$strings[++$i];
} while (! preg_match("/\'$/s",$strings[$i]));
@ -111,7 +112,7 @@ final class AttributeType extends Base {
else
$i++;
$this->name .= (strlen($this->name) ? ' ' : '').$strings[++$i];
$this->name .= ($this->name ? ' ' : '').$strings[++$i];
} while (! preg_match("/\'$/s",$strings[$i]));
@ -125,55 +126,63 @@ final class AttributeType extends Base {
$this->name = preg_replace("/^\'(.*)\'$/",'$1',$this->name);
Log::debug(sprintf('- Case NAME returned (%s)',$this->name),['aliases'=>$this->aliases]);
if (static::DEBUG_VERBOSE)
Log::debug(sprintf('- Case NAME returned (%s)',$this->name),['aliases'=>$this->aliases]);
break;
case 'DESC':
do {
$this->description .= (strlen($this->description) ? ' ' : '').$strings[++$i];
$this->description .= ($this->description ? ' ' : '').$strings[++$i];
} while (! preg_match("/\'$/s",$strings[$i]));
$this->description = preg_replace("/^\'(.*)\'$/",'$1',$this->description);
Log::debug(sprintf('- Case DESC returned (%s)',$this->description));
if (static::DEBUG_VERBOSE)
Log::debug(sprintf('- Case DESC returned (%s)',$this->description));
break;
case 'OBSOLETE':
$this->is_obsolete = TRUE;
Log::debug(sprintf('- Case OBSOLETE returned (%s)',$this->is_obsolete));
if (static::DEBUG_VERBOSE)
Log::debug(sprintf('- Case OBSOLETE returned (%s)',$this->is_obsolete));
break;
case 'SUP':
$i++;
$this->sup_attribute = preg_replace("/^\'(.*)\'$/",'$1',$strings[$i]);
Log::debug(sprintf('- Case SUP returned (%s)',$this->sup_attribute));
if (static::DEBUG_VERBOSE)
Log::debug(sprintf('- Case SUP returned (%s)',$this->sup_attribute));
break;
case 'EQUALITY':
$this->equality = $strings[++$i];
Log::debug(sprintf('- Case EQUALITY returned (%s)',$this->equality));
if (static::DEBUG_VERBOSE)
Log::debug(sprintf('- Case EQUALITY returned (%s)',$this->equality));
break;
case 'ORDERING':
$this->ordering = $strings[++$i];
Log::debug(sprintf('- Case ORDERING returned (%s)',$this->ordering));
if (static::DEBUG_VERBOSE)
Log::debug(sprintf('- Case ORDERING returned (%s)',$this->ordering));
break;
case 'SUBSTR':
$this->sub_str_rule = $strings[++$i];
Log::debug(sprintf('- Case SUBSTR returned (%s)',$this->sub_str_rule));
if (static::DEBUG_VERBOSE)
Log::debug(sprintf('- Case SUBSTR returned (%s)',$this->sub_str_rule));
break;
case 'SYNTAX':
$this->syntax = $strings[++$i];
$this->syntax_oid = preg_replace('/{\d+}$/','',$this->syntax);
Log::debug(sprintf('/ Evaluating SYNTAX returned (%s) [%s]',$this->syntax,$this->syntax_oid));
if (static::DEBUG_VERBOSE)
Log::debug(sprintf('/ Evaluating SYNTAX returned (%s) [%s]',$this->syntax,$this->syntax_oid));
// Does this SYNTAX string specify a max length (ie, 1.2.3.4{16})
$m = [];
@ -190,36 +199,42 @@ final class AttributeType extends Base {
$this->syntax = preg_replace("/^\'(.*)\'$/",'$1',$this->syntax);
$this->syntax_oid = preg_replace("/^\'(.*)\'$/",'$1',$this->syntax_oid);
Log::debug(sprintf('- Case SYNTAX returned (%s) [%s] {%d}',$this->syntax,$this->syntax_oid,$this->max_length));
if (static::DEBUG_VERBOSE)
Log::debug(sprintf('- Case SYNTAX returned (%s) [%s] {%d}',$this->syntax,$this->syntax_oid,$this->max_length));
break;
case 'SINGLE-VALUE':
$this->is_single_value = TRUE;
Log::debug(sprintf('- Case SINGLE-VALUE returned (%s)',$this->is_single_value));
if (static::DEBUG_VERBOSE)
Log::debug(sprintf('- Case SINGLE-VALUE returned (%s)',$this->is_single_value));
break;
case 'COLLECTIVE':
$this->is_collective = TRUE;
Log::debug(sprintf('- Case COLLECTIVE returned (%s)',$this->is_collective));
if (static::DEBUG_VERBOSE)
Log::debug(sprintf('- Case COLLECTIVE returned (%s)',$this->is_collective));
break;
case 'NO-USER-MODIFICATION':
$this->is_no_user_modification = TRUE;
Log::debug(sprintf('- Case NO-USER-MODIFICATION returned (%s)',$this->is_no_user_modification));
if (static::DEBUG_VERBOSE)
Log::debug(sprintf('- Case NO-USER-MODIFICATION returned (%s)',$this->is_no_user_modification));
break;
case 'USAGE':
$this->usage = $strings[++$i];
Log::debug(sprintf('- Case USAGE returned (%s)',$this->usage));
if (static::DEBUG_VERBOSE)
Log::debug(sprintf('- Case USAGE returned (%s)',$this->usage));
break;
// @note currently not captured
case 'X-ORDERED':
Log::error(sprintf('- Case X-ORDERED returned (%s)',$strings[++$i]));
if (static::DEBUG_VERBOSE)
Log::error(sprintf('- Case X-ORDERED returned (%s)',$strings[++$i]));
break;
// @note currently not captured
@ -227,17 +242,19 @@ final class AttributeType extends Base {
$value = '';
do {
$value .= (strlen($value) ? ' ' : '').$strings[++$i];
$value .= ($value ? ' ' : '').$strings[++$i];
} while (! preg_match("/\'$/s",$strings[$i]));
Log::error(sprintf('- Case X-ORIGIN returned (%s)',$value));
if (static::DEBUG_VERBOSE)
Log::error(sprintf('- Case X-ORIGIN returned (%s)',$value));
break;
default:
if (preg_match('/[\d\.]+/i',$strings[$i]) && ($i === 1)) {
$this->oid = $strings[$i];
Log::debug(sprintf('- Case default returned (%s)',$this->oid));
if (static::DEBUG_VERBOSE)
Log::debug(sprintf('- Case default returned (%s)',$this->oid));
} elseif ($strings[$i])
Log::alert(sprintf('! Case default discovered a value NOT parsed (%s)',$strings[$i]),['line'=>$line]);

View File

@ -11,17 +11,19 @@ use App\Exceptions\InvalidUsage;
* All schema items have at least two things in common: An OID and a Description.
*/
abstract class Base {
protected const DEBUG_VERBOSE = FALSE;
// Record the LDAP String
private string $line;
// The schema item's name.
protected ?string $name = NULL;
protected string $name = '';
// The OID of this schema item.
protected string $oid;
# The description of this schema item.
protected ?string $description = NULL;
protected string $description = '';
// Boolean value indicating whether this objectClass is obsolete
private bool $is_obsolete = FALSE;

View File

@ -53,7 +53,8 @@ final class ObjectClass extends Base {
{
parent::__construct($line);
Log::debug(sprintf('Parsing ObjectClass [%s]',$line));
if (static::DEBUG_VERBOSE)
Log::debug(sprintf('Parsing ObjectClass [%s]',$line));
$strings = preg_split('/[\s,]+/',$line,-1,PREG_SPLIT_DELIM_CAPTURE);
@ -93,7 +94,8 @@ final class ObjectClass extends Base {
$this->name = preg_replace("/^\'(.*)\'$/",'$1',$this->name);
Log::debug(sprintf(sprintf('- Case NAME returned (%s)',$this->name)));
if (static::DEBUG_VERBOSE)
Log::debug(sprintf(sprintf('- Case NAME returned (%s)',$this->name)));
break;
case 'DESC':
@ -104,13 +106,15 @@ final class ObjectClass extends Base {
$this->description = preg_replace("/^\'(.*)\'$/",'$1',$this->description);
Log::debug(sprintf('- Case DESC returned (%s)',$this->description));
if (static::DEBUG_VERBOSE)
Log::debug(sprintf('- Case DESC returned (%s)',$this->description));
break;
case 'OBSOLETE':
$this->is_obsolete = TRUE;
Log::debug(sprintf('- Case OBSOLETE returned (%s)',$this->is_obsolete));
if (static::DEBUG_VERBOSE)
Log::debug(sprintf('- Case OBSOLETE returned (%s)',$this->is_obsolete));
break;
case 'SUP':
@ -129,25 +133,29 @@ final class ObjectClass extends Base {
} while (! preg_match('/\)+\)?/',$strings[$i+1]));
}
Log::debug(sprintf('- Case SUP returned (%s)',$this->sup_classes->join(',')));
if (static::DEBUG_VERBOSE)
Log::debug(sprintf('- Case SUP returned (%s)',$this->sup_classes->join(',')));
break;
case 'ABSTRACT':
$this->type = self::OC_ABSTRACT;
Log::debug(sprintf('- Case ABSTRACT returned (%s)',$this->type));
if (static::DEBUG_VERBOSE)
Log::debug(sprintf('- Case ABSTRACT returned (%s)',$this->type));
break;
case 'STRUCTURAL':
$this->type = self::OC_STRUCTURAL;
Log::debug(sprintf('- Case STRUCTURAL returned (%s)',$this->type));
if (static::DEBUG_VERBOSE)
Log::debug(sprintf('- Case STRUCTURAL returned (%s)',$this->type));
break;
case 'AUXILIARY':
$this->type = self::OC_AUXILIARY;
Log::debug(sprintf('- Case AUXILIARY returned (%s)',$this->type));
if (static::DEBUG_VERBOSE)
Log::debug(sprintf('- Case AUXILIARY returned (%s)',$this->type));
break;
case 'MUST':
@ -155,7 +163,8 @@ final class ObjectClass extends Base {
$i = $this->parseList(++$i,$strings,$attrs);
Log::debug(sprintf('= parseList returned %d (%s)',$i,$attrs->join(',')));
if (static::DEBUG_VERBOSE)
Log::debug(sprintf('= parseList returned %d (%s)',$i,$attrs->join(',')));
foreach ($attrs as $string) {
$attr = new ObjectClassAttribute($string,$this->name);
@ -168,7 +177,8 @@ final class ObjectClass extends Base {
$this->must_attrs->push($attr);
}
Log::debug(sprintf('- Case MUST returned (%s) (%s)',$this->must_attrs->join(','),$this->may_force->join(',')));
if (static::DEBUG_VERBOSE)
Log::debug(sprintf('- Case MUST returned (%s) (%s)',$this->must_attrs->join(','),$this->may_force->join(',')));
break;
case 'MAY':
@ -176,20 +186,23 @@ final class ObjectClass extends Base {
$i = $this->parseList(++$i,$strings,$attrs);
Log::debug(sprintf('parseList returned %d (%s)',$i,$attrs->join(',')));
if (static::DEBUG_VERBOSE)
Log::debug(sprintf('parseList returned %d (%s)',$i,$attrs->join(',')));
foreach ($attrs as $string) {
$attr = new ObjectClassAttribute($string,$this->name);
$this->may_attrs->push($attr);
}
Log::debug(sprintf('- Case MAY returned (%s)',$this->may_attrs->join(',')));
if (static::DEBUG_VERBOSE)
Log::debug(sprintf('- Case MAY returned (%s)',$this->may_attrs->join(',')));
break;
default:
if (preg_match('/[\d\.]+/i',$strings[$i]) && ($i === 1)) {
$this->oid = $strings[$i];
Log::debug(sprintf('- Case default returned (%s)',$this->oid));
if (static::DEBUG_VERBOSE)
Log::debug(sprintf('- Case default returned (%s)',$this->oid));
} elseif ($strings[$i])
Log::alert(sprintf('! Case default discovered a value NOT parsed (%s)',$strings[$i]),['line'=>$line]);

228
composer.lock generated
View File

@ -274,16 +274,16 @@
},
{
"name": "directorytree/ldaprecord",
"version": "v3.3.0",
"version": "v3.3.1",
"source": {
"type": "git",
"url": "https://github.com/DirectoryTree/LdapRecord.git",
"reference": "17540a7740964418c1eba251d31369a276a48a76"
"reference": "da3d5dff87d476a7ea9dd72d6a8972cfa907204c"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/DirectoryTree/LdapRecord/zipball/17540a7740964418c1eba251d31369a276a48a76",
"reference": "17540a7740964418c1eba251d31369a276a48a76",
"url": "https://api.github.com/repos/DirectoryTree/LdapRecord/zipball/da3d5dff87d476a7ea9dd72d6a8972cfa907204c",
"reference": "da3d5dff87d476a7ea9dd72d6a8972cfa907204c",
"shasum": ""
},
"require": {
@ -346,7 +346,7 @@
"type": "github"
}
],
"time": "2023-11-08T20:58:22+00:00"
"time": "2024-01-09T12:49:35+00:00"
},
{
"name": "directorytree/ldaprecord-laravel",
@ -417,16 +417,16 @@
},
{
"name": "doctrine/inflector",
"version": "2.0.8",
"version": "2.0.9",
"source": {
"type": "git",
"url": "https://github.com/doctrine/inflector.git",
"reference": "f9301a5b2fb1216b2b08f02ba04dc45423db6bff"
"reference": "2930cd5ef353871c821d5c43ed030d39ac8cfe65"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/doctrine/inflector/zipball/f9301a5b2fb1216b2b08f02ba04dc45423db6bff",
"reference": "f9301a5b2fb1216b2b08f02ba04dc45423db6bff",
"url": "https://api.github.com/repos/doctrine/inflector/zipball/2930cd5ef353871c821d5c43ed030d39ac8cfe65",
"reference": "2930cd5ef353871c821d5c43ed030d39ac8cfe65",
"shasum": ""
},
"require": {
@ -488,7 +488,7 @@
],
"support": {
"issues": "https://github.com/doctrine/inflector/issues",
"source": "https://github.com/doctrine/inflector/tree/2.0.8"
"source": "https://github.com/doctrine/inflector/tree/2.0.9"
},
"funding": [
{
@ -504,7 +504,7 @@
"type": "tidelift"
}
],
"time": "2023-06-16T13:40:37+00:00"
"time": "2024-01-15T18:05:13+00:00"
},
{
"name": "doctrine/lexer",
@ -1320,16 +1320,16 @@
},
{
"name": "laravel/framework",
"version": "v10.39.0",
"version": "v10.41.0",
"source": {
"type": "git",
"url": "https://github.com/laravel/framework.git",
"reference": "114926b07bfb5fbf2545c03aa2ce5c8c37be650c"
"reference": "da31969bd35e6ee0bbcd9e876f88952dc754b012"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/laravel/framework/zipball/114926b07bfb5fbf2545c03aa2ce5c8c37be650c",
"reference": "114926b07bfb5fbf2545c03aa2ce5c8c37be650c",
"url": "https://api.github.com/repos/laravel/framework/zipball/da31969bd35e6ee0bbcd9e876f88952dc754b012",
"reference": "da31969bd35e6ee0bbcd9e876f88952dc754b012",
"shasum": ""
},
"require": {
@ -1521,20 +1521,20 @@
"issues": "https://github.com/laravel/framework/issues",
"source": "https://github.com/laravel/framework"
},
"time": "2023-12-27T14:26:28+00:00"
"time": "2024-01-16T15:23:58+00:00"
},
{
"name": "laravel/passport",
"version": "v11.10.0",
"version": "v11.10.1",
"source": {
"type": "git",
"url": "https://github.com/laravel/passport.git",
"reference": "966bc8e477d08c86a11dc4c5a86f85fa0abdb89b"
"reference": "e1a651481cabff0ba174aaefbdc04a59e6a096ec"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/laravel/passport/zipball/966bc8e477d08c86a11dc4c5a86f85fa0abdb89b",
"reference": "966bc8e477d08c86a11dc4c5a86f85fa0abdb89b",
"url": "https://api.github.com/repos/laravel/passport/zipball/e1a651481cabff0ba174aaefbdc04a59e6a096ec",
"reference": "e1a651481cabff0ba174aaefbdc04a59e6a096ec",
"shasum": ""
},
"require": {
@ -1599,20 +1599,20 @@
"issues": "https://github.com/laravel/passport/issues",
"source": "https://github.com/laravel/passport"
},
"time": "2023-11-02T17:16:12+00:00"
"time": "2024-01-10T14:44:24+00:00"
},
{
"name": "laravel/prompts",
"version": "v0.1.14",
"version": "v0.1.15",
"source": {
"type": "git",
"url": "https://github.com/laravel/prompts.git",
"reference": "2219fa9c4b944add1e825c3bdb8ecae8bc503bc6"
"reference": "d814a27514d99b03c85aa42b22cfd946568636c1"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/laravel/prompts/zipball/2219fa9c4b944add1e825c3bdb8ecae8bc503bc6",
"reference": "2219fa9c4b944add1e825c3bdb8ecae8bc503bc6",
"url": "https://api.github.com/repos/laravel/prompts/zipball/d814a27514d99b03c85aa42b22cfd946568636c1",
"reference": "d814a27514d99b03c85aa42b22cfd946568636c1",
"shasum": ""
},
"require": {
@ -1654,9 +1654,9 @@
],
"support": {
"issues": "https://github.com/laravel/prompts/issues",
"source": "https://github.com/laravel/prompts/tree/v0.1.14"
"source": "https://github.com/laravel/prompts/tree/v0.1.15"
},
"time": "2023-12-27T04:18:09+00:00"
"time": "2023-12-29T22:37:42+00:00"
},
{
"name": "laravel/serializable-closure",
@ -1720,28 +1720,28 @@
},
{
"name": "laravel/ui",
"version": "v4.3.0",
"version": "v4.4.0",
"source": {
"type": "git",
"url": "https://github.com/laravel/ui.git",
"reference": "d166e09cdcb2e23836f694774cba77a32edb6007"
"reference": "7335d7049b2cde345c029e9d2de839b80af62bc0"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/laravel/ui/zipball/d166e09cdcb2e23836f694774cba77a32edb6007",
"reference": "d166e09cdcb2e23836f694774cba77a32edb6007",
"url": "https://api.github.com/repos/laravel/ui/zipball/7335d7049b2cde345c029e9d2de839b80af62bc0",
"reference": "7335d7049b2cde345c029e9d2de839b80af62bc0",
"shasum": ""
},
"require": {
"illuminate/console": "^9.21|^10.0",
"illuminate/filesystem": "^9.21|^10.0",
"illuminate/support": "^9.21|^10.0",
"illuminate/validation": "^9.21|^10.0",
"illuminate/console": "^9.21|^10.0|^11.0",
"illuminate/filesystem": "^9.21|^10.0|^11.0",
"illuminate/support": "^9.21|^10.0|^11.0",
"illuminate/validation": "^9.21|^10.0|^11.0",
"php": "^8.0"
},
"require-dev": {
"orchestra/testbench": "^7.0|^8.0",
"phpunit/phpunit": "^9.3"
"orchestra/testbench": "^7.0|^8.0|^9.0",
"phpunit/phpunit": "^9.3|^10.4"
},
"type": "library",
"extra": {
@ -1776,40 +1776,40 @@
"ui"
],
"support": {
"source": "https://github.com/laravel/ui/tree/v4.3.0"
"source": "https://github.com/laravel/ui/tree/v4.4.0"
},
"time": "2023-12-19T14:46:09+00:00"
"time": "2024-01-12T15:56:45+00:00"
},
{
"name": "lcobucci/clock",
"version": "3.0.0",
"version": "3.2.0",
"source": {
"type": "git",
"url": "https://github.com/lcobucci/clock.git",
"reference": "039ef98c6b57b101d10bd11d8fdfda12cbd996dc"
"reference": "6f28b826ea01306b07980cb8320ab30b966cd715"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/lcobucci/clock/zipball/039ef98c6b57b101d10bd11d8fdfda12cbd996dc",
"reference": "039ef98c6b57b101d10bd11d8fdfda12cbd996dc",
"url": "https://api.github.com/repos/lcobucci/clock/zipball/6f28b826ea01306b07980cb8320ab30b966cd715",
"reference": "6f28b826ea01306b07980cb8320ab30b966cd715",
"shasum": ""
},
"require": {
"php": "~8.1.0 || ~8.2.0",
"php": "~8.2.0 || ~8.3.0",
"psr/clock": "^1.0"
},
"provide": {
"psr/clock-implementation": "1.0"
},
"require-dev": {
"infection/infection": "^0.26",
"lcobucci/coding-standard": "^9.0",
"phpstan/extension-installer": "^1.2",
"phpstan/phpstan": "^1.9.4",
"phpstan/phpstan-deprecation-rules": "^1.1.1",
"phpstan/phpstan-phpunit": "^1.3.2",
"phpstan/phpstan-strict-rules": "^1.4.4",
"phpunit/phpunit": "^9.5.27"
"infection/infection": "^0.27",
"lcobucci/coding-standard": "^11.0.0",
"phpstan/extension-installer": "^1.3.1",
"phpstan/phpstan": "^1.10.25",
"phpstan/phpstan-deprecation-rules": "^1.1.3",
"phpstan/phpstan-phpunit": "^1.3.13",
"phpstan/phpstan-strict-rules": "^1.5.1",
"phpunit/phpunit": "^10.2.3"
},
"type": "library",
"autoload": {
@ -1830,7 +1830,7 @@
"description": "Yet another clock abstraction",
"support": {
"issues": "https://github.com/lcobucci/clock/issues",
"source": "https://github.com/lcobucci/clock/tree/3.0.0"
"source": "https://github.com/lcobucci/clock/tree/3.2.0"
},
"funding": [
{
@ -1842,7 +1842,7 @@
"type": "patreon"
}
],
"time": "2022-12-19T15:00:24+00:00"
"time": "2023-11-17T17:00:27+00:00"
},
{
"name": "lcobucci/jwt",
@ -2913,31 +2913,31 @@
},
{
"name": "nette/schema",
"version": "v1.2.5",
"version": "v1.3.0",
"source": {
"type": "git",
"url": "https://github.com/nette/schema.git",
"reference": "0462f0166e823aad657c9224d0f849ecac1ba10a"
"reference": "a6d3a6d1f545f01ef38e60f375d1cf1f4de98188"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/nette/schema/zipball/0462f0166e823aad657c9224d0f849ecac1ba10a",
"reference": "0462f0166e823aad657c9224d0f849ecac1ba10a",
"url": "https://api.github.com/repos/nette/schema/zipball/a6d3a6d1f545f01ef38e60f375d1cf1f4de98188",
"reference": "a6d3a6d1f545f01ef38e60f375d1cf1f4de98188",
"shasum": ""
},
"require": {
"nette/utils": "^2.5.7 || ^3.1.5 || ^4.0",
"php": "7.1 - 8.3"
"nette/utils": "^4.0",
"php": "8.1 - 8.3"
},
"require-dev": {
"nette/tester": "^2.3 || ^2.4",
"nette/tester": "^2.4",
"phpstan/phpstan-nette": "^1.0",
"tracy/tracy": "^2.7"
"tracy/tracy": "^2.8"
},
"type": "library",
"extra": {
"branch-alias": {
"dev-master": "1.2-dev"
"dev-master": "1.3-dev"
}
},
"autoload": {
@ -2969,22 +2969,22 @@
],
"support": {
"issues": "https://github.com/nette/schema/issues",
"source": "https://github.com/nette/schema/tree/v1.2.5"
"source": "https://github.com/nette/schema/tree/v1.3.0"
},
"time": "2023-10-05T20:37:59+00:00"
"time": "2023-12-11T11:54:22+00:00"
},
{
"name": "nette/utils",
"version": "v4.0.3",
"version": "v4.0.4",
"source": {
"type": "git",
"url": "https://github.com/nette/utils.git",
"reference": "a9d127dd6a203ce6d255b2e2db49759f7506e015"
"reference": "d3ad0aa3b9f934602cb3e3902ebccf10be34d218"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/nette/utils/zipball/a9d127dd6a203ce6d255b2e2db49759f7506e015",
"reference": "a9d127dd6a203ce6d255b2e2db49759f7506e015",
"url": "https://api.github.com/repos/nette/utils/zipball/d3ad0aa3b9f934602cb3e3902ebccf10be34d218",
"reference": "d3ad0aa3b9f934602cb3e3902ebccf10be34d218",
"shasum": ""
},
"require": {
@ -3055,9 +3055,9 @@
],
"support": {
"issues": "https://github.com/nette/utils/issues",
"source": "https://github.com/nette/utils/tree/v4.0.3"
"source": "https://github.com/nette/utils/tree/v4.0.4"
},
"time": "2023-10-29T21:02:13+00:00"
"time": "2024-01-17T16:50:36+00:00"
},
{
"name": "nunomaduro/termwind",
@ -4258,20 +4258,20 @@
},
{
"name": "symfony/css-selector",
"version": "v6.4.0",
"version": "v7.0.0",
"source": {
"type": "git",
"url": "https://github.com/symfony/css-selector.git",
"reference": "d036c6c0d0b09e24a14a35f8292146a658f986e4"
"reference": "bb51d46e53ef8d50d523f0c5faedba056a27943e"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/symfony/css-selector/zipball/d036c6c0d0b09e24a14a35f8292146a658f986e4",
"reference": "d036c6c0d0b09e24a14a35f8292146a658f986e4",
"url": "https://api.github.com/repos/symfony/css-selector/zipball/bb51d46e53ef8d50d523f0c5faedba056a27943e",
"reference": "bb51d46e53ef8d50d523f0c5faedba056a27943e",
"shasum": ""
},
"require": {
"php": ">=8.1"
"php": ">=8.2"
},
"type": "library",
"autoload": {
@ -4303,7 +4303,7 @@
"description": "Converts CSS selectors to XPath expressions",
"homepage": "https://symfony.com",
"support": {
"source": "https://github.com/symfony/css-selector/tree/v6.4.0"
"source": "https://github.com/symfony/css-selector/tree/v7.0.0"
},
"funding": [
{
@ -4319,7 +4319,7 @@
"type": "tidelift"
}
],
"time": "2023-10-31T08:40:20+00:00"
"time": "2023-10-31T17:59:56+00:00"
},
{
"name": "symfony/deprecation-contracts",
@ -4465,24 +4465,24 @@
},
{
"name": "symfony/event-dispatcher",
"version": "v6.4.2",
"version": "v7.0.2",
"source": {
"type": "git",
"url": "https://github.com/symfony/event-dispatcher.git",
"reference": "e95216850555cd55e71b857eb9d6c2674124603a"
"reference": "098b62ae81fdd6cbf941f355059f617db28f4f9a"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/e95216850555cd55e71b857eb9d6c2674124603a",
"reference": "e95216850555cd55e71b857eb9d6c2674124603a",
"url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/098b62ae81fdd6cbf941f355059f617db28f4f9a",
"reference": "098b62ae81fdd6cbf941f355059f617db28f4f9a",
"shasum": ""
},
"require": {
"php": ">=8.1",
"php": ">=8.2",
"symfony/event-dispatcher-contracts": "^2.5|^3"
},
"conflict": {
"symfony/dependency-injection": "<5.4",
"symfony/dependency-injection": "<6.4",
"symfony/service-contracts": "<2.5"
},
"provide": {
@ -4491,13 +4491,13 @@
},
"require-dev": {
"psr/log": "^1|^2|^3",
"symfony/config": "^5.4|^6.0|^7.0",
"symfony/dependency-injection": "^5.4|^6.0|^7.0",
"symfony/error-handler": "^5.4|^6.0|^7.0",
"symfony/expression-language": "^5.4|^6.0|^7.0",
"symfony/http-foundation": "^5.4|^6.0|^7.0",
"symfony/config": "^6.4|^7.0",
"symfony/dependency-injection": "^6.4|^7.0",
"symfony/error-handler": "^6.4|^7.0",
"symfony/expression-language": "^6.4|^7.0",
"symfony/http-foundation": "^6.4|^7.0",
"symfony/service-contracts": "^2.5|^3",
"symfony/stopwatch": "^5.4|^6.0|^7.0"
"symfony/stopwatch": "^6.4|^7.0"
},
"type": "library",
"autoload": {
@ -4525,7 +4525,7 @@
"description": "Provides tools that allow your application components to communicate with each other by dispatching events and listening to them",
"homepage": "https://symfony.com",
"support": {
"source": "https://github.com/symfony/event-dispatcher/tree/v6.4.2"
"source": "https://github.com/symfony/event-dispatcher/tree/v7.0.2"
},
"funding": [
{
@ -4541,7 +4541,7 @@
"type": "tidelift"
}
],
"time": "2023-12-27T22:16:42+00:00"
"time": "2023-12-27T22:24:19+00:00"
},
{
"name": "symfony/event-dispatcher-contracts",
@ -6092,20 +6092,20 @@
},
{
"name": "symfony/string",
"version": "v6.4.2",
"version": "v7.0.2",
"source": {
"type": "git",
"url": "https://github.com/symfony/string.git",
"reference": "7cb80bc10bfcdf6b5492741c0b9357dac66940bc"
"reference": "cc78f14f91f5e53b42044d0620961c48028ff9f5"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/symfony/string/zipball/7cb80bc10bfcdf6b5492741c0b9357dac66940bc",
"reference": "7cb80bc10bfcdf6b5492741c0b9357dac66940bc",
"url": "https://api.github.com/repos/symfony/string/zipball/cc78f14f91f5e53b42044d0620961c48028ff9f5",
"reference": "cc78f14f91f5e53b42044d0620961c48028ff9f5",
"shasum": ""
},
"require": {
"php": ">=8.1",
"php": ">=8.2",
"symfony/polyfill-ctype": "~1.8",
"symfony/polyfill-intl-grapheme": "~1.0",
"symfony/polyfill-intl-normalizer": "~1.0",
@ -6115,11 +6115,11 @@
"symfony/translation-contracts": "<2.5"
},
"require-dev": {
"symfony/error-handler": "^5.4|^6.0|^7.0",
"symfony/http-client": "^5.4|^6.0|^7.0",
"symfony/intl": "^6.2|^7.0",
"symfony/error-handler": "^6.4|^7.0",
"symfony/http-client": "^6.4|^7.0",
"symfony/intl": "^6.4|^7.0",
"symfony/translation-contracts": "^2.5|^3.0",
"symfony/var-exporter": "^5.4|^6.0|^7.0"
"symfony/var-exporter": "^6.4|^7.0"
},
"type": "library",
"autoload": {
@ -6158,7 +6158,7 @@
"utf8"
],
"support": {
"source": "https://github.com/symfony/string/tree/v6.4.2"
"source": "https://github.com/symfony/string/tree/v7.0.2"
},
"funding": [
{
@ -6174,7 +6174,7 @@
"type": "tidelift"
}
],
"time": "2023-12-10T16:15:48+00:00"
"time": "2023-12-10T16:54:46+00:00"
},
{
"name": "symfony/translation",
@ -7844,16 +7844,16 @@
},
{
"name": "phpunit/phpunit",
"version": "10.5.5",
"version": "10.5.8",
"source": {
"type": "git",
"url": "https://github.com/sebastianbergmann/phpunit.git",
"reference": "ed21115d505b4b4f7dc7b5651464e19a2c7f7856"
"reference": "08f4fa74d5fbfff1ef22abffee47aaedcaea227e"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/ed21115d505b4b4f7dc7b5651464e19a2c7f7856",
"reference": "ed21115d505b4b4f7dc7b5651464e19a2c7f7856",
"url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/08f4fa74d5fbfff1ef22abffee47aaedcaea227e",
"reference": "08f4fa74d5fbfff1ef22abffee47aaedcaea227e",
"shasum": ""
},
"require": {
@ -7925,7 +7925,7 @@
"support": {
"issues": "https://github.com/sebastianbergmann/phpunit/issues",
"security": "https://github.com/sebastianbergmann/phpunit/security/policy",
"source": "https://github.com/sebastianbergmann/phpunit/tree/10.5.5"
"source": "https://github.com/sebastianbergmann/phpunit/tree/10.5.8"
},
"funding": [
{
@ -7941,7 +7941,7 @@
"type": "tidelift"
}
],
"time": "2023-12-27T15:13:52+00:00"
"time": "2024-01-19T07:07:27+00:00"
},
{
"name": "sebastian/cli-parser",
@ -9075,16 +9075,16 @@
},
{
"name": "spatie/laravel-ignition",
"version": "2.4.0",
"version": "2.4.1",
"source": {
"type": "git",
"url": "https://github.com/spatie/laravel-ignition.git",
"reference": "b9395ba48d3f30d42092cf6ceff75ed7256cd604"
"reference": "005e1e7b1232f3b22d7e7be3f602693efc7dba67"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/spatie/laravel-ignition/zipball/b9395ba48d3f30d42092cf6ceff75ed7256cd604",
"reference": "b9395ba48d3f30d42092cf6ceff75ed7256cd604",
"url": "https://api.github.com/repos/spatie/laravel-ignition/zipball/005e1e7b1232f3b22d7e7be3f602693efc7dba67",
"reference": "005e1e7b1232f3b22d7e7be3f602693efc7dba67",
"shasum": ""
},
"require": {
@ -9163,7 +9163,7 @@
"type": "github"
}
],
"time": "2024-01-04T14:51:24+00:00"
"time": "2024-01-12T13:14:58+00:00"
},
{
"name": "theseer/tokenizer",

View File

@ -1,10 +1,37 @@
FROM registry.dege.au/leenooks/php:8.1-fpm-ldap
FROM dunglas/frankenphp:latest-php8.3-alpine
# Base
RUN apk add --no-cache bash
# Additional extensions:
RUN install-php-extensions \
ldap \
memcached
RUN curl -4 https://getcomposer.org/installer|php -- --install-dir=/usr/local/bin --filename=composer
ENV COMPOSER_HOME=/var/cache/composer
ENV SITE_USER=www-data
COPY docker/init-docker /sbin/init-docker
RUN chmod 550 /sbin/init-docker && chown ${SITE_USER}:0 /sbin/init-docker
COPY . /var/www/html/
WORKDIR /var/www/html
RUN mkdir -p ${COMPOSER_HOME} && \
([ -r auth.json ] && mv auth.json ${COMPOSER_HOME}) || true && \
touch .composer.refresh && \
mv .env.example .env && \
FORCE_PERMS=1 NGINX_START=FALSE /sbin/init && \
rm -rf ${COMPOSER_HOME}/* composer.lock
RUN mkdir -p ${COMPOSER_HOME} \
&& ([ -r auth.json ] && mv auth.json ${COMPOSER_HOME}) || true \
&& touch .composer.refresh \
&& mv .env.example .env \
&& FORCE_PERMS=1 /sbin/init-docker \
&& rm -rf ${COMPOSER_HOME}/* composer.lock
# Fix start up items
RUN sed -i -e 's/^{$CADDY_EXTRA_CONFIG}$/{$CADDY_EXTRA_CONFIG} /' /etc/caddy/Caddyfile
RUN chown ${SITE_USER} /config/caddy /data/caddy
USER ${SITE_USER}
# Control which port to open
ENV SERVER_NAME=:8080
EXPOSE 8080

172
docker/init-docker Executable file
View File

@ -0,0 +1,172 @@
#!/bin/bash
set -e
role=${CONTAINER_ROLE:-app}
env=${APP_ENV:-production}
php=${PHP_DIR:-/var/www/html}
composer=${COMPOSER_HOME:-/var/cache/composer}
SITE_USER=${SITE_USER:-www-data}
MEMCACHED_START=${MEMCACHED_START:-FALSE}
# To run a local queue, running jobs from the queue "hostname"
LOCAL_QUEUE=${LOCAL_QUEUE:-FALSE}
# Optional additional queues to run for
#LOCAL_QUEUES=
function mp() {
set +e
mountpoint -q $1
local mp=$?
set -e
echo ${mp}
}
function wait_for_db() {
# Wait for DB to be active
if [ -n "${DB_HOST}" -a -n "${DB_PORT}" ]; then
while ! wait-for-it -h ${DB_HOST} -p ${DB_PORT} -t 5 -q; do
echo "? Waiting for database at ${DB_HOST}:${DB_PORT}"
sleep 1;
done
echo "- DB is active on ${DB_HOST}:${DB_PORT}"
fi
}
# Run any container setup
[ -x /sbin/init-container ] && /sbin/init-container
# General Setup
if [ -x /usr/bin/memcached -a "${MEMCACHED_START}" == "TRUE" ]; then
echo "* Starting MEMCACHED..."
/usr/bin/memcached -d -P /run/memcached/memcached.pid -u memcached
fi
# Laravel Specific
if [ -r artisan -a -e ${php}/.env ]; then
echo "* Laravel Setup..."
mp=$(mp ${php})
echo " - [${php}] is a mount point [${mp}]"
# Only adjust perms if this is an external mountpoint
if [ -n "${FORCE_PERMS}" -o ${mp} -eq 0 ]; then
if [ -n "${FORCE_PERMS}" -o "${env}" != "local" -a -z "${SKIP_PERM}" ]; then
echo " - Setting Permissions..."
# Make sure our permissions are appropraite
find ${php} -type f -exec chmod 640 {} \;
find ${php} -type d -exec chmod 750 {} \;
find ${php}/public -type f -exec chmod 644 {} \;
find ${php}/public -type d -exec chmod 755 {} \;
chmod o+rx ${php}
chmod a+rx ${php}/artisan
chown -R ${SITE_USER}:www-data ${php}
#if [ "${SITE_USER}" -ne "www-data" ]; then
# echo " - Extended Permissions for ${SITE_USER}..."
# chown -R www-data:www-data ${php}/storage ${php}/bootstrap ${php}/composer.*
# [ -e ${php}/vendor ] && chown -R www-data:www-data ${php}/vendor
#fi
fi
fi
# See if we need to refresh our dependancies (only need if web dir is externally mounted)
if [[ -r composer.json && ( -e .composer.refresh || ! -d vendor ) ]]; then
echo " - Composer installing dependancies..."
rm -f ${php}/bootstrap/cache/*.php
if [ "${env}" != "local" ]; then
NODEV="--no-dev"
fi
mp=$(mp ${composer})
echo " - [${composer}] is a mount point [${mp}]"
if [ -n "${FORCE_PERMS}" -o ${mp} -eq 0 ]; then
[ -n "${FORCE_PERMS}" -o "${env}" != "local" -a -z "${SKIP_PERM}" ] && chown -R ${SITE_USER}:www-data ${composer}
[ ! -d ${php}/vendor ] && mkdir -m 750 ${php}/vendor && chown ${SITE_USER}:www-data ${php}/vendor
[ -n "${FORCE_PERMS}" -o "${env}" != "local" -a -z "${SKIP_PERM}" ] && chmod g+w ${php}
fi
su ${SITE_USER} -s /bin/sh -c "composer install --optimize-autoloader ${NODEV}" && ( test -e .composer.refresh && rm -f .composer.refresh )
[ -n "${FORCE_PERMS}" -o "${env}" != "local" -a -z "${SKIP_PERM}" ] && [ ${mp} -eq 0 ] && chmod g-w ${php}
fi
# We only check for non mount points, in case this container has the app inside
mp=$(mp ${php})
if [ ${mp} -eq 1 ]; then
echo " - Caching configuration..."
su ${SITE_USER} -s /bin/sh -c "(php artisan optimize)"
fi
if [ "${role}" = "app" ]; then
if [ "${env}" != "local" ]; then
if [ -z "${IGNORE_MIGRATION}" ]; then
if [ -r .migrate ]; then
echo " - Running migration..."
# If DB_HOST not set, source the env file
[ -z "${DB_HOST}" -a -r .env ] && . .env
wait_for_db
su ${SITE_USER} -s /bin/sh -c "php artisan migrate" && rm -f .migrate
fi
else
[ -r .migrate ] && echo "! NOTE: Migration ignored due to IGNORE_MIGRATION"
fi
# If passport is installed
if [ -d ${php}/vendor/laravel/passport ]; then
echo " - Generating OAUTH keys ..."
set +e
su ${SITE_USER} -s /bin/sh -c "php artisan passport:keys"
set -e
fi
fi
if [ "${LOCAL_QUEUE}" = "TRUE" ]; then
echo " - Starting local queue for [$(hostname)${LOCAL_QUEUES:+,${LOCAL_QUEUES}}] with job timeout of [${WORK_TIMEOUT:-90}], trying [${WORK_TRIES:-1}] times..."
su ${SITE_USER} -s /bin/sh -c "
(while true; do php ${PHP_OPTIONS} artisan queue:work --verbose --tries=${WORK_TRIES:-1} --timeout=${WORK_TIMEOUT:-90} --queue=$(hostname)${LOCAL_QUEUES:+,${LOCAL_QUEUES}} ${WORK_MEMORY:+--memory=${WORK_MEMORY}} ${WORK_ONCE:+--once}; done) &
"
fi
set +e
[ -x init-php.sh ] && su ${SITE_USER} -s /bin/sh "init-php.sh" &
exec /usr/local/bin/docker-php-entrypoint "$@"
elif [ "$role" = "queue" ]; then
QUEUE_CMD=work
if [ "${env}" == "local" ]; then
QUEUE_CMD=listen
fi
echo " - Running the queue..."
# We'll delay starting in case the app is caching
sleep 15
wait_for_db
su ${SITE_USER} -s /bin/sh -c "
while true; do
php ${PHP_OPTIONS} artisan queue:${QUEUE_CMD} --verbose --tries=${WORK_TRIES:-1} --timeout=${WORK_TIMEOUT:-90} ${WORK_QUEUES:+--queue=${WORK_QUEUES}} ${WORK_MEMORY:+--memory=${WORK_MEMORY}} ${WORK_ONCE:+--once}
done
"
elif [ "$role" = "scheduler" ]; then
echo " - Running the scheduler..."
# We'll delay starting in case the app is caching
sleep 15
su ${SITE_USER} -s /bin/sh -c "
while true; do
php ${PHP_OPTIONS} artisan schedule:work --verbose --no-interaction
done
"
fi
else
echo "? NO container role \"${role}\", AND/OR no laravel install, just starting php-fpm"
exec /usr/local/bin/docker-php-entrypoint "$@"
fi

View File

@ -1,6 +1,7 @@
dn: olcDatabase=mdb,cn=config
changetype: add
objectClass: olcDatabaseConfig
objectClass: olcMdbConfig
olcDbDirectory: /var/lib/openldap/data
olcDatabase: mdb
olcLastMod: TRUE
olcMonitoring: TRUE

View File

@ -1,6 +1,7 @@
dn: olcDatabase=mdb,cn=config
changetype: add
objectClass: olcDatabaseConfig
objectClass: olcMdbConfig
olcDbDirectory: /var/lib/openldap/data
olcDatabase: mdb
olcLastMod: TRUE
olcMonitoring: TRUE

View File

@ -1,6 +1,7 @@
dn: olcDatabase=mdb,cn=config
changetype: add
objectClass: olcDatabaseConfig
objectClass: olcMdbConfig
olcDbDirectory: /var/lib/openldap/data
olcDatabase: mdb
olcLastMod: TRUE
olcMonitoring: TRUE

View File

@ -1,6 +1,7 @@
dn: olcDatabase=mdb,cn=config
changetype: add
objectClass: olcDatabaseConfig
objectClass: olcMdbConfig
olcDbDirectory: /var/lib/openldap/data
olcDatabase: mdb
olcLastMod: TRUE
olcMonitoring: TRUE

View File

@ -0,0 +1,12 @@
dn: olcDatabase=mdb,cn=config
objectClass: olcDatabaseConfig
objectClass: olcMdbConfig
olcDbDirectory: /var/lib/openldap/data
olcDatabase: mdb
olcLastMod: TRUE
olcMonitoring: TRUE
olcSuffix: dc=Test
olcAccess: to dn.base="" by dn="cn=admin,dc=Test" write by * read
olcAccess: to * by dn="cn=admin,dc=Test" write by dn="cn=admin,dc=Test" write by * read
olcRootDN: cn=admin,dc=Test
olcRootPW: {SSHA}UCTtlcHOSqGCFuKtOCJAU8k8icNpVGiw

View File

@ -1,11 +0,0 @@
##
## Used for storing the next gid and next uid in the the directory
##
objectclass ( 1.3.6.1.4.1.7165.1.2.2.3 NAME 'uidPool' SUP top AUXILIARY
DESC 'Pool for allocating UNIX uids'
MUST ( uidNumber $ cn ) )
objectclass ( 1.3.6.1.4.1.7165.1.2.2.4 NAME 'gidPool' SUP top AUXILIARY
DESC 'Pool for allocating UNIX gids'
MUST ( gidNumber $ cn ) )

View File

@ -0,0 +1,4 @@
# Base DN
dn: c=AU
c: AU
objectclass: country

View File

@ -1,11 +1,4 @@
# LDIF Export for dc=example,dc=com
# Server: C5: OpenLDAP 2.3.27: config (c5dev.leenooks.vpn)
# Search Scope: sub
# Search Filter: (objectClass=*)
# Total Entries: 15
#
# Generated by phpLDAPadmin (http://phpldapadmin.sourceforge.net) on April 26, 2011 9:25 pm
# Version: 1.2.0.5
#version: 1
@ -146,3 +139,64 @@ c: US
description: United States of America
objectclass: country
objectclass: top
# Entry 16: c=JP,dc=example,dc=com
dn: c=JP,dc=example,dc=com
c: JP
description: Japan
description;lang-jp: 日本
objectclass: country
objectclass: top
#
dn:: b3U95Za25qWt6YOoLGM9SlAsZGM9ZXhhbXBsZSxkYz1jb20=
# dn:: ou=<JapaneseOU>,c=JP
objectclass: top
objectclass: organizationalUnit
ou:: 5Za25qWt6YOo
# ou:: <JapaneseOU>
ou;lang-ja:: 5Za25qWt6YOo
# ou;lang-ja:: <JapaneseOU>
#ou;lang-ja;x-phonetic:: 44GI44GE44GO44KH44GG44G2
# ou;lang-ja:: <JapaneseOU_in_phonetic_representation>
ou;lang-en: Sales
description: Japanese office
#
dn:: dWlkPXJvZ2FzYXdhcmEsb3U95Za25qWt6YOoLGM9SlAsZGM9ZXhhbXBsZSxkYz1jb20=
# dn:: uid=<uid>,ou=<JapaneseOU>,c=JP
userpassword: {SHA}O3HSv1MusyL4kTjP+HKI5uxuNoM=
objectclass: top
objectclass: person
objectclass: organizationalPerson
objectclass: inetOrgPerson
uid: rogasawara
mail: rogasawara@airius.co.jp
givenname;lang-ja:: 44Ot44OJ44OL44O8
# givenname;lang-ja:: <JapaneseGivenname>
sn;lang-ja:: 5bCP56yg5Y6f
# sn;lang-ja:: <JapaneseSn>
cn;lang-ja:: 5bCP56yg5Y6fIOODreODieODi+ODvA==
# cn;lang-ja:: <JapaneseCn>
title;lang-ja:: 5Za25qWt6YOoIOmDqOmVtw==
# title;lang-ja:: <JapaneseTitle>
preferredlanguage: ja
givenname:: 44Ot44OJ44OL44O8
# givenname:: <JapaneseGivenname>
sn:: 5bCP56yg5Y6f
# sn:: <JapaneseSn>
cn:: 5bCP56yg5Y6fIOODreODieODi+ODvA==
# cn:: <JapaneseCn>
title:: 5Za25qWt6YOoIOmDqOmVtw==
# title:: <JapaneseTitle>
#givenname;lang-ja;x-phonetic:: 44KN44Gp44Gr44O8
# givenname;lang-ja;x-phonetic:: <JapaneseGivenname_in_phonetic_representation_kana>
#sn;lang-ja;x-phonetic:: 44GK44GM44GV44KP44KJ
# sn;lang-ja;x-phonetic:: <JapaneseSn_in_phonetic_representation_kana>
#cn;lang-ja;x-phonetic:: 44GK44GM44GV44KP44KJIOOCjeOBqeOBq+ODvA==
# cn;lang-ja;x-phonetic:: <JapaneseCn_in_phonetic_representation_kana>
#title;lang-ja;x-phonetic:: 44GI44GE44GO44KH44GG44G2IOOBtuOBoeOCh+OBhg==
# title;lang-ja;x-phonetic:: <JapaneseTitle_in_phonetic_representation_kana>
givenname;lang-en: Rodney
sn;lang-en: Ogasawara
cn;lang-en: Rodney Ogasawara

View File

@ -1,11 +1,4 @@
# LDIF Export for dc=example.com
# Server: C5: OpenLDAP 2.3.27: config (c5dev.leenooks.vpn)
# Search Scope: sub
# Search Filter: (objectClass=*)
# Total Entries: 23
#
# Generated by phpLDAPadmin (http://phpldapadmin.sourceforge.net) on April 26, 2011 9:13 pm
# Version: 1.2.0.5
#version: 1

View File

@ -1,11 +1,4 @@
# LDIF Export for o=Flintstones
# Server: C5: OpenLDAP 2.3.27: config (c5dev.leenooks.vpn)
# Search Scope: sub
# Search Filter: (objectClass=*)
# Total Entries: 12
#
# Generated by phpLDAPadmin (http://phpldapadmin.sourceforge.net) on April 26, 2011 9:03 pm
# Version: 1.2.0.5
#version: 1

View File

@ -1,11 +1,4 @@
# LDIF Export for o=Simpsons
# Server: C5: OpenLDAP 2.3.27: config (c5dev.leenooks.vpn)
# Search Scope: sub
# Search Filter: (objectClass=*)
# Total Entries: 11
#
# Generated by phpLDAPadmin (http://phpldapadmin.sourceforge.net) on April 26, 2011 9:05 pm
# Version: 1.2.0.5
#version: 1

View File

@ -1,135 +1,135 @@
# LDIF Export for o=Test
# LDIF Export for dc=Test
#version: 1
dn: o=Test
o: Test
objectclass: organization
#dn: dc=Test
#o: Test
#objectclass: organization
dn: cn=user,o=Test
dn: cn=user,dc=Test
cn: user
sn: Doe
objectclass: inetOrgPerson
objectclass: top
dn: ou=Bad DNs,o=Test
dn: ou=Bad DNs,dc=Test
objectclass: organizationalUnit
ou: Bad DNs
#dn: c=double plus ++,ou=Bad DNs,o=Test
#dn: c=double plus ++,ou=Bad DNs,dc=Test
#c: double plus ++
#objectclass: country
#dn: c=end dollar$,ou=Bad DNs,o=Test
#dn: c=end dollar$,ou=Bad DNs,dc=Test
#c: end dollar$
#objectclass: country
dn: sn=sign@at+uid=multi-mixed,ou=Bad DNs,o=Test
dn: sn=sign@at+uid=multi-mixed,ou=Bad DNs,dc=Test
cn: Test
objectclass: inetOrgPerson
sn: sign@at
uid: multi-mixed
dn: uid=angle\3Cleft,ou=Bad DNs,o=Test
dn: uid=angle\3Cleft,ou=Bad DNs,dc=Test
cn: Test
objectclass: inetOrgPerson
sn: Test
uid: angle<left
dn: uid=angle\3Eright,ou=Bad DNs,o=Test
dn: uid=angle\3Eright,ou=Bad DNs,dc=Test
cn: Test
objectclass: inetOrgPerson
sn: Test
uid: angle>right
dn: uid=brace(left,ou=Bad DNs,o=Test
dn: uid=brace(left,ou=Bad DNs,dc=Test
cn: Test
objectclass: inetOrgPerson
sn: Test
uid: brace(left
dn: uid=brace)right,ou=Bad DNs,o=Test
dn: uid=brace)right,ou=Bad DNs,dc=Test
cn: Test
objectclass: inetOrgPerson
sn: Test
uid: brace)right
dn: uid=colon:full,ou=Bad DNs,o=Test
dn: uid=colon:full,ou=Bad DNs,dc=Test
cn: Test
objectclass: inetOrgPerson
sn: Test
uid: colon:full
dn: uid=colon\3Bsemi,ou=Bad DNs,o=Test
dn: uid=colon\3Bsemi,ou=Bad DNs,dc=Test
cn: Test
objectclass: inetOrgPerson
sn: Test
uid: colon;semi
#dn: uid=multi+uid=sign@at,ou=Bad DNs,o=Test
#dn: uid=multi+uid=sign@at,ou=Bad DNs,dc=Test
#cn: Test
#objectclass: inetOrgPerson
#sn: Test
#uid: multi
#uid: sign@at
#dn: uid=multi+uid=value,ou=Bad DNs,o=Test
#dn: uid=multi+uid=value,ou=Bad DNs,dc=Test
#cn: Test
#objectclass: inetOrgPerson
#sn: Test
#uid: multi
#uid: value
dn: uid=quote\22double,ou=Bad DNs,o=Test
dn: uid=quote\22double,ou=Bad DNs,dc=Test
cn: Test
objectclass: inetOrgPerson
sn: Test
uid: quote"double
dn: uid=quote'single,ou=Bad DNs,o=Test
dn: uid=quote'single,ou=Bad DNs,dc=Test
cn: Test
objectclass: inetOrgPerson
sn: Test
uid: quote'single
dn: uid=sign%percent,ou=Bad DNs,o=Test
dn: uid=sign%percent,ou=Bad DNs,dc=Test
cn: Test
objectclass: inetOrgPerson
sn: Test
uid: sign%percent
dn: uid=sign\2Bplus,ou=Bad DNs,o=Test
dn: uid=sign\2Bplus,ou=Bad DNs,dc=Test
cn: Test
objectclass: inetOrgPerson
sn: Test
uid: sign+plus
dn: uid=sign\2Ccomma,ou=Bad DNs,o=Test
dn: uid=sign\2Ccomma,ou=Bad DNs,dc=Test
cn: Test
objectclass: inetOrgPerson
sn: Test
uid: sign,comma
dn: uid=sign\3Bsemicolon@at,ou=Bad DNs,o=Test
dn: uid=sign\3Bsemicolon@at,ou=Bad DNs,dc=Test
cn: Test
objectclass: inetOrgPerson
sn: Test
uid: sign;semicolon@at
dn: uid=sign\3Dequal,ou=Bad DNs,o=Test
dn: uid=sign\3Dequal,ou=Bad DNs,dc=Test
cn: Test
objectclass: inetOrgPerson
sn: Test
uid: sign=equal
dn: uid=sign?question,ou=Bad DNs,o=Test
dn: uid=sign?question,ou=Bad DNs,dc=Test
cn: Test
objectclass: inetOrgPerson
sn: Test
uid: sign?question
dn: uid=sign@at,ou=Bad DNs,o=Test
cn: Test
objectclass: inetOrgPerson
sn: Test
uid: sign@at
#dn: uid=sign@at,ou=Bad DNs,dc=Test
#cn: Test
#objectclass: inetOrgPerson
#sn: Test
#uid: sign@at

View File

@ -1,18 +1,18 @@
# This is a Test-File for characters / encoding
# 1. Change the
# ,o=Test
# ,dc=Test
# to avalue for your organisation
# 2. Import it with phpldapadmin
#
# pla-i18n, example.com
#
dn: ou=pla-i18n,o=Test
dn: ou=pla-i18n,dc=Test
ou: pla-i18n
objectClass: top
objectClass: organizationalUnit
# pl, pla-i18n, example.com
dn: ou=pl,ou=pla-i18n,o=Test
dn: ou=pl,ou=pla-i18n,dc=Test
description:: IGRvcMOza2k=
description:: xITFu8WaxbnEhsWDxYHDk8SYIMSFxbzFm8W6xIfFhMWCw7PEmQ==
description:: V3NrYXrDs3drYQ==
@ -21,7 +21,7 @@ objectClass: organizationalUnit
ou: pl
# ru, pla-i18n, example.com
dn: ou=ru,ou=pla-i18n,o=Test
dn: ou=ru,ou=pla-i18n,dc=Test
description:: 0LfQstGD0YfQuNGCINC/0L7QtNC+0LHQvdC+
description:: 0J/RgNC+0YHRgtCw0Y8g0YTQvtGA0LzQsCDQv9C+0LjRgdC6
objectClass: top
@ -29,21 +29,21 @@ objectClass: organizationalUnit
ou: ru
# jp, pla-i18n, example.com
dn: ou=jp,ou=pla-i18n,o=Test
dn: ou=jp,ou=pla-i18n,dc=Test
ou: jp
objectClass: top
objectClass: organizationalUnit
description:: SVNPLTIwMjItSlDjga7lpJrlm73nsY3oqIDoqp7jgbjjga7mi6HlvLXmgKc=
# pt-br, pla-i18n, example.com
dn: ou=pt-br,ou=pla-i18n,o=Test
dn: ou=pt-br,ou=pla-i18n,dc=Test
ou: pt-br
objectClass: top
objectClass: organizationalUnit
description:: VmVyIGFzIHJlcXVpc2nDp8O1ZXMgZW0gYWJlcnRv
# de, pla-i18n, example.com
dn: ou=de,ou=pla-i18n,o=Test
dn: ou=de,ou=pla-i18n,dc=Test
ou: de
objectClass: top
objectClass: organizationalUnit
@ -51,7 +51,7 @@ description:: U29uZGVyemVpY2hlbiDDtsOkw7zDnyDDlsOEw5w=
description:: w5bDliDDnMOcIMOEw4Q=
# sv, pla-i18n, example.com
dn: ou=sv,ou=pla-i18n,o=Test
dn: ou=sv,ou=pla-i18n,dc=Test
ou: sv
objectClass: top
objectClass: organizationalUnit
@ -59,7 +59,7 @@ description:: U8O2a29tZsOlbmc=
description:: bMOldGVyIHNvbQ==
# ca, pla-i18n, example.com
dn: ou=ca,ou=pla-i18n,o=Test
dn: ou=ca,ou=pla-i18n,dc=Test
ou: ca
objectClass: top
objectClass: organizationalUnit

View File

@ -3,9 +3,9 @@
#version: 1
# This entry already exists as a result of configuring the LDAP server
#dn: dc=Test
#dc: Test
#objectclass: dNSDomain
dn: dc=Test
dc: Test
objectclass: dNSDomain
dn: cn=AdminUser,dc=Test
cn: Admin User

View File

@ -1,11 +0,0 @@
dn: olcDatabase=mdb,cn=config
changetype: add
objectClass: olcDatabaseConfig
olcDatabase: mdb
olcLastMod: TRUE
olcMonitoring: TRUE
olcSuffix: o=Test
olcAccess: to dn.base="" by dn="cn=admin,dc=Test" write by * read
olcAccess: to * by dn="cn=admin,o=Test" write by dn="cn=admin,dc=Test" write by * read
olcRootDN: cn=admin,o=Test
olcRootPW: {SSHA}e8xGdXmL+mSD3u/389YHeM+dpqFCUSyq

View File

@ -1,69 +1,61 @@
attributetype ( 1.3.6.1.4.1.15953.9.1.1
NAME 'sudoUser'
dn: cn=sudorole,cn=schema,cn=config
objectClass: olcSchemaConfig
cn: sudorole
olcAttributeTypes: {0}( 1.3.6.1.4.1.15953.9.1.1 NAME 'sudoUser'
DESC 'User(s) who may run sudo'
EQUALITY caseExactIA5Match
SUBSTR caseExactIA5SubstringsMatch
SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 )
attributetype ( 1.3.6.1.4.1.15953.9.1.2
olcAttributeTypes: {1}( 1.3.6.1.4.1.15953.9.1.2
NAME 'sudoHost'
DESC 'Host(s) who may run sudo'
EQUALITY caseExactIA5Match
SUBSTR caseExactIA5SubstringsMatch
SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 )
attributetype ( 1.3.6.1.4.1.15953.9.1.3
olcAttributeTypes: {2}( 1.3.6.1.4.1.15953.9.1.3
NAME 'sudoCommand'
DESC 'Command(s) to be executed by sudo'
EQUALITY caseExactIA5Match
SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 )
attributetype ( 1.3.6.1.4.1.15953.9.1.4
olcAttributeTypes: {3}( 1.3.6.1.4.1.15953.9.1.4
NAME 'sudoRunAs'
DESC 'User(s) impersonated by sudo'
EQUALITY caseExactIA5Match
SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 )
attributetype ( 1.3.6.1.4.1.15953.9.1.5
olcAttributeTypes: {4}( 1.3.6.1.4.1.15953.9.1.5
NAME 'sudoOption'
DESC 'Options(s) followed by sudo'
EQUALITY caseExactIA5Match
SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 )
attributetype ( 1.3.6.1.4.1.15953.9.1.6
olcAttributeTypes: {5}( 1.3.6.1.4.1.15953.9.1.6
NAME 'sudoRunAsUser'
DESC 'User(s) impersonated by sudo'
EQUALITY caseExactIA5Match
SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 )
attributetype ( 1.3.6.1.4.1.15953.9.1.7
olcAttributeTypes: {6}( 1.3.6.1.4.1.15953.9.1.7
NAME 'sudoRunAsGroup'
DESC 'Group(s) impersonated by sudo'
EQUALITY caseExactIA5Match
SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 )
attributetype ( 1.3.6.1.4.1.15953.9.1.8
olcAttributeTypes: {7}( 1.3.6.1.4.1.15953.9.1.8
NAME 'sudoNotBefore'
DESC 'Start of time interval for which the entry is valid'
EQUALITY generalizedTimeMatch
ORDERING generalizedTimeOrderingMatch
SYNTAX 1.3.6.1.4.1.1466.115.121.1.24 )
attributetype ( 1.3.6.1.4.1.15953.9.1.9
olcAttributeTypes: {8}( 1.3.6.1.4.1.15953.9.1.9
NAME 'sudoNotAfter'
DESC 'End of time interval for which the entry is valid'
EQUALITY generalizedTimeMatch
ORDERING generalizedTimeOrderingMatch
SYNTAX 1.3.6.1.4.1.1466.115.121.1.24 )
attributeTypes ( 1.3.6.1.4.1.15953.9.1.10
olcAttributeTypes: {9} ( 1.3.6.1.4.1.15953.9.1.10
NAME 'sudoOrder'
DESC 'an integer to order the sudoRole entries'
EQUALITY integerMatch
ORDERING integerOrderingMatch
SYNTAX 1.3.6.1.4.1.1466.115.121.1.27 )
objectclass ( 1.3.6.1.4.1.15953.9.2.1 NAME 'sudoRole' SUP top STRUCTURAL
olcObjectClasses: {0} ( 1.3.6.1.4.1.15953.9.2.1 NAME 'sudoRole' SUP top STRUCTURAL
DESC 'Sudoer Entries'
MUST ( cn )
MAY ( sudoUser $ sudoHost $ sudoCommand $ sudoRunAs $ sudoRunAsUser $ sudoRunAsGroup $ sudoOption $ sudoNotBefore $ sudoNotAfter $ sudoOrder $ description ) )

View File

@ -0,0 +1,12 @@
##
## Used for storing the next gid and next uid in the the directory
##
dn: cn=uidpool,cn=schema,cn=config
objectClass: olcSchemaConfig
cn: uidpool
olcObjectClasses: {0}( 1.3.6.1.4.1.7165.1.2.2.3 NAME 'uidPool' SUP top AUXILIARY
DESC 'Pool for allocating UNIX uids'
MUST ( uidNumber $ cn ) )
olcObjectClasses: {1}( 1.3.6.1.4.1.7165.1.2.2.4 NAME 'gidPool' SUP top AUXILIARY
DESC 'Pool for allocating UNIX gids'
MUST ( gidNumber $ cn ) )