init
Signed-off-by: Nico Schottelius <nico@manager.schottelius.org>
This commit is contained in:
		
					parent
					
						
							
								256dc98754
							
						
					
				
			
			
				commit
				
					
						df2daf524d
					
				
			
		
					 641 changed files with 140617 additions and 12 deletions
				
			
		
							
								
								
									
										5
									
								
								aalot
									
										
									
									
									
										Executable file
									
								
							
							
						
						
									
										5
									
								
								aalot
									
										
									
									
									
										Executable file
									
								
							|  | @ -0,0 +1,5 @@ | |||
| #!/bin/sh | ||||
| 
 | ||||
| cd /home/users/nico/p/foreign/alot | ||||
| export PYTHONPATH=$(pwd -P) | ||||
| python2 ./bin/alot | ||||
							
								
								
									
										3
									
								
								add-new-package
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										3
									
								
								add-new-package
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,3 @@ | |||
| /root/scripts/add-links "$1" | ||||
| /root/scripts/rekursivperms "$1" | ||||
| chown -R .util "$1" | ||||
							
								
								
									
										80
									
								
								add.wddb-to-fsdb
									
										
									
									
									
										Executable file
									
								
							
							
						
						
									
										80
									
								
								add.wddb-to-fsdb
									
										
									
									
									
										Executable file
									
								
							|  | @ -0,0 +1,80 @@ | |||
| BASEDIR=/home/server/www/org/wddb/www/ | ||||
| tmp=/tmp/wddb-$$ | ||||
| 
 | ||||
| function report() | ||||
| { | ||||
|    # sender | ||||
|    UFLINE | ||||
| 
 | ||||
|    # return path | ||||
|    RPLINE | ||||
| 
 | ||||
|    # we | ||||
|    RECIPIENT | ||||
|     | ||||
|    # delivered to.. | ||||
|    DTLINE | ||||
|    # set | ||||
| } | ||||
| 
 | ||||
| function init() | ||||
| { | ||||
|    cat > $tmp | ||||
|     | ||||
| 
 | ||||
| } | ||||
| 
 | ||||
| # continent | ||||
| continent=`grep "^continent" "$1" | sed 's/.*="\(.*\)"/\1/'` | ||||
| 
 | ||||
| case "$continent" in | ||||
|    africa|asia|australia|europe|northamerica|southamerica) ;; | ||||
|    *) report "Allowed continents: africa|asia|australia|europe|northamerica|southamerica" ;; | ||||
| esac | ||||
| 
 | ||||
| # other vars | ||||
| essid=`grep "^essid" "$1" | sed 's/.*="\(.*\)"/\1/'` | ||||
| 
 | ||||
| # remove possible dots | ||||
| country=`grep "^country" "$1" | sed 's/.*="\(.*\)"/\1/' | sed 's/\.\.//g'` | ||||
| area=`grep "^area" "$1" | sed 's/.*="\(.*\)"/\1/' | sed 's/\//-/g' | sed 's/ //c'` | ||||
| mac=`grep "^mac" "$1" | sed 's/.*="\(.*\)"/\1/'` | ||||
| rate=`grep "^rate" "$1" | sed 's/.*="\(.*\)"/\1/'` | ||||
| wep=`grep "^wep" "$1" | sed 's/.*="\(.*\)"/\1/'` | ||||
| hints=`grep "^hints" "$1" | sed 's/.*="\(.*\)"/\1/'` | ||||
| location=`grep "^location" "$1" | sed 's/.*="\(.*\)"/\1/'` | ||||
| 
 | ||||
| # check for empty fields | ||||
| for a in essid country area mac rate wep hints location; do | ||||
|    eval tmp="\$$a" | ||||
|    if [ -z "$tmp" ]; then | ||||
|       report "Empty field: $a" | ||||
|    fi | ||||
| done | ||||
| 
 | ||||
| if [ ! -f $BASEDIR/$continent/$country/$area.html ]; then | ||||
|    cat << EOF > "$1" | ||||
|    <html> | ||||
|    <head> | ||||
|    <title>wddb.org - WarDriver's DataBase</title> | ||||
|    </head> | ||||
| 
 | ||||
|    <BODY bgcolor="#000000" color="#ef0000" font-color="#ef0000"> | ||||
|    <FONT COLOR="#ef0000"> | ||||
|     | ||||
| else | ||||
|   lines=`cat "$BASEDIR/$continent/$country/$area.html" | wc |awk '{ print $1 }'` | ||||
|   use_lines=$[$lines-7] | ||||
|   head -n $use_lines "$BASEDIR/$continent/$country/$area.html" > "$1" | ||||
|    | ||||
| fi | ||||
| 
 | ||||
| cat << EOF >> "$1" | ||||
|    </TABLE> | ||||
|    <HR> | ||||
|    <A HREF="../index.html"> << One step back</A> | ||||
|    <P><A HREF="/submit-new.html">Submit new network or changes<A> | ||||
|    </FONT> | ||||
|    </BODY> | ||||
|    </HTML> | ||||
| EOF | ||||
							
								
								
									
										3
									
								
								add_usb_storage
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										3
									
								
								add_usb_storage
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,3 @@ | |||
| modprobe usb-storage | ||||
| modprobe ohci-hcd | ||||
| modprobe sd_mod | ||||
							
								
								
									
										15
									
								
								archive_mails.sh
									
										
									
									
									
										Executable file
									
								
							
							
						
						
									
										15
									
								
								archive_mails.sh
									
										
									
									
									
										Executable file
									
								
							|  | @ -0,0 +1,15 @@ | |||
| #!/bin/sh | ||||
| # Nico Schottelius | ||||
| # clean current mailbox, so imap connections are faster | ||||
| 
 | ||||
| set -e | ||||
| 
 | ||||
| maildir="$HOME/Maildir" | ||||
| curdir="$maildir/cur" | ||||
| date=$(date +%Y-%m-%d) | ||||
| archiv="$HOME/mail-archiv" | ||||
| ddir="${archiv}/${date}/" | ||||
| 
 | ||||
| mkdir -p "$ddir" | ||||
| 
 | ||||
| find "$curdir" -type f -exec mv {} "$ddir" \; | ||||
							
								
								
									
										21
									
								
								archlinux-all-depending-packages.sh
									
										
									
									
									
										Executable file
									
								
							
							
						
						
									
										21
									
								
								archlinux-all-depending-packages.sh
									
										
									
									
									
										Executable file
									
								
							|  | @ -0,0 +1,21 @@ | |||
| #!/bin/sh | ||||
| 
 | ||||
| if [ "$#" -ne 1 ]; then | ||||
|     echo "$0 package" >&2 | ||||
|     exit 1 | ||||
| fi | ||||
| 
 | ||||
| deps=$(pacman -Qi "$1" | awk -F: '/Depends On/ { print $2 }') | ||||
| 
 | ||||
| echo $1 -- $deps | ||||
| 
 | ||||
| alldeps="" | ||||
| 
 | ||||
| for dep in $deps; do | ||||
|     [ "$dep" = "None" ] && continue | ||||
| 
 | ||||
|     pkg=$(echo $dep | sed 's/>=.*//') | ||||
|     alldeps="$alldeps $("$0" "$pkg")" | ||||
| done | ||||
| 
 | ||||
| echo "$alldeps" | ||||
							
								
								
									
										153
									
								
								attach
									
										
									
									
									
										Executable file
									
								
							
							
						
						
									
										153
									
								
								attach
									
										
									
									
									
										Executable file
									
								
							|  | @ -0,0 +1,153 @@ | |||
| #!/usr/bin/perl -wT | ||||
| # | ||||
| # TWiki Collaboration Platform, http://TWiki.org/ | ||||
| # | ||||
| # Copyright (C) 1999-2003 Peter Thoeny, peter@thoeny.com | ||||
| # | ||||
| # For licensing info read license.txt file in the TWiki root. | ||||
| # 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 2 | ||||
| # 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, published at  | ||||
| # http://www.gnu.org/copyleft/gpl.html | ||||
| 
 | ||||
| # Set library paths in @INC, at compile time | ||||
| BEGIN { unshift @INC, '.'; require 'setlib.cfg'; } | ||||
| 
 | ||||
| use CGI::Carp qw( fatalsToBrowser ); | ||||
| use CGI; | ||||
| use TWiki; | ||||
| 
 | ||||
| use strict; | ||||
| 
 | ||||
| #open(STDERR,'>&STDOUT'); # redirect error to browser | ||||
| $| = 1;                  # no buffering | ||||
| 
 | ||||
| &main(); | ||||
| 
 | ||||
| 
 | ||||
| # ========================= | ||||
| sub listVersions | ||||
| { | ||||
|     my( $web, $topic, $attachment ) = @_; | ||||
| 
 | ||||
|     my $latestRev = TWiki::Store::getRevisionNumber( $web, $topic, $attachment ); | ||||
|     $latestRev =~ /\.(.*)/; | ||||
|     my $maxRevNum = $1; | ||||
| 
 | ||||
|     my $found = 0; | ||||
| 
 | ||||
|     my $result = "\n|  *Version:*  |  *Action:*   |  *Date:*  |  *Who:*  |  *Comment:*  |\n"; | ||||
| 
 | ||||
|     for( my $version = $maxRevNum; $version >= 1; $version-- ) { | ||||
| 
 | ||||
|         my $rev = "1.$version"; | ||||
| 
 | ||||
|         my( $date, $userName, $dummy, $comment ) =  | ||||
|            TWiki::Store::getRevisionInfo( $web, $topic, $rev, "TWiki date", $attachment ); | ||||
|         my $wikiUserName = &TWiki::userToWikiName( $userName ); | ||||
| 
 | ||||
|         my $viewAction = "<a href=\"%SCRIPTURLPATH%/viewfile%SCRIPTSUFFIX%/%WEB%/%TOPIC%?rev=$rev&filename=$attachment\">view</a>"; | ||||
|         $result .= "| 1.$version  | $viewAction | $date | $wikiUserName | $comment |\n"; | ||||
|     } | ||||
| 
 | ||||
|     $result = "$result"; | ||||
|     return $result; | ||||
| } | ||||
| 
 | ||||
| 
 | ||||
| # ========================= | ||||
| sub main | ||||
| { | ||||
|     my $query = new CGI; | ||||
|     my $thePathInfo = $query->path_info();  | ||||
|     my $theRemoteUser = $query->remote_user(); | ||||
|     my $theTopic = $query->param( 'topic' ); | ||||
|     my $theUrl = $query->url; | ||||
|      | ||||
|     my( $topic, $webName, $dummy, $userName ) =  | ||||
| 	&TWiki::initialize( $thePathInfo, $theRemoteUser, $theTopic, $theUrl, $query ); | ||||
|     $dummy = "";  # to suppress warning | ||||
| 
 | ||||
|     my $tmpl = ""; | ||||
|     my $text = ""; | ||||
|     my $meta = ""; | ||||
|     my $atext = ""; | ||||
|     my $fileName = ""; | ||||
|     my $fileUser = ""; | ||||
|     my $wikiUserName = &TWiki::userToWikiName( $userName ); | ||||
| 
 | ||||
|     my $isHideChecked = ""; | ||||
| 
 | ||||
|     if( ! &TWiki::Store::webExists( $webName ) ) { | ||||
|         my $url = &TWiki::getOopsUrl( $webName, $topic, "oopsnoweb" ); | ||||
|         TWiki::redirect( $query, $url ); | ||||
|         return; | ||||
|     } | ||||
| 
 | ||||
|     my( $mirrorSiteName, $mirrorViewURL ) = &TWiki::readOnlyMirrorWeb( $webName ); | ||||
|     if( $mirrorSiteName ) { | ||||
|         my $url = &TWiki::getOopsUrl( $webName, $topic, "oopsmirror", $mirrorSiteName, $mirrorViewURL ); | ||||
|         TWiki::redirect( $query, $url ); | ||||
|         return; | ||||
|     } | ||||
| 
 | ||||
|     # check access permission | ||||
|     if( ! &TWiki::Access::checkAccessPermission( "change", $wikiUserName, "", $topic, $webName ) ) { | ||||
|         my $url = &TWiki::getOopsUrl( $webName, $topic, "oopsaccesschange" ); | ||||
|         TWiki::redirect( $query, $url ); | ||||
|         return; | ||||
|     } | ||||
| 
 | ||||
|     $fileName = $query->param( 'filename' ) || ""; | ||||
| 
 | ||||
|     if( &TWiki::Store::topicExists( $webName, $topic ) ) { | ||||
|         ( $meta, $text ) = &TWiki::Store::readTopic( $webName, $topic ); | ||||
|     } | ||||
|      | ||||
|     my %args = $meta->findOne( "FILEATTACHMENT", $fileName ); | ||||
|     %args = ( "attr" => "", "path" => "", "comment" => "" ) if( ! % args ); | ||||
| 
 | ||||
|     if ( $args{"attr"} =~ /h/o ) { | ||||
|           $isHideChecked = "checked"; | ||||
|     } | ||||
| 
 | ||||
|     if ( $fileName ) {  | ||||
|         $atext = listVersions( $webName, $topic, $fileName ); | ||||
|     } | ||||
| 
 | ||||
|     # why log attach before post is called? | ||||
|     # FIXME: Move down, log only if successful (or with error msg?) | ||||
|     # Attach is a read function, only has potential for a change | ||||
|     if( $TWiki::doLogTopicAttach ) { | ||||
|         # write log entry | ||||
|         &TWiki::Store::writeLog( "attach", "$webName.$topic", $fileName ); | ||||
|     } | ||||
| 
 | ||||
|     my $fileWikiUser = ""; | ||||
|     my $skin = $query->param( "skin" ) || TWiki::Prefs::getPreferencesValue( "SKIN" ); | ||||
|     if( $fileName && %args ) { | ||||
|         $tmpl = TWiki::Store::readTemplate( "attachagain", $skin ); | ||||
|         $fileWikiUser = &TWiki::userToWikiName( $args{"user"} ); | ||||
|     } else { | ||||
|         $tmpl = TWiki::Store::readTemplate( "attachnew", $skin ); | ||||
|     } | ||||
|     $tmpl =~ s/%ATTACHTABLE%/$atext/go; | ||||
|     $tmpl =~ s/%FILEUSER%/$fileWikiUser/go; | ||||
|     $tmpl = &TWiki::handleCommonTags( $tmpl, $topic ); | ||||
|     $tmpl = &TWiki::getRenderedVersion( $tmpl ); | ||||
|     $tmpl = &TWiki::handleMetaTags( $webName, $topic, $tmpl, $meta ); | ||||
|     $tmpl =~ s/%HIDEFILE%/$isHideChecked/go; | ||||
|     $tmpl =~ s/%FILENAME%/$fileName/go; | ||||
|     $tmpl =~ s/%FILEPATH%/$args{"path"}/go; | ||||
|     $tmpl =~ s/%FILECOMMENT%/$args{"comment"}/go; | ||||
|     TWiki::writeHeader( $query ); | ||||
|     print $tmpl; | ||||
| } | ||||
| 
 | ||||
| # EOF | ||||
							
								
								
									
										10
									
								
								backup.to.eiche
									
										
									
									
									
										Executable file
									
								
							
							
						
						
									
										10
									
								
								backup.to.eiche
									
										
									
									
									
										Executable file
									
								
							|  | @ -0,0 +1,10 @@ | |||
| HOST=eiche | ||||
| DESTDIR=/mnt/datennirvana/backup/bruehe | ||||
| EXCLUDE_FILE=/root/.backup-exclude | ||||
| 
 | ||||
| #time rsync -e ssh -av --exclude-from=/root/.backup-exclude / 192.168.23.33:/mnt/backup/bruehe | ||||
| 
 | ||||
| time rsync -e ssh -av --exclude-from=$EXCLUDE_FILE / "$HOST":"$DESTDIR" | ||||
| 
 | ||||
| #echo "Shutting down $HOST..." | ||||
| #ssh $HOST "shutdown -h now" | ||||
							
								
								
									
										18
									
								
								backup_to_eiche.nfs
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										18
									
								
								backup_to_eiche.nfs
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,18 @@ | |||
| NEWROOT=/mnt/eiche | ||||
| DATA_DIRS="bin boot etc home lib opt root sbin tmp usr var" | ||||
| SCRIPTS="/root/scripts/to_eiche" | ||||
| 
 | ||||
| # display how long we backup | ||||
| date | ||||
| for script in $SCRIPTS; do | ||||
| 	$script | ||||
| done | ||||
| 
 | ||||
