[add]
This commit is contained in:
		
							parent
							
								
									481ef0ce09
								
							
						
					
					
						commit
						343379f5d4
					
				
					 2 changed files with 132 additions and 0 deletions
				
			
		
							
								
								
									
										75
									
								
								fuseki/docker-entry.sh
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										75
									
								
								fuseki/docker-entry.sh
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,75 @@
 | 
			
		|||
#!/bin/bash
 | 
			
		||||
#   Licensed to the Apache Software Foundation (ASF) under one or more
 | 
			
		||||
#   contributor license agreements.  See the NOTICE file distributed with
 | 
			
		||||
#   this work for additional information regarding copyright ownership.
 | 
			
		||||
#   The ASF licenses this file to You under the Apache License, Version 2.0
 | 
			
		||||
#   (the "License"); you may not use this file except in compliance with
 | 
			
		||||
#   the License.  You may obtain a copy of the License at
 | 
			
		||||
#
 | 
			
		||||
#       http://www.apache.org/licenses/LICENSE-2.0
 | 
			
		||||
#
 | 
			
		||||
#   Unless required by applicable law or agreed to in writing, software
 | 
			
		||||
#   distributed under the License is distributed on an "AS IS" BASIS,
 | 
			
		||||
#   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 | 
			
		||||
#   See the License for the specific language governing permissions and
 | 
			
		||||
#   limitations under the License.
 | 
			
		||||
 | 
			
		||||
set -e
 | 
			
		||||
 | 
			
		||||
if [ ! -f "$FUSEKI_BASE/shiro.ini" ] ; then
 | 
			
		||||
  # First time
 | 
			
		||||
  echo "###################################"
 | 
			
		||||
  echo "Initializing Apache Jena Fuseki"
 | 
			
		||||
  echo ""
 | 
			
		||||
  cp "$FUSEKI_HOME/shiro.ini" "$FUSEKI_BASE/shiro.ini"
 | 
			
		||||
  if [ -z "$ADMIN_PASSWORD" ] ; then
 | 
			
		||||
    ADMIN_PASSWORD=$(pwgen -s 15)
 | 
			
		||||
    echo "Randomly generated admin password:"
 | 
			
		||||
    echo ""
 | 
			
		||||
    echo "admin=$ADMIN_PASSWORD"
 | 
			
		||||
  fi
 | 
			
		||||
  echo ""
 | 
			
		||||
  echo "###################################"
 | 
			
		||||
fi
 | 
			
		||||
 | 
			
		||||
if [ -d "/fuseki-extra" ] && [ ! -d "$FUSEKI_BASE/extra" ] ; then
 | 
			
		||||
  ln -s "/fuseki-extra" "$FUSEKI_BASE/extra" 
 | 
			
		||||
fi
 | 
			
		||||
 | 
			
		||||
# $ADMIN_PASSWORD only modifies if ${ADMIN_PASSWORD}
 | 
			
		||||
# is in shiro.ini
 | 
			
		||||
if [ -n "$ADMIN_PASSWORD" ] ; then
 | 
			
		||||
  export ADMIN_PASSWORD
 | 
			
		||||
  envsubst '${ADMIN_PASSWORD}' < "$FUSEKI_BASE/shiro.ini" > "$FUSEKI_BASE/shiro.ini.$$" && \
 | 
			
		||||
    mv "$FUSEKI_BASE/shiro.ini.$$" "$FUSEKI_BASE/shiro.ini"
 | 
			
		||||
  unset ADMIN_PASSWORD # Don't keep it in memory
 | 
			
		||||
  export ADMIN_PASSWORD
 | 
			
		||||
fi
 | 
			
		||||
 | 
			
		||||
# fork 
 | 
			
		||||
exec "$@" &
 | 
			
		||||
 | 
			
		||||
TDB_VERSION=''
 | 
			
		||||
if [ ! -z ${TDB+x} ] && [ "${TDB}" = "2" ] ; then 
 | 
			
		||||
  TDB_VERSION='tdb2'
 | 
			
		||||
else
 | 
			
		||||
  TDB_VERSION='tdb'
 | 
			
		||||
fi
 | 
			
		||||
 | 
			
		||||
# Wait until server is up
 | 
			
		||||
