Giter VIP home page Giter VIP logo

dowse's Introduction

Dowse logo

A digital rod for local area network rabdomancy

software by Dyne.org

Updates: http://dowse.eu

Whitepaper: https://files.dyne.org/dowse/dowse_whitepaper.pdf

Build Status

Dowse project stats

Introduction

Dowse is a transparent proxy facilitating the awareness of ingoing and outgoing connections, from, to, and within a local area network.

Dowse provides a central point of soft control for all local traffic: from ARP traffic (layer 2) to TCP/IP (layers 3 and 4) as well as application space, by chaining a firewall setup to a trasparent proxy setup. A core feature for Dowse is that of hiding all the complexity of such a setup.

Dowse is also a highly extensible platform: interoperability between modules is available using Socks4/5, UNIX pipes, local TCP/IP sockets and port redirection, conforming to specific daemon implementations. At the core of Dowse is a very portable shell script codebase implementing a modular plugin architecture that isolates processes and supports any executable written in any language: Shell, C, Perl, Python etc.

Dowse is an ongoing development effort rapidly gaining momentum for its simplicity and usefulness. Here a recent backstage video:

The making of Dowse

Features

Dowse takes control of a LAN by becoming its DHCP server and thereby assigning itself as main gateway and DNS server for all clients. It keeps tracks of assigned leases by MAC Address. ISC DHCP and DNSCRYPT-PROXY are used as daemons.

All network traffic is passed through NAT rules for masquerading. HTTP traffic (TCP port 80) can be filtered through a transparent proxy using an application layer chain of Squid2 and Privoxy.

All IP traffic is filtered using configurable blocklists to keep out malware, spyware and known bad peers, using Peerguardian2 and Iptables.

All DNS traffic (UDP port 53) is filtered through a DNSCRYPT-PROXY plugin encrypting all traffic (AES/SHA256) and analysed using domain-list to render a graphical representation of traffic.

Privilege escalation is managed using https://sup.dyne.org

Installation

Installation and activation takes a few steps, only make install needs root:

  1. Download dowse on a GNU/Linux box (we use Devuan Ascii)
git clone https://github.com/dyne/dowse dowse-src
cd dowse-src && git submodule update --init --recursive
  1. Install all requirements, here below the list of packages. To avoid installing more than needed, consider using the --no-install-recommends flag in APT or similar for other package managers.
zsh iptables build-essential autoconf automake libhiredis-dev libkmod-dev libjemalloc-dev pkg-config libtool libltdl-dev libsodium-dev libldns-dev libnetfilter-queue-dev uuid-dev zlib1g-dev cmake liblo-dev nmap python3-flask python3-redis xmlstarlet wget libcap2-bin
  1. Choose which user should be running dowse: your own is fine, or eventually create one just for that to separate filesystem permissions.

  2. As the user of choice, run make inside the dowse source

  3. As root, run make install

  4. If necessary edit the files in the /etc/dowse folder, especially settings where it should be indicated the address for the local network you like to create.

  5. As the dowse user of choice and inside the source, fire up the startup script ./start.sh

Dowse is now running with a web interface on port 80.

To interact with dowse there is also a console with commands prefixed with dowse- (tab completion available). To enter it run zsh without extensions and source the main script: first type zsh -f and press enter, then type source /usr/local/dowse/zshrc and press enter.

If you like the dowse user to have an interactive console every time it logs in, then do ln -s /usr/local/dowse/zshrc $HOME/.zshrc.

If all went well now one should be able to connect any device to the internet as you did before, via Dowse.

Embedded ARM devices

Using https://www.devuan.org just compile and install Dowse following the procedure above. Images are available for a several popular ARM devices including RaspberryPI2 and 3, BananaPI, Cubieboard etc.

Starting Dowse

Here below an example start script launching all services in Dowse. Some can be commented / expunged ad-hoc depending from use cases, since the only vital functions are redis-server, dhcpd and dnscrypt-proxy.

#/usr/bin/env zsh

