:- module(clients, [save_client/1, load_clients/0]).
-:- use_module(log).
:- use_module(library(files)).
-:- use_module(library(pio)).
:- use_module(library(iso_ext)).
+:- use_module(library(pio)).
+:- use_module(ui/log).
:- dynamic(known_client/1).
close(S)
),
error(existence_error(source_sink,"clients_db.pl"),open/4),
- (open("clients_db.pl", write, S),
- close(S))
- ).
+ ( open("clients_db.pl", write, S), close(S) )
+ ).
read_clients(Stream) :-
read_term(Stream, Term, []),
hostname/1
]).
-:- use_module(library(os)).
-:- use_module(library(iso_ext)).
:- use_module(library(dcgs)).
:- use_module(library(files)).
+:- use_module(library(iso_ext)).
:- use_module(library(lists)).
+:- use_module(library(os)).
:- use_module(library(si)).
-:- use_module(log).
+:- use_module(ui/log).
:- dynamic(cfg/2).
:- module(gemini_uri, [gemini_uri//4]).
+:- use_module(ip).
+:- use_module(library(charsio)).
:- use_module(library(clpz)).
:- use_module(library(dcgs)).
-:- use_module(library(charsio)).
-:- use_module('./ip').
gemini_uri(Host, Port, Path, Query) -->
% scheme MUST be gemini
:- module(ip, [ipv6_address//0, ipv4_address//0, ip_address//0]).
-:- use_module(library(dcgs)).
:- use_module(library(charsio)).
:- use_module(library(clpz)).
+:- use_module(library(dcgs)).
ip_address --> ipv4_address ; ipv6_address.
:- module(request, [read_request/3]).
-:- use_module(gemini_uri).
+:- use_module(dcgs/gemini_uri).
:- use_module(library(clpz)).
:- use_module(library(dcgs)).
-:- use_module(log).
+:- use_module(ui/log).
%% read_request(+Stream, -Path, -Query)
%
:- module(serve, [serve/4]).
-:- use_module(library(dcgs)).
:- use_module(config).
+:- use_module(dcgs/response).
+:- use_module(library(charsio)).
+:- use_module(library(dcgs)).
+:- use_module(library(debug)).
:- use_module(library(files)).
:- use_module(library(iso_ext)).
:- use_module(library(lists)).
:- use_module(library(pio)).
-:- use_module(library(charsio)).
:- use_module(library(sockets)).
-:- use_module(library(debug)).
-:- use_module(log).
-:- use_module(mime).
-:- use_module(response).
+:- use_module(sys/mime).
+:- use_module(ui/log).
%% serve(+Stream, +Root, +Path, -Query)
%
:- module(sula, [run/0]).
-:- use_module(cert).
:- use_module(clients).
-:- use_module(banner).
:- use_module(config).
+:- use_module(dcgs/response).
:- use_module(library(charsio)).
:- use_module(library(clpz)).
:- use_module(library(dcgs)).
:- use_module(library(pio)).
:- use_module(library(sockets)).
:- use_module(library(tls)).
-:- use_module(log).
-:- use_module(mime).
-:- use_module(serve).
:- use_module(request).
-:- use_module(response).
+:- use_module(serve).
+:- use_module(sys/mime).
+:- use_module(sys/tls_certs).
+:- use_module(ui/banner).
+:- use_module(ui/log).
run :-
once(display_banner),
:- module(mime, [load_mime/0, mime/2, guess_mime/2]).
-:- use_module(library(pio)).
:- use_module(library(dcgs)).
:- use_module(library(lists)).
-:- use_module(log).
+:- use_module(library(pio)).
+:- use_module('../ui/log').
:- dynamic(mime/2).
-:- module(cert, [load_certificate/1, with_tls_connection/3]).
+:- module(tls_certs, [load_certificate/1, with_tls_connection/3]).
-:- use_module(config).
+:- use_module('../config').
:- use_module(library(dcgs)).
-:- use_module(library(tls)).
-:- use_module(library(process)).
+:- use_module(library(debug)).
:- use_module(library(files)).
-:- use_module(library(lists)).
:- use_module(library(iso_ext)).
-:- use_module(library(debug)).
+:- use_module(library(lists)).
:- use_module(library(pio)).
-:- use_module(log).
+:- use_module(library(process)).
+:- use_module(library(tls)).
+:- use_module('../ui/log').
load_certificate(Context) :-
load_existing_certificate(Context)
:- module(banner, [display_banner/0]).
:- use_module(library(dcgs)).
-:- use_module(library(lists)).
:- use_module(library(lambda)).
+:- use_module(library(lists)).
:- use_module(library(pio)).
:- use_module(log).
display_banner :-
- phrase_from_file(lines(Ls), "banner.txt"),
+ phrase_from_file(lines(Ls), "ui/banner.txt"),
maplist(\S^log_msg("system", "~s~n", [S]), Ls).
lines([]) --> call(eos), !.
:- module(log, [log_msg/3]).
+:- use_module(library(clpz)).
:- use_module(library(crypto)).
:- use_module(library(format)).
-:- use_module(library(clpz)).
:- use_module(library(lists)).
+% reserved for errors
+red("\x1b\[31m").
+
colors([
- "\x1b\[31m", % Red
"\x1b\[32m", % Green
"\x1b\[33m", % Yellow
"\x1b\[34m", % Blue
"\x1b\[96m" % Light Cyan
]).
+scope_color("error", Red) :-
+ red(Red).
+
scope_color(ScopeName, ColorANSI) :-
crypto_data_hash(ScopeName, HashHex, [algorithm(sha256)]),