| # create empty dirs | ||||
| mkdir -p $NEWROOT/dev $NEWROOT/proc $NEWROOT/mnt  | ||||
| for a in /mnt/*; do mkdir -p $NEWROOT/$a; done | ||||
| 
 | ||||
| cd / | ||||
| tar cf - $DATA_DIRS | ( cd $NEWROOT; tar xf - ) | ||||
| 
 | ||||
| date | ||||
							
								
								
									
										4
									
								
								bootstrap
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										4
									
								
								bootstrap
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,4 @@ | |||
| #!/bin/sh | ||||
| 
 | ||||
| mkdir ~/p/ | ||||
| mr checkout | ||||
							
								
								
									
										9
									
								
								change.old.new
									
										
									
									
									
										Executable file
									
								
							
							
						
						
									
										9
									
								
								change.old.new
									
										
									
									
									
										Executable file
									
								
							|  | @ -0,0 +1,9 @@ | |||
| #!/bin/sh | ||||
| OLD='\[ Nico at Schottelius dot org \]' | ||||
| NEM='\[ info: use finger @schottelius.org ]' | ||||
| 
 | ||||
| if [ ! -d "$1" ]; then | ||||
|    cat "$1" | sed "s/$OLD/$NEW/g" | ||||
|    #> $1.tmp | ||||
|    #mv $1.tmp $1 | ||||
| fi | ||||
							
								
								
									
										29
									
								
								clear-link-dirs
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										29
									
								
								clear-link-dirs
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,29 @@ | |||
| 
 | ||||
| check_file() | ||||
| { | ||||
|    if [ ! -h "$1" ]; then | ||||
|       echo "$1" is not a link\! Please FIXME\! | ||||
|       if [ ! -e "$1" ]; then | ||||
|          echo "$1" is broken. removing. | ||||
|          #rm "$1" | ||||
|       fi | ||||
|    fi | ||||
| } | ||||
| 
 | ||||
| for a in /usr/bin/* ; do | ||||
|    check_file "$a" | ||||
| done | ||||
| 
 | ||||
| for a in /usr/lib/* ; do | ||||
|    check_file "$a" | ||||
| done | ||||
| 
 | ||||
| for a in /usr/sbin/*; do | ||||
|    check_file "$a" | ||||
| done | ||||
| 
 | ||||
| for a in /usr/include/*; do | ||||
|    check_file "$a" | ||||
| done | ||||
| 
 | ||||
| 
 | ||||
							
								
								
									
										4
									
								
								console_dvd
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										4
									
								
								console_dvd
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,4 @@ | |||
| 
 | ||||
| ~/scripts/enab_fbdev | ||||
| ~/scripts/enab_sound | ||||
| mplayer -nogui -vo fbdev -dvd 1 /dev/cdroms/cdrom0 "$@" | ||||
							
								
								
									
										4
									
								
								console_vcd
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										4
									
								
								console_vcd
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,4 @@ | |||
| 
 | ||||
| ~/scripts/enab_fbdev | ||||
| ~/scripts/enab_sound | ||||
| mplayer -nogui -vo fbdev -vcd 1 /dev/cdroms/cdrom0 "$@" | ||||
							
								
								
									
										1
									
								
								create-logdir
									
										
									
									
									
										Executable file
									
								
							
							
						
						
									
										1
									
								
								create-logdir
									
										
									
									
									
										Executable file
									
								
							|  | @ -0,0 +1 @@ | |||
|  mkdir logs; chown www-data:www-data logs | ||||
							
								
								
									
										10
									
								
								cron/check_pppd
									
										
									
									
									
										Executable file
									
								
							
							
						
						
									
										10
									
								
								cron/check_pppd
									
										
									
									
									
										Executable file
									
								
							|  | @ -0,0 +1,10 @@ | |||
| #!/bin/sh | ||||
| 
 | ||||
| PID="" | ||||
| PROG="pppd call dsl-provider" | ||||
| PID=`ps ax | grep "$PROG" | grep -v grep | awk '{ print $1 }'` | ||||
| 
 | ||||
| if [ -z "$PID" ]; then | ||||
| 	echo "Starte Internet neu" | ||||
| 	pppd call dsl-provider | ||||
| fi | ||||
							
								
								
									
										16
									
								
								cron/clean-nico-mailbox.sh
									
										
									
									
									
										Executable file
									
								
							
							
						
						
									
										16
									
								
								cron/clean-nico-mailbox.sh
									
										
									
									
									
										Executable file
									
								
							|  | @ -0,0 +1,16 @@ | |||
| #!/bin/sh | ||||
| # Nico Schottelius | ||||
| # clean current mailbox, so imap connections are faster | ||||
| 
 | ||||
| set -e | ||||
| 
 | ||||
| maildir="/home/server/mail/schottelius.org/nico/" | ||||
| curdir="$maildir/cur" | ||||
| date=$(date +%Y-%m-%d) | ||||
| archiv="/home/user/nico/mail-archiv" | ||||
| ddir="${archiv}/${date}/" | ||||
| 
 | ||||
| mkdir -p "$ddir" | ||||
| 
 | ||||
| find "$curdir" -type f -exec mv {} "$ddir" \; | ||||
| 
 | ||||
							
								
								
									
										59
									
								
								cron/lighty-rrd-graph.sh
									
										
									
									
									
										Executable file
									
								
							
							
						
						
									
										59
									
								
								cron/lighty-rrd-graph.sh
									
										
									
									
									
										Executable file
									
								
							|  | @ -0,0 +1,59 @@ | |||
| #!/bin/sh | ||||
| 
 | ||||
| RRDTOOL=/usr/bin/rrdtool | ||||
| OUTDIR=/home/server/www/nico/org/schottelius/home/www/stats | ||||
| INFILE=/home/server/www/rrd/lighttpd.rrd | ||||
| OUTPRE=lighttpd-traffic | ||||
| 
 | ||||
| DISP="-v bytes --title TrafficWebserver \ | ||||
|         DEF:binraw=$INFILE:InOctets:AVERAGE \ | ||||
|         DEF:binmaxraw=$INFILE:InOctets:MAX \ | ||||
|         DEF:binminraw=$INFILE:InOctets:MIN \ | ||||
|         DEF:bout=$INFILE:OutOctets:AVERAGE \ | ||||
|         DEF:boutmax=$INFILE:OutOctets:MAX \ | ||||
|         DEF:boutmin=$INFILE:OutOctets:MIN \ | ||||
|         CDEF:bin=binraw,-1,* \ | ||||
|         CDEF:binmax=binmaxraw,-1,* \ | ||||
|         CDEF:binmin=binminraw,-1,* \ | ||||
|         CDEF:binminmax=binmax,binmin,- \ | ||||
|         CDEF:boutminmax=boutmax,boutmin,- \ | ||||
|         AREA:binmin#ffffff: \ | ||||
|         STACK:binminmax#f00000: \ | ||||
|         LINE1:binmin#a0a0a0: \ | ||||
|         LINE1:binmax#a0a0a0: \ | ||||
|         LINE2:bin#a0a735:incoming \ | ||||
|         GPRINT:bin:MIN:%.2lf \ | ||||
|         GPRINT:bin:AVERAGE:%.2lf \ | ||||
|         GPRINT:bin:MAX:%.2lf \ | ||||
|         AREA:boutmin#ffffff: \ | ||||
|         STACK:boutminmax#00f000: \ | ||||
|         LINE1:boutmin#a0a0a0: \ | ||||
|         LINE1:boutmax#a0a0a0: \ | ||||
|         LINE2:bout#a0a735:outgoing \ | ||||
|         GPRINT:bout:MIN:%.2lf \ | ||||
|         GPRINT:bout:AVERAGE:%.2lf \ | ||||
|         GPRINT:bout:MAX:%.2lf \ | ||||
|         " | ||||
| 
 | ||||
| 
 | ||||
| $RRDTOOL graph $OUTDIR/$OUTPRE-hour.png -a PNG --start -14400 $DISP | ||||
| $RRDTOOL graph $OUTDIR/$OUTPRE-day.png -a PNG --start -86400 $DISP | ||||
| $RRDTOOL graph $OUTDIR/$OUTPRE-month.png -a PNG --start -2592000 $DISP | ||||
| 
 | ||||
| OUTPRE=lighttpd-requests | ||||
| 
 | ||||
| DISP="-v req --title RequestsperSecond -u 1 \ | ||||
|         DEF:req=$INFILE:Requests:AVERAGE \ | ||||
|         DEF:reqmax=$INFILE:Requests:MAX \ | ||||
|         DEF:reqmin=$INFILE:Requests:MIN \ | ||||
|         CDEF:reqminmax=reqmax,reqmin,- \ | ||||
|         AREA:reqmin#ffffff: \ | ||||
|         STACK:reqminmax#0e0e0e: \ | ||||
|         LINE1:reqmin#a0a0a0: \ | ||||
|         LINE1:reqmax#a0a0a0: \ | ||||
|         LINE2:req#00a735:requests" | ||||
| 
 | ||||
| 
 | ||||
| $RRDTOOL graph $OUTDIR/$OUTPRE-hour.png -a PNG --start -14400 $DISP | ||||
| $RRDTOOL graph $OUTDIR/$OUTPRE-day.png -a PNG --start -86400 $DISP | ||||
| $RRDTOOL graph $OUTDIR/$OUTPRE-month.png -a PNG --start -2592000 $DISP | ||||
							
								
								
									
										12
									
								
								cron/ping_pong
									
										
									
									
									
										Executable file
									
								
							
							
						
						
									
										12
									
								
								cron/ping_pong
									
										
									
									
									
										Executable file
									
								
							|  | @ -0,0 +1,12 @@ | |||
| #HOSTS="www.spiegel.de www.lernen.de www.isc.org B.ROOT-SERVERS.NET" | ||||
| HOSTS="www.heise.de www.netcraft.com " | ||||
| 
 | ||||
| STATUS=offline | ||||
| 
 | ||||
| for myh in $HOSTS; do | ||||
|    ping -c1 $myh >/dev/null 2>&1 && STATUS=online | ||||
| done | ||||
| 
 | ||||
| if [ "$STATUS" = offline ]; then | ||||
|    echo 'Offline.'`date` | ||||
| fi | ||||
							
								
								
									
										28
									
								
								cron/webalizer.cron
									
										
									
									
									
										Executable file
									
								
							
							
						
						
									
										28
									
								
								cron/webalizer.cron
									
										
									
									
									
										Executable file
									
								
							|  | @ -0,0 +1,28 @@ | |||
| #!/bin/sh | ||||
| # Date: 27. May 1999 | ||||
| # Author: Nico Schottelius ( webmaster@schottelius.org ) | ||||
| # webalizer.cron; do webalizer for every server | ||||
| # Last Modified: 20. Mai 2003 | ||||
| # Version : 1.02 | ||||
| 
 | ||||
| # Preperations | ||||
| 
 | ||||
|   # unset / set varibales | ||||
|   SERV="" | ||||
|   WEBALIZER="/usr/bin/nice -n 20 webalizer" | ||||
|   ERR_LOG="/var/log/webalizer.err" | ||||
|   STD_LOG="/var/log/webalizer.log" | ||||
| 
 | ||||
| ## Startup | ||||
|   echo Starting at : `date` | ||||
|    | ||||
| # MAIN | ||||
|   for SERV in `find /home/server/www/ -name webalizer.conf`; do | ||||
|     echo "Using $SERV" | ||||
|     LOGDIR=`dirname $SERV`/.. | ||||
|     $WEBALIZER -c $SERV $LOGDIR/access.log* | ||||
| #   $WEBALIZER -c $SERV $LOGDIR/access.log.1 $LOGDIR/access.log* | ||||
|   done | ||||
| 
 | ||||
| ## Shutdown | ||||
|   echo Stopping at : `date` | ||||
							
								
								
									
										32
									
								
								cron/webalizer.cron-v0.2
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										32
									
								
								cron/webalizer.cron-v0.2
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,32 @@ | |||
| #!/bin/sh | ||||
| # Date: 27. May 1999 | ||||
| # Author: Nico Schottelius ( webmaster@schottelius.org ) | ||||
| # webalizer.cron; do webalizer for every server | ||||
| # Last Modified: 20. Mai 2003 | ||||
| # Version : 1.02 | ||||
| 
 | ||||
| # Preperations | ||||
| 
 | ||||
|   # unset / set varibales | ||||
|   SERV="" | ||||
|   WEBALIZER="/usr/bin/nice -n 20 webalizer -c" | ||||
|   ERR_LOG="/var/log/webalizer.err" | ||||
|   STD_LOG="/var/log/webalizer.log" | ||||
| 
 | ||||
| ## Startup | ||||
|   echo Starting at : `date` | ||||
|    | ||||
| # MAIN | ||||
|   for SERV in `find /home/server/www/ -name webalizer.conf`; do | ||||
|     echo "Using $SERV" | ||||
|     LOGDIR=`dirname $SERV`/.. | ||||
|     for log in $LOGDIR/access.log $LOGDIR/access.log.1; do | ||||
|       echo "$log ..." | ||||
|       $WEBALIZER $SERV $log | ||||
|       cat $log | $WEBALIZER $SERV | ||||
|     done | ||||
|     zcat $LOGDIR/access*.gz | $WEBALIZER $SERV | ||||
|   done | ||||
| 
 | ||||
| ## Shutdown | ||||
|   echo Stopping at : `date` | ||||
							
								
								
									
										3
									
								
								cron/webalizer.unix
									
										
									
									
									
										Executable file
									
								
							
							
						
						
									
										3
									
								
								cron/webalizer.unix
									
										
									
									
									
										Executable file
									
								
							|  | @ -0,0 +1,3 @@ | |||
| #!/bin/sh | ||||
| cd /home/server/www/nico/org/schottelius/unix | ||||
| webalizer -c webalizer/webalizer.conf logs/access.log.1 | ||||
							
								
								
									
										57
									
								
								dcl-ip-converter.py
									
										
									
									
									
										Executable file
									
								
							
							
						
						
									
										57
									
								
								dcl-ip-converter.py
									
										
									
									
									
										Executable file
									
								
							|  | @ -0,0 +1,57 @@ | |||
| #!/usr/bin/env python3 | ||||
| 
 | ||||
| import ipaddress | ||||
| import sys | ||||
| 
 | ||||
| def hexstr2int(string): | ||||
|     return int(string.replace(':', ''), 16) | ||||
| 
 | ||||
| FIRST_MAC = hexstr2int('02:00:b3:39:79:4d') | ||||
| FIRST_V4  = ipaddress.ip_address('185.203.112.2') | ||||
| FIRST_V6 =  "2a0a:e5c0:0:2:400:b3ff:fe39:794d" | ||||
| 
 | ||||
| V6_NAT64_BASE = ipaddress.ip_address("2a0a:e5c0:0:1:0:1::") | ||||
| 
 | ||||
| def v4_from_mac(mac): | ||||
|     """Calculates the IPv4 address from a MAC address. | ||||
| 
 | ||||
|     mac: string (the colon-separated representation) | ||||
|     returns: ipaddress.ip_address object with the v4 address | ||||
|     """ | ||||
|     return FIRST_V4 + (hexstr2int(mac) - FIRST_MAC) | ||||
| 
 | ||||
| def v4_from_v6(ipv6ip): | ||||
|     """Calculates the IPv4 address from the IPv4 address | ||||
| 
 | ||||
|     ipv6ip: the ip | ||||
|     returns: ipaddress.ip_address object with the v4 address | ||||
|     """ | ||||
| 
 | ||||
|     return FIRST_V4 + (hexstr2int(ipv6ip) - (hexstr2int(FIRST_V6))) | ||||
| 
 | ||||
| def v6_from_v4(ipv4): | ||||
|     v4addr = ipaddress.ip_address(ipv4) | ||||
|     return V6_NAT64_BASE + int(v4addr) | ||||
| 
 | ||||
| if __name__ == "__main__": | ||||
|     addr = sys.argv[1] | ||||
|     out = [] | ||||
| 
 | ||||
|     try: | ||||
|         out.append(v4_from_v6(addr)) | ||||
|     except: | ||||
|         pass | ||||
| 
 | ||||
|     try: | ||||
|         out.append(v6_from_v4(addr)) | ||||
|     except: | ||||
|         pass | ||||
| 
 | ||||
| 
 | ||||
|     print("{}".format(out)) | ||||
| 
 | ||||
| # test.ch | ||||
| # 2a0a:e5c0:0:1:0:1:504a:8a8c | ||||
| # 80.74.138.140 | ||||
| # 1347062412 | ||||
| # | ||||
							
								
								
									
										28
									
								
								dhcp-abuse
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										28
									
								
								dhcp-abuse
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,28 @@ | |||
| # virtull devices | ||||
| vdev=0 | ||||
| dev=eth0 | ||||
| 
 | ||||
| 
 | ||||
| l6="0" | ||||
| while [ "$l6" -lt 256 ]; do | ||||
|    l5="0" | ||||
|    while [ "$l5" -lt 256 ]; do | ||||
|       l4="0" | ||||
|       while [ "$l4" -lt 256 ]; do | ||||
|          l3="0" | ||||
|          while [ "$l3" -lt 256 ]; do | ||||
|             l2="0" | ||||
|             while [ "$l2" -lt 256 ]; do | ||||
|                echo ifconfig $dev:$vdev hw ether `printf 00:%x:%x:%x:%x:%x $l2 $l3 $l4 $l5 $l6` | ||||
|                ifconfig $dev:$vdev hw ether `printf 00:%x:%x:%x:%x:%x $l2 $l3 $l4 $l5 $l6` | ||||
|                l2=$[$l2+1] | ||||
|                vdev=$[$vdev+1] | ||||
|             done | ||||
|             l3=$[$l3+1] | ||||
|          done | ||||
|          l4=$[$l4+1] | ||||
|       done | ||||
|       l5=$[$l5+1] | ||||
|    done | ||||
|    l6=$[$l6+1] | ||||
| done | ||||
							
								
								
									
										251
									
								
								dhw2ps.pl
									
										
									
									
									
										Executable file
									
								
							
							
						
						
									
										251
									
								
								dhw2ps.pl
									
										
									
									
									
										Executable file
									
								
							|  | @ -0,0 +1,251 @@ | |||
| #!/usr/bin/env perl | ||||
| 
 | ||||
| # ------------------------------------------------------------------------- | ||||
| # file:		dhw2ps.pl | ||||
| # task:		convert the internal dwh file format of DigiMemo A501 to | ||||
| #		ps or pdf files | ||||
| # authors:	Jan Theofel (theofel@etes.de) | ||||
| #		Harald Koenig | ||||
| # version:	0.1 | ||||
| # license:	free to use, an official license will follow | ||||
| # ------------------------------------------------------------------------- | ||||
| # TODO: | ||||
| # - code cleanup | ||||
| # - code optimisation (the array of chars is very slow) | ||||
| # - adding a real license | ||||
| # - add documentation | ||||
| # ------------------------------------------------------------------------- | ||||
| 
 | ||||
| use strict; | ||||
| use Getopt::Long qw(:config gnu_getopt); | ||||
| 
 | ||||
| my $pdfout = ($0 =~ /dhw2pdf/);; | ||||
| my $debug = 0; | ||||
| my $verbose = 0; | ||||
| my $usage = 0; | ||||
| my $quiet = 0; | ||||
| my $colorlayers = 0; | ||||
| 
 | ||||
| sub usage | ||||
| { | ||||
|   print "usage: $0 [params] [dwh file(s)]\n\n"; | ||||
|   print "Where params can be:\n"; | ||||
|   print "-c|--colorlayers     color layers\n"; | ||||
|   print "-d|--debug           run in debug mode\n"; | ||||
|   print "-h|--help            display this usage message\n"; | ||||
|   print "-q|--quiet           run in quite mode\n"; | ||||
|   print "-v|--verbose         run in verbose mode\n"; | ||||
|   print "--pdf                create pdf files (nneds ps2pdf)\n"; | ||||
|   print "--ps                 create ps files\n";  | ||||
|   exit $_[0]; | ||||
| } | ||||
| 
 | ||||
| GetOptions ( | ||||
| 	    'c' => \$colorlayers, 'colorlayers!' => \$colorlayers, | ||||
| 	    'd' => \$debug,       'debug!'       => \$debug, | ||||
| 	    'h' => \$usage,       'help'         => \$usage, | ||||
| 	    'q' => \$quiet,       'quiet!'       => \$quiet, | ||||
| 	    'v' => \$verbose,     'verbose!'     => \$verbose, | ||||
| 	    'pdf!' => \$pdfout, | ||||
| 	    'ps!'  => sub { $pdfout = 0 }, | ||||
| 	    ) or usage(1); | ||||
| 
 | ||||
| my $inname = shift(); | ||||
| 
 | ||||
| usage(0) if ($usage || !$inname); | ||||
| 
 | ||||
| if ($pdfout)  | ||||
| { | ||||
|   my $check_ps2pdf = `which ps2pdf`; | ||||
|   if($check_ps2pdf eq "") | ||||
|   { | ||||
|     die "ERROR: ps2pdf is needed in pdf mode.\n"; | ||||
|   } | ||||
| } | ||||
| 
 | ||||
| 
 | ||||
| while ($inname) { # loop for all input files | ||||
| 
 | ||||
|     my ($buffer, $skip, $data); | ||||
|     my ($fileversion, $paperwidth, $paperheight, $paperformat); | ||||
|     my $file_content; | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
|     print "INFO: input file: $inname\n" if (!$quiet); | ||||
|     open(IN, "$inname"); | ||||
| 
 | ||||
|     my $count = 32; | ||||
|     read(IN, $data, $count); | ||||
| 
 | ||||
|     if($data ne "ACECAD_DIGIMEMO_HANDWRITING_____") { | ||||
| 	die "Invalid INK file $inname\n"; | ||||
|     } | ||||
| 
 | ||||
| # read rest of input file in 64K junks | ||||
|     while(read(IN, $buffer, 64*1024)) { | ||||
| 	$data .= $buffer; | ||||
|     } | ||||
|     close(IN); | ||||
| 
 | ||||
|     my @data = split(//, $data); | ||||
| 
 | ||||
| 
 | ||||
| # decode header data | ||||
| 
 | ||||
|     $fileversion = ord($data[$count++]); | ||||
|      | ||||
|     $paperwidth = ord($data[$count+0]) + (ord($data[$count+1]) << 8); | ||||
|     $count += 2; | ||||
| 
 | ||||
|     $paperheight = ord($data[$count+0]) + (ord($data[$count+1]) << 8); | ||||
|     $count += 2; | ||||
| 
 | ||||
|     my $pagetype = ord($data[$count++]); | ||||
| 
 | ||||
|     ord($data[$count++]);  # skip header byte | ||||
|     ord($data[$count++]);  # skip header byte | ||||
| 
 | ||||
|     my $paper = ("a5", "a4", "??2", "??3", "??4", "??5", "??6", "??7", "b5", "b4")[$pagetype]; | ||||
|     my $orientation = ("Portrait", "Landscape")[ $paperheight < $paperwidth ]; | ||||
| 
 | ||||
|     my $llx = 0;  #  87  for A4 centering on A4 | ||||
|     my $lly = 0;  # 123  for A4 centering on A4 | ||||
|     my $urx = $llx + int($paperwidth  / 1000. * 72. + 0.999999); | ||||
|     my $ury = $lly + int($paperheight / 1000. * 72. + 0.999999); | ||||
| 
 | ||||
|     my $now = gmtime; | ||||
| 
 | ||||
|     print "DEBUG: ink file version: $fileversion\n" if ($debug); | ||||
|     print "DEBUG: width / height: $paperwidth / $paperheight\n" if ($debug); | ||||
|     print "DEBUG: pagetype: $pagetype ($paper)\n" if ($debug); | ||||
| 
 | ||||
| 
 | ||||
|     my $outfile; | ||||
| 
 | ||||
|     if ($pdfout) { | ||||
| 	$outfile = "|ps2pdf -sPAPERSIZE=$paper - $inname"; | ||||
| 	$outfile =~ s/\.dhw$//; | ||||
| 	$outfile .= ".pdf"; | ||||
|     } else { | ||||
| 	$outfile = ">$inname"; | ||||
| 	$outfile =~ s/\.dhw$//; | ||||
| 	$outfile .= ".ps"; | ||||
|     } | ||||
| 
 | ||||
|     print "DEBUG: output file: $outfile\n" if ($debug); | ||||
|     open(OUT, "$outfile"); | ||||
| 
 | ||||
| 
 | ||||
|     print OUT <<PSHEAD; | ||||
|     %!PS-Adobe-2.0 | ||||
| 	%%Title: $inname | ||||
| 	%%Creator: ink2ps $inname | ||||
| 	%%CreationDate: $now | ||||
| 	%%Orientation: $orientation | ||||
| 	%%BoundingBox: $llx $lly $urx $ury | ||||
| 	%%DocumentPaperSizes: $paper | ||||
| 	%%Pages: 1 | ||||
| 	%%EndComments | ||||
| 	/StartPage { | ||||
| 	    gsave | ||||
| 		$llx $lly translate | ||||
| 		72 1000 div dup scale | ||||
| 		1 setlinecap | ||||
| 		1 setlinejoin | ||||
| 		1 LW | ||||
| 	    } bind def | ||||
| 	    /EndPage { | ||||
| 		grestore | ||||
| 		    showpage | ||||
| 		} bind def | ||||
| 		/RGB { setrgbcolor } bind def | ||||
| 		/LW { setlinewidth } bind def | ||||
| 		/S { newpath moveto } bind def | ||||
| 		/L { lineto } bind def | ||||
| 		/E { stroke } bind def | ||||
| 		%%EndProlog | ||||
| 		%%Page: 1 1 | ||||
| 		StartPage | ||||
| 
 | ||||
| 		% set line width | ||||
| 		16 LW | ||||
| 
 | ||||
| 		% set color | ||||
| 		0 0 0 RGB | ||||
| 
 | ||||
| 		% strokes | ||||
| PSHEAD | ||||
| 
 | ||||
| 
 | ||||
|     my $color     = 0; | ||||
|     my $lastcolor = 0; | ||||
|     my $layer     = 0; | ||||
|     my $strokes   = 0; | ||||
|     my $points    = 0; | ||||
|     my $pointcmd  = "S"; | ||||
|      | ||||
|     while($count < $#data) { | ||||
| 	my $next = ord($data[$count++]); | ||||
| 
 | ||||
| 	if (($next & ~0x07) == 0x80) {  # pen up/down | ||||
| 	    if ($next & 0x01) { | ||||
| 		$pointcmd = "S"; | ||||
| 		print "DEBUG pen down POSITION $count\n" if ($debug); | ||||
| 	    } | ||||
| 	    else { | ||||
| 		$pointcmd = "L\nE\n"; | ||||
| 		$strokes++; | ||||
| 		print "DEBUG pen up POSITION $count\n" if ($debug); | ||||
| 	    } | ||||
| 
 | ||||
| 	    $color = (($next >> 1) + ($layer * $colorlayers))  & 0x03; | ||||
| 	    print "DEBUG pen color $color\n" if ($debug); | ||||
| 	    if ($color != $lastcolor) { | ||||
| 		$lastcolor = $color; | ||||
| 		print OUT "%%Color: $color\n"; | ||||
| 		print OUT ("0 0 0", "1 0 0", "0 1 0", "0 0 1")[$color] . " RGB\n"; | ||||
| 	    } | ||||
| 	} | ||||
| 	elsif ($next == 0x88) {  # time stamp | ||||
| 	    my $timestamp = ord($data[$count++]); | ||||
| 	    print "DEBUG TimeStamp $timestamp\n" if ($debug); | ||||
| 	    print OUT "%%TimeStamp: $timestamp\n" if ($timestamp < 0x7f); | ||||
| 	} | ||||
| 	elsif ($next == 0x90) {  ## end of layer | ||||
| 	    $layer = ord($data[$count++]); | ||||
| 	    print "DEBUG End of LAYER $layer\n" if ($debug); | ||||
| 	    die("Layer # $layer > 127") if ($layer & 0x80); | ||||
| 		print OUT "%%EndOfLayer: $layer\n\n"; | ||||
| 	} | ||||
| 	elsif (!($next & ~0x7f)) {  ## coordinates | ||||
| 	    my ($b1, $b2, $b3, $b4) = ($next, ord($data[$count+0]), ord($data[$count+1]), ord($data[$count+2])); | ||||
| 	    $count += 3; | ||||
| 	    printf "DEBUG CHECK position $count A %02x %02x %02x %02x\n", $b1, $b2, $b3, $b4 if ($debug); | ||||
| 	    # die("MSB set in coordinate bytes") if (($b1 | $$b2 | $b3 | $b4) & ~0x7f); | ||||
| 
 | ||||
| 	    my $x = $b1 + ($b2 << 7); | ||||
| 	    my $y = $b3 + ($b4 << 7); | ||||
| 	    print "DEBUG $count: x = $x / y = $y\n" if ($debug); | ||||
| 	    print OUT "$x $y " . $pointcmd . "\n"; | ||||
| 	    $points++; | ||||
| 
 | ||||
| 	    $pointcmd = "L"; | ||||
| 	} else { | ||||
| 	    die("unknown byte " . sprintf("0x%02x", $next) . " at position $count"); | ||||
| 	} | ||||
|     } | ||||
| 
 | ||||
|     print OUT <<PSFOOT; | ||||
| 
 | ||||
|     EndPage | ||||
| 	%%Trailer | ||||
| 	%%EOF | ||||
| PSFOOT | ||||
| 
 | ||||
|     close(OUT); | ||||
| 
 | ||||
|     print "INFO: $points points, $strokes strokes, $layer layers\n\n" if (! $quiet); | ||||
| 
 | ||||
|     $inname = shift(); | ||||
| } | ||||
							
								
								
									
										9
									
								
								dnstunnel
									
										
									
									
									
										Executable file
									
								
							
							
						
						
									
										9
									
								
								dnstunnel
									
										
									
									
									
										Executable file
									
								
							|  | @ -0,0 +1,9 @@ | |||
| #!/bin/sh | ||||
| 
 | ||||
| 
 | ||||
| ns=$1; shift | ||||
| 
 | ||||
| sudo iodine -f "$ns" 42.schottelius.org "$@" < ~nico/.iodine-password | ||||
| 
 | ||||
| #ip route del default | ||||
| #ip route add default via 172.16.0.1 | ||||
							
								
								
									
										4
									
								
								emacs
									
										
									
									
									
										Executable file
									
								
							
							
						
						
									
										4
									
								
								emacs
									
										
									
									
									
										Executable file
									
								
							|  | @ -0,0 +1,4 @@ | |||
| #!/bin/sh | ||||
| 
 | ||||
| # /usr/bin/emacs -nw "$@" | ||||
| /usr/bin/emacs "$@" | ||||
							
								
								
									
										51
									
								
								eth/sans-puppet-module-export.sh
									
										
									
									
									
										Executable file
									
								
							
							
						
						
									
										51
									
								
								eth/sans-puppet-module-export.sh
									
										
									
									
									
										Executable file
									
								
							|  | @ -0,0 +1,51 @@ | |||
| #!/bin/sh | ||||
| #  | ||||
| # 2008      Nico Schottelius (nico-nsbin at schottelius.org) | ||||
| #  | ||||
| # This file is part of nsbin. | ||||
| # | ||||
| # nsbin 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. | ||||
| #  | ||||
| # nsbin 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 nsbin. If not, see <http://www.gnu.org/licenses/>. | ||||
| # | ||||
| # Export an internal puppet module to an own git repo | ||||
| # Usage: $0 module desc pseudo-owner | ||||
| # | ||||
| 
 | ||||
| srcdir=/home/users/nico/ethz/vcs/puppet | ||||
| dstdir=/home/users/nico/p/puppet/ | ||||
| export module="$1"; shift | ||||
| export mdir="modules/${module}" | ||||
| 
 | ||||
| 
 | ||||
| mv "${srcdir}/${module}" "${dstdir}" | ||||
| 
 | ||||
| ( cd "${srcdir} && git rm -r "${mdir}" && git c -m "-- ${mdir}" "${mdir} ) | ||||
| 
 | ||||
| # allow display via gitweb | ||||
| touch "${GIT_DIR}/git-daemon-export-ok" | ||||
| 
 | ||||
| # add description | ||||
| echo "${desc}" > "${GIT_DIR}/description" | ||||
| 
 | ||||
| # make sure group rights are kept | ||||
| cat << eof > "${GIT_DIR}/config" | ||||
| [core] | ||||
|         filemode = true | ||||
|         bare = true | ||||
|         sharedRepository = group | ||||
| [gitweb] | ||||
|         owner = "${powner:-"sans"}" | ||||
| eof | ||||
| 
 | ||||
| chgrp sans -R "${GIT_DIR}" | ||||
| chmod g+rw -R "${GIT_DIR}" | ||||
							
								
								
									
										104
									
								
								firewall-masq
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										104
									
								
								firewall-masq
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,104 @@ | |||
| ################################################################################ | ||||
| # LINUX FIREWALL | ||||
| # Nico Schottelius <Nico@Schottelius.Org> | ||||
| # Dec 2001 | ||||
| ################################################################################ | ||||
| 
 | ||||
| ########## TEST #### #DEV_OUT="eth1" | ||||
| DEV_OUT="eth0" | ||||
| DEV_INT="eth1" | ||||
| NET_INT="192.168.1.0/255.255.255.0" | ||||
| 
 | ||||
| # Das NAT-Modul laden (dies zieht all die andern mit). | ||||
| modprobe iptable_nat | ||||
| 
 | ||||
| # erstmal aufraeumen: | ||||
| # benutzerdefinierte chains von filter loeschen | ||||
| iptables -X | ||||
| 
 | ||||
| # filter aufraeumen. loescht alle chains | ||||
| iptables -F | ||||
| 
 | ||||
| # auch in nat | ||||
| iptables -t nat -F | ||||
| 
 | ||||
| 
 | ||||
| ################## | ||||
| # | ||||
| # NAT/Masquarading | ||||
| #  | ||||
| 
 | ||||
| # In der NAT-Tabelle (-t nat) eine Regel fuer alle an ppp0 (-o ppp0) | ||||
| # ausgehenden Pakete hinter dem Routing (POSTROUTING), die maskiert | ||||
| # werden sollen, anhaengen (-A). | ||||
| iptables -t nat -A POSTROUTING -o $DEV_OUT  -j MASQUERADE | ||||
| 
 | ||||
| # IP-Forwarding aktivieren | ||||
| echo 1 > /proc/sys/net/ipv4/ip_forward | ||||
| 
 | ||||
| # auch dynamische Adresse | ||||
| echo "1" > /proc/sys/net/ipv4/ip_dynaddr | ||||
| 
 | ||||
| ################# | ||||
| # | ||||
| # INPUT Pakete an diesen Rechner | ||||
| # | ||||
| 
 | ||||
| # von intranet alles erlauben | ||||
| iptables -A INPUT -s $NET_INT -j ACCEPT | ||||
| 
 | ||||
| # erlaube SSH von ueberall (auch inet) | ||||
| iptables -A INPUT -p tcp --dport ssh -j ACCEPT | ||||
| 
 | ||||
| # civ | ||||
| iptables -A INPUT -p tcp --dport 5555 -j ACCEPT | ||||
| 
 | ||||
| # UDP Pakete aus lokalem Netz passieren lassen | ||||
| # iptables -A INPUT -p udp -s $NET_INT -j ACCEPT | ||||
| 
 | ||||
| # UDP-Pakete von Name-Servern durchlassen | ||||
| iptables -A INPUT -p udp --sport 53 -j ACCEPT | ||||
| 
 | ||||
| # ICMP-Pakete (z.B. Ping) aus lokalem Netz erlauben | ||||
| iptables -A INPUT -p icmp -s $NET_INT -j ACCEPT | ||||
| 
 | ||||
| # ICMP-Pakete (z.B. Ping) generell verbieten | ||||
| #iptables -A INPUT -p icmp -j DROP | ||||
| 
 | ||||
| # lokale arbeit zulassen (loopback) | ||||
| iptables -A INPUT -i lo -j ACCEPT | ||||
| 
 | ||||
| # sonst nur packete aus vorhandenen verbindungen | ||||
| iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT | ||||
| 
 | ||||
| # Policy (Standardverhalten am Regelende): Paket verwerfen | ||||
| iptables -P INPUT DROP | ||||
| 
 | ||||
| ############### | ||||
| # | ||||
| # FORWARD Geroutete Packete | ||||
| #  | ||||
| 
 | ||||
| # Policy (Standardverhalten am Regelende): Paket verwerfen | ||||
| iptables -P FORWARD DROP | ||||
| 
 | ||||
| # Pakete aus lokalem Netz erlauben und routen | ||||
| iptables -A FORWARD -s $NET_INT -j ACCEPT | ||||
| 
 | ||||
| # man koennte es auch nur auf ftp beschraenken:  | ||||
| ##iptables -A FORWARD -o $DEV_OUT -p tcp --sport 1024:65535 --dport ftp -m state --state NEW -j ACCEPT | ||||
| 
 | ||||
| # zu routende Pakete nur durchlassen, wenn von innen oder zu einer | ||||
| # bestehenden Verbindung gehörig | ||||
| # | ||||
| iptables -A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT | ||||
| 
 | ||||
| 
 | ||||
| ################## | ||||
| # | ||||
| # OUTPUI von uns (lokal) | ||||
| # | ||||
| 
 | ||||
| # Policy (Standardverhalten am Regelende): Paket durchlassen | ||||
| iptables -P OUTPUT ACCEPT | ||||
| 
 | ||||
							
								
								
									
										6
									
								
								fix_broken_2.5er
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										6
									
								
								fix_broken_2.5er
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,6 @@ | |||
| #!/bin/sh | ||||
| 
 | ||||
| cd /lib/modules/"$1" | ||||
| 
 | ||||
| cp `find -name \*.ko` kernel | ||||
| ~nico/bin/mmv ko o | ||||
							
								
								
									
										21
									
								
								fsdb-web/show-pages.fsdb
									
										
									
									
									
										Executable file
									
								
							
							
						
						
									
										21
									
								
								fsdb-web/show-pages.fsdb
									
										
									
									
									
										Executable file
									
								
							|  | @ -0,0 +1,21 @@ | |||
| DB=/home/user/nico/DB/wddb/ | ||||
| HTMLDB=/home/user/nico/DB/wddb-html/ | ||||
| 
 | ||||
| 
 | ||||
| DATA_1=`echo $1 | sed 's/\.\.\///g'` | ||||
| echo $DATA_1 | ||||
| 
 | ||||
| CONTINENT=`echo $DATA_1 | awk -F"/" '{ print $1 }'` | ||||
| #CONTINENT=`echo $DATA_1 | sed 's/^\(.*\)\/.*/\1/g'` | ||||
| echo $CONTINENT | ||||
| 
 | ||||
| DATADIR=`echo $DATA_1 | sed 's/\(.*\)\/\(.*\)/\1/g'` | ||||
| HTML=`echo $DATA_1 | sed 's/\(.*\)\/\(.*\)/\2/g'` | ||||
| echo $DATADIR | ||||
| echo $HTML | ||||
| 
 | ||||
| if [ ! -d $DB/$CONTINENT ]; then | ||||
|    show_error | ||||
| fi | ||||
| 
 | ||||
| grep  | ||||
							
								
								
									
										224
									
								
								generate.rb
									
										
									
									
									
										Executable file
									
								
							
							
						
						
									
										224
									
								
								generate.rb
									
										
									
									
									
										Executable file
									
								
							|  | @ -0,0 +1,224 @@ | |||
| #!/usr/bin/env ruby | ||||
| 
 | ||||
| require 'misen/style-sgml' | ||||
| require 'misen/util' | ||||
| 
 | ||||
| require 'getoptlong' | ||||
| require 'fileutils' | ||||
| require 'digest/sha1' | ||||
| 
 | ||||
| @version  = '0.2' | ||||
| @verbose  = 0 | ||||
| @force    = false | ||||
| @outpath  = "#{Dir.pwd}/generated" | ||||
| @inpath   = "#{Dir.pwd}/source" | ||||
| @template = "#{Dir.pwd}/templates" | ||||
| @default  = 'default.html' | ||||
| 
 | ||||
| @datadir  = "#{Dir.pwd}/data" | ||||
| @filehash = Hash.new | ||||
| 
 | ||||
| def printMsg(prefix, msg, descriptor = $stdout) | ||||
|     descriptor.puts '%-12s %s' % [prefix + ':', msg] | ||||
| end | ||||
| 
 | ||||
| def panic(msg) | ||||
|     printMsg('PANIC', msg, $stderr) | ||||
|     Kernel.exit(-1) | ||||
| end | ||||
| 
 | ||||
| def error(msg) | ||||
|     printMsg('ERROR', msg, $stderr) | ||||
| end | ||||
| 
 | ||||
| def warn(msg) | ||||
|     printMsg('WARNING', msg) | ||||
| end | ||||
| 
 | ||||
| def info(msg) | ||||
|     printMsg('INFO', msg) | ||||
| end | ||||
| 
 | ||||
| def debug(msg, verbosity = 1) | ||||
|     if(@verbose >= verbosity) | ||||
|         printMsg("DEBUG(#{verbosity})", msg, $stderr) | ||||
|     end | ||||
| end | ||||
| 
 | ||||
| def generateMenu(dir, file = nil, level = 0) | ||||
|     debug("call generateMenu('#{dir}', '#{file}', #{level})") | ||||
|     template = '<ul<misen:class />> | ||||
|                     <misen:menuentries> | ||||
|                     <li><a href="<misen:url />"<misen:class />><misen:desc /></a><misen:menu /></li> | ||||
|                     </misen:menuentries> | ||||
|                 </ul>' | ||||
| 
 | ||||
|     dir = dir + '/' if(!dir.empty? && dir[-1].chr != '/') | ||||
|     menu = File.new("#{dir}menu.def").readlines | ||||
| 
 | ||||
|     data = Hash.new | ||||
|     menuentries = Array.new | ||||
| 
 | ||||
|     menu.each { |x| | ||||
|         entry = x.split(/\s*\|\s*/, 2) | ||||
|         e = Hash.new | ||||
|         e[:class] = (file && dir + entry[0] == file ? ' class="active"' : '') | ||||
|         if(file && dir + entry[0] == file) | ||||
|             e[:class] = data[:class] = ' class="active"' | ||||
|         end | ||||
|         e[:url]   = "/#{dir}#{entry[0]}" # TODO: make relative paths | ||||
|         e[:desc]  = entry[1].strip | ||||
|         if(FileTest.directory?("#{dir}#{entry[0]}") && FileTest.exists?("#{dir}#{entry[0]}/menu.def")) | ||||
|             e[:menu] = generateMenu("#{dir}#{entry[0]}", file, level + 1) | ||||
|         end | ||||
|         menuentries << e | ||||
|     } | ||||
| 
 | ||||
|     return '' if(menuentries.empty?) | ||||
| 
 | ||||
|     data[:menuentries] = menuentries | ||||
| 
 | ||||
|     return removeEmptyLine(Misen.expand_text(Misen::STYLE_SGML, template, data)) | ||||
| 
 | ||||
| end | ||||
| 
 | ||||
| def generateFiles(dir = '') | ||||
|     debug("call generateFiles('#{dir}')") | ||||
|     dir = dir + '/' if(!dir.empty? && dir[-1].chr != '/') | ||||
|     Dir.foreach(dir.empty? ? '.' : dir) { |x| | ||||
|         next if(x =~ /^(\.|\.\.)$/) | ||||
|          | ||||
|         if(x =~ /\.html$/) | ||||
|             if(!FileTest.exists?(@outpath + '/' + dir + x) || @filehash[dir + x] != Digest::SHA1.hexdigest(File.new(dir + x).read) || @force) | ||||
|                 info("Transforming #{dir}#{x}") | ||||
|                 data = {:style => getStylePath(dir) + 'style.css', :content => File.new("#{dir}#{x}").read, :menu => generateMenu('', dir + File.basename(x, '.html'))} | ||||
|                 Dir.mkdir("#{@outpath}/#{dir}") if(!FileTest.exists?("#{@outpath}/#{dir}")) | ||||
|                 File.open("#{@outpath}/#{dir}#{x}", "w") { |file| | ||||
|                     file.print removeEmptyLine(Misen.expand_text(Misen::STYLE_SGML_EX, @source, data)) | ||||
|                 } | ||||
|                 @filehash[dir + x] = Digest::SHA1.hexdigest(File.new(dir + x).read) | ||||
|             else | ||||
|                 info("Nothing to do for #{dir}#{x}") | ||||
|             end | ||||
|         elsif(FileTest.directory?(dir + x)) | ||||
|             begin | ||||
|                 Dir.mkdir("#{@outpath}/#{dir}#{x}") if(!FileTest.exists?("#{@outpath}/#{dir}#{x}")) | ||||
|             rescue | ||||
|                 panic("Could not create #{@outpath}/#{dir}#{x}: #{$!}") | ||||
|             end | ||||
|             generateFiles("#{dir}#{x}") | ||||
|         elsif(x !~ /(\.def|\.swp)$/) | ||||
|             if(!FileTest.exists?(@outpath + '/' + dir + x) || @filehash[dir + x] != Digest::SHA1.hexdigest(File.new(dir + x).read) || @force) | ||||
|                 info("Copying file #{dir}#{x}") | ||||
|                 FileUtils.cp(dir + x, @outpath + '/' + dir + x) | ||||
|                 @filehash[dir + x] = Digest::SHA1.hexdigest(File.new(dir + x).read) | ||||
|             else | ||||
|                 info("No need to copy #{dir}#{x}. Already latest.") | ||||
|             end | ||||
|         end | ||||
|     } | ||||
| end | ||||
| 
 | ||||
| def removeEmptyLine(str) | ||||
|     str.split($/).collect{ |x| x =~ /^\s*$/ ? nil : x}.compact.join($/) | ||||
| end | ||||
| 
 | ||||
| def getPath(path) | ||||
|     return path if(path[0].chr == '/') | ||||
|     return "#{Dir.pwd}/#{path}" | ||||
| end | ||||
| 
 | ||||
| def getStylePath(dir) | ||||
|     newdir = '' | ||||
| 
 | ||||
|     dir.split('/').each { | ||||
|         newdir += '../' | ||||
|     } | ||||
| 
 | ||||
|     return newdir | ||||
| end | ||||
| 
 | ||||
| def usage | ||||
|     info("Usage: #{File.basename(__FILE__)} [options]") | ||||
|     info('') | ||||
|     info('%20s    %s' % ['--verbose, -v',  'Verbose output. Add v for more verbose output']) | ||||
|     info('%20s    %s' % ['--inpath, -i',   'Specify where to search for input files [./source]']) | ||||
|     info('%20s    %s' % ['--outpath, -o',  'Specify where to write the output files [./generated]']) | ||||
|     info('%20s    %s' % ['--template, -t', 'Specify where to search for template files [./templates]']) | ||||
|     info('%20s    %s' % ['--default, -d',  'The default template name [default.html]']) | ||||
|     info('%20s    %s' % ['--force, -f',    'Force the new generating of all files [false]']) | ||||
|     info('%20s    %s' % ['--help, -h',     'Print this screen']) | ||||
|     info('%20s    %s' % ['--version, -V',  'Print the version and exit']) | ||||
| end | ||||
| 
 | ||||
| puts "This is #{File.basename(__FILE__)} v#{@version} 2005 by René Nussbaumer" | ||||
| puts  | ||||
| 
 | ||||
| opts = GetoptLong.new( | ||||
|     ['--verbose',  '-v', GetoptLong::OPTIONAL_ARGUMENT], | ||||
|     ['--inpath',   '-i', GetoptLong::REQUIRED_ARGUMENT], | ||||
|     ['--outpath',  '-o', GetoptLong::REQUIRED_ARGUMENT], | ||||
|     ['--template', '-t', GetoptLong::REQUIRED_ARGUMENT], | ||||
|     ['--default',  '-d', GetoptLong::REQUIRED_ARGUMENT], | ||||
|     ['--force',    '-f', GetoptLong::NO_ARGUMENT], | ||||
|     ['--help',     '-h', GetoptLong::NO_ARGUMENT], | ||||
|     ['--version',  '-V', GetoptLong::NO_ARGUMENT] | ||||
| ) | ||||
| 
 | ||||
