mirror of
https://gitlab.com/davical-project/davical.git
synced 2026-01-27 00:33:34 +00:00
Updated database creation script for the poor people on Windows.
This commit is contained in:
parent
3f631667c6
commit
cf4d1ea4e2
@ -1,77 +1,155 @@
|
||||
@echo off
|
||||
rem Build the RSCDS database
|
||||
|
||||
setlocal
|
||||
|
||||
if db%1 EQU db (
|
||||
echo Usage: create-database dbnameprefix [adminpassword [pguser]]
|
||||
exit /B 1
|
||||
)
|
||||
set DBNAME=%1-rscds
|
||||
set ADMINPW=%2
|
||||
|
||||
set DBADIR=%CD%
|
||||
|
||||
set PGDIR=%PGLOCALEDIR%\..\..\bin
|
||||
IF usr%3 NEQ usr ( set USERNAME=%3 )
|
||||
|
||||
rem FIXME: Need to check that the database was actually created.
|
||||
%PGDIR%\createdb -E UTF8 -T template0 -U %USERNAME% %DBNAME%
|
||||
if %ERRORLEVEL% NEQ 0 (
|
||||
echo Unable to create database
|
||||
exit /B 2
|
||||
)
|
||||
|
||||
rem This will fail if the language already exists, but it should not
|
||||
rem because we created from template0.
|
||||
%PGDIR%\createlang -U %USERNAME% plpgsql %DBNAME%
|
||||
|
||||
rem Test if egrep is available
|
||||
rem You can download egrep.exe for Windows e.g. from UnxUtils: http://unxutils.sourceforge.net/):
|
||||
egrep 2>NULL
|
||||
if ERRORLEVEL 3 (
|
||||
rem No egrep
|
||||
%PGDIR%\psql -q -f %DBADIR%/rscds.sql %DBNAME% 2>&1 -U %USERNAME%
|
||||
) ELSE (
|
||||
rem egrep is available
|
||||
%PGDIR%\psql -q -f %DBADIR%/rscds.sql %DBNAME% 2>&1 -U %USERNAME% | egrep -v "(^CREATE |^GRANT|^BEGIN|^COMMIT| NOTICE: )"
|
||||
)
|
||||
del NULL
|
||||
%PGDIR%\psql -q -f %DBADIR%/grants.sql %DBNAME% 2>&1 -U %USERNAME% | egrep -v "(^GRANT)"
|
||||
|
||||
%PGDIR%\psql -q -f %DBADIR%/caldav_functions.sql %DBNAME% -U %USERNAME%
|
||||
|
||||
%PGDIR%\psql -q -f %DBADIR%/base-data.sql %DBNAME% -U %USERNAME%
|
||||
|
||||
rem We can override the admin password generation for regression testing predictability
|
||||
rem if [ %ADMINPW}" = "" ] ; then
|
||||
rem #
|
||||
rem # Generate a random administrative password. If pwgen is available we'll use that,
|
||||
rem # otherwise try and hack something up using a few standard utilities
|
||||
rem ADMINPW="`pwgen -Bcny 2>/dev/null | tr \"\\\'\" '^='`"
|
||||
rem fi
|
||||
rem
|
||||
rem if [ "$ADMINPW" = "" ] ; then
|
||||
rem # OK. They didn't supply one, and pwgen didn't work, so we hack something
|
||||
rem # together from /dev/random ...
|
||||
rem ADMINPW="`dd if=/dev/urandom bs=512 count=1 2>/dev/null | tr -c -d "[:alnum:]" | cut -c2-9`"
|
||||
rem fi
|
||||
rem
|
||||
rem # Right. We're getting desperate now. We'll have to use a default password
|
||||
rem # and hope that they change it to something more sensible.
|
||||
IF pw%ADMINPW% EQU pw ( set ADMINPW=please change this password )
|
||||
rem fi
|
||||
|
||||
%PGDIR%\psql -q -c "UPDATE usr SET password = '**%ADMINPW%' WHERE user_no = 1;" %DBNAME% -U %USERNAME%
|
||||
|
||||
echo The password for the 'admin' user has been set to "%ADMINPW%"
|
||||
|
||||
rem The supported locales are in a separate file to make them easier to upgrade
|
||||
%PGDIR%\psql -q -f %DBADIR%/supported_locales.sql %DBNAME% -U %USERNAME%
|
||||
|
||||
echo DONE
|
||||
|
||||
:END
|
||||
|
||||
endlocal
|
||||
|
||||
@echo off
|
||||
rem Build the DAViCal database
|
||||
|
||||
rem BAT file changes are internal only
|
||||
setlocal
|
||||
|
||||
if db%1 EQU db (
|
||||
echo Usage: create-database dbnameprefix [adminpassword [pguser]]
|
||||
exit /B 1
|
||||
)
|
||||
set DBNAME=%1-davical
|
||||
set ADMINPW=%2
|
||||
|
||||
set DBADIR=%CD%\..
|
||||
|
||||
rem Attempt to locate the AWL directory
|
||||
set AWLDIR=%DBADIR%\..\..\awl\dba
|
||||
echo %AWLDIR%
|
||||
if EXIST %AWLDIR%\awl-tables.sql (
|
||||
rem awldir=%AWLDIR%
|
||||
) ELSE (
|
||||
echo awl directory not found
|
||||
exit /B 2
|
||||
)
|
||||
|
||||
rem Set DB user, web user, DB config directory, Windows DB config directory
|
||||
set AWL_DBAUSER=davical_dba
|
||||
set AWL_APPUSER=davical_app
|
||||
set DBA=%AWL_DBAUSER%
|
||||
|
||||
rem Need PostgreSQL location
|
||||
if DEFINED %PGDIR% (
|
||||
rem Use existing variable
|
||||
) ELSE (
|
||||
if EXIST "c:\Program Files\PostgreSQL\8.3\bin\createuser" (
|
||||
set PGDIR="c:\Program Files\PostgreSQL\8.3\bin"
|
||||
)
|
||||
)
|
||||
echo PGDIR=%PGDIR%
|
||||
rem set PGDIR=%PGLOCALEDIR%\..\..\bin
|
||||
|
||||
rem Get the major version for PostgreSQL
|
||||
rem set DBVERSION="`%PGDIR\psql -qAt -c "SELECT version();" template1 | cut -f2 -d' ' | cut -f1-2 -d'.'`"
|
||||
|
||||
rem Show general info
|
||||
IF usr%3 NEQ usr ( set USERNAME=%3 )
|
||||
echo username=%USERNAME%
|
||||
|
||||
rem Create DB user, web user
|
||||
%PGDIR%\createuser -U %USERNAME% --no-createdb --no-createrole --no-superuser %AWL_DBAUSER%
|
||||
%PGDIR%\createuser -U %USERNAME% --no-createdb --no-createrole --no-superuser %AWL_APPUSER%
|
||||
|
||||
echo Creating DB=%DBNAME%
|
||||
%PGDIR%\createdb -E UTF8 -T template0 -U %USERNAME% %DBNAME%
|
||||
if %ERRORLEVEL% NEQ 0 (
|
||||
echo Unable to create database
|
||||
exit /B 2
|
||||
)
|
||||
|
||||
rem This will fail if the language already exists, but it should not
|
||||
rem because we created from template0.
|
||||
%PGDIR%\createlang -U %USERNAME% plpgsql %DBNAME%
|
||||
|
||||
rem Test if egrep is available
|
||||
rem You can download egrep.exe for Windows e.g. from UnxUtils: http://unxutils.sourceforge.net/):
|
||||
egrep 2>NULL
|
||||
echo egrep results: %ERRORLEVEL%
|
||||
if %ERRORLEVEL% EQU 3 (
|
||||
rem No egrep
|
||||
|
||||
rem Load the AWL base tables and schema management tables
|
||||
echo load windows\awl-tables.sql [no egrep]
|
||||
%PGDIR%\psql -q -f %AWLDIR/awl-tables.sql %DBNAME% %USERNAME% 2>&1
|
||||
|
||||
echo load windows\schema-management.sql [no egrep]
|
||||
%PGDIR%\psql -q -f %AWLDIR%/schema-management.sql %DBNAME% %USERNAME% 2>&1
|
||||
|
||||
rem Load the DAViCal tables
|
||||
echo load davical [no egrep]
|
||||
%PGDIR%\psql -q -f %DBADIR%\davical.sql %DBNAME% %USERNAME% 2>&1
|
||||
|
||||
) ELSE (
|
||||
rem egrep is available
|
||||
|
||||
rem Load the AWL base tables and schema management tables
|
||||
echo load windows\awl-tables [egrep]
|
||||
%PGDIR%\psql -q -f %AWLDIR%/awl-tables.sql %DBNAME% %USERNAME% 2>&1 | egrep -v "(^CREATE |^GRANT|^BEGIN|^COMMIT| NOTICE: )"
|
||||
echo load WINDOWS schema-management [egrep]
|
||||
%PGDIR%\psql -q -f %AWLDIR%/schema-management.sql %DBNAME% %USERNAME% 2>&1 | egrep -v "(^CREATE |^GRANT|^BEGIN|^COMMIT| NOTICE: |^t$)"
|
||||
|
||||
rem Load the DAViCal tables
|
||||
echo load davical [egrep]
|
||||
%PGDIR%\psql -q -f %DBADIR%/davical.sql %DBNAME% %USERNAME% 2>&1 | egrep -v "(^CREATE |^GRANT|^BEGIN|^COMMIT| NOTICE: |^t$)"
|
||||
)
|
||||
del NULL
|
||||
|
||||
echo load caldav_functions
|
||||
%PGDIR%\psql -q -f %DBADIR%/caldav_functions.sql %DBNAME% %USERNAME%
|
||||
|
||||
echo TBD: Set permissions for the application DB user on the database
|
||||
rem if EXIST %DBADIR%\update-davical-database (
|
||||
rem %DBADIR%\update-davical-database --dbname %DBNAME% --appuser %AWL_APPUSER% --nopatch --owner %AWL_DBAUSER%
|
||||
rem ) ELSE (
|
||||
rem if EXIST %DBADIR%\..\update-davical-database (
|
||||
rem %DBADIR%\..\update-davical-database --dbname %DBNAME% --appuser %AWL_APPUSER% --nopatch --owner %AWL_DBAUSER%
|
||||
rem ) ELSE (
|
||||
rem echo Could not find update-davical-database...ignoring
|
||||
rem )
|
||||
rem )
|
||||
rem if %ERRORLEVEL% NEQ 0 (
|
||||
rem echo * * * * ERROR * * * *
|
||||
rem echo The database administration utility failed. This is usually due to the Perl YAML
|
||||
rem echo or the Perl DBD::Pg libraries not being available.
|
||||
|
||||
rem echo See: http://wiki.davical.org/w/Install_Errors/No_Perl_YAML
|
||||
|
||||
rem exit /B 2
|
||||
rem )
|
||||
|
||||
rem Load the required base data
|
||||
echo load base-data
|
||||
%PGDIR%\psql -q -f %DBADIR%/base-data.sql %DBNAME% %USERNAME%
|
||||
|
||||
rem We can override the admin password generation for regression testing predictability
|
||||
rem if [ %ADMINPW}" = "" ] ; then
|
||||
rem #
|
||||
rem # Generate a random administrative password. If pwgen is available we'll use that,
|
||||
rem # otherwise try and hack something up using a few standard utilities
|
||||
rem ADMINPW="`pwgen -Bcny 2>/dev/null | tr \"\\\'\" '^='`"
|
||||
rem fi
|
||||
rem
|
||||
rem if [ "$ADMINPW" = "" ] ; then
|
||||
rem # OK. They didn't supply one, and pwgen didn't work, so we hack something
|
||||
rem # together from /dev/random ...
|
||||
rem ADMINPW="`dd if=/dev/urandom bs=512 count=1 2>/dev/null | tr -c -d "[:alnum:]" | cut -c2-9`"
|
||||
rem fi
|
||||
rem
|
||||
rem # Right. We're getting desperate now. We'll have to use a default password
|
||||
rem # and hope that they change it to something more sensible.
|
||||
IF pw%ADMINPW% EQU pw ( set ADMINPW=please change this password )
|
||||
rem fi
|
||||
|
||||
%PGDIR%\psql -q -c "UPDATE usr SET password = '**%ADMINPW%' WHERE user_no = 1;" %DBNAME% %USERNAME%
|
||||
|
||||
echo The password for the 'admin' user has been set to "%ADMINPW%"
|
||||
|
||||
rem The supported locales are in a separate file to make them easier to upgrade
|
||||
%PGDIR%\psql -q -f %DBADIR%/supported_locales.sql %DBNAME% %USERNAME%
|
||||
|
||||
echo DONE
|
||||
|
||||
:END
|
||||
|
||||
endlocal
|
||||
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user