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.

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

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

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

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

    ###############################################################################
    # Author: Adrian Immanuel Kiess < https://www.kiess.onl >
    # License: BSD, see LICENSE file
    # What: Module for outanekka.kiess.onl
    ###############################################################################
    
    package home;
    
    use strict;
    use warnings;
    use CGI;
    use CGI::Carp qw(warningsToBrowser fatalsToBrowser carpout set_message set_die_handler confess);
    
    use about::module;
    use imagery::page;
    
    
    =head1

  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.

    ) {	
    		$subAlbumId = &imagery::album::queryId($1

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

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

  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.

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

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

    px;'},     
            $q->a({-href=>$conf::siteUrl},$conf::siteName . ' v'.$main::VER) . 
            ' (' . $YEAR_BEGUN . '&ndash;' . (strftime "%Y",gmtime($^T)) . ') ' . 
            ' by ' . 
            $q->a({-href=>$conf::siteAuthorUrl},$AUTHOR) . 
            ' &diams; ' . 
            $q->a({-href=>$COPYRIGHT_URL},"BSD licensed") . 
            $q->br() . 
            'Designed for the ' . 
            $q->a({-href=>'https://www.mozilla.org/'},'Mozilla browser') . 
            ' &diams; ' .
            $NAME.' ' . 
            $q->a({-href=>$STATS_URL},' usage statistics') . 
            $q->br() . 
            $q->a({-href=>'https://www.perl.org/'},'Perl') . 
            ' code runtime:' . 
            timestr($benchmark)
    		) .
    			#qq'<style type="text/css">
    			#     .loading 	{ visibility:hidden; } 
    			#   </style>' . 
    			  $q->div({-class=>'bottombar-sys',-style=>''},
    				$q->pre({-style=>'display: inline-block; text-align:left;'},$::mu->record('near exit') . 
    				$::mu->report())) .
          $q->end_html();
    }
    
    
    =head1

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

     DESCRIPTION
    
    Provides basic routines needed for outanekka.
    
    =head2 STATUS
    
    The status is considered unstable.
    
    =cut
    
    
    BEGIN {
      my @sql = (
        qq{CREATE TABLE IF NOT EXISTS impression (    
    	    impressions	BIGINT UNSIGNED,
    	    unixtime BIGINT UNSIGNED default NULL   	
          );
        },
        #qq{},
      );
    
      for (@sql) {
        my $sth = $main::dbh->prepare($_) or die $main::dbh->errstr;
        $sth->execute or die $main::dbh->errstr;
        $sth->finish;
      }
      
      #$::dbh->do(});
    }
    
    $| = 1

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

     DESCRIPTION
    
    The guestbook module allows unauthorized users to leave their opinion. 
    A superuser can edit and delete entries. 
    In conclution it is - well, a simple guestbook.
    
    =head2 STATUS
    
    The status is considered stable.
    
    =cut
    
    
    BEGIN {     
      my @sql = (
        qq{CREATE TABLE IF NOT EXISTS guestbook (   
            id BIGINT UNSIGNED NOT NULL AUTO_INCREMENT,
            opinion	TEXT,
            email	TINYTEXT,
            unixtime BIGINT UNSIGNED default NULL,
            PRIMARY KEY (id)
          );
        },
    		#qq{ALTER TABLE guestbook MODIFY COLUMN id BIGINT UNSIGNED NOT NULL AUTO_INCREMENT;},
      );
    
      for (@sql) {
        my $sth = $main::dbh->prepare($_) or die $main::dbh->errstr;
        $sth->execute or die $main::dbh->errstr;
        $sth->finish;
      }
    }
    
    $| = 1

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

    6;
    our $LASTEDIT = '20.09.23';
    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 viewModules()
    
    viewModules() prints random portions of source code from outanekka as page output. 
    
    =cut
    
    sub viewModules {
      my @modules = &about::module::modules($$PATH_MODULES);
      my $o;
      
      $o .= $q->h1

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

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

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

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

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

    ;
      } 
      
      &basic::failureMessage("Removing opinion failed",
        "Could not remove opinion #" . ($id || "undefined") . "\!");
        
      return undef;
    }
    
    =item browse()
    
    browse() returns a list of opinions limitted by SKIP.
    
    =cut
    
    sub browse {  
      my $skip = shift || $$SKIP;
      my $navbar;
      my $sth;
      my $entries = $::dbh->do("select last_insert_id( ) from $$MODULE;");
      my $opinions;
        
      ($navbar, $skip) = &basic::navigation(
                          $entries,     # Total entries
                          $$REF,         # URL basepath
    				              "opinions",   # Name
    				              $$SKIP);    # Entries per page 
      
      if (defined $skip and $skip =~ /(^\d+)$/ and $navbar and $entries) {
        
        $sth = $::dbh->prepare(qq{
    	    SELECT * FROM $$MODULE ORDER BY id DESC LIMIT $skip,$$SKIP
        }) or die $::dbh->erstr;
        $sth->execute() or die $::dbh->errstr;
    
        while ( my $ref = $sth->fetchrow_hashref ) {
          $opinions .= &link($ref->{id}, 
             $ref->{opinion}, 
             $ref->{email}, 
    		     $ref->{unixtime}
    		  );
        }  
          
        if ($opinions) {
          return $navbar . $opinions . $navbar;
        }
        else {
          return undef;
        }
      }
      else {
        return undef;
      }
    }
    
    =item link()
    
    link() returns the link to an opinion as HTML formatted output.
    
    =cut
    
    sub link {  
      my $id = shift;
      my $opinion = shift;
      my $email = shift;
      my $unixtime = shift;
      	
      if ($id and $id =~ m/^\d+$/) {    		
         my $date = strftime "%B %d, %Y",gmtime($unixtime);
         $email = &text::leetEmail($email);
         $opinion = &text::formattedText($opinion);
         
         return $q->div({-class=>"textbox",
             -id=>$id,
    	       -title=>"Opinion \#$id by $email"},
             $q->div({-class=>"textbox-subformation"},
               "( " . $email ." @ " . $date . " ) " , 
             
               ( &user::session::getAccountLevel() >= 255 ) ? 
               $q->span(" [ " . 
                 $q->a({-href=>$$REF."edit/$id"},"&iquest; edit") . " ] [ " . 
                 $q->a({-href=>$$REF."delete/$id"},"&Chi; delete") . " ]"
    			      ) : "" # no rights
             ) . 
             $q->div({-class=>"textbox-content"},$opinion)
           );
      }
    }	
    
    =item queryRecord()
    
    queryRecord() returns the database record of the given opinion ID.
    
    =cut
    
    sub queryRecord {
      my $id = shift || $$Q_ID;
    	my ($sth, $href);
      
    	if ($id and ($id =~ m/^(\d+)$/)) {
        $sth = $::dbh->prepare(qq{
          SELECT opinion, email FROM $$MODULE WHERE id=(?)
        }) or die $::dbh->errstr;
        $sth->execute($id) or die $::dbh->errstr;
        $href = $sth->fetchrow_hashref;
    
    		if ($href) {
    			return $href;
    		}
    	}
      return undef;
    }
    
    =item matches()
    
    matches() searches for a similiar already existing opinion in the database.
    
    =cut
    
    sub matches {
    	my $email = shift || $q->param('email');
    	my $opinion = shift || $q->param('opinion');
    
    	if ($email and $opinion) {
    		my ($sth, $href);
    
    		$sth = $::dbh->prepare(qq{
    		  SELECT id FROM $$MODULE WHERE email LIKE (?) AND opinion LIKE (?)
    		}) or die $::dbh->errstr;
    		$sth->execute('%'.$email.'%', '%'.$opinion.'%') or die $::dbh->errstr;
    		$href = $sth->fetchrow_hashref;
    
    		if ($href and $href->{'id'} and ($href->{'id'} =~ m/^(\d+)$/)) {
    			return 1

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

    ###############################################################################
    # Author: Adrian Immanuel Kiess < https://www.kiess.onl >
    # License: BSD, see LICENSE file
    # What: Module for outanekka.kiess.onl
    ###############################################################################
    
    package user::profile;
    
    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 POSIX qw/strftime/;
    
    #use contributed::Random;
    use user;
    
    =head1

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

    ("List of users at $::conf::siteName") .
    			$q->h2("User list") .
    		  $q->p("There are " . $q->b($q->big($count)) . " registered users at " . $::conf::siteName . ".") .
    			$q->p(	
    			$q->table({-border=>0,-width=>'1

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

    6;
    our $LASTEDIT = '20.07.21

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

     
    						WHERE id=?
    					}) or warn $::dbh->ersstr;  
    				$sthUpdateAccount->execute($$accountId) or die $::dbh->errstr;  
    
    
    	      confess unless $$accountId && $$accountId =~ /^\d+$/ && 
    				  $$accountNick && $$accountLevel && $$accountLevel =~/^\d+$/ && 
    					$$sessionKey;
          }
        }
      }
    }
    
    
    =item login()
    
    login() let's the user login to outanekka.
    
    =cut
     
    sub login { 
    	my $user = shift || $q->param('user') || undef;
      my $password = shift || $q->param('password');
      my $html;
      
    	if ($password and &user::session::hasSession()) {
    		&basic::successMessage("Logged in into " . $conf::siteName,
    	    $q->b("Welcome $$accountNick!") . " I'm glad to have you back again.");
    
    		return $user;
    	} else {
    	  if ($user and $password) {
    			&basic::failureMessage("Password mismatch",
    		    qq/Sorry, the password you gave me did not match the one I had. 
    			  You maybe made a typo. Please try again./);
    	  } elsif ($password and !$user) {
      		&basic::failureMessage("Username missing",
    		    qq/Please enter your username in the user field./);
    		} elsif ($user and !$password) {
    		  &basic::failureMessage("Password missing",
    		    qq/Please enter your password in the password field./);
      	}
    
    		return undef;
    	}
    }
    
    =item preLogout()
    
    preLogout() clears the user session at the beginning of the outanekka logics.
    
    =cut
    
    sub preLogout {
      if ($$Q_MODULE and ($$Q_MODULE eq $$MODULE) and 
        ($$Q_ACTION and (($$Q_ACTION eq "logout") or ($$Q_ACTION eq "delete")))) {
        my $givenSessionKey = $q->cookie("session_key");
    
        if ($givenSessionKey) {      
    
    			#my $sth = $::dbh->prepare(qq{ 
    			#	DELETE FROM $$MODULE\_session
    			#		WHERE session_key=? 
    			#}) or die $::dbh->errstr;    
    			#$sth->execute($givenSessionKey) or die $::dbh->errstr; 
    			
    			my $sth = $::dbh->prepare(qq{ 
    			 	  UPDATE $$MODULE\_session SET session_expires=(?), 
    			    session_key=(?) 
    			    WHERE session_key=(?) 
    			}) or die $::dbh->errstr;    
    			$sth->execute($SESSION_EXPIRES_REMEMBER, "", $givenSessionKey) or die $::dbh->ersstr;;  
          
    			#if ($sth) {
            $::cookie = $q->cookie(
    	 	      -NAME => 'session_key',
              -VALUE => 'logged out',
              -EXPIRES => '+1

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

    9';
    our $VER = sprintf("%vd", $VERSION);
    our $MODULE = \$imagery::MODULE;
    
    our $REF = \$imagery::REF; 
    our $REF_IMAGE = \$imagery::REF_IMAGE; 
    our $REF_VIEW	= \$imagery::REF_VIEW;
    our $REF_LOCAL = \$imagery::REF_LOCAL;
    
    our $PATH_ALBUMS = \$imagery::PATH_ALBUMS;
    our $PATH_CACHES = \$imagery::PATH_CACHES;
    our $CACHE_THUMBS = \$imagery::CACHE_THUMBS;
    
    our $THUMB_MD = \$imagery::THUMB_MD;
    
    our $PATH_REGEX = \$imagery::PATH_REGEX;
    our $IMAGE_REGEX = \$imagery::IMAGE_REGEX; 
    
    
    =head2 FUNCTIONS
    
    =over 4
    
    =item link()
    
    link()
    
    =cut
    
    sub link {
      my $iid = shift;
       
      if ($iid and &imagery::image::exists($iid)) { 
    		my ($href);
    
    		($href) = &imagery::thumb::queryRecord($iid);
    
    		if ($href) { 
    		  my $nick = &user::account::queryNick($href->{'user_id'});
    		  
    		  $href->{'impressions'} = $href->{'impressions'} ? $href->{'impressions'} : 1

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

    00');
    						$imageQuality = 1

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

     = 'Randomn Images';
      } 
      
      if ($navName eq 'images') { 
        $count = &imagery::image::count(); 
      } else {
        $count = &imagery::album::count();
      }
    
      ($navigation, $skip) = &basic::navigation(
    			        $count,     		# Total entries
    			        $$REF . $$Q_ACTION,       # URL basepath
    			        $navName,   		# Name
    			        $$PAGE_THUMBS           # Entries per page 
    			    );    		
     
      $o .= $q->h1

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

     . '/';
          $oldAlbum = $2;
        }
        
        $renamePath = $subPath . $renameAlbum . '/';
     
        if ( &imagery::pathDepth($path) <= 1

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

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

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

    6;
    our $LASTEDIT = '20.07.1

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

    ;
        } else {
          return undef;
        }
        return undef;
      }
      return undef;
    }
    
    
    =item history()
    
    history() lets the user browse through the chatbox history.
    
    =cut
    
    sub history {
      my $skip = shift || $$Q_SKIP || 0;
      
      #my $skip = ($q->param('skip') && 
      #            $q->param('skip') =~ m/^[0-9]+$/) ? $q->param('skip') : 0;
      my ($o, $sth, $href, $count);
        
      if (&user::session::hasSession()) {    
        $q->param('chatboxMessage',''); 
        $q->param('action','create');
        
        $o .= $q->div(
          $q->start_form(-style=>'padding:0px;',
                         -method=>'',       
    	                   -action=>$$REF),
          $q->hidden(-name=>'module',-default=>'chatbox'),
          $q->hidden(-name=>'action',-default=>'create'),
          "Your message:",$q->br(),
          $q->textfield(-style=>'width:51

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

    ;
        }
        else { 
         &basic::failureMessage("Message not deleted",
           "The message \#$id could " . $q->b("not") . " be deleted.");
        }
      }
    	return undef;
    }
     
    
    =item link()
    
    link() formats the message for output to the user.
    
    =cut
    
    sub link {
      my $id = shift;
      my $uid = shift;
      my $msg = shift;
      my $unixtime = shift;
        
      if ($id and $uid and $msg) {
        my $o;  
        
        if ($unixtime) {  
          my $gmtime = strftime "%b %d, %R", gmtime($unixtime);
          
          if (&user::session::getAccountLevel() >= 255) {
            $o .= $q->small("&nbsp;[&nbsp;" .
    				  $q->a({-href=>$$REF."delete/$id"},"delete " . $q->b("&crarr;")) . "&nbsp;] ");
          }
          
          $o .= $q->i($gmtime);
        }
        
        $msg = &text::formattedText($msg);
    		$msg = &text::insertSpaces($msg,'1

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

187221
impressions since May 18, 2019
65 images

tdz2000-lan-dac-running-netbsd-9-with-ctwm-and-irssi.png by adrian, 35196 impressions www3-kiess-onl-netbsd-9-login.png by adrian, 12451 impressions running-jexercise-programs-at-netbsd-9-host-www3-kiess-onl.png by adrian, 10434 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.02 usr + 0.00 sys = 0.02 CPU)
2  time    vsz (  diff)    rss (  diff) shared (  diff)   code (  diff)   data (  diff)
     0  91780 ( 91780)  42120 ( 42120)  14792 ( 14792)   1552 (  1552)  27176 ( 27176) after start
     0  92324 (   544)  42648 (   528)  14792 (     0)   1552 (     0)  27720 (   544) near exit