| opts.each { |arg,value| | ||||
|     case arg | ||||
|     when '--verbose' | ||||
|         @verbose += 1 | ||||
|         value.each_byte { |x| | ||||
|             if(x.chr == 'v') | ||||
|                 @verbose += 1 | ||||
|             end | ||||
|         } | ||||
|         debug("Verbosity set to: #{@verbose}") | ||||
|     when '--inpath' | ||||
|         @inpath = getPath(value) | ||||
|     when '--outpath' | ||||
|         @outpath = getPath(value) | ||||
|     when '--template' | ||||
|         @template = getPath(value) | ||||
|     when '--default' | ||||
|         @default = value | ||||
|     when '--force' | ||||
|         @force = true | ||||
|     when '--help' | ||||
|         usage | ||||
|         Kernel.exit(0) | ||||
|     when '--version' | ||||
|         Kernel.exit(0) | ||||
|     else | ||||
|         warn("Unknown option #{arg}#{value && !value.empty? ? ('with value ' + value) : ''}") | ||||
|     end | ||||
| } | ||||
| 
 | ||||
| debug("Current configuration:") | ||||
| debug('%-10s %s' % ['Inpath:',   @inpath]) | ||||
| debug('%-10s %s' % ['Outpath:',  @outpath]) | ||||
| debug('%-10s %s' % ['Template:', @template]) | ||||
| debug('%-10s %s' % ['Default:',  @default]) | ||||
| 
 | ||||
| begin | ||||
|     Dir.mkdir(@inpath)   if(!FileTest.directory?(@inpath)) | ||||
|     Dir.mkdir(@outpath)  if(!FileTest.directory?(@outpath)) | ||||
|     Dir.mkdir(@template) if(!FileTest.directory?(@template)) | ||||
|     Dir.mkdir(@datadir)  if(!FileTest.directory?(@datadir)) | ||||
| rescue | ||||
|     panic("Could not create directory: #{$!}") | ||||
| end | ||||
| 
 | ||||
| panic("#{@template}/#{@default} does not exist! Please create at least the default template.") if(!FileTest.exists?("#{@template}/#{@default}")) | ||||
| 
 | ||||
| @source = File.new("#{@template}/#{@default}").read | ||||
| 
 | ||||
| Dir.chdir(@inpath) | ||||
| panic("Init directory needs a menu.def!") if(!FileTest.exists?('menu.def')) | ||||
| 
 | ||||
| @filehash = Marshal.load(File.new(@datadir + '/digest').read) if(FileTest.exists?(@datadir + '/digest')) | ||||
| generateFiles | ||||
| File.open(@datadir + '/digest', 'w') { |file| | ||||
|     file.print Marshal.dump(@filehash) | ||||
| } | ||||
							
								
								
									
										53
									
								
								geturl
									
										
									
									
									
										Executable file
									
								
							
							
						
						
									
										53
									
								
								geturl
									
										
									
									
									
										Executable file
									
								
							|  | @ -0,0 +1,53 @@ | |||
| #!/usr/bin/perl -w | ||||
| # | ||||
| # Simple utility to fetch an HTML page from a server | ||||
| # (Utility for TWiki Collaboration Platform, http://TWiki.org/) | ||||
| # | ||||
| # Copyright (C) 1999 Jon Udell, BYTE | ||||
| # Copyright (C) 2000-2003 Peter Thoeny, peter@thoeny.com | ||||
| # | ||||
| # For licensing info read license.txt file in the TWiki root. | ||||
| # 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 2 | ||||
| # 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, published at  | ||||
| # http://www.gnu.org/copyleft/gpl.html | ||||
| 
 | ||||
| use Socket; | ||||
| 
 | ||||
| if( ! $ARGV[1] ) { | ||||
|     print "Usage:    geturl <host> <path> [<port> [<header>]]\n"; | ||||
|     print "Example:  geturl some.domain /some/dir/file.html 80\n"; | ||||
|     print "will get: http://some.domain:80/some/dir/file.html\n"; | ||||
|     exit 1; | ||||
| } | ||||
| my $host   = $ARGV[0]; | ||||
| my $url    = $ARGV[1]; | ||||
| my $port   = $ARGV[2] || "80"; | ||||
| my $header = $ARGV[3] || "Host: $host"; | ||||
| print getUrl( $host, $port, $url, $header ); | ||||
| 
 | ||||
| # ========================= | ||||
| sub getUrl | ||||
| { | ||||
|     my ( $theHost, $thePort, $theUrl, $theHeader ) = @_; | ||||
|     my $result = ''; | ||||
|     my $req = "GET $theUrl HTTP/1.1\r\n$theHeader\r\n\r\n"; | ||||
|     my ( $iaddr, $paddr, $proto ); | ||||
|     $iaddr   = inet_aton( $theHost ); | ||||
|     $paddr   = sockaddr_in( $thePort, $iaddr ); | ||||
|     $proto   = getprotobyname( 'tcp' ); | ||||
|     socket( SOCK, PF_INET, SOCK_STREAM, $proto )  or die "socket: $!"; | ||||
|     connect( SOCK, $paddr ) or die "connect: $!"; | ||||
|     select SOCK; $| = 1; | ||||
|     print SOCK $req; | ||||
|     while( <SOCK> ) { $result .= $_; } | ||||
|     close( SOCK )  or die "close: $!"; | ||||
|     select STDOUT; | ||||
|     return $result; | ||||
| } | ||||
							
								
								
									
										15
									
								
								git-mv.sh
									
										
									
									
									
										Executable file
									
								
							
							
						
						
									
										15
									
								
								git-mv.sh
									
										
									
									
									
										Executable file
									
								
							|  | @ -0,0 +1,15 @@ | |||
| DIR="$1" | ||||
| DEST="$2" | ||||
| hier="/home/server/git/$DIR/" | ||||
| there="git.schottelius.org:/home/server/git/$DEST" | ||||
| 
 | ||||
| echo "$hier to $there?" | ||||
| read bar | ||||
| 
 | ||||
| 
 | ||||
| rsync -av "$hier" "$there" | ||||
|     | ||||
| 
 | ||||
| echo "ok?" | ||||
| read foo | ||||
| echo rm -rf "$hier" | ||||
							
								
								
									
										33
									
								
								gpm
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										33
									
								
								gpm
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,33 @@ | |||
| #! /bin/sh | ||||
| # Copyright (c) 1995-1998 S.u.S.E. GmbH Fuerth, Germany. | ||||
| # | ||||
| # Author:  | ||||
| # | ||||
| # /sbin/init.d/gpm | ||||
| # | ||||
| #   and symbolic its link | ||||
| # | ||||
| # /sbin/rcgpm | ||||
| # | ||||
| ### BEGIN INIT INFO | ||||
| 
 | ||||
| case "$1" in | ||||
|     start) | ||||
| 	gpm -m /dev/misc/psaux -t ps2 | ||||
| 	;; | ||||
|     stop) | ||||
| 	killall -TERM gpm | ||||
| 	;; | ||||
|     restart|reload) | ||||
| 	$0 stop  &&  $0 start | ||||
| 	;; | ||||
|     status) | ||||
| 	echo -n "Checking for console mouse support (gpm): " | ||||
| 	checkproc /usr/sbin/gpm && echo OK || echo No process | ||||
| 	;; | ||||
|     *) | ||||
| 	echo "Usage: $0 {start|stop|status|restart|reload}" | ||||
| 	exit 1 | ||||
| 	;; | ||||
| esac | ||||
| rc_exit | ||||
							
								
								
									
										2
									
								
								gta.sh
									
										
									
									
									
										Executable file
									
								
							
							
						
						
									
										2
									
								
								gta.sh
									
										
									
									
									
										Executable file
									
								
							|  | @ -0,0 +1,2 @@ | |||
| #!/bin/sh | ||||
| wine  ~/.wine/drive_c/Program\ Files\ \(x86\)/Rockstar\ Games/Grand\ Theft\ Auto/WINO/Grand\ Theft\ Auto.exe | ||||
							
								
								
									
										44
									
								
								historic_interest_only/backup-script
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										44
									
								
								historic_interest_only/backup-script
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,44 @@ | |||
| #!/bin/sh | ||||
| #  | ||||
| # 2003-2015 Nico Schottelius (nico-nsbin at schottelius.org) | ||||
| #  | ||||
| # This file is part of nsbin. | ||||
| # | ||||
| # nsbin 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. | ||||
| #  | ||||
| # nsbin 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 nsbin. If not, see <http://www.gnu.org/licenses/>. | ||||
| # | ||||
| #  | ||||
| # Copy / to some other place  | ||||
| #  | ||||
| 
 | ||||
| HOST=fs2 | ||||
| NEWROOT=/mnt/data/spezial/edv/backup/nico | ||||
| DATA_DIRS="bin boot etc home lib opt root sbin tmp usr var" | ||||
| #SCRIPTS="/root/scripts/to_eiche" | ||||
| 
 | ||||
| # display how long we backup | ||||
| #for script in $SCRIPTS; do | ||||
| #	$script | ||||
| #done | ||||
| 
 | ||||
| # create empty dirs | ||||
| #ssh $HOST "mkdir -p $NEWROOT/dev $NEWROOT/proc $NEWROOT/mnt ; for a in /mnt/*; do mkdir -p $NEWROOT/$a; done" | ||||
| 
 | ||||
| #date | ||||
| 
 | ||||
| cd / | ||||
| # wdt-old | ||||
| #ssh $HOST "mkdir -p $NEWROOT/`date +%d-%b-%Y`" | ||||
| #tar cf - $DATA_DIRS | ssh $HOST "( cd $NEWROOT/`date +%d-%b-%Y`; tar xf - )" | ||||
| 
 | ||||
| time tar cf - $DATA_DIRS | ssh $HOST "gzip -c > $NEWROOT/`date +%d-%b-%Y`.tar.gz " | ||||
							
								
								
									
										405
									
								
								historic_interest_only/communicator
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										405
									
								
								historic_interest_only/communicator
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,405 @@ | |||
| #!/bin/bash | ||||
| # | ||||
| # This small shell script is the starter for the | ||||
| # Netscape Communicator. | ||||
| # | ||||
| # SuSE, 1996-2000 | ||||
| # | ||||
| 
 | ||||
| trap "echo" 31 | ||||
| 
 | ||||
| prog="" | ||||
| if [ -x /opt/netscape/netscape ] ; then | ||||
| 	prog="/opt/netscape/netscape" | ||||
| else | ||||
| 	prog="$prog $(type -p netscape)" | ||||
| 	prog="$prog $(type -p Mosaic)" | ||||
| 	prog="$prog $(type -p mosaic)" | ||||
| 	prog="$prog $(type -p arena)" | ||||
| 	prog="$prog $(type -p amaya)" | ||||
| fi | ||||
| 
 | ||||
| preloader () | ||||
| { | ||||
|     # | ||||
|     # See which binary type we have: libc6 or libc5. | ||||
|     # | ||||
|     lddout="$(ldd $1 2>/dev/null)" | ||||
|     nspipepatch=libnspipepatch.so.0.0	 | ||||
|     while read line; do | ||||
| 	case "$line" in | ||||
| 	    libc.so.5*) lib=libc5  ;; | ||||
| 	    libBrokenLocale.so.*) | ||||
| 			lib=libc6n ;; | ||||
| 	    libc.so.6*) lib=libc6o ;; | ||||
| 	    libXext.so.6*) | ||||
| 		set -- $line | ||||
| 		case "$(find $3 -printf '%l\n')" in | ||||
| 		    libXext.so.6.[0-3])  nspipepatch=libnspipepatch.so.0.0 ;; | ||||
| 		    *)			 nspipepatch=libnspipepatch.so.0.1 ;; | ||||
| 		esac | ||||
| 		;; | ||||
| 	esac | ||||
|     done < <(exec echo "$lddout") | ||||
| 
 | ||||
|     # | ||||
|     # For libc5 programs this should be preloaded | ||||
|     # | ||||
|     if test -e /usr/i486-linux-libc5/lib/libgnumalloc.so.5 ; then | ||||
| 	LIBGNUMALLOC=/usr/i486-linux-libc5/lib/libgnumalloc.so.5 | ||||
|     else | ||||
| 	LIBGNUMALLOC=/usr/lib/libgnumalloc.so.5 | ||||
|     fi | ||||
|     if test $lib = libc5 -a -e $LIBGNUMALLOC ; then | ||||
| 	if test -n "$LD_PRELOAD" ; then | ||||
| 	    LD_PRELOAD="$LIBGNUMALLOC $LD_PRELOAD" | ||||
| 	else | ||||
| 	    LD_PRELOAD="$LIBGNUMALLOC" | ||||
| 	fi | ||||
| 	export LD_PRELOAD | ||||
|     fi | ||||
| 
 | ||||
|     # | ||||
|     # For libc6 only based systems | ||||
|     # | ||||
|     if test $lib = libc6o -a -e /lib/libBrokenLocale.so.1 ; then | ||||
| 	# | ||||
| 	# This glibc based netscape isn't linked against libBrokenLocale | ||||
| 	# | ||||
| 	if test -n "$LD_PRELOAD" ; then | ||||
| 	    LD_PRELOAD="/lib/libBrokenLocale.so.1 $LD_PRELOAD" | ||||
| 	else | ||||
| 	    LD_PRELOAD="/lib/libBrokenLocale.so.1" | ||||
| 	fi | ||||
| 	export LD_PRELOAD | ||||
|     fi | ||||
| 
 | ||||
|     if test -e $MOZILLA_HOME/$nspipepatch ; then | ||||
| 	NSFIX_LIB=/lib/libc.so.6 | ||||
|         test $lib = "libc5" && NSFIX_LIB=/lib/libc.so.5 | ||||
| 	export NSFIX_LIB | ||||
| 	if test -n "$LD_PRELOAD" ; then | ||||
| 	    LD_PRELOAD="$MOZILLA_HOME/$nspipepatch $LD_PRELOAD" | ||||
| 	else | ||||
| 	    LD_PRELOAD="$MOZILLA_HOME/$nspipepatch" | ||||
| 	fi | ||||
| 	export LD_PRELOAD | ||||
|     fi | ||||
| } | ||||
| 
 | ||||
| # | ||||
| for p in $prog ; do | ||||
| 	case "${p##*/}" in | ||||
| 	netscape*) | ||||
| 		# Switch from alarm(2) to select(2) in | ||||
| 		# netscape's thread handling | ||||
| 		# NSPR_NOCLOCK=1; export NSPR_NOCLOCK | ||||
| 		# | ||||
| 		lang="${LANG%[_@]*}" | ||||
| 		if test ${#lang} -gt 2 -a -r /usr/share/locale/locale.alias ;then | ||||
| 			while read alias real ; do | ||||
| 				case "$alias" in | ||||
| 					\#*|"") ;; | ||||
| 					*)  if test "${lang}" = "${alias%[_@]*}" ; then | ||||
| 						LANG=${real} | ||||
| 						break | ||||
| 					    fi  ;; | ||||
| 				esac | ||||
| 			done < <(exec grep -vE '^#|^$' /usr/share/locale/locale.alias) | ||||
| 		fi | ||||
| 		# | ||||
| 		# Multi-Language is buggy in netscape | ||||
| 		# | ||||
| 		test -z "$LANG" && LANG=POSIX | ||||
| 		export LANG | ||||
| 		enable -n printf >/dev/null 2>&1 | ||||
| 		if test "`printf "%1.1f" 1 2>/dev/null`" != "1.0" ; then | ||||
| 			LC_NUMERIC=POSIX | ||||
| 			export LC_NUMERIC | ||||
| 		fi | ||||
| 		if test "`printf "%1.1f" 1 2>/dev/null`" != "1.0" ; then | ||||
| 			LC_COLLATE=$LANG | ||||
| 			LC_CTYPE=$LANG | ||||
| 			LC_MONETARY=$LANG | ||||
| 			LC_MESSAGES=$LANG | ||||
| 			LC_TIME=$LANG | ||||
| 			LC_ALL="" | ||||
| 			export LC_COLLATE LC_CTYPE LC_MONETARY LC_MESSAGES LC_TIME LC_ALL | ||||
| 		fi | ||||
| 		# | ||||
| 		# Find Mozillas home | ||||
| 		# | ||||
| 		for d in /opt/netscape     /usr/local/netscape     \ | ||||
| 			 /usr/lib/netscape /usr/local/lib/netscape \ | ||||
| 			 /usr/netscape | ||||
| 		do | ||||
| 			if test -d $d ; then | ||||
| 				MOZILLA_HOME=$d | ||||
| 				d=$d/app-defaults | ||||
| 				XFILESEARCHPATH=%D:$d/%L/%N:$d/%l_%t/%N:$d/%l/%N:$d/%N | ||||
| 				unset d | ||||
| 				break | ||||
| 			fi | ||||
| 		done | ||||
| 		test -n "$MOZILLA_HOME"     && export MOZILLA_HOME | ||||
| 		test -n "$XFILESEARCHPATH"  && export XFILESEARCHPATH | ||||
| 		if test -s "$MOZILLA_HOME/registry" ; then | ||||
| 			MOZILLA_SHARED_REGISTRY=$MOZILLA_HOME/registry | ||||
| 			export MOZILLA_SHARED_REGISTRY | ||||
| 		fi | ||||
| 		# | ||||
| 		# netscape should find it's movemail and nethelp | ||||
| 		# | ||||
| 		PATH=$MOZILLA_HOME:$PATH | ||||
| 		export PATH | ||||
| 		# | ||||
| 		# Motif-Datenbank der Tastensymbole | ||||
| 		# | ||||
| 		if [ ! -r /usr/X11R6/lib/X11/XKeysymDB ] ; then | ||||
| 			XKEYSYMDB=${MOZILLA_HOME}/XKeysymDB | ||||
| 			export XKEYSYMDB | ||||
| 		fi | ||||
| 		# | ||||
| 		# Time zone | ||||
| 		# | ||||
| 		TZ=:/etc/localtime | ||||
| 		export TZ | ||||
| 		# | ||||
| 		# Disable X Color Management System | ||||
| 		# | ||||
| 		XCMSDB=/dev/null | ||||
| 		export XCMSDB | ||||
| 		# | ||||
| 		# Workaround for XFree Bug (< XFree86[tm]-4.0) ?? | ||||
| 		# | ||||
| 		MOZILLA_LINUX_INSERT_LINK_FIX=1 | ||||
| 		export MOZILLA_LINUX_INSERT_LINK_FIX | ||||
| 		# | ||||
| 		# Who needs this? | ||||
| 		# | ||||
| 		test -z "$DISPLAY" && DISPLAY=:0 | ||||
| 		display=$DISPLAY | ||||
| 		for o in ${1+"$@"} ; do | ||||
| 			if test "$o" = -display; then | ||||
| 				display="" | ||||
| 				continue | ||||
| 			fi | ||||
| 			test -z "$display" && display="$o" | ||||
| 		done | ||||
| 		export DISPLAY display | ||||
| 		# | ||||
| 		# Acrobat plugin | ||||
| 		# | ||||
| 		adir="" | ||||
| 		for d in /usr/lib/Acrobat[1-9]		\ | ||||
| 			 /usr/X11R6/lib/Acrobat[1-9]	\ | ||||
| 			 /usr/Acrobat[1-9]		\ | ||||
| 			 /usr/local/Acrobat[1-9]	\ | ||||
| 			 /opt/Acrobat[1-9] | ||||
| 		do | ||||
| 			test -d $d && { adir=$d/Browsers/intellinux; break; } | ||||
| 		done | ||||
| 		if test -n "$adir" -a -d "$adir" ; then | ||||
| 			adir=$HOME/.netscape/plugins:$adir:$MOZILLA_HOME/plugins | ||||
| 			if test -n "$NPX_PLUGIN_PATH" ; then | ||||
| 				NPX_PLUGIN_PATH=$adir:$NPX_PLUGIN_PATH | ||||
| 			else | ||||
| 				NPX_PLUGIN_PATH=$adir | ||||
| 			fi | ||||
| 			export NPX_PLUGIN_PATH | ||||
| 		fi | ||||
| 		# | ||||
| 		# Class path | ||||
| 		# | ||||
| 		for d in $HOME/.netscape/java/classes	\ | ||||
| 			 $HOME/.netscape/java/download	\ | ||||
| 			 $HOME/.netscape/java		\ | ||||
| 			 $HOME/.netscape/plugins	\ | ||||
| 			 $HOME/.netscape | ||||
| 		do | ||||
| 			test -d $d || continue | ||||
| 			if test -n "$CLASSPATH" ; then | ||||
| 				CLASSPATH=$CLASSPATH:$d | ||||
| 			else | ||||
| 				CLASSPATH=$d | ||||
| 			fi | ||||
| 		done | ||||
| 		if test -n "$CLASSPATH" ; then | ||||
| 			jars="" | ||||
| 			rest="" | ||||
| 			for j in $MOZILLA_HOME/java/classes/*.jar	\ | ||||
| 				 $MOZILLA_HOME/plugins/*.jar | ||||
| 			do | ||||
| 				case "$j" in | ||||
| 					*/java[0-9]*.jar) jars=$j	;; | ||||
| 					*/*.jar)	  rest=$rest:$j	;; | ||||
| 				esac | ||||
| 			done | ||||
| 			CLASSPATH=$MOZILLA_HOME/java/classes:$CLASSPATH | ||||
| 			CLASSPATH=$MOZILLA_HOME/plugins:$CLASSPATH | ||||
| 			CLASSPATH=$jars$rest:$CLASSPATH | ||||
| 			export CLASSPATH | ||||
| 		fi | ||||
| 
 | ||||
| 		# | ||||
| 		# Real Player | ||||
| 		# | ||||
| 		rdir="" | ||||
| 		for d in /opt/{rv,rvplayer,rvplayer?.?}		\ | ||||
| 			 /usr/lib/{rv,rvplayer,rvplayer?.?}	\ | ||||
| 			 /usr/local/{rv,rvplayer,rvplayer?.?}	\ | ||||
| 			 /usr/local/lib/{rv,rvplayer,rvplayer?.?} | ||||
| 		do | ||||
| 			if test -d $d ; then | ||||
| 				rdir=$d | ||||
| 				break | ||||
| 			fi | ||||
| 		done | ||||
| 		if test -n "$rdir" ; then | ||||
| 			if test -n "$LD_LIBRARY_PATH" ; then | ||||
| 				LD_LIBRARY_PATH=$rdir:$LD_LIBRARY_PATH | ||||
| 			else | ||||
| 				LD_LIBRARY_PATH=$rdir | ||||
| 			fi | ||||
| 			export LD_LIBRARY_PATH | ||||
| 		fi | ||||
| 		# | ||||
| 		# General expansion of Java, Plugins, and shared libraries | ||||
| 		# | ||||
| 		OIFS="$IFS" | ||||
| 		IFS=': ,' | ||||
| 		for d in ${MOZILLA_ADDONS:-""} | ||||
| 		do | ||||
| 			test -d "$d" || continue | ||||
| 			if test -r "$d/mozilla.rc" ; then | ||||
| 				# Hopefully they do not chrash this | ||||
| 				# script or Netscape its self | ||||
| 				. "$d/mozilla.rc" | ||||
| 			else | ||||
| 				if test -d "$d/plugins/" ; then | ||||
| 					if test -n "$NPX_PLUGIN_PATH" ; then | ||||
| 						NPX_PLUGIN_PATH=$d/plugins:$NPX_PLUGIN_PATH | ||||
| 					else | ||||
| 						NPX_PLUGIN_PATH=$d/plugins | ||||
| 					fi | ||||
| 					export NPX_PLUGIN_PATH | ||||
| 				fi | ||||
| 				if test -d "$d/classes/" ; then | ||||
| 					jars= | ||||
| 					for j in $d/classes/*.jar ; do | ||||
| 						test -r "$j" || continue | ||||
| 						jars=$jars:$j | ||||
| 					done | ||||
| 					if test -n "$CLASSPATH" ; then | ||||
| 						CLASSPATH=${CLASSPATH}$jars | ||||
| 					else | ||||
| 						CLASSPATH=$MOZILLA_HOME/java/classes$jars | ||||
| 					fi | ||||
| 					export CLASSPATH | ||||
| 				fi | ||||
| 				if test -d "$d/lib/" ; then | ||||
| 					if test -n "$LD_LIBRARY_PATH" ; then | ||||
| 						LD_LIBRARY_PATH=$d/lib:$LD_LIBRARY_PATH | ||||
| 					else | ||||
| 						LD_LIBRARY_PATH=$d/lib | ||||
| 					fi | ||||
| 					export LD_LIBRARY_PATH | ||||
| 				fi | ||||
| 				test -d "$d/bin/" && PATH=$d/bin:$PATH | ||||
| 			fi | ||||
| 		done | ||||
| 		IFS="$OIFS" | ||||
| 		# | ||||
| 		# Security | ||||
| 		# | ||||
| 		HN=$HOME/.netscape | ||||
| 		if [ ! -d $HN ] ; then | ||||
| 			mkdir -m 0700 $HN | ||||
| 			mkdir -m 0700 $HN/cache | ||||
| 			mkdir -m 0700 $HN/archive | ||||
| 		fi | ||||
| 		if [ ! -e $HN/preferences.js ] ; then | ||||
| 			default='HP="http://www.suse.de/"' | ||||
| 			/sbin/pidof httpd > /dev/null 2>&1 && default='HP="http://localhost/"' | ||||
| 			umask 077 | ||||
| 			set -f | ||||
| 			cat > $HN/preferences.js <<-EOF | ||||
| 				// Netscape User Preferences | ||||
| 				// This is a generated file!  Do not edit. | ||||
| 
 | ||||
| 				user_pref("browser.cache.disk_cache_size", 7680); | ||||
| 				user_pref("browser.cache.memory_cache_size", 1024); | ||||
| 				user_pref("browser.enable_style_sheets", false); | ||||
| 				user_pref("browser.fe_java_xt_app_timeout", 1); | ||||
| 				user_pref("browser.startup.homepage", $default); | ||||
| 				user_pref("browser.startup.homepage_override", false); | ||||
| 				user_pref("editor.dont_lock_spell_files", true); | ||||
| 				user_pref("helpers.global_mailcap_file", "/etc/mailcap"); | ||||
| 				user_pref("helpers.global_mime_types_file", "/etc/mime.types"); | ||||
| 				user_pref("java.applets.stop_on_iconify", true); | ||||
| 				user_pref("javascript.allow.mailnews", false); | ||||
| 				user_pref("javascript.enabled", false); | ||||
| 				user_pref("ldap_2.servers.pab.locale", "C"); | ||||
| 				user_pref("li.client.javasecurity", true); | ||||
| 				user_pref("mail.default_html_action", 1); | ||||
| 				user_pref("mail.html_compose", false); | ||||
| 				user_pref("mail.quoted_style", 0); | ||||
| 				user_pref("mail.strictly_mime", true); | ||||
| 				user_pref("network.dnsAttempt", 30); | ||||
| 				user_pref("network.dnsCacheExpiration", 5000); | ||||
| 				user_pref("network.dnsTimout", 30); | ||||
| 				user_pref("network.max_connections", 8); | ||||
| 				user_pref("network.tcpbufsize", 256); | ||||
| 				user_pref("network.tcptimeout", 10); | ||||
| 				user_pref("network.use_async_dns", false); | ||||
| 				user_pref("offline.startup_mode", 1); | ||||
| 				user_pref("security.enable_java", false); | ||||
| 			EOF | ||||
| 			set +f | ||||
| 		fi | ||||
| 		if [ -n "$SECURE_NETSCAPE" -a "$SECURE_NETSCAPE" = "yes" ]; then | ||||
| 			test -L $HN/cookies || rm -rf $HN/cookies | ||||
| 			test -e $HN/cookies || ln -sf /dev/null $HN/cookies | ||||
| 		else | ||||
| 			test -L $HN/cookies && rm -rf $HN/cookies | ||||
| 			touch $HN/cookies | ||||
| 		fi | ||||
| 		chmod -f -R go-rxw $HN & | ||||
| 		# | ||||
| 		# Avoid crash and freezes | ||||
| 		# | ||||
| 		test -e $HN/cert7.db -a ! -s $HN/cert7.db && rm -f $HN/cert7.db | ||||
| 		test -e $HN/pab.na2  -a ! -s $HN/pab.na2  && rm -f $HN/pab.na2 | ||||
| 		ln -sf history.dat $HN/history.db | ||||
| 		: ${TMPDIR=/tmp/${USER}-netscape} | ||||
| 		test -d $TMPDIR || { mkdir -m 0700 $TMPDIR || exit 1; } | ||||
| 		export TMPDIR | ||||
| 
 | ||||
| 		# | ||||
| 		# Try to make malloc safety | ||||
| 		# | ||||
| 		MALLOC_CHECK_=4; export MALLOC_CHECK_ | ||||
| 
 | ||||
| 		# | ||||
| 		# Start | ||||
| 		# | ||||
| 		dd if=$p of=/dev/null bs=8k conv=sync > /dev/null 2>&1 | ||||
| 		preloader $p | ||||
| 		arg0="" | ||||
| 		test -n "$BASH_VERSINFO" && arg0="-a $p" | ||||
| 		exec $arg0 $p ${1+"$@"} | ||||
| 		;; | ||||
| 	*) | ||||
| 		for param in $@ ; do | ||||
| 			if test "$param" = "-remote" ; then | ||||
| 				echo "Parameter \"-remote\" not supported. Exit." 1>&2 | ||||
| 				exit 1 | ||||
| 			fi | ||||
| 		done | ||||
| 		preloader $p | ||||
| 		exec $p ${1+"$@"} | ||||
| 	esac | ||||
| done | ||||
| 
 | ||||
| echo "$0: No WWW browser found in PATH" 1>&2 | ||||
| exit 1 | ||||
							
								
								
									
										5
									
								
								historic_interest_only/console_video
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										5
									
								
								historic_interest_only/console_video
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,5 @@ | |||
| 
 | ||||
| ~/scripts/enab_fbdev | ||||
| ~/scripts/enab_sound | ||||
| setterm -blank 0 | ||||
| mplayer -vo fbdev /mnt/dvd/* "$@" | ||||
							
								
								
									
										47
									
								
								historic_interest_only/devfs
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										47
									
								
								historic_interest_only/devfs
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,47 @@ | |||
| #!/bin/sh | ||||
| #  | ||||
| # Author: Nico Schottelius <nico AT schottelius DOT org> | ||||
| # Date: 6th of May 2k+1 | ||||
| # Last Changed: 18th of May 2k+1 | ||||
| # Comment: Support for devfs | ||||
| # | ||||
| 
 | ||||
| . /etc/sys/combined | ||||
| . /etc/sys/boot/devfs | ||||
| 
 | ||||
| test `basename $0` = devfs && START_DEVFS="yes" | ||||
| test "$START_DEVFS" = yes || exit 0 | ||||
| 
 | ||||
| CHECK_DEVFS=`cat /proc/mounts | grep devfs | awk '{ print $1 }'` | ||||
| 
 | ||||
| # Check whether devfs is mounted | ||||
| if [ -z "$CHECK_DEVFS ]; then | ||||
|   $SYS_ECHO $FAIL $NO_DEVFS_THERE | ||||
|   exit 1 | ||||
| fi | ||||
| 
 | ||||
| case "$1" in | ||||
|     start)	$SYS_ECHO "$START $DEVFS_TEXT" | ||||
| 		 | ||||
| 		startproc /usr/sbin/named -u $NAMED_USER -g $NAMED_GROUP \ | ||||
| 		|| ( $SYS_ECHO "$FAIL" ; exit 1) | ||||
| 		$SYS_ECHO $DONE | ||||
| 		;; | ||||
|     stop)	$SYS_ECHO -n "$STOP $NAMED_TEXT " | ||||
|     		killproc -TERM /usr/sbin/named || ( $SYS_ECHO "$FAIL" ; exit 1) | ||||
| 		$SYS_ECHO $DONE | ||||
| 		;; | ||||
|     restart) | ||||
| 		$0 stop && $0 start | ||||
| 		;; | ||||
|     reload)   	$SYS_ECHO -n "$RELOAD $NAMED_TEXT " | ||||
|               	killproc -HUP /usr/sbin/named || ( $SYS_ECHO "$FAIL" ; exit 1) | ||||
| 		$SYS_ECHO $DONE | ||||
|               	;; | ||||
|     status)	checkproc /usr/sbin/named && $SYS_ECHO $OK || $SYS_ECHO $NOP | ||||
|     		;; | ||||
|     *)		$SYS_ECHO  "$USAGE $0 {start|stop|restart|reload|status}" | ||||
| 		exit 1 | ||||
| esac | ||||
| 
 | ||||
| exit 0 | ||||
							
								
								
									
										1
									
								
								historic_interest_only/fbset-1024
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										1
									
								
								historic_interest_only/fbset-1024
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1 @@ | |||
| fbset -fb /dev/fb/0 -xres 1024 -yres 768 | ||||
							
								
								
									
										4
									
								
								historic_interest_only/mksound
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										4
									
								
								historic_interest_only/mksound
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,4 @@ | |||
| modprobe sound | ||||
| ln -s /dev/sound/dsp /dev/dsp | ||||
| ln -s /dev/sound/mixer /dev/mixer | ||||
| ln -s /dev/sound/mixer1 /dev/mixer1 | ||||
							
								
								
									
										8
									
								
								historic_interest_only/modem_connect
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										8
									
								
								historic_interest_only/modem_connect
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,8 @@ | |||
| modprobe ppp_generic | ||||
| modprobe ppp_async | ||||
| modprobe ppp_deflate | ||||
| modprobe ppp_synctty | ||||
| modprobe 8250 #serial 2.5 | ||||
| modprobe serial #serial 2.4 | ||||
| modprobe bsd_comp | ||||
| pppd user arcor | ||||
							
								
								
									
										4
									
								
								historic_interest_only/mousepad-tuning
									
										
									
									
									
										Executable file
									
								
							
							
						
						
									
										4
									
								
								historic_interest_only/mousepad-tuning
									
										
									
									
									
										Executable file
									
								
							|  | @ -0,0 +1,4 @@ | |||
| #!/bin/sh | ||||
| 
 | ||||
| xinput --set-prop bcm5974 "Trackpad Sensitivity" 0.3 | ||||
| 
 | ||||
|  | @ -1,7 +1,9 @@ | |||
| #!/bin/sh | ||||
| 
 | ||||
| securemail | ||||
| fetchmail | ||||
| # Tue Jul 18 15:13:45 CEST 2017 | ||||
| #securemail | ||||
| #fetchmail | ||||
| mbsync -a | ||||
| 
 | ||||
| # Disabled by Mon Jun 20 10:56:19 CEST 2016 -- using mu now | ||||
| # notmuch new | ||||
|  |  | |||
							
								
								
									
										5
									
								
								hole_mails2
									
										
									
									
									
										Executable file
									
								
							
							
						
						
									
										5
									
								
								hole_mails2
									
										
									
									
									
										Executable file
									
								
							|  | @ -0,0 +1,5 @@ | |||
| #!/bin/sh | ||||
| 
 | ||||
| maildircommit | ||||
| git pull | ||||
| git push | ||||
							
								
								
									
										2
									
								
								homestart
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										2
									
								
								homestart
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,2 @@ | |||
| ~/bin/home/route start | ||||
| ssh ozean -lroot | ||||
							
								
								
									
										7
									
								
								ikn_init
									
										
									
									
									
										Executable file
									
								
							
							
						
						
									
										7
									
								
								ikn_init
									
										
									
									
									
										Executable file
									
								
							|  | @ -0,0 +1,7 @@ | |||
| #!/bin/sh | ||||
| # + screen | ||||
| # + x | ||||
| xrandr  --output LVDS1 --off  | ||||
| # use latest version | ||||
| /home/users/nico/temp/build/synergy-read-only/bin/synergyc kr | ||||
| sgterm & | ||||
							
								
								
									
										19
									
								
								install.add.links
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										19
									
								
								install.add.links
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,19 @@ | |||
| cd /usr/bin | ||||
| for a in "$1"/bin/*; do | ||||
|    ln -s $a | ||||
| done | ||||
| 
 | ||||
| cd /usr/lib | ||||
| for a in "$1"/lib/*; do | ||||
|    ln -s $a | ||||
| done | ||||
| 
 | ||||
| cd /usr/sbin | ||||
| for a in "$1"/sbin/*; do | ||||
|    ln -s $a | ||||
| done | ||||
| 
 | ||||
| cd /usr/include | ||||
| for a in "$1"/include/*; do | ||||
|    ln -s $a | ||||
| done | ||||
							
								
								
									
										34
									
								
								install_product.sh
									
										
									
									
									
										Executable file
									
								
							
							
						
						
									
										34
									
								
								install_product.sh
									
										
									
									
									
										Executable file
									
								
							|  | @ -0,0 +1,34 @@ | |||
| #!/bin/sh | ||||
| # Nico Schottelius | ||||
| # 2007-02-04 | ||||
| # Install a product to listed instances, change permissions | ||||
| # Nothing spectacular, but useful | ||||
| 
 | ||||
| instances="/home/server/zope/instance/nico.schottelius.org.1 \ | ||||
|            /home/server/zope/instance/nico.schottelius.org.2" | ||||
| 
 | ||||
| zope_user="zope" | ||||
| 
 | ||||
| ######################## NO CHANGES BELOW HERE NEEDED ########################## | ||||
| 
 | ||||
| if [ $# -ne 1 ]; then | ||||
|    echo "$0: product (tar, gzipped)" | ||||
|    exit 23 | ||||
| fi | ||||
| 
 | ||||
| product="$1" | ||||
| echo "Installing $product ..." | ||||
| echo "" | ||||
| 
 | ||||
| # do NOT continue on failure! | ||||
| set -e | ||||
| for instance in $instances; do | ||||
|    proddir="${instance}/Products" | ||||
|    echo "Extracting product to $instance ..." | ||||
|    tar xfz "$product" -C "$proddir" | ||||
|    echo "Changing owner to $zope_user (for all products) ..." | ||||
|    chown -R "$zope_user" "$proddir" | ||||
| done | ||||
| 
 | ||||
| echo "" | ||||
| echo "Restart your zope server(s) now (if not running in debug mode)" | ||||
							
								
								
									
										155
									
								
								installpasswd
									
										
									
									
									
										Executable file
									
								
							
							
						
						
									
										155
									
								
								installpasswd
									
										
									
									
									
										Executable file
									
								
							|  | @ -0,0 +1,155 @@ | |||
| #!/usr/bin/perl -wT | ||||
| # | ||||
| # TWiki Collaboration Platform, http://TWiki.org/ | ||||
| # | ||||
| # Copyright (C) 2001 Klaus Wriessnegger, kw@sap.com | ||||
| # Copyright (C) 2001 Andrea Sterbini, a.sterbini@flashnet.it | ||||
| # Copyright (C) 2001-2003 Peter Thoeny, peter@thoeny.com | ||||
| # | ||||
| # For licensing info read license.txt file in the TWiki root. | ||||
| # 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 2 | ||||
| # 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, published at | ||||
| # http://www.gnu.ai.mit.edu/copyleft/gpl.html | ||||
| # | ||||
| # 26-5-01 Password installation (only by the $superAdminGroup) | ||||
| # | ||||
| 
 | ||||
| #usage example: | ||||
| # | ||||
| #I n s t a l l | ||||
| # | ||||
| #</form> | ||||
| #<form name="passwd" action="/%SCRIPTURLPATH%/passwd%SCRIPTSUFFIX%/%WEB%/"> | ||||
| #Username:EncryptedPW <input type="text" name="encryptedpassword" value="" size="16" /> <br /> | ||||
| #<input type="submit" name="passwd" /> | ||||
| #<input type="hidden" name="install" value="on" /> | ||||
| #</form> | ||||
|   | ||||
| 
 | ||||
| # Set library paths in @INC, at compile time | ||||
| BEGIN { unshift @INC, '.'; require 'setlib.cfg'; } | ||||
| 
 | ||||
| use CGI::Carp qw(fatalsToBrowser); | ||||
| use CGI; | ||||
| use TWiki; | ||||
|   | ||||
| $query= new CGI; | ||||
|   | ||||
| &main(); | ||||
|   | ||||
| sub main | ||||
| { | ||||
|     # get all parameters from the form | ||||
|     my $wikiName = $query->param( 'username' ); | ||||
| 
 | ||||
|     #initialize | ||||
|     my $topicName = $query->param( 'TopicName' ); | ||||
|     my $thePathInfo = $query->path_info(); | ||||
|     my $theUrl = $query->url; | ||||
| 
 | ||||
|     ( $topic, $webName ) = | ||||
|         &TWiki::initialize( $thePathInfo, $wikiName, $topicName, $theUrl, $query ); | ||||
|   | ||||
|     my $text = ""; | ||||
|     my $url = ""; | ||||
| 
 | ||||
|     my $theRemoteUser = $query->remote_user(); | ||||
|     my ( $dummy1, $dummy2, $dummy3, $userName ) =  | ||||
| 	&TWiki::initialize( $thePathInfo, $theRemoteUser, $topicName, $theUrl, $query ); | ||||
|     my $wikiUserName = &TWiki::userToWikiName( $userName ); | ||||
| 
 | ||||
|     if( ! &TWiki::Access::userIsInGroup( $wikiUserName, $TWiki::superAdminGroup ) ) { | ||||
|     	# user has no permission to install the password | ||||
|     	my $url = &TWiki::getOopsUrl( $webName, $topic, "oopsaccessgroup", "$TWiki::mainWebname.$TWiki::superAdminGroup" ); | ||||
|     	TWiki::redirect( $query, $url ); | ||||
|     	return; | ||||
|     } | ||||
| 
 | ||||
|     my $theCryptPassword = $query->param( 'encryptedPassword' ) || ''; | ||||
|     if ( ! $theCryptPassword ) { | ||||
| 	# missing username:encryptedpassword | ||||
|     	$url = &TWiki::getOopsUrl( $webName, $topic, "oopsregrequ", ); | ||||
|         TWiki::redirect( $query, $url ); | ||||
|         return; | ||||
|     } | ||||
| 	 | ||||
|     # TODO: I18N fix here once basic auth problem with 8-bit user names is | ||||
|     # solved | ||||
|     if ( $theCryptPassword =~ m/^([A-Z][a-zA-Z]+[A-Z][a-zA-Z]*)\:.{13}$/ ) { | ||||
| 	$wikiName = $1; | ||||
|     } else { | ||||
| 	# bad format | ||||
|     	$url = &TWiki::getOopsUrl( $webName, $topic, "oopsbadpwformat", $theCryptPassword); | ||||
|         TWiki::redirect( $query, $url ); | ||||
|         return; | ||||
|     } | ||||
| 
 | ||||
|     # check if user entry exists | ||||
|     if(  ( $wikiName )  && (! htpasswdExistUser( $wikiName ) ) ){ | ||||
|         # PTh 20 Jun 2000: changed to getOopsUrl | ||||
|         $url = &TWiki::getOopsUrl( $webName, $topic, "oopsnotwikiuser", $wikiName ); | ||||
|         TWiki::redirect( $query, $url ); | ||||
|         return; | ||||
|     } | ||||
| 
 | ||||
|     # old password | ||||
|     my $oldcrypt = htpasswdReadPasswd( $wikiName ); | ||||
|     # OK - password may be changed | ||||
|     my $oldCryptPassword = "$wikiName\:$oldcrypt"; | ||||
|     htpasswdAddUser( $oldCryptPassword, $theCryptPassword ); | ||||
| 
 | ||||
|     # OK - password changed | ||||
|     $url = &TWiki::getOopsUrl( $webName, $topic, "oopschangepasswd" ); | ||||
|     TWiki::redirect( $query, $url ); | ||||
|     return;  | ||||
| } | ||||
| 
 | ||||
| #=========================  | ||||
| sub htpasswdReadPasswd | ||||
| { | ||||
|     my ( $user ) = @_; | ||||
|   | ||||
|     if( ! $user ) { | ||||
|         return ""; | ||||
|     } | ||||
|   | ||||
|     my $text = &TWiki::Store::readFile( $TWiki::htpasswdFilename ); | ||||
|     if( $text =~ /$user\:(\S+)/ ) { | ||||
|         return $1; | ||||
|     } | ||||
|     return ""; | ||||
| } | ||||
|   | ||||
| sub htpasswdExistUser | ||||
| { | ||||
|     my ( $user ) = @_; | ||||
|   | ||||
|     if( ! $user ) { | ||||
|         return ""; | ||||
|     } | ||||
|   | ||||
|     my $text = &TWiki::Store::readFile( $TWiki::htpasswdFilename ); | ||||
|     if( $text =~ /$user\:/go ) { | ||||
|         return "1"; | ||||
|     } | ||||
|     return ""; | ||||
| } | ||||
|   | ||||
| sub htpasswdAddUser | ||||
| { | ||||
|     my ( $oldUserEntry, $newUserEntry ) = @_; | ||||
|   | ||||
|     # can't use `htpasswd $wikiName` because htpasswd doesn't understand stdin | ||||
|     # simply add name to file, but this is a security issue | ||||
|     my $text = &TWiki::Store::readFile( $TWiki::htpasswdFilename ); | ||||
|     $text =~ s/$oldUserEntry/$newUserEntry/; | ||||
|     &TWiki::Store::saveFile( $TWiki::htpasswdFilename, $text ); | ||||
| } | ||||
| 
 | ||||
							
								
								
									
										27
									
								
								ipg
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										27
									
								
								ipg
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,27 @@ | |||
| 
 | ||||
| #! /bin/sh | ||||
| 
 | ||||
| modprobe pktgen | ||||
| 
 | ||||
| PGDEV=/proc/net/pktgen/pg0 | ||||
| 
 | ||||
| function pgset() { | ||||
|     local result | ||||
| 
 | ||||
|     echo $1 > $PGDEV | ||||
| 
 | ||||
|     result=`cat $PGDEV | fgrep "Result: OK:"` | ||||
|     if [ "$result" = "" ]; then | ||||
|          cat $PGDEV | fgrep Result: | ||||
|     fi | ||||
| } | ||||
| 
 | ||||
| function pg() { | ||||
|     echo inject > $PGDEV | ||||
|     cat $PGDEV | ||||
| } | ||||
| 
 | ||||
| pgset "odev eth0" | ||||
| pgset "dst 0.0.0.0" | ||||
| 
 | ||||
| 
 | ||||
							
								
								
									
										18
									
								
								ips-dup
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										18
									
								
								ips-dup
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,18 @@ | |||
| 
 | ||||
| START="1" | ||||
| END="254" | ||||
| DEVICE="eth0" | ||||
| BASE_IP="192.168.0." | ||||
| 
 | ||||
| i=$START | ||||
| 
 | ||||
| if [ $# -lt 1 ]; then  | ||||
| 	echo "So nicht meister." | ||||
| 	echo "$0 [up|down]" | ||||
| 	exit 1 | ||||
| fi | ||||
| 
 | ||||
| while [ $i -lt $END ]; do | ||||
| 	ifconfig "$DEVICE":"$[i+3]" "$BASE_IP""$i" $1 | ||||
| 	i=$[$i+1] | ||||
| done | ||||
							
								
								
									
										1
									
								
								ips-hinzu.sh
									
										
									
									
									
										Executable file
									
								
							
							
						
						
									
										1
									
								
								ips-hinzu.sh
									
										
									
									
									
										Executable file
									
								
							|  | @ -0,0 +1 @@ | |||
| for i in $(seq 67 80); do ip addr add 62.65.138.$i dev eth0; done      | ||||
							
								
								
									
										10
									
								
								irda_connect
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										10
									
								
								irda_connect
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,10 @@ | |||
| modprobe ppp_generic | ||||
| modprobe ppp_async | ||||
| modprobe ppp_deflate | ||||
| modprobe ppp_synctty | ||||
| modprobe 8250 #serial 2.5 | ||||
| modprobe serial #serial 2.4 | ||||
| modprobe bsd_comp | ||||
| modprobe irport | ||||
| modprobe irtty | ||||
| pppd user arcor | ||||
							
								
								
									
										4
									
								
								irkerd
									
										
									
									
									
										Executable file
									
								
							
							
						
						
									
										4
									
								
								irkerd
									
										
									
									
									
										Executable file
									
								
							|  | @ -0,0 +1,4 @@ | |||
| #!/bin/sh | ||||
| 
 | ||||
| . /home/users/nico/p/foreign/irker/virtualenv/bin/activate | ||||
| /home/users/nico/p/foreign/irker/irker/irkerd "$@" | ||||
							
								
								
									
										193
									
								
								kbd
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										193
									
								
								kbd
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,193 @@ | |||
| #! /bin/sh | ||||
| # Copyright (c) 1995-2000 SuSE GmbH Nuernberg, Germany. | ||||
| # | ||||
| # Author:   Burchard Steinbild <bs@suse.de> | ||||
| #           Werner Fink <werner@suse.de> | ||||
| # | ||||
| # /sbin/init.d/kbd | ||||
| # | ||||
| #   and symbolic its link | ||||
| # | ||||
| # /sbin/rckbd | ||||
| # | ||||
| ### BEGIN INIT INFO | ||||
| # Provides:       kbd | ||||
| # Required-Start: $remote_fs | ||||
| # Required-Stop: | ||||
| # Default-Start:  1 2 3 5 S | ||||
| # Default-Stop: | ||||
| # Description:    Keyboard settings | ||||
| ### END INIT INFO | ||||
| 
 | ||||
| . /etc/rc.status | ||||
| . /etc/rc.config | ||||
| 
 | ||||
| MACHINE=`/bin/uname -m 2> /dev/null` | ||||
| if [ "$MACHINE" = "sparc" -o "$MACHINE" = "sparc64" ]; then  | ||||
|    # Test if we have a serial console.  | ||||
|    (test -c /dev/tty1 && > /dev/tty1 ) > /dev/null 2>&1 || exit 0 | ||||
| fi | ||||
| 
 | ||||
| test -n "$KEYTABLE" -a "$KEYTABLE" != YAST_ASK || { | ||||
|     echo KEYTABLE is not set in /etc/rc.config.  Exit. | ||||
|     exit 0 | ||||
| } | ||||
| KEYTABLE=${KEYTABLE%.map*} | ||||
| # | ||||
| # first search the wanted keytable. | ||||
| # | ||||
| if [ $MACHINE = ppc ]; then | ||||
| 	test -f /proc/cpuinfo || mount -n -t proc proc /proc 2>/dev/null | ||||
| 	while read line; do | ||||
| 	       case "$line" in | ||||
| 		  *MacRISC*)	MACHINE="mac";; | ||||
| 		  *CHRP*)  	MACHINE="chrp";; | ||||
| 		  *PReP*)  	MACHINE="prep" ;; | ||||
| 		esac | ||||
| 	done < /proc/cpuinfo | ||||
| fi | ||||
| 
 | ||||
| case "$MACHINE" in | ||||
|   i?86|ia64|alpha|prep|chrp) KDBLIB="/usr/lib/kbd/keymaps/i386/*/"     ;; | ||||
|   sparc*)     | ||||
|      case "$KEYTABLE" in | ||||
|         sun*) KDBLIB="/usr/lib/kbd/keymaps/sun/"        ;; | ||||
|         *)    KDBLIB="/usr/lib/kbd/keymaps/i386/*/"     ;; | ||||
|      esac | ||||
|      ;; | ||||
|   mac)       KDBLIB="/usr/lib/kbd/keymaps/mac/" ;; | ||||
|   *)         echo "No available keymaps for machine $MACHINE found"; exit 1 | ||||
| 	;; | ||||
| 
 | ||||
