Førstesiden Bli medlem Kontakt Informasjon Medlemsfordeler Utvalg Kalender NUUG/HIO prisen Dokumenter Innmelding Ressurser Mailinglister Wiki Linker Om de aktive Kart NUUG i media Planet NUUG webmaster@nuug.no
Powered by Planet! Last updated: October 24, 2017 05:15 AM

Planet NUUG

October 23, 2017

Espen Braastad

ZFS NAS using CentOS 7 from tmpfs

Following up on the CentOS 7 root filesystem on tmpfs post, here comes a guide on how to run a ZFS enabled CentOS 7 NAS server (with the operating system) from tmpfs.


Preparing the build environment

The disk image is built in macOS using Packer and VirtualBox. Virtualbox is installed using the appropriate platform package that is downloaded from their website, and Packer is installed using brew:

$ brew install packer

Building the disk image

Three files are needed in order to build the disk image; a Packer template file, an Anaconda kickstart file and a shell script that is used to configure the disk image after installation. The following files can be used as examples:

Create some directories:

$ mkdir ~work/centos-7-zfs/
$ mkdir ~work/centos-7-zfs/http/
$ mkdir ~work/centos-7-zfs/scripts/

Copy the files to these directories:

$ cp template.json ~work/centos-7-zfs/
$ cp ks.cfg ~work/centos-7-zfs/http/
$ cp provision.sh ~work/centos-7-zfs/scripts/

Modify each of the files to fit your environment.

Start the build process using Packer:

$ cd ~work/centos-7-zfs/
$ packer build template.json

This will download the CentOS 7 ISO file, start an HTTP server to serve the kickstart file and start a virtual machine using Virtualbox:

Packer installer screenshot

The virtual machine will boot into Anaconda and run through the installation process as specified in the kickstart file:

Anaconda installer screenshot

When the installation process is complete, the disk image will be available in the output-virtualbox-iso folder with the vmdk extension.

Packer done screenshot

The disk image is now ready to be put in initramfs.

Putting the disk image in initramfs

This section is quite similar to the previous blog post CentOS 7 root filesystem on tmpfs but with minor differences. For simplicity reasons it is executed on a host running CentOS 7.

Create the build directories:

$ mkdir /work
$ mkdir /work/newroot
$ mkdir /work/result

Export the files from the disk image to one of the directories we created earlier:

$ export LIBGUESTFS_BACKEND=direct
$ guestfish --ro -a packer-virtualbox-iso-1508790384-disk001.vmdk -i copy-out / /work/newroot/

Modify /etc/fstab:

$ cat > /work/newroot/etc/fstab << EOF
tmpfs       /         tmpfs    defaults,noatime 0 0
none        /dev      devtmpfs defaults         0 0
devpts      /dev/pts  devpts   gid=5,mode=620   0 0
tmpfs       /dev/shm  tmpfs    defaults         0 0
proc        /proc     proc     defaults         0 0
sysfs       /sys      sysfs    defaults         0 0

Disable selinux:

echo "SELINUX=disabled" > /work/newroot/etc/selinux/config

Disable clearing the screen on login failure to make it possible to read any error messages:

mkdir /work/newroot/etc/systemd/system/getty@.service.d
cat > /work/newroot/etc/systemd/system/getty@.service.d/noclear.conf << EOF

Now jump to the Initramfs and Result sections in the CentOS 7 root filesystem on tmpfs and follow those steps until the end when the result is a vmlinuz and initramfs file.

ZFS configuration

The first time the NAS server boots on the disk image, the ZFS storage pool and volumes will have to be configured. Refer to the ZFS documentation for information on how to do this, and use the following command only as guidelines.

Create the storage pool:

$ sudo zpool create data mirror sda sdb mirror sdc sdd

Create the volumes:

$ sudo zfs create data/documents
$ sudo zfs create data/games
$ sudo zfs create data/movies
$ sudo zfs create data/music
$ sudo zfs create data/pictures
$ sudo zfs create data/upload

Share some volumes using NFS:

zfs set sharenfs=on data/documents
zfs set sharenfs=on data/games
zfs set sharenfs=on data/music
zfs set sharenfs=on data/pictures

Print the storage pool status:

$ sudo zpool status
  pool: data
 state: ONLINE
  scan: scrub repaired 0B in 20h22m with 0 errors on Sun Oct  1 21:04:14 2017

	data        ONLINE       0     0     0
	  mirror-0  ONLINE       0     0     0
	    sdd     ONLINE       0     0     0
	    sdc     ONLINE       0     0     0
	  mirror-1  ONLINE       0     0     0
	    sda     ONLINE       0     0     0
	    sdb     ONLINE       0     0     0

errors: No known data errors

October 23, 2017 11:20 PM

October 20, 2017

NUUG news

Spørreundersøkelse blant medlemmer og interesserte 2017

NUUG vil gjerne vite mer om hva medlemmer og interesserte er opptatt av, og gjennomfører derfor en spørreundersøkelse. Vi håper så mange som mulig finner tid til å svare på den.

October 20, 2017 04:00 AM

October 18, 2017

Peter Hansteen (That Grumpy BSD Guy)

Forcing the password gropers through a smaller hole with OpenBSD's PF queues

While preparing material for the upcoming BSDCan PF and networking tutorial, I realized that the pop3 gropers were actually not much fun to watch anymore. So I used the traffic shaping features of my OpenBSD firewall to let the miscreants inflict some pain on themselves. Watching logs became fun again.

Yes, in between a number of other things I am currently in the process of creating material for new and hopefully better PF and networking session.

I've been fishing for suggestions for topics to include in the tutorials on relevant mailing lists, and one suggestion that keeps coming up (even though it's actually covered in the existling slides as well as The Book of PF) is using traffic shaping features to punish undesirable activity, such as

Idea for pf tutorial: throttling of http abusers using pf and altq. /cc @pitrh @stucchimax
— Dan Langille (@DLangille) April 16, 2017

What Dan had in mind here may very well end up in the new slides, but in the meantime I will show you how to punish abusers of essentially any service with the tools at hand in your OpenBSD firewall.

Regular readers will know that I'm responsible for maintaining a set of mail services including a pop3 service, and that our site sees pretty much round-the-clock attempts at logging on to that service with user names that come mainly from the local part of the spamtrap addresses that are part of the system to produce our hourly list of greytrapped IP addresses.

But do not let yourself be distracted by this bizarre collection of items that I've maintained and described in earlier columns. The actual useful parts of this article follow - take this as a walkthrough of how to mitigate a wide range of threats and annoyances.

First, analyze the behavior that you want to defend against. In our case that's fairly obvious: We have a service that's getting a volume of unwanted traffic, and looking at our logs the attempts come fairly quickly with a number of repeated attempts from each source address. This similar enough to both the traditional ssh bruteforce attacks and for that matter to Dan's website scenario that we can reuse some of the same techniques in all of the configurations.

I've written about the rapid-fire ssh bruteforce attacks and their mitigation before (and of course it's in The Book of PF) as well as the slower kind where those techniques actually come up short. The traditional approach to ssh bruteforcers has been to simply block their traffic, and the state-tracking features of PF let you set up overload criteria that add the source addresses to the table that holds the addresses you want to block.

I have rules much like the ones in the example in place where there I have a SSH service running, and those bruteforce tables are never totally empty.

For the system that runs our pop3 service, we also have a PF ruleset in place with queues for traffic shaping. For some odd reason that ruleset is fairly close to the HFSC traffic shaper example in The Book of PF, and it contains a queue that I set up mainly as an experiment to annoy spammers (as in, the ones that are already for one reason or the other blacklisted by our spamd).

The queue is defined like this:

   queue spamd parent rootq bandwidth 1K min 0K max 1K qlimit 300

yes, that's right. A queue with a maximum throughput of 1 kilobit per second. I have been warned that this is small enough that the code may be unable to strictly enforce that limit due to the timer resolution in the HFSC code. But that didn't keep me from trying.

And now that I had another group of hosts that I wanted to just be a little evil to, why not let the password gropers and the spammers share the same small patch of bandwidth?

Now a few small additions to the ruleset are needed for the good to put the evil to the task. We start with a table to hold the addresses we want to mess with. Actually, I'll add two, for reasons that will become clear later:

table <longterm> persist counters
table <popflooders> persist counters 

The rules that use those tables are:

block drop log (all) quick from <longterm> 

pass in quick log (all) on egress proto tcp from <popflooders> to port pop3 flags S/SA keep state \ 
(max-src-conn 1, max-src-conn-rate 1/1, overload <longterm> flush global, pflow) set queue spamd 

pass in log (all) on egress proto tcp to port pop3 flags S/SA keep state \ 
(max-src-conn 5, max-src-conn-rate 6/3, overload <popflooders> flush global, pflow) 
The last one lets anybody connect to the pop3 service, but any one source address can have only open five simultaneous connections and at a rate of six over three seconds.

Any source that trips up one of these restrictions is overloaded into the popflooders table, the flush global part means any existing connections that source has are terminated, and when they get to try again, they will instead match the quick rule that assigns the new traffic to the 1 kilobyte queue.

The quick rule here has even stricter limits on the number of allowed simultaneous connections, and this time any breach will lead to membership of the longterm table and the block drop treatment.

The for the longterm table I already had in place a four week expiry (see man pfctl for detail on how to do that), and I haven't gotten around to deciding what, if any, expiry I will set up for the popflooders.

The results were immediately visible. Monitoring the queues using pfctl -vvsq shows the tiny queue works as expected:

 queue spamd parent rootq bandwidth 1K, max 1K qlimit 300
  [ pkts:     196136  bytes:   12157940  dropped pkts: 398350 bytes: 24692564 ]
  [ qlength: 300/300 ]
  [ measured:     2.0 packets/s, 999.13 b/s ]

and looking at the pop3 daemon's log entries, a typical encounter looks like this:

Apr 19 22:39:33 skapet spop3d[44875]: connect from
Apr 19 22:39:33 skapet spop3d[75112]: connect from
Apr 19 22:39:34 skapet spop3d[57116]: connect from
Apr 19 22:39:34 skapet spop3d[65982]: connect from
Apr 19 22:39:34 skapet spop3d[58964]: connect from
Apr 19 22:40:34 skapet spop3d[12410]: autologout time elapsed -
Apr 19 22:40:34 skapet spop3d[63573]: autologout time elapsed -
Apr 19 22:40:34 skapet spop3d[76113]: autologout time elapsed -
Apr 19 22:40:34 skapet spop3d[23524]: autologout time elapsed -
Apr 19 22:40:34 skapet spop3d[16916]: autologout time elapsed -

here the miscreant comes in way too fast and only manages to get five connections going before they're shunted to the tiny queue to fight it out with known spammers for a share of bandwidth.

I've been running with this particular setup since Monday evening around 20:00 CEST, and by late Wednesday evening the number of entries in the popflooders table had reached approximately 300.

I will decide on an expiry policy at some point, I promise. In fact, I welcome your input on what the expiry period should be.

One important takeaway from this, and possibly the most important point of this article, is that it does not take a lot of imagination to retool this setup to watch for and protect against undesirable activity directed at essentially any network service.

You pick the service and the ports it uses, then figure out what are the parameters that determine what is acceptable behavior. Once you have those parameters defined, you can choose to assign to a minimal queue like in this example, block outright, redirect to something unpleasant or even pass with a low probability.

All of those possibilities are part of the normal pf.conf toolset on your OpenBSD system. If you want, you can supplement these mechanisms with a bit of log file parsing that produces output suitable for feeding to pfctl to add to the table of miscreants. The only limits are, as always, the limits of your imagination (and possibly your programming abilities). If you're wondering why I like OpenBSD so much, you can find at least a partial answer in my OpenBSD and you presentation.

FreeBSD users will be pleased to know that something similar is possible on their systems too, only substituting the legacy ALTQ traffic shaping with its somewhat arcane syntax for the modern queues rules in this article.

Will you be attending our PF and networking session in Ottawa, or will you want to attend one elsewhere later? Please let us know at the email address in the tutorial description.

Update 2017-04-23: A truly unexpiring table, and downloadable datasets made available

Soon after publishing this article I realized that what I had written could easily be taken as a promise to keep a collection of POP3 gropers' IP addresses around indefinitely, in a table where the entries never expire.

Table entries do not expire unless you use a pfctl(8) command like the ones mentioned in the book and other resources I referenced earlier in the article, but on the other hand table entries will not survive a reboot either unless you arrange to have table contents stored to somewhere more permanent and restored from there. Fortunately our favorite toolset has a feature that implements at least the restoring part.

Changing the table definition quoted earler to read

 table <popflooders> persist counters file "/var/tmp/popflooders"

takes part of the restoring, and the backing up is a matter of setting up a cron(8) job to dump current contents of the table to the file that will be loaded into the table at ruleset load.

Then today I made another tiny change and made the data available for download. The popflooders table is dumped at five past every full hour to pop3gropers.txt, a file desiged to be read by anything that takes a list of IP addresses and ignores lines starting with the # comment character. I am sure you can think of suitable applications.

In addition, the same script does a verbose dump, including table statistiscs for each entry, to pop3gropers_full.txt for readers who are interested in such things as when an entry was created and how much traffic those hosts produced, keeping in mind that those hosts are not actually blocked here, only subjected to a tiny bandwidth.

As it says in the comment at the top of both files, you may use the data as you please for your own purposes, for any re-publishing or integration into other data sets please contact me via the means listed in the bsdly.net whois record.

As usual I will answer any reasonable requests for further data such as log files, but do not expect prompt service and keep in mind that I am usually in the Central European time zone (CEST at the moment).

I suppose we should see this as a tiny, incremental evolution of the "Cybercrime Robot Torture As A Service" (CRTAAS) concept.

Update 2017-04-29: While the world was not looking, I supplemented the IP address dumps with versions including one with geoiplocation data added and a per country summary based on the geoiplocation data.

Spending a few minutes with an IP address dump like the one described here and whois data is a useful excersise for anyone investigating incidents of this type. This .csv file is based on the 2017-04-29T1105 dump (preserved for reference), and reveals that not only is the majority of attempts from one country but also a very limited number of organizations within that country are responsible for the most active networks.

The spammer blacklist (see this post for background) was of course ripe for the same treatment, so now in addition to the familiar blacklist, that too comes with a geoiplocation annotated version and a per country summary.

Note that all of those files except the .csv file with whois data are products of automatic processes. Please contact me (the email address in the files works) if you have any questions or concerns.

Update 2017-05-17: After running with the autofilling tables for approximately a month, and I must confess, extracting bad login attempts that didn't actually trigger the overload at semi-random but roughly daily intervals, I thought I'd check a few things about the catch. I already knew roughly how many hosts total, but how many were contactin us via IPv6? Let's see:

[Wed May 17 19:38:02] peter@skapet:~$ doas pfctl -t popflooders -T show | wc -l
[Wed May 17 19:38:42] peter@skapet:~$ doas pfctl -t popflooders -T show | grep -c \:

Meaning, that of a total 5239 miscreants trapped, only 77, or just short of 1.5 per cent tried contacting us via IPv6. The cybercriminals, or at least the literal bottom feeders like the pop3 password gropers, are still behind the times in a number of ways.

Update 2017-06-13: BSDCan 2017 past, and the PF and networking tutorial with OpenBSD session had 19 people signed up for it. We made the slides available on the net here during the presentation and announced them on Twitter and elsewhere just after the session concluded. The revised tutorial was fairly well received, and it is likely that we will be offering roughly equivalent but not identical sessions at future BSD events or other occasions as demand dictates.

Update 2017-07-05: Updated the overload criteria for the longterm table to what I've had running for a while: max-src-conn 1, max-src-conn-rate 1/1.

Update 2017-10-07: I've decided to publish a bit more of the SSH bruteforcer data. The origin is from two gateways in my care, both with these entries in their pf.conf:

table persist counters file "/var/tmp/bruteforce"
block drop log (all) quick from

supplemented with cron jobs that dump the current data to the file so the data survives a reboot. After years of advocating 24-hour expiry on blacklists, I recently changed my mind so, both hosts now run with 28-day expiry. For further severity on my part, the hosts also exchange updates to their bruteforce tables via cron jobs that dump table contents to file, fetch the partner's data and load into their own local table. In addition, a manual process extracts (at quasi-random but approximately daily intervals) addresses of failures that do not reach the limits and add those to the tables as well.

