outanekka.KIESS.ONL — online multiuser image display solution with additional features!
theme » relaxed · tek · unique ·
user:   password:

About outanekka.KIESS.ONL — online multiuser image display solution with additional features!

support and donate

You can support the outanekka.KIESS.ONL — online multiuser image display solution with additional features! development as well as take a share of the server hosting costs by donating a small amount of money.

about outanekka

The outanekka base arrived at version 0.9.0.16 and is developed by Adrian Immanuel Kieß.

You can contact Adrian Immanuel Kieß under:

  1. E-Mail: adrian@kiess.onl
  2. XMPP: adrian@kiess.onl
  3. Website: https://www.KIESS.ONL

Outanekka is the so called summary of all those below listed modules and additional files:

  1. text is v0.9.0.16, last edit: 20.07.14.

    ###############################################################################
    # Author: Adrian Immanuel Kiess < https://www.kiess.onl >
    # License: BSD, see LICENSE file
    # What: Module for outanekka.kiess.onl
    ###############################################################################
    
    package text;
    
    use strict;
    use warnings;
    
    use CGI qw/:standard escapeHTML -utf8/;
    use CGI::Carp qw(warningsToBrowser fatalsToBrowser carpout set_message set_die_handler confess);
    
    use imagery::album;
    use imagery::image;
    use user::account;
    
    =head1

  2. config is v0.9.0.16, last edit: 20.07.15.

    ;
    
    # vim: noai:sts=2 sw=2 ts=2
    #
    # EOF
    

  3. home is v0.9.0.18, last edit: 20.11.29.

    8;
    our $LASTEDIT = '20.1

  4. chatbox is v0.9.0.12, last edit: 19.04.28.

    ;		
    
    our $q = new CGI; 
    our $VERSION = 0.9.0.1

  5. imagery is v0.9.0.16, last edit: 20.07.19.

    ;                     # $data now untainted
        } else {
          die "Bad data in '$newNick'";      # log this somewhere
        }
    
        my $pathAlbumsOld = $PATH_ALBUMS . $oldNick;
        my $pathAlbumsNew = $PATH_ALBUMS . $newNick;
    
        my $cacheAlbumsOld = $CACHE_ALBUMS . $oldNick;
        my $cacheAlbumsNew = $CACHE_ALBUMS . $newNick;
    
        my $cacheThumbsOld = $CACHE_THUMBS . $oldNick;
        my $cacheThumbsNew = $CACHE_THUMBS . $newNick;
    
        my $cacheImagesOld = $CACHE_IMAGES . $oldNick;
        my $cacheImagesNew = $CACHE_IMAGES . $newNick;
    
        move ($pathAlbumsOld, $pathAlbumsNew) or warn "Cannot rename file: $!" 
          if -d $pathAlbumsOld;    
        move ($cacheAlbumsOld, $cacheAlbumsNew) or warn "Cannot rename file: $!" 
          if -d $cacheAlbumsOld;    
        move ($cacheThumbsOld, $cacheThumbsNew) or warn "Cannot rename file: $!" 
          if -d $cacheThumbsOld;    
        move ($cacheImagesOld, $cacheImagesNew) or warn "Cannot rename file: $!" 
          if -d $cacheImagesOld;    
    
        $sth = $::dbh->prepare(qq{
          UPDATE $MODULE\_album SET path = REGEXP_REPLACE(path, ?, ?) 
          WHERE path LIKE ?
        }) or die $main::dbh->errstr;
        $sth->execute('^' . $oldNick, $newNick, $oldNick . '%');
      }	
    }
    
    ## LEGACY CODE
    ##
    ##
    #
    #
    #sub checkFreshness {
    #  my ($id, $path, $image, $mtime) = @_;
    # 
    #  confess unless ($id && $path && $image);
    #
    #  my $imageOriginal = $PATH_ALBUMS . $path . $image;
    #    
    #  if (-e $imageOriginal) {
    #    my $mtimeNow = sprintf("%.6f", -M $imageOriginal);
    #      
    #    if ( !$mtime or $mtime == 0 or ($mtimeNow < $mtime )) { 
    #        &imagery::image::generate($id, $path, $image, $IMAGE_MD);
    #        &imagery::image::generate($id, $path, $image, $THUMB_MD);
    #    } else {
    #        unless (-e $CACHE_IMAGES . $path . $image) {
    #          &imagery::image::generate($id, $path, $image, $IMAGE_MD); 
    #        }
    #        unless (-e $CACHE_THUMBS . $path . $image) {
    #					#&imagery::image::generate($id, $path, $image, $THUMB_MD); 
    #        }
    #    }
    #  } else {
    #    &imagery::image::delete($id,$path,$image);
    #  }
    #}
    
    =item findRandomImage()
    
    findRamdomImage() searches for an random image in one overgiven 
    folder recursively. If no image is found, the 
    EMPTY_ALBUM variable will be given back as image.
    
    =cut
    
    sub findRandomImage {
      my $path = shift;
      our @foundFiles = ();
      
      confess unless $path;
    
      find({wanted => sub { 				# Function
            if ($File::Find::name and $File::Find::name =~ /$AIEXT/i) {
              my @image = ( $File::Find::dir, $_ );  
              push(@foundFiles, [ @image ]);
            }
          }, 
          untaint => 1

  6. theme is v0.9.0.13, last edit: 20.04.13.

    ###############################################################################
    # Author: Adrian Immanuel Kiess < https://www.kiess.onl >
    # License: BSD, see LICENSE file
    # What: Module for outanekka.kiess.onl
    ###############################################################################
    
    package theme;
    
    use strict;
    use warnings;
    
    use CGI qw/:standard escapeHTML -utf8/;
    use CGI::Carp	qw/fatalsToBrowser carpout set_message/;
    use contributed::Util qw/shuffle first/;
    
    =head1

  7. user is v0.9.0.16, last edit: 20.07.14.

    ;
    
    our $PROFILE_ENTRY_MAX = 1

  8. about is v0.9.0.12, last edit: 19.04.16.

    2;
    our $LASTEDIT = '1

  9. html is v0.9.0.18, last edit: 20.11.29.

    ';
    our $PAGE_REFRESH = 60; # READY MOVE TO CHATBOX.PM
    
    our $benchmarkA = \$main::benchmarkA;
    our $cookie = \$main::cookie; # READY MOVE TO USER.PM
    
    our $BASE = 'index.pl';
    our $COPYRIGHT_URL = $conf::copyrightUrl;
    our $REF = $conf::sitePath;
    our $NAME = $conf::siteName;
    our $STATS_URL = $conf::siteStats;
    our $TITLE = $conf::siteTitle;
    our $WEBMASTER = $conf::siteWebmaster;
    
    our $Q_MODULE = $q->param('module');
    our $Q_ACTION = $q->param('action');
    our $Q_ID = $q->param('id');
    our $Q_PATH = $q->param('path');
    
    our $PATHLENGTH  = 255;
    
    
    =head2 FUNCTIONS
    
    =over 4
    
    =item run()
    
    run() is called from index.pl while building the main content of the 
    current page. The following logic will decide what to execute 
    inside here.
    
    =cut
    
    sub run {
      my $header = &html::header();
      my $topbar = &html::topbar();
      my $navmenu = &html::navmenu();
      my $navmenuUser = &user::page::navmenu();
      my $middleBegin = &html::middleBegin();
      my $middle = &html::middle();
      my $right = &html::right();
      my $bottombar = &html::bottombar();
     
      #### standard reporting functionality
      #msg(    &basic::getFailureMessage( "Database","Connecting to database"));
      #error(  "Database connection failed! ");
      #debug(  "Connection arguments were! ");
    
      return $header .
        $topbar . 
        $q->div({-class=>'topbar-nav'},
          $q->div({-style=>'float:right;'},
            $navmenu
          ) .
          $navmenuUser
        ) . 
        $middleBegin . 
        ($main::locallog || ""). 
        Log::Message::Simple->stack_as_string .
        $middle .
        $right .
        $bottombar;
       
    }
    
    
    =item header()
    
    header() returns the header of a page.
    
    =cut
    
    sub header {
     
      my $stylesheet .= qq|
        }
        img {
     	behavior: url("pngbehavior.htc");
        }\n|;
      my $siteUrl = $conf::siteUrl;
      my $chatboxREF = "/chatbox/";
      
      $chatboxREF =~ s/^\/// if $siteUrl =~ m/\/$/;
     
      return ($$cookie ? 
        $q->header(-type=>'text/html', -charset=>"UTF-8", -cookie=>$$cookie) :
    		$q->header(-type=>'text/html', -charset=>"UTF-8")) . 
    	  $q->start_html(
    			-encoding => "UTF-8",
        	-title=>$NAME . 
        		($Q_MODULE ? ' : '.$Q_MODULE : '').
    	  		($Q_ACTION ? ' : '.$Q_ACTION : '').
    	  		($Q_ID ?     ' : '.$Q_ID     : '').
    	  		($Q_PATH ?   ' : '.$Q_PATH   : ''),
      		#-base=>'true',
      		-meta=>{'copyright'=>  'BSD',
    	  		     'publisher'=> $AUTHOR,
    	  		     'description'=> $TITLE,
    	  		     'generator'=> $NAME . ' ' . $BASE . ' ' . $main::VER},
      		-style=>{-code=> $stylesheet},
      		-head=>[ 
    		    $q->Link({-rel=>'Stylesheet',
                      -href=>&theme::getDefaultCSS(),
                      -type=>'text/css'}),
    			  $q->Link({-rel=>'Stylesheet',
    	          		  -href=>&theme::getThemeCSS(),
                      -type=>'text/css'}),
    	  		$q->Link({-rel=>'shortcut icon',
    	                -href=>$REF.'favicon.ico',
    		              -type=>'image/x-icon'}), 
    		    (($Q_MODULE and ($Q_MODULE eq "chatbox")) ? 
    	        $q->meta({-http_equiv => 'Refresh', 
    			              -content=> "$chatbox::PAGE_REFRESH; URL=$siteUrl$chatboxREF"}) 
    		         : "")
          ],     
        );
    }
    
    
    =item topbar()
    
    topbar() returns the top corner of a page.
    
    =cut
    
    sub topbar {
      my $img;
      my $img_src = &theme::getBannerImage();
        
      #if ($ENV{'HTTP_USER_AGENT'} and $ENV{'HTTP_USER_AGENT'} !~ /MSIE/) {
      #} else {
        #$img_style = "filter:progid:DXImageTransform.Microsoft.AlphaImageLoader(".
        #"src='".$img_src."";".',sizing='scale');";  
      #}
      
      $img = $q->a({-href=>$REF},
             $q->img({-src=>$img_src,
                      -title=>$TITLE,
    								  -alt=>$TITLE})) . 
             $q->div({-class=>'loading'},''); #'loading the page...');	    
    
      return $q->div({-class=>'topbar',
                      -title=>$NAME},
               $q->div({-class=>'topbar-text'},
                 $img . 
    	           $q->div(
    	             'theme &raquo; ' . &theme::themeLinks() . 
                   &user::page::topbar()
    	           )
    	         )
    	       );
    }
    
    
    =item navmenu()
    
    navmenu() returns the navigation menu of a page.
    
    =cut
    
    sub navmenu {
      return "\n<!-- navmenu() -->\n".
        $q->ul({-id=>'navmenu'},
        
        $q->li({-style=>'margin-right:1

  10. basic is v0.9.0.12, last edit: 19.05.09.

    ;
    
    # vim: noai:sts=2 sw=2 ts=2
    #
    # EOF
    

  11. guestbook is v0.9.0.16, last edit: 20.07.14.

    4';
    our $VER = sprintf("%vd", $VERSION);
    our $MODULE = __PACKAGE__;
    our $REF = $conf::sitePath . $MODULE . "/";
    
    our $Q_MODULE = $q->param('module');
    our $Q_ACTION = $q->param('action');
    our $Q_ID = $q->param('id');
    
    our $OPINION_MIN = 2;
    our $OPINION_MAX = 81

  12. about::page is v0.9.0.16, last edit: 20.09.23.

    ;
    
    our $q = new CGI; 
    our $VERSION = 0.9.0.1

  13. about::module is v0.9.0.16, last edit: 20.07.15.

    5';
    our $VER = sprintf("%vd", $VERSION);
    our $MODULE = \$about::MODULE;
    our $REF = \$about::REF;
    our $PATH_MODULES = \$about::PATH_MODULES;
    
    our $Q_MODULE = \$about::Q_MODULE;
    our $Q_ACTION = \$about::Q_ACTION;
    
    
    =item moduleInfo()
    
    moduleInfo() gets random lines of source code from a perl package.
    
    =cut
    
    sub moduleInfo {
      my $module = shift;
      my $randLine;
      
    	confess unless $module and -f $module and ($module =~ /\.pm$/);
      
      local $/ = 1

  14. guestbook::page is v0.9.0.16, last edit: 20.07.14.

    024;
    
    
    =head2 FUNCTIONS
    
    =over 4
    
    =item create()
    
    create() Adds a opinion to the guestbook.
    
    =cut
    
    sub create {
       my $email = shift || $q->param('email');
       my $opinion = shift || $q->param('opinion');
       my $verify = shift || $q->param('verify');
       my $verify_input = shift || $q->param('verify_input');
       
       if (&guestbook::opinion::create($email, $opinion, $verify, $verify_input)) {
         return 1

  15. guestbook::opinion is v0.9.0.16, last edit: 20.07.14.

     AUTHOR
    
    Adrian Immanuel Kiess - < http://www.kiess.onl/ >
    
    =cut
    
    1

  16. user::profile is v0.9.0.16, last edit: 20.07.20.

    024 * 1

  17. user::page is v0.9.0.16, last edit: 20.07.21.

    ###############################################################################
    # Author: Adrian Immanuel Kiess < https://www.kiess.onl >
    # License: BSD, see LICENSE file
    # What: Module for outanekka.kiess.onl
    ###############################################################################
    
    package user::page;
    
    use strict;
    use warnings;
    
    use CGI qw/:standard escapeHTML -utf8/;
    use CGI::Carp qw(warningsToBrowser fatalsToBrowser carpout set_message set_die_handler confess);
    use Encode qw(decode encode);
    use HTML::Entities;
    use POSIX qw/strftime/;
    
    use contributed::Random;
    use user;
    use user::account;
    use user::session;
    
    =head1

  18. user::account is v0.9.0.16, last edit: 20.07.21.

    6;
    $| = 1

  19. user::session is v0.9.0.16, last edit: 20.07.21.

    024 * 1

  20. imagery::thumb is v0.9.0.16, last edit: 20.07.19.

     NAME
    
    imagery::thumb.pm
    
    =head1

  21. imagery::image is v0.9.0.16, last edit: 20.09.23.

    ;
    		#$thumbsCache =~ m/$$PATH_REGEX$$IMAGE_REGEX/;
    		#$thumbsCache = $1

  22. imagery::page is v0.9.0.18, last edit: 20.11.29.

    px; clear:both;'},'&nbsp;');
    				
    				#map { $o .= &imagery::album::link($path.$_.'/') } @albums;
    					
    		 		#map { &imagery::album::link($_->{album_id}) } @ { &imagery::album::popular( $conf::rootAlbumThumbs ) } )).
    		}
    
    		if (@images) {
    				my ($navigation);
    				my ($skip) = 0;
    				my ($i);
    				
    				if ($#images > $$PAGE_THUMBS) {
    					($navigation, $skip) = &basic::navigation(
    					($#images+1

  23. imagery::album is v0.9.0.16, last edit: 20.07.19.

    00%" : ($width + 30)."px"; 
         
            if ($thumb and ($thumb ne $$EMPTY_ALBUM)) {
              $imgSrc = $$REF_LOCAL . $$CACHE_ALBUMS .  $path . ($thumb ? $thumb : 'NotSet');        
            } else {
              $imgSrc = $$REF_LOCAL . $$PATH_STATICS . $$EMPTY_ALBUM;
            }
    				#$imgSrc =  ($thumb ? 
    				#	($$REF_LOCAL . $$CACHE_ALBUMS .  $path . ($thumb ? $thumb : 'NotSet')) : 
    				#	$$REF_LOCAL . $$PATH_STATICS . $$EMPTY_ALBUM);
    
    				return $q->div({-style=>($verbose ? 'text-align:right; ' : '').
    						"width:$divWidth; height:$divHeight; display:inline-block;",
    						-title=>'Album ' . $path . ' with ' . $impressions . ' impressions'},
    					$q->a({-href=>$$REF_VIEW . $path},
    					$q->img({-width=>$width,
    						-heigth=>$height,
    						-alt=>($topAlbum ? $topAlbum : $nick),
    						-src=>$imgSrc
    					}) . $q->br() . ($topAlbum ? $topAlbum : '')
    					),($verbose ? 'by ' . &user::account::link($uid) . ',' . $q->br().
    					$q->b($impressions).' impressions' : '')
    				);
    			} 
    		} 
      }
    
    	return undef;
    }
    
    =item queryId()
    
    =cut
    
    sub queryId {
      my $path = shift;
      my ($aid, $sth);
    
      confess unless $path; #and $path =~ /\/$/;
    
      $sth = $::dbh->prepare(qq{
        SELECT album_id FROM $$MODULE\_album WHERE BINARY path=?
      });    
      $sth->execute($path) or die $::dbh->errstr;
      $aid = $sth->fetchrow;
        
      return ($aid ? $aid : undef)
    }
    
    =item queryPath
    
    queryPath()
    
    =cut
    
    sub queryPath {
      my $iid = shift;
      my ($path, $sth);
    
      confess unless $iid;
    
      $sth = $::dbh->prepare(qq{
          SELECT path FROM $$MODULE\_album WHERE album_id=? 
      });      
      $sth->execute($iid) or die $::dbh->errstr;;
      $path = $sth->fetchrow();
      
      return $path;
    }
    
    =item create()
    
    create()
    
    =cut
    
    sub create {
      my $aid = shift || $$Q_ID;
      my $newAlbum = shift || $q->param('newSubAlbumName');
    
      my $path = &imagery::album::queryPath($aid) if $aid;
      my $uid = &imagery::album::queryUser($aid) if $aid;
     
      if ($aid and 
    		$path and $uid and -e ($$PATH_ALBUMS . $path) and $newAlbum and (
        (($uid == &user::session::getAccountId()) and 
        &imagery::quota::verifyAlbum($uid) and 
    	  &imagery::quota::verifyFreeSpace($uid))
    	  or (&user::session::getAccountLevel() >= 255))) {       
        
        my $aidExists = &imagery::album::queryId($path . $newAlbum . '/');
      
        if ((&imagery::pathDepth($path) < 1

  24. imagery::daily is v0.9.0.18, last edit: 20.11.29.

    .29';
    our $VER = sprintf("%vd", $VERSION);
    our $MODULE =  \$imagery::MODULE;
    our $REF = \$imagery::REF;
    our $REF_IMAGE = \$imagery::REF_IMAGE; 
    
    our $Q_MODULE = \$imagery::Q_MODULE;
    our $Q_ACTION = \$imagery::Q_ACTION;
    our $Q_ID = \$imagery::Q_ID;
    
    
    =head2 FUNCTIONS
    
    =over 4
    
    =item delete()
    
    delete()
    
    =cut
    
    sub delete {
      my $iid = shift;
    
    	my ($sth);
    
      $sth = $::dbh->prepare(qq{
        DELETE FROM $$MODULE\_daily WHERE image_id=?
      });
      $sth->execute($iid) or die $::dbh->errstr;
    
      return $iid;
    }
    
    =item image()
    
    image()
    
    =cut
    
    sub image {
      my ($sth, $href, $iid, $unixtime);
    
      $sth = $main::dbh->prepare(qq{
    		SELECT image_id, unixtime FROM $$MODULE\_daily ORDER BY unixtime DESC LIMIT 1

  25. imagery::quota is v0.9.0.16, last edit: 20.07.15.

    024));
      $free = sprintf("%.3f",(&freeSpace($uid) / 1

  26. chatbox::page is v0.9.0.16, last edit: 20.07.14.

    2px',
                        -name=>'chatboxMessage',
    	                  -default=>'',
    	                  -override=>1

  27. chatbox::message is v0.9.0.12, last edit: 19.04.28.

    ###############################################################################
    # Author: Adrian Immanuel Kiess < https://www.kiess.onl >
    # License: BSD, see LICENSE file
    # What: Module for outanekka.kiess.onl
    ###############################################################################
    
    package chatbox::message;
    
    use strict;
    use warnings;
    
    use CGI	qw/:standard escapeHTML -utf8/;
    use CGI::Carp qw(warningsToBrowser fatalsToBrowser carpout set_message set_die_handler confess);
    use POSIX	qw/strftime/;
    
    
    =head1

about v0.9.0.12
about::module v0.9.0.16
about::page v0.9.0.16

185295
impressions since May 18, 2019
61 images

ytimet.png by lapsangs, 9558 impressions running-jexercise-programs-at-netbsd-9-host-www3-kiess-onl.png by adrian, 10276 impressions tdz2000-lan-dac-running-netbsd-9-with-ctwm-custom-config.png by adrian, 34014 impressions

30 messages

<adrian> Ja, Bugs bitte an adrian@kiess.onl senden. Danke.
<adrian> ß?üöä -- Umlauttest.
<adrian> öüäß©
<adrian> äüöß
<nuser> Ein kleiner Test!
<adrian> Hallo Welt!

Please log in to write messages!

6 users

we welcome
lapsangs · tanam · nuser · remus · moron · adrian · …

recently active
adrian · …

new images
adrian · lapsangs ·

outanekka.KIESS.ONL v0.9.0.16 (2001–2021) by Adrian Immanuel KießBSD licensed
Designed for the Mozilla browser ♦ outanekka.KIESS.ONL usage statistics
Perl code runtime: 0 wallclock secs ( 0.01 usr + 0.00 sys = 0.01 CPU)
2  time    vsz (  diff)    rss (  diff) shared (  diff)   code (  diff)   data (  diff)
     0  91764 ( 91764)  42044 ( 42044)  14696 ( 14696)   1552 (  1552)  27160 ( 27160) after start
     0  92316 (   552)  42572 (   528)  14696 (     0)   1552 (     0)  27712 (   552) near exit