| esac | ||||
| 
 | ||||
| KEYMAP="" | ||||
| if test -e /$KEYTABLE ; then | ||||
|     KEYMAP=$KEYTABLE | ||||
| else | ||||
|     K="${KDBLIB}${KEYTABLE}" | ||||
|     case "$KEYTABLE" in | ||||
| 	*.gz)  KDBPATH="${K}" ;; | ||||
| 	*.map) KDBPATH="${K} ${K}.gz" ;; | ||||
| 	*)     KDBPATH="${K} ${K}.gz ${K}.map.gz ${K}.map" ;; | ||||
|     esac | ||||
|     for K in ${KDBPATH} ; do	 | ||||
| 	test -e "$K" || continue | ||||
| 	test -n "$KEYMAP" && KEYMAP="$KEYMAP $K" || KEYMAP=$K | ||||
|     done | ||||
| fi | ||||
| 
 | ||||
| rc_reset | ||||
| case "$1" in | ||||
|     start|restart|reload) | ||||
| 	if test -z "$KEYMAP" ; then | ||||
| 	    if test -r /etc/defkeymap.map ; then | ||||
| 		echo "Can not find a keymap for ${KEYTABLE}, trying fallback." | ||||
| 		KEYMAP=/etc/defkeymap.map | ||||
| 	    else | ||||
| 		echo "Can not find a keymap for ${KEYTABLE}, Exit." | ||||
| 		rc_failed | ||||
| 	    fi | ||||
| 	else | ||||
| 	    if test ! -e "$KEYMAP" ; then | ||||
| 		echo "Found more than one keymap ${KEYTABLE}" | ||||
| 		KEYMAP=$K | ||||
| 		echo "Using $KEYMAP." | ||||
| 		echo "If you want another one, please add complete path to" | ||||
| 		echo "KEYTABLE in /etc/rc.config." | ||||
| 	    fi | ||||
| 	fi | ||||
| 	rc_status && retmsg="`loadkeys $KEYMAP 2>&1`" | ||||
| 	if test $? -eq 0 && ( > /var/run/keymap ) > /dev/null 2>&1 ; then | ||||
| 	    echo "$KEYMAP"    > /var/run/keymap | ||||
| 	    if test ! -s /etc/defkeymap.map ; then | ||||
| 		( dumpkeys > /etc/defkeymap.map ) > /dev/null 2>&1 | ||||
| 	    fi | ||||
| 	else | ||||
| 	    rc_failed | ||||
| 	fi | ||||
| 	echo "Loading keymap ${retmsg#Loading*/usr/lib/kbd/keymaps/*/}" | ||||
| 	rc_status -v1 -r | ||||
| 
 | ||||
| 	# Load compose tables | ||||
| 	if test ! -z "$COMPOSETABLE"; then | ||||
| 		unset COMPOSELOADED COMPOSECLEAR | ||||
| 		for name in $COMPOSETABLE; do | ||||
| 			# Test for compose clear flag | ||||
| 			if test "$name" = "-c" -o "$name" = "clear"; then | ||||
| 				COMPOSECLEAR=-c | ||||
| 				continue | ||||
| 			fi | ||||
| 			# Handle the first table differently ... | ||||
| 			if test -z "$COMPOSELOADED"; then | ||||
| 				echo -n "Loading compose table $name" | ||||
| 				loadkeys $COMPOSECLEAR compose.$name >/dev/null 2>&1 | ||||
| 				rc_check | ||||
| 				if test $name = clear; then rc_reset; fi | ||||
| 				COMPOSELOADED=1 | ||||
| 			else | ||||
| 				echo -n " $name" | ||||
| 				loadkeys compose.$name >/dev/null 2>&1 | ||||
| 				rc_check | ||||
| 			fi | ||||
| 		done | ||||
| 		if test ! -z "$COMPOSELOADED"; then  | ||||
| 			rc_status -v -r | ||||
| 		fi | ||||
| 	fi | ||||
| 	 | ||||
| 	# setfont | ||||
| 	if test -d /usr/lib/kbd/consolefonts -a \ | ||||
| 		-n "$CONSOLE_FONT" -a "$CONSOLE_FONT" != "YAST_ASK" | ||||
| 	then | ||||
| 	    if test -x /usr/bin/setfont ; then | ||||
| 		echo Loading console font $CONSOLE_FONT | ||||
| 		/usr/bin/setfont $CONSOLE_FONT | ||||
| 		rc_status -v1 -r | ||||
| 	    fi | ||||
| 	    # unimap | ||||
| 	    if test -n "$CONSOLE_UNICODEMAP" -a \ | ||||
| 		    "$CONSOLE_UNICODEMAP" != "none" -a \ | ||||
| 		    -x /usr/bin/setfont | ||||
| 	    then | ||||
| 		echo Loading unimap $CONSOLE_UNICODEMAP | ||||
| 		/usr/bin/setfont -u $CONSOLE_UNICODEMAP | ||||
| 		rc_status -v1 -r | ||||
| 	    fi | ||||
| 	    # screenmap | ||||
| 	    if test -n "$CONSOLE_SCREENMAP" -a \ | ||||
| 		    "$CONSOLE_SCREENMAP" != "none" -a \ | ||||
| 		    -x /usr/bin/setfont | ||||
| 	    then | ||||
| 		echo Loading screenmap $CONSOLE_SCREENMAP | ||||
| 		/usr/bin/setfont -m $CONSOLE_SCREENMAP | ||||
| 		rc_status -v1 -r | ||||
| 	    fi | ||||
| 	    # console magic init string | ||||
| 	    if test -n "$CONSOLE_MAGIC" -a "$CONSOLE_MAGIC" != "none" ; then | ||||
| 		echo Setting up console ttys | ||||
| 		for i in /dev/tty[1-24]; do | ||||
| 		    echo -en "\033$CONSOLE_MAGIC" > $i | ||||
| 		    rc_status | ||||
| 		done | ||||
| 		rc_status -v1 -r | ||||
| 	    fi | ||||
| 	fi | ||||
| 
 | ||||
| 	;; | ||||
|     stop) | ||||
| 	;; | ||||
|     check|status) | ||||
| 	if test -r /var/run/keymap ; then | ||||
| 	    read current < /var/run/keymap | ||||
| 	    echo "Keymap $current is loaded." | ||||
| 	else | ||||
| 	    rc_failed | ||||
| 	fi | ||||
| 	;; | ||||
|     *) | ||||
| 	echo "Usage: $0 {start|stop|restart|reload|status|check}" | ||||
| 	exit 1 | ||||
| 	;; | ||||
| esac | ||||
| rc_exit | ||||
							
								
								
									
										240
									
								
								kbd.new
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										240
									
								
								kbd.new
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,240 @@ | |||
| #!/bin/sh | ||||
| #  | ||||
| # Author: Nico Schottelius <nico AT schottelius DOT org> | ||||
| # Date: 30. April 2k+1 | ||||
| # Last Changed: 30. April 2k+1 | ||||
| # Comment: Keyboard (KBD) init script | ||||
| # | ||||
| 
 | ||||
| . /etc/sys/combined | ||||
| . /etc/sys/boot/named | ||||
| 
 | ||||
| test `basename $0` = named && START_KBD="yes" | ||||
| test "$START_KBD" = yes || exit 0 | ||||
| 
 | ||||
| back="$DONE" | ||||
| 
 | ||||
| case "$1" in | ||||
|     start)	$SYS_ECHO -n "$START $KBD_TEXT " | ||||
| 		|| back=$FAIL | ||||
| 		$SYS_ECHO "$back" | ||||
| 		;; | ||||
|     stop)	$SYS_ECHO -n "$STOP $NAMED_TEXT " | ||||
|     		killproc -TERM /usr/sbin/named || back=$FAIL | ||||
| 		$SYS_ECHO "$back" | ||||
| 		;; | ||||
|     restart) | ||||
| 		$0 stop && $0 start || back=$FAIL | ||||
| 		;; | ||||
|     reload)   	$SYS_ECHO -n "$RELOAD $NAMED_TEXT" | ||||
|               	killproc -HUP /usr/sbin/named || back=$FAIL | ||||
| 	      	$SYS_ECHO "$back" | ||||
|               	;; | ||||
|     status)	checkproc /usr/sbin/named && $SYS_ECHO $OK || $SYS_ECHO $NOP | ||||
|     		;; | ||||
|     *)		$SYS_ECHO  "$USAGE $0 {start|stop|restart|reload|status}" | ||||
| 		exit 1 | ||||
| esac | ||||
| 
 | ||||
| 
 | ||||
| # Test if back is equal to DONE, if not exit 1. Else exit 0 | ||||
| test "$back" = "$DONE" || exit 1 | ||||
| exit 0 | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| #! /bin/sh | ||||
| # Copyright (c) 1995-2000 SuSE GmbH Nuernberg, Germany. | ||||
| # | ||||
| # Author:   Burchard Steinbild <bs@suse.de> | ||||
| #           Werner Fink <werner@suse.de> | ||||
| # | ||||
| # /sbin/init.d/kbd | ||||
| # | ||||
| #   and symbolic its link | ||||
| # | ||||
| # /sbin/rckbd | ||||
| # | ||||
| ### BEGIN INIT INFO | ||||
| # Provides:       kbd | ||||
| # Required-Start: $remote_fs | ||||
| # Required-Stop: | ||||
| # Default-Start:  1 2 3 5 S | ||||
| # Default-Stop: | ||||
| # Description:    Keyboard settings | ||||
| ### END INIT INFO | ||||
| 
 | ||||
| . /etc/rc.status | ||||
| . /etc/rc.config | ||||
| 
 | ||||
| MACHINE=`/bin/uname -m 2> /dev/null` | ||||
| if [ "$MACHINE" = "sparc" -o "$MACHINE" = "sparc64" ]; then  | ||||
|    # Test if we have a serial console.  | ||||
|    (test -c /dev/tty1 && > /dev/tty1 ) > /dev/null 2>&1 || exit 0 | ||||
| fi | ||||
| 
 | ||||
| test -n "$KEYTABLE" -a "$KEYTABLE" != YAST_ASK || { | ||||
|     echo KEYTABLE is not set in /etc/rc.config.  Exit. | ||||
|     exit 0 | ||||
| } | ||||
| KEYTABLE=${KEYTABLE%.map*} | ||||
| # | ||||
| # first search the wanted keytable. | ||||
| # | ||||
| if [ $MACHINE = ppc ]; then | ||||
| 	test -f /proc/cpuinfo || mount -n -t proc proc /proc 2>/dev/null | ||||
| 	while read line; do | ||||
| 	       case "$line" in | ||||
| 		  *MacRISC*)	MACHINE="mac";; | ||||
| 		  *CHRP*)  	MACHINE="chrp";; | ||||
| 		  *PReP*)  	MACHINE="prep" ;; | ||||
| 		esac | ||||
| 	done < /proc/cpuinfo | ||||
| fi | ||||
| 
 | ||||
| case "$MACHINE" in | ||||
|   i?86|ia64|alpha|prep|chrp) KDBLIB="/usr/lib/kbd/keymaps/i386/*/"     ;; | ||||
|   sparc*)     | ||||
|      case "$KEYTABLE" in | ||||
|         sun*) KDBLIB="/usr/lib/kbd/keymaps/sun/"        ;; | ||||
|         *)    KDBLIB="/usr/lib/kbd/keymaps/i386/*/"     ;; | ||||
|      esac | ||||
|      ;; | ||||
|   mac)       KDBLIB="/usr/lib/kbd/keymaps/mac/" ;; | ||||
|   *)         echo "No available keymaps for machine $MACHINE found"; exit 1 | ||||
| 	;; | ||||
| 
 | ||||
| esac | ||||
| 
 | ||||
| KEYMAP="" | ||||
| if test -e /$KEYTABLE ; then | ||||
|     KEYMAP=$KEYTABLE | ||||
| else | ||||
|     K="${KDBLIB}${KEYTABLE}" | ||||
|     case "$KEYTABLE" in | ||||
| 	*.gz)  KDBPATH="${K}" ;; | ||||
| 	*.map) KDBPATH="${K} ${K}.gz" ;; | ||||
| 	*)     KDBPATH="${K} ${K}.gz ${K}.map.gz ${K}.map" ;; | ||||
|     esac | ||||
|     for K in ${KDBPATH} ; do	 | ||||
| 	test -e "$K" || continue | ||||
| 	test -n "$KEYMAP" && KEYMAP="$KEYMAP $K" || KEYMAP=$K | ||||
|     done | ||||
| fi | ||||
| 
 | ||||
| rc_reset | ||||
| case "$1" in | ||||
|     start|restart|reload) | ||||
| 	if test -z "$KEYMAP" ; then | ||||
| 	    if test -r /etc/defkeymap.map ; then | ||||
| 		echo "Can not find a keymap for ${KEYTABLE}, trying fallback." | ||||
| 		KEYMAP=/etc/defkeymap.map | ||||
| 	    else | ||||
| 		echo "Can not find a keymap for ${KEYTABLE}, Exit." | ||||
| 		rc_failed | ||||
| 	    fi | ||||
| 	else | ||||
| 	    if test ! -e "$KEYMAP" ; then | ||||
| 		echo "Found more than one keymap ${KEYTABLE}" | ||||
| 		KEYMAP=$K | ||||
| 		echo "Using $KEYMAP." | ||||
| 		echo "If you want another one, please add complete path to" | ||||
| 		echo "KEYTABLE in /etc/rc.config." | ||||
| 	    fi | ||||
| 	fi | ||||
| 	rc_status && retmsg="`loadkeys $KEYMAP 2>&1`" | ||||
| 	if test $? -eq 0 && ( > /var/run/keymap ) > /dev/null 2>&1 ; then | ||||
| 	    echo "$KEYMAP"    > /var/run/keymap | ||||
| 	    if test ! -s /etc/defkeymap.map ; then | ||||
| 		( dumpkeys > /etc/defkeymap.map ) > /dev/null 2>&1 | ||||
| 	    fi | ||||
| 	else | ||||
| 	    rc_failed | ||||
| 	fi | ||||
| 	echo "Loading keymap ${retmsg#Loading*/usr/lib/kbd/keymaps/*/}" | ||||
| 	rc_status -v1 -r | ||||
| 
 | ||||