The data comes in three varieties: a raw address list, (with a #-prepended comment at the start) suitable for importing into such things as a PF table you block traffic from, the address list with the country code for each entry appended, and finally a summary of list entries per country code. All varieties are generated twice per hour. 

by Peter N. M. Hansteen (noreply@blogger.com) atOctober 18, 2017 02:00 PM

October 14, 2017

Petter Reinholdtsen

A one-way wall on the border?

I find it fascinating how many of the people being locked inside the proposed border wall between USA and Mexico support the idea. The proposal to keep Mexicans out reminds me of the propaganda twist from the East Germany government calling the wall the “Antifascist Bulwark” after erecting the Berlin Wall, claiming that the wall was erected to keep enemies from creeping into East Germany, while it was obvious to the people locked inside it that it was erected to keep the people from escaping.

Do the people in USA supporting this wall really believe it is a one way wall, only keeping people on the outside from getting in, while not keeping people in the inside from getting out?

October 14, 2017 08:10 PM

October 09, 2017

Petter Reinholdtsen

Generating 3D prints in Debian using Cura and Slic3r(-prusa)

At my nearby maker space, Sonen, I heard the story that it was easier to generate gcode files for theyr 3D printers (Ultimake 2+) on Windows and MacOS X than Linux, because the software involved had to be manually compiled and set up on Linux while premade packages worked out of the box on Windows and MacOS X. I found this annoying, as the software involved, Cura, is free software and should be trivial to get up and running on Linux if someone took the time to package it for the relevant distributions. I even found a request for adding into Debian from 2013, which had seem some activity over the years but never resulted in the software showing up in Debian. So a few days ago I offered my help to try to improve the situation.

Now I am very happy to see that all the packages required by a working Cura in Debian are uploaded into Debian and waiting in the NEW queue for the ftpmasters to have a look. You can track the progress on the status page for the 3D printer team.

The uploaded packages are a bit behind upstream, and was uploaded now to get slots in the NEW queue while we work up updating the packages to the latest upstream version.

On a related note, two competitors for Cura, which I found harder to use and was unable to configure correctly for Ultimaker 2+ in the short time I spent on it, are already in Debian. If you are looking for 3D printer "slicers" and want something already available in Debian, check out slic3r and slic3r-prusa. The latter is a fork of the former.

October 09, 2017 08:50 AM

October 03, 2017

Ole Aamot GNOME Development Blog

Free Internet Radio program in Catalan

GNOME Internet Radio Locator version 1.0.0 for GNOME 3 is available in Catalan.

You can download the freely available source code for the free GNOME Internet Radio Locator program from https://git.gnome.org/gnome-internet-radio-locator/ and binary packages for Debian GNU/Linux, Fedora Core, Ubuntu Linux and Mac OS X from http://people.gnome.org/~ole/gnome-internet-radio-locator/

On October 1, a referendum was held on whether Catalonia, an autonomous region of the northeast of Spain, should declare itself to be an independent country. The Spanish government has ruled the referendum illegal, and is taking action on a number of fronts to shut it down and to censor communications promoting it.

It is not very likely that the Spanish government is capable to shut down Catalan language translations for Free Software, but so far the Spanish government have tried to shut down .cat domains that announced the Catalonian referendum before October 1.

You can read more about the referendum on whether Catalonia, an autonomous region of the northeast of Spain, should declare itself to be an independent country at the Electronic Frontier Foundation.

A referendum is a democratic tool for citizens and should not be shut down by the police.

90% voted for a Free Catalonia on October 1, 2017, despite claims by the Spanish prime minister that “no referendum was held in Catalonia”.

by oleaamot atOctober 03, 2017 11:51 AM

September 28, 2017

Ole Aamot GNOME Development Blog

GNOME Internet Radio Locator 1.0.0 for GNOME 3

GNOME Internet Radio Locator 1.0.0 for GNOME 3 is available with map marker popups for Internet radio stations in 76 cities and with text-based location search for 86 Internet Radio stations. The following 76 cities are supported in version 1.0.0:

Adelaide, Australia
Auckland, New Zealand
Austin, Texas
Ayr, Scotland
Bergen, Norway
Berkeley, California
Bern, Switzerland
Boston, Massachusetts
Bristol, United Kingdom
Brno, Czech Republic
Bronx, New York
Brooklyn, New York
Bruxelles, Belgium
Budapest, Hungary
Buenos Aires, Argentina
Calgary, Canada
Cambridge, United Kingdom
Cape Town, South Africa
Centralia, District of Columbia
Chapel Hill, North Carolina
Chicago, Illinois
Cleveland, Ohio
Coimbra, Portugal
Copenhagen, Denmark
Cornwall, United Kingdom
Dublin, Ireland
Gent, Belgium
Guatemala City, Guatemala
Hammond, Louisiana
Honolulu, Hawaii
Houston, Texas
Kingston, Canada
Kristiansand, Norway
Leeds, United Kingdom
London, United Kingdom
Long Island, New York
Los Angeles, California
Lund, Sweden
Manchester, United Kingdom
Memphis, Tennessee
Minneapolis, Minnesota
México City, México
Narvik, Norway
Nashville, Tennessee
New Orleans, Louisiana
New York City, New York
Newcastle, Australia
Nicosia, Cyprus
Nottingham, United Kingdom
Oslo, Norway
Oswego, New York
Ottawa, Canada
Oxford, United Kingdom
Palo Alto, California
Paris, France
Phoenix, Arizona
Pisa, Italy
Pittsburgh, Pennsylvania
Portland, Oregon
Reykjavik, Iceland
Rochester, Michigan
Salford, United Kingdom
San Marcos, Texas
Santiago, Chile
Seattle, Washington
St. Pölten, Austria
Stockholm, Sweden
Sydney, Canada
São Paulo, Brazil
Toronto, Canada
Trondheim, Norway
Tuscaloosa, Alabama
Washington, District of Columbia
Waterloo, Canada
York, United Kingdom
Zürich, Switzerland

If you locate one of these cities on the map and click on the map above the city, you should be able to create a map marker. If you click on the map marker, you will be able to listen to Internet radio from that city. If you click and create several city markers, you can switch between Internet radio stations from different locations on the map.

GNOME Internet Radio Locator 1.0.0 for GNOME 3

You can download the gnome-internet-radio-locator 1.0.0 development tree from https://git.gnome.org/gnome-internet-radio-locator


Debian GNU/Linux unstable i386

Fedora 26 x86_64

Ubuntu 17.04 amd64

This release is built on GTK+ 3.0, GNOME Maps, libchamplain and gstreamer (gst-player).

Enjoy Free Internet Radio.

by oleaamot atSeptember 28, 2017 04:56 PM

September 27, 2017

Peter Hansteen (That Grumpy BSD Guy)

OpenBSD and the modern laptop

Did you think that OpenBSD is suitable only for firewalls and high-security servers? Think again. Here are my steps to transform a modern mid to high range laptop into a useful Unix workstation with OpenBSD.

One thing that never ceases to amaze me is that whenever I'm out and about with my primary laptop at conferences and elsewhere geeks gather, a significant subset of the people I meet have a hard time believing that my laptop runs OpenBSD, and that it's the only system installed.

A typical exchange runs something like,
"So what system do you run on that laptop there?"
"It's OpenBSD. xfce is the window manager, and on this primary workstation I tend to just upgrade from snapshot to snapshot."
"Really? But ..."
and then it takes a bit of demonstrating that yes, the graphics runs with the best available resolution the hardware can offer, the wireless network is functional, suspend and resume does work, and so forth. And of course, yes, I do use that system when writing books and articles too. Apparently heavy users of other free operating systems do not always run them on their primary workstations.

I'm not sure at what time I permanently converted my then-primary workstation to run OpenBSD exclusively, but I do remember that when I took delivery of the ThinkPad R60 (mentioned in this piece) in 2006, the only way forward was to install the most recent OpenBSD snapshot. By mid-2014 the ThinkPad SL500 started falling to pieces, and its replacement was a Multicom Ultrabook W840, manufactured by Clevo. The Clevo Ultrabook has weathered my daily abuse and being dragged to various corners of the world for conferences well, but on the trek to BSDCan 2017 cracks started appearing in the glass on the display and the situation worsened on the return trip.

So the time came to shop around for a replacement. After a bit of shopping around I came back to Multicom, a small computers and parts supplier outfit in rural Åmli in southern Norway, the same place I had sourced the previous one.

One of the things that attracted me to that particular shop and their own-branded offerings is that they will let you buy those computers with no operating system installed. That is of course what you want to do when you source your operating system separately, as we OpenBSD users tend to do.

The last time around I had gone for a "Thin and lightweight" 14 inch model (Thickness 20mm, weight 2.0kg) with 16GB RAM, 240GB SSD for system disk and 1TB HD for /home (since swapped out for a same-size SSD, as the dmesg will show).

Three years later, the rough equivalent with some added oomph for me to stay comfortable for some years to come ended me with a 13.3 inch model, 18mm thick and advertised as 1.3kg (but actually weighing in at 1.5kg, possibly due to extra components), 32GB RAM, 512GB SSD and 2TB harddisk. For now the specification can be viewed online here (the site language is Norwegian, but product names and units of measure are not in fact different).

That system arrived today, in a slender box:

Here are the two machines, the old (2014-vintage) and the new side by side:

The OpenBSD installer is a wonder of straightforward, no-nonsense simplicity that simply gets the job done. Even so, if you are not yet familiar with OpenBSD, it is worth spending some time reading the OpenBSD FAQ's installation guidelines and the INSTALL.$platform file (in our case, INSTALL.amd64) to familiarize yourself with the procedure. If you're following this article to the letter and will be installing a snapshot, it is worth reading the notes on following -current too.

The main hurdle back when I was installing the 2014-vintage 14" model was getting the system to consider the SSD which showed up as sd1 the automatic choice for booting (I solved that by removing the MBR, setting the size of the MBR on the hard drive that showed up as sd0 to 0 and enlarging the OpenBSD part to fill the entire drive).

Let's see how the new one is configured, then. I try running with the default UEFI "Secure boot" option enabled, and it worked.

Here we see the last part of the messages that scroll across the screen when the new laptop boots from the USB thumbdrive that has had the most recent OpenBSD/amd64 install61.fs dd'ed onto it:

And as the kernel messages showed us during boot (yes, that scrolled off the top before I got around to taking the picture), the SSD came up as sd1 while the hard drive registered as sd0. Keep that in mind for later.

After the initial greeting from the installer, the first menu asks what we want to do. This is a new system, so only (A)utoinstall and (I)nstall would have any chance of working. I had not set up for automatic install this time around, so choosing (I)nstall was the obvious thing to do.

The next item the installer wants to know is which keyboard layout to use and to set as the default on the installed system. I'm used to using Norwegian keyboards, so no is the obvious choice for me here. If you want to see the list of available options, you press ? and then choose the one you find the must suitable.

Once you've chosen the keyboard layout, the installer prompts you for the system's host name. This is only the host part, the domain part comes later. I'm sure your site or organization has some kind of policy in place for choice of host names. Make sure you stay inside any local norms, the one illustrated here conforms with what we have here.

Next up the installer asks which network interfaces to configure. A modern laptop such as this one comes with at least two network interfaces: a wireless interface, in this case an Intel part that is supported in OpenBSD with the iwm(4) driver, and a wired gigabit ethernet interface which the installer kernel recognized as re0.

Quite a few pieces the hardware in a typical modern laptop requires the operating system to load firmware onto the device before it can start interacting meaningfully with the kernel. The Intel wireless network parts supported by the iwm(4) driver and the earlier iwn(4) all have that requirement. However, for some reason the OpenBSD project has not been granted permission to distribute the Intel firmware files, so with only the OpenBSD installer it is not possible to use iwm(4) devices during an initial install. So in this initial round I only configure the re0 interface. During the initial post-install boot the rc.firsttime script will run fw_update(1) command that will identify devices that require firmware files and download them from the most convenient OpenBSD firmware mirror site.

My network here has a DHCP server in place, so I simply choose the default dhcp for IPv4 address assignment and autoconf for IPv6.

With the IPv4 and IPv6 addresses set, the installer prompts for the domain name. Once again, the choice was not terribly hard in my case.

On OpenBSD, root is a real user, and you need to set that user's password even if you will rarely if ever log in directly as root. You will need to type that password twice, and as the install documentation states, the installer will only check that the passwords match. It's up to you to set a usefully strong password, and this too is one of the things organizations are likely to have specific guidelines for.

Once root's password is set, the installer asks whether you want to start sshd(8) by default. The default is the sensible yes, but if you answer no here, the installed system will not have any services listening on the system's reachable interfaces.

The next question is whether the machine will run the X Windows system. This is a laptop with a "Full HD" display and well supported hardware to drive it, so the obvious choice here is yes.

I've gotten used to running with xenodm(1) display manager and xfce as the windowing environment, so the question about xenodm is a clear yes too, in my case.

The next question is whether to create at least one regular user during the install. Creating a user for your systems adminstrator during install has one important advantage: the user you create at this point will be a member of the wheel group, which makes it slightly easier to move to other privilege levels via doas(1) or similar.

Here I create a user for myself, and it is added, behind the scenes, to the wheel group.

With a user in place, it is time to decide whether root will be able to log in via ssh. The sensible default is no, which means you too should just press enter here.

The installer guessed correctly for my time zone, so it's another Enter to move forward.

Next up is the part that people have traditionally found the most scary in OpenBSD installing: Disk setup.

If the machine had come with only one storage device, this would have been a no-brainer. But I have a fast SSD that I want to use as the system disk, and a slightly slower and roomier rotating rust device aka hard disk that I want primarily as the /home partition.

I noted during the bsd.rd boot that the SSD came up as sd1 and the hard drive came up as sd0, so we turn to the SSD (sd1) first.

Since the system successfully booted with the "Secure boot" options in place, I go for the Whole disk GPT option and move on to setting partition sizes.

The default suggestion for disk layout makes a lot of sense and will set sensible mount options, but I will be storing /home on a separate device, so I choose the (E)dit auto layout option and use the R for Resize option to redistribute the space left over to the other partitions.

Here is also where you decide the size of the swap space, traditionally on the boot device's b partition. Both crashdumps and suspend to disk use swap space for their storage needs, so if you care about any of these, you will need to allocate at least as much space as the amount of physical RAM installed in the system. Because I could, I allocated the double of that, or 64GB.

For sd0, I once again choose the Whole disk GPT option and make one honking big /home partition for myself.

The installer then goes on to create the file systems, and returns with the prompt to specify where to find install sets.

The USB drive that I dd'ed the install61.fs image to is the system's third sd device (sd2), so choosing disk and specifying sd2 with the subdirectory 6.1/amd64 makes sense here. On the other hand, if your network and the path to the nearest mirror is fast enough, you may actually save time choosing a http network install over installing from a relatively slow USB drive.

Anyway, the sets install proceeds and trundles through what is likely the longest period of forced inactivity that you will have during an OpenBSD install.

The installer verifies the signed sets and installs them.

Once the sets install is done, you get the offer of specifying more sets -- your site could have a site-specific items in an install set -- but I don't have any of those handy, so I just press enter to accept the default done.

If you get the option to correct system time here, accept it and have ntpd(8) set your system clock to a sane setting gleaned from well known NTP servers.

With everything else in place, the installer links the kernel with a unique layout, in what is right now a -current-only feature, but one that will most likely be one of the more talked-about items in the OpenBSD 6.2 release some time in the not too distant future.

With all items on the installer's agenda done, the installer exits and leaves you at a root shell prompt where the only useful action is to type reboot and press enter. Unless, of course you have specific items you know will need to be edited into the configuration before the reboot.

After completing the reboot, the system did unfortunately not, as expected, immediately present the xenodm login screen, but rather the text login prompt.

Looking at the /var/log/Xorg.0.log file pointed to driver problems, but after a little web searching on the obvious keywords, I found this gist note from notable OpenBSD developer Reyk Flöter that gave me the things to paste into my /etc/xorg.conf to yield a usable graphics display for now.

Update 2017-09-27: Kaby Lake support is now available. I installed the 2017-09-27 snapshot, and I am now running the machine with no xorg.conf. I preserved updated dmesg(8) output and xdpyinfo(1) output. It is worth noting that what is in that snapshot is likely very close to what will be in OpenBSD 6.2.

My task for this evening is to move my working environment to new hardware, so after install there are really only two items remaining, in no particular order:
  • move my (too large) accumulation of /home/ data to the new system, and
  • install the same selection of packages on the old machine to the new system.
The first item will take longer, so I shut down all the stuff I normally have running on the laptop such as web browsers, editors and various other client programs, and use pkg_info(1) to create the list of installed packages on the 'from' system:

$ pkg_info -mz >installed_packages

then I transfer the installed_packages file to the fresh system, but not before recording the df -h status of the pristine fresh install:

$ df -h
Filesystem     Size    Used   Avail Capacity  Mounted on
/dev/sd1a     1005M   76.4M    878M     8%    /
/dev/sd0d      1.8T    552K    1.7T     0%    /home
/dev/sd1d     31.5G   12.0K   29.9G     0%    /tmp
/dev/sd1f     98.4G    629M   92.9G     1%    /usr
/dev/sd1g      9.8G    177M    9.2G     2%    /usr/X11R6
/dev/sd1h      108G    218K    103G     0%    /usr/local
/dev/sd1k      9.8G    2.0K    9.3G     0%    /usr/obj
/dev/sd1j     49.2G    2.0K   46.7G     0%    /usr/src
/dev/sd1e     98.4G    5.6M   93.5G     0%    /var

Not directly visible here is the amount of swap configured in the sd1b partition. As I mentioned earlier, crashdumps and suspend to disk both use swap space for their storage needs, so if you care about any of these, you will need to allocate at least as much space as the amount of physical RAM installed in the system. Because I could, I allocated the double of that, or 64GB.

I also take a peek at the old system's /etc/doas.conf and enter the same content on the new system to get the same path to higher privilege that I'm used to having. With those in hand, recreating the set of installed packages on the fresh system is then a matter of a single command:

$ doas pkg_add -l installed_packages

and pkg_add(1) proceeds to fetch and install the same packages I had on the old system.

Then there is the matter of transferring the I-refuse-to-admit-the-actual-number-of gigabytes that make up the content of my home directory. In many environments it would make sense to just restore from the most recent backup, but in my case where the source and destination sit side by side, i chose to go with a simple rsync transfer:

$ rsync  -rcpPCavu . | tee -a 20170710-transferlog.txt

(Yes, I'm aware that I could have done something similar with nc and tar, which are both in the base system. But rsync wins by being more easily resumable.)

While the data transfers, there is ample time to check for parts of the old system's configuration that should be transferred to the new one. Setting up the hostname.iwm0 file to hold the config for the wireless networks (see the hostname.if man page) by essentially copying across the previous one is an obvious thing, and this is the time when you discover tweaks you love that were not part of that package's default configuration.

Some time went by while the content transferred, and I can now announce that I'm typing away on the machine that is at the same time both the most lightweight and the most powerful machine I have ever owned.

I am slowly checking and finding that the stuff I care about just works, though I haven't bothered to check whether the webcam works yet. I know you've been dying to see the dmesg, which can be found here. I'm sure I'll get to the bottom of the 'not configured' items (yes, there are some) fairly soon. Look for updates that will be added to the end of this column.

And after all these years, I finally have a machine that matches my beard color:

If you have any questions on running OpenBSD as a primary working environment, I'm generally happy to answer but in almost all cases I would prefer that you use the mailing lists such as misc@openbsd.org or the OpenBSD Facebook group so the question and hopefully useful answers become available to the general public. Browsing the slides for my recent OpenBSD and you user group talk might be beneficial if you're not yet familiar with the system. And of course, comments on this article are welcome.

Update 2017-07-18: One useful thing to do once you have your system up and running is to submit your dmesg to the NYCBUG dmesg database. The one for the system described here is up as http://dmesgd.nycbug.org/index.cgi?do=view&id=3227.

Update 2017-08-18: Ars Technica reviews the same model, in a skinnier configuration, with a focus on Linux, in Review: System76’s Galago Pro solves “just works” Linux’s Goldilocks problem.

Update 2017-08-24: After questions about how the OpenBSD installer handles UEFI and the 'Secure boot' options, I recorded the output of fdisk -v in this file, which I hope clears up any ambiguity left by the original article.

Update 2017-09-27: Kaby Lake support is now available. I installed the 2017-09-27 snapshot, and I am now running the machine with no xorg.conf. I preserved updated dmesg(8) output and xdpyinfo(1) output. It is worth noting that what is in that snapshot is likely very close to what will be in OpenBSD 6.2.

by Peter N. M. Hansteen (noreply@blogger.com) atSeptember 27, 2017 04:54 PM

September 19, 2017

NUUG news

Tingrettens DNS-beslagskjennelse ankes nok en gang til lagmannsretten

Som nevnt for noen dager siden, da vi la ut tingrettens nye dom i saken, satser vi på å anke saken da vi er uenige i både faktum som legges til grunn og lovanvendelsen. Anken er nå skrevet og sendt over til domstolen, for ny behandling i lagmannsretten. Vi ville satt umåtelig pris på at du viste din støtte til dette arbeidet ved å donere penger til forsvarsfondet. Til nå er det sikkert påløpt rundt 100 000,- i advokatutgifter, og vi har ikke fått i nærheten av dette i donasjoner. Vi holder ut, men det blir enklere med hjelp.

Anke til Borgarting lagmannsrett

Ankende part anker i medhold av strpl. §377 Follo tingretts kjennelse, slutning nr. 2 der beslag av domene ble oppretthold og slutning nr. 3 der innsyn ikke tilkjennes.

For slutning nr. 3 ankes det over feil i lovanvendelsen og feil i bevisbedømmelsen.

For slutning nr. 2 ankes det over feil i saksbehandlingen, feil i bevisbedømmelsen og feil i lovanvendelsen. Saksbehandlingsfeilen som påberopes for kjennelsens slutning nr. 2, er at ankende part ikke fikk innsyn etter §242 i sakens dokumenter, jf. slutning nr. 3.

Tingrettens kjennelse ble forkynt 4.9.2017. Anken er rettidig.

Tingrettens slutning nr 3. Innsynsbegjæringen

Det påberopes feil i rettsanvendelsen i slutning nr. 3 om innsyn. Det redegjøres for dette i det følgende. Dernest redegjør jeg for hvilke feil i bevisbedømmelsen i slutning nr. 3 som påberopes.

Feil i anvendelsen av strpl. §242

Tingretten legger til grunn at personkretsen i strpl. §242 er uttømmende. Det anføres at dette er feil anvendelse av loven.

Det anføres at det rettslige utgangspunktet er kontradiksjon og dermed rett til innsyn. Det anføres at dersom lovgiver går mot dette prinsippet, er dette så unikt at det vil framgå av lovforarbeidene. Når det ikke framgår noe om hvilket innsyn som skal gjelde for tredjemann som begjærer beslag opphevet etter §208, er det fordi lovgiver ikke har tenkt på problemstillingen.

Foruten de i §242 oppgitte unntak til innsyn har Høyesterett slått fast at retten til innsyn kun gjelder så langt det er relevant for vedkommendes sak, jf. Rt-2015-136 (26). Kravet til relevans vil også gjelde for tredjemann som begjærer beslag opphevet. Videre vil nødvendigvis det lovfestede unntaket «skade eller fare for etterforskingens øyemed» være mer omfattende for tredjemann siden etterforskingen ikke retter seg mot ham som mistenkt. Det må være større adgang til å verne etterforskningen mot innsyn fra tredjemann. Det foreligger således en avveiingsnorm mellom etterforskningshensyn og nødvendigheten av kontradiksjon om relevante forhold.

Dette er nøyaktig den normen lovgiver har innført for andre enn fornærmede som fremmer borgerlige rettskrav, jf. strpl §428, jf. §242, syvende ledd. Det vises til forarbeidene Prop. 114 L (2012-2013), avsnitt 4.4.2 og NOU 2003:21, avsnitt Nåværende syvende ledd ble lagt til fordi bestemmelsen forut «i liten grad sikrer den som har fremmet borgerlige krav rettigheter på etterforskningsstadiet, og den foreslåtte endring i § 242 anses derfor nødvendig».

Syvende ledd sikrer at andre enn fornærmede som fremmer sivile krav i en straffesak, har samme rett til innsyn som fornærmede. Det anføres at dette også må gjelde for tredjemann som begjærer beslag opphevet. En begjæring om opphevelse av beslag kan langt på vei betraktes som et borgerlig rettskrav. Det anføres at den største forskjellen er at den som begjærer opphevelse har desto større interesse i innsyn på etterforskningsstadiet fordi vedkommende «straks» kan bringe inn for retten spørsmålet om beslaget skal opprettholdes, jf. §208. Til motsetning pådømmes et sivil krav vanligvis først i forbindelse med hovedsaken om ikke etter denne. Ved å betrakte et krav fra tredjemann om opphevelse av beslag som et borgerlig rettskrav, har vedkommende rett til innsyn i samsvar med avveiingsnormen gitt i syvende ledd i §242.

Siden tingretten har lagt til grunn at personkretsen i §242 er uttømmende og ikke anvendt avveiingsnormen i §242, syvende ledd, er loven feil anvendt. Ankende part må gis innsyn så langt dette følger av den konkrete avveiingen for de enkelte dokumentene som tingretten bygger på.

Jeg vil nå konkret gå inn på dokumenter som framstår som viktige og benytte avveiingsnormen i §242, syvende ledd.

Innsyn etter en konkret anvendelse av strpl. §242, syvende ledd

Det anføres at avveiingen må vurderes konkret fra dokument til dokument. Det anføres at dersom det i domspremissene er vist til et dokument, er dokumentet relevant for tredjemann som begjærer beslag opphevet. Det er i domspremissene vist til flere dokumenter som ankene part ikke har fått innsyn i. Spørsmålet er således om de i loven oppsatte begrunnelser for å unnta innsyn er tungtveiende

Særlig relevant for ankende part er innholdet på nettsiden som ble beslaglagt. Dette skal være beskrevet i dok 4,10 og filen ED-1. Det kan være avgjørende at ankende part kjenner til alle relevante forhold om domenet som er beslaglagt. Ankende part har så langt måttet forholde seg til eldre, lagrede utgaver av popcorn-time.no på archive.org. Dersom dette avviker fra det som er beslaglagt, kan ankende parts «forsvar» av nettsiden være på feil premisser. Ankende part vet heller ikke om dok 4,10 og filen ED-1 gir et representativt bilde av nettsiden. Blant annet framstod det slik at Økokrim viste i rettsmøtet 1.2.2017 «pop up ad» for Popcorn Time (!) på popcorn-time.no. Dette er i så fall brukerspesifikk reklame initiert av Økokrim og må skil es fra popcorn-time.no. Å få verifisert dette kan også være viktig for å vite mer om motivene for de som har opprettet og vedlikeholdt nettsiden. Jeg kommer tilbake til dette i forbindelse med skjellig grunn til mistanke.

Det anføres at det ikke foreligger etterforskningsmessige hensyn til å unnta ankende part innsyn i det som konkret er beslaglagt. Det er heller ingen personvernhensyn å ta. Samlet sett taler dette for innsyn i dok. 4,10 og filen ED-1.

Et annet relevant dokument er anmeldelsen. Tingretten og lagmannsretten har suksessivt i tre stadier gjort nye deler av anmeldelsen kjent. I og med at anmeldelsen rettet seg mot ankende part ved styreleder, anføres at dette er nok til å bli underrettet om henleggelse, jf. påtaleinstruksens §17-2, bokstav a, selv om det var slik at styreleder raskt ble sjekket ut av saken. Unntak i denne retten følger av tredje ledd:

«Underretning kan likevel unnlates, dersom den som forfølgningen har vært rettet mot, ikke har vært siktet, og det kan skade mulighetene for senere å oppklare saken at underretning gis.»

Som det framgår er det to kumulative vilkår for å unnlate underretting. Det anføres at det ikke foreligger etterforskningsmessige hensyn for å unnlate underretning. At ankende part samtidig har begjært beslag for opphevet, kan ikke frata ankende part vanlige rettigheter om å bli underrettet om hvilke anklager som har vært rettet mot seg. Det anføres at verken hensynet til etterforskningen eller tredjemann taler mot innsyn, jf. strpl. §242, syvende ledd. Derimot har prinsippet om kontradiksjon stor vekt. Dette tilsier innsyn i anmeldelsen.

Et tredje og et fjerde dokument som er sentrale i herværende sak, er dok. 08,03 og 09,13. De skal dokumentere at tilnærmet all bruk av Popcorn Time medfører brudd på åndsverksloven. Sistnevnte er et viktig premiss i tingrettens kjennelse. Det er ytterst problematisk at ankende part ikke får etterprøvd riktigheten av dette. Ankende part tror at det som framkommer i dokumentene, ikke stemmer i forhold til det beslaglagte domenet popcorn-time.no.

Dok. 08.03 skal være et vitneavhør. Uten innsyn har ankende part ingen mulighet til å etterprøve kvaliteten på vitneutsagnene. Det kan være alt fra et partsinnlegg til et kvalifisert utsagn. Særlig mistenkelig er følgende utsagn gjengitt av tingretten:

«ifølge et vitneavhør i dok. 08,03 viser undersøkelser at nærmere 100 % av filmene og TV-seriene i katalogoppslaget til programvaren Popcorn Time var tilgjengeliggjort uten rettighetshavemes samtykke» (s. 9)

Det anføres at det finnes flere varianter av Popcorn Time som bruker ulike kataloger. Hva er det vitnet sikter til i det av tingretten gjengitte? Det anføres at ingen av unntakene i §242, sjuende ledd, kommer til anvendelse for Dok 08,03.

Dok. 09,13 skal være en undersøkelse. Ordet undersøkelse blir i denne sammenhengen brukt autoritativt. Ankende part forstår det dit at det gjelder en undersøkelse som har fulgt vanlige krav til metode. En hjørnestein i akademia er at undersøkelser skal være etterprøvbare. En annen hjørnestein i akademia er at forskningen skal være åpen. Formålet er «å spre og formidle resultater fra forskning», jf. uhl. §1-3. Dersom denne vitenskapelige standarden ikke skal gjelde for undersøkelsen i dok. 09,13, må det være fordi innsyn i den kan skade etterforskningen eller etterforskningsmetoder. Dersom det har vært benyttet spesiell etterforskningsmetode, er spørsmålet om dataene er samlet inn lovlig. Det anføres at dersom innsamlingen har vært ulovlig, må retten se bort fra beviset. Det kan være et spørsmål om hvilke straffeprosessuelle tvangsmidler som har vært brukt, om vilkårene for å benytte dem er oppfylte og om lovpålagt domstolskontroll er fulgt.

Motsetningsvis er undersøkelsen en vanlig vitenskapelige undersøkelse hvorpå det ikke finnes mothensyn til innsyn. I så fall må innsyn gis.

Feil rettsanvendelse ad terskelen for stilling som mistenkt

Subsidiært, dersom personkretsen i §242 er uttømmende og dersom en begjæring om opphevelse av beslag ikke kan betraktes som et sivilt krav, jf. §428, er spørsmålet om ankende part har vært mistenkt. Mistenkt har rett til innsyn, jf. første punktum i §242.

For å bedømme om ankende part har vært mistenkt anvender tingretten den rettslige standarden for å bedømme om en person har vært siktet, jf. §82, første punktum, tredje alternativ. På dette grunnlaget stil er tingretten opp et vilkår «om etterforskningen kan sies å ha vært "rettet mot ham"», om vedkommende har vært "spesielt utpekt". Det anføres at dette er feil lovanvendelse. Terskelen for å bli siktet er høyere enn terskelen for å være mistenkt. Retten til innsyn etter §242 krever kun stil ing som mistenkt, ikke stil ing som siktet. Tingrettens drøfter også i fortsettelsen vilkårene for å være siktet (charged). På denne måten trekker tingretten inn Grl. §95 og EMK art. 5 og 6. Det anføres at tingretten har anvendt retten feil ved å benytte feil rettslig utgangspunkt.

Det anføres at skal et beslag anses som tredjemannsbeslag, må det forutsettes at påtalemyndigheten bruker tvangsmidler på minst inngripende vis. Dersom påtalemyndigheten tar forholdsregler utover dette, manifesterer dette en eller annen form for mistanke mot vedkommende med dertil rettigheter. Det anføres at dette er den rettslige rettesnoren for å bedømme om et beslag faktisk er et tredjemannsbeslag. Det anføres at dette samsvarer best med Rt-2015-520 hvor påtalemyndigheten aksepterte at dersom det er fremsatt en begjæring om tvangsmidler for retten, må den som begjæringen er rettet mot, ha status som «mistenkt» (35). Straks valg av ekstra tvangsmiddel i realiteten er forholdsregler tatt overfor såkalt tredjemann, slik som ikke å stole på at vedkommende ikke samarbeider med hovedmistenkt, utgjør disse forholdsreglene ekstra tvangsmidler spesielt rettet mot vedkommende hvorpå han har stil ing som mistenkt, jf. Rt-2105-520. Det at tingretten overser dette og i stedet benyttet terskelen for status som siktet, utgjør en feil i rettsanvendelsen.

Hva som var ekstra tvangsmidler i herværende sak utover minst inngripende tvangsmidler, forklares nedenfor.

Tingretten som benyttet en for høy terskel, kom «under en viss tvil» til at ankende part ikke har vært mistenkt og hadde derfor ikke rett på innsyn etter §242. Det anføres at dette skjedde til tross for at tingrettens bevisbedømmelse var befengt med feil i ankende parts disfavør. Dette er emnet i det følgende.

Feil i bevisbedømmelsen i relasjon til §242

Tingretten legger til grunn at ankende part ikke har vært mistenkt og uten rettigheter etter §242, første ledd.

Det anføres at tingretten i den konkrete vurderingen la vekt på hva Økokrim har anført, og mindre vekt på hva som konkret er gjort. For det første peker tingretten på at ransakingsbegjæringen var omtalt som «ransaking hos tredjemann», dernest på at formuleringene var vide og åpne. Intet tydet på at ankene part var «spesielt utpekt» (som altså er en standard for å bedømme om det forelå siktelse, ikke mistanke). Intet i den senere etterforskningen antydet mistanke mot ankene part. Avhøret av Eriksen og av Hassel er karakterisert som vitneavhør (s. 16).

Det anføres at dette ikke veier opp bevisene for mistanke.

Det er viktig for bevisbedømmelsen at Økokrim ikke har bestridt at etterforskningen på et tidspunkt var rettet mot registrar av domenet popcorn-time.no, herunder IMC AS. Det anføres at dette skyldes at anmeldelsen var rettet mot styrelederen i IMC AS.

Dertil er ransakelse i hjemmet et alvorlig inngrep. Hjemmelen for ransakelse var §192, tredje ledd, bokstav c, ut fra at hjemme hos styremedlemmene kunne det «finnes bevis eller ting som kan beslaglegges». Hovedregelen er at «Husransakelse må ikke finne sted, unntatt i kriminelle tilfeller», jf. Grl. §102. Bestemmelsen hegner om «hjemmets fred og ukrenkelighet» (Rt-20014-1723). For at unntaket skal komme til anvendelse forutsetter det mistanke, se Erling Johannes Husabø NOU 2009:15, Vedlegg 2, avsnitt 6.1. Det anføres at Grl. §102 gir individuell beskyttelse slik at mistanken må rette seg mot den som tar bolig i det aktuelle hjemmet.

I og med at husransakelse fant sted i herværende sak og grunnlovsbeskyttelsen er individuell, innebærer at ankende part var mistenkt. Dette utdypes med at registrar og dets styremedlemmer må ha et absolutt vern mot at innhold på deres registrerte domener medfører husransakelse dersom det ikke foreligger mistanke rettet mot dem fordi: Et domene finnes ikke hos registrar og beslag av domene vil skje uavhengig av en ransakelse. Ransakelse utgjør et ekstrainngrep. Forelå det ikke mistanke mot registrar var Økokrim kun en telefon unna å vite hvem som hadde bestilt domenet. Så lenge registrar ikke er mistenkt, tilsier all tidligere erfaring at det ikke foreligger etterforskningstaktiske grunner for ikke å samarbeide med registrar om å ta ned domener. Dersom registrar ikke var mistenkt, forelå det intet kriminelt tilfelle i tilknytning til registrar som tilsa ransakelse, enda mindre ransakelse av styremedlemmenes hjem. Den eneste grunnen til å foreta ransaking av deres hjem, var at de var mistenkte.

Økokrim har hjemlet beslaget av domenet i strpl. §205. Bestemmelsen gjelder beslag av ting «som besitteren ikke vil utlevere frivil ig». Hvorfor var Økokrim redd for at IMC AS ikke vil e utlevere domenet frivillig dersom IMC AS ikke var mistenkt? Hva skulle være IMC AS sitt motiv for ikke å samarbeide med Økokrim? I herværende sak tok påtalemyndigheten forholdsregler mot IMC AS. Det anføres at Økokrims presumpsjon om manglende bistand eller unndragelsesfare utgjorde en mistenkeliggjøring av IMC AS.

Økokrims framgangsmåte tilsidesatte det som må forutsettes som alminnelige hensyn til tredjemann. Økokrim tok i stedet en rekke forholdsregler ved å anvende ekstra tvangsmidler spesielt rettet mot ankende part. Ankende part ble ikke behandlet som tredjemann fram til tidspunktet for beslaget/ransakingen, men som mistenkt.

Til dette kommer at dersom formålet var etterforskningstaktiske grunner, ville Økokrim ha vært tjent med å ha popcorn-time.no oppe for videre monitorering og etterforskning, og - siden Økokrim tydeligvis har sikret seg kopier underveis - uten fare for tap av bevis.

Domenet kunne i stedet ha vært beslaglagt i forbindelse med tiltale. Det anføres at beslag av domenet så tidlig i etterforskningen, kun kan forklares etterforskningstaktisk på to vis. Enten var beslaget forebyggende, jf. strl. §70, jf. strpl. §203. Eller så ville Økokrim sikre seg bevis hos IMC AS som Økokrim var redd for at IMC AS kunne forspil e/unndra. Siden lovens skranke mot forebyggende beslag av informasjonsbærer er høyt, og Økokrim følgelig heller ikke har påberopt seg strl. §70, gjenstår Økokrims presumpsjon om manglende bistand eller unndragelsesfare. Det anføres at dette viser at IMC AS var mistenkt. Dertil tjente beslaget i inngående faktura kun formålet om å kartlegge IMC AS sin virksomhet, og meddelte intet om hvem som har bestilt domenenavnet.

Det er irrelevant at alle mistanker nå er tilbakedrevet. IMC AS sine rettigheter som mistenkt gjelder i forhold til det som ledet til beslag av domene og regnskap og til ransaking i hjem. Følgelig har IMC AS rett på innsyn, jf. stprl. §242.

Når det kommer til IMCASREG8, er dette kun én av 20 tilsvarende papirorganisasjoner. Al e er administrert av IMC AS. Al e inntekter og utgifter fra disse føres på IMC AS. Om ikke IMCASREG8 har vært mistenkt, er det fordi IMCASREG8 aldri har framstått som noe annet enn en pro forma organisasjon på grunn av reglene for registrering av domener med toppdomenet .no. Kravet for å få et .no-domene er norsk organisasjonsnummer. Men utenlandske selskaper som ikke er etablert i Norge, kan likevel trenge et .no-domene og å verne seg mot at andre tar .no-domener med deres navn og varemerker. Derfor kommer det forespørsler om bulkregisteringer på vegne av utenlandske selskaper. En organisasjon kunne etter gamle regler kun registrere 20 .no-domener. Derfor har de mest kjente registrarerne i Norge en haug med pro forma-organisasjoner som ikke har noen virksomhet, men som registraren administrerer. Det holdes ikke årsmøte eller styremøte i disse pro-forma organisasjonene.

IMCASREG8 har aldri framstått som den reelle innehaveren av domenet popcorn-time.no. Derfor gikk Økokrim på IMC AS, styreleders hjem og regnskapsførers hjem som kun fører regnskap for IMC AS, ikke for IMCASREG8 som ikke har regnskap. Det er ikke spørsmål om IMCASREG8 har vært mistenkt. At IMCASREG8 har eget organisasjonsnummer har akkurat like liten betydning som at IMCASREG8 står som innehaver av domenet popcorn-time.no. Økokrim vil ikke ta ut tiltale mot IMCASREG8 av den grunnen. Spørsmålet er utelukkende hvem som har brukt IMCASREG8. Det har IMC AS, og derfor var IMC AS mistenkt.

Saksbehandlingsfeil ad slutning nr. 2

Dersom ankende part skulle ha hatt innsyn, og har ikke fått det, utgjør dette saksbehandlingsfeil som kan ha innvirket på slutning nr. 2. Dette er tilstrekkelig til å oppheve denne delen av kjennelsen, jf. §385 tredje ledd, jf. §343 første ledd.

Det anføres at dersom Dok 09,13 ikke kan gjøres offentlig, er det fordi informasjonen er innsamlet ulovlig. Det anføres at retten dermed ikke kan bygge på denne informasjonen. Siden tingretten har gjort det, foreligger det en saksbehandlingsfeil som kan ha innvirket på slutning nr. 2. Dette er tilstrekkelig til å oppheve denne delen av kjennelsen.

Feil i bevisbedømmelsen ad slutning nr. 2

Det anføres at det foreligger feil i bevisbedømmelsen både for vilkåret i strpl. §203 om «skjellig grunn til mistanke» og i proporsjonalitetsvurderingen etter §170a.

Før jeg går inn på tingrettens bevisbedømmelse vil jeg kort knytte en merknad til tingrettens beskrivelse av faktum. Merknaden kan ha relevans for det lagmannsretten skal pådømme, og for å unngå framtidige misforståelser foretar jeg herved en presisering. Tingretten skriver at programvaren Popcorn Time «har en katalogtjeneste som gjør det mulig å søke opp» film- eller tv-serier tilgjengelig på Internett (s. 8). Popcorn Time har ikke en «egen» katalogtjeneste. Popcorn Time bruker tredjepartskataloger. Det finnes flere kataloger. Det anføres at ulike varianter av Popcorn Time bruker ulike kataloger.

Tingretten viser også til Økokrims anførsel om «at Popcorn Time lenket til 4 451 filmer og 1 337 tv-serier på anmeldelsestidspunktet» (s. 11). Det framgår imidlertid ikke hvilken variant av Popcorn Time og hvilken katalog som det siktes til.

Nedenfor klargjør jeg hvilke feil i bevisbedømmelsen av skjellig grunn til mistanke som påberopes. Deretter klargjør jeg hvilke feil i bevisbedømmelsen i forholdsmessighetsvurderingen som påberopes.

Skjellig grunn til mistanke

Ting, herunder domene, jf. Rt-2009-1011, som «har vært brukt eller bestemt til bruk ved en straffbar handling, kan inndras», jf. strl. §69, bokstav c, og følgelig beslaglegges, jf. strpl. §203, annet punktum. Beslag forutsetter skjellig grunn til mistanke om den straffbare handlingen. Spørsmålet i herværende sak er om det er skjellig grunn til mistanke om medvirkning til overtredelse av ål. §2, jf. §54, jf. strl. §15. For at det skal foreligge skjellig grunn til mistanke, må det foreligge sannsynlighetsovervekt for en straffbar handling, jf. Rt-1993-1302.

Det er en innfløkt medvirkningshandling Økokrim har lagt til grunn for beslaget av domenet popcorn-time.no. De som har opprettet og vedlikeholdt nettsiden, har tilskyndet (psykisk medvirket) til at nettbrukere har brukt programvaren Popcorn Time til å se filmer og tv-serier i strid med rettighetshavers enerett om å gjøre åndsverk tilgjengelig for allmennheten (heretter filmer som ikke er i det fri). Flere brukere av programvaren Popcorn Time har så tilskyndet hovedgjerningen som er opplasting av flere filmer som ikke er i det fri. Den psykiske medvirkningen, tilskyndingselementet, går altså over to stadier. Skal det foreligge skjellig grunn til mistanke om straffbar handling, må det for hvert av stadiene finnes bevis som gjør hele forløpet overveiende sannsynlig.

For det første stadiet må det sannsynliggjøres med overvekt at nettsiden faktisk har vært besøkt av nettbrukere. Dertil må det sannsynliggjøres med overvekt at nettsiden påskyndet bruk av programvaren Popcorn Time i strid med opphavsretten. For det andre forløpet må det sannsynliggjøres med overvekt at den påfølgende bruken av Popcorn Time faktisk var i strid med eneretten til rettighetshaver.

Økokrim har ført bevis for de to siste elementene av hendelsesforløpet i medvirkningshandlingen, men ikke for det første elementet. Derimot har ankende part ført bevis for at det første elementet ikke er sannsynlig. Når tingretten overser dette, foreligger det feil i bevisbedømmelsen.

Tingretten vedgår «at det er vanskelig å tallfeste hvor mange personer som har besøkt nettstedet popcorn-time.no», men dekker seg bak «at selve programvaren var populær på tidspunktet for beslag». Sistnevnte, som ikke er riktig, sannsynliggjør på ingen måte at nettstedet popcorn-time.no var besøkt, og i hvert fall ikke med overvekt i og med at ankende part har lagt fram bevis på det motsatte.

Ankende part vil i det følgende redegjøre for faktum, og da også for de to andre elementene i hendelsesforløpet som viser at det heller ikke er sannsynlighetsovervekt for at disse har skjedd. Det tas i redegjørelsen ikke hensyn til om hovedgjerningen er lovstridig eller ikke. WTOs avgjørelse av 21.12.2007 i sak WT/DS285/ARB viser at det kan være lovlig å laste opp filmer og tv-serier på nettet uten rettighetshavers samtykke.

Har nettsiden popcorn-time.no vært besøkt

Skal nettsiden popcorn-time.no ha inngått i en medvirkningshandling som stimulerte til økt bruk av programvaren Popcorn Time, må nettsiden ha vært besøkt av nettbrukere.

Det anføres at nettsiden knapt har vært brukt. Undertegnede gjorde 9.11.2016 et nettsøk med variablene «popcorn» og «time». Se bilag 2 til prosesskriv av 11.11.2016 til tingretten. Søkemotoren som ble brukt var duckduckgo. Det anføres at duckduckgo ikke manipulerer treffene, men lister dem ut etter bruk. Default søk i duckduckgo er globalt.

Da kom ikke popcorn-time.no opp blant de hundre første treffene. Nordmenn søker også globalt. Det er slutt på at brukere søker med toppdomenet .no. Først med innstillingen «Norge», som er en innstilling i duckduckgo men ikke i google, kom popcorn-time.no opp i søket, og da på 7. plass. Det anføres at dette viser at popcorn-time.no i svært liten grad har vært besøkt av nordmenn.

Dette sammenfaller med et annet bevis gitt i bilag 2 til prosesskriv av 1.4.2017 i forrige runde hos lagmannsretten. Google Trends viser at det var et drastisk fall i nordmenns søk etter Popcorn Time fra og med sensommeren 2015. Nettstedet popcorn-time.no ble opprettet omkring august 2015 siden første lagring av popcorn-time.no på archive.org er fra 17.9.2015. Nettstedet popcorn-time.no ble således opprettet for seint til å bli besøkt.

Beviset for at nettstedet ikke har vært besøkt forsterkes også av at norske nettsøkere ikke lenger søker etter toppdomenet .no og at engelsk er mer enn gangbart blant gruppen som har brukt Popcorn Time. Det anføres at de som skulle se en film med programvaren Popcorn Time, ville brukt søkeordene «popcorn», muligens «time» og navnet på filmen, ikke mer. Dette forklarer hvorfor ikke popcorn-time.no har dukket opp i søkene.

Økokrim har heller ikke dokumentert at nettsiden ble brukt. Det anføres at i mangel av slike bevis må det legges til grunn at nettstedet ikke har vært brukt.

Når tingretten overser ovenstående, foreligger det feil i bevisbedømmelsen om at det foreligger skjellig grunn til mistanke om medvirkning til brudd på åndsverksloven. Om så var intensjonen til de som har opprettet og vedlikeholdt siden, lyktes de ikke med det. Hva som var intensjonen, er emnet i det følgende.

Påskyndet nettsiden ulovlig bruk av programvaren

Det er ikke bestridt at nettsiden popcorn-time.no påskyndet bruk av programvaren Popcorn Time. Derimot er det bestridt at nettsiden påskyndet ulovlig bruk. Det springende punktet er om disclaimeren på nettsiden faktisk oppfordret til å følge loven, eller om dette kun var et skuebrød. Sistnevnte tolkning støttes opp under av at det på nettsiden ble tilrådet å bruke VPN for å bevare anonymitet og at det ble proklamert: «Du kan se alt fra de nyeste filmene til de gamle klassikerne, du finner nesten alt.»

Det anføres at det imidlertid er en alternativ like sannsynlig intensjon til de bak nettsiden.

Domenet popcorn-time.no ble bestilt hos IMC AS, og ikke hos IMCASREG8 (!), 23.2.2015, kl 13:11:03. Som nevnt indikerer archive.org at popcorn-time.no ble opprettet i august 2015. Halvannen måned før, 27.6.2015, avdekket Aftenposten, jf. bilag 4 til dok 01,08, at det hadde vært allmenn faktisk vil farelse om at bruk av programvaren Popcorn Time kunne medføre deling og dermed ulovlig tilgjengeliggjøring.

Altså etter å ha fått tildelt domenet, tilrettelagt nettsiden og gjort den tilnærmet klar for utlegging, viste det seg at bruk av Popcorn Time kan være ulovlig.

Uten å ha fått gransket dok. 4,10 eller filen ED-1, har ankende part holdepunkter for at domenet er anskaffet i håp om inntjening. Forretningsmodellen som har bredd om seg på Internett, baserer seg på informasjon og nyheter kombinert med «adds on ap» basert på brukeratferd. Disse «adds on ap» på nettsiden som laster inn brukertilpasset reklame, genererer inntekter. Jo flere oppslag på nettsiden, desto mer inntekter. Det anføres at det bakenforliggende motivet har vært inntjening, ikke å medvirke til brudd på opphavsretten. Det de bak nettsiden har gjort er å skaffe seg domener med navn som kunne generere mange treff. Men de bommet på tidspunktet. Etter å ha bestilt domenet hos IMC AS og tilrettelagt nettsiden, viste det seg at bruk av Popcorn Time kan være ulovlig. For at arbeidet ikke skulle være forgjeves ble nettsiden beholdt, men med advarsel. Disclaimeren kunne være forenlig med mange treff på nettsiden, men som Google Trends viser, medførte bevisstheten om mulig ulovlig bruk at bruken stupte. De bak nettsiden popcorn-time.no valgte likevel å beholde disclaimeren, både i ingressen og som pop-up som måtte aktivt fjernes for å lese nettsiden. Dette viser at disclaimeren var seriøst ment. Siden butter project også ble omtalt, virker det som de bak nettsiden forsøkte å genere treff ved å stimulere lovlig bruk. Dette klarte de ikke. Derimot må det i samsvar med den øvrige nedgangen legges til grunn at de klarte å få besøkende til å avstå ulovlig bruk av programvaren Popcorn Time - så fremt nettsiden hadde besøkende.

Det foreligger derfor motbevis på at de bak nettsiden har identifisert seg med og påskyndet hovedgjerningen. Det anføres videre at ovennevnte forklaring er like sannsynlig som den Økokrim og tingretten har lagt til grunn. Det foreligger således ikke sannsynlighetsovervekt for en straffbar handling. Følgelig foreligger det feil i bevisbedømmelsen ad skjellig grunn til mistanke.

Var bruken av programvaren forårsaket av nettstedet i strid med eneretten

Programvaren Popcorn Time gjør innhold tilgjengelig for allmennheten fordi bitTorrent-teknologien i programvaren ikke uten videre kan endres til å slå av deling under streaming. Dette er omforent faktum. Streaming er lovlig, men deling innebærer tilgjengeliggjøring som vil være ulovlig dersom det som streames ikke er i det fri.

Bruk av programvaren Popcorn Time bryter dermed åndsverksloven så lenge innholdet som streames ikke er i det fri. Spørsmålet er således om nettstedet popcorn-time.no påskyndet streaming og dermed deling av ulovlig eller lovlig innhold. Spørsmålet er delvis besvart ovenfor. Tingretten har mot dette lagt til grunn at tilnærmet all deling med programvaren Popcorn Time har vært i strid med eneretten og at nettstedet popcorn-time.no påskyndelse ikke har medført noe unntak. Tingrettens grunnlag er dok 08,03, dok 09,13 og en britisk underrettsavgjørelse innen sivilrett, avsagt uten kontradiksjon.

Sistnevnte grunnlag trenger ingen flere merknader. Jeg vil nå utdype at også dok 08,03 og 09,13 må tillegges mindre vekt enn det tingretten har gjort.

Det anføres at det som framkommer i dok 08,03 og dok 09,13 er basert på data eller erfaringer fra tiden før høsten 2015. Det anføres at dette ikke lenger stemmer for popcorn-time.no. Etter at det ble kjent at bruk av programvaren kan være ulovlig falt google-søk etter programvaren drastisk, nødvendigvis da også potensielle treff på domenet popcorn-time.no, jf. nevnte bilag om Google Trends. Siden google-søk nødvendigvis også medførte informasjon om at bruk av programvaren Popcorn Time kunne medføre brudd på opphavsretten, anføres at bruken falt enda mer enn det google-søkene tilsa. Nedgangen viser at mange, om ikke flertallet, brukte søkene til å orientere seg, og ikke som et ledd i å få lastet ned film og programvare. Videre anføres at samtidig vokste andelen av lovlig bruk av den gjenværende bruken av programvaren Popcorn Time. Framveksten av Butter project beviser dette. Butter er en avledet utgave av Popcorn Time. Katalogoppslaget er gjort om til innstikkmoduler. All kode som gjør oppslag i kataloger med ulovlig innhold, er fjernet. Butter gjør kun oppslag i kataloger der alle filmene er i det fri.

Som nevnte bilag om Google Trends også viser, velger nordmenn lovlige løsninger så fremt lovlige løsninger er enkelt tilgjengelig. At nettsiden popcorn-time.no advarte mot ulovlig bruk har således den virkningen at den medfører mer lovlig bruk, ikke omvendt. Med andre ord, dersom nordmenn har funnet nettsiden popcorn-time.no, har de mest sannsynlig avstått fra å bruke programvaren Popcorn Time på en måte som medførte rettighetsbrudd. På nettstedet popcorn-time.no var Butter omtalt slik i nyhetsspalten på høyre side hos popcorn-time.no: «Er Butter den nye Popcorn Time?», og videre, Butter er den «store utviklingen i Popcorn Time verden» - nettopp fordi Butter sikrer brukeren mot å se innhold som ikke er i det fri.

Ankende part spilte i rettsmøtet 1.2.2017 av tre filmer i det fri ved hjelp av programvaren Popcorn Time. For å understreke vårt poeng for tingretten ble til og med programvaren Popcorn Time og to av filmene hentet fra såkalte verstingsteder, nærmere bestemt fra popcorntime-online.io og popcorn-time.to. At innhold i det fri er blandet med innhold som ikke er i det fri, kan i seg selv ha ledet til for raske slutninger om at tilnærmet all bruk har vært ulovlig. Nå kjenner riktignok ikke ankende part til innholdet i undersøkelsen i dok 09,13, men den er uansett for gammel, og kanskje heller ikke lovlig gjennomført.

Det anføres at det ikke foreligger tilstrekkelig bevis for at all bruk av programvaren Popcorn time implisitt medførte ulovlig bruk. Særskilt kan dette ikke legges til grunn for dagens bruk av Popcorn Time. Enda mindre kan dette legges til grunn for nettbrukere som har benyttet Popcorn Time etter å ha besøkt nettsiden popcorn-time.no. Når tingretten legger til grunn at tilnærmet all bruk av Popcorn Time medfører rettighetsbrudd, er dette i seg selv usikkert, og enda mer usikkert for besøkende på popcorn-time.no. Når tingretten ikke har tatt hensyn til dette, foreligger det feil i bevisbedømmelsen.

Oppsummering skjellig grunn til mistanke

Det anføres at det ikke er sannsynlighetsovervekt for at de bak popcorn-time.no har medvirket til ulovlig tilgjengeliggjøring, jf. ål. §54, jf. §2, ved hjelp av programvaren Popcorn Time. Man kan formulere det slik at de som opprettet popcorn-time.no, var for seint ute. De var for seint ute vedrørende populariteten til Popcorn Time. De var for sent ute vedrørende brukervaner omkring «googling» og språk. Det foreligger ikke bevis or at popcorn-time.no har vært besøkt. Siden popcorn-time ikke har vært besøkt, har nettstedet ikke inngått i en medvirkningshandling.

Det anføres at eventuelle sporadiske besøk på popcorn-time.no endte med, i samsvar med disclaimeren og det som framkommer av Google Trends, at den besøkende avstod fra å bruke programvaren Popcorn Time eller brukte programvaren kun til å se innhold som er i det fri.

Det foreligger således ikke sannsynlighetsovervekt for at de som opprettet og vedlikeholdt popcorn-time.no, har medvirket til brudd på åndsverksloven. Dette vilkåret for beslag etter §203 er dermed ikke oppfylt. Når tingretten har kommet til motsatt resultatet, skyldes det feil i bevisbedømmelsen.

Dertil vet vi ikke hvor hovedgjerningen er foretatt, og om den er ulovlig: Årsakskravet for psykisk medvirkning er at «medverkaren sin handlemåte må ha inngått i den positive motivasjonsbasen for hovedgjerninga» (Husabø gjengitt i Birgitte Hagland Erstatningsbetingende medvirkning 2012:195). Selv om dette kan tenkes og er forutsatt i kjennelsen, er det ingen konkrete holdepunkter for dette i herværende sak. Uten anelse om hvordan opplastningen av filmer og tv-serier foregår eller har foregått, anføres at retten ikke kan angi sannsynlighetsovervekt for om popcorn-time.no har inngått i noen motivasjonsbase til hovedgjerningen.

Forholdsmessigheten ved beslaget av domenenavnet

Før jeg går inn på forholdsmessighetsvurderingen påpekes at tingretten i all enkelhet parkerte spørsmålet om forhåndssensur ut fra at det «er tale om en reaksjon på en allerede framsatt ytring». Det anføres at dette er feil i bevisbedømmelsen. Spørsmålet er hvor dynamisk nettsiden er. Eksempelvis vil beslag av vg.no opplagt også innebære en sanksjon på framtidige ytringer. I mangel av kjennskap til hvor dynamisk popcorn-time.no var, forfølger imidlertid ikke ankende part spørsmålet om forhåndssensur. Det anføres i stedet at under enhver omstendighet var beslaget uforholdsmessig.

I tillegg til de materielle vilkårene for beslag etter strpl. §203 må også beslaget være forholdsmessig, jf. §170a. Ankende part anfører at myndighetene som et minimum, må føre bevis for at det foreligger krenkelse av opphavsretten i et visst omfang. Det vises til HR-2017-833 som også knesetter at den påviste krenkelsen skal bedømmes konkret i forhold til inngrepet. Ad konkret bedømmelse vises det også til Rt-2015-188.

Tingrettens vurdering av forholdsmessighet er kort. Tingretten hviler seg i betydelig grad på sak 40397/12 hos EMD. Det anføres at dette innebærer feil i rettsanvendelsen og i bevisbedømmelsen. Saken gjaldt nettstedet Pirat Bay som hadde torrent-filer som aktiv hjalp til med med nedlastingen. Programvaren Popcorn Time er derimot ikke annet enn programvare. Hvorvidt bruk av Popcorn Time er ulovlig, er avhengig av hvilke katalogtjenester som er knyttet til programvaren. Nettstedet popcorn-time.no omtalte ulike Popcorn Time-versjoner med tilknytning til ulike katalogtjenester. Det var i popcorn-time.no ingen direktelenker til opphavsbeskyttet materiale. Om det er direktelenker eller ikke, er et vannskille i norsk rettspraksis innen sivilrett, se blant annet Rt-2005-41 som gjaldt direktelenker. Det var på popcorn-time.no mulig for å få tak i informasjon om hvordan man skulle gå fram for å finne programvaren Popcorn Time og finne innhold. Deretter måtte nettbrukeren selv aktiv søke opp, finne og anvende disse hjelpemidlene, herunder hvilket innhold vedkommende ønsket å se.

Lagmannsretten skriver i kjennelsen av 4.5.2017 at forholdsmessighetsvurderingen etter strl. §170a i herværende sak «i prinsippet er den samme» som etter ål. §56b, tredje ledd: «hensynet til opphavsmennene, omfanget av krenkelser, hensynet til den pålegget retter seg mot, og hensynet til informasjons- og ytringsfriheten er sentrale vurderingstemaer» i begge tilfellene. Momentene i forholdsmessighetsvurderingen etter ål. §56 er tilpasset Internett, opphavsrett og ytringsfrihet som er sentrale hensyn i angjeldende sak.

Ankende part vil redegjøre for momentene i forholdsmessighetsvurderingen i herværende sak. Først omtales omfanget av krenkelser, hensynet til rettighetshaver og straffverdigheten. Deretter knytter ankende part merknader til ytringsfriheten og hensynet til den beslaget retter seg mot. Ankende part gjorde det samme for tingretten. Hvilke feil i tingrettens rettsanvendelse og bevisbedømmelse som påberopes, påpekes underveis.

Krenkelsens omfang

Tingretten legger til grunn at «nettstedets medvirkning til ulovlig nedlasting har hatt skadevirkninger for opphavsmennenes rettigheter av et visst omfang». Tingretten baserer dette på omfattende bruk i Norge av programvaren Popcorn Time på gjerningstidspunktet, «at nettstedet var aktivt, brukervennlig og rettet seg særskilt mot det norske publikum».

Det anføres at resonnementet mangler påvisning av link mellom bruken av programvaren og de nevnte egenskapene ved nettstedet. Vurderingen skal være konkret. Det er ingen påvisning av at nettstedet forårsaker bruk av programvaren. Når denne linken mangler, foreligger det ikke et konkret bevis for at «nettstedets medvirkning til ulovlig nedlasting har hatt skadevirkninger [...] av et visst omfang». Dette er en hypotese, og bare det. Hypotesen er løsrevet fra den konkrete vurderingen retten skal foreta. Det foreligger feil i bevisbedømmelsen.

Høyesterett la i HR-2017-833 til grunn med henvisning til Prop.65 L (2012-2013) at etter ål. §56b, tredje ledd, bør det gis «tilgang til abonnentens identitet hvis overtredelsen er av et visst omfang». Til gjengjeld må det føres bevis for omfanget. Scanbox Entertainment A/S ble ikke hørt med at det «er umulig å føre bevis for krenkelsens omfang, og at selve den tilgjengeliggjøringen som brukerne står for, derfor bør få utslaggivende vekt i rettighetshavers favør» (avsnitt 35). Excipio GmbH hadde på vegne av Scanbox:

«avdekket krenkelser fra åtte datamaskiner i perioden 27. november til 1. desember 2015. Hele eller deler av filmen var lastet opp eller ned gjennom tilknytning til ett eller flere fildelingsnettverk som benytter såkalt BitTorrent-teknologi.» (avsnitt 2)

Lagmannsretten vektla at det ikke var «sannsynliggjort deling ut over den Excipio har avdekket». «[D]eltakelse i nettverk som benytter BitTorrent-protokollen, lett kan føre til vesentlig spredning av verket», men det var ikke avgjørende «så lenge det ikke er ført konkret bevis for «et visst omfang»» (avsnitt 42). Høyesterett mente dette var riktig anvendelse av §56b, tredje ledd.

Det anføres at i herværende sak er det ikke ført bevis for at popcorn-time.no har medført krenkelse av et visst omfang. Det foreligger kun en teoretisk utlegning om at popcorn-time.no har forårsaket bruk av Popcorn Time i strid med eneretten til tilgjengeliggjøring. Dette er ikke godt nok. Det anføres at allerede på dette punktet står ikke beslaget seg, jf. strpl. §170a. Når tingretten overser dette, skyldes det enten feil i bevisbedømmelsen eller rettsanvendelsen.

Hensynet til rettighetshaver

Så vidt ankende part forstår er fornærmet SF Norge AS og Nordisk Film Distribusjon AS. Utbredt ulovlig deling vil som tingretten påpeker, ha økonomisk skadevirkning på flere av deres filmer. Det er også holdepunkter for at det har vært slik ulovlig deling med programvaren Popcorn Time.

Det som derimot det ikke er ført bevis for, er at popcorn-time.no har forårsaket så mye som én deling. Forholdsmessighetsvurderingen skal som påpekt være konkret. Dersom rettighetshavers interesse ikke er berørt, kan heller ikke hensynet til rettighetshaver tildeles vekt i forholdsmessighetsvurderingen.

Hensynet til rettighetshaver ville derimot ha kommet inn med full tyngde dersom nettstedet popcorn-time.no hadde vært nordmenns portal til programvaren Popcorn Time og til filmer og tv-serier som ikke er i det fri. En slik anførsle mangler det imidlertid holdepunkter for.

Tingretten vedgår «at det er begrenset bevisførsel på dette punkt» på samme måte som for krenkelsens omfang. Det anføres at når tingretten likevel i den konkrete vurderingen fortsetter å argumentere for hensynet til rettighetshaver og at det er krenkelse av et visst omfang, utgjør dette enten feil i rettsanvendelsen eller i bevisbedømmelsen.


Det anføres at straffverdighet hører til i forholsmessighetsvurderingen etter strpl. §170a også for det tilfellet momentene i ål. §56b benyttes.

Som anført ovenfor foreligger det ingen dokumentasjon på krenkelsens omfang. Siden vurderingen skal være konkret, foreligger det ikke særlig skjerpende forhold, jf. ål. §54, tredje ledd. Det er for herværende sak om beslag av domenet popcorn-time.no irrelevant at annen aktivitet på Internett totalt sett kan ha påført rettighetshaverne betydelige tap.

Dersom det i det i hele tatt foreligger medvirkning til brudd på ål. §2, er strafferammen tre måneder, jf. §54. Det anføres at dette er den laveste øvre fengselsstraff i norsk rett. Det anføres videre at den laveste strafferammen i straffeloven er seks måneder. Lovgiver har således ansett straffverdigheten som lav. Det anføres at dette momentet er sentralt i herværende sak. Det anføres at tingrettens utelatelse av momentet i vurderingen utgjør en feil i rettsanvendelsen.

Hensynet til ytringfriheten

Det anføres at straks beslag rammer ytringsfriheten, forutsetter det domstolskontroll. Det anføres at Økokrim i forbindelse med begjæring om ransakelse også skulle ha begjært beslag i ytringsmateriell. Det vises til Ola Tellesbø «Forbudet mot sensur: Grunnlovens § 100 fjerde ledd» Jussens Venner 2008:312-343, se særskilt side 323 om hva Stortinget ble enige om og avsnitt 4.3. Det anføres at uteblivelsen av domstolskontroll i herværende sak er et moment mot at inngrepet er forholdsmessig.

Ankende part redegjører nå for hensynet til ytringsfriheten utenfor tilfellet forhåndssensur. Ytringsfriheten er i så måte berørt på to ulike vis. Det ene er tapet av informasjonen på popcorn-time.no. Det andre er det som betegnes som «the chilling effect».,/p>

Tapet av informasjonen på popcorn-time.no

Spørsmålet er hvilket vern informasjonen på popcorn-time.no har. Den relevante bestemmelsen er annet ledd i Grl. §100 som foreskriver at ingen «kan holdes rettslig ansvarlig for å ha meddelt [...] opplysninger [...] med mindre det lar seg forsvare holdt opp imot» demokratihensynet. Demokratihensynet omfatter «informasjonsfriheten, den offentlige meningsutveksling og offentlighet som kontroll», jf. NOU 1999:27, avsnitt 2.2.3. Samme sted står det at informasjonsfriheten sammen med offentlighetsprinsippet, nedfelt i §100 femte ledd, gjør «at relevant informasjon faktisk er tilgjengelig». Dette er også omtalt som beskyttelse av «det frie ordskiftet», jf. Rt-2012-536, avsnitt 38.

§100 annet ledd anviser med ordene «lar seg forsvare holdt opp imot» en avveiningsnorm. Det anføres at avveiningsnormen skal anvendes konkret. I Rt-2012-536 kom Høyesterett til at ytringsfriheten måtte vike fordi uttalelsen som var framsatt som sjikane, ikke nøt spesielt vern, mens på den andre siden var yrkesutøveren «avhengig av respekt fra gjester og publikum» (avsnitt 38).

Dersom informasjonen er politisk, nyter den et spesielt vern, jf. Grl. §100, tredje ledd. Tilsidesetting av et slikt vern forutsetter da at «særlig tungtveiende hensyn gjør det forsvarlig holdt opp imot» demokratihensynet. Som sjikane nyter i utgangspunktet heller ikke kommersielle ytringer dette spesielle vernet.

Annonsering på nettsiden popcorn-time.no indikerer økonomiske hensikter. På den andre siden var dette paret med informasjon og nyheter om Popcorn Time. Videre anføres at på grunn av kritikken som er reist mot bitTorrent-teknologien, inneholdt nettsiden viktig motinformasjon i det offentlige ordskiftet. Derfor vil NUUG overta domenet etter tilbakeføring. Det anføres at nettsiden ved dens ytringer nyter et vern hvor avveiningsnormen i tredje ledd må komme i betraktning. Ytringene nyter dermed et vern som kun kan sidesettes ut fra særlig tungtveiende hensyn. Det anføres at slike tungtveiende hensyn forefinnes ikke i herværende sak og ankemotparten har heller ikke anført slike hensyn.

Tingretten gikk ikke inn på dette og drøftet i stedet forholdet til EMK art. 10. I den forbindelsen viste tingretten til sak 40397/12 hos EMD som gjaldt Pirat Bay. Det anføres at når tingretten anvender sak 40397/12 i herværende sak, trekker tingretten implikasjonene av avgjørelsen for langt. Til dette kommer at EMD avviste saken basert på det som framstod som uomtvistelig. Det anføres at dersom innholdet i sak 40397/12 er overførbart, må det i tilfellet gjelde nettsteder som popcorntime-online.io og popcorn-time.to. Nettstedet popcorn-time.no er ikke sammenlignbart med disse. Det anføres at tingrettens anvendelse av sak 40397/12 er feil rettsanvendelse.

Tingretten verken behandler eller nevner forholdet til informasjonsfriheten, jf. Grl. §100, annet ledd. Dette framstår som en saksbehandlingsfeil forsterket ved at tingretten utelater å drøfte de negative innvirkningene på ytringsfriheten. Dersom denne feilen ikke har innvirket på kjennelsens innhold, er det fordi tingretten har vært ukjent med hvordan loven skal anvendes og trodd at EMDs 40397/12 avklarer rettstilstanden. Det foreligger således feil i rettsanvendelsen.

Det anføres at siden det i relasjon til nettstedet popcorn-time.no ikke foreligger særlig skjerpende forhold omkring mulige opphavsrettsbrudd, jf. ål. §54, tredje ledd, kan et beslag av nettstedet ikke forsvares opp mot demokratihensynet i Grl. §100, annet ledd.

«The Chilling Effect»

Dersom ankemotparten får aksept for sin framgangsmåte, vil registrarere ved neste korsvei ta forholdsregler og avstå registrering av domener som framstår som utrygge. I ytringfrihet-sammenheng omtales dette som «the chilling effect», se blant annet NOU 1999:27, avsnitt 2.3.8 og 4.3.2. I Goodwin mot UK (1996) kom EMD fram til at dersom pressen ikke hadde kildevern kunne kilder bli skremt fra å bistå pressen med å informere offentligheten om saker av offentlig interesse. Hensynet til pressefriheten i et demokratisk samfunn og den «chil ing effect» som et pålegg om å oppgi kilde kunne ha, var uforenlig med EMK art. 10 med mindre andre offentlige interesser var mer tungtveiende (avsnitt 39), hvilket det ikke var (avsnitt 46).

Det anføres at registrars rolle i etableringen av infrastrukturen på Internett kan sammenlignes med Internet service provider (ISP) som skaffer brukere tilgang til Internett. Registrarere bidrar til at nettsider finnes og er aksessbare med unike adresser slik mobiltelefonoperatører skaffer brukere mobilnumre. Det anføres at denne rollen ikke kan utøves på en måte som diskriminerer ut fra innholdet på nettsidene. Det motsatte ville i tilfellet ha tildelt registrarere en rolle som kontrollorgan for ytringer, uforenlig med ytringsfriheten. At registrar ikke skal føle ansvar for innholdet på deres registrerte domener er således grunnleggende. Mulig «chilling effect» av framgangsmåten omkring dette beslaget kommer således inn med betydelig vekt i herværende sak av hensynet til ytringfriheten.

Tingretten har heller ikke vurdert ankende parts anførsler om chilling effect, men altså lent seg alene på nevnte 40397/12. Det anføres at dette utgjør feil i rettsanvendelsen.

Hensynet til den pålegget retter seg mot

Det anføres at hensynet til den pålegget retter seg mot er avhengig av hvilket hensyn som kan forventes eller må forutsettes i den konkrete saken. Myndighetene kan ha behov for å føre tettere kontroll med visse typer virksomhet enn andre. Eksempelvis er adgangen til ransakelse lovfestet for steder med «virksomhet som krever tillatelse av politiet», jf. strpl. §193, annet alternativ. Derimot kan andre virksomheter ha et spesielt behov for vern mot myndighetenes kontroll slik som for kildevern i nevnte sak, Goodwin mot UK. Relevant i så måte er også Rt-2015-1286 som gjaldt inngrep og kildevern.

Hvilket hensyn kan forventes eller må forutsettes i herværende sak

Et nettsted som ikke kan betegnes som presse, vil i utgangspunktet ligge mellom disse ytterlighetene. En aktiv blogg kan betraktes som presse. Nettstedet popcorn-time.no gjør nødvendigvis ikke det, men har uansett et vern etter Grl. §100, annet ledd.

Det anføres at husransakelse av registrar på grunn av et innholdet på et domene forutsetter konkret mistanke mot registrar fordi ytringsfriheten blir berørt. Det anføres at registrar og dets styremedlemmer må ha et absolutt vern mot at innhold på deres registrerte domener medfører husransakelse dersom det ikke foreligger mistanke rettet mot dem. Under enhver omstendighet må det på grunn av ytringsfriheten stil es skjerpende vilkår for husransaking overfor registrar som tredjemann. At hensynet til den pålegget retter seg mot får ekstra vekt når ytringsfriheten er berørt, framgår blant av strpl. §197, annet ledd, annet punktum, som gjelder «ransaking av redaksjonslokale eller tilsvarende».

Siden ytringsfriheten også er indirekte berørt på grunn av «the chil ing effect» og at registrar skal utøve sin virksomhet ikke-diskriminativt, underbygger at hensynet til den pålegget retter seg mot må tillegges betydelig vekt i herværende sak.

Det anføres at hensynet til den pålegget rettet seg mot samlet sett er vesentlig i herværende sak. Med dette som utgangspunkt er det dags for å vurdere den konkrete tilsidesettingen av dette hensynet.

Den konkrete tilsidesettingen av hensynet til den pålegget rettet seg mot

Det er omfanget av inngrepet og hva som er beslaglagt, som gjør at herværende sak står for retten. Fare for ransaking på grunn av registrering av domener, er alt annet enn «mindre ulemper» (kjennelsens s. 13). Det er veldig ugreit for registrar å bli utsatt for det som best beskrives som politirassia - på grunn av innhold på ett enkelt domene som registrar har registrert for en større kunde, nærmere bestemt det renommerte, internasjonale selskapet Marcaria. Regnskapsføreren ble ransaket mens hun satt med kunde som forduftet under seansen. Hun fant dette svært belastende og vil ikke at hun som regnskapsfører skal bli gjort til gjenstand for ransakelser. Samtidig ble styrelederen ransaket i sitt hjem.

Ransaking på grunn av innhold på domener registrert for kunder er akkurat det som gjør at registrar innskrenker virksomheten med dertil økonomiske følger. Da dreier det seg ikke om ett domene, men titalls om ikke hundrevis av domener. Foruten økonomiske følger kan dette også gi «chilling effect». Ankende part bunner sin virksomhet i bulkregistrering på vegne av utenlandske selskaper og har til sammen 1800 domener i sin portefølje. Ankende part med underforeningene IMCASREG1, IMCASREG2, IMCASREG3 og videre opp til IMCASREG21 har registrert domener for utenlandske selskaper som ankende part ikke aner det framtidige innholdet på.

Når framgangsmåten ble så omfattende og inngripende som den ble, anføres at hensynet til den pålegget rettet seg mot ble kraftig tilsidesatt. Det anføres at skal begjærende part ha et reelt vern mot lignende framgangsmåter, må hensynet til den pålegget retter seg mot komme inn med full vekt i forholdsmessighetsvurderingen i herværende sak.

Tingretten overser ulempene til den pålegget rettet seg i mot. I stedet bagatelliserer tingretten hensynet med at ankende part «taper en årlig avgift på kr. 155 fra kunden Marcaria» (s. 13). Det anføres at dette utgjør feil i bevisbedømmelsen og i rettsanvendelsen.

Oppsummering av momentene i forholdsmessighetsvurderingen

Det anføres at hensynet til ytringsfriheten og til den pålegget retter seg mot kommer inn med full tyngde i herværende sak. Det som legges i den motsatte skålen, er krenkelsens omfang, hensynet til rettighetshaver og straffverdighet. Disse har svært liten tyngde i herværende sak. Beslaget av domenet popcorn-time.no er ikke forholdsmessig og dermed i strid med strpl. §170a. At det har gått 1,5 år siden beslaget trekker i samme retning. Likeledes at beslaget skjedde uten forutgående domstolskontroll, og det til tross for at det var en forutgående domstolsbehandling av ransakelsen.

Når tingretten har kommet til motsatt resultat skyldes det feil i rettsanvendelsen og i bevisbedømmelsen.


Med sedvanlig forbehold om nye anførsler og bevis nedlegges følgende



  1. IMC AS/IMCASREG8 gis innsyn i sakens dokumenter.
  2. For øvrig oppheves kjennelsen og saken vedrørende beslaget vises tilbake til tingretten.


  1. IMC AS/IMCASREG8 gis innsyn.
  2. Beslaget i domenet popcorn-time.no oppheves.

* * *

Ola Tellesbø

Så venter vi spent på fortsettelsen.

September 19, 2017 12:40 PM

July 31, 2017

Dag-Erling Smørgrav

Yes, all men

Since Susan Fowler blogged about her experience at Uber in February, the debate about sexism in tech has dominated IT and business news. Note that this debate is not new, and Fowler’s story isn’t all that different from many other stories we’ve heard before. It’s just that for once, finally, people were paying attention, and There Were Consequences. Then matters escalated in June with a string of revelations about sexism—not just discrimination, but full on sexual harassment.

Then came the apologies. Let me tell you about the apologies. The average response from a manager or venture capitalist accused of sexism went something like this:

I apologized unreservedly for my treatment of X. I realize now that my innocent jokes may have been misinterpreted. I’m actually a pretty nice guy, and X’s refusal to sleep with me had no impact whatsoever on my decision not to invest in her startup.

Then came the White Knights:

As a VC, I’m appalled to hear about my colleagues’ behavior towards women. I would like to reassure you all that Not All Men are like that. I myself am actually a pretty nice guy and completely innocent in all this.

Guys, it’s time to face the music. We have all been That Guy. We have all made sexist jokes, or laughed when others made them, or stood by silently while our male bosses, coworkers and colleagues ignored or patronized or belittled or humiliated women. We have all benefited from a system that eliminates close to 50% of our competition before the race has even started.

We are all complicit. We are all guilty.

So what do we do? Where do we go next?

First, take a deep breath, do a little soul-searching, and re-read that paragraph until any impulse, however minor, to say to yourself “OK, but not me” is gone. Yes, you too.

Next, if you’ve ever acted inappropriately towards a female coworker or friend or acquaintance, or stood by silently while others did, consider apologizing.

Third, vow to never do so again, and work hard to keep that vow. Respect the women around you as much as you respect the men. If someone around you acts or speaks inappropriately, speak up, even if there are no women present. Be proactive: make sure that women are given equal opportunity to join those career-building projects, and are included in those backstage chats where decisions are made. If you are hiring, seek out female candidates, keeping in mind that women have a tendency to underestimate their abilities and experience just as men have a tendency to overestimate them. If you are teaching, encourage and mentor female students. Reach out to them if they seem discouraged. Don’t wait until they drop out.

Open your eyes. Open your ears. Listen to the women around you. Believe them. Respect them. Be someone they can vent to and someone they can count on for support when push comes to shove.

You will slip up. When you do, apologize and vow to do better.

As a man, you are, and always have been, part of the problem. Accept it, and start being part of the solution.

by Dag-Erling Smørgrav atJuly 31, 2017 09:56 PM

April 19, 2017

Holder de ord

BETALT JOBB: Kategorisering av valgløfter

Interessert i politikk? Er du student som ønsker å tjene noen ekstra slanter ved siden av studiene?

Holder de ord er en partipolitisk uavhengig organisasjon med mål om å gjøre det enklere å følge med på norsk stortingspolitikk. Blant tjenestene vi tilbyr er en fullstendig løftedatabase som per i dag består av alle løftene fra de åtte stortingspartienes partiprogram for periodene 2009-2013 og 2013-2017.

I forbindelse med valgåret 2017 skal databasen oppdateres med løftene til alle partiene som er representert på Stortinget. Vårens siste landsmøte avsluttes 21. mai 2017. Da vil alle åtte parti på Stortinget ha vedtatt nye program for perioden 2017-2021. Totalt vil det erfaringsmessig da ha kommet om lag 7.000 nye løfter. Alle disse løftene skal inn i Holder de ords løftedatabase.


Dette er en manuell jobb. Hvert enkelt løfte i partiprogrammene kopieres over i et excel-ark og gis kategorier etter Stortingets kategorisystem. Noe omskrivningsarbeid må påregnes slik at løftene kan stå på egne ben, uten nødvendig kontekst. Dette importeres så til Holder de ords nettdatabase.

I tillegg innebærer jobben å grovsortere aktuelle løfter til bruk i Holder de ords chat bot. Egne retningslinjer for disse vil bli gitt. Denne delen av jobben vil ikke påvirke den totale arbeidsmengden.


Det inngås kontrakt hvor det avtales lønn per partiprogram. I utgangspunktet ser vi gjerne at den som påtar seg oppdraget kategoriserer alle eller flere enn to partiprogram. Ved for sen levering kan dagbøter påløpe.

Send en kort søknad som epost til Tiina Ruohonen og Hanna Tranås merket “Valgløfter” i emnefeltet.

by Hanna Tranås (hanna@holderdeord.no) atApril 19, 2017 07:57 PM

February 14, 2017

Holder de ord

Stortingsregjereri på høyt nivå

Fersk stortingsmelding viser at antall anmodningsvedtak har skutt i været. Meldingen viser en markant økning i antall saker som stortinget nå pålegger regjeringen å sette i verk.

Fredag 10. februar ble stortingsmelding nr. 17 (2016-2017) om anmodnings- og utredningsvedtak for forrige stortingssesjon overlevert Stortinget. Stortingsmeldingen er fremmet årlig siden 2000 og inneholder samtlige anmodningsvedtak som ble vedtatt av Stortinget i den foregående stortingssesjonen.

I stortingssesjonen 2015-2016 ble det fremmet 477 anmodningsvedtak, inkludert underpunktene som følger noen av anmodningsvedtakene. Dette er det høyeste antallet anmodningsvedtak som noen gang er fremmet i en stortingssesjon, og nesten dobbelt så mange som ble fremmet under den siste toppen i stortingssesjonen 2002-2003 (247 anmodningsvedtak). Den gang førte det høye antallet anmodningsvedtak til en debatt om stortingsregjereri.

Et høyt antall anmodningsvedtak kan gi utfordringer i ansvarsfordelingen mellom den lovgivende og utøvende makten. Disse utfordringene ble også diskutert ved årtusenskiftet, hvor Frøilandsutvalgets rapport fra 2002 inngikk i debatten om stortingsregjereri.


Stortinget utøver sin instruksjonsrett overfor regjeringen blant annet gjennom anmodningsvedtak. Disse begynner med formuleringen «Stortinget ber regjeringen…». Dette må ikke forveksles med en høflig anmodning, men er et konstitusjonelt bindende pålegg fra Stortinget til regjeringen. Ofte er det snakk om at Stortinget ber regjeringen om å utrede noe eller etablere et tiltak. Ofte kommer det også pålegg om å kontrollere noe. Mange ganger er anmodningene imidlertid av forvaltningsmessig karakter, noe som reiser spørsmål om anmodningsvedtak blir misbrukt.

Anmodningsvedtak er gyldige utover stortingsperioden. En minister som med overlegg ikke følger opp anmodningsvedtak kan stilles for riksrett og straffes med inntil fem års fengsel. Manglende oppfølging har aldri ført til riksrett, men det viser at det ligger sterke sanksjonsmuligheter bak Stortingets instruksjonsrett.

Etter 2003 sank antallet anmodningsvedtak betraktelig. Nedgangen ble godt hjulpet av at den rødgrønne regjeringen var en flertallsregjering. Fra 2005 til 2013 lå antallet anmodningsvedtak på mellom 7 og 33 per sesjon.

Anmodningsvedtak tar også opp mer av stortingets taletid. Holder de ord sitt referatsøk «Sagt i salen» viser også en kraftig økning i antallet innlegg som omtaler anmodningsvedtak. Bruken av «stortingsregjereri» har imidlertid ikke nådd det samme nivået som da begrepet sist var på moten ved årtusenskiftet.

Hvor ofte snakker Stortinget om anmodningsvedtak og stortingsregjereri?


Da Høyre og Fremskrittspartiet dannet mindretallsregjering i 2013 steg antallet anmodningsvedtak. Det var en spesielt kraftig økning fra i perioden 2014-16. Økningen må ses i sammenheng med det høye antallet asylsøkere som kom til Norge i 2015. Regjeringen inngikk flere asylforlik med Stortinget der oppfølgingspunktene defineres som anmodningsvedtak. Justis- og beredskapsdepartementet forvalter også da en tredjedel av anmodningsvedtakene som ble fattet i sesjonen 2015-2016. Av de om lag 168 anmodningsvedtakene fulgt opp av departementet sorterer 131 under innvandrings- og integreringsministeren.

Anmodningsvedtak - instruksjonsrett eller instruksjonsiver?

Sentrale utfordringer knyttet til antallet anmodningsvedtak er Stortingets tillit til regjeringen, kompetansen den lovgivende makten har til å fatte fornuftige vedtak, regjeringens uavhengighet og Stortingets kontrollfunksjon av regjeringen.

Da Stortinget i 2004 debatterte det høye antallet anmodningsvedtak uttalte stortingspresident Jørgen Kosmo (AP) at antallet har «tatt helt av» og dette dette «forrykker balansen mellom storting og regjering». Inge Lønning (H) argumenterte for at «det skal ikke utøves makt uten at den som utøver makten, også har ansvaret for maktutøvelsen», men der konsekvensen av «et økende antall mer og mindre forpliktende anmodningsvedtak er at dette grunnprinsippet pulveriseres».

Mange anmodningsvedtak vil si at Stortinget i stor grad instruerer regjeringen. Dersom regjeringen har Stortingets tillit kunne en tenke seg at det ikke er nødvendig å instruere regjeringen i en serie saker. I denne stortingsperioden finnes det imidlertid flere eksempler på at Stortinget instruerer regjeringen på saker som i utgangspunktet burde være uproblematiske å overlate til regjeringen.


Vedtak nr. 159, 9. desember 2015: Stortinget ber regjeringen følge opp at den forskriftspålagte plikta om alltid å vurdere barnets familie eller nære nettverk som mulig fosterheim ved omsorgsovertaking, blir praktisert.

En skulle i utgangspunktet tro at der er overflødig av Stortinget å instruere regjeringen til å følge opp vedtatt regelverk. Det samme gjelder løfter presentert i Sundvolden-erklæringen, regjeringens politiske plattform der blant annet karbonfangst- og lagring er omtalt:

«Regjeringen vil satse bredt på å utvikle en kostnadseffektiv teknologi for fangst og lagring av CO2, og ha en ambisjon om å realisere minst ett fullskala demonstrasjonsanlegg for CO2-fangst innen 2020.»

Likevel instruerer Stortinget regjeringen til å følge opp sin egen politiske plattform:

Vedtak nr. 685, 23. mai 2016: Stortinget ber regjeringen sikre realisering av minst ett CCS-anlegg for å bidra til at Norge når sitt nasjonale klimamål for 2020.

I et annet tilfelle instruerer Stortinget regjeringen på bevæpning av politiet i strid med løfter fra Sundvolden-erklæringen:

«Regjeringen vil åpne for generell bevæpning i de politidistrikter der politiet selv mener det er den beste løsningen.»

Vedtak nr 522, 5. mai 2015: Stortinget ber regjeringen opprettholde dagens bevæpningspraksis med et ubevæpnet politi. Dette påvirker ikke tillatelsen til bevæpning etter våpeninstruksen i særskilte situasjoner.

169 representanter vs. 21 000 byråkrater

Stortinget består av 169 representanter som er fordelt på 13 komiteer. Hver komité følger opp store samfunnsområder som, helt eller delvis, dekkes av flere departementer. I departementene og direktoratene er det 21 000 ansatte (2015). Der embetsverket består av fast ansatte som arbeider på spesialiserte felt over lengre tid, består Stortinget av representanter som velges for fire år av gangen og som ofte har skiftende ansvarsområder.

Gjennom embetsverket har forvaltningen en historikk på hvordan politikkområder styres og følges opp. Videre er forvaltningen underlagt forvaltningsloven med krav til utredning og habilitet som blant annet skal sikre rettferdig og transparent saksbehandling. Stortinget er ikke underlagt et slikt regelverk når den utøver sin instruksjonsrett.

Frøilandutvalget omtaler alle anmodningsvedtakene som ble vedtatt i sesjonene 1999-2000 og 2000-2001 som «en tankevekker»:

«En del av dem var rene anmodninger om videre utredning av saker, som Stortinget ønsket å få nærmere belyst. Men det gjenstår likevel en stor kategori, der Stortinget kan hevdes å ha grepet inn med bindende pålegg i enkeltsaker av til dels detaljert og forvaltningspreget karakter, på en måte som reiser spørsmål om dette er hensiktsmessig og forsvarlig.»

Dersom Stortinget i økende grad instruerer regjeringen i spesifikke saker øker sannsynligheten for at det fattes vedtak hvis implementering kan ha utilsiktede, negative konsekvenser. Løsrevne vedtak tilknyttet enkeltsaker gjør det også mer sannsynlig at Stortinget over tid vil fatte vedtak der tilsvarende saker håndteres på ulik måte.

Detaljstyring av regjeringen

Anmodningsvedtak medfører også ofte en kostnad som reduserer regjeringens handlingsrom. Regjeringen bør få anledning til å bestemme hvordan målene beskrevet i regjeringens forslag til statsbudsjett og komiteenes innstillinger skal oppfylles.


Helse- og omsorgsdepartementet forvalter en tilskuddsordning til aktivitet for eldre som skal «motvirke ensomhet, passivitet og sosial tilbaketrekning og å skape aktivitet, deltakelse, sosialt fellesskap og møteplasser». Stortinget bevilger midler til ordningen, men det er regjeringen som tildeler midler i henhold til tilskuddsregelverket og tilskuddets formål.

Denne balansen forrykkes når Stortinget griper inn i tildelingsprosessen:

Vedtak nr. 999, 17. juni 2016: Stortinget ber regjeringen sørge for at kriteriene for tilskuddsordningen Aktivitet for seniorer og eldre under kap. 761, post 21, endres slik at Tjukkasgjengen kan omfattes av ordningen.

Dette er et eksempel på et vedtak som legger konkrete føringer på hvordan regjeringen skal oppnå sine mål. Her gir Stortinget konkrete føringer på hvem som skal få midler over statsbudsjettet. Tilskuddsordningen skal nå dekke Tjukkasgjengen, i tillegg til andre tiltak.

Stortinget har i denne perioden også gått langt i å instruere regjeringen i spørsmål om intern samhandling.


Vedtak 707, 26. mai 2016: Stortinget ber regjeringen iverksette nødvendige tiltak for å sikre sømløs informasjonsflyt mellom forsvarsministeren, utenriksministeren og forsvarssjefen, slik at korrekt og oppdatert informasjon er tilgjengelig når slik informasjon er ønsket.

Mange av anmodningsvedtakene er utformet på en måte som gjør det vanskelig å avgjøre om de er fulgt opp eller ikke av regjeringen. I oppfølgingen av vedtak nr. 707 skriver Forsvarsdepartementet blant annet at de har etablert rutiner og møteserier mellom Forsvarsdepartementet og Utenriksdepartementet, der representanter for Forsvaret og Forsvarsmateriell deltar. Det er vanskelig for Stortinget å avgjøre om tiltakene er nok for å sikre sømløs informasjonsflyt.

Legitim instruksjonsmulighet

Stortingets mulighet til å instruere regjeringen, spesielt ved mindretallsregjeringer og i prinsipielle spørsmål, er legitim. Men det er bekymringsverdig med så mange anmodningsvedtak som vi nå ser. Utviklingen ble i 2002-03 beskrevet som dramatisk og eksplosiv, mens vi i dag har doblet antallet anmodninger. Mange og detaljerte anmodningsvedtak gir en rolleblanding mellom Stortinget og regjering.

Det er samtidig begrenset hvor mange saker stortingsrepresentantene kan behandle, vedta og følge opp på en tilstrekkelig måte. Det bør også være begrenset hvor mange anmodningsvedtak Stortinget pålegger forvaltningen å følge opp.

Bruk av flertallsmerknader i komiteinnstillinger kan være et alternativ til anmodningsvedtak siden oppfølgingen av disse alltid har vært en del av Stortingets kontrollarbeid. Flertallsinnstillinger vil heller ikke være bindende over stortingsperioden der innstillingen ble fattet. Siden årets stortingsmelding er tykkere enn noensinne bør alternative vedtaksformer for å fremme stortingsflertallets meninger vurderes.

by Herman Westrum Thorsen (herman.westrum.thorsen@gmail.com) atFebruary 14, 2017 08:57 AM

February 13, 2017

Mimes brønn

En innsynsbrønn full av kunnskap

Mimes brønn er en nettjeneste som hjelper deg med å be om innsyn i offentlig forvaltning i tråd med offentleglova og miljøinformasjonsloven. Tjenesten har et offentlig tilgjengelig arkiv over alle svar som er kommet på innsynsforespørsler, slik at det offentlige kan slippe å svare på de samme innsynshenvendelsene gang på gang. Du finner tjenesten på


I følge gammel nordisk mytologi voktes kunnskapens kilde av Mime og ligger under en av røttene til verdenstreet Yggdrasil. Å drikke av vannet i Mimes brønn ga så verdifull kunnskap og visdom at den unge guden Odin var villig til å gi et øye i pant og bli enøyd for å få lov til å drikke av den.

Nettstedet vedlikeholdes av foreningen NUUG og er spesielt godt egnet for politisk interesserte personer, organisasjoner og journalister. Tjenesten er basert på den britiske søstertjenesten WhatDoTheyKnow.com, som allerede har gitt innsyn som har resultert i dokumentarer og utallige presseoppslag. I følge mySociety for noen år siden gikk ca 20 % av innsynshenvendelsene til sentrale myndigheter via WhatDoTheyKnow. Vi i NUUG håper NUUGs tjeneste Mimes brønn kan være like nyttig for innbyggerne i Norge.

I helgen ble tjenesten oppdatert med mye ny funksjonalitet. Den nye utgaven fungerer bedre på små skjermer, og viser nå leveringsstatus for henvendelsene slik at innsender enklere kan sjekke at mottakers epostsystem har bekreftet mottak av innsynshenvendelsen. Tjenesten er satt opp av frivillige i foreningen NUUG på dugnad, og ble lansert sommeren 2015. Siden den gang har 121 brukere sendt inn mer enn 280 henvendelser om alt fra bryllupsutleie av Operaen og forhandlinger om bruk av Norges topp-DNS-domene .bv til journalføring av søknader om bostøtte, og nettstedet er en liten skattekiste av interessant og nyttig informasjon. NUUG har knyttet til seg jurister som kan bistå med å klage på manglende innsyn eller sviktende saksbehandling.

– «NUUGs Mimes brønn var uvurderlig da vi lyktes med å sikre at DNS-toppdomenet .bv fortsatt er på norske hender,» forteller Håkon Wium Lie.

Tjenesten dokumenterer svært sprikende praksis i håndtering av innsynshenvendelser, både når det gjelder responstid og innhold i svarene. De aller fleste håndteres raskt og korrekt, men det er i flere tilfeller gitt innsyn i dokumenter der ansvarlig etat i ettertid ønsker å trekke innsynet tilbake, og det er gitt innsyn der sladdingen har vært utført på en måte som ikke skjuler informasjonen som skal sladdes.

– «Offentlighetsloven er en bærebjelke for vårt demokrati. Den bryr seg ikke med hvem som ber om innsyn, eller hvorfor. Prosjektet Mimes brønn innebærer en materialisering av dette prinsippet, der hvem som helst kan be om innsyn og klage på avslag, og hvor dokumentasjon gjøres offentlig. Dette gjør Mimes Brønn til et av de mest spennende åpenhetsprosjektene jeg har sett i nyere tid.» forteller mannen som fikk åpnet opp eierskapsregisteret til skatteetaten, Vegard Venli.

Vi i foreningen NUUG håper Mimes brønn kan være et nyttig verktøy for å holde vårt demokrati ved like.

by Mimes Brønn atFebruary 13, 2017 02:07 PM

January 28, 2017

NUUG Foundation

Reisestipend for studenter - 2017

NUUG Foundation utlyser reisestipender for 2017. Søknader kan sendes inn til enhver tid.

January 28, 2017 12:57 PM

January 06, 2017

Espen Braastad

CentOS 7 root filesystem on tmpfs

Several years ago I wrote a series of posts on how to run EL6 with its root filesystem on tmpfs. This post is a continuation of that series, and explains step by step how to run CentOS 7 with its root filesystem in memory. It should apply to RHEL, Ubuntu, Debian and other Linux distributions as well. The post is a bit terse to focus on the concept, and several of the steps have potential for improvements.

The following is a screen recording from a host running CentOS 7 in tmpfs:


Build environment

A build host is needed to prepare the image to boot from. The build host should run CentOS 7 x86_64, and have the following packages installed:

yum install libvirt libguestfs-tools guestfish

Make sure the libvirt daemon is running:

systemctl start libvirtd

Create some directories that will be used later, however feel free to relocate these to somewhere else:

mkdir -p /work/initramfs/bin
mkdir -p /work/newroot
mkdir -p /work/result

Disk image

For simplicity reasons we’ll fetch our rootfs from a pre-built disk image, but it is possible to build a custom disk image using virt-manager. I expect that most people would like to create their own disk image from scratch, but this is outside the scope of this post.

Use virt-builder to download a pre-built CentOS 7.3 disk image and set the root password:

virt-builder centos-7.3 -o /work/disk.img --root-password password:changeme

Export the files from the disk image to one of the directories we created earlier:

guestfish --ro -a /work/disk.img -i copy-out / /work/newroot/

Clear fstab since it contains mount entries that no longer apply:

echo > /work/newroot/etc/fstab

SELinux will complain about incorrect disk label at boot, so let’s just disable it right away. Production environments should have SELinux enabled.

echo "SELINUX=disabled" > /work/newroot/etc/selinux/config

Disable clearing the screen on login failure to make it possible to read any error messages:

mkdir /work/newroot/etc/systemd/system/getty@.service.d
cat > /work/newroot/etc/systemd/system/getty@.service.d/noclear.conf << EOF


We’ll create our custom initramfs from scratch. The boot procedure will be, simply put:

  1. Fetch kernel and a custom initramfs.
  2. Execute kernel.
  3. Mount the initramfs as the temporary root filesystem (for the kernel).
  4. Execute /init (in the initramfs).
  5. Create a tmpfs mount point.
  6. Extract our CentOS 7 root filesystem to the tmpfs mount point.
  7. Execute switch_root to boot on the CentOS 7 root filesystem.

The initramfs will be based on BusyBox. Download a pre-built binary or compile it from source, put the binary in the initramfs/bin directory. In this post I’ll just download a pre-built binary:

wget -O /work/initramfs/bin/busybox https://www.busybox.net/downloads/binaries/1.26.1-defconfig-multiarch/busybox-x86_64

Make sure that busybox has the execute bit set:

chmod +x /work/initramfs/bin/busybox

Create the file /work/initramfs/init with the following contents:

#!/bin/busybox sh

# Dump to sh if something fails
error() {
	echo "Jumping into the shell..."
	setsid cttyhack sh

# Populate /bin with binaries from busybox
/bin/busybox --install /bin

mkdir -p /proc
mount -t proc proc /proc

mkdir -p /sys
mount -t sysfs sysfs /sys

mkdir -p /sys/dev
mkdir -p /var/run
mkdir -p /dev

mkdir -p /dev/pts
mount -t devpts devpts /dev/pts

# Populate /dev
echo /bin/mdev > /proc/sys/kernel/hotplug
mdev -s

mkdir -p /newroot
mount -t tmpfs -o size=1500m tmpfs /newroot || error

echo "Extracting rootfs... "
xz -d -c -f rootfs.tar.xz | tar -x -f - -C /newroot || error

mount --move /sys /newroot/sys
mount --move /proc /newroot/proc
mount --move /dev /newroot/dev

exec switch_root /newroot /sbin/init || error

Make sure it is executable:

chmod +x /work/initramfs/init

Create the root filesystem archive using tar. The following command also uses xz compression to reduce the final size of the archive (from approximately 1 GB to 270 MB):

cd /work/newroot
tar cJf /work/initramfs/rootfs.tar.xz .

Create initramfs.gz using:

cd /work/initramfs
find . -print0 | cpio --null -ov --format=newc | gzip -9 > /work/result/initramfs.gz

Copy the kernel directly from the root filesystem using:

cp /work/newroot/boot/vmlinuz-*x86_64 /work/result/vmlinuz


The /work/result directory now contains two files with file sizes similar to the following:

ls -lh /work/result/
total 277M
-rw-r--r-- 1 root root 272M Jan  6 23:42 initramfs.gz
-rwxr-xr-x 1 root root 5.2M Jan  6 23:42 vmlinuz

These files can be loaded directly in GRUB from disk, or using iPXE over HTTP using a script similar to:

kernel http://example.com/vmlinuz
initrd http://example.com/initramfs.gz

January 06, 2017 08:34 PM

November 12, 2016

Anders Einar Hilden

Perl Regexp Oneliners and UTF-8

For my project to find as many .no domains as possible, I needed a regexp for extracting valid domains. This task is made more fun by the inclusion of Norwegian and Sami characters in the set of valid characters.

In addition to [a-z0-9\-], valid dot-no domains can contain the Norwegian æ (ae), ø (o with stroke) and å (a with ring above) (Stargate, anyone?) and a number of Sami characters. ŧ (t with stroke), ç (c with cedilla) and ŋ (simply called “eng”) are some of my favourites.

The following code will print only the first match per line, and uses ŧ directly in the regexp.

echo "fooŧ.no baŧ.no" | perl -ne 'if(/([a-zŧ]{2,63}\.no)/ig) { print $1,"\n"; }'

If we replace if with while we will print any match found in the whole line.

echo "fooŧ.no baŧ.no" | perl -ne 'while(/([a-zŧ]{2,63}\.no)/ig) { print $1,"\n"; }'

Because I’m afraid the regexp (specifically the non-ASCII characters) may be mangled by being saved and moved between systems, I want to write the Norwegian and Sami characters using their Unicode code points. Perl has support for this using \x{<number>} (see perl unicode)

echo "fooŧ.no baŧ.no" | perl -CSD -ne 'while(/([a-z\x{167}]{2,63}\.no)/ig) { print $1,"\n"; }'

When using code points, I have to specify -CSD for the matching to work. I am not really sure why this is required. If you can explain, please comment or tell my by other means. As you can read in perlrun, -CSD specifies that STDIN, STDOUT, STDERR and all input and output streams should be treated as being UTF-8.

Another problem is that if this last solution is is fed invalid UTF-8, it will die fatally and stop processing input.

Malformed UTF-8 character (fatal) at -e line 1, <> line X.

To prevent this happening I currently sanitize my dirty input using iconv -f utf-8 -t utf-8 -c. If you have a better solution for this, Perl or otherwise, please tell me!.

A simple regexp would match the valid characters for a length between 2 and 63 followed by .no. However, I wanted only and all “domains under .no” as counted by Norid in their statistics. Norids definition of “domains under .no” are all the domains directly under .no, but also domains under category domains i.e. ohv.oslo.no and ola.priv.no. To get comparable results, I have to collect both *.no and *.<category domain>.no domains when scraping data.

The resulting “oneliner” I use is this…. It once was a oneliner, but with more than 10k characters in the regexp it was hard to manage. The resulting script builds up a regexp that is valid for all Norwegian domains using a list of valid category domains, all valid characters and other rules for .no domains.

November 12, 2016 10:00 PM

September 18, 2016

Dag-Erling Smørgrav

Not up to our usual standards

For a few years now, I’ve been working on and off on a set of libraries which collect cryptography- and security-related code I’ve written for other projects as well as functionality which is not already available under a permissive license, or where existing implementations do not meet my expectations of cleanliness, readability, portability and embeddability.

(Aside: the reasons why this has taken years, when I initially expected to publish the first release in the spring or summer of 2014, are too complex to explain here; I may write about them at a later date. Keywords are health, family and world events.)

Two of the major features of that collection are the OATH Authentication Methods (which includes the algorithm used by Google Authenticator and a number of commercial one-time code fobs) and the Common Platform Enumeration, part of the Security Content Automation Protocol. I implemented the former years ago for my employer, and it has languished in the OpenPAM repository since 2012. The latter, however, has proven particularly elusive and frustrating, to the point where it has existed for two years as merely a header file and a set of mostly empty functions, just to sketch out the API. I decided to have another go at it yesterday, and actually made quite a bit of progress, only to hit the wall again. And this morning, I realized why.

The CPE standard exists as a set of NIST Interagency reports: NISTIR 7695 (naming), NISTIR 7696 (name matching), NISTIR 7697 (dictionary) and NISTIR 7698 (applicability language). The one I’ve been struggling with is 7695—it is the foundation for the other three, so I can’t get started on them until I’m done with 7695.

It should have been a breeze. On the surface, the specification seems quite thorough: basic concepts, representations, conversion between representations (including pseudocode). You know the kind of specification that you can read through once, then sit down at the computer, start from the top, and code your way down to the bottom? RFC 4226 and RFC 6238, which describe OATH event-based and time-based one-time passwords respectively, are like that. NISTIR 7695 looks like it should be. But it isn’t. And I’ve been treating it like it was, with my nose so close to the code that I couldn’t see the big picture and realize that it is actually not very well written at all, and that the best way to implement it is to read it, understand it, and then set it aside before coding.

One sign that NISTIR 7695 is a bad specification is the pseudocode. It is common for specifications to describe algorithms, protocols and / or interfaces in the normative text and provide examples, pseudocode and / or a reference implementation (sometimes of dubious quality, as is the case for RFC 4226 and RFC 6238) as non-normative appendices. NISTIR 7695, however, eschews natural-language descriptions and includes pseudocode and examples in the normative text. By way of example, here is the description of the algorithm used to convert (“bind”, in their terminology) a well-formed name to a formatted string, in its entirety: Summary of algorithm

The procedure iterates over the eleven allowed attributes in a fixed order. Corresponding attribute values are obtained from the input WFN and conversions of logical values are applied. A result string is formed by concatenating the attribute values separated by colons.

This is followed by one page of pseudocode and two pages of examples. But the examples are far from exhaustive; as unit tests, they wouldn’t even cover all of the common path, let alone any of the error handling paths. And the pseudocode looks like it was written by someone who learned Pascal in college thirty years ago and hasn’t programmed since.

The description of the reverse operation, converting a formatted string to a well-formed name, is slightly better in some respects and much worse in others. There is more pseudocode, and the examples include one—one!—instance of invalid input… but the pseudocode includes two functions—about one third of the total—which consist almost entirely of comments describing what the functions should do, rather than actual code.

You think I’m joking? Here is one of them:

function get_comp_fs(fs,i)
  ;; Return the i’th field of the formatted string. If i=0,
  ;; return the string to the left of the first forward slash.
  ;; The colon is the field delimiter unless prefixed by a
  ;; backslash.
  ;; For example, given the formatted string:
  ;; cpe:2.3:a:foo:bar\:mumble:1.0:*:...
  ;; get_comp_fs(fs,0) = "cpe"
  ;; get_comp_fs(fs,1) = "2.3"
  ;; get_comp_fs(fs,2) = "a"
  ;; get_comp_fs(fs,3) = "foo"
  ;; get_comp_fs(fs,4) = "bar\:mumble"
  ;; get_comp_fs(fs,5) = "1.0"
  ;; etc.

This function shouldn’t even exist. It should just be a lookup in an associative array, or a call to an accessor if the pseudocode was object-oriented. So why does it exist? Because the main problem with NISTIR 7695, which I should have identified on my first read-through but stupidly didn’t, is that it assumes that implementations would use well-formed names—a textual representation of a CPE name—as their internal representation. The bind and unbind functions, which should be described in terms of how to format and parse URIs and formatted strings, are instead described in terms of how to convert to and from WFNs. I cannot overstate how wrong this is. A specification should never describe a particular internal representation, except in a non-normative reference implementation, because it prevents conforming implementations from choosing more efficient representations, or representations which are better suited to a particular language and environment, and because it leads to this sort of nonsense.

So, is the CPE naming specification salvageable? Well, it includes complete ABNF grammars for URIs and formatted strings, which is good, and a partial ABNF grammar for well-formed names, which is… less good, but fixable. It also explains the meanings of the different fields; it would be useless otherwise. But apart from that, and the boilerplate at the top and bottom, it should be completely rewritten, including the pseudocode and examples, which should reference fictional, rather than real, vendors and products. Here is how I would structure it (text in italic is carried over from the original):

  1. Introduction
    1.1. Purpose and scope
    1.2. Document structure
    1.3. Document conventions
    1.4. Relationship to existing specifications and standards
  2. Definitions and abbreviations
  3. Conformance
  4. CPE data model
    4.1 Required attributes
    4.2 Optional attributes
    4.3 Special attribute values
  5. Textual representations
    5.1. Well-formed name
    5.2. URI
    5.3. Formatted string
  6. API
    6.1. Creating and destroying names
    6.2. Setting and getting attributes
    6.3. Binding and unbinding
  7. Non-normative examples
    7.1. Valid and invalid attribute values
    7.2. Valid and invalid well-formed names
    7.3. Valid and invalid URIs
    7.4. Valid and invalid formatted strings
  8. Non-normative pseudo-code
  9. References
  10. Change log

I’m still going to implement CPE naming, but I’m going to implement it the way I think the standard should have been written, not the way it actually was written. Amusingly, the conformance chapter is so vague that I can do this and still claim conformance with the Terrible, Horrible, No Good, Very Bad specification. And it should only take a few hours.

By the way, if anybody from MITRE or NIST reads this and genuinely wants to improve the specification, I’ll be happy to help.

PS: possibly my favorite feature of NISTIR 7695, and additional proof that the authors are not programmers: the specification mandates that WFNs are UTF-8 strings, which are fine for storage and transmission but horrible to work with in memory. But in the next sentence, it notes that only characters with hexadecimal values between x00 and x7F may be used, and subsequent sections further restrict the set of allowable characters. In case you didn’t know, the normalized UTF-8 representation of a sequence of characters with hexadecimal values between x00 and x7F is identical, bit by bit, to the ASCII representation of the same sequence.

by Dag-Erling Smørgrav atSeptember 18, 2016 01:54 PM

August 24, 2016

Nicolai Langfeldt

The most important thing about Apache

The most important thing you should know about Apache, the web-server, is that if you feel stupid after trying to get something working on it - this is perfectly normal - and does not mean you are stupid.

Try NGiNX next time.  If it supports the thing you need.

by Nicolai Langfeldt (noreply@blogger.com) atAugust 24, 2016 08:26 PM

July 15, 2016

Mimes brønn

Hvem har drukket fra Mimes brønn?

Mimes brønn har nå vært oppe i rundt et år. Derfor vi tenkte det kunne være interessant å få en kortfattet statistikk om hvordan tjenesten er blitt brukt.

I begynnelsen av juli 2016 hadde Mimes brønn 71 registrerte brukere som hadde sendt ut 120 innsynshenvendelser, hvorav 62 (52%) var vellykkede, 19 (16%) delvis vellykket, 14 (12%) avslått, 10 (8%) fikk svar at organet ikke hadde informasjonen, og 12 henvendelser (10%; 6 fra 2016, 6 fra 2015) fortsatt var ubesvarte. Et fåtall (3) av hendvendelsene kunne ikke kategoriseres. Vi ser derfor at rundt to tredjedeler av henvendelsene var vellykkede, helt eller delvis. Det er bra!

Tiden det tar før organet først sender svar varierer mye, fra samme dag (noen henvendelser sendt til Utlendingsnemnda, Statens vegvesen, Økokrim, Mediatilsynet, Datatilsynet, Brønnøysundregistrene), opp til 6 måneder (Ballangen kommune) eller lenger (Stortinget, Olje- og energidepartementet, Justis- og beredskapsdepartementet, UDI – Utlendingsdirektoratet, og SSB har mottatt innsynshenvendelser som fortsatt er ubesvarte). Gjennomsnittstiden her var et par uker (med unntak av de 12 tilfellene der det ikke har kommet noe svar). Det følger av offentlighetsloven § 29 første ledd at henvendelser om innsyn i forvaltningens dokumenter skal besvares «uten ugrunnet opphold», noe som ifølge Sivilombudsmannen i de fleste tilfeller skal fortolkes som «samme dag eller i alle fall i løpet av 1-3 virkedager». Så her er det rom for forbedring.

Klageretten (offentleglova § 32) ble benyttet i 20 av innsynshenvendelsene. I de fleste (15; 75%) av tilfellene førte klagen til at henvendelsen ble vellykket. Gjennomsnittstiden for å få svar på klagen var en måned (med unntak av 2 tillfeller, klager sendt til Statens vegvesen og Ruter AS, der det ikke har kommet noe svar). Det er vel verdt å klage, og helt gratis! Sivilombudsmannen har uttalt at 2-3 uker ligger over det som er akseptabel saksbehandlingstid for klager.

Flest henvendelser var blitt sendt til Utenriksdepartementet (9), tett etterfulgt av Fredrikstad kommune og Brønnøysundregistrene. I alt ble henvendelser sendt til 60 offentlige myndigheter, hvorav 27 ble tilsendt to eller flere. Det står over 3700 myndigheter i databasen til Mimes brønn. De fleste av dem har dermed til gode å motta en innsynshenvendelse via tjenesten.

Når vi ser på hva slags informasjon folk har bedt om, ser vi et bredt spekter av interesser; alt fra kommunens parkeringsplasser, reiseregninger der statens satser for overnatting er oversteget, korrespondanse om asylmottak og forhandlinger om toppdomenet .bv, til dokumenter om Myanmar.

Myndighetene gjør alle mulige slags ting. Noe av det gjøres dårlig, noe gjør de bra. Jo mer vi finner ut om hvordan  myndighetene fungerer, jo større mulighet har vi til å foreslå forbedringer på det som fungerer dårlig… og applaudere det som  bra.  Er det noe du vil ha innsyn i, så er det bare å klikke på https://www.mimesbronn.no/ og så er du i gang 🙂

by Mimes Brønn atJuly 15, 2016 03:56 PM

June 01, 2016

Kevin Brubeck Unhammer

Maskinomsetjing vs NTNU-eksaminator

Twitter-brukaren @IngeborgSteine fekk nyleg ein del merksemd då ho tvitra eit bilete av nynorskutgåva av økonomieksamenen sin ved NTNU:

Dette var min økonomieksamen på "nynorsk". #nynorsk #noregsmållag #kvaialledagar https://t.co/RjCKSU2Fyg
Ingeborg Steine (@IngeborgSteine) May 30, 2016

Kreative nyvinningar som *kvisleis og alle dialektformene og arkaismane ville vore usannsynlege å få i ei maskinomsett utgåve, så då lurte eg på kor mykje betre/verre det hadde blitt om eksaminatoren rett og slett hadde brukt Apertium i staden? Ingeborg Steine var så hjelpsam at ho la ut bokmålsutgåva, så då får me prøva 🙂


Ingen kvisleis og fritt for tær og fyr, men det er heller ikkje perfekt: Visse ord manglar frå ordbøkene og får dermed feil bøying, teller blir tolka som substantiv, ein anna maskin har feil bøying på førsteordet (det mangla ein regel der) og at blir ein stad tolka som adverb (som fører til det forunderlege fragmentet det verta at anteke tilvarande). I tillegg blir språket gjenkjent som tatarisk av nettsida, så det var kanskje litt tung norsk? 🙂 Men desse feila er ikkje spesielt vanskelege å retta på – utviklingsutgåva av Apertium gir no:


Det er enno eit par småting som kunne vore retta, men det er allereie betre enn dei fleste eksamenane eg fekk utdelt ved UiO …

by k atJune 01, 2016 09:45 AM

April 02, 2016

Thomas Sødring

Choices made on the road to 0.1

You can drive yourself mad wondering if you made the right choice with regards to technology. This really is a difficult question to answer as you have to pick components that have longevity and that are in widespread use. The truth is that you just have to pick something and go with it. I think about popularity of libraries, how active development is etc before I make a choice but it’s not easy to just decide. Any component I use now will follow the project and code for a long time going forward.

This week I was wrestling with AngularJS and ReactJS. Basically it boils down to whether or not  I go with Google or Facebook. I picked up some cheap courses on Angular and that kinda made that decision. I’m not really that bothered by the GUI side of things at the moment, but I do need an administrative GUI and would like to have an idea how a proof-of-concept GUI would look. Given that this is a REST service, it will be possible to swap Angular out with whatever you want anyway. It is a very time consuming process trying to figure these things out.

The last month has been spent wondering how I should structure the project. If I get the foundation wrong, it will have a negative effect on the project.  Baeldung has an interesting project structure with a clean definition of modules and what should be within the modules. This quickly became the basis of my project structure. I kept coming across jhipster and after days of hassle (installing npm, bower, yo) getting it installed I managed to get an interesting project setup. What I learnt from the jhipster sample app was support for swagger, metrics, spring-security, angulaJS and yaml project configuration. I was initially unable to get the jhipster app to run so I have spent the time studying the code and structure and gradually copied elements over to my project. This has resulted in the nikita code base supporting swagger, the introduction of metrics support, and spring security  user configuration, all copied from  the jhipster sample application.

This approach has really saved me a lot of time and answered many questions about spring and spring-based applications. I have learnt so much from this approach. A plus with such an approach where I try to study best practices is that I hopefully will end up with a good project structure and robust code. A negative is that I’m learning as I go along. Ideally I’d sit down and figure everything out in advance but I think that’s the primary reason why it has been difficult to move this project forward over the last couple of years, I never had my own concrete project structure to work with and was unsure how to proceed.

I also switched coding from Eclipse to Eclipse STS to IntelliJ Idea.  I never seemed to be able to get things working nicely in Eclipse and STS. I always ended up with issues like it wasn’t possible to find   source code when debugging  or download sources and documentation didn’t work properly. I spent a lot of time on stackexchange but it really felt like a waste of time and I didn’t have an environment I felt comfortable and productive in. Idea has been a dream to work with. It just does things intuitively and the integration with git has allowed me to push code and changes quickly to githhub. I have never been so impressed with an IDE as I have been with Idea. It just seems to make sense.

I was also able to confirm that OData support is still in the draft version of Noark 5 v4 and will more than likely be in the final version. This complicates development of the REST-service significantly but I think I will solve this in the  codebase by supporting two apis, one with OData and one without. The reason for this is that OData support requires me to handle all incoming HTTP requests manually. To be honest I am unsure about the usefulness of  OData in a running installation, but if the standard specifies it then we simply will have to implement it. There is very little REST OData support in the java ecosystem, but there is something available that we can use.

Currently the code is very much a pre alpha version of v0.1. It  is mainly a working  project structure with the above mentioned libraries and  with the domain model copied in and the fonds object is accessible via a REST controller. Don’t expect the code to work until it hits the v0.1 mark as I am updating it continuously. You can check out the code from the github repository.

The post Choices made on the road to 0.1 appeared first on Arkivets rolle i en tjenesteorientert arkitektur.

by tsodring atApril 02, 2016 05:38 AM

April 01, 2016

Thomas Sødring

Current project structure

One of the main challenges with this project is that I am not in a position to work on it full time. In the last month I have probably spent 80 hours and half of that is coming from my own free time. So whatever time I do have has to be spent wisely. I have few days to thoroughly explore issues and threads of thoughts are split up over several days.

In the last month I have made some interesting progress. I have spent the time working on the project structure and have moved files around quite a lot.

Currently the project is a multi module maven project with the following modules

core-client is where most of the domain modelling of Noark 5 can be found. All persistence related objects are here, DTO’s etc.

core-common contains a lot of common functionality related to REST handling etc. This is code that could be reused in other Noark 5 REST related projects.

core-conversion will be a REST-service that can convert documents from a production format to an archive format. I will only implement integration to LibreOffice but it is easily imaginable to implement integration to MS Office. I haven’t started this yet.

core-extraction will be a standalone executable jar that can extract the contents of the core in accordance with the extraction rules. Currently a weak arkivstruktur.xml generator has been implemented and that’s just to show a proof-of-concept.

core-webapp is the actual web application that is a spring-boot application and starts up a REST service.

Another module that needs to be implemented will be core-postjournal that talks to the database and publishes postjournal  in various formats. Integration with altinn and digipost etc (core-dispatcher) all are obvious candidates for work, but currently the project needs a clear defined roadmap so these can all come later.

All the modules are encapsulated inside a parent module called nikita-noark5-core.

The post Current project structure appeared first on Arkivets rolle i en tjenesteorientert arkitektur.

by tsodring atApril 01, 2016 01:44 PM

December 16, 2015

NUUG Foundation

Reisestipend for studenter - 2016

NUUG Foundation utlyser reisestipender for 2016. Søknader kan sendes inn til enhver tid.

December 16, 2015 11:28 AM

October 18, 2015

Anders Nordby

Fighting spam with SpamAssassin, procmail and greylisting

On my private server we use a number of measures to stop and prevent spam from arriving in the users inboxes: - postgrey (greylisting) to delay arrival (hopefully block lists will be up to date in time to stop unwanted mail, also some senders do not retry) - SpamAssasin to block mails by scoring different aspects of the emails. Newer versions of it has URIBL (domain based, for links in the emails) in addtition to the tradional RBL (IP based) block lists. Which works better. I also created my own URIBL block list which you can use, dbl.fupp.net. - Procmail. For user on my server, I recommend this procmail rule: :0 * ^X-Spam-Status: Yes .crapbox/ It will sort emails that has a score indicating it is spam into mailbox "crapbox". - blocking unwanted and dangerous attachments, particularly for Windows users.

by Anders (noreply@blogger.com) atOctober 18, 2015 01:09 PM

April 23, 2015

Kevin Brubeck Unhammer


I førre innlegg i denne serien gjekk eg kort gjennom ymse metodar for å generera omsetjingskandidatar til tospråklege ordbøker; i dette innlegget skal eg gå litt meir inn på kandidatgenerering ved omsetjing av enkeltdelane av samansette ord. Me har som nemnt allereie ei ordbok mellom bokmål og nordsamisk, som me vil utvida til bokmål–lulesamisk og bokmål–sørsamisk. Og ordboka blei utvikla for å omsetja typisk «departementsspråk», så ho er full av lange, samansette ord. Og på samisk kan me setja saman ord omtrent på same måte som på norsk (i tillegg til ein haug med andre måtar, men det hoppar me glatt over for no). Dette bør me kunna utnytta, sånn at viss me veit kva «klage» er på lulesamisk, og me veit kva «frist» er, så har me iallfall éin fornuftig hypotese for kva «klagefrist» kan vera på lulesamisk 🙂

Orddeling er flott når du skal omsetja ordbøker. Særskrivingsfeil er flott når du vil smila litt.
«Ananássasuorma» jali «ananássa riŋŋgu»? Ij le buorre diehtet.

Altså kan me bruka dei få omsetjingane me allereie har mellom bokmål og lulesamisk/sørsamisk til å laga fleire omsetjingar, ved å omsetja deler av ord, og så setja dei saman igjen. Me har òg eit par omsetjingar liggande mellom nordsamisk og lulesamisk/sørsamisk, så me kan bruka same metoden der (og utnytta det at me har ei bokmål–nordsamisk-ordbok til å slutta riŋgen tilbake til bokmål).

Dekning og presisjon

Dessverre (i denne samanhengen) har me òg ofte fleire omsetjingar av kvart ord; i dei eksisterande bokmål–lulesamisk-ordbøkene me ser på (i stor grad basert på ordboka til Anders Kintel) står det at «klage» kan vera mellom anna gujdalvis, gujddim, luodjom eller kritihkka, medan «frist» kan vera  ájggemierre, giehtadaláduvvat, mierreduvvam eller ájggemærráj. Viss me tillet kvar venstredel å gå med kvar høgredel, får me 16 moglege kandidatar for dette eine ordet! Sannsynlegvis er ikkje meir enn ein eller to av dei brukande (og kanskje ikkje det ein gong). I snitt får me rundt dobbelt så mange kandidatar som kjeldeord med denne metoden. Så me bør finna metodar for å kutta ned på dårlege kandidatar.

Den komplementære utfordringa er å få god nok dekning. Av og til ser me at me ikkje har ei omsetjing av delane av ordet, sjølv om me har omsetjingar av ord med dei same delene i seg. Den setninga krev nok eit døme 🙂 Me vil gjerne ha ein kandidat for ordet «øyekatarr» på lulesamisk, altså samansetjinga «øye+katarr». Me har kanskje ei omsetjing for «øye» i materialet vårt, men ingenting for «katarr». Derimot står det at «blærekatarr» er gådtjåráhkkovuolssje. Så for å utvida dekninga, kan me i tillegg dela opp kjeldematerialet vårt i alle par av samansetjingsdelar; viss me veit at desse orda kan analyserast som «blære+katarr» og gådtjåráhkko+vuolssje, så kan det jo synast som at «blære» er gådtjåráhkko og «katarr» er vuolssje (og Giellatekno har heldigvis gode morfologiske analysatorar som fint deler opp slike ord på rette staden). Og dette gir ei god utviding av materialet – faktisk får me kandidatar for nesten dobbelt så mange av dei orda som me ønsker kandidatar for, viss me utvidar kjeldematerialet på denne måten. Men det har ei stor ulempe òg: Me får over dobbelt så mange lule-/sørsamiske kandidatar per bokmålsord (i snitt rundt fire kandidatar per kjeldeord).

Filtrering og rangering

Me vil innskrenka dei moglege kandidatane til dei som mest sannsynleg er gode. Den beste testen er å sjå om kandidaten finst i korpus, og då helst i same parallellstilte setning (dette er oftast ein bra kandidat). Viss ikkje, så kan me òg sjå på om kandidaten og kjeldeordet har liknande frekvensar, eller om kandidaten har frekvens i det heile.

Orddelingsomsetjinga foreslo tsavtshvierhtie for «virkemiddel», og der stod dei i ein parallellsetning òg:
<s xml:lang="sma" id="2060"/>Daesnie FoU akte vihkeles tsavtshvierhtie .
<s xml:lang="nob" id="2060"/>Her er FoU er et viktig virkemiddel .

– då er det nok eit godt ordpar.

Uheldigvis har me så lite tekstgrunnlag for lule-/sørsamisk at me fort går tom for kandidatar med frekvens i det heile. For sørsamisk har me t.d. berre kandidatar med korpustreff for rundt 10 % av orda me lagar kandidatar for.

Ein annan test, som fungerer på alle ord, er å sjå om det får analyse av dei morfologiske analysatorane våre; viss ikkje (og viss det i tillegg ikkje har korpustreff) er det oftast feil. Men dette fjernar berre rundt 1/4 av kandidatane; med den oppdelte ordboka vår (kor me òg har med par av delar av ord) har me enno i snitt rundt tre kandidatar per kjeldeord.

(Ein test som eg prøvde, men avslo, var filtrering basert på liknande ordlengd. Det verkar jo logisk at lange ord blir omsett til lange og korte til korte, men det finst mange gode unntak. I tillegg fjernar det alt for få dårlege kandidatar til at det ser ut til å vera verdt det.)

Det parallelle korpusmaterialet vårt er altfor lite, men når me skal generera kandidatar til ordbøker så er det jo ikkje parallelle setningar me prøver å predikera, men parallelle ord og ordbokspar. Og då er jo læringsgrunnlaget vårt eigentleg dei eksisterande ordbøkene våre … Derfor prøvde eg å sjå på kva for samansetjingsdelar som faktisk var brukt i dei tidlegare omsetjingane våre, og kva for par av delar som ofte opptredde i tidlegare omsetjingar, og kva for delar som sjeldan eller aldri gjorde det. Til dømes har den oppdelte ordboka vår for bokmål–lulesamisk desse para:

Her ser me at «løyve» anten kan vera loahpádus eller doajmmaloahpe – skal «taxiløyve» då vera táksiloahpádus eller táksidoajmmaloahpe? På bakgrunn av dette materialet bør me nok satsa på det første – sjølv om doajmmaloahpe står oppført, så er det berre loahpádus som opptrer i samansette ord.

Då kan me prøva å generera kandidatar for alle bokmålsorda i materialet vårt, både dei me eigentleg er ute etter å finna kandidatar for, og dei me allereie har omsetjingar for. Gå så gjennom dei genererte kandidatane for dei orda me allereie har omsetjingar for, og tel opp dei para av orddelar som genererte slike ord. Me har kanskje laga kandidatane barggo+loahpádus og barggo+dajmmaloahpe for «arbeids+løyve»; når me så går gjennom dei eksisterande omsetjingane og finn at «arbeidsløyve» stod i ordboka med omsetjinga barggoloahpádus, så aukar me frekvensen til paret «løyve»–loahpádus med éin, medan «løyve»–dajmmaloahpe blir verande null.

For no har berre filtrert ut dei kandidatane kor paret til anten første- eller andreledd hadde nullfrekvens. I følgje litt manuell evaluering frå ein lingvist er det omtrent berre dårlege ord som blir kasta ut, så det filteret ser ut til å fungera bra. På den andre sida blir berre rundt 10 % av kandidatane fjerna viss me berre hiv ut dei med nullfrekvens, så neste steg blir å bruka frekvensane til å få ei full rangering.

Viss alle ord kunne delast i nøyaktig to delar, så ville det kanskje vore nok å telja opp par av delar og enkeltdelar for å estimera sannsyn, altså f(s,t)/f(s).  Men av og til kan ord delast på fleire måtar, til dømes kan me sjå på «sommersiidastyre» som «sommer+siidastyre» eller «sommersiida+styre» (eg har valt å halda meg til todelingar av ord, for å unngå for mange alternative kandidatar). Viss omsetjinga er giessesijddastivrra, med analysane giesse+sijddastivrra eller giessesijdda+stivrra, så har me ikkje utan vidare nokon grunn til å velja den eine over den andre (vel, me har lengd i dette tilfellet, men det gjeld ikkje i alle slike døme, og me kan ha par av analysar som er 2–3 eller 3–2). Då kan me heller ikkje seia kva for par av orddelar (s,t) me skal auka når me ser «sommersiidastyre»–giessesijddastivrra i treningsmaterialet. Men viss me i tillegg ser «styre»–stivvra ein annan stad, så har me plutseleg eit grunnlag til å ta ei avgjerd. Metodar som Expectation Maximization kan kombinera relaterte frekvensar på denne måten for å finna fram til gode estimat, men eg har ikkje komme så langt at eg har fått implementert dette enno.

by k atApril 23, 2015 06:11 PM

April 14, 2015

NUUG events video archive


April 14, 2015 11:13 AM

February 12, 2015

Salve J. Nilsen

On Bandwagonbuilders and Bandwagoneers

<Farnsworth>Good news, everyone!</Farnsworth>

The League of Bandwagonbuilders have spoken – Perl 6 is likely to be “production ready” sometime in 2015! This means it’s time for the Bandwagoneers to start preparing.

Bandwagoneer – that’s you and me, although you may call yourself something different. Perl Monger. Perl Enthusiast. Or just someone who has realized that all volunteer-based Open Source communities need people who care about making stuff happen in meatspace.

At Oslo.pm (I’m a board member there), we’re doing exactly that. We’re Bandwagoneers, spending some of our own valuable time showing others where the cool stuff is, and showing them how to get it. Here’s some of what we’re up to:

Also worth mentioning; a few weeks ago we also had an introduction to Perl 6’s Foreign Function Interface (called NativeCall), courtesy Arne SkjĂŚrholt. It was quite useful, and I hear Arne’s happy to accept invitations from Perl Monger groups to come visit and give the same presentation. :)

Enough bragging, already!

Being a Bandwagoneer means it’s your task to make stuff happen. There are many ways to do it, and I hope you can find some inspiration in what Oslo.pm is doing. Maybe get in touch with some of the Bandwagonbuilders in #perl6 on irc.freenode.org, and ask if anyone there would like to visit your group? I think that would be cool.

Get cracking! đŸ˜€

by sjn atFebruary 12, 2015 11:20 PM

January 06, 2015


NSA-proof SSH

ssh-pictureOne of the biggest takeaways from 31C3 and the most recent Snowden-leaked NSA documents is that a lot of SSH stuff is .. broken.

I’m not surprised, but then again I never am when it comes to this paranoia stuff. However, I do run a ton of SSH in production and know a lot of people that do. Are we all fucked? Well, almost, but not really.

Unfortunately most of what Stribika writes about the “Secure Secure Shell” doesn’t work for old production versions of SSH. The cliff notes for us real-world people, who will realistically be running SSH 5.9p1 for years is hidden in the bettercrypto.org repo.

Edit your /etc/ssh/sshd_config:

Ciphers aes256-ctr,aes192-ctr,aes128-ctr
MACs hmac-sha2-512,hmac-sha2-256,hmac-ripemd160
KexAlgorithms diffie-hellman-group-exchange-sha256

Basically the nice and forward secure aes-*-gcm chacha20-poly1305 ciphers, the curve25519-sha256 Kex algorithm and Encrypt-Then-MAC message authentication modes are not available to those of us stuck in the early 2000s. That’s right, provably NSA-proof stuff not supported. Upgrading at this point makes sense.

Still, we can harden SSH, so go into /etc/ssh/moduli and delete all the moduli that have 5th column < 2048, and disable ECDSA host keys:

cd /etc/ssh
mkdir -p broken
mv moduli ssh_host_dsa_key* ssh_host_ecdsa_key* ssh_host_key* broken
awk '{ if ($5 > 2048){ print } }' broken/moduli > moduli
# create broken links to force SSH not to regenerate broken keys
ln -s ssh_host_ecdsa_key ssh_host_ecdsa_key
ln -s ssh_host_dsa_key ssh_host_dsa_key
ln -s ssh_host_key ssh_host_key

Your clients, which hopefully have more recent versions of SSH, could have the following settings in /etc/ssh/ssh_config or .ssh/config:

Host all-old-servers

    Ciphers aes256-gcm@openssh.com,aes128-gcm@openssh.com,chacha20-poly1305@openssh.com,aes256-ctr,aes192-ctr,aes128-ctr
    MACs hmac-sha2-512-etm@openssh.com,hmac-sha2-256-etm@openssh.com,hmac-ripemd160-etm@openssh.com,umac-128-etm@openssh.com,hmac-sha2-512,hmac-ripemd160
    KexAlgorithms curve25519-sha256@libssh.org,diffie-hellman-group-exchange-sha256

Note: Sadly, the -ctr ciphers do not provide forward security and hmac-ripemd160 isn’t the strongest MAC. But if you disable these, there are plenty of places you won’t be able to connect to. Upgrade your servers to get rid of these poor auth methods!

Handily, I have made a little script to do all this and more, which you can find in my Gone distribution.

There, done.

sshh obama

Updated Jan 6th to highlight the problems of not upgrading SSH.
Updated Jan 22nd to note CTR mode isn’t any worse.
Go learn about COMSEC if you didn’t get trolled by the title.

by kacper atJanuary 06, 2015 04:33 PM

December 08, 2014


sound sound


Recently I been doing some video editing.. less editing than tweaking my system tho.
If you want your jack output to speak with Kdenlive, a most excellent video editing suite,
and output audio in a nice way without choppyness and popping, which I promise you is not nice,
you’ll want to pipe it through pulseaudio because the alsa to jack stuff doesn’t do well with phonom, at least not on this convoluted setup.

Remember, to get that setup to work, ALSA pipes to jack with the pcm.jack { type jack .. thing, and remove the alsa to pulseaudio stupidity at /usr/share/alsa/alsa.conf.d/50-pulseaudio.conf

So, once that’s in place, it won’t play even though Pulse found your Jack because your clients are defaulting out on some ALSA device… this is when you change /etc/pulse/client.conf and set default-sink = jack_out.

by kacper atDecember 08, 2014 12:18 AM

November 18, 2014

Anders Einar Hilden

Changing the Subnet Mask in Vmware Workstation on Debian Jessie

I’m currently attending SANS SEC504: Hacker Tools, Techniques, Exploits and Incident Handling in London. For some of the labs in the course we need machines on the IPs and with a subnet mask of

Changing the Subnet Mask for the NAT or host-only networks in VMware Workstation seems like such a easy thing to do. According to VMware it should be as easy as opening the Virtual Network Editor and “type a new value in the Subnet mask text box”.

Oh wait … I can’t change it. The field for subnet mask in the Virtual Network Editor is not editable.

VMware Virtual Network Editor: the field for subnet mask is not editable

Let’s keep googling - plenty matches, but everyone keeps insisting it can be changed in the GUI, or mixes the subnet mask with the subnet IP. Some posts blame permission, but since the Virtual Network Editor always runs as root, that’s not the problem. There are no listings for the vmnets in /etc/network/interfaces or /etc/network/interfaces.d/ and changing the subnet mask in NetworkManager does nothing.

After a lot of thinking (and just after I checked /etc/network/interfaces ) I found /etc/vmware/networking - BINGO! This looks like just the file we were looking for.

Before editing the file we should stop any vmware-related services that might use these files.

$ sudo service vm<TAB>
vmamqpd vmware vmware-USBArbitrator vmware-workstation-server

I’m not sure witch of these services use the files we are editing, so we’ll stop them all

$ sudo service vmamqpd
$ sudo service vmware
$ sudo service vmware-USBArbitrator
$ sudo service vmware-workstation-server

For the SANS course I have set up a new host-only network vmnet2. Since we are using static IPs, and will be running malware on these systems, I have disabled DHCP and not connected a host virtual adapter. The shared folder option Map as a network drive in Windows guests still work, don’t ask me how. Below is the configuration for vmnet2 with a subnet mask of

answer VNET_2_DHCP no
answer VNET_2_DHCP_CFG_HASH E9892EF1006EBB5D4996DF1A377B10EB0D542B94

Success! (but continue reading, we update the DHCP configuration below the picture)

VMware Virtual Network Editor: the uneditable field contains the subnet mask we wanted

VMware stores DHCP config and leases in /etc/vmware/vmnet<NUM>/dhcpd/. If we have changed the subnet IP, subnet mask, or turned on or off DHCP, these files need to be updated. The configfile contains autogenerated information surronded by “DO NOT MODIFY SECTION”, so we should probably not edit it manually.

If we open VMware Virtual Network Editor (sudo vmware-netcfg), change a setting (e.g. the subnet IP from to, save, and then change it back again, VMware will update the files for us.

November 18, 2014 02:50 PM

January 29, 2014

Nicolai Langfeldt

git log -p splitting

At work we have two related code bases.  Recently one of them received a lot of loving, and the other needed the same treatment to work better with new Perl and modules. The one ha gotten several hundred patches, and browsing that many and cherrypicking them got tiresome.  It was better for me to split the whole log into separate patches and review and apply one by one and then moving the "done" patches to a different directory.

Here, the small hack to split "git log -p" into one patch pr. file:


awk 'BEGIN { FN=0; }
     /^commit / { FN++; }
     { print $0 >> FN }' $1

by Nicolai Langfeldt (noreply@blogger.com) atJanuary 29, 2014 09:40 AM

February 24, 2013

Bjørn Venn

Chromebook; a real cloud computer – but will it work in the clouds?

Lyst på én? Den er ikke i salg i Norge enda, men du kan kjøpe den på Amazon. Les her hvordan jeg kjøpte min på Amazon (bla litt nedover på siden). Med norsk moms, levert til Rimi-butikken 100 meter fra der jeg bor, kom den på 1.850 kroner. Det er den så absolutt verdt:)

by Bjorn Venn atFebruary 24, 2013 07:34 PM

February 22, 2013

Bjørn Venn

Hvem klarer å skaffe meg en slik før påske?

Chromebook pixel

Den nye Chromebook-en til Google, Chromebook Pixel. Foreløbig kun i salg i USA og UK via Google Play og BestBuy.

Verden er urettferdig:)

by Bjorn Venn atFebruary 22, 2013 12:44 PM

January 07, 2013

NUUG events video archive

Utfordringer innen identitetshåndtering og autentisering

Dag-Erling Smørgrav påpeker hvordan Unix har et autentiserings-paradigme som ikke har endret seg på 40 år, mens det har skjedd store utviklinger de siste årene på denne fronten.

January 07, 2013 10:00 PM

May 29, 2012

Salve J. Nilsen

Inviting to the Moving to Moose Hackathon 2012

Oslo Perl Mongers are organizing a hackathon for everyone who would like to dive deep into the details of Moose! We have invited the #p5-mop crowd to work on getting a proper Meta Object Protocol into Perl core, and we’ve invited the #perlrdf crowd to come and convert the Perl RDF toolchain to Moose.

You’re welcome to join us!

Special rebate for members of the Perl and CPAN communities

If you’re working on a project that is considering on moving to Moose then you’re especially welcome! We have a set of promo codes you can use when signing up for the hackathon. Please get in touch with us (or some of the existing participants) to get your promo code and a significant rebate!

Commercial tickets available

Would you like to support the hackathon, but don’t have access to a sponsorship budget? Does your company plan on using Moose, and sees the value of having excellent contacts in the open source communities around this technology? For you, we have a limited amount of commercial tickets. Please check out the hackathon participation page for details.

Sponsorship opportunities

The hackathon is already well sponsored, but there is room for more! If you want to support the us, please contact the organizers as soon as possible!

Who can come?

In short: Everyone who cares about Moose and object-oriented programming in Perl! We’re trying to make the Perl community better by hacking on the stuff that makes the biggest difference (at least in our eyes ;)). If you agree, you’re very welcome to join us! Check out the event site for details, and get in touch with us on IRC if you’re interested.

And finally, keep in mind Oslo.pm’s 2-point plan:

  1. Do something cool
  2. Tell about it!

See you in Stavanger?

by sjn atMay 29, 2012 02:44 PM

October 31, 2011

Anders Nordby

Taile wtmp-logg i 64-bit Linux med Perl?

Jeg liker å la ting skje hendelsesbasert, og har i den forbindelse lagd et script for å rsynce innhold etter opplasting med FTP. Jeg tailer da wtmp-loggen med Perl, og starter sync når brukeren er eller har blitt logget ut (kort idle timeout). Å taile wtmp i FreeBSD var noe jeg for lenge siden fant et fungerende eksempel på nettet:
$typedef = 'A8 A16 A16 L'; $sizeof = length pack($typedef, () ); while ( read(WTMP, $buffer, $sizeof) == $sizeof ) { ($line, $user, $host, $time) = unpack($typedef, $buffer); # Gjør hva du vil med disse verdiene her }
FreeBSD bruker altså bare verdiene line (ut_line), user (ut_name), host (ut_host) og time (ut_time), jfr. utmp.h. Linux (x64, hvem bryr seg om 32-bit?) derimot, lagrer en hel del mer i wtmp-loggen, og etter en del Googling, prøving/feiling og kikking i bits/utmp.h kom jeg frem til:
$typedef = "s x2 i A32 A4 A32 A256 s2 l i2 i4 A20"; $sizeof = length pack($typedef, () ); while ( read(WTMP, $buffer, $sizeof) == $sizeof ) { ($type, $pid, $line, $id, $user, $host, $term, $exit, $session, $sec, $usec, $addr, $unused) = unpack($typedef, $buffer); # Gjør hva du vil med disse verdiene her }
Som bare funker, flott altså. Da ser jeg i sanntid brukere som logger på og av, og kan ta handlinger basert på dette.

by Anders (noreply@blogger.com) atOctober 31, 2011 07:37 PM

A complete feed is available in any of your favourite syndication formats linked by the buttons below.

[RSS 1.0 Feed] [RSS 2.0 Feed] [Atom Feed] [FOAF Subscriptions] [OPML Subscriptions]