source /etc/dowse/settings
source /usr/local/dowse/zshrc

    notice "Starting Dowse"

    # start the redis daemon (core k/v service)
    start redis-server

	notice "Starting all daemons in Dowse"

    # launch the dhcp daemon
    start dhcpd

    # start the dns encrypted tunneling
    start dnscrypt-proxy

	# start the mqtt/websocket hub
	start mosquitto

    # netdata dashboard for the technical status
    start netdata

	# nodejs/node-red
	start node-red

	# start the cronjob handler (with resolution to seconds)
	start seccrond

    notice "Dowse succesfully started"

}

Adding the following line one can set up an open network, what we call it "party mode":

echo "set party-mode ON" | redis-cli

As a good practice, such a script can be launched from /etc/rc.local for user dowse using setuidgid from the daemontools package.

The next is an example on how to stop dowse, for instance from a stop.sh script:

#/usr/bin/env zsh

source /usr/local/dowse/zshrc

	notice "Stopping all daemons in Dowse"

	stop seccrond

	stop mosquitto

	# stop nodejs/node-red
	stop node-red

    # stop the dashboard
    stop netdata

    # stop the dns crypto tunnel
    stop dnscrypt-proxy

    # stop the dhcp server
    stop dhcpd

    # remove the layer 3 firewall rules
    iptables-snat-off
    iptables-stop

    # restore backup if present
    # [[ -r /etc/resolv.conf.dowse-backup ]] &&  {
    #     mv /etc/resolv.conf.dowse-backup /etc/resolv.conf
    # }

    stop redis-server

    notice "Dowse has stopped running."

The scripts above are found in dowse source as start.sh and stop.sh and can be customised and called from the system at boot. It is also possible to run an interactive console with completion where dowse commands are available using the console.sh script. Once in the console all the above start/stop commands and even more internals will be available to be launched interactively.

Visualization

The DNS visualization is produced in a custom format which can be easily processed by gource. This is the best way to "see dowse running": if you are running it locally, then install gource and do:

dowse-to-gource | gource --log-format custom -

or from remote:

ssh [email protected] -- dowse-to-gource | gource --log-format custom -

Sidenote: dowse-to-gource must be in the user's $PATH. To achieve this, as mentioned above, you can change the user's shell to zsh and do: ln -sf /usr/local/dowse/zshrc $HOME/.zshrc.

This will live render all the DNS activity occurring on your computer or local network, with the sort of animation that is also showcased on our website.

One can also experiment with gource arguments and render all the output of dowse-to-gource into a video file.

Experimentation

Open Sound Control (OSC) messaging is implemented to interface low-latency devices that are running on the same network. To start it one must know the IP address of the device, then do:

dowse-to-osc osc.udp://10.0.0.2:999

This will start sending OSC messages over UDP to IP 10.0.0.2 port 999

Development

The main development repository is on https://github.com/dyne/dowse

Inside the ops directory an Ansible recipe is found along a ready to use Vagrant configuration to build two virtual machines (leader and client) that simulate a LAN to do further testing of Dowse.

cd ops
vagrant up

Plus the usual vagrant commands. The devops in Dowse is based on http://Devuan.org and will run two virtual machines connected to each other, one "leader" running Dowse and serving DHCP, one "client" connected to it and to the Internet via the leader.

Help with development is welcome, manuals on how to write new modules and daemons are in the making and there is a sister project to categorize all domains used by Internet's conglomerates which also welcomes contributions: https://github.com/dyne/domain-list

Disclaimer

Dowse development is supported by: NLNET foundation (2015) SIDNfonds (2015-2016)

Dowse is Copyright (C) 2012-2017 by the Dyne.org Foundation

This source code is free software; you can redistribute it and/or
modify it under the terms of the GNU General Public License as
published by the Free Software Foundation; either version 3 of
the License, or (at your option) any later version.

This source code is distributed in the hope that it will be
useful, but WITHOUT ANY WARRANTY; without even the implied
warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
Please refer to the GNU General Public License for more details.