| 	# Load compose tables | ||||
| 	if test ! -z "$COMPOSETABLE"; then | ||||
| 		unset COMPOSELOADED COMPOSECLEAR | ||||
| 		for name in $COMPOSETABLE; do | ||||
| 			# Test for compose clear flag | ||||
| 			if test "$name" = "-c" -o "$name" = "clear"; then | ||||
| 				COMPOSECLEAR=-c | ||||
| 				continue | ||||
| 			fi | ||||
| 			# Handle the first table differently ... | ||||
| 			if test -z "$COMPOSELOADED"; then | ||||
| 				echo -n "Loading compose table $name" | ||||
| 				loadkeys $COMPOSECLEAR compose.$name >/dev/null 2>&1 | ||||
| 				rc_check | ||||
| 				if test $name = clear; then rc_reset; fi | ||||
| 				COMPOSELOADED=1 | ||||
| 			else | ||||
| 				echo -n " $name" | ||||
| 				loadkeys compose.$name >/dev/null 2>&1 | ||||
| 				rc_check | ||||
| 			fi | ||||
| 		done | ||||
| 		if test ! -z "$COMPOSELOADED"; then  | ||||
| 			rc_status -v -r | ||||
| 		fi | ||||
| 	fi | ||||
| 	 | ||||
| 	# setfont | ||||
| 	if test -d /usr/lib/kbd/consolefonts -a \ | ||||
| 		-n "$CONSOLE_FONT" -a "$CONSOLE_FONT" != "YAST_ASK" | ||||
| 	then | ||||
| 	    if test -x /usr/bin/setfont ; then | ||||
| 		echo Loading console font $CONSOLE_FONT | ||||
| 		/usr/bin/setfont $CONSOLE_FONT | ||||
| 		rc_status -v1 -r | ||||
| 	    fi | ||||
| 	    # unimap | ||||
| 	    if test -n "$CONSOLE_UNICODEMAP" -a \ | ||||
| 		    "$CONSOLE_UNICODEMAP" != "none" -a \ | ||||
| 		    -x /usr/bin/setfont | ||||
| 	    then | ||||
| 		echo Loading unimap $CONSOLE_UNICODEMAP | ||||
| 		/usr/bin/setfont -u $CONSOLE_UNICODEMAP | ||||
| 		rc_status -v1 -r | ||||
| 	    fi | ||||
| 	    # screenmap | ||||
| 	    if test -n "$CONSOLE_SCREENMAP" -a \ | ||||
| 		    "$CONSOLE_SCREENMAP" != "none" -a \ | ||||
| 		    -x /usr/bin/setfont | ||||
| 	    then | ||||
| 		echo Loading screenmap $CONSOLE_SCREENMAP | ||||
| 		/usr/bin/setfont -m $CONSOLE_SCREENMAP | ||||
| 		rc_status -v1 -r | ||||
| 	    fi | ||||
| 	    # console magic init string | ||||
| 	    if test -n "$CONSOLE_MAGIC" -a "$CONSOLE_MAGIC" != "none" ; then | ||||
| 		echo Setting up console ttys | ||||
| 		for i in /dev/tty[1-24]; do | ||||
| 		    echo -en "\033$CONSOLE_MAGIC" > $i | ||||
| 		    rc_status | ||||
| 		done | ||||
| 		rc_status -v1 -r | ||||
| 	    fi | ||||
| 	fi | ||||
| 
 | ||||
| 	;; | ||||
|     stop) | ||||
| 	;; | ||||
|     check|status) | ||||
| 	if test -r /var/run/keymap ; then | ||||
| 	    read current < /var/run/keymap | ||||
| 	    echo "Keymap $current is loaded." | ||||
| 	else | ||||
| 	    rc_failed | ||||
| 	fi | ||||
| 	;; | ||||
|     *) | ||||
| 	echo "Usage: $0 {start|stop|restart|reload|status|check}" | ||||
| 	exit 1 | ||||
| 	;; | ||||
| esac | ||||
| rc_exit | ||||
							
								
								
									
										61
									
								
								latest-kernel
									
										
									
									
									
										Executable file
									
								
							
							
						
						
									
										61
									
								
								latest-kernel
									
										
									
									
									
										Executable file
									
								
							|  | @ -0,0 +1,61 @@ | |||
| #!/bin/sh | ||||
| # | ||||
| # Nico Schottelius <nico@schottelius.(net|org)> | ||||
| # Date: 21-Oct-2003 | ||||
| # Last Modified:  | ||||
| # Versions: | ||||
| #  1.6 2007-03-10 | ||||
| #     Only mail, if new kernel is newer. | ||||
| #  1.5: 2006-03-20 | ||||
| #     Added URL to download kernel | ||||
| #  1.4: 2006-02-03 | ||||
| #     Added Changelog | ||||
| 
 | ||||
| #set -x | ||||
| 
 | ||||
| MAILTO="kernel-announce@lists.schottelius.org" | ||||
| 
 | ||||
| USERFILE=$HOME/.latest-kernel | ||||
| 
 | ||||
| #VERSION=`curl ftp://ftp.kernel.org/pub/linux/kernel/v2.6/  | grep linux-2.6.0 | sort | tail -n 1 | awk ' { print $9 }' 2>/dev/null` | ||||
| #VERSION=`curl ftp://ftp.kernel.org/pub/linux/kernel/v2.6/ | grep linux | awk '{ print $6 " " $7 " " $8 " " $9 }' | sort -M | tail -n 1` | ||||
| #VERSION=`curl ftp://ftp.kernel.org/pub/linux/kernel/v2.6/ 2>/dev/null| awk '/linux/ { print $9 }' | sort | tail -n 1` | ||||
| #VERSION=`curl ftp://ftp.kernel.org/pub/linux/kernel/v2.6/ 2>/dev/null| awk '/linux/ { print $9 }' | sort | tail -n 1 | sed 's/\.tar.*//'` | ||||
| #VERSION=`curl ftp://ftp.kernel.org/pub/linux/kernel/v2.6/ 2>/dev/null| awk '/linux/ { print $9 }' | sed 's/\.tar.*//' | sort | tail -n 1` | ||||
| #VERSION=$(curl -s http://ftp.kernel.org/pub/linux/kernel/v2.6/ 2>/dev/null | grep LATEST-IS | sed 's/.*LATEST-IS-//') | ||||
| 
 | ||||
| VERSION=$(curl -s http://ftp.kernel.org/pub/linux/kernel/v2.6/ | grep LATEST-IS- | sed 's/.*LATEST-IS-\(.*\)<\/a.*/\1/') | ||||
| OLDVERSION=`cat $USERFILE 2>/dev/null` | ||||
| 
 | ||||
| if [ "$OLDVERSION" != "$VERSION" -a -n "$VERSION"  ]; then | ||||
|    i=1 | ||||
|    newpart=$(echo $VERSION | cut -f${i} -d.) | ||||
| 
 | ||||
|    while [ "$newpart" ]; do | ||||
|       oldpart=$(echo $OLDVERSION | cut -f${i} -d.) | ||||
|       echo "${oldpart}::${newpart}" | ||||
|       if [ "$oldpart" -gt "$newpart" ]; then | ||||
|          echo "Abort: $VERSION is older then old $OLDVERSION" | ||||
|          exit 1 | ||||
|       fi | ||||
| 
 | ||||
|       i=$(($i+1)) | ||||
|       newpart=$(echo $VERSION | cut -f${i} -d.) | ||||
|    done | ||||
| 
 | ||||
|    CHANGELOG="http://www.kernel.org/pub/linux/kernel/v2.6/ChangeLog-${VERSION}" | ||||
| 
 | ||||
|    BASEURL="http://www.kernel.org/pub/linux/kernel/v2.6/linux-" | ||||
|    EXTENSION=".tar.bz2" | ||||
|    FULL_URL=${BASEURL}${VERSION}${EXTENSION} | ||||
| 
 | ||||
|    ( | ||||
|       echo "Download kernel at $FULL_URL" | ||||
|       echo "" | ||||
|       curl -s ${CHANGELOG} | ||||
|    #) | mail -s "New Linux-Kernel: $VERSION" "$MAILTO" | ||||
|    ) | mutt -s "New Linux-Kernel: $VERSION" "$MAILTO" | ||||
| 
 | ||||
|    echo "$VERSION" > "$USERFILE" | ||||
|    echo "Neue Version ($VERSION) gesendet" | ||||
| fi | ||||
							
								
								
									
										16
									
								
								link-webs
									
										
									
									
									
										Executable file
									
								
							
							
						
						
									
										16
									
								
								link-webs
									
										
									
									
									
										Executable file
									
								
							|  | @ -0,0 +1,16 @@ | |||
| #!/bin/sh | ||||
| 
 | ||||
| WEBS=/home/server/www/webs | ||||
| WWW=/home/server/www | ||||
| 
 | ||||
| for tlds in $WEBS/*/*; do | ||||
|    mkdir -p $WWW/`basename $tlds` | ||||
|    cd $WWW/`basename $tlds`; | ||||
|    for domain in $tlds/*; do | ||||
|       mkdir -p `basename $domain` | ||||
|       cd `basename $domain` | ||||
|       for subdomain in $domain/*; do  | ||||
|          ln -s $subdomain | ||||
|       done | ||||
|    done | ||||
| done | ||||
							
								
								
									
										19
									
								
								linkall
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										19
									
								
								linkall
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,19 @@ | |||
| cd /usr/bin | ||||
| find /usr/*/bin/ | xargs ln -s  | ||||
| 
 | ||||
| cd /usr/lib | ||||
| for a in /usr/*/lib/*; do | ||||
|    ln -s $a | ||||
| done | ||||
| 
 | ||||
| cd /usr/sbin | ||||
| for a in /usr/*/sbin/*; do | ||||
|    ln -s $a | ||||
| done | ||||
| 
 | ||||
| cd /usr/include | ||||
| for a in /usr/*/include/*; do | ||||
|    ln -s $a | ||||
| done | ||||
| 
 | ||||
| 
 | ||||
							
								
								
									
										36
									
								
								linux/get_logs.sh
									
										
									
									
									
										Executable file
									
								
							
							
						
						
									
										36
									
								
								linux/get_logs.sh
									
										
									
									
									
										Executable file
									
								
							|  | @ -0,0 +1,36 @@ | |||
| #!/bin/sh | ||||
| #  | ||||
| # 2011 Nico Schottelius (nico-nsbin at schottelius.org) | ||||
| #  | ||||
| # This file is part of nsbin. | ||||
| # | ||||
| # nsbin 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. | ||||
| #  | ||||
| # nsbin 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 nsbin. If not, see <http://www.gnu.org/licenses/>. | ||||
| # | ||||
| # Initially written for SyGroup (www.sygroup.ch) | ||||
| # Date: Mon Nov 14 11:45:11 CET 2005 | ||||
| # | ||||
| # Create report for kernel hackers | ||||
| # | ||||
| 
 | ||||
| # | ||||
| # Standard variables (stolen from cconf) | ||||
| # | ||||
| __pwd="$(pwd -P)" | ||||
| __mydir="${0%/*}"; __abs_mydir="$(cd "$__mydir" && pwd -P)" | ||||
| __myname=${0##*/}; __abs_myname="$__abs_mydir/$__myname" | ||||
| 
 | ||||
| prefix=$(uname -r) | ||||
| dmesg > $prefix.dmesg | ||||
| cp /var/log/Xorg.0.log $prefix.xorg | ||||
| cp /proc/config.gz $prefix.config.gz | ||||
							
								
								
									
										5
									
								
								loadipsec
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										5
									
								
								loadipsec
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,5 @@ | |||
| modprobe esp4 | ||||
| modprobe ah4 | ||||
| modprobe ip_gre | ||||
| modprobe ipcomp | ||||
| modprobe af_key | ||||
							
								
								
									
										1
									
								
								loch2
									
										
									
									
									
										Executable file
									
								
							
							
						
						
									
										1
									
								
								loch2
									
										
									
									
									
										Executable file
									
								
							|  | @ -0,0 +1 @@ | |||
| sshfs nutzer@loch.schottelius.org:/home/services/bibliothek/photos ~/photos | ||||
							
								
								
									
										2
									
								
								logoff
									
										
									
									
									
										Executable file
									
								
							
							
						
						
									
										2
									
								
								logoff
									
										
									
									
									
										Executable file
									
								
							|  | @ -0,0 +1,2 @@ | |||
| killall tail | ||||
| killall tail | ||||
							
								
								
									
										4
									
								
								logon
									
										
									
									
									
										Executable file
									
								
							
							
						
						
									
										4
									
								
								logon
									
										
									
									
									
										Executable file
									
								
							|  | @ -0,0 +1,4 @@ | |||
| /root/bin/show_apache_logs & | ||||
| tail -f /var/log/syslog & | ||||
| tail -f /var/log/mail.log & | ||||
| tail -f /var/log/xferlog & | ||||
							
								
								
									
										72
									
								
								mail.add.wddb
									
										
									
									
									
										Executable file
									
								
							
							
						
						
									
										72
									
								
								mail.add.wddb
									
										
									
									
									
										Executable file
									
								
							|  | @ -0,0 +1,72 @@ | |||
| BASEDIR=/home/server/www/org/wddb/www/ | ||||
| 
 | ||||
| function report() | ||||
| { | ||||
|    # sender | ||||
|    UFLINE | ||||
| 
 | ||||
|    # return path | ||||
|    RPLINE | ||||
| 
 | ||||
|    # we | ||||
|    RECIPIENT | ||||
|     | ||||
|    # delivered to.. | ||||
|    DTLINE | ||||
|    # set | ||||
| } | ||||
| 
 | ||||
| # continent | ||||
| continent=`grep "^continent" "$1" | sed 's/.*="\(.*\)"/\1/'` | ||||
| 
 | ||||
| case "$continent" in | ||||
|    africa|asia|australia|europe|northamerica|southamerica) ;; | ||||
|    *) report "Allowed continents: africa|asia|australia|europe|northamerica|southamerica" ;; | ||||
| esac | ||||
| 
 | ||||
| # other vars | ||||
| essid=`grep "^essid" "$1" | sed 's/.*="\(.*\)"/\1/'` | ||||
| 
 | ||||
| # remove possible dots | ||||
| country=`grep "^country" "$1" | sed 's/.*="\(.*\)"/\1/' | sed 's/\.\.//g'` | ||||
| area=`grep "^area" "$1" | sed 's/.*="\(.*\)"/\1/' | sed 's/\//-/g' | sed 's/ //c'` | ||||
| mac=`grep "^mac" "$1" | sed 's/.*="\(.*\)"/\1/'` | ||||
| rate=`grep "^rate" "$1" | sed 's/.*="\(.*\)"/\1/'` | ||||
| wep=`grep "^wep" "$1" | sed 's/.*="\(.*\)"/\1/'` | ||||
| hints=`grep "^hints" "$1" | sed 's/.*="\(.*\)"/\1/'` | ||||
| location=`grep "^location" "$1" | sed 's/.*="\(.*\)"/\1/'` | ||||
| 
 | ||||
| # check for empty fields | ||||
| for a in essid country area mac rate wep hints location; do | ||||
|    eval tmp="\$$a" | ||||
|    if [ -z "$tmp" ]; then | ||||
|       report "Empty field: $a" | ||||
|    fi | ||||
| done | ||||
| 
 | ||||
| if [ ! -f $BASEDIR/$continent/$country/$area.html ]; then | ||||
|    cat << EOF > "$1" | ||||
|    <html> | ||||
|    <head> | ||||
|    <title>wddb.org - WarDriver's DataBase</title> | ||||
|    </head> | ||||
| 
 | ||||
|    <BODY bgcolor="#000000" color="#ef0000" font-color="#ef0000"> | ||||
|    <FONT COLOR="#ef0000"> | ||||
|     | ||||
| else | ||||
|   lines=`cat "$BASEDIR/$continent/$country/$area.html" | wc |awk '{ print $1 }'` | ||||
|   use_lines=$[$lines-7] | ||||
|   head -n $use_lines "$BASEDIR/$continent/$country/$area.html" > "$1" | ||||
|    | ||||
| fi | ||||
| 
 | ||||
| cat << EOF >> "$1" | ||||
|    </TABLE> | ||||
|    <HR> | ||||
|    <A HREF="../index.html"> << One step back</A> | ||||
|    <P><A HREF="/submit-new.html">Submit new network or changes<A> | ||||
|    </FONT> | ||||
|    </BODY> | ||||
|    </HTML> | ||||
| EOF | ||||
							
								
								
									
										9
									
								
								maildirnotmuchdump
									
										
									
									
									
										Executable file
									
								
							
							
						
						
									
										9
									
								
								maildirnotmuchdump
									
										
									
									
									
										Executable file
									
								
							|  | @ -0,0 +1,9 @@ | |||
| #!/bin/sh | ||||
| 
 | ||||
| set -e | ||||
| 
 | ||||
| file=.notmuch/dump.xz | ||||
| 
 | ||||
| cd ~/Maildir | ||||
| notmuch dump | xz > "$file" | ||||
| git commit -m "Update notmuch dump" "$file" | ||||
							
								
								
									
										218
									
								
								mailnotify
									
										
									
									
									
										Executable file
									
								
							
							
						
						
									
										218
									
								
								mailnotify
									
										
									
									
									
										Executable file
									
								
							|  | @ -0,0 +1,218 @@ | |||
| #!/usr/bin/perl -wT | ||||
| # | ||||
| # TWiki Collaboration Platform, http://TWiki.org/ | ||||
| # | ||||
| # Copyright (C) 1999-2003 Peter Thoeny, peter@thoeny.com | ||||
| # | ||||
| # For licensing info read license.txt file in the TWiki root. | ||||
| # 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 2 | ||||
| # 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, published at  | ||||
| # http://www.gnu.org/copyleft/gpl.html | ||||
| 
 | ||||
| # Colas (http://colas.nahaboo.net) | ||||
| # modifications from mailnotify script from Dec 2001 release: | ||||
| # - email is now optional, is fetched from the user homepage | ||||
| # - webs not beginning by a capital letter are ignored ( _default, ...) | ||||
| # - no mail is sent to TWikiGuest | ||||
| # - if user is a group, recurses through its members | ||||
| 
 | ||||
| # Set library paths in @INC, at compile time | ||||
| BEGIN { unshift @INC, '.'; require 'setlib.cfg'; } | ||||
| 
 | ||||
| use TWiki; | ||||
| use TWiki::Net; | ||||
| 
 | ||||
| my $debug = ! ( @ARGV && $ARGV[0] eq "-q" ); | ||||
| 
 | ||||
| &main(); | ||||
| 
 | ||||
| sub main | ||||
| { | ||||
|     &TWiki::basicInitialize(); | ||||
| 
 | ||||
|     $debug && print "TWiki mail notification\n"; | ||||
|     $debug && print "- to suppress all normal output: mailnotify -q\n"; | ||||
| 
 | ||||
|     my $dataDir = &TWiki::getDataDir(); | ||||
|     opendir( DIR, "$dataDir" ) or die "could not open $dataDir"; | ||||
|     @weblist = grep !/^\.\.?$/, readdir DIR; | ||||
|     closedir DIR; | ||||
|     foreach $web ( @weblist ) { | ||||
| 	# Only process webs with normal names, i.e. not starting with '_' | ||||
|         if( -d "$dataDir/$web" && &TWiki::isWebName($web) ) { | ||||
|              processWeb( $web ); | ||||
| 
 | ||||
|              # remove obsolete .lock files | ||||
|              &TWiki::Store::removeObsoleteTopicLocks( $web ); | ||||
|         } | ||||
|     } | ||||
|     $debug && print "End TWiki mail notification\n"; | ||||
| } | ||||
| 
 | ||||
