Welcome! Log In Create A New Profile

Advanced

Work to improve Netgear Stora with Debian installed.

Posted by cergei 
Work to improve Netgear Stora with Debian installed.
March 05, 2020 11:23AM
Dear friends. Experts and all who are interested in working with Netgear Stora will please join and help each other in this topic. I created this topic with the hope of finding answers to a lot of questions that I have after installing Debian on Netgear Stora.

1) How do I update my system on Stora? How did you and I install via usb rootfs or is it possible over the Internet?
2) Does the system have a graphical interface enabled as in Netgear Stora via a browser? And if there is a way to enter there and how to use it (instruction)
3) How do I connect a second hard drive to increase storage capacity? Or for backup storage.
4) How do I organize DEBIAN Bodhi-based NAS storage on a home network with Internet access?
5) How to install and configure a language pack to work in your native language
6) How to activate the Netgear Stora Power On/Off button since it is now necessary to pull the power wire out of the socket to turn the Stora off, which is not quite convenient
Re: Work to improve Netgear Stora with Debian installed.
March 06, 2020 10:03PM
Quote

6) How to activate the Netgear Stora Power On/Off button since it is now necessary to pull the power wire out of the socket to turn the Stora off, which is not quite convenient

Set up the Power button to do that:

https://forum.doozan.com/read.php?2,32460,32467#msg-32467


Or SSH into the Stora and shut it down manually:

shutdown -h now

-bodhi
===========================
Forum Wiki
bodhi's corner (buy bodhi a beer)



Edited 1 time(s). Last edit at 03/06/2020 10:04PM by bodhi.
Re: Work to improve Netgear Stora with Debian installed.
March 07, 2020 05:44PM
Quote

2) Does the system have a graphical interface enabled as in Netgear Stora via a browser? And if there is a way to enter there and how to use it (instruction)

Wiki thread

https://forum.doozan.com/read.php?2,23630

Quote

Debian Desktop

XFCE desktop Pogoplug Debian
Pogoplug Debian with XDM display manager

-bodhi
===========================
Forum Wiki
bodhi's corner (buy bodhi a beer)
Re: Work to improve Netgear Stora with Debian installed.
March 07, 2020 05:48PM
Quote

1) How do I update my system on Stora? How did you and I install via usb rootfs or is it possible over the Internet?

Log in an SSH session. As recommened in the rootfs release thread:

https://forum.doozan.com/read.php?2,12096

Quote

5. Done. Take this USB rootfs to your plug and cold start. After booted into Debian, see Note1 and Note2 below. It is very important that you do Note1 steps to secure your box.

Note1:

After logging in this rootf the first time, remember to generate new SSH key to make it your own unique rootfs. And also update your rootfs to get the latest Debian package security updates:
rm /etc/ssh/ssh_host*
ssh-keygen -A

apt-get update
apt-get upgrade

Warning: Watch the apt-get upgrade progress. If the apt-get upgrade results in a new initramfs, the log would shows this message:

update-initramfs: Generating /boot/initrd.img-5.2.9-kirkwood-tld-1

Then you need to regenerate the uInitrd boot file:
cd /boot
mkimage -A arm -O linux -T ramdisk -C gzip -a 0x00000000 -e 0x00000000 -n initramfs-5.2.9-kirkwood-tld-1 -d initrd.img-5.2.9-kirkwood-tld-1 uInitrd

-bodhi
===========================
Forum Wiki
bodhi's corner (buy bodhi a beer)
Re: Work to improve Netgear Stora with Debian installed.
March 07, 2020 08:31PM
Quote
Установите кнопку питания, чтобы сделать это:

[url]https://forum.doozan.com/read.php?2,32460[/url], 32467#msg-32467


Или SSH в Stora и выключите его вручную:

shutdown-h now


[/
quote]
Installed
Quote
apt-get install esekeyd
then
Quote
POWER:/usr/bin/logger -s -i "POWER button pushed"
RESTART:/usr/bin/logger -s -i "RESTART button pushed"
COPY:/usr/bin/logger -s -i "COPY Button pushed

then
Quote
shutdown-h now
all Netgear Stora turned off without pressing the button, with the power wire on. Then I press the Netgear Stora power button. Next time, I press the on/off button to power up. Nothing happens until I use the
Quote
shutdown-h now
command again in SSH



Edited 2 time(s). Last edit at 03/08/2020 12:07AM by cergei.
Re: Work to improve Netgear Stora with Debian installed.
March 08, 2020 07:10PM
cergei,

That shutdown command should be

shutdown -h now

The -h is an option, it indicates that a halt action will be performed (there is a space in between shutdown and -h).