You should have received a copy of the GNU General Public License
along with this source code; if not, write to: Free Software
Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.

dowse's People

Contributors

freddbomba avatar ilpianista avatar jaromil avatar kasijjuf avatar nicolarossi avatar parazyd avatar rpl avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

dowse's Issues

Finalize OSC spring data format

should be sending multiple calls for each event, to simplify OSC endpoint parsing:

/path/to/event/paramenter s s (values as arguments)

so for instance dns

/dowse/dns/new/domain s s (".org" "dyne.org")

[debian] dnsmasq installation prevents tor setup

The current process installs dnsmasq and then removes it from the startup sequence. But tor requires dnsmasq to be started by insserv when setting up, otherwise it will result in an error than prevents the ./utils/debian_install.sh to finish properly.

The debian_install.sh script should install all pre-requisites at once, and then mess with insserv.

Setting names of other devices

Not sure if it's a bug or a feature. The http://dowse.it/things UI allows to set a name for another device. Nice for headless devices, but might be annoying for other people in the same network? How about making it an "admin"-only feature?

Minor install instruction change for zuper submodule

Add git submodule update --init to installation instructions after the initial git clone so users know to grab the zuper submodule.

For future reference... without submodule the following error results during make:

/home/dowse/dowse/zuper/zuper:source:16: no such file or directory: /home/dowse/dowse/zuper/zuper
/home/dowse/dowse/zuper/zuper.init:source:19: no such file or directory: /home/dowse/dowse/zuper/zuper.init

src/Makefile LIBS path assignment under Debian 9 and Fedora 30

When running make in the top directory in Fedora 30

make

Unlike Debian 9, the compile environment under Fedora 30 is not forgiving enough to allow the top Makefile to build source with

sources:
        THREADS=${THREADS} make -C src

with src/Makefile LIBS defined with path prefix beginning with src/ as well.

Removal of src/ $LIB path prefix still allows sucessful compilation under Debian 9(!) but also stops Fedora 30 from burping with

gcc -Wall -fPIE -fPIC -pie -O3 -I. -Iredis/deps/hiredis -Iredis/deps/jemalloc -o modprobe modprobe.o kmod_log.o -L src/redis/deps/hiredis -l:libhiredis.a -Llibdowse -l:libdowse.a -lkmod
/usr/bin/ld: cannot find -l:libhiredis.a
collect2: error: ld returned 1 exit status

This patch allows compilation under both OS environments:

$ git diff src/Makefile 
diff --git a/src/Makefile b/src/Makefile
index 0ea199f..d05711c 100644
--- a/src/Makefile
+++ b/src/Makefile
@@ -4,7 +4,7 @@ THREADS ?= 1
 
 CC = gcc
 CFLAGS = -Wall -fPIE -fPIC -pie -O3 -I. -Iredis/deps/hiredis -Iredis/deps/jemalloc
-LIBS = -L src/redis/deps/hiredis -l:libhiredis.a -Llibdowse -l:libdowse.a
+LIBS = -L redis/deps/hiredis -l:libhiredis.a -Llibdowse -l:libdowse.a
 
 all: base springs
        ./import.sh nmap-macs

squid-httpseverywhere module not working

The new module can be enabled with a symlink in modules/enabled

libxml-libxml-perl must be installed and update-rules run in the same dir.

Then running Dowse start it will generate a perl file with all paths correct to the installation. Squid3 will be launched, but then quit. Here the log:

2014/01/20 21:23:06| WARNING: redirector #1 (FD 9) exited
2014/01/20 21:23:06| WARNING: redirector #2 (FD 11) exited
2014/01/20 21:23:06| WARNING: redirector #3 (FD 13) exited
2014/01/20 21:23:06| WARNING: redirector #4 (FD 15) exited
2014/01/20 21:23:06| Too few redirector processes are running
2014/01/20 21:23:06| storeDirWriteCleanLogs: Starting...
2014/01/20 21:23:06|   Finished.  Wrote 0 entries.
2014/01/20 21:23:06|   Took 0.00 seconds (  0.00 entries/sec).
FATAL: The redirector helpers are crashing too rapidly, need help!

