summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorVivien Kraus <vivien@planete-kraus.eu>2020-12-05 13:11:49 +0100
committerVivien Kraus <vivien@planete-kraus.eu>2021-06-19 15:44:36 +0200
commitb231e2f9ceea993419e1eeed3a415130f7ce1ed6 (patch)
treefdbce4e84daeca97ec9036426570e7f08bf7fd71 /src
parent33504cea60b1f8b2dd87a7bff7c8db493d66de5d (diff)
Run the identity provider as a script
Diffstat (limited to 'src')
-rw-r--r--src/Makefile.am2
-rw-r--r--src/inst/webid-oidc/Makefile.am12
-rw-r--r--src/pre-inst/webid-oidc/Makefile.am12
-rw-r--r--src/scm/webid-oidc/identity-provider.scm26
-rw-r--r--src/scm/webid-oidc/stubs.scm4
-rwxr-xr-xsrc/webid-oidc-issuer7
6 files changed, 50 insertions, 13 deletions
diff --git a/src/Makefile.am b/src/Makefile.am
index 72181cb..83d4a04 100644
--- a/src/Makefile.am
+++ b/src/Makefile.am
@@ -1,5 +1,7 @@
lib_LTLIBRARIES += %reldir%/libwebidoidc.la
+dist_bin_SCRIPTS += %reldir%/webid-oidc-issuer
+
AM_CPPFLAGS += -I %reldir% -I $(srcdir)/%reldir%
GUILD_OPTIONS =
diff --git a/src/inst/webid-oidc/Makefile.am b/src/inst/webid-oidc/Makefile.am
index ac2778b..c6edc5c 100644
--- a/src/inst/webid-oidc/Makefile.am
+++ b/src/inst/webid-oidc/Makefile.am
@@ -2,6 +2,12 @@ webidoidcmod_DATA += %reldir%/config.scm
webidoidcgo_DATA += %reldir%/config.go
%reldir%/config.scm: $(top_builddir)/config.status
- $(AM_V_GEN) mkdir -p %reldir% && (echo "(define-module (webid-oidc config))" ; \
- echo "(define-public libdir \"$(libdir)\")") \
- > $@-t && mv $@-t $@
+ $(AM_V_GEN) mkdir -p %reldir% \
+ && (echo "(define-module (webid-oidc config))" ; \
+ echo "(define-public libdir \"$(libdir)\")" ; \
+ echo "(define-public localedir \"$(localedir)\")" ; \
+ echo "(define-public version \"$(VERSION)\")" ; \
+ echo "(define-public package \"$(PACKAGE)\")" ; \
+ echo "(define-public package-bugreport \"$(PACKAGE_BUGREPORT)\")") \
+ > $@-t \
+ && mv $@-t $@
diff --git a/src/pre-inst/webid-oidc/Makefile.am b/src/pre-inst/webid-oidc/Makefile.am
index fa8c4e1..0503c8d 100644
--- a/src/pre-inst/webid-oidc/Makefile.am
+++ b/src/pre-inst/webid-oidc/Makefile.am
@@ -5,6 +5,12 @@ CLEANFILES += %reldir%/config.go %reldir%/config.scm
BUILT_SOURCES += %reldir%/config.scm
%reldir%/config.scm: $(top_builddir)/config.status
- $(AM_V_GEN) mkdir -p %reldir% && (echo "(define-module (webid-oidc config))" ; \
- echo "(define-public libdir \"$(abs_top_builddir)/src/.libs\")") \
- > $@-t && mv $@-t $@
+ $(AM_V_GEN) mkdir -p %reldir% \
+ && (echo "(define-module (webid-oidc config))" ; \
+ echo "(define-public libdir \"$(abs_top_builddir)/src/.libs\")" ; \
+ echo "(define-public localedir \"$(localedir)\")" ; \
+ echo "(define-public version \"$(VERSION)\")" ; \
+ echo "(define-public package \"$(PACKAGE)\")" ; \
+ echo "(define-public package-bugreport \"$(PACKAGE_BUGREPORT)\")") \
+ > $@-t \
+ && mv $@-t $@
diff --git a/src/scm/webid-oidc/identity-provider.scm b/src/scm/webid-oidc/identity-provider.scm
index de49fc5..8df4386 100644
--- a/src/scm/webid-oidc/identity-provider.scm
+++ b/src/scm/webid-oidc/identity-provider.scm
@@ -246,8 +246,8 @@ by shepherd in reality):
--subject https://webid-oidc-demo.planete-kraus.eu/profile/card#me \\
--password \"$PASSWORD\" \\
--jwks-uri https://webid-oidc-demo.planete-kraus.eu/keys \\
- --authorization-endpoint https://webid-oidc-demo.planete-kraus.eu/authorize \\
- --token-endpoint https://webid-oidc-demo.planete-kraus.eu/token \\
+ --authorization-endpoint-uri https://webid-oidc-demo.planete-kraus.eu/authorize \\
+ --token-endpoint-uri https://webid-oidc-demo.planete-kraus.eu/token \\
--port $PORT
If you find a bug, send a report to ~a.
@@ -284,10 +284,10 @@ If you find a bug, send a report to ~a.
(option-ref options error-file-sym #f))
(jti-list (make-jti-list)))
(when log-file-string
- (set-current-output-port (open-output-file* log-file-string))
+ (set-current-output-port (stubs:open-output-file* log-file-string))
(setvbuf (current-output-port) 'none))
(when error-file-string
- (set-current-error-port (open-output-file* error-file-string))
+ (set-current-error-port (stubs:open-output-file* error-file-string))
(setvbuf (current-error-port) 'none))
(unless (and issuer (string->uri issuer))
(format (current-error-port)
@@ -343,13 +343,25 @@ If you find a bug, send a report to ~a.
(with-exception-handler
(lambda (error)
(format (current-error-port)
- (G_ "Internal server error: ~a\n")
+ (G_ "~a: Internal server error: ~a\n")
+ (date->string (time-utc->date (current-time)))
(error->str error))
(values
(build-response #:code 500
#:reason-phrase "Internal Server Error")
"Sorry, there was an error."))
(lambda ()
- (handler request request-body))))))
+ (with-exception-handler
+ (lambda (error)
+ (format (current-error-port)
+ (G_ "The client locale ~s can’t be approximated by system locale ~s (because ~a), using C.\n")
+ ((record-accessor &unknown-client-locale 'web-locale) error)
+ ((record-accessor &unknown-client-locale 'c-locale) error)
+ (error->str error)))
+ (lambda ()
+ (handler request request-body))
+ #:unwind? #t
+ #:unwind-for-type &unknown-client-locale))
+ #:unwind? #t))))
(install-suspendable-ports!)
- (run-server handler 'http (list #:port (string->number port-string)))))))))))
+ (run-server handler-with-log 'http (list #:port (string->number port-string)))))))))))
diff --git a/src/scm/webid-oidc/stubs.scm b/src/scm/webid-oidc/stubs.scm
index b29aa1f..cdea58a 100644
--- a/src/scm/webid-oidc/stubs.scm
+++ b/src/scm/webid-oidc/stubs.scm
@@ -137,6 +137,10 @@
(else
(throw key subr message args rest))))))
+(define-public (open-output-file* filename . args)
+ (mkdir-p (dirname filename))
+ (apply open-output-file filename args))
+
(define-public (call-with-output-file* filename . args)
(mkdir-p (dirname filename))
(apply call-with-output-file filename args))
diff --git a/src/webid-oidc-issuer b/src/webid-oidc-issuer
new file mode 100755
index 0000000..6dd2960
--- /dev/null
+++ b/src/webid-oidc-issuer
@@ -0,0 +1,7 @@
+#!/usr/local/bin/guile \
+--no-auto-compile -s
+!#
+
+(use-modules (webid-oidc identity-provider))
+
+(main)