-bodhi
===========================
Forum Wiki
bodhi's corner (buy bodhi a beer)
Re: Work to improve Netgear Stora with Debian installed.
March 09, 2020 02:25AM
cergei,

POWER:/usr/bin/logger -s -i "POWER button pushed" 
RESTART:/usr/bin/logger -s -i "RESTART button pushed" 
COPY:/usr/bin/logger -s -i "COPY Button pushed

These are only examples. Meaning they are to demonstrate how an action can be scripted for a button.

In this example, when you push the Power button, you will see a message printed out in the system log
POWER button pushed


To script the shutdown action for the Power button, you would do this in the /etc/esekeyd.conf file:

POWER:/sbin/shutdown -h now

-bodhi
===========================
Forum Wiki
bodhi's corner (buy bodhi a beer)
Re: Work to improve Netgear Stora with Debian installed.
March 09, 2020 11:05AM
Hello Bodhi. All right you noticed that the team
Quote
shutdown -h now
Recorded is not true, it actually happens because I use a text translator and the translator when gives me translated text as a rule changes spaces, I also noticed it and try to copy teams in the English register. Then everything is correct
And with regard to the on/off button probably it was designed to work as a computer for that read shut down system enter this command into SSH < shutdown -h now > and the system is shut down. Then when it is necessary to turn on the system it is enough to press the power button and the system is loaded. That 's how it all happens. I expected the power button to work and to shut down the system as well as the < shutdown -h now > command, but this does not happen. In the old Netgear Stora firmware, the power button worked and the disconnect only had to keep it pressed for 6 seconds and the system shut down. That 's what I assumed. Well, thank you for turning it on now.
root@debian:~# cat /etc/esekeyd.conf
POWER:/usr/bin/logger -s -i "POWER button pushed"
root@debian:~#
And the file/etc/esekeyd.conf looks like this:
Thank you for your participation in my education, I learn a lot from you
And here about
Debian Desktop

XFCE desktop Pogoplug Debian
Pogoplug Debian with XDM display manager

There are many questions, tried to follow the installation instructions, and will not connect through VNC VIEWER
Where do I know where to dig? Which is not surprising with my knowledge of linux at a very low level.
Maybe there are some typical mistakes for beginners? Any advice will be accepted with gratitude



Edited 1 time(s). Last edit at 03/09/2020 11:40AM by cergei.
Re: Work to improve Netgear Stora with Debian installed.
March 09, 2020 05:59PM
cergei,

Does the esekeyd.conf look like this now? I think your post was cut off by the translator again.

cat /etc/esekeyd.conf
POWER:/sbin/shutdown -h now


> And here about
> Debian Desktop
>
> XFCE desktop Pogoplug Debian
> Pogoplug Debian with XDM display manager
>

I wrote the XFCE instruction a long time ago, so I don't think I remember all the details :)

Go ahead and post in the thread that you followed (XFCE or XDM).

Post the log of steps you took, and the errors you see during setting up.