Squid Cache (Version 3.1.20): Terminated abnormally.
CPU Usage: 0.056 seconds = 0.008 user + 0.048 sys
Maximum Resident Size: 28432 KB
Page faults with physical i/o: 0
Memory usage for squid via mallinfo():
        total space in arena:    2248 KB
        Ordinary blocks:         2186 KB     20 blks
        Small blocks:               0 KB      0 blks
        Holding blocks:          2772 KB      5 blks
        Free Small blocks:          0 KB
        Free Ordinary blocks:      61 KB
        Total in use:            4958 KB 221%
        Total free:                61 KB 3%

The generated perl module for squid is found in $DOWSE/run/squid-httpseverywhere.pm

I'm not sure how to run it standalone to have tests, or check its compatibility with Squid3. Needing some help.

Make on Ubuntu 14.04LTS dies on netdata

during make

(*) Compiling netdata
autoreconf: Entering directory `.'
autoreconf: configure.ac: not using Gettext
autoreconf: running: aclocal -I m4 --output=aclocal.m4t
Can't exec "aclocal": No such file or directory at /usr/share/autoconf/Autom4te/FileUtils.pm line 326.
autoreconf: failed to run aclocal: No such file or directory
./compile.sh:102: no such file or directory: ./configure

The make of dowse will complete but when attempting to run the following error results:

user@ubuntu:~/dowse$ ./start.sh 
dowse:source:36: no such file or directory: /usr/share/zuper/zuper
dowse:source:101: no such file or directory: /usr/local/dowse/zlibs/modules
dowse:source:102: no such file or directory: /usr/local/dowse/zlibs/processes
...

This is because after the fail in compiling netdata other packages fail to compile? For compiling Netdata firstly cmake has to be run to create the make file. but also on ubuntu there is an issue that the package requires cmake 3.3+ and 14.04LTS has 2.8. Upgrading requires added a ppa:

user@ubuntu:~/dowse$ cd src/netdata/
user@ubuntu:~/dowse/src/netdata$ make
make: *** No targets specified and no makefile found.  Stop.
user@ubuntu:~/dowse/src/netdata$ cmake .
CMake Error at CMakeLists.txt:5 (cmake_minimum_required):
  CMake 3.3 or higher is required.  You are running version 2.8.12.2
-- Configuring incomplete, errors occurred!
user@ubuntu:~/dowse/src/netdata$ dpkg -l cmake
ii  cmake                                      2.8.12.2-0ubuntu3          amd64

Perhaps just add something in a troubleshooting document with the error code and instructions for updating cmake on ubuntu

sudo apt-get install build-essential
wget https://cmake.org/files/v3.6/cmake-3.6.2.tar.gz
tar xf cmake-3.6.2.tar.gz
cd cmake-3.6.2
./configure
make

start.sh failing to start redis

On a Raspberry Pi with Devuan 1.0.0-beta dowse-start fails to connect to a local redis server. Should this be configured elsewhere?

Here is a set -x log from dowse-start

dowse@devuan:~$ zsh
This is the Z Shell configuration function for new users,
zsh-newuser-install.
You are seeing this message because you have no zsh startup files
(the files .zshenv, .zprofile, .zshrc, .zlogin in the directory
~).  This function can help you with a few settings that should
make your use of the shell easier.

You can:

(q)  Quit and do nothing.  The function will be run again next time.

(0)  Exit, creating the file ~/.zshrc containing just a comment.
     That will prevent this function being run again.

(1)  Continue to the main menu.

(2)  Populate your ~/.zshrc with the configuration recommended
     by the system administrator and exit (you will need to edit
     the file by hand, if so desired).

--- Type one of the keys in parentheses ---

Aborting.
The function will be run again next time.  To prevent this, execute:
  touch ~/.zshrc
devuan% cd dowse
devuan% source dowse
 (*) Dowse CLI 0.9 - local area network rabdomancy

 Copyright (C) 2012-2016 Dyne.org Foundation, License GNU GPL v3+
 This is free software: you are free to change and redistribute it
 For more informations see http://www.dyne.org/software/dowse

  .  loading configuration from /etc/dowse/settings
 (*) 1 ipv4 connected devices found
  .   eth0 192.168.44.107/24
192.168.44.230/24
 (*) 1 ipv6 connected devices found
  .   eth0 fe80::ba27:ebff:fe2b:6032/64
  .  eth0 192.168.44.107 # detected network config
  .  checking requirements to run dowse...
  .  daemons running as user and group dowse:dowse
  .  all requirements in place
devuan% set -x                                                                                                                                                                 Dowse
devuan% dowse-start                                                                                                                                                            Dowse
+zsh:4> dowse-start
+dowse-start:2> fn dowse-start
+fn:1> fun=dowse-start
+fn:2> req=( )
+fn:3> freq=( )
+fn:4> func dowse-start
+func:1> [[ 0 == 1 ]]
+func:2> return 0
+dowse-start:6> [[+dowse-start:6> getpid redis-server
+getpid:1> fn getpid redis-server
+fn:1> fun='getpid redis-server'
+fn:2> req=( )
+fn:3> freq=( )
+fn:4> func 'getpid redis-server'
+func:1> [[ 0 == 1 ]]
+func:2> return 0
+getpid:2> _daemon=redis-server
+getpid:3> req=( _daemon )
+getpid:4> ckreq
+ckreq:1> err=0
+ckreq:2> v=_daemon
+ckreq:3> [[ redis-server ==  ]]
+ckreq:9> [[ 0 == 1 ]]
+ckreq:18> [[ 0 == 1 ]]
+ckreq:19> return 0
+getpid:6> unset _pid
+getpid:8> redis runtime
+getpid:8> print QUIT
+redis:2> _db=1
+redis:3> req=( _db )
+redis:4> ckreq
+ckreq:1> err=0
+ckreq:2> v=_db
+ckreq:3> [[ 1 ==  ]]
+ckreq:9> [[ 0 == 1 ]]
+ckreq:18> [[ 0 == 1 ]]
+ckreq:19> return 0
+redis:6> launch redis-cli -n 1 --raw
+redis:6> cat
+launch:1> fn launch redis-cli -n 1 --raw
+fn:1> fun='launch redis-cli -n 1 --raw'
+fn:2> req=( )
+fn:3> freq=( )
+fn:4> func 'launch redis-cli -n 1 --raw'
+func:1> [[ 0 == 1 ]]
+func:2> return 0
+launch:2> local '_cmd=redis-cli'
+launch:3> func 'command: redis-cli'
+func:1> [[ 0 == 1 ]]
+func:2> return 0
+launch:4> local '_path=/usr/local/dowse/bin/redis-cli'
+launch:5> req=( _cmd _path )
+launch:6> _freq=( /usr/local/dowse/bin/redis-cli )
+launch:7> ckreq
+ckreq:1> err=0
+ckreq:2> v=_cmd
+ckreq:3> [[ redis-cli ==  ]]
+ckreq:2> v=_path
+ckreq:3> [[ /usr/local/dowse/bin/redis-cli ==  ]]
+ckreq:9> [[ 0 == 1 ]]
+ckreq:18> [[ 0 == 1 ]]
+ckreq:19> return 0
+launch:9> local _ret
+launch:10> _rule=user
+launch:11> case user (user)
+launch:13> shift 1
+launch:14> func 'user launch: /usr/local/dowse/bin/redis-cli -n 1 --raw'
+func:1> [[ 0 == 1 ]]
+func:2> return 0
+launch:15> /usr/local/dowse/bin/redis-cli -n 1 --raw
Could not connect to Redis at 127.0.0.1:6379: Connection timed out
+launch:16> _ret=0
+launch:17> func 'redis-cli (user) returns 0'
+func:1> [[ 0 == 1 ]]
+func:2> return 0
+launch:18> return 0
+redis:7> [[ 0 == 0 ]]
+getpid:9> _pid=+getpid:9> _pid=+getpid:9> redis runtime
+getpid:9> print 'GET daemon-redis-server-pid'
+redis:2> _db=1
+redis:3> req=( _db )
+redis:4> ckreq
+ckreq:1> err=0
+ckreq:2> v=_db
+ckreq:3> [[ 1 ==  ]]
+ckreq:9> [[ 0 == 1 ]]
+ckreq:18> [[ 0 == 1 ]]
+ckreq:19> return 0
+redis:6> launch redis-cli -n 1 --raw
+redis:6> cat
+launch:1> fn launch redis-cli -n 1 --raw
+fn:1> fun='launch redis-cli -n 1 --raw'
+fn:2> req=( )
+fn:3> freq=( )
+fn:4> func 'launch redis-cli -n 1 --raw'
+func:1> [[ 0 == 1 ]]
+func:2> return 0
+launch:2> local '_cmd=redis-cli'
+launch:3> func 'command: redis-cli'
+func:1> [[ 0 == 1 ]]
+func:2> return 0
+launch:4> local '_path=/usr/local/dowse/bin/redis-cli'
+launch:5> req=( _cmd _path )
+launch:6> _freq=( /usr/local/dowse/bin/redis-cli )
+launch:7> ckreq
+ckreq:1> err=0
+ckreq:2> v=_cmd
+ckreq:3> [[ redis-cli ==  ]]
+ckreq:2> v=_path
+ckreq:3> [[ /usr/local/dowse/bin/redis-cli ==  ]]
+ckreq:9> [[ 0 == 1 ]]
+ckreq:18> [[ 0 == 1 ]]
+ckreq:19> return 0
+launch:9> local _ret
+launch:10> _rule=user
+launch:11> case user (user)
+launch:13> shift 1
+launch:14> func 'user launch: /usr/local/dowse/bin/redis-cli -n 1 --raw'
+func:1> [[ 0 == 1 ]]
+func:2> return 0
+launch:15> /usr/local/dowse/bin/redis-cli -n 1 --raw
packet_write_wait: Connection to 192.168.44.230: Broken pipe

A strace of the final redis-cli command:

...
open("/sys/devices/system/cpu/online", O_RDONLY|O_CLOEXEC) = 3
read(3, "0-3\n", 8192)                  = 4
close(3)                                = 0
mmap2(NULL, 4194304, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x76400000
ioctl(1, SNDCTL_TMR_TIMEBASE or SNDRV_TIMER_IOCTL_NEXT_DEVICE or TCGETS, {B38400 opost isig icanon echo ...}) = 0
socket(PF_INET, SOCK_STREAM, IPPROTO_TCP) = 3
fcntl64(3, F_GETFL)                     = 0x2 (flags O_RDWR)
fcntl64(3, F_SETFL, O_RDWR|O_NONBLOCK)  = 0
connect(3, {sa_family=AF_INET, sin_port=htons(6379), sin_addr=inet_addr("127.0.0.1")}, 16) = -1 EINPROGRESS (Operation now in progress)
poll([{fd=3, events=POLLOUT}], 1, -1^CProcess 8163 detached
 <detached ...>

netstat:

dowse@devuan:~/dowse$ netstat -pan
(Not all processes could be identified, non-owned process info
 will not be shown, you would have to be root to see it all.)
Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name
tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN      -
tcp        0      1 127.0.0.1:45026         127.0.0.1:6379          SYN_SENT    8167/redis-cli
tcp        0      0 192.168.44.230:22       192.168.44.22:56194     ESTABLISHED -
tcp        0      0 192.168.44.230:22       192.168.44.1:37637      ESTABLISHED -
tcp        0    352 192.168.44.230:22       192.168.44.22:56195     ESTABLISHED -
tcp        0      0 192.168.44.107:22       192.168.44.1:54162      ESTABLISHED -
tcp        0      1 127.0.0.1:45025         127.0.0.1:6379          SYN_SENT    7921/redis-cli
tcp6       0      0 :::22                   :::*                    LISTEN      -
udp        0      0 0.0.0.0:12799           0.0.0.0:*                           -
udp        0      0 0.0.0.0:68              0.0.0.0:*                           -
udp6       0      0 :::42099                :::*                                -

(Dowse Raspberry image) fix IP breaks functionality

Hi, the Raspberry image we got from you a couple of days ago works fine on my home network. I plug it in, the Dowse box gets an IP from the router, and then I turn off DHCP on the router. So far so good. I ask for a new DHCP lease on my laptop, and bingo, I'm in.

But when I edit /etc/network/interfaces on the Dowse box to give it a fix IP, that breaks things somehow. Dowse's DHCP doesn't work any more. I was stumped and even re-flashed the Raspberry to revert to the original image, but still the same problem.

I reverted things back to Dowse getting an IP from the router's DHCP, and now everything works again. So right now I can't restart the Dowse box, because that would leave it without an IP (it still uses the IP given to it by the router right now)...

For your reference, the home network is 192.168.178.0
The router is at 192.168.178.1
The dowse box gets this IP from the router: 192.168.178.20

This is the part in /etc/network/interfaces that breaks things, if I uncomment it (basically I was thinking to give it the same IP that it received from the router):
#auto eth0
#iface eth0 inet static
#address 192.168.178.20
#netmask 255.255.255.0

Make a nice splash page

Even in this early stage of development, Dowse should serve some kind of information on port 80 in order to signal it is running. This can be a start for the web-based interaction framework, keeping it minimal enough of course. I plan to use mongoose.

Source install: git submodule update --init --recursive fails

Source install documentation fails at step

git submodule update --init --recursive

with

...
error: Server does not allow request for unadvertised object aebbc80ab15a6a31aea72a0e44deeaa58edf255d
Fetched in submodule path 'domain-list/archived/popcorner-cernet-ipv6-hosts', but it did not contain aebbc80ab15a6a31aea72a0e44deeaa58edf255d. Direct fetching of that commit failed.
Submodule path 'libwebsockets': checked out 'f3ad9540fa1e53d703a6839cc80ceff511648fc0'
Submodule path 'netdata': checked out '4211a833100444cf86fcabc2a45a2330ab729c89'
Submodule path 'node-red': checked out '0ee7ffb5e5d64cc7ccd0e841a456dab34a61cfcc'
Submodule path 'redis': checked out 'f42df6f43a59fa92a82e651d1c5858bc5e72c3ef'
Submodule path '../zuper': checked out '5c978ec28ac5f680f7bd3b3709a125304b7843e9'
Failed to recurse into submodule path 'domain-list'

ARP error

When I browse to dowse.it I get:

Something has gone wrong
Danger
-- Error: unable to make ARP request for IP [192.168.100.16], error on device [lo] due to [No such device or address]

Install ZenHub extension to follow progress

Hola! @jaromil has created a ZenHub account for the dyne organization. ZenHub is the leading team collaboration and project management solution built for GitHub.


How do I use ZenHub?

To get set up with ZenHub, all you have to do is download the browser extension and log in with your GitHub account. Once you do, you’ll get access to ZenHub’s complete feature-set immediately.

What can ZenHub do?

ZenHub adds a series of enhancements directly inside the GitHub UI:

  • Real-time, customizable task boards for GitHub issues;
  • Burndown charts, estimates, and velocity tracking based on GitHub Milestones;
  • Personal to-do lists and task prioritization;
  • “+1” button for GitHub issues and comments;
  • Drag-and-drop file sharing;
  • Time-saving shortcuts like a quick repo switcher.

Add ZenHub to GitHub

Still curious? See more ZenHub features or read user reviews. This issue was written by your friendly ZenHub bot, posted by request from @jaromil.

ZenHub Board

/etc/dowse/settings is (partially) ingnored

I try to set my own DHCP range, but always ..*.101 till 149 is used.
I noticed that more settings are not used from /etc/dowse/settings

Where can I set my own DHCP range?

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.