| sub processWeb | ||||
| { | ||||
|     my( $web) = @_; | ||||
| 
 | ||||
|     my ( $topic, $webName, $dummy, $userName, $dataDir) =  | ||||
| 	&TWiki::initialize( "/$web", "nobody" ); | ||||
|     $dummy = "";  # to suppress warning | ||||
| 
 | ||||
|     $debug && print "Checking TWiki.$webName\n"; | ||||
| 
 | ||||
|     if( ! &TWiki::Store::webExists( $webName ) ) { | ||||
| 	print STDERR "* ERROR: TWiki mailnotify does not find web $webName\n"; | ||||
| 	return; | ||||
|     } | ||||
| 
 | ||||
|     my @notifylist = TWiki::getEmailNotifyList($webName); | ||||
|     unless ( scalar @notifylist ) { | ||||
| 	$debug && print "<none>\n"; | ||||
| 	return; | ||||
|     } | ||||
| 
 | ||||
|     my $emailbody = ""; | ||||
|     my $topiclist = ""; | ||||
| 
 | ||||
|     my $skin = TWiki::Prefs::getPreferencesValue( "SKIN" ); | ||||
|     my $text = TWiki::Store::readTemplate( "changes", $skin ); | ||||
|     my $changes= &TWiki::Store::readFile( "$dataDir/$webName/.changes" ); | ||||
| 
 | ||||
|     my %exclude; | ||||
| 
 | ||||
|     $text = &TWiki::handleCommonTags($text, $topic); | ||||
|     $text =~ s/\%META{.*?}\%//go;  # remove %META{"parent"}% | ||||
| 
 | ||||
|     if( $TWiki::doRemoveImgInMailnotify ) { | ||||
|         # change images to [alt] text if there, else remove image | ||||
|         $text =~ s/<img src=.*?alt=\"([^\"]+)[^>]*>/[$1]/goi; | ||||
|         $text =~ s/<img src=.*?[^>]>//goi; | ||||
|     } | ||||
| 
 | ||||
|     my $before = ""; | ||||
|     my $after = ""; | ||||
|     ( $before, $text, $after) = split( /%REPEAT%/, $text ); | ||||
|     $emailbody = &TWiki::getRenderedVersion( $before ); | ||||
|     $after = &TWiki::getRenderedVersion( $after ); | ||||
| 
 | ||||
|     my $prevLastmodify = &TWiki::Store::readFile( "$dataDir/$webName/.mailnotify" ) || "0"; | ||||
|     my $currLastmodify = ""; | ||||
|     my $scriptSuffix = $TWiki::scriptSuffix; | ||||
|     my $scriptUrlPath = $TWiki::scriptUrlPath; | ||||
|     my $scriptUrl = "$TWiki::urlHost$scriptUrlPath"; | ||||
|     my $frev = ""; | ||||
| 
 | ||||
|     foreach( reverse split( /\n/, $changes ) ) { | ||||
| 	# Parse lines from .changes: | ||||
| 	# <topic>	<user>		<change time>	<revision> | ||||
| 	# WebHome	FredBloggs	1014591347	21 | ||||
| 
 | ||||
| 	my ($topicName, $userName, $changeTime, $revision) = split( /\t/); | ||||
| 	$newText = $text;		# Repeating text from email template | ||||
| 
 | ||||
| 	if( ( ! %exclude ) || ( ! $exclude{ $topicName } ) ) { | ||||
|             next unless TWiki::Store::topicExists( $webName, $topicName ); | ||||
| 
 | ||||
| 	    if( ! $currLastmodify ) { | ||||
| 	        # newest entry | ||||
| 	        $time = &TWiki::formatGmTime( $prevLastmodify ); | ||||
| 	        if( $prevLastmodify eq $changeTime ) { | ||||
| 	            # newest entry is same as at time of previous notification | ||||
| 	            $debug && print "- Note: No topics changed since $time\n"; | ||||
| 	            return; | ||||
| 	        } | ||||
| 	        $currLastmodify = $changeTime; | ||||
| 	        $debug && print "- Changed topics since $time: "; | ||||
| 	    } | ||||
| 
 | ||||
| 	    if( $prevLastmodify >= $changeTime ) { | ||||
| 	        #print "Date: found item of last notification\n"; | ||||
| 	        # found item of last notification | ||||
| 	        last; | ||||
| 	    } | ||||
|             $frev = ""; | ||||
|             if( $revision ) { | ||||
|                 if( $revision > 1 ) { | ||||
|                     $frev = "r1.$revision"; | ||||
|                 } else { | ||||
|                     $frev = "<b>NEW</b>"; | ||||
|                 } | ||||
|             } | ||||
| 
 | ||||
| 	    # Create entry in HTML attachment | ||||
| 	    $newText = $text; | ||||
| 	    $newText =~ s/%TOPICNAME%/$topicName/go; | ||||
| 	    $wikiuser = &TWiki::userToWikiName( $userName ); | ||||
| 
 | ||||
| 	    $newText =~ s/%AUTHOR%/$wikiuser/go; | ||||
|             $newText =~ s/%LOCKED%//go; | ||||
| 	    $time = &TWiki::formatGmTime( $changeTime ); | ||||
|             $newText =~ s/%TIME%/$time/go; | ||||
|             $newText =~ s/%REVISION%/$frev/go; | ||||
| 	    $newText = &TWiki::getRenderedVersion( $newText ); | ||||
| 
 | ||||
|             $head = &TWiki::Store::readFileHead( "$dataDir\/$webName\/$topicName.txt", 16 ); | ||||
|             $head = &TWiki::makeTopicSummary( $head, $topicName, $webName ); | ||||
|             $newText =~ s/%TEXTHEAD%/$head/go; | ||||
| 
 | ||||
| 	    $emailbody .= $newText; | ||||
| 	    $exclude{ $topicName } = "1"; | ||||
| 
 | ||||
| 	    $debug && print "$topicName "; | ||||
| 
 | ||||
| 	    # URL-encode topic names for use of I18N topic names in plain text | ||||
| 	    $webNameEnc = TWiki::handleUrlEncode( $webName ); | ||||
| 	    my $topicNameEnc = TWiki::handleUrlEncode( $topicName ); | ||||
| 
 | ||||
| 	    # Create entry in plain-text email body | ||||
| 	    $newText = "- $topicName  ($wikiuser)\n  $scriptUrl/view$scriptSuffix/$webNameEnc/$topicNameEnc\n"; | ||||
|             $newText =~ s/Main\.//go; | ||||
| 	    $topiclist = "$topiclist$newText"; | ||||
| 	} | ||||
|     } | ||||
| 
 | ||||
|     if( $topiclist eq "" ) { | ||||
| 	$debug && print "- Note: Topic list is empty\n"; | ||||
| 	return; | ||||
|     } | ||||
|     $debug && print "\n"; | ||||
| 
 | ||||
|     $emailbody .= $after; | ||||
| 
 | ||||
|     my $from = &TWiki::Prefs::getPreferencesValue("WIKIWEBMASTER"); | ||||
| 
 | ||||
|     my $notifylist = join ', ', @notifylist; | ||||
| 
 | ||||
|     $text = &TWiki::Store::readTemplate( "mailnotify", $skin ); | ||||
|     $text =~ s/%EMAILFROM%/$from/go; | ||||
|     $text =~ s/%EMAILTO%/$notifylist/go; | ||||
|     $text =~ s/%EMAILBODY%/$emailbody/go; | ||||
|     $text =~ s/%TOPICLIST%/$topiclist/go; | ||||
|     $text =~ s/%LASTDATE%/&TWiki::formatGmTime($prevLastmodify)/geo; | ||||
|     $text = &TWiki::handleCommonTags( $text, $topic ); | ||||
| 
 | ||||
|     # change absolute addresses to relative ones & do some cleanup | ||||
|     $text =~ s/(href=\")$scriptUrlPath/$1..\/../goi; | ||||
|     $text =~ s/(action=\")$scriptUrlPath/$1..\/../goi; | ||||
|     $text =~ s|( ?) *</*nop/*>\n?|$1|gois; | ||||
| 
 | ||||
|     $debug && print "- Sending mail notification to: $notifylist\n"; | ||||
| 
 | ||||
|     my $error = &TWiki::Net::sendEmail( $text ); | ||||
|     if( $error ) { | ||||
| 	print STDERR "* $error\n"; | ||||
|         $debug && print "- End TWiki.$webName\n"; | ||||
| 
 | ||||
|     } else { | ||||
|         &TWiki::Store::saveFile( "$dataDir/$webName/.mailnotify", $currLastmodify ); | ||||
| 
 | ||||
| 	$debug && print "- End TWiki.$webName, mail notification sent\n"; | ||||
|     } | ||||
| } | ||||
| 
 | ||||
							
								
								
									
										2
									
								
								mainemacs
									
										
									
									
									
										Executable file
									
								
							
							
						
						
									
										2
									
								
								mainemacs
									
										
									
									
									
										Executable file
									
								
							|  | @ -0,0 +1,2 @@ | |||
| #!/bin/sh | ||||
| emacs --funcall "mu4e" --name mainemacs | ||||
							
								
								
									
										266
									
								
								manage
									
										
									
									
									
										Executable file
									
								
							
							
						
						
									
										266
									
								
								manage
									
										
									
									
									
										Executable file
									
								
							|  | @ -0,0 +1,266 @@ | |||
| #!/usr/bin/perl -wT | ||||
| # | ||||
| # TWiki Collaboration Platform, http://TWiki.org/ | ||||
| # | ||||
| # Copyright (C) 2002-2003 Peter Thoeny, peter@thoeny.com | ||||
| # | ||||
| # For licensing info read license.txt file in the TWiki root. | ||||
| # 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 2 | ||||
| # 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, published at | ||||
| # http://www.gnu.org/copyleft/gpl.html | ||||
| # | ||||
| # The manage script is used to manage some actions like creating | ||||
| # a new web. | ||||
| 
 | ||||
| # Set library paths in @INC, at compile time | ||||
| BEGIN { unshift @INC, '.'; require 'setlib.cfg'; } | ||||
| 
 | ||||
| use CGI::Carp qw( fatalsToBrowser ); | ||||
| use CGI; | ||||
| use File::Copy; | ||||
| use TWiki; | ||||
| 
 | ||||
| use strict; | ||||
| 
 | ||||
| &main(); | ||||
| 
 | ||||
| #========================= | ||||
| sub main | ||||
| { | ||||
|     my $query = new CGI; | ||||
|     my $action = $query->param( 'action' ) || ""; | ||||
| 
 | ||||
|     if( $action eq "createweb" ) { | ||||
|         createWeb( $query ); | ||||
| 
 | ||||
|     # } elsif( $action eq "othercommand" ) { | ||||
| 
 | ||||
|     } elsif( $action ) { | ||||
|         oopsRedirectMsg( $query, "", "", "", "msg_unrecognized_action", $action ); | ||||
|     } else { | ||||
|         oopsRedirectMsg( $query, "", "", "", "msg_missing_action" ); | ||||
|     } | ||||
| } | ||||
| 
 | ||||
| #========================= | ||||
| sub oopsRedirectMsg | ||||
| { | ||||
|     my( $theQuery, $theWeb, $theTopic, $theOopsTmpl, $theTmplVar, $theMsg2, $theMsg3, $theMsg4 ) = @_; | ||||
| 
 | ||||
|     $theWeb = $TWiki::mainWebname unless( $theWeb ); | ||||
|     $theTopic = $TWiki::mainTopicname unless( $theTopic ); | ||||
|     $theOopsTmpl = "oopsmanage" unless( $theOopsTmpl ); | ||||
|     my $url = &TWiki::getOopsUrl( $theWeb, $theTopic, $theOopsTmpl, | ||||
|                                   "%TMPL:P{\"$theTmplVar\"}%", $theMsg2, $theMsg3, $theMsg4 ); | ||||
|     TWiki::redirect( $theQuery, $url ); | ||||
| } | ||||
| 
 | ||||
| #========================= | ||||
| sub createWeb | ||||
| { | ||||
|     my( $query ) = @_; | ||||
| 
 | ||||
|     my $thePathInfo = $query->path_info();  | ||||
|     my $theRemoteUser = $query->remote_user(); | ||||
|     my $theTopic = $query->param( 'topic' ); | ||||
| 
 | ||||
|     my $newWeb = $query->param( 'newweb' ) || ""; | ||||
|     my $newTopic = $query->param( 'newtopic' ) || ""; | ||||
|     my $baseWeb = $query->param( 'baseweb' ) || ""; | ||||
|     my $webBgColor = $query->param( 'webbgcolor' ) || ""; | ||||
|     my $siteMapWhat = $query->param( 'sitemapwhat' ) || ""; | ||||
|     my $siteMapUseTo = $query->param( 'sitemapuseto' ) || ""; | ||||
|     my $noSearchAll = $query->param( 'nosearchall' ) || ""; | ||||
|     my $theUrl = $query->url; | ||||
|     my $oopsTmpl = "oopsmngcreateweb"; | ||||
| 
 | ||||
|     # initialize TWiki | ||||
|     my( $topicName, $webName, $dummy, $userName ) =  | ||||
|         &TWiki::initialize( $thePathInfo, $theRemoteUser, $theTopic, $theUrl, $query ); | ||||
|     $dummy = ""; # avoid warning | ||||
| 
 | ||||
|     # check permission, user authorized to create webs? | ||||
|     my $wikiUserName = &TWiki::userToWikiName( $userName ); | ||||
|     unless( &TWiki::Access::checkAccessPermission( "manage", $wikiUserName, "",  | ||||
|                                                  $topicName, $webName ) ) { | ||||
|        # user has not permission to change the topic | ||||
|        my $url = &TWiki::getOopsUrl( $webName, $topicName, "oopsaccesscreateweb" ); | ||||
|        TWiki::redirect( $query, $url ); | ||||
|        return; | ||||
|     } | ||||
| 
 | ||||
|     if( $newWeb =~ /^_[a-zA-Z0-9_]+$/ ) { | ||||
|         # valid template web name, untaint | ||||
|         $newWeb =~ /(.*)/; | ||||
|         $newWeb = $1; | ||||
|     } elsif( TWiki::isWebName( $newWeb ) ) { | ||||
|         # valid web name, untaint | ||||
|         $newWeb =~ /(.*)/; | ||||
|         $newWeb = $1; | ||||
|     } elsif( $newWeb ) { | ||||
|         oopsRedirectMsg( $query, "", "", $oopsTmpl, "msg_web_name" ); | ||||
|         return; | ||||
|     } else { | ||||
|         oopsRedirectMsg( $query, "", "", $oopsTmpl, "msg_web_missing" ); | ||||
|         return; | ||||
|     } | ||||
| 
 | ||||
|     if( TWiki::Store::topicExists( $newWeb, $TWiki::mainTopicname ) ) { | ||||
|         oopsRedirectMsg( $query, "", "", $oopsTmpl, "msg_web_exist", $newWeb ); | ||||
|         return; | ||||
|     } | ||||
| 
 | ||||
|     $baseWeb =~ s/$TWiki::securityFilter//go; | ||||
|     $baseWeb =~ /(.*)/; | ||||
|     $baseWeb = $1; | ||||
| 
 | ||||
|     unless( TWiki::Store::topicExists( $baseWeb, $TWiki::mainTopicname ) ) { | ||||
|         oopsRedirectMsg( $query, "", "", $oopsTmpl, "msg_base_web", $baseWeb ); | ||||
|         return; | ||||
|     } | ||||
| 
 | ||||
|     unless( $webBgColor =~ /\#[0-9a-f]{6}/i ) { | ||||
|         oopsRedirectMsg( $query, "", "", $oopsTmpl, "msg_web_color" ); | ||||
|         return; | ||||
|     } | ||||
| 
 | ||||
|     # create the empty web | ||||
|     my $err = createEmptyWeb( $newWeb ); | ||||
|     if( $err ) { | ||||
|         oopsRedirectMsg( $query, "", "", $oopsTmpl, "msg_web_create", $err ); | ||||
|         return; | ||||
|     } | ||||
| 
 | ||||
|     # copy needed topics from base web | ||||
|     $err = copyWebTopics( $baseWeb, $newWeb ); | ||||
|     if( $err ) { | ||||
|         oopsRedirectMsg( $query, $newWeb, "", $oopsTmpl, "msg_web_copy_topics", $err ); | ||||
|         return; | ||||
|     } | ||||
| 
 | ||||
|     # patch WebPreferences | ||||
|     $err = patchWebPreferences( $newWeb, $TWiki::webPrefsTopicname, $webBgColor,  | ||||
|                                 $siteMapWhat, $siteMapUseTo, $noSearchAll ); | ||||
|     if( $err ) { | ||||
|         oopsRedirectMsg( $query, $newWeb, $TWiki::webPrefsTopicname, $oopsTmpl, "msg_patch_webpreferences", $err ); | ||||
|         return; | ||||
|     } | ||||
| 
 | ||||
|     # everything OK, redirect to last message | ||||
|     $newTopic = $TWiki::mainTopicname unless( $newTopic ); | ||||
|     oopsRedirectMsg( $query, $newWeb, $newTopic, $oopsTmpl, "msg_create_web_ok" ); | ||||
|     return; | ||||
| } | ||||
| 
 | ||||
| #========================= | ||||
| sub createEmptyWeb | ||||
| { | ||||
|     my ( $theWeb ) = @_; | ||||
| 
 | ||||
|     my $dir = "$TWiki::dataDir/$theWeb"; | ||||
|     umask( 0 ); | ||||
|     unless( mkdir( $dir, 0775 ) ) { | ||||
|         return( "Could not create $dir, error: $!" ); | ||||
|     } | ||||
| 
 | ||||
|     if ( $TWiki::useRcsDir ) { | ||||
|         unless( mkdir( "$dir/RCS", 0775 ) ) { | ||||
|             return( "Could not create $dir/RCS, error: $!" ); | ||||
|         } | ||||
|     } | ||||
| 
 | ||||
|     unless( open( FILE, ">$dir/.changes" ) ) { | ||||
|         return( "Could not create changes file $dir/.changes, error: $!" ); | ||||
|     } | ||||
|     print FILE "";  # empty file | ||||
|     close( FILE ); | ||||
| 
 | ||||
|     unless( open( FILE, ">$dir/.mailnotify" ) ) { | ||||
|         return( "Could not create mailnotify timestamp file $dir/.mailnotify, error: $!" ); | ||||
|     } | ||||
|     print FILE "";  # empty file | ||||
|     close( FILE ); | ||||
|     return ""; | ||||
| } | ||||
| 
 | ||||
| #========================= | ||||
| sub copyWebTopics | ||||
| { | ||||
|     my ( $theBaseWeb, $theNewWeb ) = @_; | ||||
| 
 | ||||
|     my $err = ""; | ||||
|     my @topicList = &TWiki::Store::getTopicNames( $theBaseWeb ); | ||||
|     unless( $theBaseWeb =~ /^_/ ) { | ||||
|         # not a template web, so filter for only Web* topics | ||||
|         @topicList = grep { /^Web/ } @topicList; | ||||
|     } | ||||
|     foreach my $topic ( @topicList ) { | ||||
|         $topic =~ s/$TWiki::securityFilter//go; | ||||
|         $topic =~ /(.*)/; | ||||
|         $topic = $1; | ||||
|         $err = copyOneTopic( $theBaseWeb, $topic, $theNewWeb ); | ||||
|         return( $err ) if( $err ); | ||||
|     } | ||||
|     return ""; | ||||
| } | ||||
| 
 | ||||
| #========================= | ||||
| sub copyOneTopic | ||||
| { | ||||
|     my ( $theFromWeb, $theTopic, $theToWeb ) = @_; | ||||
| 
 | ||||
|     # FIXME: This should go into TWiki::Store | ||||
| 
 | ||||
|     # copy topic file | ||||
|     my $from = "$TWiki::dataDir/$theFromWeb/$theTopic.txt"; | ||||
|     my $to = "$TWiki::dataDir/$theToWeb/$theTopic.txt"; | ||||
|     unless( copy( $from, $to ) ) { | ||||
|         return( "Copy file ( $from, $to ) failed, error: $!" ); | ||||
|     } | ||||
|     umask( 002 ); | ||||
|     chmod( 0644, $to ); | ||||
| 
 | ||||
|     # copy repository file | ||||
|     # FIXME: Hack, no support for RCS subdirectory | ||||
|     $from .= ",v"; | ||||
|     $to .= ",v"; | ||||
|     unless( copy( $from, $to ) ) { | ||||
|         return( "Copy file ( $from, $to ) failed, error: $!" ); | ||||
|     } | ||||
|     umask( 002 ); | ||||
|     chmod( 0644, $to ); | ||||
| 
 | ||||
|     # FIXME: Copy also attachments if present | ||||
| 
 | ||||
|     return ""; | ||||
| } | ||||
| 
 | ||||
| #========================= | ||||
| sub patchWebPreferences | ||||
| { | ||||
|     my ( $theWeb, $theTopic, $theWebBgColor, $theSiteMapWhat, $theSiteMapUseTo, $doNoSearchAll ) = @_; | ||||
| 
 | ||||
|     my( $meta, $text ) = &TWiki::Store::readTopic( $theWeb, $theTopic ); | ||||
| 
 | ||||
|     my $siteMapList = ""; | ||||
|     $siteMapList = "on" if( $theSiteMapWhat ); | ||||
|     $text =~ s/(\s\* Set WEBBGCOLOR =)[^\n\r]*/$1 $theWebBgColor/os; | ||||
|     $text =~ s/(\s\* Set SITEMAPLIST =)[^\n\r]*/$1 $siteMapList/os; | ||||
|     $text =~ s/(\s\* Set SITEMAPWHAT =)[^\n\r]*/$1 $theSiteMapWhat/os; | ||||
|     $text =~ s/(\s\* Set SITEMAPUSETO =)[^\n\r]*/$1 $theSiteMapUseTo/os; | ||||
|     $text =~ s/(\s\* Set NOSEARCHALL =)[^\n\r]*/$1 $doNoSearchAll/os; | ||||
| 
 | ||||
|     my $err = &TWiki::Store::saveTopic( $theWeb, $theTopic, $text, $meta ); | ||||
| 
 | ||||
|     return $err; | ||||
| } | ||||
| 
 | ||||
| #========================= | ||||
| # EOF | ||||
							
								
								
									
										2
									
								
								map-touchscreen
									
										
									
									
									
										Executable file
									
								
							
							
						
						
									
										2
									
								
								map-touchscreen
									
										
									
									
									
										Executable file
									
								
							|  | @ -0,0 +1,2 @@ | |||
| #!/bin/sh | ||||
| xinput map-to-output "ELAN Touchscreen" eDP1 | ||||
							
								
								
									
										3
									
								
								minifirewall
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										3
									
								
								minifirewall
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,3 @@ | |||
| modprobe ip_tables | ||||
| iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE | ||||
| echo 1 > /proc/sys/net/ipv4/ip_forward | ||||
							
								
								
									
										36
									
								
								monotone-snapshotting
									
										
									
									
									
										Executable file
									
								
							
							
						
						
									
										36
									
								
								monotone-snapshotting
									
										
									
									
									
										Executable file
									
								
							|  | @ -0,0 +1,36 @@ | |||
| #!/bin/sh | ||||
| # | ||||
| # Nico Schottelius (nico-linux@schottelius.org) | ||||
| # Juli 2004 | ||||
| # extract a snapshot from a monotone database | ||||
| # Version: 0.1 | ||||
| # | ||||
| 
 | ||||
| ######### must be changed ############ | ||||
| DESTINATION=/home/server/ftp/pub/linux/gpm/ | ||||
| PACKAGE=gpm | ||||
| DB=/home/server/monotone/gpm-new.db | ||||
| BRANCH=org.schottelius.gpm | ||||
| 
 | ||||
| ######### may be changed ############ | ||||
| MONOTONE=/usr/packages/monotone-0.17/bin/monotone | ||||
| TMP=/tmp | ||||
| 
 | ||||
| ########### no changes below here needed ######## | ||||
| DATE=`date +%Y-%m-%d` | ||||
| YESTERDAY=`date -d yesterday +%Y-%m-%d` | ||||
| DIRNAME="$PACKAGE"-snapshot-"$DATE" | ||||
| TARNAME="${DIRNAME}.tar.bz2" | ||||
| YESTERDAY_TARFILE="${DESTINATION}/${PACKAGE}-snapshot-${YESTERDAY}.tar.bz2" | ||||
| 
 | ||||
| ########### program code  ######## | ||||
| cd "$TMP" | ||||
| 
 | ||||
| "$MONOTONE" --db="$DB" --branch="$BRANCH" co "$DIRNAME" 2>/dev/null | ||||
| 
 | ||||
| tar cfj "$TARNAME" "$DIRNAME" && mv "$TARNAME" "$DESTINATION" | ||||
| 
 | ||||
| # cleanup | ||||
| rm -f "$YESTERDAY_TARFILE" | ||||
| rm -fr "$DIRNAME" "$TARNAME" | ||||
| 
 | ||||
							
								
								
									
										1
									
								
								mount-luchsingen
									
										
									
									
									
										Executable file
									
								
							
							
						
						
									
										1
									
								
								mount-luchsingen
									
										
									
									
									
										Executable file
									
								
							|  | @ -0,0 +1 @@ | |||
| sshfs nutzer@luchsingen.schottelius.org:/ ~/.loch | ||||
							
								
								
									
										3
									
								
								mplayer-audio-hdmi
									
										
									
									
									
										Executable file
									
								
							
							
						
						
									
										3
									
								
								mplayer-audio-hdmi
									
										
									
									
									
										Executable file
									
								
							|  | @ -0,0 +1,3 @@ | |||
| #!/bin/sh | ||||
| 
 | ||||
| mplayer -ao alsa:device=hw=0.7 "$@" | ||||
							
								
								
									
										53
									
								
								mysql-db-dump.sh
									
										
									
									
									
										Executable file
									
								
							
							
						
						
									
										53
									
								
								mysql-db-dump.sh
									
										
									
									
									
										Executable file
									
								
							|  | @ -0,0 +1,53 @@ | |||
| #!/bin/sh | ||||
| # Nico Schottelius | ||||
| # written for SyGroup (www.sygroup.ch) | ||||
| # Date: Fr Nov 18 11:41:25 CET 2005 | ||||
| # Last Modified: | ||||
| 
 | ||||
| if [ $# -ne 1 ]; then exit 23; fi | ||||
| 
 | ||||
| DB=$1 | ||||
| 
 | ||||
| export DESTDIR=/home/server/backup/db/ | ||||
| export GITDIR=/home/server/git/datenbank | ||||
| export LOG=/var/log/gitdump.log | ||||
| export DATUM=$(date +%Y-%m-%d) | ||||
| export ZEIT=$(date +%H:%M) | ||||
| 
 | ||||
| export DDIR="$DESTDIR/$DATUM" | ||||
| export DFILE="$DDIR/$ZEIT" | ||||
| export GITFILE="$GITDIR/current" | ||||
| 
 | ||||
| echo "Start: $(date) $DB" >> "$LOG" | ||||
| 
 | ||||
| mkdir -p "$DDIR" | ||||
| # | ||||
| #   -u root           \ | ||||
| #   -p                \ | ||||
| # Dump ins archiv mit heilen umlauten, unlesbar | ||||
| mysqldump            \ | ||||
|    --opt        \ | ||||
|    --add-drop-table  \ | ||||
|    --add-locks       \ | ||||
|    --all             \ | ||||
|    --quick           \ | ||||
|    --lock-tables     \ | ||||
|    "$DB"             > ${DFILE} | ||||
| 
 | ||||
| #ln -f "$DFILE" "$GITDIR/current" | ||||
| 
 | ||||
| # Dump ins git mit kaputten umlauten, aber lesbar | ||||
| mysqldump            \ | ||||
|    --skip-opt        \ | ||||
|    --add-drop-table  \ | ||||
|    --add-locks       \ | ||||
|    --all             \ | ||||
|    --quick           \ | ||||
|    --lock-tables     \ | ||||
|    -c                \ | ||||
|    "$DB"             > ${GITFILE} | ||||
| 
 | ||||
| ( cd "$GITDIR"; cg-commit -m "DB-Dump: $DB vom $DATUM um $ZEIT" >> "$LOG" 2>&1 ) | ||||
| 
 | ||||
| echo "Ende: $(date) $DB" >> "$LOG" | ||||
| 
 | ||||
							
								
								
									
										27
									
								
								new.wddb.entry
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										27
									
								
								new.wddb.entry
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,27 @@ | |||
| # continent="africa|asia|australia|europe|northamerica|southamerica" | ||||
| continent="europe" | ||||
| 
 | ||||
| # the country, spoken in english | ||||
| country="germany" | ||||
| 
 | ||||
| # use: state/city/part_of_city/anymoredetailedinfo | ||||
| # you need to follow the '/' syntax! | ||||
| area="niedersachsen/garbsen/garbsen-mitte/" | ||||
| 
 | ||||
| # network id | ||||
| essid="Waevelan" | ||||
| 
 | ||||
| # mac | ||||
| mac="00:00:00:00:00" | ||||
| 
 | ||||
| # rate in Mbit/s | ||||
| rate="11" | ||||
| 
 | ||||
| # Wireless Insecure Privacy? (y/n) | ||||
| wep="n" | ||||
| 
 | ||||
| # any hints? | ||||
| hints="dhcp available" | ||||
| 
 | ||||
| # exact location description | ||||
| location="on the road from Schloss Ricklingen to Garbsen" | ||||
							
								
								
									
										118
									
								
								newnameserver
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										118
									
								
								newnameserver
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,118 @@ | |||
| #!/bin/bash | ||||
| # Author: Nico Schottelius ( nicos@pcsystems.de ) | ||||
| # Last Modified by:  | ||||
| # Date: 20th of January 2000 | ||||
| # Last Changed: 20th of January | ||||
| # Description: Skript which does mapping and reverse | ||||
| #  | ||||
| 
 | ||||
| # My variables :-) | ||||
| host="" | ||||
| ip="" | ||||
| choice="y" | ||||
| class="" | ||||
| domain="mignet.magrathea.de" | ||||
| 
 | ||||
| 
 | ||||
| # Title | ||||
| echo "## Neuer Nameserver-Eintrag ##" | ||||
| read -p "Bitte Domain eingeben ($domain) : " domain | ||||
| 
 | ||||
| # Check if zero domain | ||||
| if [ -z "$domain" ]; then domain="mignet.magrathea.de";fi | ||||
| 
 | ||||
| # Main loop for more than one host in a domain | ||||
| while [ "$choice" = "y" -o "$choice" = "Y" ]  | ||||
| do  | ||||
| 
 | ||||
| read -p "Hostname tippen: " host | ||||
| read -p "IP klopfen: " ip | ||||
| read -p "NetClass eingeben: (a,b,c): " class | ||||
| 
 | ||||
| echo -n "Uno momento..." | ||||
| 
 | ||||
| 
 | ||||
| # The real program | ||||
| 
 | ||||
| # First mapping | ||||
| if [ -e /var/named/$domain ];  | ||||
|   then  | ||||
|   echo "$host		IN	A		$ip" >> /var/named/$domain | ||||
| else | ||||
|   cat << EOF >> /etc/named.conf | ||||
|    | ||||
| zone "$domain"  in { | ||||
| 	type master; | ||||
| 	file "$domain"; | ||||
| }; | ||||
| EOF | ||||
|   cat /var/named/sample/domain > /var/named/$domain | ||||
|   echo "$host		IN	A		$ip" >> /var/named/$domain | ||||
| fi | ||||
| echo -n "." | ||||
| 
 | ||||
| # Lookup the host and net id, to choose the right arpa file | ||||
| # For A it is net=172 host=16.1.1 | ||||
| if [ $class = a -o $class = A ]; | ||||
|  then  | ||||
|   # Get the arpa file | ||||
|   net=`echo $ip | cut -d. -f1` | ||||
|    | ||||
|   # Get the hostid. | ||||
|   ho=`echo $ip |cut -d. -f2-4` | ||||
| 
 | ||||
|   # The reverse Net | ||||
|   rnet=$net | ||||
| 
 | ||||
| # For B it is net=172.16 host=1.1 | ||||
| elif [ $class = b -o $class = B ]; | ||||
|  then | ||||
|   # Get the arpa file | ||||
|   net=`echo $ip | cut -d. -f1-2` | ||||
|    | ||||
|   # Get the hostid. | ||||
|   ho=`echo $ip | cut -d. -f3-4` | ||||
| 
 | ||||
|   # The reverse Net | ||||
|   rnet1=`echo $ip | cut -d. -f1` | ||||
|   rnet2=`echo $ip | cut -d. -f2` | ||||
|   rnet="$rnet2.$rnet1" | ||||
|    | ||||
| # For C it is net=172.16.1 host=1 | ||||
| elif [ $class = c -o $class = C ]; | ||||
|  then | ||||
|   # Get the arpa file | ||||
|   net=`echo $ip | cut -d. -f1-3` | ||||
|    | ||||
|   # Get the hostid. | ||||
|   ho=`echo $ip | cut -d. -f4` | ||||
|    | ||||
|   # The reverse Net | ||||
|   rnet1=`echo $ip | cut -d. -f1` | ||||
|   rnet2=`echo $ip | cut -d. -f2` | ||||
|   rnet3=`echo $ip | cut -d. -f3` | ||||
|   rnet="$rnet3.$rnet2.$rnet1" | ||||
| fi | ||||
| 
 | ||||
| echo -n "." | ||||
| 
 | ||||
| if [ -e /var/named/reverse/$net ]; | ||||
|   then  | ||||
|   echo "$ho		IN	PTR	$host.$domain." >> /var/named/reverse/$net | ||||
|    | ||||
| else | ||||
|   cat << EOF >> /etc/named.conf | ||||
|    | ||||
| zone "${rnet}.in-addr.arpa" in { | ||||
| 	type master; | ||||
| 	file "reverse/$net"; | ||||
| }; | ||||
| EOF | ||||
| 
 | ||||
|   cat /var/named/sample/reverse > /var/named/reverse/$net | ||||
|   echo "$ho		IN	PTR	$host.$domain." >> /var/named/reverse/$net | ||||
| fi | ||||
| echo -n "." | ||||
| echo 'Finito :-)' | ||||
| read -p "Noch einen Host in $domain eintragen ? " choice | ||||
| done | ||||
							
								
								
									
										9
									
								
								nmapscan
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										9
									
								
								nmapscan
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,9 @@ | |||
| BASE=192.168.0 | ||||
| SMBCLIENT="nmap" | ||||
| 
 | ||||
| i=0 | ||||
| 
 | ||||
| while [ $i -lt 255 ]; do  | ||||
| 	$SMBCLIENT "$BASE"."$i" | ||||
| 	i=$[$i+1] | ||||
| done | ||||
							
								
								
									
										151
									
								
								notmuch-emacs-mua
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										151
									
								
								notmuch-emacs-mua
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,151 @@ | |||
| #!/usr/bin/env bash | ||||
| # | ||||
| # notmuch-emacs-mua - start composing a mail on the command line | ||||
| # | ||||
| # Copyright © 2014 Jani Nikula | ||||
| # | ||||
| # 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/ . | ||||
| # | ||||
| # Authors: Jani Nikula <jani@nikula.org> | ||||
| # | ||||
| 
 | ||||
| set -eu | ||||
| 
 | ||||
| # escape: "expand" '\' as '\\' and '"' as '\"' | ||||
| # calling convention: escape -v var "$arg" (like in bash printf). | ||||
| escape () | ||||
| { | ||||
|     local __escape_arg__=${3//\\/\\\\} | ||||
|     printf -v $2 '%s' "${__escape_arg__//\"/\\\"}" | ||||
| } | ||||
| 
 | ||||
| EMACS=${EMACS:-emacs} | ||||
| EMACSCLIENT=${EMACSCLIENT:-emacsclient} | ||||
| 
 | ||||
| PRINT_ONLY= | ||||
| NO_WINDOW= | ||||
| USE_EMACSCLIENT= | ||||
| AUTO_DAEMON= | ||||
| CREATE_FRAME= | ||||
| 
 | ||||
| # The crux of it all: construct an elisp progn and eval it. | ||||
| ELISP="(prog1 'done (require 'notmuch) (notmuch-mua-new-mail)" | ||||
| 
 | ||||
| # Short options compatible with mutt(1). | ||||
| while getopts :s:c:b:i:h opt; do | ||||
|     # Handle errors and long options. | ||||
|     case "${opt}" in | ||||
| 	:) | ||||
| 	    echo "$0: short option -${OPTARG} requires an argument." >&2 | ||||
| 	    exit 1 | ||||
| 	    ;; | ||||
| 	\?) | ||||
| 	    opt=$1 | ||||
| 	    if [ "${OPTARG}" != "-" ]; then | ||||
| 		echo "$0: unknown short option -${OPTARG}." >&2 | ||||
| 		exit 1 | ||||
| 	    fi | ||||
| 
 | ||||
| 	    case "${opt}" in | ||||
| 		# Long options with arguments. | ||||
| 		--subject=*|--to=*|--cc=*|--bcc=*|--body=*) | ||||
| 		    OPTARG=${opt#--*=} | ||||
| 		    opt=${opt%%=*} | ||||
| 		    ;; | ||||
| 		# Long options without arguments. | ||||
| 		--help|--print|--no-window-system|--client|--auto-daemon|--create-frame) | ||||
| 		    ;; | ||||
| 		*) | ||||
| 		    echo "$0: unknown long option ${opt}, or argument mismatch." >&2 | ||||
| 		    exit 1 | ||||
| 		    ;; | ||||
| 	    esac | ||||
| 	    # getopts does not do this for what it considers errors. | ||||
| 	    OPTIND=$((OPTIND + 1)) | ||||
| 	    ;; | ||||
|     esac | ||||
| 
 | ||||
|     escape -v OPTARG "${OPTARG-none}" | ||||
| 
 | ||||
|     case "${opt}" in | ||||
| 	--help|h) | ||||
| 	    exec man notmuch-emacs-mua | ||||
| 	    ;; | ||||
| 	--subject|s) | ||||
| 	    ELISP="${ELISP} (message-goto-subject) (insert \"${OPTARG}\")" | ||||
| 	    ;; | ||||
| 	--to) | ||||
| 	    ELISP="${ELISP} (message-goto-to) (insert \"${OPTARG}, \")" | ||||
| 	    ;; | ||||
| 	--cc|c) | ||||
| 	    ELISP="${ELISP} (message-goto-cc) (insert \"${OPTARG}, \")" | ||||
| 	    ;; | ||||
| 	--bcc|b) | ||||
| 	    ELISP="${ELISP} (message-goto-bcc) (insert \"${OPTARG}, \")" | ||||
| 	    ;; | ||||
| 	--body|i) | ||||
| 	    ELISP="${ELISP} (message-goto-body) (cd \"${PWD}\") (insert-file \"${OPTARG}\")" | ||||
| 	    ;; | ||||
| 	--print) | ||||
| 	    PRINT_ONLY=1 | ||||
| 	    ;; | ||||
| 	--no-window-system) | ||||
| 	    NO_WINDOW="-nw" | ||||
| 	    ;; | ||||
| 	--client) | ||||
| 	    USE_EMACSCLIENT="yes" | ||||
| 	    ;; | ||||
| 	--auto-daemon) | ||||
| 	    AUTO_DAEMON="--alternate-editor=" | ||||
| 	    CREATE_FRAME="-c" | ||||
| 	    ;; | ||||
| 	--create-frame) | ||||
| 	    CREATE_FRAME="-c" | ||||
| 	    ;; | ||||
| 	*) | ||||
| 	    # We should never end up here. | ||||
| 	    echo "$0: internal error (option ${opt})." >&2 | ||||
| 	    exit 1 | ||||
| 	    ;; | ||||
|     esac | ||||
| 
 | ||||
|     shift $((OPTIND - 1)) | ||||
|     OPTIND=1 | ||||
| done | ||||
| 
 | ||||
| # Positional parameters. | ||||
| for arg; do | ||||
|     escape -v arg "${arg}" | ||||
|     ELISP="${ELISP} (message-goto-to) (insert \"${arg}, \")" | ||||
| done | ||||
| 
 | ||||
| # Kill the terminal/frame if we're creating one. | ||||
| if [ -z "$USE_EMACSCLIENT" -o -n "$CREATE_FRAME" -o -n "$NO_WINDOW" ]; then | ||||
|     ELISP="${ELISP} (setq message-exit-actions (list #'save-buffers-kill-terminal))" | ||||
| fi | ||||
| 
 | ||||
| # End progn. | ||||
| ELISP="${ELISP})" | ||||
| 
 | ||||
| if [ -n "$PRINT_ONLY" ]; then | ||||
|     echo ${ELISP} | ||||
|     exit 0 | ||||
| fi | ||||
| 
 | ||||
| if [ -n "$USE_EMACSCLIENT" ]; then | ||||
|     # Evaluate the progn. | ||||
|     exec ${EMACSCLIENT} ${NO_WINDOW} ${CREATE_FRAME} ${AUTO_DAEMON} --eval "${ELISP}" | ||||
| else | ||||
|     exec ${EMACS} ${NO_WINDOW} --eval "${ELISP}" | ||||
| fi | ||||
							
								
								
									
										527
									
								
								nottoomuch-addresses.sh
									
										
									
									
									
										Executable file
									
								
							
							
						
						
									
										527
									
								
								nottoomuch-addresses.sh
									
										
									
									
									
										Executable file
									
								
							|  | @ -0,0 +1,527 @@ | |||
| #!/bin/sh | ||||
| # -*- cperl -*- | ||||
| 
 | ||||
| case $* in (''|--*) exec perl -x "$0" "$@" ;; (???*) ;; (*) exit 0 ;; esac | ||||
| grep -aiF "$*" "${XDG_CONFIG_HOME:-$HOME/.config}/nottoomuch/addresses.active" | ||||
| case $? in 0|1) exit 0; esac | ||||
| exit $? | ||||
| 
 | ||||
| # $ nottoomuch-addresses.sh $ | ||||
| # | ||||
| # Created: Thu 27 Oct 2011 17:38:46 EEST too | ||||
| # Last modified: Sat 29 Mar 2014 17:12:14 +0200 too | ||||
| 
 | ||||
| # Add this to your notmuch elisp configuration file: | ||||
| # | ||||
| # (require 'notmuch-address) | ||||
| # (setq notmuch-address-command "/path/to/nottoomuch-addresses.sh") | ||||
| # (notmuch-address-message-insinuate) | ||||
| 
 | ||||
| # Documentation at the end. Encoding: utf-8. | ||||
| 
 | ||||
| #!perl | ||||
| # line 24 | ||||
| # - 24 -^ | ||||
| 
 | ||||
| # HISTORY | ||||
| # | ||||
| # Version 2.2  2014-03-29 15:12:14 UTC | ||||
| #   * In case there is both {phrase} and (comment) in an email address, | ||||
| #     append comment to the phrase. This will make more duplicates to be | ||||
| #     removed. Now there can be: | ||||
| #	<user@host> | ||||
| #	"phrase" <user@host> | ||||
| #	"phrase (comment)" <user@host> | ||||
| #	<user@host> (comment) | ||||
| #   * In case email address is in form "someuser@somehost" <someuser@somehost> | ||||
| #     i.e. the phrase is exactly the same as <address>, phrase is dropped. | ||||
| # | ||||
| # Version 2.1  2012-02-22 14:58:58 UTC | ||||
| #   * Fixed a bug where decoding matching but unknown or malformed =?...?=- | ||||
| #     encoded parts in email addresses lead to infinite loop. | ||||
| # | ||||
| # Version 2.0  2012-01-14 03:45:00 UTC | ||||
| #   * Added regexp-based ignores using /regexp/[i] syntax in ignore file. | ||||
| #   * Changed addresses file header to v4; 'addresses' file now contains all | ||||
| #     found addresses plus some metainformation added at the end of the file. | ||||
| #     Filtered (by ignores) address list is now in new 'addresses.active' | ||||
| #     file and the fgrep code at the beginning now uses this "active" file. | ||||
| #     Addresses file with header v2 and v3 are supported for reading. | ||||
| #   * Encoded address content is now recursively decoded. | ||||
| # | ||||
| # Version 1.6  2011-12-29 06:42:42 UTC | ||||
| #   * Fixed 'encoded-text' recognition and concatenations, and underscore | ||||
| #     to space replacements. Now quite RFC 2047 "compliant". | ||||
| # | ||||
| # Version 1.5  2011-12-22 20:20:32 UTC | ||||
| #   * Changed search to exit with zero value (also) if no match found. | ||||
| #   * Changed addresses file header (v3) to use \t as separator. Addresses | ||||
| #     file containing previous version header (v2) can also be read. | ||||
| #   * Removed outdated information about sorting in ASCII order. | ||||
| # | ||||
| # Version 1.4  2011-12-14 19:24:28 UTC | ||||
| #   * Changed to run notmuch search --sort=newest-first --output=files ... | ||||
| #     (instead of notmuch show ...) and read headers from files internally. | ||||
| #   * Fixed away joining uninitialized $phrase value to address line. | ||||
| # | ||||
| # Version 1.3  2011-12-12 15:41:05 UTC | ||||
| #   * Changed to store/show addresses in 'newest first' order. | ||||
| #   * Changed addresses file header to force address file rebuild. | ||||
| # | ||||
| # Version 1.2  2011-12-06 18:00:00 UTC | ||||
| #   * Changed search work case-insensitively -- grep(1) does it locale-aware. | ||||
| #   * Changed this program execute from /bin/sh (wrapper). | ||||
| # | ||||
| # Version 1.1  2011-12-02 17:11:33 UTC | ||||
| #   * Removed Naïve assumption that no-one runs update on 'dumb' terminal. | ||||
| #   * Check address database file first line whether it is known to us. | ||||
| # | ||||
| #   Thanks to Bart Bunting for providing a good bug report. | ||||
| # | ||||
| # Version 1.0  2011-11-30 20:56:10 UTC | ||||
| #   * Initial release. | ||||
| 
 | ||||