while [[ $(curl -I http://localhost:3030 2>/dev/null | head -n 1 | cut -d$' ' -f2) != '200' ]]; do
 | 
			
		||||
  sleep 1s
 | 
			
		||||
done
 | 
			
		||||
 | 
			
		||||
# Convert env to datasets
 | 
			
		||||
printenv | egrep "^FUSEKI_DATASET_" | while read env_var
 | 
			
		||||
do
 | 
			
		||||
    dataset=$(echo $env_var | egrep -o "=.*$" | sed 's/^=//g')
 | 
			
		||||
    curl -s 'http://localhost:3030/$/datasets'\
 | 
			
		||||
         -H "Authorization: Basic $(echo -n admin:${ADMIN_PASSWORD} | base64)" \
 | 
			
		||||
         -H 'Content-Type: application/x-www-form-urlencoded; charset=UTF-8'\
 | 
			
		||||
         --data "dbName=${dataset}&dbType=${TDB_VERSION}"
 | 
			
		||||
done
 | 
			
		||||
 | 
			
		||||
# rejoin our exec
 | 
			
		||||
wait
 | 
			
		||||
							
								
								
									
										57
									
								
								fuseki/shiro.ini
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										57
									
								
								fuseki/shiro.ini
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,57 @@
 | 
			
		|||
#   Licensed to the Apache Software Foundation (ASF) under one or more
 | 
			
		||||
#   contributor license agreements.  See the NOTICE file distributed with
 | 
			
		||||
#   this work for additional information regarding copyright ownership.
 | 
			
		||||
#   The ASF licenses this file to You under the Apache License, Version 2.0
 | 
			
		||||
#   (the "License"); you may not use this file except in compliance with
 | 
			
		||||
#   the License.  You may obtain a copy of the License at
 | 
			
		||||
#
 | 
			
		||||
#       http://www.apache.org/licenses/LICENSE-2.0
 | 
			
		||||
#
 | 
			
		||||
#   Unless required by applicable law or agreed to in writing, software
 | 
			
		||||
#   distributed under the License is distributed on an "AS IS" BASIS,
 | 
			
		||||
#   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 | 
			
		||||
#   See the License for the specific language governing permissions and
 | 
			
		||||
#   limitations under the License.
 | 
			
		||||
 | 
			
		||||
[main]
 | 
			
		||||
# Development
 | 
			
		||||
ssl.enabled = false
 | 
			
		||||
 | 
			
		||||
plainMatcher=org.apache.shiro.authc.credential.SimpleCredentialsMatcher
 | 
			
		||||
#iniRealm=org.apache.shiro.realm.text.IniRealm
 | 
			
		||||
iniRealm.credentialsMatcher = $plainMatcher
 | 
			
		||||
 | 
			
		||||
#localhost=org.apache.jena.fuseki.authz.LocalhostFilter
 | 
			
		||||
 | 
			
		||||
[users]
 | 
			
		||||
# Implicitly adds "iniRealm =  org.apache.shiro.realm.text.IniRealm"
 | 
			
		||||
# The admin password will be replaced by value of ADMIN_PASSWORD
 | 
			
		||||
# variable by docker-entrypoint.sh on FIRST start up.
 | 
			
		||||
admin=${ADMIN_PASSWORD}
 | 
			
		||||
 | 
			
		||||
[roles]
 | 
			
		||||
 | 
			
		||||
[urls]
 | 
			
		||||
## Control functions open to anyone
 | 
			
		||||
/$/status = anon
 | 
			
		||||
/$/ping   = anon
 | 
			
		||||
 | 
			
		||||
## and the rest are restricted
 | 
			
		||||
/$/** = authcBasic,user[admin]
 | 
			
		||||
 | 
			
		||||
## Sparql update is restricted
 | 
			
		||||
/*/update/** = authcBasic,user[admin]
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
## If you want simple, basic authentication user/password
 | 
			
		||||
## on the operations,
 | 
			
		||||
##    1 - set a password in [users]
 | 
			
		||||
##    2 - change the line above to:
 | 
			
		||||
## /$/** = authcBasic,user[admin]
 | 
			
		||||
## and set a better
 | 
			
		||||
 | 
			
		||||
## or to allow any access.
 | 
			
		||||
##/$/** = anon
 | 
			
		||||
 | 
			
		||||
# Everything else
 | 
			
		||||
/**=anon
 | 
			
		||||
		Loading…
	
	Add table
		
		Reference in a new issue