heiko-barth.de

// Aktuelle URL per Bookmarklet in DokuWiki speichern

Ich habe zwei Skripte erstellt, mit denen man die aktuell im Browser aufgerufene Seite und deren HTML-Titel per Bookmarklet in einer Wiki-Seite speichern kann.

Folgendes PHP-Skript muss angepasst auf dem Webserver hinterlegt werden:

bookmark.php
<?php
        # path to dokuwiki page
        $file = "/path/to/wiki/data/pages/bookmarks.txt";
 
        # ensure utf-8
        $url = iconv("UTF-8", "UTF-8//IGNORE", $_GET["url"]);
        $title = iconv("UTF-8", "UTF-8//IGNORE", $_GET["title"]);
 
        # dont break wiki syntax
        $search  = array('|', '[', ']');
        $replace = "-";
        $url = str_replace($search, $replace, $url);
        $title = str_replace($search, $replace, $title);
 
        # write to dokuwiki page
        if (file_put_contents($file, "\n  * [[" . $url . "|" . $title . "]]", FILE_APPEND | LOCK_EX) === false) {
                die("Error: Failed to add bookmark.");
        }
 
        # redirect back to source
        header("HTTP/1.1 302 Found");
        header("Location: " . $_GET["url"]);

Dieses Bookmarklet sendet die aktuelle URL und den HTML-Seitentitel an das auf dem Server hinterlegte PHP-Skript:

bookmarklet.js
javascript:(function(){location.href='http://example.com/bookmark.php?url='+encodeURIComponent(window.location.href)+'&title='+encodeURIComponent(document.title)})()

http://example.com muss natürlich an die eigenen Bedürfnisse angepasst werden.

// Login absichern mit Hashing und Zwei-Faktor-Authentifizierung

Ein normaler Login besteht in der Regel aus einer HTML-Form und einem Server-Skript zur Validierung. Ist die Verbindung nicht zusätzlich über HTTPS abgesichert, kann ein Angreifer durch das Abhören des Netzwerkverkehrs die Zugangsdaten erlangen. Selbst wenn die Verbindung gesichert ist, gibt es andere (nicht technische) Möglichkeiten für einen Angreifer, z.B. die Eingabe der Zugangsdaten zu beobachten.

Einen HTTP Login absichern:

  1. Sichere Übertragung des Kennworts (per „Salted-Hash“)
  2. Zusätzliche Authentifizierung über ein Token (Smartphone App)

Grundgerüst

Um einen einfachen Login zu realisieren benötigt man eine HTML-Form mit Text- und Kennwortfeldern, sowie ein Server-Skript (in diesem Beispiel PHP) für die Validierung der Benutzerdaten:

login.html
<html>
<head>
<title>Login</title>
</head>
<body>
<form action="login.php" method="POST">
	Benutzername: <input type="TEXT" name="username"><br>
	Kennwort:     <input type="PASSWORD"name="password"><br>
	<input type="SUBMIT" name="Login" value="Login">
</form>
</body>
</html>
login.php
<?php
if ($_POST["username"] == "foo" && $_POST["password"] == "bar") {
	echo "Login ok";
else {
	echo "Login fehlgeschlagen";
}

// DokuWiki: TOC automatisch einklappen

DokuWiki bietet von Hause aus leider keine Möglichkeit, den TOC einer bestimmten Seite automatisch eingeklappt (collapsed) anzuzeigen. Standardmäßig ist der TOC ausgeklappt.

Mit folgendem Quick & Dirty Hack kann man dies pro Seite aktivieren:

<html>
	<script>
		// collapse TOC
		jQuery(document).ready(function() {
			jQuery('#dw__toc h3').click();
		});
	</script>
</html>

Hierfür muss allerdings HTML im Wiki-Markup erlaubt sein.

Getestet unter: DokuWiki 2012-10-13 „Adora Belle“ mit prsnl10 Template.

// Sonntag

Aalto Talk with Linus Torvalds

Aalto Talk with Linus Torvalds, hosted by Aalto Center for Entrepreneurship (ACE) in Otaniemi on June 14, 2012. Linus was interviewed by Will Cardwell and followed with a Q&A session with the audience. Enjoy!

foo/bar


reggae.sh
#!/bin/bash
 
# Reggae / Pan-African colors
STARS=$(for i in $(seq 1 $(tput cols)); do echo -n '#';done);
for j in $(seq 1 3);do
        for k in $(seq 1 $(echo "scale=0;$(tput lines)/3-1"|bc -l));do
                if [ $j -eq 1 ];then
                        # red
                        echo -e "$(tput setaf 1)$STARS"
                elif [ $j -eq 2 ]; then
                        # yellow
                        echo -e "$(tput setaf 3)$STARS"
                else
                        # green
                        echo -e "$(tput setaf 2)$STARS"
                fi
        done
done
echo -e $(tput sgr0)
Web 2.0



RSS   RSS abonieren

Github   Github
QR Code