| use 5.8.1; | ||||
| use strict; | ||||
| use warnings; | ||||
| 
 | ||||
| use Encode qw/encode_utf8 find_encoding/; | ||||
| use MIME::Base64 'decode_base64'; | ||||
| use MIME::QuotedPrint 'decode_qp'; | ||||
| 
 | ||||
| no encoding; | ||||
| 
 | ||||
| my $configdir = ($ENV{XDG_CONFIG_HOME}||$ENV{HOME}.'/.config').'/nottoomuch'; | ||||
| my $adbpath = $configdir . '/addresses'; | ||||
| my $ignpath = $configdir . '/addresses.ignore'; | ||||
| my $actpath = $configdir . '/addresses.active'; | ||||
| 
 | ||||
| unless (@ARGV) | ||||
| { | ||||
|     require Pod::Usage; | ||||
|     Pod::Usage::pod2usage( -verbose => 0, -exitval => 0 ); | ||||
|     exit 1; | ||||
| } | ||||
| 
 | ||||
| if ($ARGV[0] eq '--help') | ||||
| { | ||||
|     $SIG{__DIE__} = sub { | ||||
|      	$SIG{__DIE__} = 'DEFAULT'; | ||||
|      	require Pod::Usage; | ||||
|      	Pod::Usage::pod2usage( -verbose => 2, -exitval => 0, -noperldoc => 1 ); | ||||
|      	exit 1; | ||||
|     }; | ||||
|     require Pod::Perldoc; | ||||
|     $SIG{__DIE__} = 'DEFAULT'; | ||||
|     # in case PAGER is not set, perldoc runs /usr/bin/perl -isr ... | ||||
|     if ( ($ENV{PAGER} || '') eq 'less') { | ||||
| 	$ENV{LESS} .= 'R' if ($ENV{LESS} || '') !~ /[rR]/; | ||||
|     } | ||||
|     @ARGV = ( $0 ); | ||||
|     exit ( Pod::Perldoc->run() ); | ||||
| } | ||||
| 
 | ||||
| my @list; | ||||
| 
 | ||||
