kibi-swipl-linux-x64-gnu 1.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +29 -0
- package/bin/swipl +0 -0
- package/bin/swipl-win +0 -0
- package/build-manifest.json +70 -0
- package/lib/cmake/swipl/SWIPLConfig.cmake +21 -0
- package/lib/cmake/swipl/SWIPLConfigVersion.cmake +65 -0
- package/lib/cmake/swipl/SWIPLTargets-release.cmake +28 -0
- package/lib/cmake/swipl/SWIPLTargets.cmake +109 -0
- package/lib/swipl/ABI +1 -0
- package/lib/swipl/LICENSE +41 -0
- package/lib/swipl/README.md +116 -0
- package/lib/swipl/app/README.md +25 -0
- package/lib/swipl/app/app.pl +87 -0
- package/lib/swipl/app/pack.pl +350 -0
- package/lib/swipl/app/qlf.pl +521 -0
- package/lib/swipl/app/splfr.pl +177 -0
- package/lib/swipl/app/sys.pl +310 -0
- package/lib/swipl/bin/swipl.home +1 -0
- package/lib/swipl/boot/apply.pl +73 -0
- package/lib/swipl/boot/attvar.pl +344 -0
- package/lib/swipl/boot/autoload.pl +1226 -0
- package/lib/swipl/boot/bags.pl +283 -0
- package/lib/swipl/boot/dcg.pl +388 -0
- package/lib/swipl/boot/dicts.pl +193 -0
- package/lib/swipl/boot/dwim.pl +485 -0
- package/lib/swipl/boot/engines.pl +152 -0
- package/lib/swipl/boot/expand.pl +1628 -0
- package/lib/swipl/boot/gc.pl +65 -0
- package/lib/swipl/boot/history.pl +304 -0
- package/lib/swipl/boot/init.pl +4682 -0
- package/lib/swipl/boot/iri.pl +64 -0
- package/lib/swipl/boot/license.pl +390 -0
- package/lib/swipl/boot/load.pl +81 -0
- package/lib/swipl/boot/messages.pl +2521 -0
- package/lib/swipl/boot/packs.pl +306 -0
- package/lib/swipl/boot/predopts.pl +154 -0
- package/lib/swipl/boot/qlf.pl +141 -0
- package/lib/swipl/boot/rc.pl +263 -0
- package/lib/swipl/boot/syspred.pl +1634 -0
- package/lib/swipl/boot/tabling.pl +2321 -0
- package/lib/swipl/boot/threads.pl +42 -0
- package/lib/swipl/boot/toplevel.pl +2248 -0
- package/lib/swipl/boot/topvars.pl +261 -0
- package/lib/swipl/boot.prc +0 -0
- package/lib/swipl/cmake/swipl.cmake +131 -0
- package/lib/swipl/customize/README.md +23 -0
- package/lib/swipl/customize/edit +101 -0
- package/lib/swipl/customize/init.pl +164 -0
- package/lib/swipl/demo/README.md +33 -0
- package/lib/swipl/demo/likes.pl +44 -0
- package/lib/swipl/doc/packages/examples/chr/bool.chr +281 -0
- package/lib/swipl/doc/packages/examples/chr/chrdif.chr +87 -0
- package/lib/swipl/doc/packages/examples/chr/chrfreeze.chr +6 -0
- package/lib/swipl/doc/packages/examples/chr/family.chr +116 -0
- package/lib/swipl/doc/packages/examples/chr/fib.chr +24 -0
- package/lib/swipl/doc/packages/examples/chr/fibonacci.chr +31 -0
- package/lib/swipl/doc/packages/examples/chr/gcd.chr +28 -0
- package/lib/swipl/doc/packages/examples/chr/leq.chr +34 -0
- package/lib/swipl/doc/packages/examples/chr/listdom.chr +138 -0
- package/lib/swipl/doc/packages/examples/chr/primes.chr +29 -0
- package/lib/swipl/doc/packages/examples/http/README.md +98 -0
- package/lib/swipl/doc/packages/examples/http/calc.pl +92 -0
- package/lib/swipl/doc/packages/examples/http/demo_body.pl +232 -0
- package/lib/swipl/doc/packages/examples/http/demo_client.pl +165 -0
- package/lib/swipl/doc/packages/examples/http/demo_daemon.pl +38 -0
- package/lib/swipl/doc/packages/examples/http/demo_files.pl +50 -0
- package/lib/swipl/doc/packages/examples/http/demo_hello.pl +15 -0
- package/lib/swipl/doc/packages/examples/http/demo_login.pl +280 -0
- package/lib/swipl/doc/packages/examples/http/demo_openid.pl +177 -0
- package/lib/swipl/doc/packages/examples/http/demo_pwp.pl +20 -0
- package/lib/swipl/doc/packages/examples/http/demo_rest.pl +56 -0
- package/lib/swipl/doc/packages/examples/http/demo_threads.pl +52 -0
- package/lib/swipl/doc/packages/examples/http/linux-init-script +126 -0
- package/lib/swipl/doc/packages/examples/http/pwp/context.pwp +23 -0
- package/lib/swipl/doc/packages/examples/http/pwp/index.pwp +25 -0
- package/lib/swipl/doc/packages/examples/http/pwp/pwp1.pwp +12 -0
- package/lib/swipl/doc/packages/examples/http/pwp/pwp2.pwp +10 -0
- package/lib/swipl/doc/packages/examples/http/pwp/pwp3.pwp +25 -0
- package/lib/swipl/doc/packages/examples/http/pwp/pwp4.pwp +23 -0
- package/lib/swipl/doc/packages/examples/http/pwp/pwp5.pwp +11 -0
- package/lib/swipl/doc/packages/examples/http/pwp/pwp6.pwp +3 -0
- package/lib/swipl/doc/packages/examples/http/pwp/pwp7.pwp +3 -0
- package/lib/swipl/doc/packages/examples/http/pwp/pwp8.pwp +3 -0
- package/lib/swipl/doc/packages/examples/http/pwp/pwpdb.pl +12 -0
- package/lib/swipl/doc/packages/examples/http/systemd-script.service +18 -0
- package/lib/swipl/doc/packages/examples/http/upstart-script.conf +20 -0
- package/lib/swipl/doc/packages/examples/plunit/read.pl +17 -0
- package/lib/swipl/doc/packages/examples/plunit/simple.pl +33 -0
- package/lib/swipl/doc/packages/examples/ssl/client.pl +83 -0
- package/lib/swipl/doc/packages/examples/ssl/etc/README +52 -0
- package/lib/swipl/doc/packages/examples/ssl/etc/client/client-cert.p12 +0 -0
- package/lib/swipl/doc/packages/examples/ssl/etc/client/client-cert.pem +85 -0
- package/lib/swipl/doc/packages/examples/ssl/etc/client/client-key.pem +30 -0
- package/lib/swipl/doc/packages/examples/ssl/etc/demoCA/cacert.pem +82 -0
- package/lib/swipl/doc/packages/examples/ssl/etc/demoCA/careq.pem +18 -0
- package/lib/swipl/doc/packages/examples/ssl/etc/demoCA/crlnumber +1 -0
- package/lib/swipl/doc/packages/examples/ssl/etc/demoCA/index.txt +3 -0
- package/lib/swipl/doc/packages/examples/ssl/etc/demoCA/index.txt.attr +1 -0
- package/lib/swipl/doc/packages/examples/ssl/etc/demoCA/newcerts/9DC08797A0F63F7C.pem +85 -0
- package/lib/swipl/doc/packages/examples/ssl/etc/demoCA/newcerts/9DC08797A0F63F7D.pem +85 -0
- package/lib/swipl/doc/packages/examples/ssl/etc/demoCA/private/cakey.pem +30 -0
- package/lib/swipl/doc/packages/examples/ssl/etc/demoCA/serial +1 -0
- package/lib/swipl/doc/packages/examples/ssl/etc/server/server-cert.pem +85 -0
- package/lib/swipl/doc/packages/examples/ssl/etc/server/server-key.pem +30 -0
- package/lib/swipl/doc/packages/examples/ssl/https.pl +267 -0
- package/lib/swipl/doc/packages/examples/ssl/server.pl +106 -0
- package/lib/swipl/include/SWI-Prolog.h +1544 -0
- package/lib/swipl/include/SWI-Stream.h +537 -0
- package/lib/swipl/include/Yap/YapInterface.h +283 -0
- package/lib/swipl/include/sicstus/sicstus.h +452 -0
- package/lib/swipl/lib/x86_64-linux/cgi.so +0 -0
- package/lib/swipl/lib/x86_64-linux/crypt.so +0 -0
- package/lib/swipl/lib/x86_64-linux/crypto4pl.so +0 -0
- package/lib/swipl/lib/x86_64-linux/double_metaphone.so +0 -0
- package/lib/swipl/lib/x86_64-linux/files.so +0 -0
- package/lib/swipl/lib/x86_64-linux/hashstream.so +0 -0
- package/lib/swipl/lib/x86_64-linux/http_stream.so +0 -0
- package/lib/swipl/lib/x86_64-linux/isub.so +0 -0
- package/lib/swipl/lib/x86_64-linux/json.so +0 -0
- package/lib/swipl/lib/x86_64-linux/libswipl.so.10 +0 -0
- package/lib/swipl/lib/x86_64-linux/mallocinfo.so +0 -0
- package/lib/swipl/lib/x86_64-linux/md54pl.so +0 -0
- package/lib/swipl/lib/x86_64-linux/memfile.so +0 -0
- package/lib/swipl/lib/x86_64-linux/ntriples.so +0 -0
- package/lib/swipl/lib/x86_64-linux/pcre4pl.so +0 -0
- package/lib/swipl/lib/x86_64-linux/porter_stem.so +0 -0
- package/lib/swipl/lib/x86_64-linux/process.so +0 -0
- package/lib/swipl/lib/x86_64-linux/prolog_stream.so +0 -0
- package/lib/swipl/lib/x86_64-linux/rdf_db.so +0 -0
- package/lib/swipl/lib/x86_64-linux/readutil.so +0 -0
- package/lib/swipl/lib/x86_64-linux/rlimit.so +0 -0
- package/lib/swipl/lib/x86_64-linux/sched.so +0 -0
- package/lib/swipl/lib/x86_64-linux/sgml2pl.so +0 -0
- package/lib/swipl/lib/x86_64-linux/sha4pl.so +0 -0
- package/lib/swipl/lib/x86_64-linux/snowball.so +0 -0
- package/lib/swipl/lib/x86_64-linux/socket.so +0 -0
- package/lib/swipl/lib/x86_64-linux/ssl4pl.so +0 -0
- package/lib/swipl/lib/x86_64-linux/streaminfo.so +0 -0
- package/lib/swipl/lib/x86_64-linux/syslog.so +0 -0
- package/lib/swipl/lib/x86_64-linux/time.so +0 -0
- package/lib/swipl/lib/x86_64-linux/turtle.so +0 -0
- package/lib/swipl/lib/x86_64-linux/uid.so +0 -0
- package/lib/swipl/lib/x86_64-linux/unix.so +0 -0
- package/lib/swipl/lib/x86_64-linux/uri.so +0 -0
- package/lib/swipl/lib/x86_64-linux/websocket.so +0 -0
- package/lib/swipl/lib/x86_64-linux/zlib4pl.so +0 -0
- package/lib/swipl/library/INDEX.pl +1020 -0
- package/lib/swipl/library/aggregate.pl +755 -0
- package/lib/swipl/library/ansi_term.pl +653 -0
- package/lib/swipl/library/apply.pl +426 -0
- package/lib/swipl/library/apply_macros.pl +497 -0
- package/lib/swipl/library/arithmetic.pl +320 -0
- package/lib/swipl/library/assoc.pl +522 -0
- package/lib/swipl/library/atom.pl +169 -0
- package/lib/swipl/library/backcomp.pl +688 -0
- package/lib/swipl/library/base32.pl +291 -0
- package/lib/swipl/library/base64.pl +441 -0
- package/lib/swipl/library/broadcast.pl +161 -0
- package/lib/swipl/library/build/cmake.pl +137 -0
- package/lib/swipl/library/build/conan.pl +232 -0
- package/lib/swipl/library/build/make.pl +168 -0
- package/lib/swipl/library/build/tools.pl +825 -0
- package/lib/swipl/library/charsio.pl +195 -0
- package/lib/swipl/library/check.pl +1097 -0
- package/lib/swipl/library/check_installation.pl +912 -0
- package/lib/swipl/library/clp/INDEX.pl +157 -0
- package/lib/swipl/library/clp/bounds.pl +2036 -0
- package/lib/swipl/library/clp/clp_distinct.pl +263 -0
- package/lib/swipl/library/clp/clp_events.pl +92 -0
- package/lib/swipl/library/clp/clpb.pl +1896 -0
- package/lib/swipl/library/clp/clpfd.pl +7906 -0
- package/lib/swipl/library/clp/simplex.pl +1580 -0
- package/lib/swipl/library/codesio.pl +182 -0
- package/lib/swipl/library/coinduction.pl +183 -0
- package/lib/swipl/library/console_input.pl +289 -0
- package/lib/swipl/library/csv.pl +611 -0
- package/lib/swipl/library/ctypes.pl +161 -0
- package/lib/swipl/library/date.pl +370 -0
- package/lib/swipl/library/dcg/INDEX.pl +35 -0
- package/lib/swipl/library/dcg/basics.pl +514 -0
- package/lib/swipl/library/dcg/high_order.pl +227 -0
- package/lib/swipl/library/debug.pl +499 -0
- package/lib/swipl/library/dialect/bim.pl +186 -0
- package/lib/swipl/library/dialect/commons.pl +77 -0
- package/lib/swipl/library/dialect/eclipse/test_util_iso.pl +355 -0
- package/lib/swipl/library/dialect/hprolog/format.pl +44 -0
- package/lib/swipl/library/dialect/hprolog.pl +314 -0
- package/lib/swipl/library/dialect/ifprolog.pl +1317 -0
- package/lib/swipl/library/dialect/iso/iso_predicates.pl +277 -0
- package/lib/swipl/library/dialect/sicstus/README.TXT +1 -0
- package/lib/swipl/library/dialect/sicstus/arrays.pl +121 -0
- package/lib/swipl/library/dialect/sicstus/block.pl +278 -0
- package/lib/swipl/library/dialect/sicstus/lists.pl +167 -0
- package/lib/swipl/library/dialect/sicstus/ordsets.pl +52 -0
- package/lib/swipl/library/dialect/sicstus/sockets.pl +174 -0
- package/lib/swipl/library/dialect/sicstus/system.pl +262 -0
- package/lib/swipl/library/dialect/sicstus/terms.pl +57 -0
- package/lib/swipl/library/dialect/sicstus/timeout.pl +92 -0
- package/lib/swipl/library/dialect/sicstus.pl +582 -0
- package/lib/swipl/library/dialect/sicstus4/aggregate.pl +60 -0
- package/lib/swipl/library/dialect/sicstus4/between.pl +62 -0
- package/lib/swipl/library/dialect/sicstus4/clpfd.pl +75 -0
- package/lib/swipl/library/dialect/sicstus4/file_systems.pl +413 -0
- package/lib/swipl/library/dialect/sicstus4/lists.pl +274 -0
- package/lib/swipl/library/dialect/sicstus4/ordsets.pl +54 -0
- package/lib/swipl/library/dialect/sicstus4/samsort.pl +86 -0
- package/lib/swipl/library/dialect/sicstus4/sets.pl +124 -0
- package/lib/swipl/library/dialect/sicstus4/sockets.pl +164 -0
- package/lib/swipl/library/dialect/sicstus4/system.pl +80 -0
- package/lib/swipl/library/dialect/sicstus4/terms.pl +89 -0
- package/lib/swipl/library/dialect/sicstus4/timeout.pl +43 -0
- package/lib/swipl/library/dialect/sicstus4/types.pl +103 -0
- package/lib/swipl/library/dialect/sicstus4.pl +200 -0
- package/lib/swipl/library/dialect/swi/syspred_options.pl +250 -0
- package/lib/swipl/library/dialect/xsb/README.md +20 -0
- package/lib/swipl/library/dialect/xsb/basics.pl +318 -0
- package/lib/swipl/library/dialect/xsb/consult.pl +87 -0
- package/lib/swipl/library/dialect/xsb/curr_sym.pl +57 -0
- package/lib/swipl/library/dialect/xsb/error_handler.pl +111 -0
- package/lib/swipl/library/dialect/xsb/gensym.pl +53 -0
- package/lib/swipl/library/dialect/xsb/gpp.pl +138 -0
- package/lib/swipl/library/dialect/xsb/intern.pl +48 -0
- package/lib/swipl/library/dialect/xsb/lists.pl +47 -0
- package/lib/swipl/library/dialect/xsb/machine.pl +295 -0
- package/lib/swipl/library/dialect/xsb/ordsets.pl +53 -0
- package/lib/swipl/library/dialect/xsb/setof.pl +54 -0
- package/lib/swipl/library/dialect/xsb/source.pl +308 -0
- package/lib/swipl/library/dialect/xsb/standard.pl +169 -0
- package/lib/swipl/library/dialect/xsb/storage.pl +70 -0
- package/lib/swipl/library/dialect/xsb/string.pl +76 -0
- package/lib/swipl/library/dialect/xsb/thread.pl +62 -0
- package/lib/swipl/library/dialect/xsb/timed_call.pl +158 -0
- package/lib/swipl/library/dialect/xsb.pl +688 -0
- package/lib/swipl/library/dialect/yap/README.TXT +8 -0
- package/lib/swipl/library/dialect/yap.pl +283 -0
- package/lib/swipl/library/dialect.pl +123 -0
- package/lib/swipl/library/dicts.pl +399 -0
- package/lib/swipl/library/dif.pl +426 -0
- package/lib/swipl/library/edinburgh.pl +138 -0
- package/lib/swipl/library/edit.pl +783 -0
- package/lib/swipl/library/error.pl +495 -0
- package/lib/swipl/library/exceptions.pl +231 -0
- package/lib/swipl/library/explain.pl +543 -0
- package/lib/swipl/library/ext/RDF/INDEX.pl +25 -0
- package/lib/swipl/library/ext/RDF/rdf.pl +450 -0
- package/lib/swipl/library/ext/RDF/rdf_parser.pl +649 -0
- package/lib/swipl/library/ext/RDF/rdf_triple.pl +448 -0
- package/lib/swipl/library/ext/RDF/rdf_write.pl +701 -0
- package/lib/swipl/library/ext/RDF/rewrite_term.pl +177 -0
- package/lib/swipl/library/ext/chr/chr/a_star.pl +80 -0
- package/lib/swipl/library/ext/chr/chr/binomialheap.pl +142 -0
- package/lib/swipl/library/ext/chr/chr/builtins.pl +629 -0
- package/lib/swipl/library/ext/chr/chr/chr_compiler_errors.pl +179 -0
- package/lib/swipl/library/ext/chr/chr/chr_compiler_options.pl +382 -0
- package/lib/swipl/library/ext/chr/chr/chr_compiler_utility.pl +338 -0
- package/lib/swipl/library/ext/chr/chr/chr_debug.pl +59 -0
- package/lib/swipl/library/ext/chr/chr/chr_hashtable_store.pl +425 -0
- package/lib/swipl/library/ext/chr/chr/chr_integertable_store.pl +139 -0
- package/lib/swipl/library/ext/chr/chr/chr_messages.pl +176 -0
- package/lib/swipl/library/ext/chr/chr/chr_op.pl +53 -0
- package/lib/swipl/library/ext/chr/chr/chr_runtime.pl +1016 -0
- package/lib/swipl/library/ext/chr/chr/chr_translate.pl +25424 -0
- package/lib/swipl/library/ext/chr/chr/clean_code.pl +252 -0
- package/lib/swipl/library/ext/chr/chr/find.pl +78 -0
- package/lib/swipl/library/ext/chr/chr/guard_entailment.pl +19432 -0
- package/lib/swipl/library/ext/chr/chr/listmap.pl +108 -0
- package/lib/swipl/library/ext/chr/chr/pairlist.pl +78 -0
- package/lib/swipl/library/ext/chr/chr.pl +686 -0
- package/lib/swipl/library/ext/clib/INDEX.pl +158 -0
- package/lib/swipl/library/ext/clib/cgi.pl +86 -0
- package/lib/swipl/library/ext/clib/crypt.pl +44 -0
- package/lib/swipl/library/ext/clib/filesex.pl +644 -0
- package/lib/swipl/library/ext/clib/hash_stream.pl +119 -0
- package/lib/swipl/library/ext/clib/mallocinfo.pl +138 -0
- package/lib/swipl/library/ext/clib/md5.pl +68 -0
- package/lib/swipl/library/ext/clib/memfile.pl +61 -0
- package/lib/swipl/library/ext/clib/process.pl +573 -0
- package/lib/swipl/library/ext/clib/prolog_server.pl +157 -0
- package/lib/swipl/library/ext/clib/prolog_stream.pl +80 -0
- package/lib/swipl/library/ext/clib/rlimit.pl +54 -0
- package/lib/swipl/library/ext/clib/sched.pl +85 -0
- package/lib/swipl/library/ext/clib/sha.pl +162 -0
- package/lib/swipl/library/ext/clib/socket.pl +1102 -0
- package/lib/swipl/library/ext/clib/streaminfo.pl +103 -0
- package/lib/swipl/library/ext/clib/streampool.pl +136 -0
- package/lib/swipl/library/ext/clib/syslog.pl +180 -0
- package/lib/swipl/library/ext/clib/time.pl +194 -0
- package/lib/swipl/library/ext/clib/udp_broadcast.pl +975 -0
- package/lib/swipl/library/ext/clib/uid.pl +220 -0
- package/lib/swipl/library/ext/clib/unix.pl +317 -0
- package/lib/swipl/library/ext/clib/uri.pl +530 -0
- package/lib/swipl/library/ext/clib/uuid.pl +207 -0
- package/lib/swipl/library/ext/http/http/INDEX.pl +266 -0
- package/lib/swipl/library/ext/http/http/README.md +34 -0
- package/lib/swipl/library/ext/http/http/ax.pl +189 -0
- package/lib/swipl/library/ext/http/http/dcg_basics.pl +49 -0
- package/lib/swipl/library/ext/http/http/graphql.pl +1367 -0
- package/lib/swipl/library/ext/http/http/html_decl.pl +416 -0
- package/lib/swipl/library/ext/http/http/html_head.pl +654 -0
- package/lib/swipl/library/ext/http/http/html_quasiquotations.pl +120 -0
- package/lib/swipl/library/ext/http/http/html_write.pl +1425 -0
- package/lib/swipl/library/ext/http/http/htmx.pl +139 -0
- package/lib/swipl/library/ext/http/http/http_authenticate.pl +364 -0
- package/lib/swipl/library/ext/http/http/http_client.pl +412 -0
- package/lib/swipl/library/ext/http/http/http_cookie.pl +245 -0
- package/lib/swipl/library/ext/http/http/http_cors.pl +176 -0
- package/lib/swipl/library/ext/http/http/http_digest.pl +820 -0
- package/lib/swipl/library/ext/http/http/http_dirindex.pl +296 -0
- package/lib/swipl/library/ext/http/http/http_dispatch.pl +1552 -0
- package/lib/swipl/library/ext/http/http/http_dyn_workers.pl +214 -0
- package/lib/swipl/library/ext/http/http/http_error.pl +126 -0
- package/lib/swipl/library/ext/http/http/http_exception.pl +225 -0
- package/lib/swipl/library/ext/http/http/http_files.pl +163 -0
- package/lib/swipl/library/ext/http/http/http_header.pl +2820 -0
- package/lib/swipl/library/ext/http/http/http_hook.pl +106 -0
- package/lib/swipl/library/ext/http/http/http_host.pl +204 -0
- package/lib/swipl/library/ext/http/http/http_load.pl +113 -0
- package/lib/swipl/library/ext/http/http/http_log.pl +738 -0
- package/lib/swipl/library/ext/http/http/http_multipart_plugin.pl +232 -0
- package/lib/swipl/library/ext/http/http/http_open.pl +1821 -0
- package/lib/swipl/library/ext/http/http/http_openid.pl +1561 -0
- package/lib/swipl/library/ext/http/http/http_parameters.pl +504 -0
- package/lib/swipl/library/ext/http/http/http_path.pl +380 -0
- package/lib/swipl/library/ext/http/http/http_proxy.pl +80 -0
- package/lib/swipl/library/ext/http/http/http_pwp.pl +351 -0
- package/lib/swipl/library/ext/http/http/http_redis_plugin.pl +332 -0
- package/lib/swipl/library/ext/http/http/http_server.pl +105 -0
- package/lib/swipl/library/ext/http/http/http_server_files.pl +126 -0
- package/lib/swipl/library/ext/http/http/http_server_health.pl +186 -0
- package/lib/swipl/library/ext/http/http/http_session.pl +1040 -0
- package/lib/swipl/library/ext/http/http/http_sgml_plugin.pl +137 -0
- package/lib/swipl/library/ext/http/http/http_stream.pl +376 -0
- package/lib/swipl/library/ext/http/http/http_unix_daemon.pl +989 -0
- package/lib/swipl/library/ext/http/http/http_wrapper.pl +559 -0
- package/lib/swipl/library/ext/http/http/hub.pl +600 -0
- package/lib/swipl/library/ext/http/http/js_write.pl +461 -0
- package/lib/swipl/library/ext/http/http/mimepack.pl +224 -0
- package/lib/swipl/library/ext/http/http/mimetype.pl +276 -0
- package/lib/swipl/library/ext/http/http/term_html.pl +797 -0
- package/lib/swipl/library/ext/http/http/thread_httpd.pl +1181 -0
- package/lib/swipl/library/ext/http/http/web/css/dirindex.css +24 -0
- package/lib/swipl/library/ext/http/http/web/css/openid.css +57 -0
- package/lib/swipl/library/ext/http/http/web/icons/back.png +0 -0
- package/lib/swipl/library/ext/http/http/web/icons/c.png +0 -0
- package/lib/swipl/library/ext/http/http/web/icons/compressed.png +0 -0
- package/lib/swipl/library/ext/http/http/web/icons/folder.png +0 -0
- package/lib/swipl/library/ext/http/http/web/icons/generic.png +0 -0
- package/lib/swipl/library/ext/http/http/web/icons/layout.png +0 -0
- package/lib/swipl/library/ext/http/http/web/icons/openid-logo-square.png +0 -0
- package/lib/swipl/library/ext/http/http/web/icons/openid-logo-tiny.png +0 -0
- package/lib/swipl/library/ext/http/http/websocket.pl +729 -0
- package/lib/swipl/library/ext/http/http/yadis.pl +205 -0
- package/lib/swipl/library/ext/json/INDEX.pl +36 -0
- package/lib/swipl/library/ext/json/http/INDEX.pl +16 -0
- package/lib/swipl/library/ext/json/http/http_json.pl +490 -0
- package/lib/swipl/library/ext/json/http/js_grammar.pl +53 -0
- package/lib/swipl/library/ext/json/http/json.pl +48 -0
- package/lib/swipl/library/ext/json/http/json_convert.pl +48 -0
- package/lib/swipl/library/ext/json/json.pl +1215 -0
- package/lib/swipl/library/ext/json/json_convert.pl +681 -0
- package/lib/swipl/library/ext/json/json_grammar.pl +349 -0
- package/lib/swipl/library/ext/json/json_rpc_client.pl +423 -0
- package/lib/swipl/library/ext/json/json_rpc_common.pl +104 -0
- package/lib/swipl/library/ext/json/json_rpc_server.pl +489 -0
- package/lib/swipl/library/ext/json/json_schema.pl +2111 -0
- package/lib/swipl/library/ext/nlp/INDEX.pl +15 -0
- package/lib/swipl/library/ext/nlp/double_metaphone.pl +86 -0
- package/lib/swipl/library/ext/nlp/isub.pl +162 -0
- package/lib/swipl/library/ext/nlp/porter_stem.pl +50 -0
- package/lib/swipl/library/ext/nlp/snowball.pl +97 -0
- package/lib/swipl/library/ext/pcre/INDEX.pl +17 -0
- package/lib/swipl/library/ext/pcre/pcre.pl +974 -0
- package/lib/swipl/library/ext/plunit/INDEX.pl +20 -0
- package/lib/swipl/library/ext/plunit/plunit.pl +2631 -0
- package/lib/swipl/library/ext/plunit/test_wizard.pl +249 -0
- package/lib/swipl/library/ext/semweb/semweb/INDEX.pl +288 -0
- package/lib/swipl/library/ext/semweb/semweb/rdf11.pl +2106 -0
- package/lib/swipl/library/ext/semweb/semweb/rdf11_containers.pl +299 -0
- package/lib/swipl/library/ext/semweb/semweb/rdf_cache.pl +278 -0
- package/lib/swipl/library/ext/semweb/semweb/rdf_compare.pl +132 -0
- package/lib/swipl/library/ext/semweb/semweb/rdf_db.pl +3468 -0
- package/lib/swipl/library/ext/semweb/semweb/rdf_edit.pl +1145 -0
- package/lib/swipl/library/ext/semweb/semweb/rdf_http_plugin.pl +274 -0
- package/lib/swipl/library/ext/semweb/semweb/rdf_library.pl +1021 -0
- package/lib/swipl/library/ext/semweb/semweb/rdf_litindex.pl +1035 -0
- package/lib/swipl/library/ext/semweb/semweb/rdf_ntriples.pl +422 -0
- package/lib/swipl/library/ext/semweb/semweb/rdf_persistency.pl +1576 -0
- package/lib/swipl/library/ext/semweb/semweb/rdf_portray.pl +182 -0
- package/lib/swipl/library/ext/semweb/semweb/rdf_prefixes.pl +681 -0
- package/lib/swipl/library/ext/semweb/semweb/rdf_sandbox.pl +153 -0
- package/lib/swipl/library/ext/semweb/semweb/rdf_turtle.pl +54 -0
- package/lib/swipl/library/ext/semweb/semweb/rdf_turtle_write.pl +1587 -0
- package/lib/swipl/library/ext/semweb/semweb/rdf_zlib_plugin.pl +52 -0
- package/lib/swipl/library/ext/semweb/semweb/rdfa.pl +1510 -0
- package/lib/swipl/library/ext/semweb/semweb/rdfs.pl +475 -0
- package/lib/swipl/library/ext/semweb/semweb/sparql_client.pl +643 -0
- package/lib/swipl/library/ext/semweb/semweb/turtle.pl +455 -0
- package/lib/swipl/library/ext/sgml/DTD/HTML4.dcl +88 -0
- package/lib/swipl/library/ext/sgml/DTD/HTML4.dtd +1092 -0
- package/lib/swipl/library/ext/sgml/DTD/HTML4.soc +6 -0
- package/lib/swipl/library/ext/sgml/DTD/HTML5.dtd +906 -0
- package/lib/swipl/library/ext/sgml/DTD/HTMLlat1.ent +195 -0
- package/lib/swipl/library/ext/sgml/DTD/HTMLspec.ent +77 -0
- package/lib/swipl/library/ext/sgml/DTD/HTMLsym.ent +241 -0
- package/lib/swipl/library/ext/sgml/INDEX.pl +64 -0
- package/lib/swipl/library/ext/sgml/c14n2.pl +203 -0
- package/lib/swipl/library/ext/sgml/iso_639.pl +631 -0
- package/lib/swipl/library/ext/sgml/pwp.pl +705 -0
- package/lib/swipl/library/ext/sgml/sgml.pl +815 -0
- package/lib/swipl/library/ext/sgml/sgml_write.pl +1003 -0
- package/lib/swipl/library/ext/sgml/xpath.pl +620 -0
- package/lib/swipl/library/ext/sgml/xsdp_types.pl +232 -0
- package/lib/swipl/library/ext/ssl/INDEX.pl +60 -0
- package/lib/swipl/library/ext/ssl/crypto.pl +1015 -0
- package/lib/swipl/library/ext/ssl/http/INDEX.pl +5 -0
- package/lib/swipl/library/ext/ssl/http/http_ssl_plugin.pl +296 -0
- package/lib/swipl/library/ext/ssl/saml.pl +609 -0
- package/lib/swipl/library/ext/ssl/ssl.pl +647 -0
- package/lib/swipl/library/ext/ssl/xmldsig.pl +391 -0
- package/lib/swipl/library/ext/ssl/xmlenc.pl +354 -0
- package/lib/swipl/library/ext/zlib/INDEX.pl +8 -0
- package/lib/swipl/library/ext/zlib/zlib.pl +112 -0
- package/lib/swipl/library/fastrw.pl +105 -0
- package/lib/swipl/library/files.pl +80 -0
- package/lib/swipl/library/gensym.pl +111 -0
- package/lib/swipl/library/git.pl +1027 -0
- package/lib/swipl/library/hashtable.pl +365 -0
- package/lib/swipl/library/heaps.pl +252 -0
- package/lib/swipl/library/hotfix.pl +239 -0
- package/lib/swipl/library/http/jquery.pl +103 -0
- package/lib/swipl/library/http/web/js/jquery-3.6.0.min.js +2 -0
- package/lib/swipl/library/increval.pl +217 -0
- package/lib/swipl/library/intercept.pl +263 -0
- package/lib/swipl/library/iostream.pl +237 -0
- package/lib/swipl/library/iri_scheme/file.pl +70 -0
- package/lib/swipl/library/lazy_lists.pl +481 -0
- package/lib/swipl/library/listing.pl +1362 -0
- package/lib/swipl/library/lists.pl +860 -0
- package/lib/swipl/library/lynx/INDEX.pl +14 -0
- package/lib/swipl/library/lynx/format.pl +380 -0
- package/lib/swipl/library/lynx/html_style.pl +129 -0
- package/lib/swipl/library/lynx/html_text.pl +865 -0
- package/lib/swipl/library/lynx/pldoc_style.pl +87 -0
- package/lib/swipl/library/macros.pl +451 -0
- package/lib/swipl/library/main.pl +1200 -0
- package/lib/swipl/library/make.pl +197 -0
- package/lib/swipl/library/modules.pl +129 -0
- package/lib/swipl/library/nb_rbtrees.pl +267 -0
- package/lib/swipl/library/nb_set.pl +203 -0
- package/lib/swipl/library/obfuscate.pl +115 -0
- package/lib/swipl/library/occurs.pl +241 -0
- package/lib/swipl/library/operators.pl +182 -0
- package/lib/swipl/library/option.pl +388 -0
- package/lib/swipl/library/optparse.pl +966 -0
- package/lib/swipl/library/ordsets.pl +518 -0
- package/lib/swipl/library/oset.pl +160 -0
- package/lib/swipl/library/pairs.pl +187 -0
- package/lib/swipl/library/persistency.pl +713 -0
- package/lib/swipl/library/pio.pl +47 -0
- package/lib/swipl/library/portray_text.pl +277 -0
- package/lib/swipl/library/pprint.pl +940 -0
- package/lib/swipl/library/predicate_options.pl +975 -0
- package/lib/swipl/library/prolog_autoload.pl +233 -0
- package/lib/swipl/library/prolog_breakpoints.pl +396 -0
- package/lib/swipl/library/prolog_clause.pl +1104 -0
- package/lib/swipl/library/prolog_code.pl +416 -0
- package/lib/swipl/library/prolog_codewalk.pl +1248 -0
- package/lib/swipl/library/prolog_colour.pl +3301 -0
- package/lib/swipl/library/prolog_colour.qlf +0 -0
- package/lib/swipl/library/prolog_config.pl +154 -0
- package/lib/swipl/library/prolog_coverage.pl +1333 -0
- package/lib/swipl/library/prolog_debug.pl +404 -0
- package/lib/swipl/library/prolog_deps.pl +675 -0
- package/lib/swipl/library/prolog_evaluable.pl +234 -0
- package/lib/swipl/library/prolog_format.pl +219 -0
- package/lib/swipl/library/prolog_history.pl +161 -0
- package/lib/swipl/library/prolog_jiti.pl +333 -0
- package/lib/swipl/library/prolog_locale.pl +61 -0
- package/lib/swipl/library/prolog_metainference.pl +307 -0
- package/lib/swipl/library/prolog_pack.pl +3906 -0
- package/lib/swipl/library/prolog_profile.pl +346 -0
- package/lib/swipl/library/prolog_qlfmake.pl +533 -0
- package/lib/swipl/library/prolog_source.pl +1188 -0
- package/lib/swipl/library/prolog_stack.pl +794 -0
- package/lib/swipl/library/prolog_trace.pl +365 -0
- package/lib/swipl/library/prolog_versions.pl +347 -0
- package/lib/swipl/library/prolog_wrap.pl +164 -0
- package/lib/swipl/library/prolog_xref.pl +3090 -0
- package/lib/swipl/library/prolog_xref.qlf +0 -0
- package/lib/swipl/library/pure_input.pl +266 -0
- package/lib/swipl/library/qpforeign.pl +695 -0
- package/lib/swipl/library/qsave.pl +1516 -0
- package/lib/swipl/library/quasi_quotations.pl +300 -0
- package/lib/swipl/library/quintus.pl +437 -0
- package/lib/swipl/library/random.pl +459 -0
- package/lib/swipl/library/rbtrees.pl +1153 -0
- package/lib/swipl/library/readln.pl +256 -0
- package/lib/swipl/library/readutil.pl +304 -0
- package/lib/swipl/library/record.pl +544 -0
- package/lib/swipl/library/rwlocks.pl +172 -0
- package/lib/swipl/library/sandbox.pl +1384 -0
- package/lib/swipl/library/semweb/dc.rdfs +198 -0
- package/lib/swipl/library/semweb/eor.rdfs +95 -0
- package/lib/swipl/library/semweb/owl.owl +287 -0
- package/lib/swipl/library/semweb/rdf_library.ttl +90 -0
- package/lib/swipl/library/semweb/rdfs.rdfs +251 -0
- package/lib/swipl/library/settings.pl +755 -0
- package/lib/swipl/library/shell.pl +462 -0
- package/lib/swipl/library/shlib.pl +670 -0
- package/lib/swipl/library/solution_sequences.pl +439 -0
- package/lib/swipl/library/sort.pl +119 -0
- package/lib/swipl/library/statistics.pl +541 -0
- package/lib/swipl/library/streams.pl +118 -0
- package/lib/swipl/library/strings.pl +469 -0
- package/lib/swipl/library/system.pl +95 -0
- package/lib/swipl/library/tables.pl +381 -0
- package/lib/swipl/library/tableutil.pl +771 -0
- package/lib/swipl/library/tabling.pl +42 -0
- package/lib/swipl/library/terms.pl +457 -0
- package/lib/swipl/library/theme/auto.pl +61 -0
- package/lib/swipl/library/theme/dark.pl +455 -0
- package/lib/swipl/library/theme/light.pl +45 -0
- package/lib/swipl/library/thread.pl +810 -0
- package/lib/swipl/library/thread_pool.pl +508 -0
- package/lib/swipl/library/threadutil.pl +574 -0
- package/lib/swipl/library/tty.pl +316 -0
- package/lib/swipl/library/ugraphs.pl +644 -0
- package/lib/swipl/library/unicode/INDEX.pl +6 -0
- package/lib/swipl/library/unicode/blocks.pl +414 -0
- package/lib/swipl/library/url.pl +1129 -0
- package/lib/swipl/library/utf8.pl +145 -0
- package/lib/swipl/library/varnumbers.pl +221 -0
- package/lib/swipl/library/vm.pl +251 -0
- package/lib/swipl/library/wfs.pl +205 -0
- package/lib/swipl/library/when.pl +263 -0
- package/lib/swipl/library/writef.pl +278 -0
- package/lib/swipl/library/www_browser.pl +251 -0
- package/lib/swipl/library/yall.pl +574 -0
- package/lib/swipl/library/zip.pl +211 -0
- package/lib/swipl/swipl.home +1 -0
- package/lib/vendor/libcrypto.so.3 +0 -0
- package/lib/vendor/libpcre2-8.so.0 +0 -0
- package/lib/vendor/libssl.so.3 +0 -0
- package/lib/vendor/libz.so.1 +0 -0
- package/licenses/OpenSSL-LICENSE.txt +177 -0
- package/licenses/PCRE2-COPYING +5 -0
- package/licenses/README.md +12 -0
- package/licenses/SWI-Prolog-LICENSE +41 -0
- package/licenses/zlib-LICENSE +22 -0
- package/package.json +27 -0
|
@@ -0,0 +1,380 @@
|
|
|
1
|
+
/* Part of SWI-Prolog
|
|
2
|
+
|
|
3
|
+
Author: Jan Wielemaker
|
|
4
|
+
E-mail: J.Wielemaker@vu.nl
|
|
5
|
+
WWW: http://www.swi-prolog.org
|
|
6
|
+
Copyright (c) 2008-2022, University of Amsterdam
|
|
7
|
+
VU University Amsterdam
|
|
8
|
+
SWI-Prolog Solutions b.v.
|
|
9
|
+
All rights reserved.
|
|
10
|
+
|
|
11
|
+
Redistribution and use in source and binary forms, with or without
|
|
12
|
+
modification, are permitted provided that the following conditions
|
|
13
|
+
are met:
|
|
14
|
+
|
|
15
|
+
1. Redistributions of source code must retain the above copyright
|
|
16
|
+
notice, this list of conditions and the following disclaimer.
|
|
17
|
+
|
|
18
|
+
2. Redistributions in binary form must reproduce the above copyright
|
|
19
|
+
notice, this list of conditions and the following disclaimer in
|
|
20
|
+
the documentation and/or other materials provided with the
|
|
21
|
+
distribution.
|
|
22
|
+
|
|
23
|
+
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
|
24
|
+
"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
|
|
25
|
+
LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
|
|
26
|
+
FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
|
|
27
|
+
COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
|
|
28
|
+
INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
|
|
29
|
+
BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
|
30
|
+
LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
|
|
31
|
+
CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
|
|
32
|
+
LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
|
|
33
|
+
ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
|
|
34
|
+
POSSIBILITY OF SUCH DAMAGE.
|
|
35
|
+
*/
|
|
36
|
+
|
|
37
|
+
:- module(http_path,
|
|
38
|
+
[ http_absolute_location/3, % +Spec, -Path, +Options
|
|
39
|
+
http_clean_location_cache/0
|
|
40
|
+
]).
|
|
41
|
+
:- use_module(library(debug),[debug/3]).
|
|
42
|
+
:- if(exists_source(library(http/http_host))).
|
|
43
|
+
:- autoload(library(http/http_host),[http_public_host/4]).
|
|
44
|
+
:- export(http_absolute_uri/2). % +Spec, -URI
|
|
45
|
+
:- endif.
|
|
46
|
+
:- autoload(library(apply),[exclude/3]).
|
|
47
|
+
:- autoload(library(broadcast),[listen/2]).
|
|
48
|
+
:- autoload(library(error),
|
|
49
|
+
[must_be/2,existence_error/2,instantiation_error/1]).
|
|
50
|
+
:- autoload(library(lists),[reverse/2,append/3]).
|
|
51
|
+
:- autoload(library(option),[option/3]).
|
|
52
|
+
:- autoload(library(pairs),[pairs_values/2]).
|
|
53
|
+
:- autoload(library(uri),
|
|
54
|
+
[ uri_authority_data/3, uri_authority_components/2,
|
|
55
|
+
uri_data/3, uri_components/2, uri_normalized/3
|
|
56
|
+
]).
|
|
57
|
+
:- use_module(library(settings),[setting/4,setting/2]).
|
|
58
|
+
|
|
59
|
+
:- predicate_options(http_absolute_location/3, 3, [relative_to(atom)]).
|
|
60
|
+
|
|
61
|
+
/** <module> Abstract specification of HTTP server locations
|
|
62
|
+
|
|
63
|
+
This module provides an abstract specification of HTTP server locations
|
|
64
|
+
that is inspired on absolute_file_name/3. The specification is done by
|
|
65
|
+
adding rules to the dynamic multifile predicate http:location/3. The
|
|
66
|
+
specification is very similar to user:file_search_path/2, but takes an
|
|
67
|
+
additional argument with options. Currently only one option is defined:
|
|
68
|
+
|
|
69
|
+
* priority(+Integer)
|
|
70
|
+
If two rules match, take the one with highest priority. Using
|
|
71
|
+
priorities is needed because we want to be able to overrule
|
|
72
|
+
paths, but we do not want to become dependent on clause ordering.
|
|
73
|
+
|
|
74
|
+
The default priority is 0. Note however that notably libraries may
|
|
75
|
+
decide to provide a fall-back using a negative priority. We suggest
|
|
76
|
+
-100 for such cases.
|
|
77
|
+
|
|
78
|
+
This library predefines a single location at priority -100:
|
|
79
|
+
|
|
80
|
+
* root
|
|
81
|
+
The root of the server. Default is /, but this may be overruled
|
|
82
|
+
using the setting (see setting/2) =|http:prefix|=
|
|
83
|
+
|
|
84
|
+
To serve additional resource files such as CSS, JavaScript and icons,
|
|
85
|
+
see `library(http/http_server_files)`.
|
|
86
|
+
|
|
87
|
+
Here is an example that binds =|/login|= to login/1. The user can reuse
|
|
88
|
+
this application while moving all locations using a new rule for the
|
|
89
|
+
admin location with the option =|[priority(10)]|=.
|
|
90
|
+
|
|
91
|
+
==
|
|
92
|
+
:- multifile http:location/3.
|
|
93
|
+
:- dynamic http:location/3.
|
|
94
|
+
|
|
95
|
+
http:location(admin, /, []).
|
|
96
|
+
|
|
97
|
+
:- http_handler(admin(login), login, []).
|
|
98
|
+
|
|
99
|
+
login(Request) :-
|
|
100
|
+
...
|
|
101
|
+
==
|
|
102
|
+
*/
|
|
103
|
+
|
|
104
|
+
:- setting(http:prefix, atom, '',
|
|
105
|
+
'Prefix for all locations of this server').
|
|
106
|
+
|
|
107
|
+
%! http:location(+Alias, -Expansion, -Options) is nondet.
|
|
108
|
+
%
|
|
109
|
+
% Multifile hook used to specify new HTTP locations. Alias is the
|
|
110
|
+
% name of the abstract path. Expansion is either a term
|
|
111
|
+
% Alias2(Relative), telling http_absolute_location/3 to translate
|
|
112
|
+
% Alias by first translating Alias2 and then applying the relative
|
|
113
|
+
% path Relative or, Expansion is an absolute location, i.e., one
|
|
114
|
+
% that starts with a =|/|=. Options currently only supports the
|
|
115
|
+
% priority of the path. If http:location/3 returns multiple
|
|
116
|
+
% solutions the one with the highest priority is selected. The
|
|
117
|
+
% default priority is 0.
|
|
118
|
+
%
|
|
119
|
+
% This library provides a default for the abstract location
|
|
120
|
+
% =root=. This defaults to the setting http:prefix or, when not
|
|
121
|
+
% available to the path =|/|=. It is advised to define all
|
|
122
|
+
% locations (ultimately) relative to =root=. For example, use
|
|
123
|
+
% root('home.html') rather than =|'/home.html'|=.
|
|
124
|
+
|
|
125
|
+
:- multifile
|
|
126
|
+
http:location/3. % Alias, Expansion, Options
|
|
127
|
+
:- dynamic
|
|
128
|
+
http:location/3. % Alias, Expansion, Options
|
|
129
|
+
|
|
130
|
+
http:location(root, Root, [priority(-100)]) :-
|
|
131
|
+
( setting(http:prefix, Prefix),
|
|
132
|
+
Prefix \== ''
|
|
133
|
+
-> Root = Prefix
|
|
134
|
+
; Root = (/)
|
|
135
|
+
).
|
|
136
|
+
|
|
137
|
+
:- if(current_predicate(http_public_host/4)).
|
|
138
|
+
%! http_absolute_uri(+Spec, -URI) is det.
|
|
139
|
+
%
|
|
140
|
+
% URI is the absolute (i.e., starting with =|http://|=) URI for
|
|
141
|
+
% the abstract specification Spec. Use http_absolute_location/3 to
|
|
142
|
+
% create references to locations on the same server.
|
|
143
|
+
|
|
144
|
+
http_absolute_uri(Spec, URI) :-
|
|
145
|
+
http_public_host(_Request, Host, Port,
|
|
146
|
+
[ global(true)
|
|
147
|
+
]),
|
|
148
|
+
( setting(http:public_scheme, Scheme)
|
|
149
|
+
-> true
|
|
150
|
+
; default_port(Scheme, Port)
|
|
151
|
+
-> true
|
|
152
|
+
; Scheme = http
|
|
153
|
+
),
|
|
154
|
+
http_absolute_location(Spec, Path, []),
|
|
155
|
+
uri_authority_data(host, AuthC, Host),
|
|
156
|
+
( default_port(Scheme, Port)
|
|
157
|
+
-> true
|
|
158
|
+
; uri_authority_data(port, AuthC, Port)
|
|
159
|
+
),
|
|
160
|
+
uri_authority_components(Authority, AuthC),
|
|
161
|
+
uri_data(path, Components, Path),
|
|
162
|
+
uri_data(scheme, Components, Scheme),
|
|
163
|
+
uri_data(authority, Components, Authority),
|
|
164
|
+
uri_components(URI, Components).
|
|
165
|
+
|
|
166
|
+
default_port(http, 80).
|
|
167
|
+
default_port(https, 443).
|
|
168
|
+
|
|
169
|
+
:- endif.
|
|
170
|
+
|
|
171
|
+
|
|
172
|
+
%! http_absolute_location(+Spec, -Path, +Options) is det.
|
|
173
|
+
%
|
|
174
|
+
% Path is the HTTP location for the abstract specification Spec.
|
|
175
|
+
% Options:
|
|
176
|
+
%
|
|
177
|
+
% * relative_to(Base)
|
|
178
|
+
% Path is made relative to Base. Default is to generate
|
|
179
|
+
% absolute URLs.
|
|
180
|
+
%
|
|
181
|
+
% @see http_absolute_uri/2 to create a reference that can be
|
|
182
|
+
% used on another server.
|
|
183
|
+
|
|
184
|
+
:- dynamic
|
|
185
|
+
location_cache/3.
|
|
186
|
+
|
|
187
|
+
http_absolute_location(Spec, Path, Options) :-
|
|
188
|
+
must_be(ground, Spec),
|
|
189
|
+
option(relative_to(Base), Options, /),
|
|
190
|
+
absolute_location(Spec, Base, Path, Options),
|
|
191
|
+
debug(http_path, '~q (~q) --> ~q', [Spec, Base, Path]).
|
|
192
|
+
|
|
193
|
+
absolute_location(Spec, Base, Path, _Options) :-
|
|
194
|
+
location_cache(Spec, Base, Cache),
|
|
195
|
+
!,
|
|
196
|
+
Path = Cache.
|
|
197
|
+
absolute_location(Spec, Base, Path, Options) :-
|
|
198
|
+
expand_location(Spec, Base, L, Options),
|
|
199
|
+
assert(location_cache(Spec, Base, L)),
|
|
200
|
+
Path = L.
|
|
201
|
+
|
|
202
|
+
expand_location(Spec, Base, Path, _Options) :-
|
|
203
|
+
atomic(Spec),
|
|
204
|
+
!,
|
|
205
|
+
( uri_components(Spec, Components),
|
|
206
|
+
uri_data(scheme, Components, Scheme),
|
|
207
|
+
atom(Scheme)
|
|
208
|
+
-> Path = Spec
|
|
209
|
+
; relative_to(Base, Spec, Path)
|
|
210
|
+
).
|
|
211
|
+
expand_location(Spec, _Base, Path, Options) :-
|
|
212
|
+
Spec =.. [Alias, Sub],
|
|
213
|
+
http_location_path(Alias, Parent),
|
|
214
|
+
absolute_location(Parent, /, ParentLocation, Options),
|
|
215
|
+
phrase(path_list(Sub), List),
|
|
216
|
+
atomic_list_concat(List, /, SubAtom),
|
|
217
|
+
( ParentLocation == ''
|
|
218
|
+
-> Path = SubAtom
|
|
219
|
+
; sub_atom(ParentLocation, _, _, 0, /)
|
|
220
|
+
-> atom_concat(ParentLocation, SubAtom, Path)
|
|
221
|
+
; atomic_list_concat([ParentLocation, SubAtom], /, Path)
|
|
222
|
+
).
|
|
223
|
+
|
|
224
|
+
|
|
225
|
+
%! http_location_path(+Alias, -Expansion) is det.
|
|
226
|
+
%
|
|
227
|
+
% Expansion is the expanded HTTP location for Alias. As we have no
|
|
228
|
+
% condition search, we demand a single expansion for an alias. An
|
|
229
|
+
% ambiguous alias results in a printed warning. A lacking alias
|
|
230
|
+
% results in an exception.
|
|
231
|
+
%
|
|
232
|
+
% @error existence_error(http_alias, Alias)
|
|
233
|
+
|
|
234
|
+
http_location_path(Alias, Path) :-
|
|
235
|
+
findall(P-L, http_location_path(Alias, L, P), Pairs),
|
|
236
|
+
sort(Pairs, Sorted0),
|
|
237
|
+
reverse(Sorted0, Result),
|
|
238
|
+
( Result = [_-One]
|
|
239
|
+
-> Path = One
|
|
240
|
+
; Result == []
|
|
241
|
+
-> existence_error(http_alias, Alias)
|
|
242
|
+
; Result = [P-Best,P2-_|_],
|
|
243
|
+
P \== P2
|
|
244
|
+
-> Path = Best
|
|
245
|
+
; Result = [_-First|_],
|
|
246
|
+
pairs_values(Result, Paths),
|
|
247
|
+
print_message(warning, http(ambiguous_location(Alias, Paths))),
|
|
248
|
+
Path = First
|
|
249
|
+
).
|
|
250
|
+
|
|
251
|
+
|
|
252
|
+
%! http_location_path(+Alias, -Path, -Priority) is nondet.
|
|
253
|
+
%
|
|
254
|
+
% @tbd prefix(Path) is discouraged; use root(Path)
|
|
255
|
+
|
|
256
|
+
http_location_path(Alias, Path, Priority) :-
|
|
257
|
+
http:location(Alias, Path, Options),
|
|
258
|
+
option(priority(Priority), Options, 0).
|
|
259
|
+
http_location_path(prefix, Path, 0) :-
|
|
260
|
+
( catch(setting(http:prefix, Prefix), _, fail),
|
|
261
|
+
Prefix \== ''
|
|
262
|
+
-> ( sub_atom(Prefix, 0, _, _, /)
|
|
263
|
+
-> Path = Prefix
|
|
264
|
+
; atom_concat(/, Prefix, Path)
|
|
265
|
+
)
|
|
266
|
+
; Path = /
|
|
267
|
+
).
|
|
268
|
+
|
|
269
|
+
|
|
270
|
+
%! relative_to(+Base, +Path, -AbsPath) is det.
|
|
271
|
+
%
|
|
272
|
+
% AbsPath is an absolute URL location created from Base and Path.
|
|
273
|
+
% The result is cleaned
|
|
274
|
+
|
|
275
|
+
relative_to(/, Path, Path) :- !.
|
|
276
|
+
relative_to(_Base, Path, Path) :-
|
|
277
|
+
sub_atom(Path, 0, _, _, /),
|
|
278
|
+
!.
|
|
279
|
+
relative_to(Base, Local, Path) :-
|
|
280
|
+
sub_atom(Base, 0, _, _, /), % file version
|
|
281
|
+
!,
|
|
282
|
+
path_segments(Base, BaseSegments),
|
|
283
|
+
append(BaseDir, [_], BaseSegments) ->
|
|
284
|
+
path_segments(Local, LocalSegments),
|
|
285
|
+
append(BaseDir, LocalSegments, Segments0),
|
|
286
|
+
clean_segments(Segments0, Segments),
|
|
287
|
+
path_segments(Path, Segments).
|
|
288
|
+
relative_to(Base, Local, Global) :-
|
|
289
|
+
uri_normalized(Local, Base, Global).
|
|
290
|
+
|
|
291
|
+
path_segments(Path, Segments) :-
|
|
292
|
+
atomic_list_concat(Segments, /, Path).
|
|
293
|
+
|
|
294
|
+
%! clean_segments(+SegmentsIn, -SegmentsOut) is det.
|
|
295
|
+
%
|
|
296
|
+
% Clean a path represented as a segment list, removing empty
|
|
297
|
+
% segments and resolving .. based on syntax.
|
|
298
|
+
|
|
299
|
+
clean_segments([''|T0], [''|T]) :-
|
|
300
|
+
!,
|
|
301
|
+
exclude(empty_segment, T0, T1),
|
|
302
|
+
clean_parent_segments(T1, T).
|
|
303
|
+
clean_segments(T0, T) :-
|
|
304
|
+
exclude(empty_segment, T0, T1),
|
|
305
|
+
clean_parent_segments(T1, T).
|
|
306
|
+
|
|
307
|
+
clean_parent_segments([], []).
|
|
308
|
+
clean_parent_segments([..|T0], T) :-
|
|
309
|
+
!,
|
|
310
|
+
clean_parent_segments(T0, T).
|
|
311
|
+
clean_parent_segments([_,..|T0], T) :-
|
|
312
|
+
!,
|
|
313
|
+
clean_parent_segments(T0, T).
|
|
314
|
+
clean_parent_segments([H|T0], [H|T]) :-
|
|
315
|
+
clean_parent_segments(T0, T).
|
|
316
|
+
|
|
317
|
+
empty_segment('').
|
|
318
|
+
empty_segment('.').
|
|
319
|
+
|
|
320
|
+
|
|
321
|
+
%! path_list(+Spec, -List) is det.
|
|
322
|
+
%
|
|
323
|
+
% Translate seg1/seg2/... into [seg1,seg2,...].
|
|
324
|
+
%
|
|
325
|
+
% @error instantiation_error
|
|
326
|
+
% @error type_error(atomic, X)
|
|
327
|
+
|
|
328
|
+
path_list(Var) -->
|
|
329
|
+
{ var(Var),
|
|
330
|
+
!,
|
|
331
|
+
instantiation_error(Var)
|
|
332
|
+
}.
|
|
333
|
+
path_list(A/B) -->
|
|
334
|
+
!,
|
|
335
|
+
path_list(A),
|
|
336
|
+
path_list(B).
|
|
337
|
+
path_list(.) -->
|
|
338
|
+
!,
|
|
339
|
+
[].
|
|
340
|
+
path_list(A) -->
|
|
341
|
+
{ must_be(atomic, A) },
|
|
342
|
+
[A].
|
|
343
|
+
|
|
344
|
+
|
|
345
|
+
/*******************************
|
|
346
|
+
* MESSAGES *
|
|
347
|
+
*******************************/
|
|
348
|
+
|
|
349
|
+
:- multifile
|
|
350
|
+
prolog:message/3.
|
|
351
|
+
|
|
352
|
+
prolog:message(http(ambiguous_location(Spec, Paths))) -->
|
|
353
|
+
[ 'http_absolute_location/2: ambiguous specification: ~q: ~p'-
|
|
354
|
+
[Spec, Paths]
|
|
355
|
+
].
|
|
356
|
+
|
|
357
|
+
|
|
358
|
+
/*******************************
|
|
359
|
+
* CACHE CLEANUP *
|
|
360
|
+
*******************************/
|
|
361
|
+
|
|
362
|
+
%! http_clean_location_cache
|
|
363
|
+
%
|
|
364
|
+
% HTTP locations resolved through http_absolute_location/3 are
|
|
365
|
+
% cached. This predicate wipes the cache. The cache is
|
|
366
|
+
% automatically wiped by make/0 and if the setting http:prefix is
|
|
367
|
+
% changed.
|
|
368
|
+
|
|
369
|
+
http_clean_location_cache :-
|
|
370
|
+
retractall(location_cache(_,_,_)).
|
|
371
|
+
|
|
372
|
+
:- listen(settings(changed(http:prefix, _, _)),
|
|
373
|
+
http_clean_location_cache).
|
|
374
|
+
|
|
375
|
+
:- multifile
|
|
376
|
+
prolog:message_action/2.
|
|
377
|
+
|
|
378
|
+
prolog:message_action(make(done(Reload)), _Level) :-
|
|
379
|
+
Reload \== [],
|
|
380
|
+
http_clean_location_cache.
|
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
/* Part of SWI-Prolog
|
|
2
|
+
|
|
3
|
+
Author: Jan Wielemaker and Matt Lilley
|
|
4
|
+
E-mail: J.Wielemaker@vu.nl
|
|
5
|
+
WWW: http://www.swi-prolog.org
|
|
6
|
+
Copyright (c) 2015, University of Amsterdam
|
|
7
|
+
VU University Amsterdam
|
|
8
|
+
All rights reserved.
|
|
9
|
+
|
|
10
|
+
Redistribution and use in source and binary forms, with or without
|
|
11
|
+
modification, are permitted provided that the following conditions
|
|
12
|
+
are met:
|
|
13
|
+
|
|
14
|
+
1. Redistributions of source code must retain the above copyright
|
|
15
|
+
notice, this list of conditions and the following disclaimer.
|
|
16
|
+
|
|
17
|
+
2. Redistributions in binary form must reproduce the above copyright
|
|
18
|
+
notice, this list of conditions and the following disclaimer in
|
|
19
|
+
the documentation and/or other materials provided with the
|
|
20
|
+
distribution.
|
|
21
|
+
|
|
22
|
+
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
|
23
|
+
"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
|
|
24
|
+
LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
|
|
25
|
+
FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
|
|
26
|
+
COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
|
|
27
|
+
INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
|
|
28
|
+
BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
|
29
|
+
LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
|
|
30
|
+
CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
|
|
31
|
+
LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
|
|
32
|
+
ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
|
|
33
|
+
POSSIBILITY OF SUCH DAMAGE.
|
|
34
|
+
*/
|
|
35
|
+
|
|
36
|
+
:- module(http_proxy, []).
|
|
37
|
+
:- use_module(library(http/http_header)).
|
|
38
|
+
:- use_module(library(socket)).
|
|
39
|
+
|
|
40
|
+
/** <module> Use HTTP network proxies
|
|
41
|
+
|
|
42
|
+
This module provides a plugin for tcp_connect/3 to realise TCP
|
|
43
|
+
connections through an HTTP proxy that supports the HTTP 1.1 =CONNECT=
|
|
44
|
+
method.
|
|
45
|
+
*/
|
|
46
|
+
|
|
47
|
+
/*******************************
|
|
48
|
+
* PROXY *
|
|
49
|
+
*******************************/
|
|
50
|
+
|
|
51
|
+
%! socket:try_proxy(+Proxy, +Address, -Socket, -StreamPair)
|
|
52
|
+
%
|
|
53
|
+
% Connection is via an HTTP proxy for socket: Use HTTP CONNECT.
|
|
54
|
+
% Note that most proxies will only support this for connecting on
|
|
55
|
+
% port 443
|
|
56
|
+
%
|
|
57
|
+
% @arg Proxy is of the form proxy(Host, Port)
|
|
58
|
+
% @error proxy_error(Message) if the proxy connection is
|
|
59
|
+
% not successful.
|
|
60
|
+
|
|
61
|
+
socket:try_proxy(proxy(Host, Port), Address, Socket, StreamPair) :-
|
|
62
|
+
!,
|
|
63
|
+
tcp_socket(Socket),
|
|
64
|
+
tcp_connect(Socket, Host:Port, StreamPair),
|
|
65
|
+
catch(negotiate_http_connect(StreamPair, Address),
|
|
66
|
+
Error,
|
|
67
|
+
( close(StreamPair, [force(true)]),
|
|
68
|
+
throw(Error)
|
|
69
|
+
)).
|
|
70
|
+
|
|
71
|
+
negotiate_http_connect(StreamPair, Address) :-
|
|
72
|
+
format(StreamPair, 'CONNECT ~w HTTP/1.1\r\n\r\n', [Address]),
|
|
73
|
+
flush_output(StreamPair),
|
|
74
|
+
http_read_reply_header(StreamPair, Header),
|
|
75
|
+
memberchk(status(_, Status, Message), Header),
|
|
76
|
+
( Status == ok
|
|
77
|
+
-> true
|
|
78
|
+
; throw(error(proxy_error(Message), _))
|
|
79
|
+
).
|
|
80
|
+
|