-bodhi
===========================
Forum Wiki
bodhi's corner (buy bodhi a beer)
Re: Work to improve Netgear Stora with Debian installed.
March 09, 2020 11:34PM
XDM of the instruction followed [Pogoplug Pro V3 running vncserver"]

[/quote]
Quote
Сделайте swapfile размером 384 Мб
# dd if= / dev / zero of= / swap BS=1024 count=393216
# chown root:root / swap
# chmod 0600 / swap
# mkswap / swap
# swapon / своп

login as: root
root@192.168.1.42's password:
Linux debian 5.2.9-kirkwood-tld-1 #1 PREEMPT Sat Aug 17 15:00:56 PDT 2019 armv5tel

The programs included with the Debian GNU/Linux system are free software;
the exact distribution terms for each program are described in the
individual files in /usr/share/doc/*/copyright.

Debian GNU/Linux comes with ABSOLUTELY NO WARRANTY, to the extent
permitted by applicable law.
Last login: Mon Mar  9 12:23:01 2020 from 192.168.1.34
root@debian:~# dd if=/dev/zero of=/swap bs=1024 count=393216
dd: failed to open '/swap': Text file busy
root@debian:~# chown root:root /swap
root@debian:~# chmod 0600 /swap
root@debian:~# mkswap /swapmkswap /swap
mkswap: invalid block count argument: '/swap'
root@debian:~#  swapon /swap
swapon: /swap: swapon failed: Device or resource busy
root@debian:~# nano  /etc/fstab:
root@debian:~# cat /etc/fstab:
/swap none swap sw 0 0
root@debian:~# swapon -s
Filename                                Type            Size    Used    Priority
/swap                                   file            393212  21248   -2

Created the file of pumping
[
/quote]
upload
Quote
apt-get install gparted
apt-get install firmware-realtek
apt-get install task-lxde-desktop
apt-get install kde-full
apt-get install xfce4-desktop
apt-get install xfce4-goodies

login as: root
root@192.168.1.42's password:
Linux debian 5.2.9-kirkwood-tld-1 #1 PREEMPT Sat Aug 17 15:00:56 PDT 2019 armv5tel

The programs included with the Debian GNU/Linux system are free software;
the exact distribution terms for each program are described in the
individual files in /usr/share/doc/*/copyright.

Debian GNU/Linux comes with ABSOLUTELY NO WARRANTY, to the extent
permitted by applicable law.
Last login: Mon Mar  9 20:26:14 2020 from 192.168.1.47
root@debian:~# apt-get install gparted
Reading package lists... Done
Building dependency tree
Reading state information... Done
gparted is already the newest version (0.32.0-2).
The following packages were automatically installed and are no longer required:
  python-crypto python-dnspython python-ldb python-samba python-tdb
  samba-common samba-common-bin tdb-tools
Use 'apt autoremove' to remove them.
0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.
root@debian:~# apt-get install firmware-realtek
Reading package lists... Done
Building dependency tree
Reading state information... Done
E: Unable to locate package firmware-realtek
root@debian:~# apt-get install task-lxde-desktop
Reading package lists... Done
Building dependency tree
Reading state information... Done
task-lxde-desktop is already the newest version (3.53).
The following packages were automatically installed and are no longer required:
  python-crypto python-dnspython python-ldb python-samba python-tdb
  samba-common samba-common-bin tdb-tools
Use 'apt autoremove' to remove them.
0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.
root@debian:~# apt-get install kde-full
Reading package lists... Done
Building dependency tree
Reading state information... Done
kde-full is already the newest version (5:102).
The following packages were automatically installed and are no longer required:
  python-crypto python-dnspython python-ldb python-samba python-tdb
  samba-common samba-common-bin tdb-tools
Use 'apt autoremove' to remove them.
0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.
root@debian:~# apt-get install xfce4-desktop
Reading package lists... Done
Building dependency tree
Reading state information... Done
E: Unable to locate package xfce4-desktop
root@debian:~# apt-get install xfce4-goodies
Reading package lists... Done
Building dependency tree
Reading state information... Done
xfce4-goodies is already the newest version (4.12.6).
The following packages were automatically installed and are no longer required:
  python-crypto python-dnspython python-ldb python-samba python-tdb
  samba-common samba-common-bin tdb-tools
Use 'apt autoremove' to remove them.
0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.
root@debian:~#
Further I do not understand how I in my file/etc/alternatives/vncserver, change the geometry if this file I have looks like this:
root@debian:~# cat /etc/alternatives/vncserver
#!/usr/bin/perl
#
#  Copyright (C) 2004-2006,2008-2009 Ola Lundqvist <opal@debian.org>
#  Copyright (C) 2002-2003 Constantin Kaplinsky.  All Rights Reserved.
#  Copyright (C) 1999 AT&T Laboratories Cambridge.  All Rights Reserved.
#
#  This 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 software 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 software; if not, write to the Free Software
#  Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307,
#  USA.
#

#
# vncserver - wrapper script to start an X VNC server.
#

# This file was heavily edited by
#              Ola Lundqvist <opal@debian.org>
#               Marcus Brinkmann <Marcus.Brinkmann@ruhr-uni-bochum.de>
# Clean option by Dirk Eddelbuettel <edd@debian.org>

# Please report all errors to Debian and not to ORL.

#
# First make sure we're operating in a sane environment.
#

&SanityCheck();

#
# Global variables.  You may want to configure some of these for your site.
#
#$geometry = "1024x768";
$geometry = "1920x1080";
$depth = 24;
$desktopName = "X";
if (-d "/usr/share/tightvnc-java") {
    $vncClasses = "/usr/share/tightvnc-java";
}
$vncUserDir = "$ENV{HOME}/.vnc";
#$fontPath = "unix/:7100";
$authType = "-rfbauth $vncUserDir/passwd";

# Here is another example of setting the font path:
# $fontPath = "/usr/lib/X11/fonts/misc/,/usr/lib/X11/fonts/75dpi/";

# X colors database path is optional, uncomment and edit to use:
# $colorPath = "/usr/lib/X11/rgb";

# You might wish to make your vnc directory under /tmp, to make sure
# passwords are always kept on the local filesystem. To do that, just
# uncomment the line below. Note that in this case Xtightvnc's .Xauthority
# file will be searched in the same $vncUserDir directory by default,
# and $ENV{HOME}/.vncstartup will be executed instead of usual
# $vncUserDir/xstartup.
#
# $vncUserDir = "/tmp/$ENV{USER}-vnc";

$defaultXStartup
    = ("#!/bin/sh\n\n".
       "xrdb \$HOME/.Xresources\n".
       "xsetroot -solid grey\n".
       "#x-terminal-emulator -geometry 80x24+10+10 -ls -title \"\$VNCDESKTOP Desktop\" &\n".
       "#x-window-manager &\n".
       "# Fix to make GNOME work\n".
       "export XKL_XMODMAP_DISABLE=1\n".
       "/etc/X11/Xsession\n");

$xauthorityFile = "$ENV{XAUTHORITY}";

######## Adding configuration possibility ################
$Config_file = "/etc/vnc.conf";
&ReadConfigFile();
$Config_file = "$ENV{HOME}/.vncrc";
&ReadConfigFile();

if (!$XFConfigPath) {
  foreach ("/etc/X11/xorg.conf", "/etc/X11/XF86Config-4", "/etc/X11/XF86Config" ){
      $XFConfigPath = $_;
      last if ( -e $XFConfigPath );
  }
}
if (!$fontPath) {
  &ReadXFConfigFont;
}
if (!$fontPath) {
  $fontPath = "/usr/share/fonts/X11/misc/,".
              "/usr/share/fonts/X11/Type1/,".
              "/usr/share/fonts/X11/75dpi/,".
              "/usr/share/fonts/X11/100dpi/"
}
if (!$colorPath) {
  &ReadXFConfigColor;
}
if (!$colorPath) {
  foreach ("/etc/X11/rgb", "/usr/share/X11/rgb", "/usr/X11R6/lib/X11/rgb"){
      $colorPath = $_;
      last if ( -e "${colorPath}.txt" );
  }
}
##########################################################

$vncUserDirUnderTmp = ($vncUserDir =~ m|^/tmp/.+|) ? 1 : 0;
$xstartup = ($vncUserDirUnderTmp) ?
  "$ENV{HOME}/.vncstartup" : "$vncUserDir/xstartup";
$xstartup = $vncStartup if ($vncStartup);
unless ($xauthorityFile) {
    if ($vncUserDirUnderTmp) {
        $xauthorityFile = "$vncUserDir/.Xauthority";
    } else {
        $xauthorityFile = "$ENV{HOME}/.Xauthority";
    }
}

chop($host = `uname -n`);


# Check command line options

&ParseOptions("-geometry",1,"-depth",1,"-pixelformat",1,"-name",1,"-kill",1,
              "-help",0,"-h",0,"--help",0,
              "-clean",0, "-fp",1,
              "-alwaysshared",0, "-nevershared",0,
              "-httpport",1,"-basehttpport",1);

&Usage() if ($opt{'-help'} || $opt{'-h'} || $opt{'--help'});

&Kill() if ($opt{'-kill'});

$useClasses = 0;
if (defined $vncClasses) {
  if(! -d $vncClasses) {
    die "VNC class files can not be found at $vncClasses.";
  }
  $useClasses = 1;
}

# Uncomment this line if you want default geometry, depth and pixelformat
# to match the current X display:
# &GetXDisplayDefaults();

if ($opt{'-geometry'}) {
    $geometry = $opt{'-geometry'};
}
if ($opt{'-depth'}) {
    $depth = $opt{'-depth'};
    $pixelformat = "";
}
if ($opt{'-pixelformat'}) {
    $pixelformat = $opt{'-pixelformat'};
}

if ($opt{'-fp'}) {
    @fontPathElements = split(/\s*,\s*/, "$opt{'-fp'}");

    $fontPath = '';

    foreach $i (0.."$#fontPathElements") {
        $tempFontPath = $fontPathElements[$i];
        if ($tempFontPath !~ m!^[^/]*/[^/]*:\d+$!) {
            $tempFontPath =~ s/:unscaled$//;
            if (-r "$tempFontPath/fonts.dir") {
                $fontPath .= "$fontPathElements[$i],";
            }
        } else {
            $fontPath .= "$fontPathElements[$i],";
        }
    }
    chop $fontPath;
}

&CheckGeometryAndDepth();

if ($opt{'-name'}) {
    $desktopName = $opt{'-name'};
}

# Create the user's vnc directory if necessary.

unless (-e $vncUserDir) {
    unless (mkdir($vncUserDir, 0700)) {
        die "$prog: Could not create $vncUserDir.\n";
    }
}
($z,$z,$mode) = stat("$vncUserDir");
if (!-d _ || !-o _ || ($vncUserDirUnderTmp && ($mode & 0777) != 0700)) {
    die "$prog: Wrong type or access mode of $vncUserDir.\n";
}

# Make sure the user has a password.

($z,$z,$mode) = stat("$vncUserDir/passwd");
if (-e _ && (!-f _ || !-o _)) {
    die "$prog: Wrong type or ownership on $vncUserDir/passwd.\n";
}
if (!-e _ || ($mode & 077) != 0) {
    warn "\nYou will require a password to access your desktops.\n\n";
    system("vncpasswd $vncUserDir/passwd");
    if (($? & 0xFF00) != 0) {
        exit 1;
    }
}

# Find display number.

if ((@ARGV > 0) && ($ARGV[0] =~ /^:(\d+)$/)) {
    $displayNumber = $1;
    shift(@ARGV);
    unless (&CheckDisplayNumber($displayNumber)) {
        die "A VNC server is already running as :$displayNumber\n";
    }
} elsif ((@ARGV > 0) && ($ARGV[0] !~ /^-/)) {
    &Usage();
} else {
    $displayNumber = &GetDisplayNumber();
}

$vncPort = 5900 + $displayNumber;

$desktopLog = "$vncUserDir/$host:$displayNumber.log";
unlink($desktopLog);

# Make an X server cookie - use as the seed the sum of the current time, our
# PID and part of the encrypted form of the password.  Ideally we'd use
# /dev/urandom, but that's only available on Linux.

srand(time+$$+unpack("L",`cat $vncUserDir/passwd`));
$cookie = "";
for (1..16) {
    $cookie .= sprintf("%02x", int(rand(256)));
}

system("xauth -f $xauthorityFile add $host:$displayNumber . $cookie");
system("xauth -f $xauthorityFile add $host/unix:$displayNumber . $cookie");

# Now start the X VNC Server

$cmd = "Xtightvnc :$displayNumber";
$cmd .= " -desktop " . &quotedString($desktopName);
if ($useClasses) {
  $cmd .= " -httpd $vncClasses";
  print ("Found $vncClasses for http connections.\n");
  if ($opt{'-httpport'}) {
    $cmd .= " -httpport $opt{'-httpport'}";
    print ("Listening to $opt{'-httpport'} for http connections.\n");
  }
  elsif ($opt{'-basehttpport'}) {
    my $v = $opt{'-basehttpport'} + $displayNumber;
    print ("Listening to $v for http connections.\n");
    $cmd .= " -httpport $v";
  }
}
$cmd .= " -auth $xauthorityFile";
$cmd .= " -geometry $geometry" if ($geometry);
$cmd .= " -depth $depth" if ($depth);
$cmd .= " -pixelformat $pixelformat" if ($pixelformat);
$cmd .= " -rfbwait 120000";
$cmd .= " $authType";
$cmd .= " -rfbport $vncPort";
$cmd .= " -fp $fontPath" if ($fontPath);
$cmd .= " -co $colorPath" if ($colorPath);
$cmd .= " -alwaysshared" if ($opt{'-alwaysshared'});
$cmd .= " -nevershared" if ($opt{'-nevershared'});

foreach $arg (@ARGV) {
    $cmd .= " " . &quotedString($arg);
}
$cmd .= " >> " . &quotedString($desktopLog) . " 2>&1";

# Run $cmd and record the process ID.

$pidFile = "$vncUserDir/$host:$displayNumber.pid";
system("$cmd & echo \$! >$pidFile");

# Give Xtightvnc a chance to start up

sleep(1);
unless (kill 0, `cat $pidFile`) {
    warn "Couldn't start Xtightvnc; trying default font path.\n";
    warn "Please set correct fontPath in the $prog script.\n";
    $cmd =~ s@-fp [^ ]+@@;
    system("$cmd & echo \$! >$pidFile");
    sleep(1);
}
unless (kill 0, `cat $pidFile`) {
    warn "Couldn't start Xtightvnc process.\n\n";
    open(LOG, "<$desktopLog");
    while (<LOG>) { print; }
    close(LOG);
    die "\n";
}

warn "\nNew '$desktopName' desktop is $host:$displayNumber\n\n";

# Create the user's xstartup script if necessary.

unless (-e "$xstartup") {
    warn "Creating default startup script $xstartup\n";
    open(XSTARTUP, ">$xstartup");
    print XSTARTUP $defaultXStartup;
    close(XSTARTUP);
    chmod 0755, "$xstartup";
}

# Run the X startup script.

warn "Starting applications specified in $xstartup\n";
warn "Log file is $desktopLog\n\n";

# If the unix domain socket exists then use that (DISPLAY=:n) otherwise use
# TCP (DISPLAY=host:n)

if (-e "/tmp/.X11-unix/X$displayNumber") {
    $ENV{DISPLAY}= ":$displayNumber";
} else {
    $ENV{DISPLAY}= "$host:$displayNumber";
}
$ENV{VNCDESKTOP}= $desktopName;

system("$xstartup >> " . &quotedString($desktopLog) . " 2>&1 &");

exit;

############################ Debian functions #################################
# I thank Manoj for the code below.
#
# ReadConfigFile reads in a config file and sets variables according to it.
#

sub ReadConfigFile
{
  open(CONFIG, "$Config_file") || return;
  my $lineno = 0;
  while (<CONFIG>) {
      chomp;
      $lineno++;
      s/\#.*//og;
      next if /^\s*$/og;
      $_ .= ";" unless /;\s*$/;
      if (/^\s*([^=]+)\s*=\s*(\S.*)$/o) {
          my $ret = eval "$1=$2";
          if ($@) {
              print STDERR "Error parsing config file $Config_file!\n";
              print STDERR "$lineno:$_\n";
          }
      }
  }
}

sub ReadXFConfigFont
{
  open(CONFIG, "$XFConfigPath") || return;
  my $lineno = 0;
  while (<CONFIG>) {
      chomp;
      $lineno++;
      s/\#.*//og;
      next if /^\s*$/og;
      if (/^\s*FontPath\s*"(\S.*)"\s*$/o) {
          $fontPath .= "," if $fontPath;
          $fontPath .= $1;
      }
  }
}

sub ReadXFConfigColor
{
  open(CONFIG, "$XFConfigPath") || return;
  my $lineno = 0;
  while (<CONFIG> && !$colorPath) {
      chomp;
      $lineno++;
      s/\#.*//og;
      next if /^\s*$/og;
      if (/^\s*RgbPath\s*"(\S.*)"\s*$/o) {
          $colorPath = $1;
      }
  }
}


########## End of debian functions ###########

###############################################################################
#
# CheckGeometryAndDepth simply makes sure that the geometry and depth values
# are sensible.
#

sub CheckGeometryAndDepth
{
    if ($geometry =~ /^(\d+)x(\d+)$/) {
        $width = $1; $height = $2;

        if (($width<1) || ($height<1)) {
            die "$prog: geometry $geometry is invalid\n";
        }

        while (($width % 4)!=0) {
            $width = $width + 1;
        }

        while (($height % 2)!=0) {
            $height = $height + 1;
        }

        $geometry = "${width}x$height";
    } else {
        die "$prog: geometry $geometry is invalid\n";
    }

    if (($depth < 8) || ($depth > 32)) {
        die "Depth must be between 8 and 32\n";
    }
}


#
# GetDisplayNumber gets the lowest available display number.  A display number
# n is taken if something is listening on the VNC server port (5900+n) or the
# X server port (6000+n).
#

sub GetDisplayNumber
{
    foreach $n (1..99) {
        if (&CheckDisplayNumber($n)) {
            return $n+0; # Bruce Mah's workaround for bug in perl 5.005_02
        }
    }

    die "$prog: no free display number on $host.\n";
}


#
# CheckDisplayNumber checks if the given display number is available.  A
# display number n is taken if something is listening on the VNC server port
# (5900+n) or the X server port (6000+n).
#

sub CheckDisplayNumber
{
    local ($n) = @_;

    socket(S, $AF_INET, $SOCK_STREAM, 0) || die "$prog: socket failed: $!\n";
    eval 'setsockopt(S, &SOL_SOCKET, &SO_REUSEADDR, pack("l", 1))';
    #unless (bind(S, pack('S n x12', $AF_INET, 6000 + $n))) {
    unless (bind(S, sockaddr_in(6000 + $n, &INADDR_ANY))) {
        close(S);
        return 0;
    }
    close(S);

    socket(S, $AF_INET, $SOCK_STREAM, 0) || die "$prog: socket failed: $!\n";
    eval 'setsockopt(S, &SOL_SOCKET, &SO_REUSEADDR, pack("l", 1))';
    #unless (bind(S, pack('S n x12', $AF_INET, 5900 + $n))) {
    unless (bind(S, sockaddr_in(5900 + $n, &INADDR_ANY))) {
        close(S);
        return 0;
    }
    close(S);

    if (-e "/tmp/.X$n-lock") {
        warn "\nWarning: $host:$n is taken because of /tmp/.X$n-lock\n";
        warn "Remove this file if there is no X server $host:$n\n";
        return 0;
    }

    if (-e "/tmp/.X11-unix/X$n") {
        warn "\nWarning: $host:$n is taken because of /tmp/.X11-unix/X$n\n";
        warn "Remove this file if there is no X server $host:$n\n";
        return 0;
    }

    return 1;
}


#
# GetXDisplayDefaults uses xdpyinfo to find out the geometry, depth and pixel
# format of the current X display being used.  If successful, it sets the
# options as appropriate so that the X VNC server will use the same settings
# (minus an allowance for window manager decorations on the geometry).  Using
# the same depth and pixel format means that the VNC server won't have to
# translate pixels when the desktop is being viewed on this X display (for
# TrueColor displays anyway).
#

sub GetXDisplayDefaults
{
    local (@lines, @matchlines, $width, $height, $defaultVisualId, $i,
           $red, $green, $blue);

    $wmDecorationWidth = 4;     # a guess at typical size for window manager
    $wmDecorationHeight = 24;   # decoration size

    return unless (defined($ENV{DISPLAY}));

    @lines = `xdpyinfo 2>/dev/null`;

    return if ($? != 0);

    @matchlines = grep(/dimensions/, @lines);
    if (@matchlines) {
        ($width, $height) = ($matchlines[0] =~ /(\d+)x(\d+) pixels/);

        $width -= $wmDecorationWidth;
        $height -= $wmDecorationHeight;

        $geometry = "${width}x$height";
    }

    @matchlines = grep(/default visual id/, @lines);
    if (@matchlines) {
        ($defaultVisualId) = ($matchlines[0] =~ /id:\s+(\S+)/);

        for ($i = 0; $i < @lines; $i++) {
            if ($lines[$i] =~ /^\s*visual id:\s+$defaultVisualId$/) {
                if (($lines[$i+1] !~ /TrueColor/) ||
                    ($lines[$i+2] !~ /depth/) ||
                    ($lines[$i+4] !~ /red, green, blue masks/))
                {
                    return;
                }
                last;
            }
        }

        return if ($i >= @lines);

        ($depth) = ($lines[$i+2] =~ /depth:\s+(\d+)/);
        ($red,$green,$blue)
            = ($lines[$i+4]
               =~ /masks:\s+0x([0-9a-f]+), 0x([0-9a-f]+), 0x([0-9a-f]+)/);

        $red = hex($red);
        $green = hex($green);
        $blue = hex($blue);

        if ($red > $blue) {
            $red = int(log($red) / log(2)) - int(log($green) / log(2));
            $green = int(log($green) / log(2)) - int(log($blue) / log(2));
            $blue = int(log($blue) / log(2)) + 1;
            $pixelformat = "rgb$red$green$blue";
        } else {
            $blue = int(log($blue) / log(2)) - int(log($green) / log(2));
            $green = int(log($green) / log(2)) - int(log($red) / log(2));
            $red = int(log($red) / log(2)) + 1;
            $pixelformat = "bgr$blue$green$red";
        }
    }
}


#
# quotedString returns a string which yields the original string when parsed
# by a shell.
#

sub quotedString
{
    local ($in) = @_;

    $in =~ s/\'/\'\"\'\"\'/g;

    return "'$in'";
}


#
# removeSlashes turns slashes into underscores for use as a file name.
#

sub removeSlashes
{
    local ($in) = @_;

    $in =~ s|/|_|g;

    return "$in";
}


#
# Usage
#

sub Usage
{
    die("TightVNC Server version 1.3.9\n".
        "\n".
        "Usage: $prog [<OPTIONS>] [:<DISPLAY#>]\n".
        "       $prog -kill :<DISPLAY#>\n".
        "\n".
        "<OPTIONS> are Xtightvnc options, or:\n".
        "\n".
        "        -name <DESKTOP-NAME>\n".
        "        -depth <DEPTH>\n".
        "        -geometry <WIDTH>x<HEIGHT>\n".
        "        -httpport number\n".
        "        -basehttpport number\n".
        "        -alwaysshared\n".
        "        -nevershared\n".
        "        -pixelformat rgb<NNN>\n".
        "        -pixelformat bgr<NNN>\n".
        "\n".
        "See vncserver and Xtightvnc manual pages for more information.\n");
}


#
# Kill
#

sub Kill
{
    $opt{'-kill'} =~ s/(:\d+)\.\d+$/$1/; # e.g. turn :1.0 into :1

    if ($opt{'-kill'} =~ /^:\d+$/) {
        $pidFile = "$vncUserDir/$host$opt{'-kill'}.pid";
    } else {
        if ($opt{'-kill'} !~ /^$host:/) {
            die "\nCan't tell if $opt{'-kill'} is on $host\n".
                "Use -kill :<number> instead\n\n";
        }
        $pidFile = "$vncUserDir/$opt{'-kill'}.pid";
    }

    unless (-r $pidFile) {
        die "\nCan't find file $pidFile\n".
            "You'll have to kill the Xtightvnc process manually\n\n";
    }

    $SIG{'HUP'} = 'IGNORE';
    chop($pid = `cat $pidFile`);
    warn "Killing Xtightvnc process ID $pid\n";
    system("kill $pid");
    unlink $pidFile;

    ## If option -clean is given, also remove the logfile
    unlink "$vncUserDir/$host$opt{'-kill'}.log" if ($opt{'-clean'});

    exit;
}


#
# ParseOptions takes a list of possible options and a boolean indicating
# whether the option has a value following, and sets up an associative array
# %opt of the values of the options given on the command line. It removes all
# the arguments it uses from @ARGV and returns them in @optArgs.
#

sub ParseOptions
{
    local (@optval) = @_;
    local ($opt, @opts, %valFollows, @newargs);

    while (@optval) {
        $opt = shift(@optval);
        push(@opts,$opt);
        $valFollows{$opt} = shift(@optval);
    }

    @optArgs = ();
    %opt = ();

    arg: while (defined($arg = shift(@ARGV))) {
        foreach $opt (@opts) {
            if ($arg eq $opt) {
                push(@optArgs, $arg);
                if ($valFollows{$opt}) {
                    if (@ARGV == 0) {
                        &Usage();
                    }
                    $opt{$opt} = shift(@ARGV);
                    push(@optArgs, $opt{$opt});
                } else {
                    $opt{$opt} = 1;
                }
                next arg;
            }
        }
        push(@newargs,$arg);
    }

    @ARGV = @newargs;
}


#
# Routine to make sure we're operating in a sane environment.
#

sub SanityCheck
{
    local ($cmd);

    #
    # Get the program name
    #

    ($prog) = ($0 =~ m|([^/]+)$|);

    #
    # Check we have all the commands we'll need on the path.
    #

 cmd:
    foreach $cmd ("uname","xauth","Xtightvnc","vncpasswd") {
        for (split(/:/,$ENV{PATH})) {
            if (-x "$_/$cmd") {
                next cmd;
            }
        }
        die "$prog: couldn't find \"$cmd\" on your PATH.\n";
    }

    #
    # Check the HOME and USER environment variables are both set.
    #

    unless (defined($ENV{HOME})) {
        die "$prog: The HOME environment variable is not set.\n";
    }
    unless (defined($ENV{USER})) {
        die "$prog: The USER environment variable is not set.\n";
    }

    #
    # Find socket constants. 'use Socket' is a perl5-ism, so we wrap it in an
    # eval, and if it fails we try 'require "sys/socket.ph"'.  If this fails,
    # we just guess at the values.  If you find perl moaning here, just
    # hard-code the values of AF_INET and SOCK_STREAM.  You can find these out
    # for your platform by looking in /usr/include/sys/socket.h and related
    # files.
    #

    chop($os = `uname`);
    chop($osrev = `uname -r`);

    eval 'use Socket';
    if ($@) {
        eval 'require "sys/socket.ph"';
        if ($@) {
            if (($os eq "SunOS") && ($osrev !~ /^4/)) {
                $AF_INET = 2;
                $SOCK_STREAM = 2;
            } else {
                $AF_INET = 2;
                $SOCK_STREAM = 1;
            }
        } else {
            $AF_INET = &AF_INET;
            $SOCK_STREAM = &SOCK_STREAM;
        }
    } else {
        $AF_INET = &AF_INET;
        $SOCK_STREAM = &SOCK_STREAM;
    }
}
I found only one parameter < # $geometry = "1024x768" > And I inserted next to < $geometry = "1920x1080" > if I did the right thing I don 't know.As a result, VNC viewer does not connect to ip 192.168.1.42 This is visible in the attached file
Attachments:
open | download - экрана (7).png (74.7 KB)
Re: Work to improve Netgear Stora with Debian installed.
March 22, 2020 01:59AM
Friends!! Everything turned out to be simple, everything was my fault when entering the ip address in the client vnc viewer had to specify the ip address and port, i.e. in my case it was supposed to look < 192.168.1.42:5901 > and then everything turned out. I write this in the hope that anyone will help it
Yes point 5 what I put at the beginning on setting up the language pack all correctly turned out by the instruction in the wiki from Bodhi < https://forum.doozan.com/read.php?2,54384,54414#msg-54414 > It all ended burly and the setup went fine



Edited 3 time(s). Last edit at 03/22/2020 02:17AM by cergei.
Author:

Subject:


Spam prevention:
Please, enter the code that you see below in the input field. This is for blocking bots that try to post this form automatically. If the code is hard to read, then just try to guess it right. If you enter the wrong code, a new image is created and you get another chance to enter it right.
Message: