...
 
Commits (20)
*~
src/wt/
wt/
*.go
Makefile
Makefile.in
aclocal.m4
autom4te.cache/
build-aux/
config.log
config.status
configure
culturia/config.scm
doc/Makefile
doc/Makefile.in
doc/culturia.info
doc/stamp-vti
doc/version.texi
pre-inst-env
Amirouche Boubekki <amirouche@hypermove.net>
\ No newline at end of file
# culturia -- personal knowledge base
# Copyright © 2015 Ludovic Courtès <ludo@gnu.org>
# Copyright © 2017 ng0 <ng0@infotropique.org>
# Copyright © 2018 Amirouche Boubkki <amirouche@hypermove.net>
#
# This file is part of Culturia.
#
# Culturia is free software; you can redistribute it and/or modify it
# under the terms of the GNU General Public License as published by
# the Free Software Foundation; either version 3 of the License, or
# (at your option) any later version.
#
# Culturia is distributed in the hope that it will be useful, but
# WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
# General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with Culturia. If not, see <http://www.gnu.org/licenses/>.
SUBDIRS = doc
docdir = $(datadir)/doc/culturia/
MODULES = \
culturia/app.scm \
culturia/argon2.scm \
culturia/hmac.scm \
culturia/sha-2.scm \
culturia/web.scm \
culturia/web/decode.scm \
culturia/web/helpers.scm \
culturia/web/html.scm \
culturia/web/lorem-ipsum.scm \
culturia/web/mime-types.scm \
culturia/web/static.scm \
culturia/web/style.scm \
culturia/web/validate.scm
GOBJECTS = $(MODULES:%.scm=%.go) culturia/config.go
nobase_dist_guilemodule_DATA = $(MODULES)
nobase_nodist_guilemodule_DATA = $(GOBJECTS)
AM_V_GUILEC = $(AM_V_GUILEC_$(V))
AM_V_GUILEC_ = $(AM_V_GUILEC_$(AM_DEFAULT_VERBOSITY))
AM_V_GUILEC_0 = @echo " GUILEC" $@;
# Unset 'GUILE_LOAD_COMPILED_PATH' altogether while compiling. Otherwise, if
# $GUILE_LOAD_COMPILED_PATH contains $(moduledir), we may find .go files in
# there that are newer than the local .scm files (for instance because the
# user ran 'make install' recently). When that happens, we end up loading
# those previously-installed .go files, which may be stale, thereby breaking
# the whole thing.
#
# XXX: Use the C locale for when Guile lacks
# <http://git.sv.gnu.org/cgit/guile.git/commit/?h=stable-2.0&id=e2c6bf3866d1186c60bacfbd4fe5037087ee5e3f>.
.scm.go:
$(AM_V_GUILEC)$(MKDIR_P) `dirname "$@"` ; \
unset GUILE_LOAD_COMPILED_PATH ; \
LC_ALL=C \
$(top_builddir)/pre-inst-env \
$(GUILD) compile -L "$(top_builddir)" -L "$(top_srcdir)" \
-Wformat -Wunbound-variable -Warity-mismatch \
--target="$(host)" \
-o "$@" "$<"
SUFFIXES = .go
# Make sure source files are installed first, so that the mtime of
# installed compiled files is greater than that of installed source
# files. See
# <http://lists.gnu.org/archive/html/guile-devel/2010-07/msg00125.html>
# for details.
guix_install_go_files = install-nobase_nodist_guilemoduleDATA
$(guix_install_go_files): install-nobase_dist_guilemoduleDATA
SCM_LOG_COMPILER = $(top_builddir)/pre-inst-env $(GUILE)
CLEANFILES = $(GOBJECTS)
-*- mode: org -*-
Simple, easy to use with good default personal knowledge base that
allows users to interact with the rest of the world over the Internet.
Culturia wants to be for the Internet what GNOME is for the desktop.
* Development
Clone the following repository:
git clone https://framagit.org/a-guile-mind/culturia.next
Create merge requests (aka. pull requests) in framasoft's gitlab or
send patches to amirouche+dev@hypermove.net.
* ROADMAP
** 0.0 blog engine
*** easy: look up for TODO in the code
*** easy: Add a datetime library using relative name and GMT
*** easy: move to guile fibers
*** easy: redirect index to ?query=/overview
*** easy: navigation replace / with , e.g. ,signin
*** medium: improve logging
*** medium: Disable the signup form after the first signup
*** medium: Add search engine with public/private support
Search is based on culturia.one ix.scm, except that the signature must
be:
(index uid html keywords)
Where terms will be extracted from HTML as it's already done in
culturia.one. KEYWORDS will be list of string terms that will be
indexed without preprocessing, in particular without stripping
punctuation. This will allow to use the inverted index to index UID
along specific dimensions. For instance,
- domain=example.com
- hashtag=mezangelle
Those terms will be included in the search query and will be subject
to the TF-IDF scoring which will allow for efficient queries along
those specific fields.
Maybe there is better way to go here...
*** medium: Add hashtags with search support
*** medium: Add post with markdown and hashtag support
*** medium: Add analytics
*** medium: Add props
*** medium: Add links with hashtags and search engine integration
*** medium: Add pastes with hashtags and search engine integration
Maybe recode the highlighter using combinatorix & traversi. Embed
combinatorix with poor error handling support.
*** hard: Add generic timeserie support for fail2ban and analytics
*** hard: write documentation (makeinfo or sfx?)
*** hard: Implement fail2ban
*** hard: Add atom feed to index page with search support
*** hard: choose between Scheme Styles (s²) or classic css
** 0.1
*** easy: Add guix package definition
*** medium: fix wiredtiger
**** easy: move grf3: procedure at the top of web.scm
**** medium: unique identifiers must be random 64 bits integers
*** easy: Add custom template support
*** easy: Add yearly overview
** later
*** easy: package argon2.scm
*** easy: Add support for next query parameter in /signin
*** easy: Add messages
*** medium: Add todo list
*** medium: Add issue tracker
*** medium: Add indexing of wiktionary
*** medium: Add indexing of stackoverflow
*** medium: Add indexing of wikipedia
*** medium: Add indexing of HackerNews
*** hard: Add git support
*** unknown: Add ActivityPub support
*** unknown: check if I can use and-let* from srfi-2
The follow ``/signin?next=/?query=/publish message ...'' must redirect
'next' Not sure how this interacts with the navigation form.
*** unknown: Add regular visual navigation
*** unknown: Add support graphql-like query language in templates
* Security
CSRF protections are not implemented.
Visitors do not use cookies at all. But the owner needs cookies to
sigin. It's recommended to disable javascript or to use a specific
browser session dedicated to culturia to interact with the private
part of the application, for the time being.
* culturia
culturia is an application written in GNU Guile that will allow
to share messages, posts, code and links.
* security
** CSRF protections
** timeseries
** fail2ban
* web: signin: add support for next
The follow ``/signin?next=/?query=/publish message ...'' must redirect 'next'
* add transactions to all queries
* add tags
* add post
* add link
* add code
* add search from culturia.one's ``ix.scm''
* rename handler to router
* rename index to route/index etc...
* check if I can use and-let* from srfi-2
* replace /template with /sxml
#!/bin/sh
autoreconf -vif
# -*- Autoconf -*-
# Process this file with autoconf to produce a configure script.
AC_PREREQ(2.69)
AC_INIT([Culturia], [0.0], [amirouche@hypermove.net], [culturia],
[https://framagit.org/a-guile-mind/culturia.next])
AC_CONFIG_AUX_DIR([build-aux])
AM_INIT_AUTOMAKE([1.12 foreign silent-rules subdir-objects \
color-tests parallel-tests -Woverride -Wno-portability])
# Enable silent rules by default.
AM_SILENT_RULES([yes])
AC_CONFIG_SRCDIR([culturia])
AC_CONFIG_MACRO_DIR([m4])
AC_CANONICAL_HOST
dnl We require pkg.m4 (from pkg-config) and guile.m4 (from Guile.)
dnl Make sure they are available.
m4_pattern_forbid([PKG_CHECK_MODULES])
m4_pattern_forbid([GUILE_MODULE_AVAILABLE])
PKG_CHECK_MODULES([GUILE], [guile-2.2 >= 2.2])
AC_PATH_PROG([GUILE], [guile])
AC_PATH_PROG([GUILD], [guild])
if test "x$GUILD" = "x"; then
AC_MSG_ERROR(['guild' binary not found; please check your Guile 2.x installation.])
fi
guilemoduledir="${datarootdir}/guile/site/2.2"
guileobjectdir="${libdir}/guile/site/2.2/site-ccache"
AC_SUBST([guilemoduledir])
AC_SUBST([guileobjectdir])
AC_CACHE_SAVE
PKG_CHECK_MODULES([ARGON2], [libargon2])
ARGON2_LIBDIR="`$PKG_CONFIG --variable=libdir libargon2`"
AC_SUBST([ARGON2_LIBDIR])
AC_CONFIG_FILES([
Makefile
culturia/config.scm
doc/Makefile
])
AC_CONFIG_FILES([pre-inst-env], [chmod +x pre-inst-env])
AC_OUTPUT
(define-module (app))
(define-module (culturia app))
(use-modules ((srfi srfi-9)))
......
......@@ -19,13 +19,14 @@
;;
;; argon2 version 0~20161029-1
;;
(define-module (argon2))
(define-module (culturia argon2))
(use-modules (ice-9 binary-ports))
(use-modules (ice-9 iconv))
(use-modules (rnrs bytevectors))
(use-modules (system foreign))
(use-modules (culturia config))
(define (urandom length)
"Return a bytevector of length LENGTH generated by /dev/urandom"
......@@ -48,7 +49,7 @@
(let ((function (dynamic-func function-name shared-object)))
(pointer->procedure return-value function arguments)))))
(define argon2 (dynamic-link* "/usr/lib/x86_64-linux-gnu/libargon2.so")) ;; TODO
(define argon2 (dynamic-link* %argon2))
(define %argon-type-argon2-d 0)
(define %argon-type-argon2-i 1)
......
;;;; -*- mode: Scheme; indent-tabs-mode: nil; fill-column: 80; -*-
;;;;
;;;; Copyright © 2015 Ludovic Courtès <ludo@gnu.org>
;;;; Copyright © 2018 Amirouche Boubekki <amirouche@hypermove.net>
;;;;
;;;; This program is free software: you can redistribute it and/or modify
;;;; it under the terms of the GNU General Public License as published by
;;;; the Free Software Foundation, either version 3 of the License, or
;;;; (at your option) any later version.
;;;;
;;;; This program is distributed in the hope that it will be useful,
;;;; but WITHOUT ANY WARRANTY; without even the implied warranty of
;;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
;;;; GNU General Public License for more details.
;;;;
;;;; You should have received a copy of the GNU General Public License
;;;; along with this program. If not, see <http://www.gnu.org/licenses/>.
(define-module (culturia config))
(define-public %argon2 "@ARGON2_LIBDIR@/libargon2")
......@@ -22,7 +22,7 @@
;; RFC 2104, FIPS-198-1.
(library (hmac)
(library (culturia hmac)
(export make-hmac)
(import (rnrs))
......
......@@ -27,7 +27,7 @@
;; TODO: give an error if more than 2^64 / 2^128 bits are processed?
;; TODO: Optimize. Should be simple enough with the help of a profiler.
(library (sha-2)
(library (culturia sha-2)
(export make-sha-224 sha-224-update! sha-224-finish! sha-224-clear!
sha-224 sha-224-copy sha-224-finish sha-224-length
sha-224-copy-hash! sha-224-128-copy-hash!
......@@ -56,13 +56,13 @@
sha-512-hash=? sha-512-128-hash=?
hmac-sha-512)
(import (rnrs)
(hmac))
(culturia hmac))
(define (sha-224-length) 224/8)
(define (sha-256-length) 256/8)
(define (sha-384-length) 384/8)
(define (sha-512-length) 512/8)
(define (vector-copy x) (vector-map (lambda (i) i) x))
(define (ror32 n count)
......
......@@ -12,7 +12,7 @@
;; You should have received a copy of the GNU General Public License
;; along with this program. If not, see <http://www.gnu.org/licenses/>.
(define-module (web decode))
(define-module (culturia web decode))
(use-modules (ice-9 match))
(use-modules (rnrs bytevectors))
......
......@@ -12,7 +12,7 @@
;; You should have received a copy of the GNU General Public License
;; along with this program. If not, see <http://www.gnu.org/licenses/>.
(define-module (web helpers))
(define-module (culturia web helpers))
;; stdlib
(use-modules ((web request)))
......@@ -20,7 +20,7 @@
(use-modules ((web uri)))
;; local
(use-modules ((web html)))
(use-modules ((culturia web html)))
;;; helpers
......
......@@ -19,7 +19,7 @@
;; - 2017-XX-XX: add support for script tags
;;
(define-module (web html))
(define-module (culturia web html))
(use-modules (ice-9 rdelim))
(use-modules (sxml simple))
......
(define-module (web lorem-ipsum))
(define-module (culturia web lorem-ipsum))
(define (newline? char)
......
......@@ -13,7 +13,7 @@
;; You should have received a copy of the GNU General Public License
;; along with this program. If not, see <http://www.gnu.org/licenses/>.
(define-module (web mime-types))
(define-module (culturia web mime-types))
;; stdlib
(use-modules (ice-9 hash-table))
......
......@@ -13,14 +13,14 @@
;; You should have received a copy of the GNU General Public License
;; along with this program. If not, see <http://www.gnu.org/licenses/>.
(define-module (web static))
(define-module (culturia web static))
;; stdlib
(use-modules (ice-9 binary-ports))
;; local
(use-modules (web mime-types))
(use-modules (web helpers))
(use-modules (culturia web mime-types))
(use-modules (culturia web helpers))
;;;
;;; static assets rendering
......
(define-module (web style))
(define-module (culturia web style))
(use-modules ((ice-9 match)))
......
(define-module (web validate))
(define-module (culturia web validate))
(use-modules ((srfi srfi-1)))
......
# This Makefile.am is in the public domain
docdir = $(datadir)/doc/culturia/
infoimagedir = $(infodir)/images
AM_MAKEINFOHTMLFLAGS = --no-split --css-ref=docstyle.css
info_TEXINFOS = \
culturia.texi
gnunet_TEXINFOS = \
fdl-1.3.texi \
gpl-3.0.texi
EXTRA_DIST = \
htmlxref.cnf \
run-gendocs.sh \
docstyle.css
DISTCLEANFILES = \
fdl-1.3.cps \
gpl-3.0.cps
doc-gendoc-install:
@mkdir -p $(DESTDIR)/$(docdir)
@cp -r manual $(DESTDIR)/$(docdir)
# TODO: Add more to clean.
clean:
@rm culturia.pdf
@rm culturia.html
@rm culturia.info
@rm culturia.info-1
@rm culturia.info-2
@rm culturia.info-3
@rm -r culturia.t2p
@rm -r manual
\input texinfo
@c -*-texinfo-*-
@c %**start of header
@setfilename culturia.info
@documentencoding UTF-8
@settitle Culturia Reference Manual
@exampleindent 2
@urefbreakstyle before
@c %**end of header
@include version.texi
@copying
Copyright @copyright{} 2018
Permission is granted to copy, distribute and/or modify this document
under the terms of the GNU Free Documentation License, Version 1.3 or
any later version published by the Free Software Foundation; with no
Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts. A
copy of the license is included in the section entitled ``GNU Free
Documentation License''.
A copy of the license is also available from the Free Software
Foundation Web site at @url{http://www.gnu.org/licenses/fdl.html}.
Alternately, this document is also available under the General
Public License, version 3 or later, as published by the Free Software
Foundation. A copy of the license is included in the section entitled
``GNU General Public License''.
A copy of the license is also available from the Free Software
Foundation Web site at @url{http://www.gnu.org/licenses/gpl.html}.
@end copying
@dircategory Networking
@direntry
* Culturia: (culturia). Personal Knowledge Base
@end direntry
@titlepage
@title Culturia Reference Manual
@subtitle A Personal Knowledge Base
@page
@vskip 0pt plus 1filll
Edition @value{EDITION} @*
@value{UPDATED} @*
@insertcopying
@end titlepage
@summarycontents
@contents
@node Top
@top Contributing to GNUnet
This document describes GNUnet Guile version @value{VERSION}.
GNUnet Guile is a maintained as part of the
@uref{https://gnunet.org/, GNUnet} project.
All code contributions must thus be put under the
@uref{https://www.gnu.org/copyleft/gpl.html, GNU Public License (GPL)}.
All documentation should be put under FSF approved licenses
(see @uref{https://www.gnu.org/copyleft/fdl.html, fdl}).
By submitting documentation, translations, comments and other
content to this project you automatically grant the right to publish
code under the GNU Public License (version 3 or later) and
documentation under either or both the GNU Public License or the
GNU Free Documentation License.
When contributing to the GNUnet Guile project, GNU standards and the
@uref{https://www.gnu.org/philosophy/philosophy.html, GNU philosophy}
should be adhered to.
Unlike GNUnet, we require no formal copyright assignments
for contributions to GNUnet Guile.
@menu
* Introduction:: Introduction
* Main:: Main
* GNU Free Documentation License:: The license of this manual.
* GNU General Public License:: The license of this manual.
* Concept Index:: Concepts.
* Programming Index:: Data types, functions, and variables.
@detailmenu
--- The Detailed Node Listing ---
Introduction
Main
@end detailmenu
@end menu
@node Introduction
@chapter Introduction
@node Main
@chapter Main
@c *********************************************************************
@node GNU Free Documentation License
@appendix GNU Free Documentation License
@cindex license, GNU Free Documentation License
@include fdl-1.3.texi
@c *********************************************************************
@node GNU General Public License
@appendix GNU General Public License
@cindex license, GNU General Public License
@include agpl-3.0.texi
@c *********************************************************************
@node Concept Index
@unnumbered Concept Index
@printindex cp
@node Programming Index
@unnumbered Programming Index
@syncodeindex tp fn
@syncodeindex vr fn
@printindex fn
@bye
html, body {
font-size: 1em;
text-align: left;
text-decoration: none;
}
html { background-color: #e7e7e7; }
body {
max-width: 74.92em;
margin: 0 auto;
padding: .5em 1em 1em 1em;
background-color: white;
border: .1em solid #c0c0c0;
}
h1, h2, h3, h4 { color: #333; }
h5, h6, dt { color: #222; }
a h3 {
color: #005090;
}
a[href] { color: #005090; }
a[href]:visited { color: #100070; }
a[href]:active, a[href]:hover {
color: #100070;
text-decoration: none;
}
.linkrow {
margin: 3em 0;
}
.linkrow {
text-align: center;
}
div.example { padding: .8em 1.2em .4em; }
pre.example { padding: .8em 1.2em; }
div.example, pre.example {
margin: 1em 0 1em 3% ;
-webkit-border-radius: .3em;
-moz-border-radius: .3em;
border-radius: .3em;
border: 1px solid #d4cbb6;
background-color: #f2efe4;
}
div.example > pre.example {
padding: 0 0 .4em;
margin: 0;
border: none;
}
/* This makes the very long tables of contents in Gnulib and other
manuals easier to read. */
.contents ul, .shortcontents ul { font-weight: bold; }
.contents ul ul, .shortcontents ul ul { font-weight: normal; }
.contents ul { list-style: none; }
/* For colored navigation bars (Emacs manual): make the bar extend
across the whole width of the page and give it a decent height. */
.header, .node { margin: 0 -1em; padding: 0 1em; }
.header p, .node p { line-height: 2em; }
/* For navigation links */
.node a, .header a { display: inline-block; line-height: 2em; }
.node a:hover, .header a:hover { background: #f2efe4; }
table.cartouche {
border-collapse: collapse;
border-color: darkred;
border-style: solid;
border-width: 3px;
}
This diff is collapsed. Click to expand it.
<!--#include virtual="/server/header.html" -->
<!-- Parent-Version: 1.77 -->
<title>%%TITLE%% - GNU Project - Free Software Foundation</title>
<!--#include virtual="/server/banner.html" -->
<h2>%%TITLE%%</h2>
<address>Free Software Foundation</address>
<address>last updated %%DATE%%</address>
<p>This manual (%%PACKAGE%%) is available in the following formats:</p>
<ul>
<li><a href="%%PACKAGE%%.html">HTML
(%%HTML_MONO_SIZE%%K bytes)</a> - entirely on one web page.</li>
<li><a href="html_node/index.html">HTML</a> - with one web page per
node.</li>
%%IF HTML_SECTION%%
<li><a href="html_section/index.html">HTML</a> - with one web page per
section.</li>
%%ENDIF HTML_SECTION%%
%%IF HTML_CHAPTER%%
<li><a href="html_chapter/index.html">HTML</a> - with one web page per
chapter.</li>
%%ENDIF HTML_CHAPTER%%
<li><a href="%%PACKAGE%%.html.gz">HTML compressed
(%%HTML_MONO_GZ_SIZE%%K gzipped characters)</a> - entirely on
one web page.</li>
<li><a href="%%PACKAGE%%.html_node.tar.gz">HTML compressed
(%%HTML_NODE_TGZ_SIZE%%K gzipped tar file)</a> -
with one web page per node.</li>
%%IF HTML_SECTION%%
<li><a href="%%PACKAGE%%.html_section.tar.gz">HTML compressed
(%%HTML_SECTION_TGZ_SIZE%%K gzipped tar file)</a> -
with one web page per section.</li>
%%ENDIF HTML_SECTION%%
%%IF HTML_CHAPTER%%
<li><a href="%%PACKAGE%%.html_chapter.tar.gz">HTML compressed
(%%HTML_CHAPTER_TGZ_SIZE%%K gzipped tar file)</a> -
with one web page per chapter.</li>
%%ENDIF HTML_CHAPTER%%
<li><a href="%%PACKAGE%%.info.tar.gz">Info document
(%%INFO_TGZ_SIZE%%K bytes gzipped tar file)</a>.</li>
<li><a href="%%PACKAGE%%.txt">ASCII text
(%%ASCII_SIZE%%K bytes)</a>.</li>
<li><a href="%%PACKAGE%%.txt.gz">ASCII text compressed
(%%ASCII_GZ_SIZE%%K bytes gzipped)</a>.</li>
<li><a href="%%PACKAGE%%.dvi.gz">TeX dvi file
(%%DVI_GZ_SIZE%%K bytes gzipped)</a>.</li>
<li><a href="%%PACKAGE%%.pdf">PDF file
(%%PDF_SIZE%%K bytes)</a>.</li>
<li><a href="%%PACKAGE%%.texi.tar.gz">Texinfo source
(%%TEXI_TGZ_SIZE%%K bytes gzipped tar file).</a></li>
</ul>
<p>You can <a href="http://shop.fsf.org/">buy printed copies of
some manuals</a> (among other items) from the Free Software Foundation;
this helps support FSF activities.</p>
<p>(This page generated by the <a href="%%SCRIPTURL%%">%%SCRIPTNAME%%
script</a>.)</p>
<!-- If needed, change the copyright block at the bottom. In general,
all pages on the GNU web server should have the section about
verbatim copying. Please do NOT remove this without talking
with the webmasters first.
Please make sure the copyright date is consistent with the document
and that it is like this: "2001, 2002", not this: "2001-2002". -->
</div><!-- for id="content", starts in the include above -->
<!--#include virtual="/server/footer.html" -->
<div id="footer">
<div class="unprintable">
<p>Please send general FSF &amp; GNU inquiries to
<a href="mailto:gnu@gnu.org">&lt;gnu@gnu.org&gt;</a>.
There are also <a href="/contact/">other ways to contact</a>
the FSF. Broken links and other corrections or suggestions can be sent
to <a href="mailto:%%EMAIL%%">&lt;%%EMAIL%%&gt;</a>.</p>
</div>
<p>Copyright &copy; 2017 Free Software Foundation, Inc.</p>
<p>This page is licensed under a <a rel="license"
href="http://creativecommons.org/licenses/by-nd/3.0/us/">Creative
Commons Attribution-NoDerivs 3.0 United States License</a>.</p>
<!--#include virtual="/server/bottom-notes.html" -->
</div>
</div>
</body>
</html>
<?xml version="1.0" encoding="utf-8" ?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
<head>
<title>%%TITLE%% - GNU Project - Free Software Foundation</title>
<meta http-equiv="content-type" content='text/html; charset=utf-8' />
<link rel="stylesheet" type="text/css" href="/gnu.css" />
</head>
<body>
<h3>%%TITLE%%</h3>
<address>Free Software Foundation</address>
<address>last updated %%DATE%%</address>
<p>
<a href="/graphics/gnu-head.jpg">
<img src="/graphics/gnu-head-sm.jpg"
alt=" [image of the head of a GNU] " width="129" height="122"/>
</a>
</p>
<hr />
<p>This manual (%%PACKAGE%%) is available in the following formats:</p>
<ul>
<li><a href="%%PACKAGE%%.html">HTML
(%%HTML_MONO_SIZE%%K bytes)</a> - entirely on one web page.</li>
<li><a href="html_node/index.html">HTML</a> - with one web page per
node.</li>
%%IF HTML_SECTION%%
<li><a href="html_section/index.html">HTML</a> - with one web page per
section.</li>
%%ENDIF HTML_SECTION%%
%%IF HTML_CHAPTER%%
<li><a href="html_chapter/index.html">HTML</a> - with one web page per
chapter.</li>
%%ENDIF HTML_CHAPTER%%
<li><a href="%%PACKAGE%%.html.gz">HTML compressed
(%%HTML_MONO_GZ_SIZE%%K gzipped characters)</a> - entirely on
one web page.</li>
<li><a href="%%PACKAGE%%.html_node.tar.gz">HTML compressed
(%%HTML_NODE_TGZ_SIZE%%K gzipped tar file)</a> -
with one web page per node.</li>
%%IF HTML_SECTION%%
<li><a href="%%PACKAGE%%.html_section.tar.gz">HTML compressed
(%%HTML_SECTION_TGZ_SIZE%%K gzipped tar file)</a> -
with one web page per section.</li>
%%ENDIF HTML_SECTION%%
%%IF HTML_CHAPTER%%
<li><a href="%%PACKAGE%%.html_chapter.tar.gz">HTML compressed
(%%HTML_CHAPTER_TGZ_SIZE%%K gzipped tar file)</a> -
with one web page per chapter.</li>
%%ENDIF HTML_CHAPTER%%
<li><a href="%%PACKAGE%%.info.tar.gz">Info document
(%%INFO_TGZ_SIZE%%K bytes gzipped tar file)</a>.</li>
<li><a href="%%PACKAGE%%.txt">ASCII text
(%%ASCII_SIZE%%K bytes)</a>.</li>
<li><a href="%%PACKAGE%%.txt.gz">ASCII text compressed
(%%ASCII_GZ_SIZE%%K bytes gzipped)</a>.</li>
<li><a href="%%PACKAGE%%.dvi.gz">TeX dvi file
(%%DVI_GZ_SIZE%%K bytes gzipped)</a>.</li>
<li><a href="%%PACKAGE%%.pdf">PDF file
(%%PDF_SIZE%%K bytes)</a>.</li>
<li><a href="%%PACKAGE%%.texi.tar.gz">Texinfo source
(%%TEXI_TGZ_SIZE%%K bytes gzipped tar file).</a></li>
</ul>
<p>(This page generated by the <a href="%%SCRIPTURL%%">%%SCRIPTNAME%%
script</a>.)</p>
<div id="footer" class="copyright">
<p>Please send general FSF &amp; GNU inquiries to
<a href="mailto:gnu@gnu.org">&lt;gnu@gnu.org&gt;</a>.
There are also <a href="/contact/">other ways to contact</a>
the FSF. Broken links and other corrections or suggestions can be sent
to <a href="mailto:%%EMAIL%%">&lt;%%EMAIL%%&gt;</a>.</p>
</div>
<p>Copyright &copy; 2017 Free Software Foundation, Inc.</p>
<p>This page is licensed under a <a rel="license"
href="http://creativecommons.org/licenses/by-nd/3.0/us/">Creative
Commons Attribution-NoDerivs 3.0 United States License</a>.</p>
<!--#include virtual="/server/bottom-notes.html" -->
</div>
</body>
</html>
<title>GNUnet - GNUnet Manuals and Handbooks</title>
<h2>GNUnet - GNUnet Manuals and Handbooks</h2>
<address>GNUnet e.V.</address>
<address>Fakultät für Informatik -- I8</address>
<address>Technische Universität München</address>
<address>Boltzmannstraße 3</address>
<address>85748 Garching</address>
<address>GERMANY</address>
<p>The following handbooks and manuals are available:</p>
<ul>
<li><a href="gnunet-guile/index.html">GNUnet Guile Reference Manual</li>
</ul>
<div id="footer">
<div class="unprintable">
<p>Please send general FSF &amp; GNU inquiries to
<a href="mailto:gnu@gnu.org">&lt;gnu@gnu.org&gt;</a>.
There are also <a href="/contact/">other ways to contact</a>
the FSF. Broken links and other corrections or suggestions can be sent
to <a href="mailto:gnunet-developers@gnu.org">&lt;gnunet-developers@gnu.org&gt;</a>.</p>
</div>
<p>Copyright &copy; 2001 - 2017 GNUnet e.V.</p>
<p>This page is licensed under a FIXME License.</p>
</div>
</div>
</body>
</html>
#!/bin/sh
make version.texi
./gendocs.sh --email gnunet-developers@gnu.org gnunet-guile "GNUnet Guile Reference Manual" -o "manual/gnunet-guile"
cp "index.html" manual/
printf "Success"
#!/bin/sh
# -*- scheme -*-
exec guile -L $(pwd) -e '(@ (one) main)' -s "$0" "$@"
!#
(define-module (one))
(use-modules ((culturia app)))
(use-modules ((culturia web)))
(define-public (main _)
(let ((app (make-app "super-secret-string"))) ;; TODO: make it a fluid
(run-culturia app)))
#!/bin/sh
# GNUnet-Guile --- Guile bindings for GNUnet.
# Copyright © 2015 Ludovic Courtès <ludo@gnu.org>
#
# This file is part of GNUnet-Guile.
#
# GNUnet-Guile is free software; you can redistribute it and/or modify it
# under the terms of the GNU General Public License as published by
# the Free Software Foundation; either version 3 of the License, or (at
# your option) any later version.
#
# GNUnet-Guile is distributed in the hope that it will be useful, but
# WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with GNUnet-Guile. If not, see <http://www.gnu.org/licenses/>.
# Usage: ./pre-inst-env COMMAND ARG...
#
# Run COMMAND in a pre-installation environment. Typical use is
# "./pre-inst-env guile".
# By default we may end up with absolute directory names that contain '..',
# which get into $GUILE_LOAD_PATH, leading to '..' in the module file names
# recorded by Guile. To avoid that, make sure we get a real absolute
# directory name. Additionally, use '-P' to get the canonical directory name
# so that Guile's 'relative' %file-port-name-canonicalization can actually
# work (see <http://bugs.gnu.org/17935>.)
abs_top_srcdir="`cd "@abs_top_srcdir@" > /dev/null; pwd -P`"
abs_top_builddir="`cd "@abs_top_builddir@" > /dev/null; pwd -P`"
GUILE_LOAD_COMPILED_PATH="$abs_top_builddir${GUILE_LOAD_COMPILED_PATH:+:}$GUILE_LOAD_COMPILED_PATH"
GUILE_LOAD_PATH="$abs_top_builddir:$abs_top_srcdir${GUILE_LOAD_PATH:+:}$GUILE_LOAD_PATH"
export GUILE_LOAD_COMPILED_PATH GUILE_LOAD_PATH
exec "$@"
......@@ -146,25 +146,12 @@ form > div.form-field > p.error {
}
form input[type="text"],
form input[type="password"],
form textarea {
form input[type="password"] {
width: 100%;
border: 1px solid hsla(0, 0%, 70%, 1);
border-radius: 2px;
background: white;
padding: 5px 10px;
box-sizing: border-box;
}
form textarea {
padding: 10px 50px;
}
form input[type="text"]:focus,
form input[type="password"]:focus,
textarea:focus {
box-shadow: 0px 0px 2px rgb(0, 0, 255);
border: 1px solid rgb(0, 0, 255);
}
form .error input[type="text"],
......