| if ($ARGV[0] eq '--update') | ||||
| { | ||||
|     sub mkdirs($); | ||||
|     sub mkdirs($) { | ||||
| 	die "'$_[0]': not a (writable) directory\n" if -e $_[0]; | ||||
| 	return if mkdir $_[0]; # no mode: 0777 & ~umask used | ||||
| 	local $_ = $_[0]; | ||||
| 	mkdirs $_ if s|/?[^/]+$|| and $_; | ||||
| 	mkdir $_[0] or die "Cannot create '$_[0]': $!\n"; | ||||
|     } | ||||
| 
 | ||||
|     mkdirs $configdir unless -d $configdir; | ||||
| 
 | ||||
|     unlink $adbpath if defined $ARGV[1] and $ARGV[1] eq '--rebuild'; | ||||
| 
 | ||||
|     my ($sstr, $acount) = (0, 0); | ||||
|     if (-s $adbpath) { | ||||
| 	die "Cannot open '$adbpath': $!\n" unless open I, '<', $adbpath; | ||||
| 	sysread I, $_, 18; | ||||
| 	# new header: "v4/dd/dd/dd/dd/dd\n" where / == '\t' (but match also v2) | ||||
| 	if (/^v[234]\s(\d\d)\s(\d\d)\s(\d\d)\s(\d\d)\s(\d\d)\n$/) { | ||||
| 	    $sstr = "$1$2$3$4$5" - 86400 * 7; # one week extra to (re)look. | ||||
| 	    $sstr = 0 if $sstr < 0; | ||||
| 	} | ||||
| 	close I if $sstr == 0; | ||||
|     } | ||||
|     if ($sstr > 0) { | ||||
| 	print "Updating '$adbpath', since $sstr.\n"; | ||||
| 	$sstr .= '..'; | ||||
|     } | ||||
|     else { | ||||
| 	print "Creating '$adbpath'. This may take some time...\n"; | ||||
| 	$sstr = '*'; | ||||
|     } | ||||
|     my (%ign_hash, @ign_relist); | ||||
|     if (-f $ignpath) { | ||||
| 	die "Cannot open '$ignpath': $!\n" unless open J, '<', $ignpath; | ||||
| 	while (<J>) { | ||||
| 	    next if /^\s*#/; | ||||
| 	    if (m|^/(.*)/(\w*)\s*$|) { | ||||
| 		if ($2 eq 'i') { | ||||
| 		    push @ign_relist, qr/$1/i; | ||||
| 		} | ||||
| 		else { | ||||
| 		    push @ign_relist, qr/$1/; | ||||
| 		} | ||||
| 	    } | ||||
| 	    else { | ||||
| 		s/\s+$/\n/; | ||||
| 		$ign_hash{$_} = 1; | ||||
| 	    } | ||||
| 	} | ||||
| 	close J; | ||||
|     } | ||||
| 
 | ||||
|     my $sometime = time; | ||||
|     die "Cannot open '$adbpath.new': $!\n" unless open O, '>', $adbpath.'.new'; | ||||
|     die "Cannot open '$actpath.new': $!\n" unless open A, '>', $actpath.'.new'; | ||||
|     $_ = $sometime; s/(..)\B/$1\t/g; # FYI: s/..\B\K/\t/g requires perl 5.10. | ||||
|     print O "v4\t$_\n"; | ||||
| 
 | ||||
|     # The following code block is from Email::Address, almost verbatim. | ||||
|     # The reasons to snip code I instead of just 'use Email::Address' are: | ||||
|     #  1) Some systems ship Mail::Address instead of Email::Address | ||||
|     #  2) Every user doesn't have ability to install Email::Address | ||||
|     # --8<----8<----8<----8<----8<----8<----8<----8<----8<----8<----8<-- | ||||
| 
 | ||||
|     ## no critic RequireUseWarnings | ||||
|     # support pre-5.6 | ||||
| 
 | ||||
|     #$VERSION             = '1.889'; | ||||
|     my $COMMENT_NEST_LEVEL = 2; | ||||
| 
 | ||||
|     my $CTL            = q{\x00-\x1F\x7F}; | ||||
|     my $special        = q{()<>\\[\\]:;@\\\\,."}; | ||||
| 
 | ||||
|     my $text           = qr/[^\x0A\x0D]/; | ||||
| 
 | ||||
|     my $quoted_pair    = qr/\\$text/; | ||||
| 
 | ||||
|     my $ctext          = qr/(?>[^()\\]+)/; | ||||
|     my ($ccontent, $comment) = (q{})x2; | ||||
|     for (1 .. $COMMENT_NEST_LEVEL) { | ||||
| 	$ccontent = qr/$ctext|$quoted_pair|$comment/; | ||||
| 	$comment  = qr/\s*\((?:\s*$ccontent)*\s*\)\s*/; | ||||
|     } | ||||
|     my $cfws           = qr/$comment|\s+/; | ||||
| 
 | ||||
|     my $atext          = qq/[^$CTL$special\\s]/; | ||||
|     my $atom           = qr/$cfws*$atext+$cfws*/; | ||||
|     my $dot_atom_text  = qr/$atext+(?:\.$atext+)*/; | ||||
|     my $dot_atom       = qr/$cfws*$dot_atom_text$cfws*/; | ||||
| 
 | ||||
|     my $qtext          = qr/[^\\"]/; | ||||
|     my $qcontent       = qr/$qtext|$quoted_pair/; | ||||
|     my $quoted_string  = qr/$cfws*"$qcontent+"$cfws*/; | ||||
| 
 | ||||
|     my $word           = qr/$atom|$quoted_string/; | ||||
| 
 | ||||
| # XXX: This ($phrase) used to just be: my $phrase = qr/$word+/; It was changed | ||||
| # to resolve bug 22991, creating a significant slowdown.  Given current speed | ||||
| # problems.  Once 16320 is resolved, this section should be dealt with. | ||||
| # -- rjbs, 2006-11-11 | ||||
|     #my $obs_phrase     = qr/$word(?:$word|\.|$cfws)*/; | ||||
| 
 | ||||
| # XXX: ...and the above solution caused endless problems (never returned) when | ||||
| # examining this address, now in a test: | ||||
| #   admin+=E6=96=B0=E5=8A=A0=E5=9D=A1_Weblog-- ATAT --test.socialtext.com | ||||
| # So we disallow the hateful CFWS in this context for now.  Of modern mail | ||||
| # agents, only Apple Web Mail 2.0 is known to produce obs-phrase. | ||||
| # -- rjbs, 2006-11-19 | ||||
|     my $simple_word    = qr/$atom|\.|\s*"$qcontent+"\s*/; | ||||
|     my $obs_phrase     = qr/$simple_word+/; | ||||
| 
 | ||||
|     my $phrase         = qr/$obs_phrase|(?:$word+)/; | ||||
| 
 | ||||
|     my $local_part     = qr/$dot_atom|$quoted_string/; | ||||
|     my $dtext          = qr/[^\[\]\\]/; | ||||
|     my $dcontent       = qr/$dtext|$quoted_pair/; | ||||
|     my $domain_literal = qr/$cfws*\[(?:\s*$dcontent)*\s*\]$cfws*/; | ||||
|     my $domain         = qr/$dot_atom|$domain_literal/; | ||||
| 
 | ||||
|     my $display_name   = $phrase; | ||||
| 
 | ||||
|     my $addr_spec  = qr/$local_part\@$domain/; | ||||
|     my $angle_addr = qr/$cfws*<$addr_spec>$cfws*/; | ||||
|     my $name_addr  = qr/$display_name?$angle_addr/; | ||||
|     my $mailbox    = qr/(?:$name_addr|$addr_spec)$comment*/; | ||||
| 
 | ||||
|     # --8<----8<----8<----8<----8<----8<----8<----8<----8<----8<----8<-- | ||||
| 
 | ||||
|     # In this particular purpose the cache code used in... | ||||
|     my %seen; # ...Email::Address is "replaced" by %seen & %hash. | ||||
|     my %hash; | ||||
| 
 | ||||
|     my $ptime = $sometime + 5; | ||||
|     my $addrcount = 0; | ||||
|     $| = 1; | ||||
|     open P, '-|', qw/notmuch search --sort=newest-first --output=files/, $sstr; | ||||
|     while (<P>) { | ||||
|       chomp; | ||||
|       open M, '<', $_ or next; | ||||
| 
 | ||||
|       while (<M>) { | ||||
| 	last if /^\s*$/; | ||||
| 	next unless s/^(From|To|Cc|Bcc):\s+//i; | ||||
| 	s/\s+$//; | ||||
| 	my @a = ( $_ ); | ||||
| 	while (<M>) { | ||||
| 	    # XXX leaks to body in case empty line is found in this loop... | ||||
| 	    # XXX Note that older code leaked to mail body always... | ||||
| 	    if (s/^\s+// or s/^(From|To|Cc|Bcc):\s+/,/i) { | ||||
| 		s/\s+$//; | ||||
| 		push @a, $_; | ||||
| 		next; | ||||
| 	    } | ||||
| 	    last; | ||||
| 	} | ||||
| 	$_ = join ' ', @a; | ||||
| 
 | ||||
| 	if (time > $ptime) { | ||||
| 	    my $c = qw(/ - \ |)[int ($ptime / 5) % 4]; | ||||
| 	    print $c, ' active addresses gathered: ', $addrcount, "\r"; | ||||
| 	    $ptime += 5; | ||||
| 	} | ||||
| 
 | ||||
| 	# The parse function from Email::Address heavily modified | ||||
| 	# to fit ok in this particular purpose. New bugs are mine! | ||||
| 	# --8<----8<----8<----8<----8<----8<----8<----8<----8<----8<----8<-- | ||||
| 
 | ||||
| 	s/[ \t]+/ /g; | ||||
| 	s/\?= =\?/\?==\?/g; | ||||
| 	my (@mailboxes) = (/$mailbox/go); | ||||
| 	L: foreach (@mailboxes) { | ||||
| 	    next if $seen{$_}; | ||||
| 	    $seen{$_} = 1; | ||||
| 
 | ||||
| 	    my @comments = /($comment)/go; | ||||
| 	    s/$comment//go if @comments; | ||||
| 
 | ||||
| 	    my ($user, $host); | ||||
| 	    ($user, $host) = ($1, $2) if s/<($local_part)\@($domain)>//o; | ||||
| 	    if (! defined($user) || ! defined($host)) { | ||||
| 		s/($local_part)\@($domain)//o; | ||||
| 		($user, $host) = ($1, $2); | ||||
| 	    } | ||||
| 
 | ||||
| 	    sub decode_substring ($) { | ||||
| 		my $t = lc $2; | ||||
| 		my $s; | ||||
| 		if ($t eq 'b') { $s = decode_base64($3); } | ||||
| 		elsif ($t eq 'q') { $s = decode_qp($3);	} | ||||
| 		else { | ||||
| 		    $_[0] = 0; | ||||
| 		    return "=?$1?$2?$3?="; | ||||
| 		} | ||||
| 		$s =~ tr/_/ /; | ||||
| 
 | ||||
| 		return $s if lc $1 eq 'utf-8'; | ||||
| 
 | ||||
| 		my $o = find_encoding($1); | ||||
| 		$_[0] = 0, return "=?$1?$2?$3?=" unless ref $o; | ||||
| 		return encode_utf8($o->decode($s)); | ||||
| 	    } | ||||
| 	    sub decode_data () { | ||||
| 		my $loopmax = 5; | ||||
| 		while ( s{ =\?([^?]+)\?(\w)\?(.*?)\?= } | ||||
| 			 { decode_substring($loopmax) }gex ) { | ||||
| 		    last if --$loopmax <= 0; | ||||
| 		}; | ||||
| 	    } | ||||
| 
 | ||||
| 	    my @phrase       = /($display_name)/o; | ||||
| 	    decode_data foreach (@phrase); | ||||
| 
 | ||||
| 	    for ( @phrase, $host, $user, @comments ) { | ||||
| 		next unless defined $_; | ||||
| 		s/^[\s'"]+//; ## additions 20111123 too | ||||
| 		s/[\s'"]+$//; ## additions 20111123 too | ||||
| 		$_ = undef unless length $_; | ||||
| 	    } | ||||
| 	    # here we want to have email address always // 20111123 too | ||||
| 	    next unless defined $user and defined $host; | ||||
| 
 | ||||
| 	    my $userhost = lc "<$user\@$host>"; | ||||
| 	    #my $userhost = "<$user\@$host>"; | ||||
| 
 | ||||
| 	    @comments = grep { defined or return 0; decode_data; 1; } @comments; | ||||
| 
 | ||||
| 	    # "trim" phrase, if equals to user@host after trimming, drop it. | ||||
| 	    if (defined $phrase[0]) { | ||||
| 		#$phrase[0] =~s/\A"(.+)"\z/$1/; | ||||
| 		$phrase[0] =~ tr/\\//d; ## 20111124 too | ||||
| 		$phrase[0] =~ s/\"/\\"/g; | ||||
| 		@phrase = () if lc "<$phrase[0]>" eq $userhost; | ||||
| 	    } | ||||
| 
 | ||||
| 	    # In case we would have {phrase} <user@host> (comment), | ||||
| 	    # make that "{phrase} (comment)" <user@host> ... | ||||
| 	    if (defined $phrase[0]) { | ||||
| 		if (@comments) { | ||||
| 		    $phrase[0] = qq/"$phrase[0] / . join(' ', @comments) . '"'; | ||||
| 		    @comments = (); | ||||
| 		} | ||||
| 		else { | ||||
| 		    $phrase[0] = qq/"$phrase[0]"/; | ||||
| 		} | ||||
| 	    } | ||||
| 	    else { | ||||
| 		@phrase = (); | ||||
| 	    } | ||||
| 	    $_ = join(' ', @phrase, $userhost, @comments) . "\n"; | ||||
| 	    next if defined $hash{$_}; | ||||
| 	    print O $_; | ||||
| 	    $hash{$_} = 1; | ||||
| 	    next if defined $ign_hash{$_}; | ||||
| 	    foreach my $re (@ign_relist) { | ||||
| 		next L if $_ =~ $re; | ||||
| 	    } | ||||
| 	    print A $_; | ||||
| 	    $addrcount++; | ||||
| 	} | ||||
| 	# --8<----8<----8<----8<----8<----8<----8<----8<----8<----8<----8<-- | ||||
|       } | ||||
|       close M; | ||||
|     } | ||||
|     undef %seen; | ||||
|     close P; | ||||
|     my $oldaddrcount = 0; | ||||
|     if ($sstr ne '*') { | ||||
| 	L: while (<I>) { | ||||
| 	    last if /^---/; | ||||
| 	    next if defined $hash{$_}; | ||||
| 	    print O $_; | ||||
| 	    next if defined $ign_hash{$_}; | ||||
| 	    foreach my $re (@ign_relist) { | ||||
| 		next L if $_ =~ $re; | ||||
| 	    } | ||||
| 	    print A $_; | ||||
| 	    $addrcount++; | ||||
| 	} | ||||
| 	while (<I>) { | ||||
| 	    $oldaddrcount = ($1 + 0), next if /^active:\s+(\d+)\s*$/; | ||||
| 	} | ||||
| 	close I; | ||||
|     } | ||||
|     print O "---\n"; | ||||
|     print O "active: ", $addrcount, "\n"; | ||||
|     close O; | ||||
|     close A; | ||||
|     undef %hash; | ||||
|     #link $adbpath, $adbpath . '.' . $sometime; | ||||
|     rename $adbpath . '.new', $adbpath or | ||||
|       die "Cannot rename '$adbpath.new' to '$adbpath': $!\n"; | ||||
|     rename $actpath . '.new', $actpath or | ||||
|       die "Cannot rename '$actpath.new' to '$actpath': $!\n"; | ||||
|     if ($oldaddrcount or $sstr eq '*') { | ||||
| 	$sometime = time - $sometime; | ||||
| 	my $new = $addrcount - $oldaddrcount; | ||||
| 	print "Added $new active addresses in $sometime seconds.\n"; | ||||
|     } | ||||
|     print "Total number of active addresses: $addrcount.\n"; | ||||
|     exit 0; | ||||
| } | ||||
| 
 | ||||
| die "$0: '$ARGV[0]': unknown option.\n"; | ||||
| 
 | ||||
| __END__ | ||||
| 
 | ||||
| =encoding utf8 | ||||
| 
 | ||||
| =head1 NAME | ||||
| 
 | ||||
| nottoomuch-addresses.sh -- address completion/matching (for notmuch) | ||||
| 
 | ||||
| =head1 SYNOPSIS | ||||
| 
 | ||||
| nottoomuch-addresses.sh ( --update [--rebuild] | <search string> ) | ||||
| 
 | ||||
| B<nottoomuch-addresses.sh --help>  for more help | ||||
| 
 | ||||
| =head1 VERSION | ||||
| 
 | ||||
| 2.2 (2014-03-29) | ||||
| 
 | ||||
| =head1 OPTIONS | ||||
| 
 | ||||
| =head2 B<--update> | ||||
| 
 | ||||
| This option is used to initially create the "address database" for | ||||
| searches to be done, and then incrementally update it with new | ||||
| addresses that are available in mails received since last update. | ||||
| 
 | ||||
| In case you want to rebuild the database from scratch, add | ||||
| B<--rebuild> after --update on command line. This is necessary if some | ||||
| of the new emails received have Date: header point too much in the | ||||
| past (one week before last update). Update used emails Date: | ||||
| information to go through new emails to be checked for new addresses | ||||
| with one week's overlap. Other reason for rebuild could be | ||||
| enhancements in new versions of this program which change the email | ||||
| format in database. | ||||
| 
 | ||||
| =head2 <SEARCH STRING> | ||||
| 
 | ||||
| In case no option argument is given on command line, the command line | ||||
| arguments are used as fixed search string. Search goes through all | ||||
| email addresses in database and outputs every address (separated by | ||||
| newline) where a substring match with the given search string is | ||||
| found. No wildcard of regular expression matching is used. | ||||
| 
 | ||||
| Search is not done unless there is at least 3 octets in search string. | ||||
| 
 | ||||
| =head1 IGNORE FILE | ||||
| 
 | ||||
| Some of the addresses collected may be valid but those still seems to | ||||
| be noisy junk. One may additionally want to just hide some email | ||||
| addresses. | ||||
| 
 | ||||
| When running B<--update> the output shows the path of address database | ||||
| file (usually C<$HOME/.config/nottoomuch/addresses>). If there is file | ||||
| C<addresses.ignore> in the same directory that file is read as | ||||
| newline-separated list of addresses which are not to be included in | ||||
| address database file. | ||||
| 
 | ||||
| Use your text editor to open both of these files. Then move address | ||||
| lines to be ignored from B<addresses> to B<addresses.ignore>. After | ||||
| saving these 2 files the moved addresses will not reappear in | ||||
| B<addresses> file again. | ||||
| 
 | ||||
| Version 2.0 of nottoomuch-addresses.sh supports regular expressions in | ||||
| ignore file. Lines in format I</regexp/> or I</regexp/i> defines (perl) | ||||
| I<regexp>s which are used to match email addresses for ignoring. The | ||||
| I</i> format makes regular expression case-insensitive -- although this | ||||
| is only applied to characters in ranges I<A-Z> and I<a-z>. Remember that | ||||
| I</^.*regexp.*$/> and I</regexp/> provides same set of matching lines. | ||||
| 
 | ||||
| =head1 LICENSE | ||||
| 
 | ||||
| This program uses code from Email::Address perl module. Inclusion of | ||||
| that makes it easy to define license for the whole of this code base: | ||||
| 
 | ||||
| Terms of Perl itself | ||||
| 
 | ||||
| a) the GNU General Public License as published by the Free | ||||
|    Software Foundation; either version 1, or (at your option) any | ||||
|    later version, or | ||||
| 
 | ||||
| b) the "Artistic License" | ||||
| 
 | ||||
| =head1 SEE ALSO | ||||
| 
 | ||||
| L<notmuch>, L<Email::Address> | ||||
| 
 | ||||
| =head1 AUTHOR | ||||
| 
 | ||||
| Tomi Ollila -- too ät iki piste fi | ||||
| 
 | ||||
| =head1 ACKNOWLEDGMENTS | ||||
| 
 | ||||
| This program uses code from Email::Address, Copyright (c) by Casey West | ||||
| and maintained by Ricardo Signes. Thank you. All new bugs are mine, | ||||
| though. | ||||
							
								
								
									
										2
									
								
								nsnat
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										2
									
								
								nsnat
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,2 @@ | |||
| iptables -t nat -A POSTROUTING -o eth0 -s 172.16.23.10 -j SNAT --to 62.65.138.74 | ||||
| iptables -t nat -A POSTROUTING -o eth0 -s 172.16.23.6 -j SNAT --to 62.65.138.74 | ||||
							
								
								
									
										4
									
								
								nsstart
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										4
									
								
								nsstart
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,4 @@ | |||
| ~/bin/home/route start | ||||
| cd /tmp/seti | ||||
| ./setiathome & | ||||
| su -l nico -c startx | ||||
							
								
								
									
										71
									
								
								oops
									
										
									
									
									
										Executable file
									
								
							
							
						
						
									
										71
									
								
								oops
									
										
									
									
									
										Executable file
									
								
							|  | @ -0,0 +1,71 @@ | |||
| #!/usr/bin/perl -wT | ||||
| # | ||||
| # TWiki Collaboration Platform, http://TWiki.org/ | ||||
| # | ||||
| # Copyright (C) 1999-2003 Peter Thoeny, peter@thoeny.com | ||||
| # | ||||
| # For licensing info read license.txt file in the TWiki root. | ||||
| # 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 2 | ||||
| # 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, published at  | ||||
| # http://www.gnu.org/copyleft/gpl.html | ||||
| 
 | ||||
| # Set library paths in @INC, at compile time | ||||
| BEGIN { unshift @INC, '.'; require 'setlib.cfg'; } | ||||
| 
 | ||||
| use CGI::Carp qw(fatalsToBrowser); | ||||
| use CGI; | ||||
| use TWiki; | ||||
| 
 | ||||
| use strict; | ||||
| 
 | ||||
| &main(); | ||||
| 
 | ||||
| sub main | ||||
| { | ||||
|     my $query = new CGI; | ||||
| 
 | ||||
|     my $thePathInfo = $query->path_info();  | ||||
|     my $theRemoteUser = $query->remote_user(); | ||||
|     my $theTopic = $query->param( 'topic' ); | ||||
|     my $theUrl = $query->url; | ||||
| 
 | ||||
|     my( $topic ) =  | ||||
| 	&TWiki::initialize( $thePathInfo, $theRemoteUser, $theTopic, $theUrl, $query ); | ||||
| 
 | ||||
|     my $tmplName = $query->param( 'template' ) || "oops"; | ||||
|     my $skin = $query->param( "skin" ) || TWiki::Prefs::getPreferencesValue( "SKIN" ); | ||||
|     my $tmplData = TWiki::Store::readTemplate( $tmplName, $skin ); | ||||
|     if( ! $tmplData ) { | ||||
|         TWiki::writeHeader( $query ); | ||||
|         print "<html><body>\n" | ||||
|             . "<h1>TWiki Installation Error</h1>\n" | ||||
|             . "Template file $tmplName.tmpl not found or template directory \n" | ||||
|             . "$TWiki::templateDir not found.<p />\n" | ||||
|             . "Check the \$templateDir variable in TWiki.cfg.\n" | ||||
|             . "</body></html>\n"; | ||||
|         return; | ||||
|     } | ||||
| 
 | ||||
|     my $param = $query->param( 'param1' ) || ""; | ||||
|     $tmplData =~ s/%PARAM1%/$param/go; | ||||
|     $param = $query->param( 'param2' ) || ""; | ||||
|     $tmplData =~ s/%PARAM2%/$param/go; | ||||
|     $param = $query->param( 'param3' ) || ""; | ||||
|     $tmplData =~ s/%PARAM3%/$param/go; | ||||
|     $param = $query->param( 'param4' ) || ""; | ||||
|     $tmplData =~ s/%PARAM4%/$param/go; | ||||
| 
 | ||||
|     $tmplData = &TWiki::handleCommonTags( $tmplData, $topic ); | ||||
|     $tmplData = &TWiki::getRenderedVersion( $tmplData ); | ||||
|     $tmplData =~ s|( ?) *</*nop/*>\n?|$1|gois;   # remove <nop> tags (PTh 06 Nov 2000) | ||||
| 
 | ||||
|     TWiki::writeHeader( $query ); | ||||
|     print $tmplData; | ||||
| } | ||||
							
								
								
									
										31
									
								
								placeholder.rb
									
										
									
									
									
										Executable file
									
								
							
							
						
						
									
										31
									
								
								placeholder.rb
									
										
									
									
									
										Executable file
									
								
							|  | @ -0,0 +1,31 @@ | |||
| #!/usr/bin/env ruby | ||||
| 
 | ||||
| def createPlaceholder(dir, level = 0) | ||||
|     dir = dir + '/' if(!dir.empty? && dir[-1].chr != '/') | ||||
| 
 | ||||
|     entries = Array.new | ||||
|     entries = File.new("#{dir}menu.def").readlines if(FileTest.exists?("#{dir}menu.def")) | ||||
| 
 | ||||
|     rel = '' | ||||
|     level.times { | ||||
|         rel += '../' | ||||
|     } | ||||
| 
 | ||||
|     entries.each { |x| | ||||
|         entry = x.split(/\s*\|\s*/, 2) | ||||
|         if(!FileTest.exists?(dir + entry[0] + '.html')) | ||||
|             File.symlink("#{rel}placeholder.html", dir + entry[0] + '.html') | ||||
|         end | ||||
|          | ||||
|         if(FileTest.directory?(dir + entry[0])) | ||||
|             createPlaceholder(dir + entry[0], level + 1) | ||||
|         end | ||||
|     } | ||||
| end | ||||
| 
 | ||||
| if(!ARGV[0]) | ||||
|     puts 'Need a directory' | ||||
| end | ||||
| 
 | ||||
| createPlaceholder(ARGV[0], 0) | ||||
| 
 | ||||
							
								
								
									
										4
									
								
								post-commit
									
										
									
									
									
										Executable file
									
								
							
							
						
						
									
										4
									
								
								post-commit
									
										
									
									
									
										Executable file
									
								
							|  | @ -0,0 +1,4 @@ | |||
| #!/bin/sh | ||||
| 
 | ||||
| . /home/users/nico/p/foreign/irker/virtualenv/bin/activate | ||||
| /home/users/nico/p/foreign/irker/irker/irkerhook.py "$@" | ||||
							
								
								
									
										16
									
								
								postgresfixmailneu.sh
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										16
									
								
								postgresfixmailneu.sh
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,16 @@ | |||
| #!/bin/sh | ||||
| 
 | ||||
| [ "$#" -eq 2 ] || exit 1 | ||||
| 
 | ||||
| user="$1" | ||||
| domain="$2" | ||||
| password="$3" | ||||
| 
 | ||||
| base=/home/server/mail | ||||
| 
 | ||||
| maildirmake.dovecot  | ||||
| 
 | ||||
| cat << eof | ||||
| insert into mailboxes values ('$user','$domain','$password','$domain/$user',1,1) | ||||
| eof | psql mail | ||||
| 
 | ||||
							
								
								
									
										160
									
								
								preview
									
										
									
									
									
										Executable file
									
								
							
							
						
						
									
										160
									
								
								preview
									
										
									
									
									
										Executable file
									
								
							|  | @ -0,0 +1,160 @@ | |||
| #!/usr/bin/perl -wT | ||||
| # | ||||
| # TWiki Collaboration Platform, http://TWiki.org/ | ||||
| # | ||||
| # Copyright (C) 1999-2003 Peter Thoeny, peter@thoeny.com | ||||
| # | ||||
| # For licensing info read license.txt file in the TWiki root. | ||||
| # 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 2 | ||||
| # 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, published at  | ||||
| # http://www.gnu.org/copyleft/gpl.html | ||||
| 
 | ||||
| # Set library paths in @INC, at compile time | ||||
| BEGIN { unshift @INC, '.'; require 'setlib.cfg'; } | ||||
| 
 | ||||
| use CGI::Carp qw(fatalsToBrowser); | ||||
| use CGI; | ||||
| use TWiki; | ||||
| 
 | ||||
| use strict; | ||||
| 
 | ||||
| &main(); | ||||
| 
 | ||||
| 
 | ||||
| sub main | ||||
| { | ||||
|     my $query = new CGI; | ||||
|     my $thePathInfo = $query->path_info();  | ||||
|     my $theRemoteUser = $query->remote_user(); | ||||
|     my $theTopic = $query->param( 'topic' ); | ||||
|     my $theUrl = $query->url; | ||||
|     my( $topic, $webName, $dummy, $userName ) =  | ||||
|        &TWiki::initialize( $thePathInfo, $theRemoteUser, $theTopic, $theUrl, $query ); | ||||
|     $dummy = "";  # to suppress warning | ||||
| 
 | ||||
|     my $tmpl = "";  | ||||
|     my $text = ""; | ||||
|     my $ptext = ""; | ||||
|     my $meta = ""; | ||||
|     my $formFields = ""; | ||||
|     my $wikiUserName = &TWiki::userToWikiName( $userName ); | ||||
| 
 | ||||
|     if( ! &TWiki::Store::webExists( $webName ) ) { | ||||
|         my $url = &TWiki::getOopsUrl( $webName, $topic, "oopsnoweb" ); | ||||
|         TWiki::redirect( $query, $url ); | ||||
|         return; | ||||
|     } | ||||
| 
 | ||||
|     my( $mirrorSiteName, $mirrorViewURL ) = &TWiki::readOnlyMirrorWeb( $webName ); | ||||
|     if( $mirrorSiteName ) { | ||||
|         my $url = &TWiki::getOopsUrl( $webName, $topic, "oopsmirror", $mirrorSiteName, $mirrorViewURL ); | ||||
|         TWiki::redirect( $query, $url ); | ||||
|         return; | ||||
|     } | ||||
| 
 | ||||
|     # reset lock time, this is to prevent contention in case of a long edit session | ||||
|     &TWiki::Store::lockTopic( $topic ); | ||||
| 
 | ||||
|     my $skin = $query->param( "skin" ) || &TWiki::Prefs::getPreferencesValue( "SKIN" ); | ||||
| 
 | ||||
|     # Is user looking to change the form used?  Sits oddly in preview, but  | ||||
|     # to avoid Javascript and pick up text on edit page it has to be in preview. | ||||
|     my $changeform = $query->param( 'submitChangeForm' ) || ""; | ||||
|     if( $changeform ) { | ||||
|         &TWiki::Form::changeForm( $webName, $topic, $query ); | ||||
|         return; | ||||
|     } | ||||
| 
 | ||||
|     # get view template, standard view or a view with a different skin | ||||
|     $tmpl = &TWiki::Store::readTemplate( "preview", $skin ); | ||||
|     my $dontNotify = $query->param( "dontnotify" ) || ""; | ||||
|     $tmpl =~ s/%DONTNOTIFY%/$dontNotify/go; | ||||
|     my $saveCmd = $query->param( "cmd" ) || ""; | ||||
|     if( $saveCmd ) { | ||||
|         if( ! &TWiki::Access::userIsInGroup( $wikiUserName, $TWiki::superAdminGroup ) ) { | ||||
|             # user has no permission to execute undocumented cmd=... parameter | ||||
|             my $url = &TWiki::getOopsUrl( $webName, $topic, "oopsaccessgroup", "$TWiki::mainWebname.$TWiki::superAdminGroup" ); | ||||
|             TWiki::redirect( $query, $url ); | ||||
|             return; | ||||
|         } | ||||
|         $tmpl =~ s/\(preview\)/\(preview cmd=$saveCmd\)/go; | ||||
|     } | ||||
|     $tmpl =~ s/%CMD%/$saveCmd/go; | ||||
|      | ||||
|     if( $saveCmd ne "repRev" ) { | ||||
|         my $dummy = ""; | ||||
|         ( $meta, $dummy ) = &TWiki::Store::readTopic( $webName, $topic ); | ||||
|          | ||||
| 	# parent setting | ||||
| 	my $theParent = $query->param( 'topicparent' ) || ""; | ||||
| 	if( $theParent ) { | ||||
| 	    $tmpl =~ s/%TOPICPARENT%/$theParent/go; | ||||
| 	    $meta->put( "TOPICPARENT", ( "name" => $theParent ) ); | ||||
| 	} | ||||
| 	$tmpl =~ s/%TOPICPARENT%/$theParent/; | ||||
| 
 | ||||
| 	my $formTemplate = $query->param( "formtemplate" ); | ||||
| 	if( $formTemplate ) { | ||||
| 	   $meta->remove( "FORM" ); | ||||
| 	   $meta->put( "FORM", ( name => $formTemplate ) ) if( $formTemplate ne "none" ); | ||||
| 	   $tmpl =~ s/%FORMTEMPLATE%/$formTemplate/go; | ||||
| 	} else { | ||||
| 	   $tmpl =~ s/%FORMTEMPLATE%//go; | ||||
| 	} | ||||
| 
 | ||||
|         # get the edited text and combine text, form and attachments for preview | ||||
|         &TWiki::Form::fieldVars2Meta( $webName, $query, $meta ); | ||||
|         $text = $query->param( "text" ); | ||||
|         if( ! $text ) { | ||||
|             # empty topic not allowed | ||||
|             my $url = &TWiki::getOopsUrl( $webName, $topic, "oopsempty" ); | ||||
|             print $query->redirect( $url ); | ||||
|             return; | ||||
|         } | ||||
|         #AS added hook for plugins that want to do heavy stuff | ||||
|         TWiki::Plugins::afterEditHandler( $text, $topic, $webName ); | ||||
|         $ptext = $text; | ||||
|          | ||||
|         if( $meta->count( "FORM" ) ) { | ||||
|             $formFields = &TWiki::Form::getFieldParams( $meta ); | ||||
|         } | ||||
| 
 | ||||
|     } else { | ||||
|         # undocumented "repRev" mode | ||||
|         $text = $query->param( "text" ); # text to save | ||||
|         ( $meta, $ptext ) = &TWiki::Store::_extractMetaData( $webName, $topic, $text ); | ||||
|         $text =~ s/%_(.)_%/%__$1__%/go; | ||||
|     } | ||||
| 
 | ||||
|     my @verbatim = (); | ||||
|     $ptext = &TWiki::takeOutVerbatim( $ptext, \@verbatim ); | ||||
|     $ptext =~ s/ {3}/\t/go; | ||||
|     $ptext = &TWiki::handleCommonTags( $ptext, $topic ); | ||||
|     $ptext = &TWiki::getRenderedVersion( $ptext ); | ||||
| 
 | ||||
|     # do not allow click on link before save: | ||||
|     $ptext =~ s@(href=".*?")@href="%SCRIPTURLPATH%/oops%SCRIPTSUFFIX%/%WEB%/%TOPIC%\?template=oopspreview"@goi; | ||||
|     $ptext = &TWiki::handleCommonTags( $ptext, $topic ); | ||||
|     $ptext = &TWiki::putBackVerbatim( $ptext, "pre", @verbatim ); | ||||
| 
 | ||||
|     $tmpl = &TWiki::handleCommonTags( $tmpl, $topic ); | ||||
|     $tmpl = &TWiki::handleMetaTags( $webName, $topic, $tmpl, $meta ); | ||||
|     $tmpl = &TWiki::getRenderedVersion( $tmpl ); | ||||
|     $tmpl =~ s/%TEXT%/$ptext/go; | ||||
|      | ||||
|     $text = &TWiki::encodeSpecialChars( $text ); | ||||
| 
 | ||||
|     $tmpl =~ s/%HIDDENTEXT%/$text/go; | ||||
|     $tmpl =~ s/%FORMFIELDS%/$formFields/go; | ||||
|     $tmpl =~ s|( ?) *</*nop/*>\n?|$1|gois;   # remove <nop> tags (PTh 06 Nov 2000) | ||||
| 
 | ||||
|     &TWiki::writeHeader( $query ); | ||||
|     print $tmpl; | ||||
| } | ||||
							
								
								
									
										1
									
								
								price-vm-hosting.py
									
										
									
									
									
										Symbolic link
									
								
							
							
						
						
									
										1
									
								
								price-vm-hosting.py
									
										
									
									
									
										Symbolic link
									
								
							|  | @ -0,0 +1 @@ | |||
| ../.ungleich/ungleich/vcs/ungleich-bin/price-vm-hosting.py | ||||
							
								
								
									
										8
									
								
								pwhome
									
										
									
									
									
										Executable file
									
								
							
							
						
						
									
										8
									
								
								pwhome
									
										
									
									
									
										Executable file
									
								
							|  | @ -0,0 +1,8 @@ | |||
| #!/bin/sh | ||||
| 
 | ||||
| touch ~/privat/rechner/eigene/.lastsync | ||||
| 
 | ||||
| rsync -av --delete --progress 	\ | ||||
| 	"$@" 			\ | ||||
| 	~/.ssh ~/.gnupg ~/privat/rechner/eigene/ \ | ||||
|     /mnt | ||||
							
								
								
									
										31
									
								
								python-bin-wrapper
									
										
									
									
									
										Executable file
									
								
							
							
						
						
									
										31
									
								
								python-bin-wrapper
									
										
									
									
									
										Executable file
									
								
							|  | @ -0,0 +1,31 @@ | |||
| #!/bin/sh | ||||
| # -*- coding: utf-8 -*- | ||||
| # | ||||
| # 2013 Nico Schottelius (nico-nsbin at schottelius.org) | ||||
| # | ||||
| # This file is part of nsbin. | ||||
| # | ||||
| # nsbin 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. | ||||
| # | ||||
| # nsbin 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 nsbin. If not, see <http://www.gnu.org/licenses/>. | ||||
| # | ||||
| # | ||||
| 
 | ||||
| # Wrapper for real script to allow execution from checkout | ||||
| dir=${0%/*} | ||||
| 
 | ||||
| libdir=$(cd "${dir}/../" && pwd -P) | ||||
| project=${libdir##*/} | ||||
| 
 | ||||
| export PYTHONPATH="${libdir}" | ||||
| 
 | ||||
| "$dir/../scripts/${project}" "$@" | ||||
							
								
								
									
										66
									
								
								qos-neu
									
										
									
									
									
										Executable file
									
								
							
							
						
						
									
										66
									
								
								qos-neu
									
										
									
									
									
										Executable file
									
								
							|  | @ -0,0 +1,66 @@ | |||
| INET=ppp0 | ||||
| MAXRATE=126kbit | ||||
| 
 | ||||
| # flush | ||||
| iptables -t mangle -F | ||||
| tc qdisc del dev $INET root | ||||
| 
 | ||||
| # group0 | ||||
| # acks      6kbit | ||||
| 
 | ||||
| # group1: | ||||
| # dns | ||||
| # ssh       40kbit | ||||
| 
 | ||||
| # group2:   60kbit | ||||
| # apache | ||||
| # smtp | ||||
| # pop3 | ||||
| 
 | ||||
| 
 | ||||
| # group3:   20kbit | ||||
| # identd | ||||
| # ftp | ||||
| # rsync | ||||
| # icmp | ||||
| 
 | ||||
| # standards | ||||
| 
 | ||||
| # root class (root o all evil) | ||||
| tc qdisc add dev $INET root handle 1:0 htb default 23 | ||||
| 
 | ||||
| # hauptklasse...       mamapapa   ichselber    alg      minimal       maximal | ||||
| tc class add dev $INET parent 1:0 classid 1:1  htb rate $MAXRATE ceil $MAXRATE | ||||
| 
 | ||||
| # acks | ||||
| tc class add dev $INET parent 1:1 classid 1:10 htb rate 6kbit ceil $MAXRATE prio 1 | ||||
| tc filter add dev $INET parent 1:0 prio 0 protocol ip handle 10 fw flowid 1:10 | ||||
| 
 | ||||
| 
 | ||||
| # ssh / dns | ||||
| iptables -t mangle -A POSTROUTING -o $INET -p tcp --source-port 22 -j MARK --set-mark 11 | ||||
| iptables -t mangle -A POSTROUTING -o $INET -p tcp --source-port 53 -j MARK --set-mark 11 | ||||
| iptables -t mangle -A POSTROUTING -o $INET -p udp --source-port 53 -j MARK --set-mark 11 | ||||
| 
 | ||||
| # das ist nur die rule. wie es sein soll. | ||||
| tc class add dev $INET parent 1:1 classid 1:11 htb rate 40kbit ceil $MAXRATE prio 2 | ||||
| # das ist der eintrag der in aktiv macht, auf das handle (==mark) | ||||
| tc filter add dev $INET parent 1:0 prio 0 protocol ip handle 11 fw flowid 1:11 | ||||
| 
 | ||||
| 
 | ||||
| # apache / smtp / pop | ||||
| iptables -t mangle -A POSTROUTING -o $INET -p tcp --source-port 80 -j MARK --set-mark 12 | ||||
| iptables -t mangle -A POSTROUTING -o $INET -p tcp --source-port pop3 -j MARK --set-mark 12 | ||||
| iptables -t mangle -A POSTROUTING -o $INET -p tcp --source-port smtp -j MARK --set-mark 12 | ||||
| tc class add dev $INET parent 1:1 classid 1:12 htb rate 60kbit ceil $MAXRATE prio 2 | ||||
| tc filter add dev $INET parent 1:0 prio 0 protocol ip handle 12 fw flowid 1:12 | ||||
| 
 | ||||
| 
 | ||||
| # ftp / rsync / auth / icmp | ||||
| iptables -t mangle -A POSTROUTING -o $INET -p tcp --source-port 20:21 -j MARK --set-mark 13 | ||||
| iptables -t mangle -A POSTROUTING -o $INET -p tcp --source-port rsync -j MARK --set-mark 13 | ||||
| iptables -t mangle -A POSTROUTING -o $INET -p tcp --source-port auth -j MARK --set-mark 13 | ||||
| iptables -t mangle -A POSTROUTING -o $INET -p icmp -j MARK --set-mark 13 | ||||
| tc class add dev $INET parent 1:1 classid 1:13 htb rate 20kbit ceil $MAXRATE prio 2 | ||||
| tc filter add dev $INET parent 1:0 prio 0 protocol ip handle 13 fw flowid 1:13 | ||||
| 
 | ||||
							
								
								
									
										269
									
								
								rdiff
									
										
									
									
									
										Executable file
									
								
							
							
						
						
									
										269
									
								
								rdiff
									
										
									
									
									
										Executable file
									
								
							|  | @ -0,0 +1,269 @@ | |||
| #!/usr/bin/perl -wT | ||||
| # | ||||
| # TWiki Collaboration Platform, http://TWiki.org/ | ||||
| # | ||||
| # Copyright (C) 1999-2003 Peter Thoeny, peter@thoeny.com | ||||
| # | ||||
| # For licensing info read license.txt file in the TWiki root. | ||||
| # 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 2 | ||||
| # 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, published at  | ||||
| # http://www.gnu.org/copyleft/gpl.html | ||||
| 
 | ||||
| # Set library paths in @INC, at compile time | ||||
| BEGIN { unshift @INC, '.'; require 'setlib.cfg'; } | ||||
| 
 | ||||
| use CGI::Carp qw(fatalsToBrowser); | ||||
| use CGI; | ||||
| use TWiki; | ||||
| 
 | ||||
| $query= new CGI; | ||||
| 
 | ||||
| &main(); | ||||
| 
 | ||||
| # ========================= | ||||
| sub renderCellData | ||||
| { | ||||
|     my( $data, $topic ) = @_; | ||||
|     if( $data ) { | ||||
|         $data = &TWiki::handleCommonTags( $data, $topic ); | ||||
|         $data = &TWiki::getRenderedVersion( $data ); | ||||
|         if( $data =~ m/<\/?(th|td|table)/i ) | ||||
|         { | ||||
|             # data has <th> or <td>, need to fix <table> | ||||
|             my $bTable = ( $data =~ s/(<table)/$1/gois ) || 0; | ||||
|             my $eTable = ( $data =~ s/(<\/table)/$1/gois ) || 0; | ||||
|             my $i = 0; | ||||
|             if( $bTable > $eTable ) { | ||||
|                 for( $i = $eTable; $i < $bTable; $i++ ) { | ||||
|                    $data .= "</table>"; | ||||
|                 } | ||||
|             } elsif( $bTable < $eTable ) { | ||||
|                 for( $i = $bTable; $i < $eTable; $i++ ) { | ||||
|                    $data = "\n<table>$data"; | ||||
|                 } | ||||
|             } elsif( ( $bTable == 0 ) && ( $eTable == 0 ) ) { | ||||
|                 $data = "\n<table>$data\n</table>"; | ||||
|             } | ||||
|         } | ||||
|     } | ||||
|     return $data; | ||||
| } | ||||
| 
 | ||||
| # ========================= | ||||
| sub renderRevisionDiff | ||||
| { | ||||
|     my( $text, $topic ) = @_; | ||||
| 
 | ||||
|     $text =~ s/\r//go;  # cut CR | ||||
|     my $result = "<table width=\"100%\" cellspacing=\"0\">\n<tr><td>"; | ||||
|     my $data = ""; | ||||
|     foreach( split( /\n/, $text ) ) { | ||||
|         if( /^[0-9]/ ) { | ||||
|             $data = renderCellData( $data, $topic ); | ||||
|             $result .= $data; | ||||
|             $data = ""; | ||||
|             s/^([0-9\,]+)d([0-9\,]+)/\n<\/td><\/tr>\n<tr><td bgcolor="#FFD7D7" colspan ="2"><b> Deleted: <\/b><\/td><\/tr>\n<tr><td bgcolor="#FF4040" valign="top" width="1%"><<br \/><<\/td><td>/go; | ||||
|             s/^([0-9\,]+)a([0-9\,]+)/\n<\/td><\/tr>\n<tr><td bgcolor="#D0FFD0" colspan ="2"><b> Added:   <\/b><\/td><\/tr>\n<tr><td bgcolor="#40FF40" valign="top" width="1%">><br \/>><\/td><td>/go; | ||||
|             s/^([0-9\,]+)c([0-9\,]+)/\n<\/td><\/tr>\n<tr><td bgcolor="#D0FFD0" colspan ="2"><b> Changed: <\/b><\/td><\/tr>\n<tr><td bgcolor="#FF4040" valign="top" width="1%"><<br \/><<\/td><td>/go; | ||||
|             $result .= $_; | ||||
| 
 | ||||
|         } elsif( /^[<>]/ ) { | ||||
|             s/^[<>] (.*)/$1/go; | ||||
|             $data .= "\n$_"; | ||||
| 
 | ||||
|         } elsif( /^--*/ ) { | ||||
|             $data = renderCellData( $data, $topic ); | ||||
|             $result .= $data; | ||||
|             $data = ""; | ||||
|             $result .= "\n</td></tr><tr><td bgcolor=\"#40FF40\" valign=\"top\" width=\"1%\">><br />></td><td>\n"; | ||||
|         } | ||||
|     } | ||||
|     $data = renderCellData( $data, $topic ); | ||||
|     $result .= $data; | ||||
|     $data = ""; | ||||
|     $text = "$result<\/td><\/tr>\n<\/table>"; | ||||
| 
 | ||||
|     return $text; | ||||
| } | ||||
| 
 | ||||
| 
 | ||||
| sub getRevInfo | ||||
| { | ||||
|     my( $web, $rev, $topic, $short ) = @_; | ||||
| 
 | ||||
|     my( $date, $user ) = &TWiki::Store::getRevisionInfo( $web, $topic, "1.$rev", 1 ); | ||||
|     $user = TWiki::getRenderedVersion( TWiki::userToWikiName( $user ) ); | ||||
|     if( $short ) { | ||||
|         # cut time | ||||
|         $date =~ s/ \- [0-9]*\:[0-9]+$//go; | ||||
|         # eliminate white space to prevent wrap around in HR table: | ||||
|         $date =~ s/ /\ \;/go; | ||||
|     } else { | ||||
|         $date .= " GMT"; | ||||
|     } | ||||
| 
 | ||||
|     my $revInfo = "$date - $user"; | ||||
|     $revInfo =~ s/[\n\r]*//go; | ||||
|     return $revInfo; | ||||
| } | ||||
| 
 | ||||
| 
 | ||||
| sub main | ||||
| { | ||||
|     my $thePathInfo = $query->path_info();  | ||||
|     my $theRemoteUser = $query->remote_user(); | ||||
|     my $theTopic = $query->param('topic'); | ||||
|     my $theUrl = $query->url; | ||||
| 
 | ||||
|     ( $topic, $webName, $scriptUrlPath, $userName ) =  | ||||
| 	&TWiki::initialize( $thePathInfo, $theRemoteUser, $theTopic, $theUrl, $query ); | ||||
| 
 | ||||
|     my $tmpl = "", $text = "", $diff = ""; | ||||
|     my $rev1 = $query->param( "rev1" ); | ||||
|     my $rev2 = $query->param( "rev2" ); | ||||
|     my $maxrev= 1; | ||||
|     my $i = $maxrev,    $j = $maxrev; | ||||
|     my $revTitle1 = "", $revTitle2 = ""; | ||||
|     my $revInfo1 = "",  $revInfo2 = ""; | ||||
|     my $isMultipleDiff = 0; | ||||
| 
 | ||||
|     if( ! &TWiki::Store::webExists( $webName ) ) { | ||||
|         my $url = &TWiki::getOopsUrl( $webName, $topic, "oopsnoweb" ); | ||||
|         TWiki::redirect( $query, $url ); | ||||
|         return; | ||||
|     } | ||||
| 
 | ||||
|     # get view template, standard view or a view with a different skin | ||||
|     my $skin = $query->param( "skin" ) || &TWiki::Prefs::getPreferencesValue( "SKIN" ); | ||||
|     $tmpl = &TWiki::Store::readTemplate( "rdiff", $skin ); | ||||
|     $tmpl =~ s/\%META{.*?}\%//go;  # remove %META{"parent"}% | ||||
| 
 | ||||
|     my( $before, $difftmpl, $after) = split( /%REPEAT%/, $tmpl); | ||||
| 
 | ||||
|     my $topicExists = &TWiki::Store::topicExists( $webName, $topic ); | ||||
|     if( $topicExists ) { | ||||
|         $maxrev = &TWiki::Store::getRevisionNumber( $webName, $topic ); | ||||
|         $maxrev =~ s/r?1\.//go;  # cut 'r' and major | ||||
|         if( ! $rev1 ) { $rev1 = 0; } | ||||
|         if( ! $rev2 ) { $rev2 = 0; } | ||||
|         $rev1 =~ s/r?1\.//go;  # cut 'r' and major | ||||
|         $rev2 =~ s/r?1\.//go;  # cut 'r' and major | ||||
|         if( $rev1 < 1 )       { $rev1 = $maxrev; } | ||||
|         if( $rev1 > $maxrev ) { $rev1 = $maxrev; } | ||||
|         if( $rev2 < 1 )       { $rev2 = 1; } | ||||
|         if( $rev2 > $maxrev ) { $rev2 = $maxrev; } | ||||
|         $revTitle1 = "r1.$rev1"; | ||||
|         $revInfo1 = getRevInfo( $webName, $rev1, $topic ); | ||||
|         if( $rev1 != $rev2 ) { | ||||
|             $revTitle2 = "r1.$rev2"; | ||||
|             $revInfo2 = getRevInfo( $webName, $rev2, $topic ); | ||||
|         } | ||||
|     } else { | ||||
| 	$rev1 = 1; | ||||
| 	$rev2 = 1; | ||||
|     } | ||||
| 
 | ||||
|     # check access permission | ||||
|     my $wikiUserName = &TWiki::userToWikiName( $userName ); | ||||
|     my $viewAccessOK = &TWiki::Access::checkAccessPermission( "view", $wikiUserName, "", $topic, $webName ); | ||||
|     if( ( $TWiki::readTopicPermissionFailed ) || ( ! $viewAccessOK ) ) { | ||||
|         my $url = &TWiki::getOopsUrl( $webName, $topic, "oopsaccessview" ); | ||||
|         TWiki::redirect( $query, $url ); | ||||
|         return; | ||||
|     } | ||||
| 
 | ||||
|     # format "before" part | ||||
|     $before =~ s/%REVTITLE1%/$revTitle1/go; | ||||
|     $before =~ s/%REVTITLE2%/$revTitle2/go; | ||||
|     $before = &TWiki::handleCommonTags( $before, $topic ); | ||||
|     $before = &TWiki::getRenderedVersion( $before ); | ||||
|     $before =~ s|( ?) *</*nop/*>\n?|$1|gois;   # remove <nop> tags (PTh 06 Nov 2000) | ||||
|     &TWiki::writeHeader( $query ); | ||||
|     print $before; | ||||
| 
 | ||||
|     # do one or more diffs | ||||
|     $difftmpl = &TWiki::handleCommonTags( $difftmpl, $topic ); | ||||
|     if( $topicExists ) { | ||||
|         my $r1 = $rev1, $r2 = $rev2, $rInfo = ""; | ||||
|         if( $r1 > $r2 + 1) { | ||||
|             $r2 = $r1 - 1; | ||||
|             $isMultipleDiff = 1; | ||||
|         } | ||||
|         do { | ||||
|             $diff = $difftmpl; | ||||
|             $diff =~ s/%REVTITLE1%/r1\.$r1/go; | ||||
|             $rInfo = getRevInfo( $webName, $r1, $topic, 1 ); | ||||
|             $diff =~ s/%REVINFO1%/$rInfo/go; | ||||
|             $text = &TWiki::Store::getRevisionDiff( $webName, $topic, "1.$r2", "1.$r1" ); | ||||
|             $text = renderRevisionDiff( $text, $topic ); | ||||
|             $diff =~ s/%TEXT%/$text/go; | ||||
|             $diff =~ s|( ?) *</*nop/*>\n?|$1|gois;   # remove <nop> tags (PTh 06 Nov 2000) | ||||
|             print $diff; | ||||
|             $r1 = $r1 - 1; | ||||
|             $r2 = $r2 - 1; | ||||
|             if( $r2 < 1 ) { $r2 = 1; } | ||||
|         } while( ( $r1 > $rev2 ) || ( $r1 == 1 ) ); | ||||
| 
 | ||||
|     } else { | ||||
|         $diff = $difftmpl; | ||||
|         $diff =~ s/%REVTITLE1%/$revTitle1/go; | ||||
|         $diff =~ s/%REVTITLE2%/$revTitle2/go; | ||||
|         $diff =~ s/%TEXT%//go; | ||||
|         $diff =~ s|( ?) *</*nop/*>\n?|$1|gois;   # remove <nop> tags (PTh 06 Nov 2000) | ||||
|         print $diff; | ||||
|     } | ||||
| 
 | ||||
|     if( $TWiki::doLogTopicRdiff ) { | ||||
|         # write log entry | ||||
|         &TWiki::Store::writeLog( "rdiff", "$webName.$topic", "r1.$rev1 r1.$rev2" ); | ||||
|     } | ||||
| 
 | ||||
|     # format "after" part | ||||
|     $i = $maxrev; | ||||
|     $j = $maxrev; | ||||
|     my $revisions = ""; | ||||
|     my $breakRev = 0; | ||||
|     if( ( $TWiki::numberOfRevisions > 0 ) && ( $TWiki::numberOfRevisions < $maxrev ) ) { | ||||
|         $breakRev = $maxrev - $TWiki::numberOfRevisions + 1; | ||||
|     } | ||||
| 
 | ||||
|     while( $i > 0 ) { | ||||
|         $revisions .= " | <a href=\"$scriptUrlPath/view%SCRIPTSUFFIX%/%WEB%/%TOPIC%?rev=1.$i\">r1.$i</a>"; | ||||
|         if( $i != 1 ) { | ||||
|             if( $i == $breakRev ) { | ||||
|                 # Now obsolete because of 'More' link | ||||
|                 # $revisions = "$revisions | <a href=\"$scriptUrlPath/oops%SCRIPTSUFFIX%/%WEB%/%TOPIC%?template=oopsrev&param1=1.$maxrev\">>...</a>"; | ||||
|                 $i = 1; | ||||
| 
 | ||||
|             } else { | ||||
|                 if( ( $i == $rev1 ) && ( !$isMultipleDiff ) ) { | ||||
|                     $revisions .= " | >"; | ||||
|                 } else { | ||||
|                     $j = $i - 1; | ||||
|                     $revisions .= " | <a href=\"$scriptUrlPath/rdiff%SCRIPTSUFFIX%/%WEB%/%TOPIC%?rev1=1.$i&rev2=1.$j\">></a>"; | ||||
|                 } | ||||
|             } | ||||
|         } | ||||
|         $i = $i - 1; | ||||
|     } | ||||
|     $after =~ s/%REVISIONS%/$revisions/go; | ||||
|     $after =~ s/%CURRREV%/1.$rev1/go; | ||||
|     $after =~ s/%MAXREV%/1.$maxrev/go; | ||||
|     $after =~ s/%REVTITLE1%/$revTitle1/go; | ||||
|     $after =~ s/%REVINFO1%/$revInfo1/go; | ||||
|     $after =~ s/%REVTITLE2%/$revTitle2/go; | ||||
|     $after =~ s/%REVINFO2%/$revInfo2/go; | ||||
| 
 | ||||
|     $after = &TWiki::handleCommonTags( $after, $topic ); | ||||
|     $after = &TWiki::getRenderedVersion( $after ); | ||||
|     $after =~ s|( ?) *</*nop/*>\n?|$1|gois;   # remove <nop> tags (PTh 06 Nov 2000) | ||||
| 
 | ||||
|     print $after; | ||||
| } | ||||
							
								
								
									
										27
									
								
								recover_all_vim_files
									
										
									
									
									
										Executable file
									
								
							
							
						
						
									
										27
									
								
								recover_all_vim_files
									
										
									
									
									
										Executable file
									
								
							|  | @ -0,0 +1,27 @@ | |||
| #!/bin/sh | ||||
| #  | ||||
| # 2010      Nico Schottelius (nico-nsbin at schottelius.org) | ||||
| #  | ||||
| # This file is part of nsbin. | ||||
| # | ||||
| # nsbin 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. | ||||
| #  | ||||
| # nsbin 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 nsbin. If not, see <http://www.gnu.org/licenses/>. | ||||
| # | ||||
| # | ||||
| # Recover and write all vim files in current directory | ||||
| # | ||||
| #  | ||||
| 
 | ||||
| Does not work: vim reads from stdin! | ||||
| 
 | ||||
| find . -name \*.swp | while read l ; do a=$(echo $l | sed -e 's;/\.;;' -e 's/\.swp$//');  vi -r -c ':x' $a; done         | ||||
							
								
								
									
										18
									
								
								redmine.sh
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										18
									
								
								redmine.sh
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,18 @@ | |||
| #!/bin/sh | ||||
| 
 | ||||
| read -d '' data << EOF | ||||
| <?xml version="1.0"?> | ||||
| <issue> | ||||
|   <subject>Delete/Remove Project</subject> | ||||
|   <description>The user can remove a project from the list with or without deleting it on disk</description> | ||||
|   <parent_issue_id>2762</parent_issue_id> | ||||
|    | ||||
|   <project_id>2</project_id> | ||||
|   <priority_id>2</priority_id> | ||||
|   <tracker_id>6</tracker_id> | ||||
|   <status_id>1</status_id> | ||||
|   <assigned_to_id><YOUR_USER_ID></assigned_to_id> | ||||
| </issue> | ||||
| EOF | ||||
| 
 | ||||
| echo $data | curl -k --request POST --header "Content-type: application/xml" --data-binary @- https://dev.rdit.ch/issues.json?key=<YOUR_API_KEY> | ||||
							
								
								
									
										3
									
								
								rekursivperms
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										3
									
								
								rekursivperms
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,3 @@ | |||
| for a in `seq 1 $#`; do | ||||
|    eval find \$$a -exec /root/scripts/set_correct_bits {} \\\; | ||||
| done | ||||
							
								
								
									
										16
									
								
								release_dlna
									
										
									
									
									
										Executable file
									
								
							
							
						
						
									
										16
									
								
								release_dlna
									
										
									
									
									
										Executable file
									
								
							|  | @ -0,0 +1,16 @@ | |||
| #!/bin/sh -e | ||||
| 
 | ||||
| dir=/home/services/dlna | ||||
| 
 | ||||
| for file in "$@"; do | ||||
|     fname=${file##*/} | ||||
| done | ||||
| 
 | ||||
| [ -z "$file" ] && exit 1 | ||||
| 
 | ||||
| bfile="$(basename "$file")" | ||||
| 
 | ||||
| scp "$file" "${host}:$dir" | ||||
| ssh $host "chmod a+r \"$dir/$bfile\"" | ||||
| 
 | ||||
| echo "Pre-released ${url}/${bfile}" | ||||
							
								
								
									
										18
									
								
								remove-links
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										18
									
								
								remove-links
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,18 @@ | |||
| if [ -z "$1" ]; then | ||||
|    echo noe | ||||
|    exit 1 | ||||
| fi | ||||
| 
 | ||||
| for dirs in bin sbin lib include share; do | ||||
|    cd "$1/$dirs" | ||||
|    for file in *; do | ||||
|       if [ -L /usr/$dirs/"$file" ]; then | ||||
|          echo removing link $file | ||||
|          rm /usr/$dirs/"$file" | ||||
|       elif [ -d /usr/$dirs/"$file" ]; then | ||||
|          rmdir /usr/$dirs/"$file" | ||||
|       else | ||||
|          echo /usr/$dirs/"$file" is not a link... | ||||
|       fi | ||||
|    done | ||||
| done    | ||||
							
								
								
									
										8
									
								
								remove-pcsystems
									
										
									
									
									
										Executable file
									
								
							
							
						
						
									
										8
									
								
								remove-pcsystems
									
										
									
									
									
										Executable file
									
								
							|  | @ -0,0 +1,8 @@ | |||
| #!/bin/sh | ||||
| NEW="nico-webdesign at schottelius.org" | ||||
| OLD="nicos@pcsystems.de" | ||||
| 
 | ||||
| if [ ! -d "$1" ]; then | ||||
|    cat "$1" | sed "s,$OLD,$NEW," > $1.tmp | ||||
|    mv $1.tmp $1 | ||||
| fi | ||||
Some files were not shown because too many files have changed in this diff Show more
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue