summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--.gitignore35
-rw-r--r--.gitmodules45
-rw-r--r--.graveyard/27c3_ticket_grabber/mechanize_tickets.py53
-rw-r--r--.graveyard/DNA/README.md14
-rw-r--r--.graveyard/DNA/linux/LICENSE674
-rw-r--r--.graveyard/DNA/linux/Makefile7
-rw-r--r--.graveyard/DNA/linux/README.md41
-rw-r--r--.graveyard/DNA/linux/TODO16
-rw-r--r--.graveyard/DNA/linux/krebs.c192
-rw-r--r--.graveyard/README.md5
-rwxr-xr-x.graveyard/autowifi/autowifi212
-rw-r--r--.graveyard/autowifi/confdir/blacklist2
-rwxr-xr-x.graveyard/autowifi/confdir/cracks/00profile11
-rwxr-xr-x.graveyard/autowifi/confdir/cracks/01open6
-rwxr-xr-x.graveyard/autowifi/confdir/hooks/wlan0/post/00tinc-up2
-rwxr-xr-x.graveyard/autowifi/confdir/hooks/wlan0/pre/00changemac5
-rw-r--r--.graveyard/cholerab-live/README6
-rw-r--r--.graveyard/cholerab-live/chol_net.py82
-rw-r--r--.graveyard/cholerab-live/chol_net.pycbin0 -> 4361 bytes
-rwxr-xr-x.graveyard/cholerab-live/cholerab.py36
-rwxr-xr-x.graveyard/cholerab-live/live.sh88
-rw-r--r--.graveyard/cholerab-live/makefu/README6
-rw-r--r--.graveyard/cholerab-live/makefu/chol_net.py82
-rwxr-xr-x.graveyard/cholerab-live/makefu/cholerab.py36
-rw-r--r--.graveyard/cholerab-live/makefu/view.py112
-rwxr-xr-x.graveyard/cholerab-live/ttycnser.sh27
-rw-r--r--.graveyard/cholerab-live/view.py112
-rw-r--r--.graveyard/cobra/README.md34
-rw-r--r--.graveyard/cobra/hello/index.sh1
-rwxr-xr-x.graveyard/cobra/index.sh16
-rwxr-xr-x.graveyard/git/git-clone-into48
-rwxr-xr-x.graveyard/git/git-eternal-move15
-rw-r--r--.graveyard/hyper/README.md36
-rwxr-xr-x.graveyard/hyper/influx/http/index.js57
-rw-r--r--.graveyard/hyper/process/Makefile19
-rw-r--r--.graveyard/hyper/process/main.go77
-rwxr-xr-x.graveyard/hyper/process/spawn103
-rw-r--r--.graveyard/hyper/process/src/hyper/process/Makefile11
-rw-r--r--.graveyard/hyper/process/src/hyper/process/process.go132
-rw-r--r--.graveyard/hyper/process/test/bc.json11
-rw-r--r--.graveyard/hyper/sink/index.js13
-rwxr-xr-x.graveyard/infest/core/angstrom4
-rwxr-xr-x.graveyard/infest/core/debian6
-rw-r--r--.graveyard/infest/host-patch/beagleboard/Makefile9
-rw-r--r--.graveyard/infest/host-patch/beagleboard/profile.patch42
-rwxr-xr-x.graveyard/json/sh/json.sh116
-rw-r--r--.graveyard/json/sh/test.json7
-rw-r--r--.graveyard/lib/Makefile9
-rw-r--r--.graveyard/lib/libkrebs.sh10
-rwxr-xr-x.graveyard/meta/bin/update15
-rwxr-xr-x.graveyard/meta/install25
-rw-r--r--.graveyard/noise/Makefile18
-rw-r--r--.graveyard/noise/TODO60
-rwxr-xr-x.graveyard/noise/cron/bin/zeit18
-rwxr-xr-x.graveyard/noise/init.d/noise48
-rwxr-xr-x.graveyard/noise/modules/cat14
-rwxr-xr-x.graveyard/noise/modules/chat33
-rwxr-xr-x.graveyard/noise/modules/date6
-rwxr-xr-x.graveyard/noise/modules/echo6
-rwxr-xr-x.graveyard/noise/modules/ein_mal_eins37
-rwxr-xr-x.graveyard/noise/modules/espeak34
-rwxr-xr-x.graveyard/noise/modules/help24
-rwxr-xr-x.graveyard/noise/modules/join15
-rwxr-xr-x.graveyard/noise/modules/lang22
l---------.graveyard/noise/modules/licht1
-rwxr-xr-x.graveyard/noise/modules/mpc14
-rwxr-xr-x.graveyard/noise/modules/names22
-rwxr-xr-x.graveyard/noise/modules/nick10
-rwxr-xr-x.graveyard/noise/modules/overlord14
-rwxr-xr-x.graveyard/noise/modules/part15
-rwxr-xr-x.graveyard/noise/modules/ping24
-rwxr-xr-x.graveyard/noise/modules/play36
-rwxr-xr-x.graveyard/noise/modules/pong26
-rwxr-xr-x.graveyard/noise/modules/query23
-rwxr-xr-x.graveyard/noise/modules/send_to_channel17
-rwxr-xr-x.graveyard/noise/modules/sendmail55
-rwxr-xr-x.graveyard/noise/modules/shackstatus104
-rwxr-xr-x.graveyard/noise/modules/sleep10
-rwxr-xr-x.graveyard/noise/modules/stream2
-rwxr-xr-x.graveyard/noise/modules/temp50
-rwxr-xr-x.graveyard/noise/modules/test13
-rwxr-xr-x.graveyard/noise/modules/twitter125
-rwxr-xr-x.graveyard/noise/modules/vvs17
-rwxr-xr-x.graveyard/noise/modules/wall8
-rwxr-xr-x.graveyard/noise/modules/zeit19
-rwxr-xr-x.graveyard/noise/noise186
-rwxr-xr-x.graveyard/noise/noise-as-user4
-rwxr-xr-x.graveyard/noise/noise-server4
-rw-r--r--.graveyard/punani/Makefile9
-rw-r--r--.graveyard/punani/README.md30
-rwxr-xr-x.graveyard/punani/autostart/punani-debian102
-rwxr-xr-x.graveyard/punani/bin/punani70
-rwxr-xr-x.graveyard/punani/bot/__init__.py105
-rw-r--r--.graveyard/punani/db/punani76
-rw-r--r--.graveyard/punani/doc/releases38
-rwxr-xr-x.graveyard/punani/host/dist/arch/getsize17
-rwxr-xr-x.graveyard/punani/index.py97
-rw-r--r--.graveyard/roboctl/index.js18
-rw-r--r--.graveyard/roboctl/lib/irc.js67
-rw-r--r--.graveyard/shell/etc/ipt/ipv4-shield-1.rules10
-rwxr-xr-x.graveyard/ship/deploy9
-rw-r--r--.graveyard/ship/develop5
-rw-r--r--.graveyard/temper/.gitignore1
-rw-r--r--.graveyard/temper/99-tempsensor.rules1
-rw-r--r--.graveyard/temper/Makefile20
-rwxr-xr-x.graveyard/temper/collectd-temper.sh9
-rw-r--r--.graveyard/temper/temper.c277
-rw-r--r--.graveyard/temper/temper.h39
-rwxr-xr-x.graveyard/tinc_multicast/retiolum34
-rwxr-xr-x.graveyard/tinc_multicast/retiolum.py349
-rwxr-xr-x.graveyard/util/bin/mobile.vvs.de167
-rwxr-xr-x.graveyard/util/bin/vvs.de61
-rwxr-xr-x.graveyard/util/t/mobile.vvs.de/smoke-test5
-rwxr-xr-x.graveyard/util/t/vvs.de/smoke-test11
-rw-r--r--.graveyard/zoneminder/Makefile14
-rw-r--r--.graveyard/zoneminder/zmdc.pl-LD_PRELOAD.patch10
-rw-r--r--.graveyard/zoneminder/zoneminder.conf2
-rw-r--r--.travis.yml18
-rw-r--r--COPYING14
-rw-r--r--Kübelwagen/Makefile14
-rwxr-xr-xKübelwagen/alarm27
-rw-r--r--Kübelwagen/index.c206
-rwxr-xr-xKübelwagen/playmobil12
-rw-r--r--Kübelwagen/sin.js37
-rw-r--r--Makefile19
-rw-r--r--Reaktor/IRC/README.md49
-rw-r--r--Reaktor/IRC/getconf.py33
-rwxr-xr-xReaktor/IRC/index6
-rw-r--r--Reaktor/IRC/ircasy.py205
-rwxr-xr-xReaktor/IRC/reaktor.py125
-rw-r--r--Reaktor/IRC/translate_colors.py31
-rw-r--r--Reaktor/Makefile23
-rw-r--r--Reaktor/README.md26
-rw-r--r--Reaktor/TODO5
-rw-r--r--Reaktor/UDP/README52
-rw-r--r--Reaktor/UDP/config15
-rwxr-xr-xReaktor/UDP/index94
-rwxr-xr-xReaktor/auth.lst1
-rwxr-xr-xReaktor/commands/badcommand1
-rwxr-xr-xReaktor/commands/caps13
-rwxr-xr-xReaktor/commands/hello2
-rwxr-xr-xReaktor/commands/identify22
-rwxr-xr-xReaktor/commands/licht_resolver37
-rwxr-xr-xReaktor/commands/nag68
-rwxr-xr-xReaktor/commands/reload2
-rwxr-xr-xReaktor/commands/respond2
-rwxr-xr-xReaktor/commands/rev2
l---------Reaktor/commands/revip1
-rwxr-xr-xReaktor/commands/say2
l---------Reaktor/commands/subdomains1
-rwxr-xr-xReaktor/commands/taken28
-rwxr-xr-xReaktor/commands/tell-on_join19
-rwxr-xr-xReaktor/commands/tell-on_privmsg17
-rwxr-xr-xReaktor/commands/uptime8
l---------Reaktor/commands/visit-page1
-rwxr-xr-xReaktor/commands/whatweb7
-rwxr-xr-xReaktor/commands/whois4
-rw-r--r--Reaktor/config.py98
-rw-r--r--Reaktor/elchos/admin.lst0
-rw-r--r--Reaktor/elchos/auth.lst0
-rwxr-xr-xReaktor/elchos/commands/ftpget58
-rwxr-xr-xReaktor/elchos/commands/identify22
-rwxr-xr-xReaktor/elchos/commands/io25
-rwxr-xr-xReaktor/elchos/commands/ips2
-rwxr-xr-xReaktor/elchos/commands/list_downloads8
-rwxr-xr-xReaktor/elchos/commands/onion3
-rwxr-xr-xReaktor/elchos/commands/reboot3
-rwxr-xr-xReaktor/elchos/commands/refresh_shares4
-rwxr-xr-xReaktor/elchos/commands/shares2
-rwxr-xr-xReaktor/elchos/commands/update_search3
-rw-r--r--Reaktor/elchos/config.py78
-rw-r--r--Reaktor/etc/conf.d/reaktor2
-rwxr-xr-xReaktor/etc/init.d/reaktor-debian102
-rw-r--r--Reaktor/etc/supervisor/Reaktor.conf6
-rw-r--r--Reaktor/etc/systemd/system/Reaktor.service14
-rwxr-xr-xReaktor/index7
l---------Reaktor/public_commands/caps1
l---------Reaktor/public_commands/hello1
l---------Reaktor/public_commands/reload1
l---------Reaktor/public_commands/retard1
l---------Reaktor/public_commands/rev1
l---------Reaktor/public_commands/uptime1
-rw-r--r--Reaktor/repos/bxfr/bxfr.py238
-rw-r--r--Reaktor/repos/bxfr/bxfr_api.py238
-rwxr-xr-xReaktor/repos/consolidate_dns/index86
m---------Reaktor/repos/dnsrecon0
m---------Reaktor/repos/gxfr0
-rwxr-xr-xReaktor/repos/revip/revip48
m---------Reaktor/repos/view-website0
m---------Reaktor/repos/whatweb0
-rwxr-xr-xReaktor/titlebot/commands/clear12
-rwxr-xr-xReaktor/titlebot/commands/down2
-rwxr-xr-xReaktor/titlebot/commands/help12
-rwxr-xr-xReaktor/titlebot/commands/highest30
-rwxr-xr-xReaktor/titlebot/commands/list27
-rwxr-xr-xReaktor/titlebot/commands/new19
-rw-r--r--Reaktor/titlebot/commands/poll.py23
l---------Reaktor/titlebot/commands/top1
-rwxr-xr-xReaktor/titlebot/commands/undo31
-rwxr-xr-xReaktor/titlebot/commands/up33
-rw-r--r--Reaktor/titlebot/titlebot.py79
l---------Reaktor/udp_commands/licht_resolver1
-rw-r--r--assets/Makefile11
-rw-r--r--assets/README44
-rwxr-xr-xassets/bin/asq2
-rwxr-xr-xassets/bin/ass24
-rwxr-xr-xassets/bin/check-truth11
-rwxr-xr-xassets/bin/fast20
-rwxr-xr-xassets/bin/truth2json37
-rw-r--r--assets/doc/ass.txt9
-rw-r--r--assets/doc/lexikon.txt12
-rw-r--r--assets/doc/structs.nojson43
-rw-r--r--assets/doc/usecases.txt71
-rwxr-xr-xassets/hooks/pre-commit8
-rw-r--r--bigeye/README.md9
-rwxr-xr-xbigeye/bigeyed70
-rw-r--r--bin/.placeholder0
-rw-r--r--boot/arch_install.sh117
-rw-r--r--boot/lighttpd.conf12
l---------boot/painload.sh1
l---------boot/retiolum.sh1
l---------bridge/README.md1
-rwxr-xr-xbridge/bin/bridge12
-rw-r--r--bridge/etc/bash_completion.d/bridge18
-rwxr-xr-xbridge/lib/bridge/bin/attach10
-rwxr-xr-xbridge/lib/bridge/bin/create15
-rwxr-xr-xbridge/lib/bridge/bin/destroy12
-rwxr-xr-xbridge/lib/bridge/bin/list10
-rwxr-xr-xbridge/lib/bridge/bin/paste30
-rw-r--r--bridge/share/doc/bridge/README.md59
-rw-r--r--bridge/share/vim/vimfiles/plugin/bridge.vim113
-rw-r--r--cholerab/AAA53
-rw-r--r--cholerab/AGENDA108
-rw-r--r--cholerab/CI.md4
-rw-r--r--cholerab/ENTERPRISE_PATTERN92
-rw-r--r--cholerab/Error.txt4
-rw-r--r--cholerab/HACKING/git/log-follow6
-rw-r--r--cholerab/HACKING/git/remove-submodule5
-rw-r--r--cholerab/IRC-RPC32
-rw-r--r--cholerab/PROJECTS13
-rw-r--r--cholerab/README72
-rw-r--r--cholerab/RETIOLUM8
-rw-r--r--cholerab/Reaktor/IRC-RPC32
-rw-r--r--cholerab/Reaktor/priviliged_functions24
-rw-r--r--cholerab/Testing17
-rw-r--r--cholerab/UPM0
-rw-r--r--cholerab/WISHLIST5
-rw-r--r--cholerab/bling/README_svg2
-rw-r--r--cholerab/bling/assets/krebsplug_0.23.pngbin0 -> 336375 bytes
-rw-r--r--cholerab/bling/cancer_3d/KREBS.blendbin0 -> 174032 bytes
-rw-r--r--cholerab/bling/cancer_3d/animation.lcdbin0 -> 60480 bytes
-rw-r--r--cholerab/bling/cancer_3d/index.html225
-rw-r--r--cholerab/bling/cancer_3d/index.html?C=D;O=A225
-rw-r--r--cholerab/bling/cancer_3d/index.html?C=M;O=A225
-rw-r--r--cholerab/bling/cancer_3d/index.html?C=N;O=D225
-rw-r--r--cholerab/bling/cancer_3d/index.html?C=S;O=A225
-rw-r--r--cholerab/bling/cancer_3d/krebs0001.lcdbin0 -> 864 bytes
-rw-r--r--cholerab/bling/cancer_3d/krebs0001.pngbin0 -> 2062 bytes
-rw-r--r--cholerab/bling/cancer_3d/krebs0001.png.gifbin0 -> 393 bytes
-rw-r--r--cholerab/bling/cancer_3d/krebs0002.lcdbin0 -> 864 bytes
-rw-r--r--cholerab/bling/cancer_3d/krebs0002.pngbin0 -> 2264 bytes
-rw-r--r--cholerab/bling/cancer_3d/krebs0002.png.gifbin0 -> 387 bytes
-rw-r--r--cholerab/bling/cancer_3d/krebs0003.lcdbin0 -> 864 bytes
-rw-r--r--cholerab/bling/cancer_3d/krebs0003.pngbin0 -> 2306 bytes
-rw-r--r--cholerab/bling/cancer_3d/krebs0003.png.gifbin0 -> 387 bytes
-rw-r--r--cholerab/bling/cancer_3d/krebs0004.lcdbin0 -> 864 bytes
-rw-r--r--cholerab/bling/cancer_3d/krebs0004.pngbin0 -> 2310 bytes
-rw-r--r--cholerab/bling/cancer_3d/krebs0004.png.gifbin0 -> 391 bytes
-rw-r--r--cholerab/bling/cancer_3d/krebs0005.lcdbin0 -> 864 bytes
-rw-r--r--cholerab/bling/cancer_3d/krebs0005.pngbin0 -> 2351 bytes
-rw-r--r--cholerab/bling/cancer_3d/krebs0005.png.gifbin0 -> 372 bytes
-rw-r--r--cholerab/bling/cancer_3d/krebs0006.lcdbin0 -> 864 bytes
-rw-r--r--cholerab/bling/cancer_3d/krebs0006.pngbin0 -> 2299 bytes
-rw-r--r--cholerab/bling/cancer_3d/krebs0006.png.gifbin0 -> 363 bytes
-rw-r--r--cholerab/bling/cancer_3d/krebs0007.lcdbin0 -> 864 bytes
-rw-r--r--cholerab/bling/cancer_3d/krebs0007.pngbin0 -> 2160 bytes
-rw-r--r--cholerab/bling/cancer_3d/krebs0007.png.gifbin0 -> 347 bytes
-rw-r--r--cholerab/bling/cancer_3d/krebs0008.lcdbin0 -> 864 bytes
-rw-r--r--cholerab/bling/cancer_3d/krebs0008.pngbin0 -> 2124 bytes
-rw-r--r--cholerab/bling/cancer_3d/krebs0008.png.gifbin0 -> 341 bytes
-rw-r--r--cholerab/bling/cancer_3d/krebs0009.lcdbin0 -> 864 bytes
-rw-r--r--cholerab/bling/cancer_3d/krebs0009.pngbin0 -> 1954 bytes
-rw-r--r--cholerab/bling/cancer_3d/krebs0009.png.gifbin0 -> 326 bytes
-rw-r--r--cholerab/bling/cancer_3d/krebs0010.lcdbin0 -> 864 bytes
-rw-r--r--cholerab/bling/cancer_3d/krebs0010.pngbin0 -> 1862 bytes
-rw-r--r--cholerab/bling/cancer_3d/krebs0010.png.gifbin0 -> 309 bytes
-rw-r--r--cholerab/bling/cancer_3d/krebs0011.lcdbin0 -> 864 bytes
-rw-r--r--cholerab/bling/cancer_3d/krebs0011.pngbin0 -> 1637 bytes
-rw-r--r--cholerab/bling/cancer_3d/krebs0011.png.gifbin0 -> 293 bytes
-rw-r--r--cholerab/bling/cancer_3d/krebs0012.lcdbin0 -> 864 bytes
-rw-r--r--cholerab/bling/cancer_3d/krebs0012.pngbin0 -> 1551 bytes
-rw-r--r--cholerab/bling/cancer_3d/krebs0012.png.gifbin0 -> 283 bytes
-rw-r--r--cholerab/bling/cancer_3d/krebs0013.lcdbin0 -> 864 bytes
-rw-r--r--cholerab/bling/cancer_3d/krebs0013.pngbin0 -> 1409 bytes
-rw-r--r--cholerab/bling/cancer_3d/krebs0013.png.gifbin0 -> 267 bytes
-rw-r--r--cholerab/bling/cancer_3d/krebs0014.lcdbin0 -> 864 bytes
-rw-r--r--cholerab/bling/cancer_3d/krebs0014.pngbin0 -> 1222 bytes
-rw-r--r--cholerab/bling/cancer_3d/krebs0014.png.gifbin0 -> 255 bytes
-rw-r--r--cholerab/bling/cancer_3d/krebs0015.lcdbin0 -> 864 bytes
-rw-r--r--cholerab/bling/cancer_3d/krebs0015.pngbin0 -> 1047 bytes
-rw-r--r--cholerab/bling/cancer_3d/krebs0015.png.gifbin0 -> 246 bytes
-rw-r--r--cholerab/bling/cancer_3d/krebs0016.lcdbin0 -> 864 bytes
-rw-r--r--cholerab/bling/cancer_3d/krebs0016.pngbin0 -> 950 bytes
-rw-r--r--cholerab/bling/cancer_3d/krebs0016.png.gifbin0 -> 245 bytes
-rw-r--r--cholerab/bling/cancer_3d/krebs0017.lcdbin0 -> 864 bytes
-rw-r--r--cholerab/bling/cancer_3d/krebs0017.pngbin0 -> 896 bytes
-rw-r--r--cholerab/bling/cancer_3d/krebs0017.png.gifbin0 -> 238 bytes
-rw-r--r--cholerab/bling/cancer_3d/krebs0018.lcdbin0 -> 864 bytes
-rw-r--r--cholerab/bling/cancer_3d/krebs0018.pngbin0 -> 628 bytes
-rw-r--r--cholerab/bling/cancer_3d/krebs0018.png.gifbin0 -> 230 bytes
-rw-r--r--cholerab/bling/cancer_3d/krebs0019.lcdbin0 -> 864 bytes
-rw-r--r--cholerab/bling/cancer_3d/krebs0019.pngbin0 -> 646 bytes
-rw-r--r--cholerab/bling/cancer_3d/krebs0019.png.gifbin0 -> 231 bytes
-rw-r--r--cholerab/bling/cancer_3d/krebs0020.lcdbin0 -> 864 bytes
-rw-r--r--cholerab/bling/cancer_3d/krebs0020.pngbin0 -> 870 bytes
-rw-r--r--cholerab/bling/cancer_3d/krebs0020.png.gifbin0 -> 238 bytes
-rw-r--r--cholerab/bling/cancer_3d/krebs0021.lcdbin0 -> 864 bytes
-rw-r--r--cholerab/bling/cancer_3d/krebs0021.pngbin0 -> 945 bytes
-rw-r--r--cholerab/bling/cancer_3d/krebs0021.png.gifbin0 -> 246 bytes
-rw-r--r--cholerab/bling/cancer_3d/krebs0022.lcdbin0 -> 864 bytes
-rw-r--r--cholerab/bling/cancer_3d/krebs0022.pngbin0 -> 1047 bytes
-rw-r--r--cholerab/bling/cancer_3d/krebs0022.png.gifbin0 -> 247 bytes
-rw-r--r--cholerab/bling/cancer_3d/krebs0023.lcdbin0 -> 864 bytes
-rw-r--r--cholerab/bling/cancer_3d/krebs0023.pngbin0 -> 1223 bytes
-rw-r--r--cholerab/bling/cancer_3d/krebs0023.png.gifbin0 -> 258 bytes
-rw-r--r--cholerab/bling/cancer_3d/krebs0024.lcdbin0 -> 864 bytes
-rw-r--r--cholerab/bling/cancer_3d/krebs0024.pngbin0 -> 1470 bytes
-rw-r--r--cholerab/bling/cancer_3d/krebs0024.png.gifbin0 -> 268 bytes
-rw-r--r--cholerab/bling/cancer_3d/krebs0025.lcdbin0 -> 864 bytes
-rw-r--r--cholerab/bling/cancer_3d/krebs0025.pngbin0 -> 1577 bytes
-rw-r--r--cholerab/bling/cancer_3d/krebs0025.png.gifbin0 -> 282 bytes
-rw-r--r--cholerab/bling/cancer_3d/krebs0026.lcdbin0 -> 864 bytes
-rw-r--r--cholerab/bling/cancer_3d/krebs0026.pngbin0 -> 1637 bytes
-rw-r--r--cholerab/bling/cancer_3d/krebs0026.png.gifbin0 -> 299 bytes
-rw-r--r--cholerab/bling/cancer_3d/krebs0027.lcdbin0 -> 864 bytes
-rw-r--r--cholerab/bling/cancer_3d/krebs0027.pngbin0 -> 1930 bytes
-rw-r--r--cholerab/bling/cancer_3d/krebs0027.png.gifbin0 -> 310 bytes
-rw-r--r--cholerab/bling/cancer_3d/krebs0028.lcdbin0 -> 864 bytes
-rw-r--r--cholerab/bling/cancer_3d/krebs0028.pngbin0 -> 1992 bytes
-rw-r--r--cholerab/bling/cancer_3d/krebs0028.png.gifbin0 -> 332 bytes
-rw-r--r--cholerab/bling/cancer_3d/krebs0029.lcdbin0 -> 864 bytes
-rw-r--r--cholerab/bling/cancer_3d/krebs0029.pngbin0 -> 2133 bytes
-rw-r--r--cholerab/bling/cancer_3d/krebs0029.png.gifbin0 -> 341 bytes
-rw-r--r--cholerab/bling/cancer_3d/krebs0030.lcdbin0 -> 864 bytes
-rw-r--r--cholerab/bling/cancer_3d/krebs0030.pngbin0 -> 2245 bytes
-rw-r--r--cholerab/bling/cancer_3d/krebs0030.png.gifbin0 -> 347 bytes
-rw-r--r--cholerab/bling/cancer_3d/krebs0031.lcdbin0 -> 864 bytes
-rw-r--r--cholerab/bling/cancer_3d/krebs0031.pngbin0 -> 2324 bytes
-rw-r--r--cholerab/bling/cancer_3d/krebs0031.png.gifbin0 -> 360 bytes
-rw-r--r--cholerab/bling/cancer_3d/krebs0032.lcdbin0 -> 864 bytes
-rw-r--r--cholerab/bling/cancer_3d/krebs0032.pngbin0 -> 2366 bytes
-rw-r--r--cholerab/bling/cancer_3d/krebs0032.png.gifbin0 -> 377 bytes
-rw-r--r--cholerab/bling/cancer_3d/krebs0033.lcdbin0 -> 864 bytes
-rw-r--r--cholerab/bling/cancer_3d/krebs0033.pngbin0 -> 2328 bytes
-rw-r--r--cholerab/bling/cancer_3d/krebs0033.png.gifbin0 -> 389 bytes
-rw-r--r--cholerab/bling/cancer_3d/krebs0034.lcdbin0 -> 864 bytes
-rw-r--r--cholerab/bling/cancer_3d/krebs0034.pngbin0 -> 2292 bytes
-rw-r--r--cholerab/bling/cancer_3d/krebs0034.png.gifbin0 -> 391 bytes
-rw-r--r--cholerab/bling/cancer_3d/krebs0035.lcdbin0 -> 864 bytes
-rw-r--r--cholerab/bling/cancer_3d/krebs0035.pngbin0 -> 2300 bytes
-rw-r--r--cholerab/bling/cancer_3d/krebs0035.png.gifbin0 -> 378 bytes
-rw-r--r--cholerab/bling/cancer_3d/krebs0036.lcdbin0 -> 864 bytes
-rw-r--r--cholerab/bling/cancer_3d/krebs0036.pngbin0 -> 2068 bytes
-rw-r--r--cholerab/bling/cancer_3d/krebs0036.png.gifbin0 -> 392 bytes
-rw-r--r--cholerab/bling/cancer_3d/krebs0037.lcdbin0 -> 864 bytes
-rw-r--r--cholerab/bling/cancer_3d/krebs0037.pngbin0 -> 2300 bytes
-rw-r--r--cholerab/bling/cancer_3d/krebs0037.png.gifbin0 -> 387 bytes
-rw-r--r--cholerab/bling/cancer_3d/krebs0038.lcdbin0 -> 864 bytes
-rw-r--r--cholerab/bling/cancer_3d/krebs0038.pngbin0 -> 2351 bytes
-rw-r--r--cholerab/bling/cancer_3d/krebs0038.png.gifbin0 -> 384 bytes
-rw-r--r--cholerab/bling/cancer_3d/krebs0039.lcdbin0 -> 864 bytes
-rw-r--r--cholerab/bling/cancer_3d/krebs0039.pngbin0 -> 2308 bytes
-rw-r--r--cholerab/bling/cancer_3d/krebs0039.png.gifbin0 -> 383 bytes
-rw-r--r--cholerab/bling/cancer_3d/krebs0040.lcdbin0 -> 864 bytes
-rw-r--r--cholerab/bling/cancer_3d/krebs0040.pngbin0 -> 2328 bytes
-rw-r--r--cholerab/bling/cancer_3d/krebs0040.png.gifbin0 -> 381 bytes
-rw-r--r--cholerab/bling/cancer_3d/krebs0041.lcdbin0 -> 864 bytes
-rw-r--r--cholerab/bling/cancer_3d/krebs0041.pngbin0 -> 2327 bytes
-rw-r--r--cholerab/bling/cancer_3d/krebs0041.png.gifbin0 -> 363 bytes
-rw-r--r--cholerab/bling/cancer_3d/krebs0042.lcdbin0 -> 864 bytes
-rw-r--r--cholerab/bling/cancer_3d/krebs0042.pngbin0 -> 2220 bytes
-rw-r--r--cholerab/bling/cancer_3d/krebs0042.png.gifbin0 -> 355 bytes
-rw-r--r--cholerab/bling/cancer_3d/krebs0043.lcdbin0 -> 864 bytes
-rw-r--r--cholerab/bling/cancer_3d/krebs0043.pngbin0 -> 2150 bytes
-rw-r--r--cholerab/bling/cancer_3d/krebs0043.png.gifbin0 -> 337 bytes
-rw-r--r--cholerab/bling/cancer_3d/krebs0044.lcdbin0 -> 864 bytes
-rw-r--r--cholerab/bling/cancer_3d/krebs0044.pngbin0 -> 2006 bytes
-rw-r--r--cholerab/bling/cancer_3d/krebs0044.png.gifbin0 -> 323 bytes
-rw-r--r--cholerab/bling/cancer_3d/krebs0045.lcdbin0 -> 864 bytes
-rw-r--r--cholerab/bling/cancer_3d/krebs0045.pngbin0 -> 1884 bytes
-rw-r--r--cholerab/bling/cancer_3d/krebs0045.png.gifbin0 -> 303 bytes
-rw-r--r--cholerab/bling/cancer_3d/krebs0046.lcdbin0 -> 864 bytes
-rw-r--r--cholerab/bling/cancer_3d/krebs0046.pngbin0 -> 1654 bytes
-rw-r--r--cholerab/bling/cancer_3d/krebs0046.png.gifbin0 -> 289 bytes
-rw-r--r--cholerab/bling/cancer_3d/krebs0047.lcdbin0 -> 864 bytes
-rw-r--r--cholerab/bling/cancer_3d/krebs0047.pngbin0 -> 1471 bytes
-rw-r--r--cholerab/bling/cancer_3d/krebs0047.png.gifbin0 -> 277 bytes
-rw-r--r--cholerab/bling/cancer_3d/krebs0048.lcdbin0 -> 864 bytes
-rw-r--r--cholerab/bling/cancer_3d/krebs0048.pngbin0 -> 1325 bytes
-rw-r--r--cholerab/bling/cancer_3d/krebs0048.png.gifbin0 -> 258 bytes
-rw-r--r--cholerab/bling/cancer_3d/krebs0049.lcdbin0 -> 864 bytes
-rw-r--r--cholerab/bling/cancer_3d/krebs0049.pngbin0 -> 1179 bytes
-rw-r--r--cholerab/bling/cancer_3d/krebs0049.png.gifbin0 -> 249 bytes
-rw-r--r--cholerab/bling/cancer_3d/krebs0050.lcdbin0 -> 864 bytes
-rw-r--r--cholerab/bling/cancer_3d/krebs0050.pngbin0 -> 1023 bytes
-rw-r--r--cholerab/bling/cancer_3d/krebs0050.png.gifbin0 -> 245 bytes
-rw-r--r--cholerab/bling/cancer_3d/krebs0051.lcdbin0 -> 864 bytes
-rw-r--r--cholerab/bling/cancer_3d/krebs0051.pngbin0 -> 947 bytes
-rw-r--r--cholerab/bling/cancer_3d/krebs0051.png.gifbin0 -> 241 bytes
-rw-r--r--cholerab/bling/cancer_3d/krebs0052.lcdbin0 -> 864 bytes
-rw-r--r--cholerab/bling/cancer_3d/krebs0052.pngbin0 -> 848 bytes
-rw-r--r--cholerab/bling/cancer_3d/krebs0052.png.gifbin0 -> 237 bytes
-rw-r--r--cholerab/bling/cancer_3d/krebs0053.lcdbin0 -> 864 bytes
-rw-r--r--cholerab/bling/cancer_3d/krebs0053.pngbin0 -> 613 bytes
-rw-r--r--cholerab/bling/cancer_3d/krebs0053.png.gifbin0 -> 227 bytes
-rw-r--r--cholerab/bling/cancer_3d/krebs0054.lcdbin0 -> 864 bytes
-rw-r--r--cholerab/bling/cancer_3d/krebs0054.pngbin0 -> 620 bytes
-rw-r--r--cholerab/bling/cancer_3d/krebs0054.png.gifbin0 -> 230 bytes
-rw-r--r--cholerab/bling/cancer_3d/krebs0055.lcdbin0 -> 864 bytes
-rw-r--r--cholerab/bling/cancer_3d/krebs0055.pngbin0 -> 853 bytes
-rw-r--r--cholerab/bling/cancer_3d/krebs0055.png.gifbin0 -> 236 bytes
-rw-r--r--cholerab/bling/cancer_3d/krebs0056.lcdbin0 -> 864 bytes
-rw-r--r--cholerab/bling/cancer_3d/krebs0056.pngbin0 -> 941 bytes
-rw-r--r--cholerab/bling/cancer_3d/krebs0056.png.gifbin0 -> 243 bytes
-rw-r--r--cholerab/bling/cancer_3d/krebs0057.lcdbin0 -> 864 bytes
-rw-r--r--cholerab/bling/cancer_3d/krebs0057.pngbin0 -> 1035 bytes
-rw-r--r--cholerab/bling/cancer_3d/krebs0057.png.gifbin0 -> 243 bytes
-rw-r--r--cholerab/bling/cancer_3d/krebs0058.lcdbin0 -> 864 bytes
-rw-r--r--cholerab/bling/cancer_3d/krebs0058.pngbin0 -> 1192 bytes
-rw-r--r--cholerab/bling/cancer_3d/krebs0058.png.gifbin0 -> 249 bytes
-rw-r--r--cholerab/bling/cancer_3d/krebs0059.lcdbin0 -> 864 bytes
-rw-r--r--cholerab/bling/cancer_3d/krebs0059.pngbin0 -> 1399 bytes
-rw-r--r--cholerab/bling/cancer_3d/krebs0059.png.gifbin0 -> 262 bytes
-rw-r--r--cholerab/bling/cancer_3d/krebs0060.lcdbin0 -> 864 bytes
-rw-r--r--cholerab/bling/cancer_3d/krebs0060.pngbin0 -> 1564 bytes
-rw-r--r--cholerab/bling/cancer_3d/krebs0060.png.gifbin0 -> 280 bytes
-rw-r--r--cholerab/bling/cancer_3d/krebs0061.lcdbin0 -> 864 bytes
-rw-r--r--cholerab/bling/cancer_3d/krebs0061.pngbin0 -> 1691 bytes
-rw-r--r--cholerab/bling/cancer_3d/krebs0061.png.gifbin0 -> 286 bytes
-rw-r--r--cholerab/bling/cancer_3d/krebs0062.lcdbin0 -> 864 bytes
-rw-r--r--cholerab/bling/cancer_3d/krebs0062.pngbin0 -> 1954 bytes
-rw-r--r--cholerab/bling/cancer_3d/krebs0062.png.gifbin0 -> 303 bytes
-rw-r--r--cholerab/bling/cancer_3d/krebs0063.lcdbin0 -> 864 bytes
-rw-r--r--cholerab/bling/cancer_3d/krebs0063.pngbin0 -> 2031 bytes
-rw-r--r--cholerab/bling/cancer_3d/krebs0063.png.gifbin0 -> 328 bytes
-rw-r--r--cholerab/bling/cancer_3d/krebs0064.lcdbin0 -> 864 bytes
-rw-r--r--cholerab/bling/cancer_3d/krebs0064.pngbin0 -> 2151 bytes
-rw-r--r--cholerab/bling/cancer_3d/krebs0064.png.gifbin0 -> 345 bytes
-rw-r--r--cholerab/bling/cancer_3d/krebs0065.lcdbin0 -> 864 bytes
-rw-r--r--cholerab/bling/cancer_3d/krebs0065.pngbin0 -> 2268 bytes
-rw-r--r--cholerab/bling/cancer_3d/krebs0065.png.gifbin0 -> 351 bytes
-rw-r--r--cholerab/bling/cancer_3d/krebs0066.lcdbin0 -> 864 bytes
-rw-r--r--cholerab/bling/cancer_3d/krebs0066.pngbin0 -> 2369 bytes
-rw-r--r--cholerab/bling/cancer_3d/krebs0066.png.gifbin0 -> 369 bytes
-rw-r--r--cholerab/bling/cancer_3d/krebs0067.lcdbin0 -> 864 bytes
-rw-r--r--cholerab/bling/cancer_3d/krebs0067.pngbin0 -> 2363 bytes
-rw-r--r--cholerab/bling/cancer_3d/krebs0067.png.gifbin0 -> 378 bytes
-rw-r--r--cholerab/bling/cancer_3d/krebs0068.lcdbin0 -> 864 bytes
-rw-r--r--cholerab/bling/cancer_3d/krebs0068.pngbin0 -> 2297 bytes
-rw-r--r--cholerab/bling/cancer_3d/krebs0068.png.gifbin0 -> 386 bytes
-rw-r--r--cholerab/bling/cancer_3d/krebs0069.lcdbin0 -> 864 bytes
-rw-r--r--cholerab/bling/cancer_3d/krebs0069.pngbin0 -> 2319 bytes
-rw-r--r--cholerab/bling/cancer_3d/krebs0069.png.gifbin0 -> 386 bytes
-rw-r--r--cholerab/bling/cancer_3d/krebs0070.lcdbin0 -> 864 bytes
-rw-r--r--cholerab/bling/cancer_3d/krebs0070.pngbin0 -> 2333 bytes
-rw-r--r--cholerab/bling/cancer_3d/krebs0070.png.gifbin0 -> 385 bytes
-rw-r--r--cholerab/bling/cancer_3d/run.sh18
-rw-r--r--cholerab/bling/filehooker_grub_splash.xcfbin0 -> 76747 bytes
-rwxr-xr-xcholerab/bling/filter.sh3
-rw-r--r--cholerab/bling/krebs-v1.txt9
-rw-r--r--cholerab/bling/krebs-v2.txt13
-rw-r--r--cholerab/bling/krebs-v2.xcfbin0 -> 156357 bytes
-rw-r--r--cholerab/bling/krebs-v2.xpm24
-rw-r--r--cholerab/bling/krebs-v2f.txt13
-rw-r--r--cholerab/bling/krebs-v3_small.txt10
-rw-r--r--cholerab/bling/krebs_42.svg86
-rw-r--r--cholerab/bling/krebs_aquarium.svg87
-rw-r--r--cholerab/bling/krebs_inverse_r0ket.gifbin0 -> 508 bytes
-rw-r--r--cholerab/bling/krebs_lcd.pngbin0 -> 2105 bytes
-rw-r--r--cholerab/bling/krebs_plain.pngbin0 -> 90403 bytes
-rw-r--r--cholerab/bling/krebs_plain.svg92
-rw-r--r--cholerab/bling/krebs_plain_a4.svg112
-rw-r--r--cholerab/bling/krebs_plain_negate.pngbin0 -> 344 bytes
-rw-r--r--cholerab/bling/krebs_plain_negate_nobg.pngbin0 -> 358 bytes
-rw-r--r--cholerab/bling/krebs_plain_r0ket.gifbin0 -> 508 bytes
-rw-r--r--cholerab/bling/nick_krebs.c60
-rw-r--r--cholerab/cholerab1
-rw-r--r--cholerab/clive-245
-rw-r--r--cholerab/coda4
-rw-r--r--cholerab/cookbook/LASAGNE113
-rwxr-xr-xcholerab/cookbook/reducer.sh7
-rw-r--r--cholerab/dn4212
-rw-r--r--cholerab/filebitch/stuff_people_want6
-rw-r--r--cholerab/gold/partnernet5
-rw-r--r--cholerab/install_stories/debian_squeeze_minimal23
-rw-r--r--cholerab/kasten/doku7
-rw-r--r--cholerab/knut/Makefile22
-rw-r--r--cholerab/knut/README2
-rwxr-xr-xcholerab/knut/clients/cnot/index22
-rwxr-xr-xcholerab/knut/clients/pidgin_speak/speak.py31
-rwxr-xr-xcholerab/knut/index.js73
-rwxr-xr-xcholerab/knut/plugs/pynot/index17
-rwxr-xr-xcholerab/knut/plugs/ttycnser/bin/login4
-rwxr-xr-xcholerab/knut/plugs/ttycnser/bin/write4
l---------cholerab/knut/plugs/ttycnser/index1
-rw-r--r--cholerab/knut/src/io/slurp.js38
-rw-r--r--cholerab/ledger-spec.markdown17
-rw-r--r--cholerab/manifest9
-rw-r--r--cholerab/news/Candidate27
-rw-r--r--cholerab/news/Issue#032
-rw-r--r--cholerab/news/Issue#162
-rw-r--r--cholerab/news/Issue#2198
-rw-r--r--cholerab/painkiller10
-rw-r--r--cholerab/pleni/2011-06-0430
-rw-r--r--cholerab/pleni/camplist36
-rw-r--r--cholerab/pleni/feldplenum_20110811115
-rw-r--r--cholerab/proto39
-rw-r--r--cholerab/reports/Empera.txt53
-rw-r--r--cholerab/shirts/bestellliste32
-rw-r--r--cholerab/tahoe/brick_installation48
-rw-r--r--cholerab/tahoe/client_installation15
-rw-r--r--cholerab/tahoe/tahoe.service10
-rw-r--r--cholerab/thesauron105
-rw-r--r--cholerab/tinc-win7
-rw-r--r--cholerab/tincrouting9
-rw-r--r--cholerab/too_old/User-Agent.txt19
-rw-r--r--elchos/.gitignore4
-rw-r--r--elchos/INSTALL1
-rw-r--r--elchos/README.md23
-rw-r--r--elchos/TODO1
-rw-r--r--elchos/aitab3
-rwxr-xr-xelchos/build.sh265
-rw-r--r--elchos/efiboot/loader/entries/archiso-x86_64-cd.conf4
-rw-r--r--elchos/efiboot/loader/entries/archiso-x86_64-usb.conf4
-rw-r--r--elchos/efiboot/loader/entries/uefi-shell-v1-x86_64.conf2
-rw-r--r--elchos/efiboot/loader/entries/uefi-shell-v2-x86_64.conf2
-rw-r--r--elchos/efiboot/loader/loader.conf2
-rw-r--r--elchos/html/index.html42
l---------elchos/html/out1
-rw-r--r--elchos/isolinux/isolinux.cfg6
-rw-r--r--elchos/mkinitcpio.conf2
-rw-r--r--elchos/packages.both49
-rw-r--r--elchos/packages.i6860
-rw-r--r--elchos/packages.x86_643
-rw-r--r--elchos/pacman.conf92
-rwxr-xr-xelchos/refresh.sh8
-rw-r--r--elchos/root-image/etc/collectd.conf84
-rw-r--r--elchos/root-image/etc/fstab0
-rw-r--r--elchos/root-image/etc/hostname1
-rw-r--r--elchos/root-image/etc/locale.conf1
-rw-r--r--elchos/root-image/etc/pam.d/su6
-rw-r--r--elchos/root-image/etc/sudoers.d/g_wheel1
-rwxr-xr-xelchos/root-image/etc/systemd/scripts/choose-mirror26
-rw-r--r--elchos/root-image/etc/systemd/system/Reaktor.service14
-rw-r--r--elchos/root-image/etc/systemd/system/choose-mirror.service10
-rw-r--r--elchos/root-image/etc/systemd/system/collectd.service.d/wait.conf2
-rw-r--r--elchos/root-image/etc/systemd/system/dhcpcd.service.d/force-reboot.conf2
-rw-r--r--elchos/root-image/etc/systemd/system/elch-hostname.service11
-rw-r--r--elchos/root-image/etc/systemd/system/etc-pacman.d-gnupg.mount8
-rw-r--r--elchos/root-image/etc/systemd/system/getty@tty1.service.d/run_krebs_secret.conf3
-rw-r--r--elchos/root-image/etc/systemd/system/hddtemp.service.d/monitor_all_disks.conf3
-rw-r--r--elchos/root-image/etc/systemd/system/ntpdate.service.d/set_hwclock.conf2
-rw-r--r--elchos/root-image/etc/systemd/system/pacman-init.service15
-rw-r--r--elchos/root-image/etc/systemd/system/start-ncdc@.service13
-rw-r--r--elchos/root-image/etc/systemd/system/tor-configure-hidden.service11
-rw-r--r--elchos/root-image/etc/udev/rules.d/81-dhcpcd.rules1
-rwxr-xr-xelchos/root-image/krebs/bin/add-reaktor-secret.sh24
-rwxr-xr-xelchos/root-image/krebs/bin/macid.sh2
-rwxr-xr-xelchos/root-image/krebs/bin/reaktor-shell.sh4
-rwxr-xr-xelchos/root-image/krebs/bin/refresh-shares.ship11
-rwxr-xr-xelchos/root-image/krebs/bin/set-hostname.sh5
-rwxr-xr-xelchos/root-image/krebs/bin/start-ncdc.ship26
-rwxr-xr-xelchos/root-image/krebs/bin/tor-get-hidden-service.sh2
-rwxr-xr-xelchos/root-image/krebs/bin/tor_configure_hidden_service.ship16
-rwxr-xr-xelchos/root-image/krebs/bin/tor_publish_ssh.ship12
-rwxr-xr-xelchos/root-image/krebs/bin/update-search.sh5
-rwxr-xr-xelchos/root-image/krebs/bin/vim_sane_defaults.ship10
-rw-r--r--elchos/root-image/krebs/config.sh3
-rw-r--r--elchos/root-image/krebs/etc/authorized_keys6
-rw-r--r--elchos/root-image/krebs/etc/vsftpd.conf12
-rw-r--r--elchos/root-image/krebs/lib/_punani_db57
-rw-r--r--elchos/root-image/krebs/lib/color7
-rw-r--r--elchos/root-image/krebs/lib/core80
-rw-r--r--elchos/root-image/krebs/lib/filehooker152
-rw-r--r--elchos/root-image/krebs/lib/iso7
-rw-r--r--elchos/root-image/krebs/lib/krebs16
-rw-r--r--elchos/root-image/krebs/lib/network100
-rw-r--r--elchos/root-image/krebs/lib/punani99
-rw-r--r--elchos/root-image/krebs/lib/retiolum99
-rw-r--r--elchos/root-image/krebs/lib/tahoe34
-rw-r--r--elchos/root-image/krebs/lib/tor19
-rw-r--r--elchos/root-image/krebs/lib/vim40
-rwxr-xr-xelchos/root-image/root/.automated_script.sh34
-rw-r--r--elchos/root-image/root/.zlogin1
-rwxr-xr-xelchos/root-image/root/customize_root_image.sh76
-rwxr-xr-xelchos/root-image/usr/bin/ncdcbin0 -> 4242384 bytes
-rw-r--r--elchos/syslinux/archiso.cfg11
-rw-r--r--elchos/syslinux/archiso_head.cfg25
-rw-r--r--elchos/syslinux/archiso_pxe32.cfg32
-rw-r--r--elchos/syslinux/archiso_pxe64.cfg32
-rw-r--r--elchos/syslinux/archiso_pxe_32_inc.cfg3
-rw-r--r--elchos/syslinux/archiso_pxe_both_inc.cfg4
-rw-r--r--elchos/syslinux/archiso_pxe_choose.cfg11
-rw-r--r--elchos/syslinux/archiso_sys32.cfg9
-rw-r--r--elchos/syslinux/archiso_sys64.cfg9
-rw-r--r--elchos/syslinux/archiso_sys_32_inc.cfg3
-rw-r--r--elchos/syslinux/archiso_sys_both_inc.cfg4
-rw-r--r--elchos/syslinux/archiso_sys_choose.cfg11
-rw-r--r--elchos/syslinux/archiso_tail.cfg27
-rw-r--r--elchos/syslinux/splash.pngbin0 -> 8810 bytes
-rw-r--r--elchos/syslinux/syslinux.cfg5
-rw-r--r--ext/ovh/README31
-rw-r--r--ext/ovh/soapi/Makefile25
-rw-r--r--ext/ovh/soapi/README1
-rwxr-xr-xext/ovh/soapi/domainCapabilities29
-rwxr-xr-xext/ovh/soapi/domainInfo29
-rwxr-xr-xext/ovh/soapi/domainList28
-rw-r--r--ext/ovh/soapi/soapi.wsdl23935
-rwxr-xr-xext/ovh/soapi/zoneEntryAdd33
-rwxr-xr-xext/ovh/soapi/zoneEntryDel33
-rwxr-xr-xext/ovh/soapi/zoneEntryList29
-rwxr-xr-xext/ovh/soapi/zoneExport30
-rwxr-xr-xext/ovh/soapi/zoneImport33
-rwxr-xr-xext/solus/bin/client28
-rwxr-xr-xext/solus/lib/parse-return-data20
-rwxr-xr-xgit/gitolite-hooks/irc-announce114
-rw-r--r--go/Makefile35
-rw-r--r--go/README.markdown54
-rw-r--r--go/etc/conf.d/go.env2
-rw-r--r--go/etc/systemd/system/go.service14
-rw-r--r--go/index.js106
-rw-r--r--go/package.json10
-rwxr-xr-xgo/t/docker/docker_deploy.sh20
-rw-r--r--go/t/docker/dockertest/deploy11
-rw-r--r--god/Eselkalk/README3
-rw-r--r--god/Eselkalk/index.js57
-rw-r--r--god/Monitoring/collectd/collectd.conf37
-rw-r--r--god/Monitoring/collectd/supervisor.d/collectd.conf3
-rw-r--r--god/Monitoring/nagios/Makefile32
-rw-r--r--god/Monitoring/nagios/TODO0
-rw-r--r--god/Monitoring/nagios/conf/extinfo.cfg9
-rw-r--r--god/Monitoring/nagios/conf/hostgroups_generic.cfg28
-rw-r--r--god/Monitoring/nagios/conf/krebs_hosts.cfg78
-rw-r--r--god/Monitoring/nagios/conf/krebsnet.cfg20
-rw-r--r--god/Monitoring/nagios/conf/localhost.cfg60
-rw-r--r--god/Monitoring/nagios/conf/other_hosts.cfg22
-rw-r--r--god/Monitoring/nagios/conf/services.cfg26
-rw-r--r--god/Monitoring/nagios/conf/shack_contacts.cfg22
-rw-r--r--god/Monitoring/nagios/conf/shack_guests.cfg105
-rw-r--r--god/Monitoring/nagios/conf/shack_infrastructure.cfg241
-rw-r--r--god/Monitoring/nagios/conf/shacknet.cfg47
-rw-r--r--god/Monitoring/nagios/conf/templates.cfg45
-rw-r--r--god/Monitoring/nagios/conf/timeperiods.cfg50
-rw-r--r--god/Monitoring/nagios/conf/tinc_hosts.cfg33
-rw-r--r--god/Monitoring/nagios/conf/tincnet.cfg31
-rw-r--r--god/Monitoring/nagios/htdocs/images/logos/krebs/bitcoin_miner.gd2bin0 -> 1047 bytes
-rw-r--r--god/Monitoring/nagios/htdocs/images/logos/krebs/bitcoin_miner.pngbin0 -> 3681 bytes
-rw-r--r--god/Monitoring/nagios/htdocs/images/logos/krebs/favicon.icobin0 -> 822 bytes
-rw-r--r--god/Monitoring/nagios/htdocs/images/logos/krebs/krebs.gd2bin0 -> 1047 bytes
-rw-r--r--god/Monitoring/nagios/htdocs/images/logos/krebs/krebs.pngbin0 -> 238 bytes
-rw-r--r--god/Monitoring/nagios/htdocs/images/logos/krebs/shack.gd2bin0 -> 1047 bytes
-rw-r--r--god/Monitoring/nagios/htdocs/images/logos/krebs/shack.pngbin0 -> 316 bytes
-rw-r--r--god/Monitoring/nagios/htdocs/images/logos/krebs/tinc.gd2bin0 -> 1305 bytes
-rw-r--r--god/Monitoring/nagios/htdocs/images/logos/krebs/tinc.pngbin0 -> 361 bytes
-rw-r--r--god/Monitoring/nagios/htdocs/images/logos/krebs/wireless_access_point.gd2bin0 -> 1047 bytes
-rw-r--r--god/Monitoring/nagios/htdocs/images/logos/krebs/wireless_access_point.pngbin0 -> 883 bytes
-rw-r--r--god/Monitoring/nagios/htdocs/images/logos/krebs/wireless_access_point_64.pngbin0 -> 5364 bytes
-rw-r--r--god/Monitoring/nagios/htpasswd.users2
-rwxr-xr-xgod/Monitoring/nagios/plugins/check.bat0
-rwxr-xr-xgod/Monitoring/nagios/plugins/check.sh5
-rwxr-xr-xgod/Monitoring/nagios/plugins/check_aptbin0 -> 106120 bytes
-rwxr-xr-xgod/Monitoring/nagios/plugins/check_bgpstate215
-rwxr-xr-xgod/Monitoring/nagios/plugins/check_breeze87
-rwxr-xr-xgod/Monitoring/nagios/plugins/check_btcguild_miner36
-rwxr-xr-xgod/Monitoring/nagios/plugins/check_by_sshbin0 -> 46192 bytes
l---------god/Monitoring/nagios/plugins/check_clamd1
-rwxr-xr-xgod/Monitoring/nagios/plugins/check_clusterbin0 -> 32072 bytes
-rwxr-xr-xgod/Monitoring/nagios/plugins/check_cpu165
-rwxr-xr-xgod/Monitoring/nagios/plugins/check_dhcpbin0 -> 44816 bytes
-rwxr-xr-xgod/Monitoring/nagios/plugins/check_digbin0 -> 41392 bytes
-rwxr-xr-xgod/Monitoring/nagios/plugins/check_diskbin0 -> 119216 bytes
-rwxr-xr-xgod/Monitoring/nagios/plugins/check_disk_smb307
-rwxr-xr-xgod/Monitoring/nagios/plugins/check_dnsbin0 -> 45488 bytes
-rwxr-xr-xgod/Monitoring/nagios/plugins/check_dummybin0 -> 28968 bytes
-rwxr-xr-xgod/Monitoring/nagios/plugins/check_dummy.sh5
-rwxr-xr-xgod/Monitoring/nagios/plugins/check_file_age112
-rwxr-xr-xgod/Monitoring/nagios/plugins/check_flexlm244
-rwxr-xr-xgod/Monitoring/nagios/plugins/check_fpingbin0 -> 44656 bytes
l---------god/Monitoring/nagios/plugins/check_ftp1
-rwxr-xr-xgod/Monitoring/nagios/plugins/check_gamebin0 -> 36584 bytes
l---------god/Monitoring/nagios/plugins/check_host1
-rwxr-xr-xgod/Monitoring/nagios/plugins/check_hpjdbin0 -> 41136 bytes
-rwxr-xr-xgod/Monitoring/nagios/plugins/check_httpbin0 -> 164624 bytes
-rwxr-xr-xgod/Monitoring/nagios/plugins/check_icmpbin0 -> 49264 bytes
-rwxr-xr-xgod/Monitoring/nagios/plugins/check_ide_smartbin0 -> 34536 bytes
-rwxr-xr-xgod/Monitoring/nagios/plugins/check_ifoperstatus472
-rwxr-xr-xgod/Monitoring/nagios/plugins/check_ifstatus425
l---------god/Monitoring/nagios/plugins/check_imap1
-rwxr-xr-xgod/Monitoring/nagios/plugins/check_ircd239
l---------god/Monitoring/nagios/plugins/check_jabber1
-rwxr-xr-xgod/Monitoring/nagios/plugins/check_ldapbin0 -> 40816 bytes
l---------god/Monitoring/nagios/plugins/check_ldaps1
-rwxr-xr-xgod/Monitoring/nagios/plugins/check_linux_raid115
-rwxr-xr-xgod/Monitoring/nagios/plugins/check_loadbin0 -> 36168 bytes
-rwxr-xr-xgod/Monitoring/nagios/plugins/check_log219
-rwxr-xr-xgod/Monitoring/nagios/plugins/check_mailq608
-rwxr-xr-xgod/Monitoring/nagios/plugins/check_mem.pl263
-rwxr-xr-xgod/Monitoring/nagios/plugins/check_mrtgbin0 -> 36264 bytes
-rwxr-xr-xgod/Monitoring/nagios/plugins/check_mrtgtrafbin0 -> 34440 bytes
-rwxr-xr-xgod/Monitoring/nagios/plugins/check_mysqlbin0 -> 45936 bytes
-rwxr-xr-xgod/Monitoring/nagios/plugins/check_mysql_querybin0 -> 44688 bytes
-rwxr-xr-xgod/Monitoring/nagios/plugins/check_nagiosbin0 -> 36616 bytes
l---------god/Monitoring/nagios/plugins/check_nntp1
l---------god/Monitoring/nagios/plugins/check_nntps1
-rwxr-xr-xgod/Monitoring/nagios/plugins/check_ntbin0 -> 48720 bytes
-rwxr-xr-xgod/Monitoring/nagios/plugins/check_ntpbin0 -> 46288 bytes
-rwxr-xr-xgod/Monitoring/nagios/plugins/check_ntp_peerbin0 -> 44880 bytes
-rwxr-xr-xgod/Monitoring/nagios/plugins/check_ntp_timebin0 -> 42224 bytes
-rwxr-xr-xgod/Monitoring/nagios/plugins/check_nwstatbin0 -> 60912 bytes
-rwxr-xr-xgod/Monitoring/nagios/plugins/check_oracle287
-rwxr-xr-xgod/Monitoring/nagios/plugins/check_overcrbin0 -> 40400 bytes
-rwxr-xr-xgod/Monitoring/nagios/plugins/check_pgsqlbin0 -> 40656 bytes
-rwxr-xr-xgod/Monitoring/nagios/plugins/check_pingbin0 -> 48848 bytes
l---------god/Monitoring/nagios/plugins/check_pop1
-rwxr-xr-xgod/Monitoring/nagios/plugins/check_procsbin0 -> 114640 bytes
-rwxr-xr-xgod/Monitoring/nagios/plugins/check_radiusbin0 -> 40624 bytes
-rwxr-xr-xgod/Monitoring/nagios/plugins/check_realbin0 -> 40464 bytes
-rwxr-xr-xgod/Monitoring/nagios/plugins/check_rpc375
l---------god/Monitoring/nagios/plugins/check_rta_multi1
-rwxr-xr-xgod/Monitoring/nagios/plugins/check_sensors65
-rwxr-xr-xgod/Monitoring/nagios/plugins/check_shinken.py157
l---------god/Monitoring/nagios/plugins/check_simap1
-rwxr-xr-xgod/Monitoring/nagios/plugins/check_sip252
-rwxr-xr-xgod/Monitoring/nagios/plugins/check_smtpbin0 -> 127216 bytes
-rwxr-xr-xgod/Monitoring/nagios/plugins/check_snmpbin0 -> 152008 bytes
-rwxr-xr-xgod/Monitoring/nagios/plugins/check_speed34
l---------god/Monitoring/nagios/plugins/check_spop1
-rwxr-xr-xgod/Monitoring/nagios/plugins/check_sshbin0 -> 36688 bytes
l---------god/Monitoring/nagios/plugins/check_ssmtp1
-rwxr-xr-xgod/Monitoring/nagios/plugins/check_swapbin0 -> 37832 bytes
-rwxr-xr-xgod/Monitoring/nagios/plugins/check_tcpbin0 -> 49328 bytes
-rwxr-xr-xgod/Monitoring/nagios/plugins/check_temper31
-rwxr-xr-xgod/Monitoring/nagios/plugins/check_timebin0 -> 38128 bytes
l---------god/Monitoring/nagios/plugins/check_udp1
-rwxr-xr-xgod/Monitoring/nagios/plugins/check_upsbin0 -> 44560 bytes
-rwxr-xr-xgod/Monitoring/nagios/plugins/check_usersbin0 -> 36168 bytes
-rwxr-xr-xgod/Monitoring/nagios/plugins/check_wave122
-rwxr-xr-xgod/Monitoring/nagios/plugins/getwmic.sh7
-rwxr-xr-xgod/Monitoring/nagios/plugins/link_vmware_host_vm.py184
-rwxr-xr-xgod/Monitoring/nagios/plugins/negatebin0 -> 38152 bytes
-rwxr-xr-xgod/Monitoring/nagios/plugins/nmap_discovery_runner.py419
-rwxr-xr-xgod/Monitoring/nagios/plugins/notify.sh6
-rwxr-xr-xgod/Monitoring/nagios/plugins/notify_irc87
-rwxr-xr-xgod/Monitoring/nagios/plugins/nsca_client.py184
-rwxr-xr-xgod/Monitoring/nagios/plugins/sendmailhost.pl96
-rwxr-xr-xgod/Monitoring/nagios/plugins/sendmailservices.pl105
-rwxr-xr-xgod/Monitoring/nagios/plugins/urlizebin0 -> 36104 bytes
-rw-r--r--god/Monitoring/nagios/plugins/utils.pm67
-rwxr-xr-xgod/Monitoring/nagios/plugins/utils.sh23
-rwxr-xr-xgod/Monitoring/nagios/plugins/vmware_discovery_runner.py225
-rw-r--r--god/Monitoring/nagios/shinken/brokerd-windows.ini26
-rw-r--r--god/Monitoring/nagios/shinken/brokerd.ini37
-rwxr-xr-xgod/Monitoring/nagios/shinken/certs/ca.pem64
-rwxr-xr-xgod/Monitoring/nagios/shinken/certs/client.pem86
-rw-r--r--god/Monitoring/nagios/shinken/certs/server.pem86
-rw-r--r--god/Monitoring/nagios/shinken/commands.cfg285
-rw-r--r--god/Monitoring/nagios/shinken/contactgroups.cfg8
-rw-r--r--god/Monitoring/nagios/shinken/contacts.cfg10
-rw-r--r--god/Monitoring/nagios/shinken/dependencies.cfg25
-rw-r--r--god/Monitoring/nagios/shinken/discovery.cfg25
-rw-r--r--god/Monitoring/nagios/shinken/discovery_rules.cfg203
-rw-r--r--god/Monitoring/nagios/shinken/discovery_runs.cfg10
-rw-r--r--god/Monitoring/nagios/shinken/escalations.cfg18
-rw-r--r--god/Monitoring/nagios/shinken/hostgroups.cfg17
-rw-r--r--god/Monitoring/nagios/shinken/hosts/localhost.cfg7
-rw-r--r--god/Monitoring/nagios/shinken/nagios-windows.cfg136
-rw-r--r--god/Monitoring/nagios/shinken/nagios.cfg157
-rw-r--r--god/Monitoring/nagios/shinken/objects/groups/root_contact.cfg16
-rw-r--r--god/Monitoring/nagios/shinken/objects/internet/euer.krebsco.de/Http.cfg6
-rw-r--r--god/Monitoring/nagios/shinken/objects/internet/euer.krebsco.de/Ssh.cfg6
-rw-r--r--god/Monitoring/nagios/shinken/objects/internet/euer.krebsco.de/euer.krebsco.de.cfg4
-rw-r--r--god/Monitoring/nagios/shinken/objects/internet/google.de/Http.cfg6
-rw-r--r--god/Monitoring/nagios/shinken/objects/internet/google.de/Https-Certificate.cfg6
-rw-r--r--god/Monitoring/nagios/shinken/objects/internet/google.de/Https.cfg6
-rw-r--r--god/Monitoring/nagios/shinken/objects/internet/google.de/google.de.cfg4
-rw-r--r--god/Monitoring/nagios/shinken/objects/internet/oxberg.krebsco.de/84-23-80-172.blue.kundencontroller.de.cfg4
-rw-r--r--god/Monitoring/nagios/shinken/objects/internet/oxberg.krebsco.de/Http.cfg6
-rw-r--r--god/Monitoring/nagios/shinken/objects/internet/oxberg.krebsco.de/SMTP.cfg6
-rw-r--r--god/Monitoring/nagios/shinken/objects/internet/oxberg.krebsco.de/Ssh.cfg6
-rw-r--r--god/Monitoring/nagios/shinken/objects/internet/shackspace.de/DNS.cfg6
-rw-r--r--god/Monitoring/nagios/shinken/objects/internet/shackspace.de/Http.cfg6
-rw-r--r--god/Monitoring/nagios/shinken/objects/internet/shackspace.de/Https-Certificate.cfg6
-rw-r--r--god/Monitoring/nagios/shinken/objects/internet/shackspace.de/Https.cfg6
-rw-r--r--god/Monitoring/nagios/shinken/objects/internet/shackspace.de/SMTP.cfg6
-rw-r--r--god/Monitoring/nagios/shinken/objects/internet/shackspace.de/Ssh.cfg6
-rw-r--r--god/Monitoring/nagios/shinken/objects/internet/shackspace.de/shackspace.de.cfg4
-rw-r--r--god/Monitoring/nagios/shinken/objects/retiolum/supernode/Http.cfg6
-rw-r--r--god/Monitoring/nagios/shinken/objects/retiolum/supernode/SMTP.cfg6
-rw-r--r--god/Monitoring/nagios/shinken/objects/retiolum/supernode/Ssh.cfg6
-rw-r--r--god/Monitoring/nagios/shinken/objects/retiolum/supernode/supernode.cfg5
-rw-r--r--god/Monitoring/nagios/shinken/objects/shackspace/10.42.0.2/10.42.0.2.cfg4
-rw-r--r--god/Monitoring/nagios/shinken/objects/shackspace/10.42.0.2/Http.cfg6
-rw-r--r--god/Monitoring/nagios/shinken/objects/shackspace/10.42.0.20/10.42.0.20.cfg4
-rw-r--r--god/Monitoring/nagios/shinken/objects/shackspace/10.42.0.20/Http.cfg6
-rw-r--r--god/Monitoring/nagios/shinken/objects/shackspace/10.42.0.3/10.42.0.3.cfg4
-rw-r--r--god/Monitoring/nagios/shinken/objects/shackspace/10.42.0.3/Ssh.cfg6
-rw-r--r--god/Monitoring/nagios/shinken/objects/shackspace/10.42.0.4/10.42.0.4.cfg4
-rw-r--r--god/Monitoring/nagios/shinken/objects/shackspace/10.42.0.5/10.42.0.5.cfg4
-rw-r--r--god/Monitoring/nagios/shinken/objects/shackspace/10.42.0.5/Http.cfg6
-rw-r--r--god/Monitoring/nagios/shinken/objects/shackspace/10.42.0.7/10.42.0.7.cfg4
-rw-r--r--god/Monitoring/nagios/shinken/objects/shackspace/10.42.0.7/Http.cfg6
-rw-r--r--god/Monitoring/nagios/shinken/objects/shackspace/10.42.0.8/10.42.0.8.cfg4
-rw-r--r--god/Monitoring/nagios/shinken/objects/shackspace/10.42.0.8/Http.cfg6
-rw-r--r--god/Monitoring/nagios/shinken/objects/shackspace/10.42.0.9/10.42.0.9.cfg4
-rw-r--r--god/Monitoring/nagios/shinken/objects/shackspace/10.42.0.9/Http.cfg6
-rw-r--r--god/Monitoring/nagios/shinken/objects/shackspace/aptproxy.shack/Ssh.cfg6
-rw-r--r--god/Monitoring/nagios/shinken/objects/shackspace/aptproxy.shack/aptproxy.shack.cfg4
-rw-r--r--god/Monitoring/nagios/shinken/objects/shackspace/dhcp.shack/Ssh.cfg6
-rw-r--r--god/Monitoring/nagios/shinken/objects/shackspace/dhcp.shack/dhcp.shack.cfg4
-rw-r--r--god/Monitoring/nagios/shinken/objects/shackspace/dns.shack/DNS.cfg6
-rw-r--r--god/Monitoring/nagios/shinken/objects/shackspace/dns.shack/Ssh.cfg6
-rw-r--r--god/Monitoring/nagios/shinken/objects/shackspace/dns.shack/dns.shack.cfg4
-rw-r--r--god/Monitoring/nagios/shinken/objects/shackspace/gameds.shack/Ssh.cfg6
-rw-r--r--god/Monitoring/nagios/shinken/objects/shackspace/gameds.shack/gameds.shack.cfg4
-rw-r--r--god/Monitoring/nagios/shinken/objects/shackspace/genericore.shack/Ssh.cfg6
-rw-r--r--god/Monitoring/nagios/shinken/objects/shackspace/genericore.shack/genericore.shack.cfg4
-rw-r--r--god/Monitoring/nagios/shinken/objects/shackspace/homepage.shack/Http.cfg6
-rw-r--r--god/Monitoring/nagios/shinken/objects/shackspace/homepage.shack/Ssh.cfg6
-rw-r--r--god/Monitoring/nagios/shinken/objects/shackspace/homepage.shack/homepage.shack.cfg4
-rw-r--r--god/Monitoring/nagios/shinken/objects/shackspace/monitoring.shack/Http.cfg6
-rw-r--r--god/Monitoring/nagios/shinken/objects/shackspace/monitoring.shack/Ssh.cfg6
-rw-r--r--god/Monitoring/nagios/shinken/objects/shackspace/monitoring.shack/monitoring.shack.cfg4
-rw-r--r--god/Monitoring/nagios/shinken/objects/shackspace/node1.shack/Ssh.cfg6
-rw-r--r--god/Monitoring/nagios/shinken/objects/shackspace/node1.shack/node1.shack.cfg4
-rw-r--r--god/Monitoring/nagios/shinken/objects/shackspace/node2.shack/Ssh.cfg6
-rw-r--r--god/Monitoring/nagios/shinken/objects/shackspace/node2.shack/node2.shack.cfg4
-rw-r--r--god/Monitoring/nagios/shinken/objects/shackspace/plattenschwein.shack/Http.cfg6
-rw-r--r--god/Monitoring/nagios/shinken/objects/shackspace/plattenschwein.shack/Ssh.cfg6
-rw-r--r--god/Monitoring/nagios/shinken/objects/shackspace/plattenschwein.shack/plattenschwein.shack.cfg4
-rw-r--r--god/Monitoring/nagios/shinken/objects/shackspace/powerraw.shack/powerraw.shack.cfg4
-rw-r--r--god/Monitoring/nagios/shinken/objects/shackspace/printer.shack/Http.cfg6
-rw-r--r--god/Monitoring/nagios/shinken/objects/shackspace/printer.shack/Ssh.cfg6
-rw-r--r--god/Monitoring/nagios/shinken/objects/shackspace/printer.shack/printer.shack.cfg4
-rw-r--r--god/Monitoring/nagios/shinken/objects/shackspace/pxe.shack/Ssh.cfg6
-rw-r--r--god/Monitoring/nagios/shinken/objects/shackspace/pxe.shack/pxe.shack.cfg4
-rw-r--r--god/Monitoring/nagios/shinken/objects/shackspace/rzdoku.shack/Http.cfg6
-rw-r--r--god/Monitoring/nagios/shinken/objects/shackspace/rzdoku.shack/Ssh.cfg6
-rw-r--r--god/Monitoring/nagios/shinken/objects/shackspace/rzdoku.shack/rzdoku.shack.cfg4
-rw-r--r--god/Monitoring/nagios/shinken/objects/shackspace/shack.shack/Ssh.cfg6
-rw-r--r--god/Monitoring/nagios/shinken/objects/shackspace/shack.shack/shack.shack.cfg4
-rw-r--r--god/Monitoring/nagios/shinken/objects/shackspace/shackgateway.shack/DNS.cfg6
-rw-r--r--god/Monitoring/nagios/shinken/objects/shackspace/shackgateway.shack/Http.cfg6
-rw-r--r--god/Monitoring/nagios/shinken/objects/shackspace/shackgateway.shack/Https-Certificate.cfg6
-rw-r--r--god/Monitoring/nagios/shinken/objects/shackspace/shackgateway.shack/Https.cfg6
-rw-r--r--god/Monitoring/nagios/shinken/objects/shackspace/shackgateway.shack/Ssh.cfg6
-rw-r--r--god/Monitoring/nagios/shinken/objects/shackspace/shackgateway.shack/shackgateway.shack.cfg4
-rw-r--r--god/Monitoring/nagios/shinken/objects/shackspace/standby.shack/Http.cfg6
-rw-r--r--god/Monitoring/nagios/shinken/objects/shackspace/standby.shack/Ssh.cfg6
-rw-r--r--god/Monitoring/nagios/shinken/objects/shackspace/standby.shack/standby.shack.cfg4
-rw-r--r--god/Monitoring/nagios/shinken/objects/shackspace/stats.shack/Http.cfg6
-rw-r--r--god/Monitoring/nagios/shinken/objects/shackspace/stats.shack/Ssh.cfg6
-rw-r--r--god/Monitoring/nagios/shinken/objects/shackspace/stats.shack/stats.shack.cfg4
-rw-r--r--god/Monitoring/nagios/shinken/objects/shackspace/tuerstatus.shack/Ssh.cfg6
-rw-r--r--god/Monitoring/nagios/shinken/objects/shackspace/tuerstatus.shack/tuerstatus.shack.cfg4
-rw-r--r--god/Monitoring/nagios/shinken/objects/shackspace/upm.shack/Ssh.cfg6
-rw-r--r--god/Monitoring/nagios/shinken/objects/shackspace/upm.shack/upm.shack.cfg4
-rw-r--r--god/Monitoring/nagios/shinken/objects/shackspace/vollepulle.shack/Http.cfg6
-rw-r--r--god/Monitoring/nagios/shinken/objects/shackspace/vollepulle.shack/Https-Certificate.cfg6
-rw-r--r--god/Monitoring/nagios/shinken/objects/shackspace/vollepulle.shack/Https.cfg6
-rw-r--r--god/Monitoring/nagios/shinken/objects/shackspace/vollepulle.shack/Ssh.cfg6
-rw-r--r--god/Monitoring/nagios/shinken/objects/shackspace/vollepulle.shack/vollepulle.shack.cfg4
-rw-r--r--god/Monitoring/nagios/shinken/pollerd-windows.ini28
-rw-r--r--god/Monitoring/nagios/shinken/pollerd.ini38
-rw-r--r--god/Monitoring/nagios/shinken/reactionnerd-windows.ini28
-rw-r--r--god/Monitoring/nagios/shinken/reactionnerd.ini28
-rw-r--r--god/Monitoring/nagios/shinken/receiverd-windows.ini29
-rw-r--r--god/Monitoring/nagios/shinken/receiverd.ini28
-rw-r--r--god/Monitoring/nagios/shinken/resource.cfg34
-rw-r--r--god/Monitoring/nagios/shinken/schedulerd-windows.ini27
-rw-r--r--god/Monitoring/nagios/shinken/schedulerd.ini27
-rw-r--r--god/Monitoring/nagios/shinken/servicegroups.cfg14
-rw-r--r--god/Monitoring/nagios/shinken/services/linux_local.cfg44
-rw-r--r--god/Monitoring/nagios/shinken/shinken-specific-high-availability.cfg275
-rw-r--r--god/Monitoring/nagios/shinken/shinken-specific-load-balanced-only.cfg219
-rw-r--r--god/Monitoring/nagios/shinken/shinken-specific.cfg579
-rw-r--r--god/Monitoring/nagios/shinken/templates.cfg201
-rw-r--r--god/Monitoring/nagios/shinken/timeperiods.cfg71
-rwxr-xr-xgod/Reaktor/index39
-rwxr-xr-xgod/Reaktor/lib/listener.py50
-rw-r--r--god/census/Makefile5
-rw-r--r--god/census/README.md23
-rw-r--r--god/census/TODO.md3
-rw-r--r--god/census/VERSION1
-rwxr-xr-xgod/census/arping.py34
-rwxr-xr-xgod/census/arping_users.py92
-rw-r--r--god/census/mac_names.lst14
-rwxr-xr-xgod/census/sched-arping8
-rw-r--r--god/census/title.lst11
-rw-r--r--god/claws/.gitignore1
-rw-r--r--god/claws/Makefile18
-rw-r--r--god/claws/README.md12
-rw-r--r--god/claws/communication.h25
-rw-r--r--god/claws/rcontrol.c479
-rw-r--r--god/filebitch/COPYING14
-rw-r--r--god/filebitch/README14
-rw-r--r--god/filebitch/TODO2
-rwxr-xr-xgod/filebitch/connect_narf.pl19
-rwxr-xr-xgod/filebitch/disconnect_narf.pl16
-rw-r--r--god/icecrab/Makefile6
-rw-r--r--god/icecrab/icecast.xml174
-rw-r--r--god/icecrab/icecast2.conf19
-rw-r--r--god/ivan/Makefile7
-rw-r--r--god/ivan/announce.wavbin0 -> 691244 bytes
-rwxr-xr-xgod/ivan/ivan41
-rwxr-xr-xgod/ivan/ivan-startup74
-rwxr-xr-xgod/ivan/naturalvoices_cached.sh25
-rw-r--r--god/ivan/satz-liste41
-rwxr-xr-xgod/licht136
-rwxr-xr-xgod/meinsack/index85
-rwxr-xr-xgod/meinsack/shack-sack8
-rw-r--r--god/overlord/announce.mp3bin0 -> 71496 bytes
-rwxr-xr-xgod/overlord/index27
-rw-r--r--god/soundboard/README5
-rw-r--r--god/soundboard/config.json13
-rw-r--r--god/soundboard/sound.py46
-rw-r--r--god/streams/.gitignore1
-rw-r--r--god/streams/Makefile16
-rw-r--r--god/streams/README.md38
-rw-r--r--god/streams/bin/helper/streamfind10
-rw-r--r--god/streams/bin/helper/streamwrite6
-rwxr-xr-xgod/streams/bin/mpdstreams113
-rwxr-xr-xgod/streams/bin/relaxxapi.py138
-rwxr-xr-xgod/streams/bin/relaxxstreams107
-rwxr-xr-xgod/streams/bin/stream-starter19
-rwxr-xr-xgod/streams/bin/streams116
-rw-r--r--god/streams/db/direct.db78
-rw-r--r--god/streams/db/stream.db35
-rw-r--r--god/streams/doc/relaxxplayer.api13
-rw-r--r--god/streichelzoo/README2
-rw-r--r--god/streichelzoo/button_down.pngbin0 -> 6501 bytes
-rw-r--r--god/streichelzoo/button_up.pngbin0 -> 6655 bytes
-rw-r--r--god/streichelzoo/main.avg31
-rw-r--r--god/streichelzoo/streichelzoo.py31
-rw-r--r--god/strom-decoder/main.py50
-rw-r--r--god/strom-decoder/testdata24
-rw-r--r--god/strom-decoder/testdatacomment24
-rw-r--r--god/twinter/init.sh5
-rw-r--r--god/twinter/init_stripped.py40
-rw-r--r--god/twinter/supervisor.d/twinter.conf5
-rw-r--r--god/uino/morse/morse.pde164
-rw-r--r--gold/Makefile5
-rw-r--r--gold/affiliate/README.md9
-rw-r--r--gold/affiliate/affiliate.user.js96
-rw-r--r--gold/affiliate/krebsco-affiliatefox.xpibin0 -> 8711 bytes
-rwxr-xr-xgold/bitcoinslc/bitcoinslc.stats4
-rwxr-xr-xgold/bitcoinslc/bitcoinslc.stats.render7
-rwxr-xr-xgold/bitcoinslc/stats_text.sh4
-rw-r--r--gold/bitcoinwisdom/beep.js30
-rw-r--r--gold/bitcoinwisdom/ticker.js95
-rw-r--r--gold/btcguild/index.js20
-rwxr-xr-xgold/json/render/ticker7
-rwxr-xr-xgold/ledger/lib/balance88
-rw-r--r--gold/mining/CONFIGURE8
-rw-r--r--gold/mining/Makefile20
-rw-r--r--gold/mining/README9
-rw-r--r--gold/mining/TODO2
-rwxr-xr-xgold/mining/bin/archlinux-cruise-control75
-rwxr-xr-xgold/mining/bin/ati_temper5
-rwxr-xr-xgold/mining/bin/cleanup_tmp4
-rwxr-xr-xgold/mining/bin/ensure-router36
-rwxr-xr-xgold/mining/bin/ensure-wlan048
-rw-r--r--gold/mining/poll_btcguild2
-rw-r--r--gold/mining/user/.config/autostart/startup.desktop6
-rw-r--r--gold/mining/user/mining.ovdr16
-rwxr-xr-xgold/mining/user/startup.sh13
-rwxr-xr-xgold/mooncoin/ticker2
-rwxr-xr-xgold/mooncoin/ticker_text.sh4
-rwxr-xr-xgold/mtgox/mtgox.getDepth3
-rwxr-xr-xgold/mtgox/mtgox.getTrades3
-rwxr-xr-xgold/mtgox/mtgox.ticker53
-rwxr-xr-xgold/mtgox/ticker_text.sh4
-rwxr-xr-xgold/scex/ticker2
-rwxr-xr-xgold/scex/ticker_text.sh4
-rw-r--r--gold/scex/tracer/index.js89
-rw-r--r--gold/scex/tracer/slurp.js38
-rw-r--r--gold/scoreboard/.gitignore5
-rw-r--r--gold/scoreboard/README29
-rw-r--r--gold/scoreboard/modules/active/.placeholder0
-rwxr-xr-xgold/scoreboard/modules/available/ati_temper/gather14
-rwxr-xr-xgold/scoreboard/modules/available/ati_temper/index4
-rwxr-xr-xgold/scoreboard/modules/available/ati_temper/init28
-rwxr-xr-xgold/scoreboard/modules/available/ati_temper/plot10
-rwxr-xr-xgold/scoreboard/modules/available/bitcoin/gather13
-rwxr-xr-xgold/scoreboard/modules/available/bitcoin/index4
-rwxr-xr-xgold/scoreboard/modules/available/bitcoin/init48
-rwxr-xr-xgold/scoreboard/modules/available/bitcoin/plot11
-rw-r--r--gold/scoreboard/modules/available/bitcoin/render10
-rwxr-xr-xgold/scoreboard/modules/available/bitcoinpool/bitcoinpool_stats11
-rwxr-xr-xgold/scoreboard/modules/available/bitcoinslc/bitcoinslc_live8
-rwxr-xr-xgold/scoreboard/modules/available/bitcoinslc/bitcoinslc_stats18
-rwxr-xr-xgold/scoreboard/modules/available/btcguild/btcguild_stats22
-rwxr-xr-xgold/scoreboard/modules/available/btcguild/btcguild_stats_self15
-rwxr-xr-xgold/scoreboard/modules/available/create_gnuplot196
-rwxr-xr-xgold/scoreboard/modules/available/solidcoin/gather12
-rwxr-xr-xgold/scoreboard/modules/available/solidcoin/index4
-rwxr-xr-xgold/scoreboard/modules/available/solidcoin/init48
-rwxr-xr-xgold/scoreboard/modules/available/solidcoin/plot11
-rw-r--r--gold/scoreboard/modules/available/solidcoin/render10
-rwxr-xr-xgold/scoreboard/modules/available/static/init32
-rw-r--r--gold/scoreboard/profile26
-rwxr-xr-xgold/scoreboard/util/run-folder6
-rwxr-xr-xgold/scoreboard/util/schedule_logger13
-rw-r--r--infest/Makefile2
-rw-r--r--infest/skel/etc/iptables/rules.v428
-rw-r--r--infest/skel/etc/motd.tail14
-rwxr-xr-xinfest/skel/etc/profile60
-rwxr-xr-xinfest/skel/etc/rc.local10
-rw-r--r--infest/skel/home/.ssh/authorized_keys6
-rw-r--r--infest/skel/home/.vimrc31
-rw-r--r--keydir/lass.pub1
-rw-r--r--keydir/makefu.pub1
-rw-r--r--keydir/matz.pub1
-rw-r--r--keydir/tv.pub1
-rw-r--r--keydir/uriel.pub1
-rw-r--r--news/.gitignore1
-rwxr-xr-xnews/GfindFeeds4bot17
-rw-r--r--news/feeds2
l---------news/ircasy.py1
-rw-r--r--news/new_feeds183
-rw-r--r--news/newsbot.js272
-rw-r--r--news/newsbot.py259
-rw-r--r--news/package.json32
-rwxr-xr-xquery/jquery/index19
-rwxr-xr-xquery/realpath/install41
-rwxr-xr-xquery/realpath/src/realpath.rb10
-rw-r--r--retiolum/Makefile54
-rw-r--r--retiolum/README52
-rwxr-xr-xretiolum/bin/announce_pubkey35
-rwxr-xr-xretiolum/bin/check-free-retiolum-v421
-rwxr-xr-xretiolum/bin/check-free-retiolum-v62
-rwxr-xr-xretiolum/bin/create-host-tar15
-rwxr-xr-xretiolum/bin/create-supernode-tar13
-rwxr-xr-xretiolum/bin/dump-graph9
-rwxr-xr-xretiolum/bin/fillxx6
-rwxr-xr-xretiolum/bin/find-active-nodes21
-rwxr-xr-xretiolum/bin/find-supernodes21
-rwxr-xr-xretiolum/bin/get-tinc-dir9
-rwxr-xr-xretiolum/bin/hosts13
-rwxr-xr-xretiolum/bin/install18
-rwxr-xr-xretiolum/bin/ipv635
-rwxr-xr-xretiolum/bin/list-known-public-addresses38
-rw-r--r--retiolum/bin/nodes-to-json37
-rwxr-xr-xretiolum/bin/patch-retiolum-hosts13
-rwxr-xr-xretiolum/bin/supernode-update-hosts-and-hup44
-rwxr-xr-xretiolum/bin/tinc18
l---------retiolum/bin/tinc2json1
-rwxr-xr-xretiolum/bin/update-retiolum-hosts14
-rwxr-xr-xretiolum/bin/update_tinc_hosts53
-rw-r--r--retiolum/doc/cronjob7
-rw-r--r--retiolum/doc/device.c37
-rw-r--r--retiolum/doc/git_checkout_only_hosts11
-rw-r--r--retiolum/doc/highping2
-rw-r--r--retiolum/doc/install_dotcloud85
-rw-r--r--retiolum/doc/install_no.de16
-rw-r--r--retiolum/doc/routing/ip-ranges5
-rw-r--r--retiolum/doc/routing/tun30
-rw-r--r--retiolum/hosts/Styx10
-rw-r--r--retiolum/hosts/ThinkArmageddon9
-rw-r--r--retiolum/hosts/TriBot11
-rw-r--r--retiolum/hosts/ach11
-rw-r--r--retiolum/hosts/air11
-rw-r--r--retiolum/hosts/alarmpi11
-rw-r--r--retiolum/hosts/albi1011
-rw-r--r--retiolum/hosts/albi710
-rw-r--r--retiolum/hosts/alphalabs10
-rw-r--r--retiolum/hosts/apfull11
-rw-r--r--retiolum/hosts/bitchctl11
-rw-r--r--retiolum/hosts/box10
-rw-r--r--retiolum/hosts/bridge12
-rw-r--r--retiolum/hosts/c2ft10
-rw-r--r--retiolum/hosts/c2fthome10
-rw-r--r--retiolum/hosts/casino11
-rw-r--r--retiolum/hosts/cat111
-rw-r--r--retiolum/hosts/cband11
-rw-r--r--retiolum/hosts/cd12
-rw-r--r--retiolum/hosts/cloudkrebs12
-rw-r--r--retiolum/hosts/darth12
-rw-r--r--retiolum/hosts/dei11
-rw-r--r--retiolum/hosts/destroy11
-rw-r--r--retiolum/hosts/devstar11
-rw-r--r--retiolum/hosts/eigenserv11
-rw-r--r--retiolum/hosts/elvis12
-rw-r--r--retiolum/hosts/exile9
-rw-r--r--retiolum/hosts/exitium_mobilis10
-rw-r--r--retiolum/hosts/falk11
-rw-r--r--retiolum/hosts/fastpoke12
-rw-r--r--retiolum/hosts/filebitch11
-rw-r--r--retiolum/hosts/filepimp11
-rw-r--r--retiolum/hosts/flap11
-rw-r--r--retiolum/hosts/foobar11
-rw-r--r--retiolum/hosts/fuerkrebs10
-rw-r--r--retiolum/hosts/go13
-rw-r--r--retiolum/hosts/gum13
-rw-r--r--retiolum/hosts/heidi11
-rw-r--r--retiolum/hosts/horisa12
-rw-r--r--retiolum/hosts/horreum_magnus15
-rw-r--r--retiolum/hosts/incept13
-rw-r--r--retiolum/hosts/ire12
-rw-r--r--retiolum/hosts/ire29
-rw-r--r--retiolum/hosts/irkel12
-rw-r--r--retiolum/hosts/juhulian11
-rw-r--r--retiolum/hosts/k228
-rw-r--r--retiolum/hosts/kabinett11
-rw-r--r--retiolum/hosts/kaepsele11
-rw-r--r--retiolum/hosts/kalle11
-rw-r--r--retiolum/hosts/karthus10
-rw-r--r--retiolum/hosts/khackplug11
-rw-r--r--retiolum/hosts/kheurop12
-rw-r--r--retiolum/hosts/kiosk12
-rw-r--r--retiolum/hosts/krebsplug10
-rw-r--r--retiolum/hosts/kvasir10
-rw-r--r--retiolum/hosts/laqueus11
-rw-r--r--retiolum/hosts/linuxatom11
-rw-r--r--retiolum/hosts/luminos11
-rw-r--r--retiolum/hosts/machine11
-rw-r--r--retiolum/hosts/makalu11
-rw-r--r--retiolum/hosts/mako11
-rw-r--r--retiolum/hosts/miefda010
-rw-r--r--retiolum/hosts/minikrebs10
-rw-r--r--retiolum/hosts/monitor11
-rw-r--r--retiolum/hosts/mors10
-rw-r--r--retiolum/hosts/motor12
-rw-r--r--retiolum/hosts/mu10
-rw-r--r--retiolum/hosts/muhbaasu13
-rw-r--r--retiolum/hosts/nomic10
-rw-r--r--retiolum/hosts/nomic210
-rw-r--r--retiolum/hosts/omo9
-rw-r--r--retiolum/hosts/pic11
-rw-r--r--retiolum/hosts/pigstarter13
-rw-r--r--retiolum/hosts/pike11
-rw-r--r--retiolum/hosts/pornocauster10
-rw-r--r--retiolum/hosts/radiotuxmini11
-rw-r--r--retiolum/hosts/random10
-rw-r--r--retiolum/hosts/raspafari11
-rw-r--r--retiolum/hosts/reimae12
-rw-r--r--retiolum/hosts/robchina11
-rw-r--r--retiolum/hosts/rockit11
-rw-r--r--retiolum/hosts/rtjure_debian_oder_so11
-rw-r--r--retiolum/hosts/rtjure_ras11
-rw-r--r--retiolum/hosts/rtjure_rdrlab_linkstation11
-rw-r--r--retiolum/hosts/rubus9
-rw-r--r--retiolum/hosts/senderechner10
-rw-r--r--retiolum/hosts/seruundroid12
-rw-r--r--retiolum/hosts/sir_krebs_a_lot11
-rw-r--r--retiolum/hosts/skirfir11
-rw-r--r--retiolum/hosts/smove9
-rw-r--r--retiolum/hosts/sokrates11
-rw-r--r--retiolum/hosts/sokrateslaptop11
-rw-r--r--retiolum/hosts/soundflower10
-rw-r--r--retiolum/hosts/steve10
-rw-r--r--retiolum/hosts/tahoe12
-rw-r--r--retiolum/hosts/taschenkrebs11
-rw-r--r--retiolum/hosts/terrapi11
-rw-r--r--retiolum/hosts/thomasDOTde9
-rw-r--r--retiolum/hosts/tincdroid9
-rw-r--r--retiolum/hosts/tpsw11
-rw-r--r--retiolum/hosts/ufo11
-rw-r--r--retiolum/hosts/uriel11
-rw-r--r--retiolum/hosts/vault10
-rw-r--r--retiolum/hosts/wooktop11
-rw-r--r--retiolum/hosts/wu10
-rw-r--r--retiolum/hosts/ytart9
-rw-r--r--retiolum/hosts/zombiecancer11
-rw-r--r--retiolum/scripts/README16
-rw-r--r--retiolum/scripts/adv_graphgen/DEPS4
-rw-r--r--retiolum/scripts/adv_graphgen/Makefile4
-rw-r--r--retiolum/scripts/adv_graphgen/README28
-rw-r--r--retiolum/scripts/adv_graphgen/USAGE.md27
-rwxr-xr-xretiolum/scripts/adv_graphgen/all_the_graphs.sh16
-rwxr-xr-xretiolum/scripts/adv_graphgen/anonytize.sh29
-rw-r--r--retiolum/scripts/adv_graphgen/map.html88
-rwxr-xr-xretiolum/scripts/adv_graphgen/sanitize.sh31
-rwxr-xr-xretiolum/scripts/adv_graphgen/tinc_stats/Availability.py58
-rw-r--r--retiolum/scripts/adv_graphgen/tinc_stats/BackwardsReader.py35
-rwxr-xr-xretiolum/scripts/adv_graphgen/tinc_stats/Geo.py54
-rwxr-xr-xretiolum/scripts/adv_graphgen/tinc_stats/Graph.py250
-rwxr-xr-xretiolum/scripts/adv_graphgen/tinc_stats/Log2JSON.py125
-rw-r--r--retiolum/scripts/adv_graphgen/tinc_stats/Services.py17
-rwxr-xr-xretiolum/scripts/adv_graphgen/tinc_stats/Supernodes.py59
-rw-r--r--retiolum/scripts/adv_graphgen/tinc_stats/__init__.py7
-rwxr-xr-xretiolum/scripts/autostart/create-startup.sh22
-rwxr-xr-xretiolum/scripts/autostart/tinc94
-rw-r--r--retiolum/scripts/github_hosts_sync/README26
-rwxr-xr-xretiolum/scripts/github_hosts_sync/hosts-sync64
-rw-r--r--retiolum/scripts/github_hosts_sync/systemd/hosts-sync.conf1
-rw-r--r--retiolum/scripts/github_hosts_sync/systemd/hosts-sync.service14
-rw-r--r--retiolum/scripts/github_listener/INSTALL13
-rw-r--r--retiolum/scripts/github_listener/README22
-rw-r--r--retiolum/scripts/github_listener/github-listener.service15
-rw-r--r--retiolum/scripts/github_listener/github_listener.conf6
-rwxr-xr-xretiolum/scripts/github_listener/handle_request29
-rwxr-xr-xretiolum/scripts/routing/defaultroute.sh38
-rw-r--r--retiolum/scripts/tinc_setup/README.md10
-rw-r--r--retiolum/scripts/tinc_setup/autoupdate_cron.sh7
-rwxr-xr-xretiolum/scripts/tinc_setup/new_install.sh371
-rwxr-xr-xretiolum/scripts/tinc_setup/tinc-up18
-rw-r--r--retiolum/t/docker/.test_bootstrap.swpbin0 -> 12288 bytes
-rw-r--r--retiolum/t/docker/README.md7
-rwxr-xr-xretiolum/t/docker/docker_boostrap.sh5
-rw-r--r--retiolum/t/docker/docker_tests/bootstrap10
-rwxr-xr-xretiolum/t/pigstarter/refresh_hosts.sh4
-rw-r--r--services/Makefile43
-rw-r--r--services/README.md30
-rw-r--r--services/authorized_keys7
-rwxr-xr-xservices/bin/obsolete/copy-services34
-rwxr-xr-xservices/bin/services40
-rwxr-xr-xservices/bin/show-services31
-rwxr-xr-xservices/bin/sync-host-to-services15
-rwxr-xr-xservices/bin/update-services-pubkeys3
-rw-r--r--services/checkers.py25
-rw-r--r--services/etc/conf.d/krebs-services-test-server3
-rw-r--r--services/etc/services/bootstrap13
-rw-r--r--services/etc/systemd/system/krebs-services-test-server.service14
-rwxr-xr-xservices/lib/filter54
-rw-r--r--services/services.txt6
-rwxr-xr-xservices/test-server.py113
-rw-r--r--ship/.gitignore1
-rw-r--r--ship/Makefile56
-rw-r--r--ship/README.markdown54
-rw-r--r--ship/TODO2
-rwxr-xr-xship/build210
-rw-r--r--ship/lib/_punani_db57
-rw-r--r--ship/lib/color7
-rw-r--r--ship/lib/core80
-rw-r--r--ship/lib/filehooker117
-rw-r--r--ship/lib/iso7
-rw-r--r--ship/lib/krebs16
-rw-r--r--ship/lib/network110
-rw-r--r--ship/lib/punani99
-rw-r--r--ship/lib/retiolum109
-rw-r--r--ship/lib/tahoe34
-rw-r--r--ship/lib/tor20
-rw-r--r--ship/lib/vim40
-rwxr-xr-xship/src/arch_autoinstall164
-rwxr-xr-xship/src/bootstrap_env_makefu171
-rw-r--r--ship/src/deploy-ssh-keys15
-rw-r--r--ship/src/filehooker_configure_ncdc15
-rw-r--r--ship/src/filehooker_configure_netshare7
-rwxr-xr-xship/src/filehooker_install143
-rw-r--r--ship/src/find-supers-tinc6
-rwxr-xr-xship/src/fix_dircolors13
-rw-r--r--ship/src/get_repo22
-rw-r--r--ship/src/install_tor_announce5
-rwxr-xr-xship/src/punani4
-rw-r--r--ship/src/refresh-super-keys5
-rw-r--r--ship/src/refresh-supers35
-rwxr-xr-xship/src/remaster_arch_shack_installstick104
-rwxr-xr-xship/src/retiolum292
-rw-r--r--ship/src/tahoe_install15
-rwxr-xr-xship/src/tor_publish_ssh14
-rw-r--r--ship/src/vim_sane_defaults11
-rwxr-xr-xship/t/docker/docker_remote_punani.sh5
-rw-r--r--ship/t/docker/punani/remote_punani11
-rw-r--r--ship/tmp/.placeholder0
-rw-r--r--sites/buildbot.krebsco.de/INSTALLATION.md18
-rw-r--r--sites/buildbot.krebsco.de/README.md29
-rw-r--r--sites/conf.krebsco.de/README3
-rw-r--r--sites/conf.krebsco.de/conf.krebsco.de.conf19
-rw-r--r--sites/dradis-forwarder/README.md43
-rw-r--r--sites/elchhub.nsupdate.info/install_adhpp44
-rw-r--r--sites/elchirc.nsupdate.info/install_unrealircd19
-rw-r--r--sites/elchstats.nsupdate.info/carbon.service15
-rw-r--r--sites/elchstats.nsupdate.info/graphite-web.service16
-rw-r--r--sites/elchstats.nsupdate.info/graphite.journal.txt37
-rw-r--r--sites/gold.krebsco.de/README.md18
-rw-r--r--sites/gold.krebsco.de/etc/nginx/sites-available/gold.krebsco.de12
-rw-r--r--sites/graph.krebsco.de/README.md98
-rw-r--r--sites/graph.krebsco.de/etc/nginx/sites-available/graph.conf11
-rw-r--r--sites/graph.krebsco.de/etc/nginx/sites-available/graph.krebsco.de.conf10
-rw-r--r--sites/mediengewitter.krebsco.de/README.md11
-rw-r--r--sites/mediengewitter.krebsco.de/magnets/DEPLOY.md7
-rw-r--r--sites/mediengewitter.krebsco.de/magnets/Dockerfile17
m---------sites/mediengewitter.krebsco.de/magnets/magnets0
-rw-r--r--sites/mediengewitter.krebsco.de/mediengewitter/DEPLOY.md9
-rw-r--r--sites/mediengewitter.krebsco.de/mediengewitter/Dockerfile17
-rw-r--r--sites/mediengewitter.krebsco.de/mediengewitter/etc/nginx/sites-available/mediengewitter.krebsco.de.conf15
m---------sites/mediengewitter.krebsco.de/mediengewitter/mediengewitter0
-rw-r--r--sites/omo/torrent.md25
-rw-r--r--sites/paste.retiolum/README.md31
m---------sites/paste.retiolum/bump0
-rw-r--r--sites/paste.retiolum/etc/nginx/sites-available/paste.conf14
-rw-r--r--sites/paste.retiolum/etc/supervisor.d/bump.supervisor.conf5
-rw-r--r--sites/reaktor-nag/setup-reaktor-nag.journal10
-rw-r--r--sites/tahoe.retiolum/README.md27
-rw-r--r--sites/tahoe.retiolum/conf/tahoe.cfg4
-rw-r--r--sites/task.krebsco.de/README.md40
-rw-r--r--sites/tinc-defaultgw/configure-default-gw.journal47
-rw-r--r--sites/tinc.krebsco.de/README.md11
-rw-r--r--sites/tinc.krebsco.de/etc/nginx/sites-available/tinc.krebsco.de.conf10
m---------submodules/github/NV/cssom0
m---------submodules/github/jbalogh/python-irclib0
m---------submodules/github/makefu/dpfhack_display0
m---------submodules/github/mikeal/request0
m---------submodules/github/tautologistics/node-htmlparser0
m---------submodules/github/tmpvar/jsdom0
-rw-r--r--util/Makefile22
-rw-r--r--util/README.markdown27
-rw-r--r--util/archlive/archlive.tarbin0 -> 58785 bytes
-rw-r--r--util/archlive/readme7
-rw-r--r--util/auto/krebs61
-rwxr-xr-xutil/bin/TouchpadToggle8
-rwxr-xr-xutil/bin/anonbox.net57
-rwxr-xr-xutil/bin/dic78
-rwxr-xr-xutil/bin/galileo3
-rwxr-xr-xutil/bin/google.suggest8
-rwxr-xr-xutil/bin/graphitec5
-rwxr-xr-xutil/bin/hrefs20
-rwxr-xr-xutil/bin/jbo42
-rwxr-xr-xutil/bin/krebdate10
-rwxr-xr-xutil/bin/lgoinstall131
-rwxr-xr-xutil/bin/magic63
-rwxr-xr-xutil/bin/make-data-url7
-rwxr-xr-xutil/bin/make-realwallpaper302
-rwxr-xr-xutil/bin/mic.stt12
-rwxr-xr-xutil/bin/my-global-ipv4-addr52
-rwxr-xr-xutil/bin/naturalvoices.att18
-rwxr-xr-xutil/bin/nextpath12
-rwxr-xr-xutil/bin/pigbin5
-rwxr-xr-xutil/bin/randline2
-rwxr-xr-xutil/bin/sshkill33
-rwxr-xr-xutil/bin/statsc4
-rwxr-xr-xutil/bin/text2speech.google10
-rwxr-xr-xutil/bin/timer14
-rwxr-xr-xutil/bin/translate.google13
-rwxr-xr-xutil/bin/ukrepl109
-rwxr-xr-xutil/bin/untouch8
-rwxr-xr-xutil/bin/uriparse28
-rwxr-xr-xutil/bin/wiki.firstpar23
-rwxr-xr-xutil/bin/wikipedia5
-rwxr-xr-xutil/bin/with6
-rw-r--r--util/lib/geo/Makefile15
-rw-r--r--util/lib/geo/index.js48
-rw-r--r--util/lib/geo/package.json7
-rwxr-xr-xutil/lib/naturalvoices/att.sh33
-rw-r--r--util/lib/stt/README.md4
-rw-r--r--util/lib/stt/google.sh40
-rw-r--r--util/morse/COPYING14
-rw-r--r--util/morse/Makefile3
-rw-r--r--util/morse/README32
-rwxr-xr-xutil/morse/morse.sh160
-rwxr-xr-xutil/t/anonbox.net/got-some-valid-looking-email16
-rwxr-xr-xutil/t/dic/can-scrape6
-rwxr-xr-xutil/t/naturalvoices/att-produces-output10
-rw-r--r--util/t/stt/stt-works-with-espeak10
-rwxr-xr-xutil/t/uriparse/parse-retard-uri13
-rwxr-xr-xutil/t/uriparse/parse-url13
m---------web0
-rw-r--r--webchat/Makefile8
-rw-r--r--webchat/index.js172
-rw-r--r--webchat/package.json15
-rw-r--r--webchat/proto_spec62
-rw-r--r--webchat/public/client.js70
-rw-r--r--webchat/public/functions.js54
-rw-r--r--webchat/public/jquery-2.0.3.min.js6
-rw-r--r--webchat/public/krebs.pngbin0 -> 2583 bytes
-rw-r--r--webchat/public/reset.css126
-rw-r--r--webchat/public/rpc.js99
-rw-r--r--webchat/public/sockjs-0.3.min.js27
-rw-r--r--webchat/public/sockjs_client_transport.js25
-rw-r--r--webchat/sockjs_server_connection_transport.js26
1370 files changed, 63533 insertions, 1 deletions
diff --git a/.gitignore b/.gitignore
index 340ad789..39f49532 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1 +1,34 @@
-etc/autowifi/wifi_keys
+#
+/db
+
+# go
+_go_.8
+goinstall.log
+
+# Linux kernel module
+modules.order
+Module.symvers
+.built-in.o.cmd
+*.ko.cmd
+*.o.cmd
+.tmp_versions/
+*.ko
+*.mod.c
+
+a.out
+*.pyc
+*.o
+*.a
+.svn/
+/go/node_modules
+/god/Reaktor/tmp/
+/bin/
+/node/src
+/node/out
+/ovh/soapi/src
+/ovh/soapi/SOAPpy
+/Reaktor/IRC/irclib.py
+/Reaktor/public_commands/*
+/ship/tmp
+/webchat/node_modules
+/webchat/local_config
diff --git a/.gitmodules b/.gitmodules
new file mode 100644
index 00000000..23652084
--- /dev/null
+++ b/.gitmodules
@@ -0,0 +1,45 @@
+[submodule "submodules/github/tmpvar/jsdom"]
+ path = submodules/github/tmpvar/jsdom
+ url = https://github.com/tmpvar/jsdom
+[submodule "submodules/github/mikeal/request"]
+ path = submodules/github/mikeal/request
+ url = https://github.com/mikeal/request.git
+[submodule "submodules/github/NV/cssom"]
+ path = submodules/github/NV/cssom
+ url = https://github.com/NV/CSSOM
+[submodule "submodules/github/tautologistics/node-htmlparser"]
+ path = submodules/github/tautologistics/node-htmlparser
+ url = https://github.com/tautologistics/node-htmlparser
+[submodule "submodules/github/makefu/dpfhack_display"]
+ path = submodules/github/makefu/dpfhack_display
+ url = https://github.com/makefu/dpfhack_pearl
+[submodule "submodules/github/jbalogh/python-irclib"]
+ path = submodules/github/jbalogh/python-irclib
+ url = https://github.com/jbalogh/python-irclib.git
+[submodule "Reaktor/repos/gxfr"]
+ path = Reaktor/repos/gxfr
+ url = https://github.com/makefu/gxfr.git
+[submodule "Reaktor/repos/dnsrecon"]
+ path = Reaktor/repos/dnsrecon
+ url = https://github.com/makefu/dnsrecon.git
+[submodule "Reaktor/repos/whatweb"]
+ path = Reaktor/repos/whatweb
+ url = https://github.com/urbanadventurer/WhatWeb.git
+[submodule "Reaktor/repos/view-website"]
+ path = Reaktor/repos/view-website
+ url = https://github.com/makefu/view-website.git
+[submodule "minikrebs"]
+ path = Cancer/minikrebs
+ url = https://github.com/krebscode/minikrebs.git
+[submodule "web"]
+ path = web
+ url = https://github.com/krebscode/krebscode.github.com
+[submodule "sites/paste.retiolum/bump"]
+ path = sites/paste.retiolum/bump
+ url = https://github.com/makefu/bump.git
+[submodule "sites/mediengewitter.krebsco.de/magnets/magnets"]
+ path = sites/mediengewitter.krebsco.de/magnets/magnets
+ url = https://github.com/makefu/magnets.git
+[submodule "sites/mediengewitter.krebsco.de/mediengewitter/mediengewitter"]
+ path = sites/mediengewitter.krebsco.de/mediengewitter/mediengewitter
+ url = https://github.com/makefu/mediengewitter.git
diff --git a/.graveyard/27c3_ticket_grabber/mechanize_tickets.py b/.graveyard/27c3_ticket_grabber/mechanize_tickets.py
new file mode 100644
index 00000000..1f12a996
--- /dev/null
+++ b/.graveyard/27c3_ticket_grabber/mechanize_tickets.py
@@ -0,0 +1,53 @@
+#!/usr/bin/python
+import mechanize
+import cookielib
+import time,sys
+USERNAME = 'momo'
+PASSWORD = ''
+
+
+def main():
+ try:
+ br = init_browser()
+ while not do_login(br):
+ print ("Could Not Login, retrying!")
+ while not fetch_ticket(br):
+ time.sleep(0.2)
+ print ("Could not fetch ticket, retrying!")
+ except Exception,e:
+ print ("Caught Exception: %s" % str(e))
+ exit (1)
+ print ("We won? yay")
+ exit(0)
+
+def init_browser():
+ br = mechanize.Browser()
+ br.open("https://presale.events.ccc.de/order")
+ cj = cookielib.LWPCookieJar()
+ br.set_cookiejar(cj)
+ br.addheaders = [('User-agent', 'Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.0.1) Gecko/2008071615 Fedora/3.0.1-1.fc9 Firefox/3.0.1')]
+ return br
+def do_login(br):
+ br.select_form(nr=0)
+ br.form['account[username]'] = USERNAME
+ br.form['account[password]'] = PASSWORD
+ br.submit()
+ ret = br.response().read()
+ if 'Signed in successfully.' in ret:
+ if not "Confirm Order" in ret:
+ print("Something else is wrong, cannot find 'Confirm Order' button!")
+ raise Exception("Cannot find Confirm Order button")
+ return True
+ else: return False
+
+def fetch_ticket(br):
+ br.select_form(nr=0)
+ br.submit()
+ ret = br.response().read()
+ if not 'There are currently not enough tickets available.' in ret:
+ print ("we won? Better sleep some time to be sure")
+ return True
+ else: return False
+
+if __name__ == "__main__":
+ main()
diff --git a/.graveyard/DNA/README.md b/.graveyard/DNA/README.md
new file mode 100644
index 00000000..9de84746
--- /dev/null
+++ b/.graveyard/DNA/README.md
@@ -0,0 +1,14 @@
+# Distribution-Neutral Augmentation
+
+Warning: This component will compromise your system in hard and obscure ways.
+
+## //DNA/linux
+
+This module will mutilate your running kernel's sys_call_table so //
+resolves to the krebs repository.
+
+## Quickstart
+
+ make -C //DNA/linux
+ sudo insmod //DNA/linux/krebs.ko
+
diff --git a/.graveyard/DNA/linux/LICENSE b/.graveyard/DNA/linux/LICENSE
new file mode 100644
index 00000000..94a9ed02
--- /dev/null
+++ b/.graveyard/DNA/linux/LICENSE
@@ -0,0 +1,674 @@
+ GNU GENERAL PUBLIC LICENSE
+ Version 3, 29 June 2007
+
+ Copyright (C) 2007 Free Software Foundation, Inc. <http://fsf.org/>
+ Everyone is permitted to copy and distribute verbatim copies
+ of this license document, but changing it is not allowed.
+
+ Preamble
+
+ The GNU General Public License is a free, copyleft license for
+software and other kinds of works.
+
+ The licenses for most software and other practical works are designed
+to take away your freedom to share and change the works. By contrast,
+the GNU General Public License is intended to guarantee your freedom to
+share and change all versions of a program--to make sure it remains free
+software for all its users. We, the Free Software Foundation, use the
+GNU General Public License for most of our software; it applies also to
+any other work released this way by its authors. You can apply it to
+your programs, too.
+
+ When we speak of free software, we are referring to freedom, not
+price. Our General Public Licenses are designed to make sure that you
+have the freedom to distribute copies of free software (and charge for
+them if you wish), that you receive source code or can get it if you
+want it, that you can change the software or use pieces of it in new
+free programs, and that you know you can do these things.
+
+ To protect your rights, we need to prevent others from denying you
+these rights or asking you to surrender the rights. Therefore, you have
+certain responsibilities if you distribute copies of the software, or if
+you modify it: responsibilities to respect the freedom of others.
+
+ For example, if you distribute copies of such a program, whether
+gratis or for a fee, you must pass on to the recipients the same
+freedoms that you received. You must make sure that they, too, receive
+or can get the source code. And you must show them these terms so they
+know their rights.
+
+ Developers that use the GNU GPL protect your rights with two steps:
+(1) assert copyright on the software, and (2) offer you this License
+giving you legal permission to copy, distribute and/or modify it.
+
+ For the developers' and authors' protection, the GPL clearly explains
+that there is no warranty for this free software. For both users' and
+authors' sake, the GPL requires that modified versions be marked as
+changed, so that their problems will not be attributed erroneously to
+authors of previous versions.
+
+ Some devices are designed to deny users access to install or run
+modified versions of the software inside them, although the manufacturer
+can do so. This is fundamentally incompatible with the aim of
+protecting users' freedom to change the software. The systematic
+pattern of such abuse occurs in the area of products for individuals to
+use, which is precisely where it is most unacceptable. Therefore, we
+have designed this version of the GPL to prohibit the practice for those
+products. If such problems arise substantially in other domains, we
+stand ready to extend this provision to those domains in future versions
+of the GPL, as needed to protect the freedom of users.
+
+ Finally, every program is threatened constantly by software patents.
+States should not allow patents to restrict development and use of
+software on general-purpose computers, but in those that do, we wish to
+avoid the special danger that patents applied to a free program could
+make it effectively proprietary. To prevent this, the GPL assures that
+patents cannot be used to render the program non-free.
+
+ The precise terms and conditions for copying, distribution and
+modification follow.
+
+ TERMS AND CONDITIONS
+
+ 0. Definitions.
+
+ "This License" refers to version 3 of the GNU General Public License.
+
+ "Copyright" also means copyright-like laws that apply to other kinds of
+works, such as semiconductor masks.
+
+ "The Program" refers to any copyrightable work licensed under this
+License. Each licensee is addressed as "you". "Licensees" and
+"recipients" may be individuals or organizations.
+
+ To "modify" a work means to copy from or adapt all or part of the work
+in a fashion requiring copyright permission, other than the making of an
+exact copy. The resulting work is called a "modified version" of the
+earlier work or a work "based on" the earlier work.
+
+ A "covered work" means either the unmodified Program or a work based
+on the Program.
+
+ To "propagate" a work means to do anything with it that, without
+permission, would make you directly or secondarily liable for
+infringement under applicable copyright law, except executing it on a
+computer or modifying a private copy. Propagation includes copying,
+distribution (with or without modification), making available to the
+public, and in some countries other activities as well.
+
+ To "convey" a work means any kind of propagation that enables other
+parties to make or receive copies. Mere interaction with a user through
+a computer network, with no transfer of a copy, is not conveying.
+
+ An interactive user interface displays "Appropriate Legal Notices"
+to the extent that it includes a convenient and prominently visible
+feature that (1) displays an appropriate copyright notice, and (2)
+tells the user that there is no warranty for the work (except to the
+extent that warranties are provided), that licensees may convey the
+work under this License, and how to view a copy of this License. If
+the interface presents a list of user commands or options, such as a
+menu, a prominent item in the list meets this criterion.
+
+ 1. Source Code.
+
+ The "source code" for a work means the preferred form of the work
+for making modifications to it. "Object code" means any non-source
+form of a work.
+
+ A "Standard Interface" means an interface that either is an official
+standard defined by a recognized standards body, or, in the case of
+interfaces specified for a particular programming language, one that
+is widely used among developers working in that language.
+
+ The "System Libraries" of an executable work include anything, other
+than the work as a whole, that (a) is included in the normal form of
+packaging a Major Component, but which is not part of that Major
+Component, and (b) serves only to enable use of the work with that
+Major Component, or to implement a Standard Interface for which an
+implementation is available to the public in source code form. A
+"Major Component", in this context, means a major essential component
+(kernel, window system, and so on) of the specific operating system
+(if any) on which the executable work runs, or a compiler used to
+produce the work, or an object code interpreter used to run it.
+
+ The "Corresponding Source" for a work in object code form means all
+the source code needed to generate, install, and (for an executable
+work) run the object code and to modify the work, including scripts to
+control those activities. However, it does not include the work's
+System Libraries, or general-purpose tools or generally available free
+programs which are used unmodified in performing those activities but
+which are not part of the work. For example, Corresponding Source
+includes interface definition files associated with source files for
+the work, and the source code for shared libraries and dynamically
+linked subprograms that the work is specifically designed to require,
+such as by intimate data communication or control flow between those
+subprograms and other parts of the work.
+
+ The Corresponding Source need not include anything that users
+can regenerate automatically from other parts of the Corresponding
+Source.
+
+ The Corresponding Source for a work in source code form is that
+same work.
+
+ 2. Basic Permissions.
+
+ All rights granted under this License are granted for the term of
+copyright on the Program, and are irrevocable provided the stated
+conditions are met. This License explicitly affirms your unlimited
+permission to run the unmodified Program. The output from running a
+covered work is covered by this License only if the output, given its
+content, constitutes a covered work. This License acknowledges your
+rights of fair use or other equivalent, as provided by copyright law.
+
+ You may make, run and propagate covered works that you do not
+convey, without conditions so long as your license otherwise remains
+in force. You may convey covered works to others for the sole purpose
+of having them make modifications exclusively for you, or provide you
+with facilities for running those works, provided that you comply with
+the terms of this License in conveying all material for which you do
+not control copyright. Those thus making or running the covered works
+for you must do so exclusively on your behalf, under your direction
+and control, on terms that prohibit them from making any copies of
+your copyrighted material outside their relationship with you.
+
+ Conveying under any other circumstances is permitted solely under
+the conditions stated below. Sublicensing is not allowed; section 10
+makes it unnecessary.
+
+ 3. Protecting Users' Legal Rights From Anti-Circumvention Law.
+
+ No covered work shall be deemed part of an effective technological
+measure under any applicable law fulfilling obligations under article
+11 of the WIPO copyright treaty adopted on 20 December 1996, or
+similar laws prohibiting or restricting circumvention of such
+measures.
+
+ When you convey a covered work, you waive any legal power to forbid
+circumvention of technological measures to the extent such circumvention
+is effected by exercising rights under this License with respect to
+the covered work, and you disclaim any intention to limit operation or
+modification of the work as a means of enforcing, against the work's
+users, your or third parties' legal rights to forbid circumvention of
+technological measures.
+
+ 4. Conveying Verbatim Copies.
+
+ You may convey verbatim copies of the Program's source code as you
+receive it, in any medium, provided that you conspicuously and
+appropriately publish on each copy an appropriate copyright notice;
+keep intact all notices stating that this License and any
+non-permissive terms added in accord with section 7 apply to the code;
+keep intact all notices of the absence of any warranty; and give all
+recipients a copy of this License along with the Program.
+
+ You may charge any price or no price for each copy that you convey,
+and you may offer support or warranty protection for a fee.
+
+ 5. Conveying Modified Source Versions.
+
+ You may convey a work based on the Program, or the modifications to
+produce it from the Program, in the form of source code under the
+terms of section 4, provided that you also meet all of these conditions:
+
+ a) The work must carry prominent notices stating that you modified
+ it, and giving a relevant date.
+
+ b) The work must carry prominent notices stating that it is
+ released under this License and any conditions added under section
+ 7. This requirement modifies the requirement in section 4 to
+ "keep intact all notices".
+
+ c) You must license the entire work, as a whole, under this
+ License to anyone who comes into possession of a copy. This
+ License will therefore apply, along with any applicable section 7
+ additional terms, to the whole of the work, and all its parts,
+ regardless of how they are packaged. This License gives no
+ permission to license the work in any other way, but it does not
+ invalidate such permission if you have separately received it.
+
+ d) If the work has interactive user interfaces, each must display
+ Appropriate Legal Notices; however, if the Program has interactive
+ interfaces that do not display Appropriate Legal Notices, your
+ work need not make them do so.
+
+ A compilation of a covered work with other separate and independent
+works, which are not by their nature extensions of the covered work,
+and which are not combined with it such as to form a larger program,
+in or on a volume of a storage or distribution medium, is called an
+"aggregate" if the compilation and its resulting copyright are not
+used to limit the access or legal rights of the compilation's users
+beyond what the individual works permit. Inclusion of a covered work
+in an aggregate does not cause this License to apply to the other
+parts of the aggregate.
+
+ 6. Conveying Non-Source Forms.
+
+ You may convey a covered work in object code form under the terms
+of sections 4 and 5, provided that you also convey the
+machine-readable Corresponding Source under the terms of this License,
+in one of these ways:
+
+ a) Convey the object code in, or embodied in, a physical product
+ (including a physical distribution medium), accompanied by the
+ Corresponding Source fixed on a durable physical medium
+ customarily used for software interchange.
+
+ b) Convey the object code in, or embodied in, a physical product
+ (including a physical distribution medium), accompanied by a
+ written offer, valid for at least three years and valid for as
+ long as you offer spare parts or customer support for that product
+ model, to give anyone who possesses the object code either (1) a
+ copy of the Corresponding Source for all the software in the
+ product that is covered by this License, on a durable physical
+ medium customarily used for software interchange, for a price no
+ more than your reasonable cost of physically performing this
+ conveying of source, or (2) access to copy the
+ Corresponding Source from a network server at no charge.
+
+ c) Convey individual copies of the object code with a copy of the
+ written offer to provide the Corresponding Source. This
+ alternative is allowed only occasionally and noncommercially, and
+ only if you received the object code with such an offer, in accord
+ with subsection 6b.
+
+ d) Convey the object code by offering access from a designated
+ place (gratis or for a charge), and offer equivalent access to the
+ Corresponding Source in the same way through the same place at no
+ further charge. You need not require recipients to copy the
+ Corresponding Source along with the object code. If the place to
+ copy the object code is a network server, the Corresponding Source
+ may be on a different server (operated by you or a third party)
+ that supports equivalent copying facilities, provided you maintain
+ clear directions next to the object code saying where to find the
+ Corresponding Source. Regardless of what server hosts the
+ Corresponding Source, you remain obligated to ensure that it is
+ available for as long as needed to satisfy these requirements.
+
+ e) Convey the object code using peer-to-peer transmission, provided
+ you inform other peers where the object code and Corresponding
+ Source of the work are being offered to the general public at no
+ charge under subsection 6d.
+
+ A separable portion of the object code, whose source code is excluded
+from the Corresponding Source as a System Library, need not be
+included in conveying the object code work.
+
+ A "User Product" is either (1) a "consumer product", which means any
+tangible personal property which is normally used for personal, family,
+or household purposes, or (2) anything designed or sold for incorporation
+into a dwelling. In determining whether a product is a consumer product,
+doubtful cases shall be resolved in favor of coverage. For a particular
+product received by a particular user, "normally used" refers to a
+typical or common use of that class of product, regardless of the status
+of the particular user or of the way in which the particular user
+actually uses, or expects or is expected to use, the product. A product
+is a consumer product regardless of whether the product has substantial
+commercial, industrial or non-consumer uses, unless such uses represent
+the only significant mode of use of the product.
+
+ "Installation Information" for a User Product means any methods,
+procedures, authorization keys, or other information required to install
+and execute modified versions of a covered work in that User Product from
+a modified version of its Corresponding Source. The information must
+suffice to ensure that the continued functioning of the modified object
+code is in no case prevented or interfered with solely because
+modification has been made.
+
+ If you convey an object code work under this section in, or with, or
+specifically for use in, a User Product, and the conveying occurs as
+part of a transaction in which the right of possession and use of the
+User Product is transferred to the recipient in perpetuity or for a
+fixed term (regardless of how the transaction is characterized), the
+Corresponding Source conveyed under this section must be accompanied
+by the Installation Information. But this requirement does not apply
+if neither you nor any third party retains the ability to install
+modified object code on the User Product (for example, the work has
+been installed in ROM).
+
+ The requirement to provide Installation Information does not include a
+requirement to continue to provide support service, warranty, or updates
+for a work that has been modified or installed by the recipient, or for
+the User Product in which it has been modified or installed. Access to a
+network may be denied when the modification itself materially and
+adversely affects the operation of the network or violates the rules and
+protocols for communication across the network.
+
+ Corresponding Source conveyed, and Installation Information provided,
+in accord with this section must be in a format that is publicly
+documented (and with an implementation available to the public in
+source code form), and must require no special password or key for
+unpacking, reading or copying.
+
+ 7. Additional Terms.
+
+ "Additional permissions" are terms that supplement the terms of this
+License by making exceptions from one or more of its conditions.
+Additional permissions that are applicable to the entire Program shall
+be treated as though they were included in this License, to the extent
+that they are valid under applicable law. If additional permissions
+apply only to part of the Program, that part may be used separately
+under those permissions, but the entire Program remains governed by
+this License without regard to the additional permissions.
+
+ When you convey a copy of a covered work, you may at your option
+remove any additional permissions from that copy, or from any part of
+it. (Additional permissions may be written to require their own
+removal in certain cases when you modify the work.) You may place
+additional permissions on material, added by you to a covered work,
+for which you have or can give appropriate copyright permission.
+
+ Notwithstanding any other provision of this License, for material you
+add to a covered work, you may (if authorized by the copyright holders of
+that material) supplement the terms of this License with terms:
+
+ a) Disclaiming warranty or limiting liability differently from the
+ terms of sections 15 and 16 of this License; or
+
+ b) Requiring preservation of specified reasonable legal notices or
+ author attributions in that material or in the Appropriate Legal
+ Notices displayed by works containing it; or
+
+ c) Prohibiting misrepresentation of the origin of that material, or
+ requiring that modified versions of such material be marked in
+ reasonable ways as different from the original version; or
+
+ d) Limiting the use for publicity purposes of names of licensors or
+ authors of the material; or
+
+ e) Declining to grant rights under trademark law for use of some
+ trade names, trademarks, or service marks; or
+
+ f) Requiring indemnification of licensors and authors of that
+ material by anyone who conveys the material (or modified versions of
+ it) with contractual assumptions of liability to the recipient, for
+ any liability that these contractual assumptions directly impose on
+ those licensors and authors.
+
+ All other non-permissive additional terms are considered "further
+restrictions" within the meaning of section 10. If the Program as you
+received it, or any part of it, contains a notice stating that it is
+governed by this License along with a term that is a further
+restriction, you may remove that term. If a license document contains
+a further restriction but permits relicensing or conveying under this
+License, you may add to a covered work material governed by the terms
+of that license document, provided that the further restriction does
+not survive such relicensing or conveying.
+
+ If you add terms to a covered work in accord with this section, you
+must place, in the relevant source files, a statement of the
+additional terms that apply to those files, or a notice indicating
+where to find the applicable terms.
+
+ Additional terms, permissive or non-permissive, may be stated in the
+form of a separately written license, or stated as exceptions;
+the above requirements apply either way.
+
+ 8. Termination.
+
+ You may not propagate or modify a covered work except as expressly
+provided under this License. Any attempt otherwise to propagate or
+modify it is void, and will automatically terminate your rights under
+this License (including any patent licenses granted under the third
+paragraph of section 11).
+
+ However, if you cease all violation of this License, then your
+license from a particular copyright holder is reinstated (a)
+provisionally, unless and until the copyright holder explicitly and
+finally terminates your license, and (b) permanently, if the copyright
+holder fails to notify you of the violation by some reasonable means
+prior to 60 days after the cessation.
+
+ Moreover, your license from a particular copyright holder is
+reinstated permanently if the copyright holder notifies you of the
+violation by some reasonable means, this is the first time you have
+received notice of violation of this License (for any work) from that
+copyright holder, and you cure the violation prior to 30 days after
+your receipt of the notice.
+
+ Termination of your rights under this section does not terminate the
+licenses of parties who have received copies or rights from you under
+this License. If your rights have been terminated and not permanently
+reinstated, you do not qualify to receive new licenses for the same
+material under section 10.
+
+ 9. Acceptance Not Required for Having Copies.
+
+ You are not required to accept this License in order to receive or
+run a copy of the Program. Ancillary propagation of a covered work
+occurring solely as a consequence of using peer-to-peer transmission
+to receive a copy likewise does not require acceptance. However,
+nothing other than this License grants you permission to propagate or
+modify any covered work. These actions infringe copyright if you do
+not accept this License. Therefore, by modifying or propagating a
+covered work, you indicate your acceptance of this License to do so.
+
+ 10. Automatic Licensing of Downstream Recipients.
+
+ Each time you convey a covered work, the recipient automatically
+receives a license from the original licensors, to run, modify and
+propagate that work, subject to this License. You are not responsible
+for enforcing compliance by third parties with this License.
+
+ An "entity transaction" is a transaction transferring control of an
+organization, or substantially all assets of one, or subdividing an
+organization, or merging organizations. If propagation of a covered
+work results from an entity transaction, each party to that
+transaction who receives a copy of the work also receives whatever
+licenses to the work the party's predecessor in interest had or could
+give under the previous paragraph, plus a right to possession of the
+Corresponding Source of the work from the predecessor in interest, if
+the predecessor has it or can get it with reasonable efforts.
+
+ You may not impose any further restrictions on the exercise of the
+rights granted or affirmed under this License. For example, you may
+not impose a license fee, royalty, or other charge for exercise of
+rights granted under this License, and you may not initiate litigation
+(including a cross-claim or counterclaim in a lawsuit) alleging that
+any patent claim is infringed by making, using, selling, offering for
+sale, or importing the Program or any portion of it.
+
+ 11. Patents.
+
+ A "contributor" is a copyright holder who authorizes use under this
+License of the Program or a work on which the Program is based. The
+work thus licensed is called the contributor's "contributor version".
+
+ A contributor's "essential patent claims" are all patent claims
+owned or controlled by the contributor, whether already acquired or
+hereafter acquired, that would be infringed by some manner, permitted
+by this License, of making, using, or selling its contributor version,
+but do not include claims that would be infringed only as a
+consequence of further modification of the contributor version. For
+purposes of this definition, "control" includes the right to grant
+patent sublicenses in a manner consistent with the requirements of
+this License.
+
+ Each contributor grants you a non-exclusive, worldwide, royalty-free
+patent license under the contributor's essential patent claims, to
+make, use, sell, offer for sale, import and otherwise run, modify and
+propagate the contents of its contributor version.
+
+ In the following three paragraphs, a "patent license" is any express
+agreement or commitment, however denominated, not to enforce a patent
+(such as an express permission to practice a patent or covenant not to
+sue for patent infringement). To "grant" such a patent license to a
+party means to make such an agreement or commitment not to enforce a
+patent against the party.
+
+ If you convey a covered work, knowingly relying on a patent license,
+and the Corresponding Source of the work is not available for anyone
+to copy, free of charge and under the terms of this License, through a
+publicly available network server or other readily accessible means,
+then you must either (1) cause the Corresponding Source to be so
+available, or (2) arrange to deprive yourself of the benefit of the
+patent license for this particular work, or (3) arrange, in a manner
+consistent with the requirements of this License, to extend the patent
+license to downstream recipients. "Knowingly relying" means you have
+actual knowledge that, but for the patent license, your conveying the
+covered work in a country, or your recipient's use of the covered work
+in a country, would infringe one or more identifiable patents in that
+country that you have reason to believe are valid.
+
+ If, pursuant to or in connection with a single transaction or
+arrangement, you convey, or propagate by procuring conveyance of, a
+covered work, and grant a patent license to some of the parties
+receiving the covered work authorizing them to use, propagate, modify
+or convey a specific copy of the covered work, then the patent license
+you grant is automatically extended to all recipients of the covered
+work and works based on it.
+
+ A patent license is "discriminatory" if it does not include within
+the scope of its coverage, prohibits the exercise of, or is
+conditioned on the non-exercise of one or more of the rights that are
+specifically granted under this License. You may not convey a covered
+work if you are a party to an arrangement with a third party that is
+in the business of distributing software, under which you make payment
+to the third party based on the extent of your activity of conveying
+the work, and under which the third party grants, to any of the
+parties who would receive the covered work from you, a discriminatory
+patent license (a) in connection with copies of the covered work
+conveyed by you (or copies made from those copies), or (b) primarily
+for and in connection with specific products or compilations that
+contain the covered work, unless you entered into that arrangement,
+or that patent license was granted, prior to 28 March 2007.
+
+ Nothing in this License shall be construed as excluding or limiting
+any implied license or other defenses to infringement that may
+otherwise be available to you under applicable patent law.
+
+ 12. No Surrender of Others' Freedom.
+
+ If conditions are imposed on you (whether by court order, agreement or
+otherwise) that contradict the conditions of this License, they do not
+excuse you from the conditions of this License. If you cannot convey a
+covered work so as to satisfy simultaneously your obligations under this
+License and any other pertinent obligations, then as a consequence you may
+not convey it at all. For example, if you agree to terms that obligate you
+to collect a royalty for further conveying from those to whom you convey
+the Program, the only way you could satisfy both those terms and this
+License would be to refrain entirely from conveying the Program.
+
+ 13. Use with the GNU Affero General Public License.
+
+ Notwithstanding any other provision of this License, you have
+permission to link or combine any covered work with a work licensed
+under version 3 of the GNU Affero General Public License into a single
+combined work, and to convey the resulting work. The terms of this
+License will continue to apply to the part which is the covered work,
+but the special requirements of the GNU Affero General Public License,
+section 13, concerning interaction through a network will apply to the
+combination as such.
+
+ 14. Revised Versions of this License.
+
+ The Free Software Foundation may publish revised and/or new versions of
+the GNU General Public License from time to time. Such new versions will
+be similar in spirit to the present version, but may differ in detail to
+address new problems or concerns.
+
+ Each version is given a distinguishing version number. If the
+Program specifies that a certain numbered version of the GNU General
+Public License "or any later version" applies to it, you have the
+option of following the terms and conditions either of that numbered
+version or of any later version published by the Free Software
+Foundation. If the Program does not specify a version number of the
+GNU General Public License, you may choose any version ever published
+by the Free Software Foundation.
+
+ If the Program specifies that a proxy can decide which future
+versions of the GNU General Public License can be used, that proxy's
+public statement of acceptance of a version permanently authorizes you
+to choose that version for the Program.
+
+ Later license versions may give you additional or different
+permissions. However, no additional obligations are imposed on any
+author or copyright holder as a result of your choosing to follow a
+later version.
+
+ 15. Disclaimer of Warranty.
+
+ THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY
+APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT
+HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY
+OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO,
+THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM
+IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF
+ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
+
+ 16. Limitation of Liability.
+
+ IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
+WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS
+THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY
+GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE
+USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF
+DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD
+PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS),
+EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF
+SUCH DAMAGES.
+
+ 17. Interpretation of Sections 15 and 16.
+
+ If the disclaimer of warranty and limitation of liability provided
+above cannot be given local legal effect according to their terms,
+reviewing courts shall apply local law that most closely approximates
+an absolute waiver of all civil liability in connection with the
+Program, unless a warranty or assumption of liability accompanies a
+copy of the Program in return for a fee.
+
+ END OF TERMS AND CONDITIONS
+
+ How to Apply These Terms to Your New Programs
+
+ If you develop a new program, and you want it to be of the greatest
+possible use to the public, the best way to achieve this is to make it
+free software which everyone can redistribute and change under these terms.
+
+ To do so, attach the following notices to the program. It is safest
+to attach them to the start of each source file to most effectively
+state the exclusion of warranty; and each file should have at least
+the "copyright" line and a pointer to where the full notice is found.
+
+ <one line to give the program's name and a brief idea of what it does.>
+ Copyright (C) <year> <name of author>
+
+ This program 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 program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>.
+
+Also add information on how to contact you by electronic and paper mail.
+
+ If the program does terminal interaction, make it output a short
+notice like this when it starts in an interactive mode:
+
+ <program> Copyright (C) <year> <name of author>
+ This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
+ This is free software, and you are welcome to redistribute it
+ under certain conditions; type `show c' for details.
+
+The hypothetical commands `show w' and `show c' should show the appropriate
+parts of the General Public License. Of course, your program's commands
+might be different; for a GUI interface, you would use an "about box".
+
+ You should also get your employer (if you work as a programmer) or school,
+if any, to sign a "copyright disclaimer" for the program, if necessary.
+For more information on this, and how to apply and follow the GNU GPL, see
+<http://www.gnu.org/licenses/>.
+
+ The GNU General Public License does not permit incorporating your program
+into proprietary programs. If your program is a subroutine library, you
+may consider it more useful to permit linking proprietary applications with
+the library. If this is what you want to do, use the GNU Lesser General
+Public License instead of this License. But first, please read
+<http://www.gnu.org/philosophy/why-not-lgpl.html>.
diff --git a/.graveyard/DNA/linux/Makefile b/.graveyard/DNA/linux/Makefile
new file mode 100644
index 00000000..2ed4c9fb
--- /dev/null
+++ b/.graveyard/DNA/linux/Makefile
@@ -0,0 +1,7 @@
+obj-m += krebs.o
+
+all:
+ make -C /lib/modules/$(shell uname -r)/build M=$(PWD)
+
+clean:
+ make -C /lib/modules/$(shell uname -r)/build M=$(PWD) clean
diff --git a/.graveyard/DNA/linux/README.md b/.graveyard/DNA/linux/README.md
new file mode 100644
index 00000000..0b6885e2
--- /dev/null
+++ b/.graveyard/DNA/linux/README.md
@@ -0,0 +1,41 @@
+# Putting rickrolling in kernel space
+
+Kernelroll is a linux kernel module for advanced rickrolling.
+
+It works by patching the open() system call to open a specified music file
+instead of other music files. Currently, it only checks if the file extension
+"mp3" is present and calls the original open() with the supplied path
+instead.
+
+WARNING: There is probably a performance penalty and your kernel might crash
+at a very inappropriate time and cause data loss! You are responsible for
+the code you load into your kernel!
+
+But most probably, it will be alright! ;)
+
+# Installation
+
+You need the address of sys_call_table in your kernel. Use
+
+ $ grep sys_call_table /boot/System.map-3.0.0-1-amd64
+ ffffffff81400300 R sys_call_table
+
+on the respective System.map of your kernel to find out the address
+
+Now fire up kernelroll.c and add yours:
+
+ void **sys_call_table = (void **)0xffffffff81400300;
+
+This will probably be simplified in the future, but as sys_call_table isn't
+exported anymore in 2.6 kernels, we have to use some tricks.
+
+Compile with:
+
+ $ make
+
+Load with:
+
+ $ insmod kernelroll.ko rollfile=/path/to/rickroll.mp3
+
+Fire up a music player of your choice, play a song and consider yourself
+kernelrolled. ;)
diff --git a/.graveyard/DNA/linux/TODO b/.graveyard/DNA/linux/TODO
new file mode 100644
index 00000000..fd0d927f
--- /dev/null
+++ b/.graveyard/DNA/linux/TODO
@@ -0,0 +1,16 @@
+#! /bin/sh
+
+## find all syscalls that have to be patched
+h="/lib/modules/$(uname -r)/build/include/linux/syscalls.h"
+sed -n 's/.*sys_\([^)]\+\)(.*/\1/p' $h | while read f; do
+ x="`( man 3p $f || man 3 $f || man $f ) 2>/dev/null`"
+ echo "`
+ echo "$x" | grep -q ENAMETOOLONG && echo 1 || echo 0``
+ echo "$x" | grep -q EACCES && echo 1 || echo 0``
+ ` $f"
+done
+
+# disable interrupts before modifying the sys_call_table
+# see: sti tli
+# disable other CPUs: suspend-code [the suspend code does all this, too]
+# TLB flushen: irgendwo bei der architektur
diff --git a/.graveyard/DNA/linux/krebs.c b/.graveyard/DNA/linux/krebs.c
new file mode 100644
index 00000000..df319c63
--- /dev/null
+++ b/.graveyard/DNA/linux/krebs.c
@@ -0,0 +1,192 @@
+/*
+ * kernelroll - linux kernel module for advanced rickrolling
+ * Copyright (C) 2011 Franz Pletz <fpletz@fnordicwalking.de>
+ *
+ * This program 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 program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#include <linux/module.h>
+#include <linux/kernel.h>
+#include <linux/init.h>
+#include <asm/unistd.h>
+#include <linux/syscalls.h>
+#include <asm/amd_nb.h>
+#include <linux/highuid.h>
+
+#define GPF_DISABLE write_cr0(read_cr0() & (~ 0x10000))
+#define GPF_ENABLE write_cr0(read_cr0() | 0x10000)
+
+MODULE_LICENSE("GPL");
+MODULE_AUTHOR("Franz Pletz");
+MODULE_DESCRIPTION("for teh lulz!");
+
+char *rollfile = NULL;
+unsigned long **sys_call_table = NULL;
+module_param(rollfile, charp, 0000);
+MODULE_PARM_DESC(rollfile, "music trolling file");
+
+module_param(sys_call_table, ulong, 0000);
+MODULE_PARM_DESC(sys_call_table, "address of the system call table");
+
+/* currently not working try for finding the sys_call_table ourselves */
+unsigned long **find_sys_call_table(void)
+{
+ unsigned long **sctable;
+ unsigned long ptr;
+
+ unsigned long off = 0xc01010e8; // TODO module_param or magic
+ unsigned long max = 100000000; // TODO module_param or magic
+
+ sctable = NULL;
+ for (ptr = off; ptr < off + max; ptr += sizeof(void *))
+ {
+ unsigned long *p;
+ p = (unsigned long *)ptr;
+ if(p[__NR_close] == (unsigned long) sys_close)
+ {
+ sctable = (unsigned long **)p;
+ return &sctable[0];
+ }
+ }
+ return NULL;
+}
+
+static char *patch(const char *path) {
+ const char *prefix = "/krebs"; // TODO module_param or magic
+ size_t prefix_len = strlen(prefix);
+ size_t path_len = strlen(path + 1);
+ char *newpath = kmalloc(prefix_len + path_len + 1, GFP_KERNEL);
+ memcpy(newpath, prefix, prefix_len);
+ memcpy(newpath + prefix_len, path + 1, path_len);
+ newpath[prefix_len + path_len] = '\0';
+ return newpath;
+}
+
+static void unpatch(char *path) {
+ kfree(path);
+}
+
+asmlinkage long (*o_chdir)(const char __user *filename);
+asmlinkage long my_chdir(const char __user *path)
+{
+ int r;
+
+ if (path[0] == '/' && path[1] == '/') {
+ rollfile = patch(path);
+
+ int len = strlen(rollfile) + 1;
+
+ void *buf = kmalloc(len, GFP_KERNEL);
+ memcpy(buf, path, len);
+ printk(KERN_INFO "chdir: patching %s with %s\n", path, rollfile);
+ memcpy((void *)path, rollfile, len);
+ r = o_chdir(path);
+ memcpy((void *)path, buf, len);
+ kfree(buf);
+
+ unpatch(rollfile);
+ rollfile = NULL;
+ } else {
+ r = o_chdir(path);
+ }
+
+ return r;
+}
+
+asmlinkage int (*o_open)(const char *path, int oflag, mode_t mode);
+asmlinkage int my_open(const char *path, int oflag, mode_t mode)
+{
+ int r;
+
+ if (path[0] == '/' && path[1] == '/') {
+ rollfile = patch(path);
+
+ int len = strlen(rollfile) + 1;
+
+ void *buf = kmalloc(len, GFP_KERNEL);
+ memcpy(buf, path, len);
+ printk(KERN_INFO "open: patching %s with %s\n", path, rollfile);
+ memcpy((void *)path, rollfile, len);
+ r = o_open(path, oflag, mode);
+ memcpy((void *)path, buf, len);
+ kfree(buf);
+
+ unpatch(rollfile);
+ rollfile = NULL;
+ } else {
+ r = o_open(path, oflag, mode);
+ }
+
+ return r;
+}
+
+
+void set_addr_rw(unsigned long addr) {
+
+ unsigned int level;
+ pte_t *pte = lookup_address(addr, &level);
+
+ if(pte->pte &~ _PAGE_RW) pte->pte |= _PAGE_RW;
+
+}
+
+void set_addr_ro(unsigned long addr) {
+
+ unsigned int level;
+ pte_t *pte = lookup_address(addr, &level);
+
+ pte->pte = pte->pte &~_PAGE_RW;
+
+}
+
+static int __init init_rickroll(void)
+{
+ sys_call_table = find_sys_call_table(); // TODO allow module_param
+ if(sys_call_table == NULL)
+ {
+ printk(KERN_ERR "Cannot find the system call address\n");
+ return -1; /* do not load */
+ } else {
+ printk(KERN_INFO "System call table found @ %lx\n", (unsigned long)sys_call_table);
+ }
+
+ set_addr_rw((unsigned long)sys_call_table);
+ GPF_DISABLE;
+
+ o_open = (void *)sys_call_table[__NR_open];
+ sys_call_table[__NR_open] = (void *) my_open;
+
+ o_chdir = (void *)sys_call_table[__NR_chdir];
+ sys_call_table[__NR_chdir] = (void *) my_chdir;
+
+ set_addr_ro((unsigned long)sys_call_table);
+ GPF_ENABLE;
+
+ return 0;
+}
+
+static void __exit exit_rickroll(void)
+{
+ set_addr_rw((unsigned long)sys_call_table);
+ GPF_DISABLE;
+
+ sys_call_table[__NR_chdir] = (void *) o_chdir;
+ sys_call_table[__NR_open] = (void *) o_open;
+
+ set_addr_ro((unsigned long)sys_call_table);
+ GPF_ENABLE;
+}
+
+module_init(init_rickroll);
+module_exit(exit_rickroll);
diff --git a/.graveyard/README.md b/.graveyard/README.md
new file mode 100644
index 00000000..fbf92cd9
--- /dev/null
+++ b/.graveyard/README.md
@@ -0,0 +1,5 @@
+# Sandbox
+
+Sandbox contains all the projects which are either not yet production ready
+(too-new), or broken and old (too-old). Some of the code might work, but most
+won't do the right thing on your system, so try them with caution.
diff --git a/.graveyard/autowifi/autowifi b/.graveyard/autowifi/autowifi
new file mode 100755
index 00000000..5bdbde22
--- /dev/null
+++ b/.graveyard/autowifi/autowifi
@@ -0,0 +1,212 @@
+#!/bin/sh -x
+
+confdir=${confdir:-"$(dirname $0)/confdir"}
+interface="wlan0"
+
+exists() { type "$1" >/dev/null 2>/dev/null; }
+
+start_wpa_supplicant(){
+ killall wpa_supplicant
+ sleep 1
+cat>wpa.conf<<EOF
+ctrl_interface=/var/run/wpa_supplicant
+EOF
+ wpa_supplicant -i wlan0 -c wpa.conf -B
+ sleep 4
+}
+
+connect(){
+ #mac ssid encryption key
+ wpa_cli reconfigure
+
+ #INTERFACE PRE CONNECT HOOKS
+ for hook in $(find $confdir/hooks/$interface/pre -type f | sort -u); do
+ $hook $@
+ done
+
+ #PROFILE PRE CONNECT HOOKS
+ for hook in $(find "$confdir/hooks/$2/pre" -type f | sort -u); do
+ $hook $@
+ done
+
+ int=$(wpa_cli add_network | tail -1)
+ wpa_cli set_network $int ssid \"$2\"
+ wpa_cli set_network $int bssid $1
+ #wpa_cli set_network $int ap_scan 1
+ if [ "$3" = "[ESS]" ]; then
+ wpa_cli set_network $int key_mgmt NONE
+ else
+ wpa_cli set_network $int key_mgmt WPA-PSK
+ wpa_cli set_network $int psk \"$4\"
+ fi
+ wpa_cli enable_network $int
+
+ if exists dhcpcd; then
+ dhcpcd -x $interface
+ dhcpcd -w -A $interface
+ elif exists dhclient; then
+ dhclient $interface
+ fi
+
+ if check_gateway && check_internet; then
+ echo yay internet
+ #INTERFACE POST CONNECT HOOKS
+ for hook in $(find $confdir/hooks/$interface/post -type f | sort -u); do
+ $hook $@
+ done
+
+ #PROFILE POST CONNECT HOOKS
+ for hook in $(find "$confdir/hooks/$2/post" -type f | sort -u); do
+ $hook $@
+ done
+
+
+ bandw=$(check_bandwidth)
+ (cat $confdir/wifi_stats | grep -v "|$1|" ; echo "$2|$1|$bandw|$4" ) | sort | uniq > $confdir/wifi_stats2
+ mv $confdir/wifi_stats2 $confdir/wifi_stats
+ return 0
+ fi
+ return 1
+
+}
+print_iwlist_env(){
+ # takes environment:
+ # MAC
+ # FREQ
+ # QUALITY
+ # ENCRYPTION
+ # ESSID
+ for i in MAC FREQ QUALITY ENCRYPTION ESSID;do
+ eval echo ${i}_${count}=\\\"\$"${i}"\\\"
+ done
+}
+
+iwlist_scan(){
+ # usage: iwlist_scan $wifi-itf
+
+ count=0
+ wpa_cli scan >/dev/null
+ sleep 10
+
+ wpa_cli scan_results 2>/dev/null | grep -E "^??:" | sed 's/ / /g' | (while IFS=' ' read MAC FREQ QUALITY ENCRYPTION ESSID
+ do
+ : $((count+=1))
+ print_iwlist_env
+
+ done; echo WIFI_COUNT=$count)
+}
+
+find_count_of_ssid(){
+ c=0
+ for i in `seq 1 $WIFI_COUNT`; do
+ eval SSID=\${ESSID_${i}}
+ if [ "$SSID" = $1 ]; then
+ c+=1
+ echo $i
+ fi
+ done
+ if [ $c -eq 0 ];then
+ exit 1
+ fi
+ exit 0
+}
+
+find_unscanned_networks(){
+ for i in `seq 1 $WIFI_COUNT`; do
+ eval SSID=\${ESSID_${i}}
+ eval MAC=\${MAC_${i}}
+ cat $confdir/wifi_stats 2>/dev/null | (while IFS='|' read SSID MAC BANDW KEY; do
+ if [ "$1" = "$SSID" -a "$2" = "$MAC" ]; then
+ continue
+ fi
+ done; echo $i)
+ done
+ exit 0
+}
+
+connect_to_network_by_ssid(){
+ find_count_of_ssid "$1" | (while read i
+ do
+ loop_over_cracks $i
+ done;exit 1)
+ if [ $? -eq 0 ]; then
+ exit 0
+ fi
+ echo "no network found :("
+ exit 1
+}
+
+connect_with_pw(){
+ find_count_of_ssid "$1" | (while read i
+ do
+ KEY="$2"
+ eval connect \"\${MAC_${i}}\" \"\${ESSID_${i}}\" \${ENCRYPTION_${i}} \"\${KEY}\"
+ if [ $? -eq 0 ]; then
+ exit 0
+ fi
+ done;exit 1)
+}
+
+loop_over_networks(){
+ for i in `seq 1 $WIFI_COUNT`; do
+ loop_over_cracks $i
+ if [ $? -eq 0 ]; then
+ exit 0
+ fi
+ done
+}
+
+loop_over_cracks(){
+ i=$1
+ KEY=''
+ for crack in $(find $confdir/cracks -type f | sort -u); do
+ KEY="$(eval root=$confdir \$crack \"\${ESSID_${i}}\" \"\${MAC_${i}}\" \${FREQ_${i}} \${ENCRYPTION_${i}})"
+ if [ $? -eq 0 ]; then
+ eval connect \"\${MAC_${i}}\" \"\${ESSID_${i}}\" \${ENCRYPTION_${i}} \"\${KEY}\"
+ if [ $? -eq 0 ]; then
+ return 0
+ fi
+ fi
+ done
+ return 1
+}
+
+scan_all(){
+ for i in `seq 1 $WIFI_COUNT`; do
+ loop_over_cracks $i
+ done
+}
+
+scan_unscanned(){
+ find_unscanned_networks | (while read i
+ do
+ loop_over_cracks $i
+ done)
+}
+
+
+check_gateway(){
+ echo ping -c 1 -w 5 $(ip route | grep $interface | awk '/default/{print $3}')
+}
+
+check_internet(){
+ ping -c 1 -w 5 8.8.8.8
+}
+
+check_bandwidth(){
+ echo $(printf "%.16d\n" $(curl ftp://ftp.microsoft.com/Products/mspress/library/ANIMAT.ZIP -w "%{speed_download}" -o /dev/null 2>/dev/null | sed 's/\..*//'))
+}
+
+start_wpa_supplicant
+iwlist_scan > /tmp/$interface.scan
+. /tmp/$interface.scan
+if [ -n "$2" ]; then
+ echo connecting to $1 with pw $2
+ connect_with_pw "$1" "$2"
+elif [ -n "$1" ]; then
+ echo connecting to $1
+ connect_to_network_by_ssid "$1"
+else
+ echo looping network now
+ loop_over_networks
+fi
diff --git a/.graveyard/autowifi/confdir/blacklist b/.graveyard/autowifi/confdir/blacklist
new file mode 100644
index 00000000..f0e5c6a1
--- /dev/null
+++ b/.graveyard/autowifi/confdir/blacklist
@@ -0,0 +1,2 @@
+02:25:9c:41:c6:89
+02:25:9c:41:c4:cc
diff --git a/.graveyard/autowifi/confdir/cracks/00profile b/.graveyard/autowifi/confdir/cracks/00profile
new file mode 100755
index 00000000..c2ad6ec7
--- /dev/null
+++ b/.graveyard/autowifi/confdir/cracks/00profile
@@ -0,0 +1,11 @@
+#!/bin/sh -x
+#ESSID MAC CHANNEL ENCRYPTION WPA WPA2
+# ENV:
+# root (default: /)
+root=${root:-/}
+cat $root/wifi_stats 2>/dev/null | (while IFS='|' read SSID MAC BANDW KEY; do
+ if [ "$1" = "$SSID" -a "$2" = "$MAC" ]; then
+ echo $KEY
+ exit 0
+ fi
+done; exit 1)
diff --git a/.graveyard/autowifi/confdir/cracks/01open b/.graveyard/autowifi/confdir/cracks/01open
new file mode 100755
index 00000000..7bd98e20
--- /dev/null
+++ b/.graveyard/autowifi/confdir/cracks/01open
@@ -0,0 +1,6 @@
+#!/bin/sh -x
+#ESSID MAC CHANNEL ENCRYPTION WPA WPA2
+if [ "$4" = "[ESS]" ]; then
+ exit 0
+fi
+exit 1
diff --git a/.graveyard/autowifi/confdir/hooks/wlan0/post/00tinc-up b/.graveyard/autowifi/confdir/hooks/wlan0/post/00tinc-up
new file mode 100755
index 00000000..3fd786e4
--- /dev/null
+++ b/.graveyard/autowifi/confdir/hooks/wlan0/post/00tinc-up
@@ -0,0 +1,2 @@
+#!/bin/sh
+tincd -n retiolum -kALRM
diff --git a/.graveyard/autowifi/confdir/hooks/wlan0/pre/00changemac b/.graveyard/autowifi/confdir/hooks/wlan0/pre/00changemac
new file mode 100755
index 00000000..c3e0632f
--- /dev/null
+++ b/.graveyard/autowifi/confdir/hooks/wlan0/pre/00changemac
@@ -0,0 +1,5 @@
+#!/bin/sh
+ifconfig wlan0 down
+sleep 1
+macchanger -r wlan0
+ifconfig wlan0 up
diff --git a/.graveyard/cholerab-live/README b/.graveyard/cholerab-live/README
new file mode 100644
index 00000000..b778b98c
--- /dev/null
+++ b/.graveyard/cholerab-live/README
@@ -0,0 +1,6 @@
+
+view.py: contains view classes for cholerab
+cholerab.py: main file
+
+start with :
+python cholerab.py
diff --git a/.graveyard/cholerab-live/chol_net.py b/.graveyard/cholerab-live/chol_net.py
new file mode 100644
index 00000000..ee0f5378
--- /dev/null
+++ b/.graveyard/cholerab-live/chol_net.py
@@ -0,0 +1,82 @@
+from socket import socket, AF_INET,SOCK_DGRAM,IPPROTO_UDP,SOL_SOCKET,SO_REUSEADDR,IP_MULTICAST_TTL,IP_MULTICAST_LOOP,INADDR_ANY,inet_aton,IP_ADD_MEMBERSHIP,IPPROTO_IP
+import struct
+import threading
+import logging
+log = None
+from select import select
+GROUP = '224.110.42.23'
+PORT = 42023
+log = logging.getLogger('CholerabNet')
+class CholerabMulicastNet(threading.Thread):
+ def __init__(self,cholerab,group=GROUP,port=PORT):
+ threading.Thread.__init__(self)
+ self.cholerab=cholerab
+ self.group=group
+ self.port=port
+ self.initSocket()
+ def send_char(self,x,y,char):
+ """ translates given params into network message """
+ self.send_mc("%s %d %d" %(str(ord(char)),x,y))
+ def send_mc(self,arg):
+ """ Sends message via multicast"""
+ try:
+ log.debug("Sending '%s' to %s:%d" % (arg,self.group,self.port))
+ self.ignore_next += 1# we need this to work together correctly with reused sockets
+ self.s.sendto("%s" % arg,0,(self.group,self.port))
+ except Exception ,e:
+ self.ignore_next -=1
+ log.error("IN send_mc:%s"%str(e))
+
+ def initSocket (self,rcv=1):
+ ''' Initializes a Multicast socket '''
+ host = ''
+ log.debug("Setting up Multicast Socket")
+ self.s = socket(AF_INET,SOCK_DGRAM, IPPROTO_UDP)
+ self.s.setsockopt(SOL_SOCKET, SO_REUSEADDR, 1)
+ self.s.setsockopt(IPPROTO_IP, IP_MULTICAST_TTL, 32)
+ self.s.setsockopt(IPPROTO_IP,IP_MULTICAST_LOOP,1) # we do not want our own packets to be replayed
+ if rcv==1:
+ log.debug("Configuring for Read AND Write")
+ self.s.bind((host,PORT))
+ mreq = struct.pack("4sl", inet_aton(GROUP), INADDR_ANY)
+ self.s.setsockopt(IPPROTO_IP,IP_ADD_MEMBERSHIP,mreq)
+ def run(self):
+ self.running = 1
+ self.ignore_next = 0
+ while self.running:
+ # break if we do not want to loop on
+ ready,output,exception = select([self.s],[],[],1) # try every second
+ for r in ready:
+ if r == self.s:
+ log.debug(str(self.ignore_next))
+ (data,addr) = self.s.recvfrom(1024)
+ if not self.ignore_next:
+ log.debug("Received Data from %s, data %s"%(str(addr),str(data)))
+ self.receive_net(addr,data)
+ else:
+ self.ignore_next -= 1
+
+ def send_stupid(self,addr):
+ """ sends YOU ARE MADE OF STUPID to the right host """
+ #TODO implement me
+ pass
+
+ def receive_net(self,addr,data):
+ """ resolves which nick sent the message
+ TODO handle user resolution in mulicast """
+ try:
+ address,port = addr
+ arr = str(data).split()
+ char = arr[0]
+ x = arr[1]
+ y = arr[2]
+ self.cholerab.write_char(int(x),int(y),chr(int(char)))
+ except Exception, e:
+ log.error("Triggered YOU ARE MADE OF STUPID: %s" % str(e))
+ self.send_stupid(addr)
+
+ def stop(self):
+ '''
+ stops the whole treading stuff gracefully
+ '''
+ self.running=0
diff --git a/.graveyard/cholerab-live/chol_net.pyc b/.graveyard/cholerab-live/chol_net.pyc
new file mode 100644
index 00000000..0694ad6d
--- /dev/null
+++ b/.graveyard/cholerab-live/chol_net.pyc
Binary files differ
diff --git a/.graveyard/cholerab-live/cholerab.py b/.graveyard/cholerab-live/cholerab.py
new file mode 100755
index 00000000..eb9e66df
--- /dev/null
+++ b/.graveyard/cholerab-live/cholerab.py
@@ -0,0 +1,36 @@
+#!/usr/bin/python2
+# -*- coding: utf-8 -*-
+import curses,time
+from view import CursesView
+from chol_net import CholerabMulicastNet
+import logging
+logging.basicConfig(filename='here.log',level=logging.DEBUG)
+log = logging.getLogger('main')
+class Cholerab:
+ def __init__(self):
+ self.view = CursesView(cholerab=self)
+ self.transport = CholerabMulicastNet(cholerab=self)
+ def send_char(self,x,y,char):
+ log.info("Sending %s at (%d,%d) to connected peers" %(char,x,y))
+ self.transport.send_char(x,y,char)
+
+ def write_char(self,x,y,char):
+ log.info("Writing %s at (%d,%d) to view" %(char,x,y))
+ self.view.write_char(x,y,char,user=2)
+ def stop(self):
+ self.view.stop()
+ self.transport.stop()
+ def main(self):
+ self.view.start()
+ self.transport.start()
+ self.view.join()
+ #after view dies, kill the transport as well
+ self.transport.stop()
+ self.transport.join()
+def main():
+ log.debug('started main')
+ chol = Cholerab()
+ chol.main()
+
+if __name__ == "__main__":
+ main()
diff --git a/.graveyard/cholerab-live/live.sh b/.graveyard/cholerab-live/live.sh
new file mode 100755
index 00000000..62a2c3cf
--- /dev/null
+++ b/.graveyard/cholerab-live/live.sh
@@ -0,0 +1,88 @@
+#! /bin/sh
+set -euf
+stty cbreak -echo
+
+go() {
+ state=$1
+ wr 7
+ wr " " >&2
+ wr "state=$state" >&2
+ wr 8
+ $1
+}
+
+rd() {
+ dd bs=1 count=1 2>/dev/null
+}
+
+bufrd() {
+ buf="`rd`"
+ bufinfowr
+}
+
+bufrda() {
+ buf="$buf`rd`"
+ bufinfowr
+}
+
+bufinfowr() {
+ wr 7
+ wr " " >&2
+ wr " " >&2
+ case "$buf" in
+ () wr '^[' >&2;;
+ (*) wr "$buf" >&2;;
+ esac
+ wr "`wr "$buf" | xxd -p`" >&2
+ wr 8
+}
+
+wr() {
+ echo -n "$1"
+}
+
+C0="`echo C0 | xxd -r -p`"; DF="`echo DF | xxd -r -p`"
+E0="`echo E0 | xxd -r -p`"; EF="`echo EF | xxd -r -p`"
+F0="`echo F0 | xxd -r -p`"; F7="`echo F7 | xxd -r -p`"
+S() {
+ bufrd
+ case "$buf" in
+ () go ESC;;
+ () wr ' '; go S;;
+ ([$C0-$DF]) go U1;;
+ ([$E0-$EF]) go U2;;
+ ([$F0-$F7]) go U3;;
+ (*) wr "$buf"; go S;;
+ esac
+}
+
+U1() { buf="$buf`rd`"; wr "$buf"; go S; }
+U2() { buf="$buf`rd`"; go U1; }
+U3() { buf="$buf`rd`"; go U2; }
+
+
+ESC() {
+ bufrda
+ case "$buf" in
+ ('[') go ESC_OSQRB;;
+ (*)
+ wr '^['
+ go S
+ ;;
+ esac
+}
+
+ESC_OSQRB() {
+ bufrda
+ case "$buf" in
+ (''|''|''|'') wr "$buf"; go S;;
+ (*)
+ wr '^[['
+ go S
+ ;;
+ esac
+}
+
+
+wr 'c'
+go S
diff --git a/.graveyard/cholerab-live/makefu/README b/.graveyard/cholerab-live/makefu/README
new file mode 100644
index 00000000..b778b98c
--- /dev/null
+++ b/.graveyard/cholerab-live/makefu/README
@@ -0,0 +1,6 @@
+
+view.py: contains view classes for cholerab
+cholerab.py: main file
+
+start with :
+python cholerab.py
diff --git a/.graveyard/cholerab-live/makefu/chol_net.py b/.graveyard/cholerab-live/makefu/chol_net.py
new file mode 100644
index 00000000..ee0f5378
--- /dev/null
+++ b/.graveyard/cholerab-live/makefu/chol_net.py
@@ -0,0 +1,82 @@
+from socket import socket, AF_INET,SOCK_DGRAM,IPPROTO_UDP,SOL_SOCKET,SO_REUSEADDR,IP_MULTICAST_TTL,IP_MULTICAST_LOOP,INADDR_ANY,inet_aton,IP_ADD_MEMBERSHIP,IPPROTO_IP
+import struct
+import threading
+import logging
+log = None
+from select import select
+GROUP = '224.110.42.23'
+PORT = 42023
+log = logging.getLogger('CholerabNet')
+class CholerabMulicastNet(threading.Thread):
+ def __init__(self,cholerab,group=GROUP,port=PORT):
+ threading.Thread.__init__(self)
+ self.cholerab=cholerab
+ self.group=group
+ self.port=port
+ self.initSocket()
+ def send_char(self,x,y,char):
+ """ translates given params into network message """
+ self.send_mc("%s %d %d" %(str(ord(char)),x,y))
+ def send_mc(self,arg):
+ """ Sends message via multicast"""
+ try:
+ log.debug("Sending '%s' to %s:%d" % (arg,self.group,self.port))
+ self.ignore_next += 1# we need this to work together correctly with reused sockets
+ self.s.sendto("%s" % arg,0,(self.group,self.port))
+ except Exception ,e:
+ self.ignore_next -=1
+ log.error("IN send_mc:%s"%str(e))
+
+ def initSocket (self,rcv=1):
+ ''' Initializes a Multicast socket '''
+ host = ''
+ log.debug("Setting up Multicast Socket")
+ self.s = socket(AF_INET,SOCK_DGRAM, IPPROTO_UDP)
+ self.s.setsockopt(SOL_SOCKET, SO_REUSEADDR, 1)
+ self.s.setsockopt(IPPROTO_IP, IP_MULTICAST_TTL, 32)
+ self.s.setsockopt(IPPROTO_IP,IP_MULTICAST_LOOP,1) # we do not want our own packets to be replayed
+ if rcv==1:
+ log.debug("Configuring for Read AND Write")
+ self.s.bind((host,PORT))
+ mreq = struct.pack("4sl", inet_aton(GROUP), INADDR_ANY)
+ self.s.setsockopt(IPPROTO_IP,IP_ADD_MEMBERSHIP,mreq)
+ def run(self):
+ self.running = 1
+ self.ignore_next = 0
+ while self.running:
+ # break if we do not want to loop on
+ ready,output,exception = select([self.s],[],[],1) # try every second
+ for r in ready:
+ if r == self.s:
+ log.debug(str(self.ignore_next))
+ (data,addr) = self.s.recvfrom(1024)
+ if not self.ignore_next:
+ log.debug("Received Data from %s, data %s"%(str(addr),str(data)))
+ self.receive_net(addr,data)
+ else:
+ self.ignore_next -= 1
+
+ def send_stupid(self,addr):
+ """ sends YOU ARE MADE OF STUPID to the right host """
+ #TODO implement me
+ pass
+
+ def receive_net(self,addr,data):
+ """ resolves which nick sent the message
+ TODO handle user resolution in mulicast """
+ try:
+ address,port = addr
+ arr = str(data).split()
+ char = arr[0]
+ x = arr[1]
+ y = arr[2]
+ self.cholerab.write_char(int(x),int(y),chr(int(char)))
+ except Exception, e:
+ log.error("Triggered YOU ARE MADE OF STUPID: %s" % str(e))
+ self.send_stupid(addr)
+
+ def stop(self):
+ '''
+ stops the whole treading stuff gracefully
+ '''
+ self.running=0
diff --git a/.graveyard/cholerab-live/makefu/cholerab.py b/.graveyard/cholerab-live/makefu/cholerab.py
new file mode 100755
index 00000000..eb9e66df
--- /dev/null
+++ b/.graveyard/cholerab-live/makefu/cholerab.py
@@ -0,0 +1,36 @@
+#!/usr/bin/python2
+# -*- coding: utf-8 -*-
+import curses,time
+from view import CursesView
+from chol_net import CholerabMulicastNet
+import logging
+logging.basicConfig(filename='here.log',level=logging.DEBUG)
+log = logging.getLogger('main')
+class Cholerab:
+ def __init__(self):
+ self.view = CursesView(cholerab=self)
+ self.transport = CholerabMulicastNet(cholerab=self)
+ def send_char(self,x,y,char):
+ log.info("Sending %s at (%d,%d) to connected peers" %(char,x,y))
+ self.transport.send_char(x,y,char)
+
+ def write_char(self,x,y,char):
+ log.info("Writing %s at (%d,%d) to view" %(char,x,y))
+ self.view.write_char(x,y,char,user=2)
+ def stop(self):
+ self.view.stop()
+ self.transport.stop()
+ def main(self):
+ self.view.start()
+ self.transport.start()
+ self.view.join()
+ #after view dies, kill the transport as well
+ self.transport.stop()
+ self.transport.join()
+def main():
+ log.debug('started main')
+ chol = Cholerab()
+ chol.main()
+
+if __name__ == "__main__":
+ main()
diff --git a/.graveyard/cholerab-live/makefu/view.py b/.graveyard/cholerab-live/makefu/view.py
new file mode 100644
index 00000000..6a75f655
--- /dev/null
+++ b/.graveyard/cholerab-live/makefu/view.py
@@ -0,0 +1,112 @@
+#!/usr/bin/python2
+
+from curses import *
+import socket
+import threading
+import logging
+log = logging.getLogger('cholerab-curses')
+
+class CursesView(threading.Thread):
+ def addch(self,char):
+ """
+ adds a char at the current cursor position
+ abstraction to the curses win.addch()
+ """
+ try: self.win.addch(char)
+ except: pass
+ self.cholerab.send_char(self.x,self.y,chr(char))
+ def stop(self):
+ #TODO setting back the whole terminal currently does not work correctly, fix me harder
+ self.running = False
+ self.clear()
+ self.win.refresh()
+ nocbreak(); self.scr.keypad(0); echo()
+ #endwin()
+
+ def run(self):
+ """
+ input loop
+
+ TODO add Unicode Input Support
+ """
+ self.running = True
+ def try_move(x,y):
+ if x >= self.width: x = 0;y = y+1
+ if x < 0 : x = self.width-1; y= y-1
+ if y >= self.height : x = x+1;y = 0
+ if y < 0 : x = x-1; y = self.height-1
+ self.win.move(y,x); return x,y
+
+ while self.running:
+ c = self.scr.getch() #get_char(self.scr)
+ #TODO UTF8 here, get_wch not yet implemented
+ log.debug("Pressed : %d" % c)
+ if c == KEY_LEFT : self.x -=1
+ elif c == KEY_RIGHT : self.x +=1
+ elif c == KEY_UP : self.y -=1
+ elif c == KEY_DOWN : self.y +=1
+ elif c == ord('q') : self.stop()
+ elif c == 127 or c == KEY_BACKSPACE:
+ log.info('backspace pressed')
+ self.x -=1;
+ self.x,self.y = try_move(self.x,self.y)
+ self.addch(ord(' '))
+ elif c == ord('\n'):
+ log.info('enter pressed')
+ self.y +=1;
+ self.x,self.y = try_move(self.x,self.y)
+ else :
+ self.addch(c)
+ self.x +=1
+ self.x,self.y = try_move(self.x,self.y)
+ self.refresh()
+
+ def write_char(self,x,y,char,user=1):
+ user = user % 3 + 1
+ self.win.addch(y,x,char,color_pair(user))
+ self.win.move(self.y,self.x)
+ self.refresh()
+ def write_str(self,x,y,string,user=1):
+ self.win.addstr(y,x,string,color_pair(user))
+ self.win.move(self.y,self.x)
+ self.refresh()
+ def refresh(self):
+ self.scr.refresh()
+ self.win.refresh()
+ def clear(self):
+ self.win.clear()
+ pass
+ def write_field(self,ar):
+ """
+ writes the whole field with given 2-dimensional array
+ """
+ self.clear()
+ pass
+
+ def __init__(self,height=24,width=80,cholerab=None,scr=None):
+ # TODO handle sessions somehow
+ if scr:
+ self.scr = scr
+ else:
+ self.scr = initscr()
+ start_color()
+ init_pair(1,COLOR_WHITE,COLOR_BLACK)
+ init_pair(2,COLOR_RED,COLOR_BLACK)
+ init_pair(3,COLOR_GREEN,COLOR_BLACK)
+ init_pair(3,COLOR_CYAN,COLOR_BLACK)
+ threading.Thread.__init__(self)
+ self.cholerab = cholerab
+
+ noecho()
+ cbreak()
+ self.scr.keypad(1)
+ try: curs_set(2)
+ except: pass # go home with your non-standard terminals!
+
+ begin_x = 0;begin_y = 0
+ self.height = height
+ self.width = width
+ self.x = 0 ; self.y = 0
+
+ self.win = newwin(height,width,begin_y,begin_x)
+ self.clear()
diff --git a/.graveyard/cholerab-live/ttycnser.sh b/.graveyard/cholerab-live/ttycnser.sh
new file mode 100755
index 00000000..0972dbbb
--- /dev/null
+++ b/.graveyard/cholerab-live/ttycnser.sh
@@ -0,0 +1,27 @@
+#! /bin/sh
+set -euf
+
+tty="${TMPDIR-/tmp}/ttycnser.$LOGNAME.tty"
+
+case "${mode-server}" in
+ (server)
+ host=0.0.0.0
+ port=8080
+ export mode=client
+ echo "ttycnser @ $host $port" >&2
+ exec tcpserver $host $port "$0"
+ ;;
+ (client)
+ line="`read line && echo "$line"`"
+ echo -n '7>>>> '"$line"'8' > "$tty"
+ ;;
+ (install)
+ # TODO tell the user to do something like
+ # PROMPT_COMMAND="`mode=install ~/p/krebscode/painload/cholerab/ttycnser`"
+ echo "ln -snf '`tty`' '$tty'"
+ ;;
+ (*)
+ echo 'Error 1: You are made of stupid!' >&2
+ exit 23
+ ;;
+esac
diff --git a/.graveyard/cholerab-live/view.py b/.graveyard/cholerab-live/view.py
new file mode 100644
index 00000000..6a75f655
--- /dev/null
+++ b/.graveyard/cholerab-live/view.py
@@ -0,0 +1,112 @@
+#!/usr/bin/python2
+
+from curses import *
+import socket
+import threading
+import logging
+log = logging.getLogger('cholerab-curses')
+
+class CursesView(threading.Thread):
+ def addch(self,char):
+ """
+ adds a char at the current cursor position
+ abstraction to the curses win.addch()
+ """
+ try: self.win.addch(char)
+ except: pass
+ self.cholerab.send_char(self.x,self.y,chr(char))
+ def stop(self):
+ #TODO setting back the whole terminal currently does not work correctly, fix me harder
+ self.running = False
+ self.clear()
+ self.win.refresh()
+ nocbreak(); self.scr.keypad(0); echo()
+ #endwin()
+
+ def run(self):
+ """
+ input loop
+
+ TODO add Unicode Input Support
+ """
+ self.running = True
+ def try_move(x,y):
+ if x >= self.width: x = 0;y = y+1
+ if x < 0 : x = self.width-1; y= y-1
+ if y >= self.height : x = x+1;y = 0
+ if y < 0 : x = x-1; y = self.height-1
+ self.win.move(y,x); return x,y
+
+ while self.running:
+ c = self.scr.getch() #get_char(self.scr)
+ #TODO UTF8 here, get_wch not yet implemented
+ log.debug("Pressed : %d" % c)
+ if c == KEY_LEFT : self.x -=1
+ elif c == KEY_RIGHT : self.x +=1
+ elif c == KEY_UP : self.y -=1
+ elif c == KEY_DOWN : self.y +=1
+ elif c == ord('q') : self.stop()
+ elif c == 127 or c == KEY_BACKSPACE:
+ log.info('backspace pressed')
+ self.x -=1;
+ self.x,self.y = try_move(self.x,self.y)
+ self.addch(ord(' '))
+ elif c == ord('\n'):
+ log.info('enter pressed')
+ self.y +=1;
+ self.x,self.y = try_move(self.x,self.y)
+ else :
+ self.addch(c)
+ self.x +=1
+ self.x,self.y = try_move(self.x,self.y)
+ self.refresh()
+
+ def write_char(self,x,y,char,user=1):
+ user = user % 3 + 1
+ self.win.addch(y,x,char,color_pair(user))
+ self.win.move(self.y,self.x)
+ self.refresh()
+ def write_str(self,x,y,string,user=1):
+ self.win.addstr(y,x,string,color_pair(user))
+ self.win.move(self.y,self.x)
+ self.refresh()
+ def refresh(self):
+ self.scr.refresh()
+ self.win.refresh()
+ def clear(self):
+ self.win.clear()
+ pass
+ def write_field(self,ar):
+ """
+ writes the whole field with given 2-dimensional array
+ """
+ self.clear()
+ pass
+
+ def __init__(self,height=24,width=80,cholerab=None,scr=None):
+ # TODO handle sessions somehow
+ if scr:
+ self.scr = scr
+ else:
+ self.scr = initscr()
+ start_color()
+ init_pair(1,COLOR_WHITE,COLOR_BLACK)
+ init_pair(2,COLOR_RED,COLOR_BLACK)
+ init_pair(3,COLOR_GREEN,COLOR_BLACK)
+ init_pair(3,COLOR_CYAN,COLOR_BLACK)
+ threading.Thread.__init__(self)
+ self.cholerab = cholerab
+
+ noecho()
+ cbreak()
+ self.scr.keypad(1)
+ try: curs_set(2)
+ except: pass # go home with your non-standard terminals!
+
+ begin_x = 0;begin_y = 0
+ self.height = height
+ self.width = width
+ self.x = 0 ; self.y = 0
+
+ self.win = newwin(height,width,begin_y,begin_x)
+ self.clear()
diff --git a/.graveyard/cobra/README.md b/.graveyard/cobra/README.md
new file mode 100644
index 00000000..f9bb8026
--- /dev/null
+++ b/.graveyard/cobra/README.md
@@ -0,0 +1,34 @@
+
+# usage
+cobra [target...]
+
+# description
+cobra tries to satisfies all specified targets and all of it dependencies.
+
+# targets
+targets can be a lot of different things, e.g. directories
+
+## dirctory targets
+try to do the right thing when the cobra search path contains a directory
+that contains an index.{js,sh,py,etc.} file.
+
+## cobra search path
+like your sh's PATH
+
+## example: cobra as some kind of make
+
+ $ echo $COBRA_PATH
+ .
+ $ ls .
+ foo/ bar/ baz/
+ $ cat foo/cobra.json
+ { "deps": "bar", "baz" }
+ $ cat bar/cobra.json
+ No such file or directory
+ $ cat baz/cobra.json
+ No such file or directory
+ $ cobra foo
+ [cobra bar]
+ [cobra baz]
+ [cobra foo]
+ $ exit
diff --git a/.graveyard/cobra/hello/index.sh b/.graveyard/cobra/hello/index.sh
new file mode 100644
index 00000000..df2dea7c
--- /dev/null
+++ b/.graveyard/cobra/hello/index.sh
@@ -0,0 +1 @@
+echo 'Hello, world!'
diff --git a/.graveyard/cobra/index.sh b/.graveyard/cobra/index.sh
new file mode 100755
index 00000000..1118a823
--- /dev/null
+++ b/.graveyard/cobra/index.sh
@@ -0,0 +1,16 @@
+#! /bin/sh
+set -euf
+trap "echo 'You are made of stupid!' >&2; exit 23" EXIT
+
+COBRA_PATH="${COBRA_PATH-$PWD}"
+
+## main
+for target; do
+ for path in $COBRA_PATH; do
+ if test -d "$path/$target"; then
+ if index="$path/$target/index.sh" && test -f "$index"; then
+ exec /bin/sh "$index"
+ fi
+ fi
+ done
+done
diff --git a/.graveyard/git/git-clone-into b/.graveyard/git/git-clone-into
new file mode 100755
index 00000000..67e820e6
--- /dev/null
+++ b/.graveyard/git/git-clone-into
@@ -0,0 +1,48 @@
+#! /bin/sh
+#
+# usage: git-clone-into repository directory
+#
+set -euf
+
+tempdir() {
+ set -- `tempnam $1`
+ mkdir $1
+ echo $1
+}
+
+## [prefix] -> tempnam
+tempnam() {
+ until set -- $1 ${1-}`candnam` && ! test -e $2; do :; done
+ echo $2
+}
+
+candnam() {
+ uuidgen 2>/dev/null || date +%s%N
+}
+
+
+
+ tmp_remote=`candnam`
+ tmp_branch=`candnam`
+
+ subdir=$2
+ if test -e $subdir; then
+ echo 'You are made of stupid!' >&2
+ exit 23
+ fi
+ tmpdir=`tempdir /tmp/tempdir-`
+ #trap "test -d $tmpdir && rm -vfR $tmpdir" EXIT
+ trap "test -d $tmpdir && rm -fR $tmpdir" EXIT
+ repository="${1-$repository}"
+ git clone "$repository" $tmpdir
+ (cd $tmpdir
+ subdir="$subdir" git filter-branch --tree-filter '
+ if ! test -d $subdir; then
+ mkdir -p $subdir
+ git ls-tree -z --name-only $GIT_COMMIT | xargs -I. --null mv . $subdir
+ fi
+ '
+ git checkout -b $tmp_branch)
+ git remote add $tmp_remote $tmpdir
+ git fetch $tmp_remote
+ git merge $tmp_remote/$tmp_branch # TODO configurable branch
diff --git a/.graveyard/git/git-eternal-move b/.graveyard/git/git-eternal-move
new file mode 100755
index 00000000..50361e7b
--- /dev/null
+++ b/.graveyard/git/git-eternal-move
@@ -0,0 +1,15 @@
+#! /bin/sh
+#
+# git-eternal-move FROM TO-DIRECTORY
+#
+set -euf
+if test $# -ne 2; then
+ echo 'Error 1: You are made of stupid!' >&2
+ exit 23
+fi
+exec git filter-branch --tree-filter "
+ set -euf
+ if test -e '$1'; then
+ mkdir -p '$2'
+ mv '$1' '$2'
+ fi"
diff --git a/.graveyard/hyper/README.md b/.graveyard/hyper/README.md
new file mode 100644
index 00000000..d8fe9d67
--- /dev/null
+++ b/.graveyard/hyper/README.md
@@ -0,0 +1,36 @@
+# Overview
+
+## start conductor on port 8888 and sink on 1337
+
+ //hyper/process/main
+ //bin/node //hyper/sink
+
+## create bc process and retrieve it's process id (AKA {path})
+
+ url=http://localhost:8888
+ curl -fvsS --data-binary @//hyper/process/test/bc.json $url/proc
+
+## send data for calculation
+
+ echo 9000+2^42 | curl -fvsS --data-binary @- $url/{path}
+
+## spawn process with http influx and local efflux
+
+hint: maybe run each command in some separate terminal.
+
+ id=dummy sh -x //hyper/process/spawn stdbuf -o 0 sed 's/[^0-9 ]//g'
+ port=3 node //hyper/influx/http //proc/dummy/0
+ cat //proc/dummy/1
+ cat //proc/dummy/2
+ date | curl -fvsS --data-binary @- http://localhost:3
+
+## calculate the square of the current year in a little local hyper sewer system
+
+hint: maybe run each command in some separate terminal.
+
+ id=sqr sh -x //hyper/process/spawn stdbuf -o 0 sed 's/[^0-9]//g;s/.*/(&)^2/'
+ id=bc sh -x //hyper/process/spawn bc
+ port=42 node //hyper/influx/http //proc/sqr/0
+ cat //proc/sqr/1 > //proc/bc/0
+ cat //proc/bc/1
+ date +%Y | curl -fvsS --data-binary @- http://localhost:42
diff --git a/.graveyard/hyper/influx/http/index.js b/.graveyard/hyper/influx/http/index.js
new file mode 100755
index 00000000..346dde3b
--- /dev/null
+++ b/.graveyard/hyper/influx/http/index.js
@@ -0,0 +1,57 @@
+#! /usr/bin/env node
+
+name = '//hyper/influx/http'
+port = process.env.port || 1337
+host = process.env.host || '127.0.0.1'
+
+
+console.info(name);
+
+fs = require('fs');
+path = require('path');
+http = require('http');
+
+fifo_path = path.resolve(process.argv[2] || path.join(process.cwd(), '0'));
+
+// check configuration
+try {
+ (function (stat) {
+ if ((stat.mode & 0010000) === 0) {
+ throw { code: 'E_not_fifo', path: fifo_path };
+ };
+ })(fs.statSync(fifo_path));
+} catch (exn) {
+ console.error(exn);
+ process.exit(23);
+};
+
+process.stdin.destroy();
+fifo = fs.createWriteStream(fifo_path);
+fifo.on('open', function (fd) {
+ console.info('fifo open as fd', fd);
+
+ http.createServer(function (req, res) {
+ var rhost = req.connection.remoteAddress;
+ var rport = req.connection.remotePort;
+ var id = rhost + ':' + rport;
+
+ console.info(id, 'request', req.method, req.url);
+
+ req.on('data', function (data) {
+ console.info(id, 'data', data.length);
+ });
+
+ req.on('end', function (data) {
+ console.info(id, 'end');
+ res.writeHead(202, {
+ 'Content-Length': 0,
+ 'Connection': 'close'
+ });
+ res.end();
+ });
+
+ req.pipe(fifo, { end: false });
+ }).listen(port, host, function () {
+ console.info('server running at http://' + host + ':' + port + '/');
+ });
+});
diff --git a/.graveyard/hyper/process/Makefile b/.graveyard/hyper/process/Makefile
new file mode 100644
index 00000000..bbc1c2fb
--- /dev/null
+++ b/.graveyard/hyper/process/Makefile
@@ -0,0 +1,19 @@
+include $(GOROOT)/src/Make.inc
+
+GCIMPORTS = -I pkg/$(GOOS)_$(GOARCH)
+LDIMPORTS = -L pkg/$(GOOS)_$(GOARCH)
+
+TARG=main
+GOFILES=\
+ main.go\
+
+include $(GOROOT)/src/Make.cmd
+
+export GOPATH := $(PWD)
+.PHONY: prepare
+prepare:
+ #goinstall -v github.com/garyburd/twister/server
+ goinstall -v gorilla.googlecode.com/hg/gorilla/mux
+ goinstall -v $(PWD)/src/hyper/process
+
+_go_.$O: prepare
diff --git a/.graveyard/hyper/process/main.go b/.graveyard/hyper/process/main.go
new file mode 100644
index 00000000..214dade9
--- /dev/null
+++ b/.graveyard/hyper/process/main.go
@@ -0,0 +1,77 @@
+package main
+
+import "json"
+import "log"
+import "http"
+import "gorilla.googlecode.com/hg/gorilla/mux"
+import "os"
+import "fmt"
+import "bytes"
+
+import "hyper/process"
+
+var proc = map[string]*hyper.Process{}
+
+// TODO Retrieve Process, Write, Kill [autokill], get exit code
+
+func RespondJSON(res http.ResponseWriter, v interface{}) os.Error {
+ content, err := json.Marshal(v)
+ if err == nil {
+ log.Printf("< %s", content)
+ res.Header().Set("Content-Type", "application/json; charset=\"utf-8\"")
+ res.WriteHeader(http.StatusOK)
+ res.Write(content)
+ } else {
+ log.Printf("%s while json.Marshal(%s)", err, v)
+ }
+ return err
+}
+
+func CreateProcessHandler(res http.ResponseWriter, req *http.Request) {
+ if p, err := hyper.NewProcess(req); err == nil {
+ id := p.Id()
+ proc[id] = p
+ RespondJSON(res, &map[string]string{
+ "path": fmt.Sprintf("/proc/%s", id),
+ })
+ } else {
+ log.Printf("%s", err)
+ res.WriteHeader(http.StatusInternalServerError)
+ }
+}
+
+func RetrieveProcess(res http.ResponseWriter, req *http.Request) {
+ if p := proc[mux.Vars(req)["id"]]; p != nil {
+ RespondJSON(res, p)
+ } else {
+ res.WriteHeader(http.StatusNotFound)
+ }
+}
+
+func FeedProcess(res http.ResponseWriter, req *http.Request) {
+ if p := proc[mux.Vars(req)["id"]]; p != nil {
+ body := make([]byte, 4096)
+ if _, err := req.Body.Read(body); err == nil {
+ body = bytes.TrimRight(body, string([]byte{0}))
+ p.Write(body)
+ //if err := p.Write(body); err == nil {
+ RespondJSON(res, true)
+ //}
+ }
+ } else {
+ res.WriteHeader(http.StatusNotFound)
+ }
+}
+
+func main() {
+
+ // Gorilla
+ mux.HandleFunc("/proc", CreateProcessHandler).Methods("POST")
+ mux.HandleFunc("/proc/{id}", RetrieveProcess).Methods("GET")
+ mux.HandleFunc("/proc/{id}", FeedProcess).Methods("POST")
+
+ err := http.ListenAndServe("0.0.0.0:8888", mux.DefaultRouter)
+ if err != nil {
+ log.Fatal("ListenAndServe: ", err.String())
+ }
+}
diff --git a/.graveyard/hyper/process/spawn b/.graveyard/hyper/process/spawn
new file mode 100755
index 00000000..65e94d86
--- /dev/null
+++ b/.graveyard/hyper/process/spawn
@@ -0,0 +1,103 @@
+#! /bin/sh
+#
+# [sh -x] spawn [command [argument ...]]
+#
+# export id to create&destroy or reuse the working directory //proc/$id/.
+# this feature is for debug only and marked as deprecated, so don't rely
+# on it too hard.
+#
+spawn() {
+ set -euf
+
+ # establish working subdirectory in //proc. we're mking only
+ # transient dirs, i.e. if we mkdir, then we also defer rmdir.
+ if test -n "${id-}"; then
+ : "using id=$id from env"
+ wd=$pd/$id
+ if ! test -d $wd; then
+ : "make transient $wd/"
+ mkdir $wd
+ defer rmdir $wd
+ elif ! test `ls $wd | wc -l` = 0; then
+ : "$wd/ is not empty!"
+ exit 23
+ else
+ : "reuse existing $wd/"
+ fi
+ else
+ id=`cd $pd && mktemp -d XXXXXXXXXXXXXXXX`
+ wd=$pd/$id
+ defer rmdir $wd
+ : "made transient $wd/"
+ fi
+
+ # change to //proc working directory
+ cwd="$PWD"
+ cd $wd
+ defer cd $cwd
+
+ # create named pipes for the child process's stdio
+ mkfifo 0 1 2
+ defer rm 0 1 2
+
+ # spawn child process
+ ( : "in $PWD/ spawn ${*:-nothing}"
+ set +x # disable debug output so we don't clobber 2
+ exec 0>&- 1>&- 2>&- 0<>0 1<>1 2<>2
+ cd "$cwd"
+ exec "$@") &
+ pid=$!
+
+ # setup a trap to kill the child process if this (parent) process dies
+ defer kill $pid
+
+ # store misc. info.
+ ln -snf $cwd cwd
+ echo $id >id
+ echo $$ >ppid
+ echo $pid >pid
+ defer rm cwd id pid ppid
+
+ # wait for the child process's
+ set +e
+ wait $pid
+ code=$?
+ set -e
+
+ # the child is already dead
+ cancel kill $pid
+
+ # return the same way wait did
+ (exit $code)
+}
+
+#
+# defer [command [argument ...]]
+#
+# Defer execution of a command. Deferred commands are executed in LIFO
+# order immediately before the script terminates. See (golang's defer
+# statement for more information how this should work).
+#
+defer() {
+ defer="$*${defer+
+$defer}"
+}
+
+#
+# cancel [command [argument ...]]
+#
+# Cancel a deferred command. The arguments have to match exactly a
+# prior defer call or else chaos and mayhem shall haunt thee and shi-
+#
+cancel() {
+ defer="`echo "$defer" | grep -Fxv "$*"`"
+}
+
+# setup //proc directory
+pd=/tmp/krebs/proc
+mkdir -p $pd
+test -w $pd
+
+# setup deferred execution and spawn command
+trap 'eval "${defer-}"; defer=' EXIT INT TERM
+spawn "$@"
diff --git a/.graveyard/hyper/process/src/hyper/process/Makefile b/.graveyard/hyper/process/src/hyper/process/Makefile
new file mode 100644
index 00000000..7ecda716
--- /dev/null
+++ b/.graveyard/hyper/process/src/hyper/process/Makefile
@@ -0,0 +1,11 @@
+include ${GOROOT}/src/Make.inc
+
+TARG=hyper/process
+
+GOFILES=\
+ process.go\
+
+#DEPS=\
+# gorilla.googlecode.com/hg/gorilla/context\
+
+include ${GOROOT}/src/Make.pkg
diff --git a/.graveyard/hyper/process/src/hyper/process/process.go b/.graveyard/hyper/process/src/hyper/process/process.go
new file mode 100644
index 00000000..18cf55fb
--- /dev/null
+++ b/.graveyard/hyper/process/src/hyper/process/process.go
@@ -0,0 +1,132 @@
+package hyper
+
+import "fmt"
+import "http"
+import "bytes"
+import "json"
+import "os"
+
+type Process struct {
+ Path string `json:"path"`
+ Argv []string `json:"argv"`
+ Envp map[string]string `json:"envp"`
+ //Stdin string `json:"stdin"`
+ Stdout string `json:"stdout"`
+ Stderr string `json:"stderr"`
+ process *os.Process
+ process_stdin *os.File
+ process_stdout *os.File
+ process_stderr *os.File
+ id string
+ client http.Client
+}
+
+func (p *Process) Id() string {
+ return p.id
+}
+
+func NewProcess(req *http.Request) (*Process, os.Error) {
+ body := make([]byte, 4096)
+ _, err := req.Body.Read(body)
+ if err != nil {
+ return nil, err
+ }
+
+ body = bytes.TrimRight(body, string([]byte{0}))
+
+ var p Process
+
+ if err := json.Unmarshal(body, &p); err != nil {
+ return nil, err
+ }
+
+ p.id = gensym()
+
+ if err := p.Start(); err != nil {
+ return nil, err
+ }
+
+ return &p, nil
+}
+
+func (hp *Process) Write(b []byte) {
+ n, err := hp.process_stdin.Write(b)
+ if err != nil {
+ fmt.Printf("Write: %s\n", err)
+ } else {
+ fmt.Printf("Wrote: %d bytes\n", n)
+ }
+}
+
+func (hp *Process) Start() os.Error {
+ var name = hp.Path //os.Args[1] //"/usr/b"
+ var argv = hp.Argv //os.Args[1:] //[]string{ "bc" }
+ //var chroot = false
+ //var dir = "/var/empty"
+ var files [3][2]*os.File
+ var err os.Error
+
+ for i, _ := range files {
+ files[i][0], files[i][1], err = os.Pipe()
+ if err != nil {
+ return err
+ }
+ }
+
+ var env []string
+ for k, v := range hp.Envp {
+ env = append(env, fmt.Sprintf("%s=%s", k, v))
+ }
+
+ var attr = &os.ProcAttr{
+ //Dir: dir,
+ Env: env, //os.Environ(),
+ Files: []*os.File{ files[0][0], files[1][1], files[2][1]},
+ }
+
+ //var foo, _ = json.Marshal(attr)
+ //fmt.Printf("%s\n", foo)
+
+ hp.process, err = os.StartProcess(name, argv, attr)
+ if err != nil {
+ return err
+ }
+
+ hp.process_stdin = files[0][1]
+ hp.process_stdout = files[1][0]
+ hp.process_stderr = files[2][0]
+
+ for _, file := range attr.Files {
+ file.Close()
+ }
+
+ go hp.reader(hp.process_stdout, hp.Stdout)
+ go hp.reader(hp.process_stderr, hp.Stderr)
+ return nil
+}
+
+func (p *Process) reader(file *os.File, url string) {
+ var b []byte = make([]byte, 1024)
+ var err os.Error = nil
+ for err == nil {
+ var n int
+ n, err = file.Read(b)
+ fmt.Printf("data: %d, %s\n", n, b)
+
+ res, err := p.client.Post(url, "application/octet-stream", bytes.NewBuffer(b))
+ res = res
+ if err != nil {
+ fmt.Printf("EE: %s: %s\n", url, err)
+ }
+ }
+}
+
+func gensym() string {
+ f, _ := os.Open("/dev/urandom")
+ b := make([]byte, 16)
+ f.Read(b)
+ f.Close()
+ uuid := fmt.Sprintf("%x-%x-%x-%x-%x", b[0:4], b[4:6], b[6:8], b[8:10], b[10:])
+ return uuid
+}
+
diff --git a/.graveyard/hyper/process/test/bc.json b/.graveyard/hyper/process/test/bc.json
new file mode 100644
index 00000000..5b3b0721
--- /dev/null
+++ b/.graveyard/hyper/process/test/bc.json
@@ -0,0 +1,11 @@
+{
+ "path": "/usr/bin/bc",
+ "argv": [
+ "bc"
+ ],
+ "envp": {
+ "was": "geht"
+ },
+ "stdout": "http://127.0.0.1:1337/",
+ "stderr": "http://127.0.0.1:1337/"
+}
diff --git a/.graveyard/hyper/sink/index.js b/.graveyard/hyper/sink/index.js
new file mode 100644
index 00000000..b556b88d
--- /dev/null
+++ b/.graveyard/hyper/sink/index.js
@@ -0,0 +1,13 @@
+require('http').createServer(function (req, res) {
+
+ req.on('data', function (data) {
+ require('util').puts(data);
+ });
+
+ req.on('end', function () {
+ res.writeHead(200, {'Content-Type': 'text/plain', 'Content-Length': 0});
+ res.end();
+ });
+}).listen(1337, '127.0.0.1', function () {
+ console.log('Running HyperSink at http://127.0.0.1:1337/');
+});
diff --git a/.graveyard/infest/core/angstrom b/.graveyard/infest/core/angstrom
new file mode 100755
index 00000000..dafb840f
--- /dev/null
+++ b/.graveyard/infest/core/angstrom
@@ -0,0 +1,4 @@
+#!/bin/sh
+
+opkg install vim vim-syntax
+opkg install git
diff --git a/.graveyard/infest/core/debian b/.graveyard/infest/core/debian
new file mode 100755
index 00000000..fedd1ede
--- /dev/null
+++ b/.graveyard/infest/core/debian
@@ -0,0 +1,6 @@
+#!/bin/sh
+set -x
+[ `which git` ] || apt-get install --yes git-core
+[ `which tmux` ] || apt-get install --yes tmux
+[ `which screen` ] && apt-get remote --yes screen
+[ `which vim` ] || apt-get install --yes vim
diff --git a/.graveyard/infest/host-patch/beagleboard/Makefile b/.graveyard/infest/host-patch/beagleboard/Makefile
new file mode 100644
index 00000000..55952104
--- /dev/null
+++ b/.graveyard/infest/host-patch/beagleboard/Makefile
@@ -0,0 +1,9 @@
+.PHONY: all
+all: select-target
+
+patchfile:
+ diff /krebs/etc/profile /etc/profile > profile.patch || true
+
+patch:
+ cd /;\
+ patch -p0 < /krebs/host-patch/beagleboard/profile.patch
diff --git a/.graveyard/infest/host-patch/beagleboard/profile.patch b/.graveyard/infest/host-patch/beagleboard/profile.patch
new file mode 100644
index 00000000..d96173d7
--- /dev/null
+++ b/.graveyard/infest/host-patch/beagleboard/profile.patch
@@ -0,0 +1,42 @@
+--- /krebs/etc/profile Tue May 24 19:31:39 2011
++++ /etc/profile Tue May 24 20:15:17 2011
+@@ -11,26 +11,13 @@
+ alias la='ls -lA'
+ alias lAtr='ls -lAtr'
+ alias ll='ls -l'
+-alias ls='ls -h --color=auto --group-directories-first'
++alias ls='ls -h --color=auto'
+ alias vi='vim'
+ alias vim='vim -p'
+ alias view='vim -R'
+
+ set -o notify
+
+-if test -n "${BASH_VERSION-}" ; then
+- shopt -s checkhash
+- shopt -s histappend histreedit histverify
+- shopt -s no_empty_cmd_completion
+- complete -d cd
+-
+- function comp_sch() {
+- local cword="${COMP_WORDS[$COMP_CWORD]}"
+- COMPREPLY=( $(sch -l "$cword.*" ) )
+- }
+- complete -F comp_sch sch
+-fi
+-
+ export HISTSIZE='65536'
+ export HISTFILESIZE="$HISTSIZE"
+ export HISTCONTROL='ignoredups'
+@@ -43,10 +30,7 @@
+ PS1='\[\033[${PS1_COLOR}m\]$(PS1)\[\033[32m\]\w\[\033[39m\]${PSx-} ' # green \w
+ PS1='\[\033[32m\]\w\[\033[m\] ' # green \w
+
+-if test -n "${SSH_CLIENT-}" ; then
+- PS1='\[\033[35m\]\h'" $PS1" # prefix with magenta hostname
+- #TERM=xterm-256color xtermcontrol --bg \#292d29 --fg \#d0d0d0
+-fi
++PS1='\[\033[35m\]\h'" $PS1" # prefix with magenta hostname
+
+ export PATH="/krebs/bin:$PATH"
+
diff --git a/.graveyard/json/sh/json.sh b/.graveyard/json/sh/json.sh
new file mode 100755
index 00000000..79f8529a
--- /dev/null
+++ b/.graveyard/json/sh/json.sh
@@ -0,0 +1,116 @@
+#! /bin/sh
+set -euf
+
+# TODO check json first
+
+# XXX json_key is something like PWD^^
+
+normalize_json() {
+ sed -n '
+ 1s/^/cat<<EOF\n/
+ # TODO handle escaped double quotes
+ s/"[^"]\+"/"$(echo -n & | base64)"/g
+ $s/$/\nEOF/
+ p
+ ' | sh | tr -d '[:space:]'
+}
+
+json_to_sh() {
+ sed -n '
+ s/,/;/g
+ s/\[/begin_json_array;/g; s/\]/end_json_array;/g
+ s/\{/begin_json_object;/g; s/\}/end_json_object;/g
+ s/\("[^"]\+"\):/json_set_key \1;/g
+ s/;\("[^"]\+"\)/;json_set string \1;/g
+ s/;\([0-9.]\+\)/;json_set number `echo -n \1 | base64`;/g
+ s/;;/;/g
+ s/;/\n/g
+ p
+ '
+}
+
+begin_json_object() {
+ push_key %%%MAKEJSONOBJ%%%
+}
+end_json_object() {
+ #echo end_json_object: $json_key >&2
+ pop_key # TODO check if is %%%MAKEJSONOBJ%%%
+ #echo obj: $1 `set | sed -rn "s/^(${json_key}_[a-zA-Z]+)_VALUE=(.*)/\1/p"` >&2
+ #json_set object "`set | sed -rn "s/^(${json_key}_[a-zA-Z]+)_VALUE=(.*)/\1/p"`"
+ json_set object "`set | sed -n "s/^\(${json_key}_[a-zA-Z]\+\)=\(.*\)/\1/p"`"
+}
+begin_json_array() { :; }
+end_json_array() { :; }
+json_push_key() {
+ push_key "`echo -n "$1" | base64 -d`"
+}
+json_set_key() {
+ pop_key
+ json_push_key "$1"
+}
+json_set() {
+ ##echo "typeof_$json_key=$1" >&2
+ ##echo "${json_key}_VALUE=\"$2\"" >&2 # (`echo -n $2 | base64 -d`)" >&2
+ #eval "${json_key}_TYPE=$1"
+ #eval "${json_key}_VALUE=\"$2\""
+ eval "typeof_${json_key}=$1"
+ eval "${json_key}=\"$2\""
+}
+
+push_key() {
+ json_key="${json_key+${json_key}_}$1"
+}
+pop_key() {
+ json_key="`echo $json_key | sed 's/_[^_]\+$//'`"
+}
+
+json() {
+ #eval echo "\"\$`echo -n "$json_key" "$@" | tr "$IFS" _`\" | base64 -d"
+ NAME="`echo -n "$json_key" "$@" | tr "$IFS" _`"
+ #eval "TYPE=\"\$${NAME}_TYPE\""
+ eval "TYPE=\"\$typeof_$NAME\""
+
+ echo -n "$TYPE $NAME: "
+ case "$TYPE" in
+ (object)
+ #eval echo -n \$${NAME}_VALUE
+ eval echo -n \$$NAME
+ ;;
+ #set | sed -rn "s/^(${NAME})_([a-zA-Z]+)[a-zA-Z_]*_VALUE=(.*)/\1_\2/p" |
+ # sort | uniq | tr \\n \ ;;
+ (*) #echo -n "$VALUE";;
+ #eval "VALUE=\"\$(echo -n \"\$${NAME}_VALUE\" | base64 -d)\""
+ #eval echo -n \"\$${NAME}_VALUE\" | base64 -d
+ eval echo -n \$${NAME} | base64 -d
+ esac
+ echo
+}
+
+read_json() {
+ json_key="${1-JSON}"
+ #meh="`cat`"
+ #echo "$meh"
+ ##echo "$meh" | normalize_json | json_to_sh; exit
+ #eval "`echo "$meh" | normalize_json | json_to_sh`"
+ eval "`normalize_json | json_to_sh`"
+}
+
+# TODO print_json x, print_json x ca ... to print as json
+
+read_json "$1"
+echo ====
+set | egrep "^(typeof_)?$json_key[A-Za-z_]*="
+echo ====
+json
+json a
+json b
+json c
+json c ca
+json c cb
+json d
+#echo ====
+#echo $JSON_VALUE
+#echo $JSON_c_cb_VALUE | base64 -d; echo
+
+echo READY.
+#### End of file.
diff --git a/.graveyard/json/sh/test.json b/.graveyard/json/sh/test.json
new file mode 100644
index 00000000..9b4c6312
--- /dev/null
+++ b/.graveyard/json/sh/test.json
@@ -0,0 +1,7 @@
+{
+ "a": "1",
+ "b": 2,
+ "c": { "ca": 11, "cb": [1, 2, 3, "42"] },
+ "d": {},
+ "float": 4.23
+}
diff --git a/.graveyard/lib/Makefile b/.graveyard/lib/Makefile
new file mode 100644
index 00000000..4d33995f
--- /dev/null
+++ b/.graveyard/lib/Makefile
@@ -0,0 +1,9 @@
+
+
+.PHONY: all install
+all: select-target
+
+install: ../bin/libkrebs.sh
+
+../bin/libkrebs.sh: libkrebs.sh
+ ln -vsnf ../lib/$< $@
diff --git a/.graveyard/lib/libkrebs.sh b/.graveyard/lib/libkrebs.sh
new file mode 100644
index 00000000..d423a053
--- /dev/null
+++ b/.graveyard/lib/libkrebs.sh
@@ -0,0 +1,10 @@
+#! /bin/sh
+esudo() {
+ if test "${esudo-true}" = true -a `id -u` != 0; then
+ echo "we're going sudo..." >&2
+ export esudo=false
+ exec sudo "$0" "$@"
+ exit 23 # go to hell
+ fi
+}
+
diff --git a/.graveyard/meta/bin/update b/.graveyard/meta/bin/update
new file mode 100755
index 00000000..9b2289ad
--- /dev/null
+++ b/.graveyard/meta/bin/update
@@ -0,0 +1,15 @@
+#! /bin/sh
+set -euf
+
+cd $(dirname $(readlink -f $0))/../..
+id=`ls -lnd . | awk '{print$3}'`
+
+if test "${nosudo-false}" != true -a `id -u` != $id; then
+ echo "we're going sudo..." >&2
+ exec sudo -u "#$id" "$0" "$@"
+ exit 23 # go to hell
+fi
+
+echo "// is $PWD owned by $id"
+
+git pull
diff --git a/.graveyard/meta/install b/.graveyard/meta/install
new file mode 100755
index 00000000..07096b34
--- /dev/null
+++ b/.graveyard/meta/install
@@ -0,0 +1,25 @@
+#! /bin/sh
+set -euf
+
+cd $(dirname $(readlink -f $0))
+
+id=`ls -ld . | awk '{print$3}'`
+update=$PWD/bin/update
+
+echo "#"
+echo "# to install metastatic automatization facility do following:"
+echo "#"
+echo
+echo " ln -vsn $update /update"
+echo
+if test -e /update; then
+ echo "# but beware: you already have an /update like this:"
+ ls -l /update
+fi
+echo "# then check if you can execute following with your current user:"
+echo
+echo " /update"
+echo
+echo "# if not then add that user to your sudoers... maybe something"
+echo "# like this could work: `id -un` ALL=($id) NOPASSWD:/update"
+echo "#^D"
diff --git a/.graveyard/noise/Makefile b/.graveyard/noise/Makefile
new file mode 100644
index 00000000..0d72b2e9
--- /dev/null
+++ b/.graveyard/noise/Makefile
@@ -0,0 +1,18 @@
+
+.PHONY: all
+all: select-target
+
+.PHONY: infest
+infest:
+ apt-get install --yes expect beep alsa-utils ucspi-tcp espeak
+ f=/usr/bin/beep; chown krebs:krebs $$f && chmod 4755 $$f
+ getent passwd noise || useradd noise
+ echo 'noise ALL=(ALL) NOPASSWD: /krebs/streams/streams' | magic create noise /etc/sudoers
+ ln -vsnf /krebs/noise/init.d/noise /etc/init.d/noise
+ ## tv: TODO update-rc.d is DEBIAN ONLY, fix this
+ update-rc.d -f noise defaults
+ amixer sset 'Master' 100 unmute || true
+ amixer sset 'PCM' 100 unmute || true
+ amixer sset 'PC Speaker' 100 unmute || \
+ amixer sset 'Beep' 100 unmute || true
+
diff --git a/.graveyard/noise/TODO b/.graveyard/noise/TODO
new file mode 100644
index 00000000..a20f74e9
--- /dev/null
+++ b/.graveyard/noise/TODO
@@ -0,0 +1,60 @@
+#### file:noise/TODO
+
+- /channels
+- /hist N -- zum anzeigen von N letzten Nachrichten
+ - Log? Es werden maximal chat_histsize Zeilen gespeichert.
+- Anbindung ans MoinMoin
+- IRC <-> 23.shack - Brücke
+- when nick changes say "You're now known as XXX" to yourself
+- twitter: push new tweets as they arrive to all connected clients with
+ the variable tweet_me set to ON
+
+- Author, Maintainer etc. direkt in die Module in der erweiterten Hilfe, also
+ in /help MODULENAME -> man sollte sich auf ein einheitliches Dokmentierungs-
+ Format einigen.
+ - All modules should contain:
+ - Author(s) w/ e-mail, Copyright, License
+ - Maintainer(s) w/ e-mail
+ - Module-Version
+ - last tested System-Version
+ - we need to export the system version
+- GIT commits tweeten (shack und root)
+- /kick [CHANNEL] # from channel / telnet
+- /ban # :-)
+- /op
+- USER-A: /ping USER-B
+ - USER-B: /pong
+ - write time to USER-{A,B}
+- style-sheets for everything MOAR!!1
+- libraries
+- HTTP-interface
+- /whois, /whoami, /whowas
+- join,part&co. should support multiple channels
+- /TODO,/bug,/issue or something should be added as tracking-system
+- /part should say something like "X has left."
+- /join should say something like "X has joined."
+ # it's obvious that the channels is meant...
+ - or else say: "X has joined channel Y." when we can join more than one
+ channel
+- /part should unset chat_channel (somehow) else keeping /part'ing will
+ broadcast to chat_channel that X has quit...
+- split /twitter into /tweet and X, to make it clear when tweets are fired
+- POP3 mail off googlemail and show them to curious telnetters
+- /set x 23 -> blah $x
+
+- /rewrite -- e.g. /rewrite "!%s" "/play %s" oder sowasi
+- Zugriff per ssh
+- module to standard unix-commands (name like /system)
+ - unix-commands should simply link to system
+- /save TOKEN, /load TOKEN
+- /op # NUR VIA SSH! (s.o.)
+- MODULE-TEST-SUITE [blackbox]
+- sub-modules like /chat-join which may be abbreviated as /join when
+ $default_command is set to /chat, YAY
+ - unclutter /help:
+ - /help -> show all (main) modules
+ - /help MODULE -> show help of MODULE and show all sub-modules
+ - /help MODULE SUB-MODULE -> show help of SUB-MODULE and show all sub^2...
+- watchdog
+
+#### end of file.
diff --git a/.graveyard/noise/cron/bin/zeit b/.graveyard/noise/cron/bin/zeit
new file mode 100755
index 00000000..168a7b7b
--- /dev/null
+++ b/.graveyard/noise/cron/bin/zeit
@@ -0,0 +1,18 @@
+#! /bin/sh
+
+beep -l 1000 -f 4000
+sleep 1
+/krebs/morse/morse.sh -l 100 -f 700 `date +%k`
+sleep 1
+expect >/dev/null <<EOF
+spawn nc localhost telnet
+expect READY.
+send "/zeit\r"
+expect READY.
+# pitch set to 10
+expect READY.
+# Playing WAVE 'stdin' : Signed 16 bit Little Endian, Rate 22050 Hz, Mono
+expect READY.
+# pitch changed from 10 to 100
+expect READY.
+EOF
diff --git a/.graveyard/noise/init.d/noise b/.graveyard/noise/init.d/noise
new file mode 100755
index 00000000..075e47d7
--- /dev/null
+++ b/.graveyard/noise/init.d/noise
@@ -0,0 +1,48 @@
+#!/bin/sh -e
+### BEGIN INIT INFO
+# Provides: noise
+# Required-Start: $remote_fs $syslog dbus
+# Required-Stop: $remote_fs $syslog dbus
+# Default-Start: 2 3 4 5
+# Default-Stop: 1
+# Short-Description: Start the noise "Telnet" server
+# Description: System mode startup script for
+# the noise "Telnet" server.
+### END INIT INFO
+
+DAEMON=/krebs/noise/noise-server
+
+test -x $DAEMON || exit 1
+
+noise_pid() {
+ ps aux | grep tcpserver | grep noise-as-user | awk '{print$2}'
+}
+
+noise_start() {
+ "$DAEMON" &
+}
+
+noise_stop() {
+ kill "`noise_pid`"
+}
+
+case "$1" in
+ start|stop)
+ noise_${1}
+ ;;
+ restart|reload|force-reload)
+ noise_stop
+ noise_start
+ ;;
+ #force-stop) ;;
+ status)
+ kill -s 0 "`noise_pid`"
+ exit $?
+ ;;
+ *)
+ echo "Usage: /etc/init.d/noise {start|stop|force-stop|restart|reload|force-reload|status}"
+ exit 1
+ ;;
+esac
+
+exit 0
diff --git a/.graveyard/noise/modules/cat b/.graveyard/noise/modules/cat
new file mode 100755
index 00000000..e090acba
--- /dev/null
+++ b/.graveyard/noise/modules/cat
@@ -0,0 +1,14 @@
+#! /bin/sh
+case "$1" in
+ (--help) : ;;
+ (*)
+ while read line ; do
+ case "$line" in
+ (/quit)
+ break 2
+ ;;
+ (*)
+ echo "[$line]"
+ esac
+ done
+esac
diff --git a/.graveyard/noise/modules/chat b/.graveyard/noise/modules/chat
new file mode 100755
index 00000000..e5badc36
--- /dev/null
+++ b/.graveyard/noise/modules/chat
@@ -0,0 +1,33 @@
+#! /bin/sh
+
+case "$1" in
+ (--help) echo send text to everyone with @@ prepended ;;
+ (/nick)
+ echo set nick to $2
+ echo /set chat_nick $2 >$NOISE_linefeed;;
+ (/names)
+ cd /tmp/noise
+ . $NOISE_pid/environment
+ nick="${chat_nick-$NOISE_pid}"
+ channel="$chat_channel"
+ echo "Users in channel $channel"
+ for client in * ; do
+ . $client/environment
+ chat_nick="${chat_nick-$client}"
+ if test "$channel" = "$chat_channel" && test "$default_command" = chat ; then
+ echo "$chat_nick"
+ fi
+ unset chat_nick
+ unset chat_channel
+ unset default_command
+ done ;;
+ (*)
+ cd /tmp/noise
+ . $NOISE_pid/environment
+ nick="${chat_nick-$NOISE_pid}"
+
+ echo "/send_to_channel $chat_channel $nick: $*" > $NOISE_linefeed
+
+
+ #echo /wall @@ $* >$NOISE_linefeed
+esac
diff --git a/.graveyard/noise/modules/date b/.graveyard/noise/modules/date
new file mode 100755
index 00000000..8cd1b0c1
--- /dev/null
+++ b/.graveyard/noise/modules/date
@@ -0,0 +1,6 @@
+#! /bin/sh
+case "$1" in
+ (--help) : ;;
+ (*)
+ date --rfc-3339=s
+esac
diff --git a/.graveyard/noise/modules/echo b/.graveyard/noise/modules/echo
new file mode 100755
index 00000000..344dd963
--- /dev/null
+++ b/.graveyard/noise/modules/echo
@@ -0,0 +1,6 @@
+#! /bin/sh
+case "$1" in
+ (--help) : ;;
+ (*)
+ echo "$*"
+esac
diff --git a/.graveyard/noise/modules/ein_mal_eins b/.graveyard/noise/modules/ein_mal_eins
new file mode 100755
index 00000000..e21612a5
--- /dev/null
+++ b/.graveyard/noise/modules/ein_mal_eins
@@ -0,0 +1,37 @@
+#! /bin/bash
+
+R() {
+ echo "`od -t d -N 1 /dev/urandom | sed -n '1s/^[0-9]\+ \+//p'` % $@" | bc
+}
+
+
+
+
+case "$1" in
+ (--help) echo Stellt eine einfache Aufgabe ;;
+ (*)
+ a="`R 69`"
+ b="`R 69`"
+ op="`echo "\
+Was ist, A hoch B
+Was ist, A plus B
+Was ist, A minus B
+Was ist, A mal B
+Was ist, sinus von 0
+Was ist, Pi halbe mal 2
+Was ist, 2 hoch 8
+Was ist, 2 hoch 16
+Was ist, 2 hoch 32
+Was ist, 42 geteilt durch Pi mal 100
+Was ist, l n von 1
+Was ist, 42
+Was ist, 23
+Starte den Server neu
+Löte ein Kabel an einen Kompjuter
+Was ist, A geteilt durch B"`"
+ o="$(R `echo "$op" | wc -l` + 1)"
+
+ aufgabe=`echo "$op" | sed -n "$o{s/A/$a/;s/B/$b/;p}"`
+
+ echo "/espeak -v Löse die Aufgabe: $aufgabe?" >$NOISE_linefeed
+esac
diff --git a/.graveyard/noise/modules/espeak b/.graveyard/noise/modules/espeak
new file mode 100755
index 00000000..815d9d99
--- /dev/null
+++ b/.graveyard/noise/modules/espeak
@@ -0,0 +1,34 @@
+#! /bin/sh
+
+print_var() {
+ echo "$1 = $2"
+}
+
+speak() {
+ p="${noise_pitch-100}"
+ v="${noise_lang-de}"
+ k="${noise_capital-0}"
+ a="${noise_amplitude-600}"
+ g="${noise_gap-1}"
+ if test "$debug" = true; then
+ print_var pitch $p
+ print_var lang $v
+ print_var capital $k
+ print_var amplitude $a
+ print_var gap $g
+ fi
+ if test "$verbose" = true; then
+ echo "espeak: $@"
+ fi
+ #echo "espeak -p \"$pitch\" -v \"$lang\" \"$*\"" >&2
+ (espeak --stdout -a $a -k $k -p $p -v $v -g $g | aplay)<<EOF
+$*
+EOF
+}
+
+case "$1" in
+ (--help) echo say something with espeak ;;
+ (-d|--debug) shift; debug=true speak "$@";;
+ (-v|--verbose) shift; verbose=true speak "$@";;
+ (*) speak "$@";;
+esac
diff --git a/.graveyard/noise/modules/help b/.graveyard/noise/modules/help
new file mode 100755
index 00000000..0763f3a0
--- /dev/null
+++ b/.graveyard/noise/modules/help
@@ -0,0 +1,24 @@
+#! /bin/sh
+case "$1" in
+ (-*) : ;; # ignore all options
+ ('') { for directory in `echo "$NOISE_PATH" | tr : \ ` ; do
+ for module in "$directory"/* ; do
+ echo `basename "$module"` `$module --help`
+ done 2>/dev/null
+ done
+ ## print all documented built-in commands
+ sed -n 's:^noise_\([a-z]\+\)() { # \(.\+\)\?$:\1 \2:p' "$NOISE"
+ } | sort | uniq | sed -n '
+ $s/$//
+ s:^\([a-z]\+\) \(.\+\):type /\1 to \2:p' ;;
+ (*)
+ ## call
+ for directory in `echo "$NOISE_PATH" | tr : \ ` ; do
+ for module in "$directory/$1" ; do
+ if test -e $module ; then
+ shift
+ exec $module --help --verbose "$@" 2>&1
+ fi
+ done
+ done
+esac
diff --git a/.graveyard/noise/modules/join b/.graveyard/noise/modules/join
new file mode 100755
index 00000000..68afcb66
--- /dev/null
+++ b/.graveyard/noise/modules/join
@@ -0,0 +1,15 @@
+#! /bin/sh
+
+case "$1" in
+ (--help) echo set default_command to chat and join channel ;;
+ (*)
+ . /tmp/noise/$NOISE_pid/environment
+ nick="${chat_nick-$NOISE_pid}"
+ echo /send_to_channel "${1-#23}" "$nick" joined the channel >$NOISE_linefeed
+ echo /set default_command chat >$NOISE_linefeed
+ echo /set chat_channel "${1-#23}" >$NOISE_linefeed
+ echo " joined channel ${1-#23}"
+ echo /part to go back to espeak ;;
+
+
+esac
diff --git a/.graveyard/noise/modules/lang b/.graveyard/noise/modules/lang
new file mode 100755
index 00000000..07b6802e
--- /dev/null
+++ b/.graveyard/noise/modules/lang
@@ -0,0 +1,22 @@
+#! /bin/sh
+
+case "$1" in
+ (--help)
+ echo "set language or list available languages" ;;
+ (list)
+ espeak --voices | sed -n '1!p' | awk '{\
+ printf"/lang %s set lang to %s\n",$2,$4
+ }' ;;
+ ('')
+ echo /set lang >$NOISE_linefeed ;;
+ (*)
+ if test -z "$2" ; then
+ echo /set lang "$1"
+ else
+ echo /set lang "$1"
+ shift
+ echo "$*"
+ echo /set lang "${noise_lang-de}"
+ fi >$NOISE_linefeed
+esac
+
diff --git a/.graveyard/noise/modules/licht b/.graveyard/noise/modules/licht
new file mode 120000
index 00000000..7f170fe2
--- /dev/null
+++ b/.graveyard/noise/modules/licht
@@ -0,0 +1 @@
+/krebs/god/licht \ No newline at end of file
diff --git a/.graveyard/noise/modules/mpc b/.graveyard/noise/modules/mpc
new file mode 100755
index 00000000..20abf19b
--- /dev/null
+++ b/.graveyard/noise/modules/mpc
@@ -0,0 +1,14 @@
+#! /bin/sh
+
+case "$1" in
+ (--help)
+ case "$2" in
+ (--verbose) mpc --help ;;
+ (*) echo access mpd
+ esac ;;
+ (*)
+ ##echo test-module called with following arguments: "$@"
+ ## send command for re-evaluation:
+ ##echo /espeak test >$NOISE_linefeed
+ MPD_HOST=filebitch.shack mpc $@
+esac
diff --git a/.graveyard/noise/modules/names b/.graveyard/noise/modules/names
new file mode 100755
index 00000000..f5922064
--- /dev/null
+++ b/.graveyard/noise/modules/names
@@ -0,0 +1,22 @@
+#! /bin/sh
+
+case "$1" in
+ (--help) echo send text to everyone with @@ prepended ;;
+ (*)
+ cd /tmp/noise
+ . $NOISE_pid/environment
+ if test "$default_command" != chat ; then exit ; fi
+ nick="${chat_nick-$NOISE_pid}"
+ channel="${1-$chat_channel}"
+ echo "Users in channel $channel"
+ for client in * ; do
+ . $client/environment
+ chat_nick="${chat_nick-$client}"
+ if test "$channel" = "$chat_channel" && test "$default_command" = chat ; then
+ echo "$chat_nick"
+ fi
+ unset chat_nick
+ unset chat_channel
+ unset default_command
+ done
+esac
diff --git a/.graveyard/noise/modules/nick b/.graveyard/noise/modules/nick
new file mode 100755
index 00000000..5ed1e9d9
--- /dev/null
+++ b/.graveyard/noise/modules/nick
@@ -0,0 +1,10 @@
+#! /bin/sh
+
+case "$1" in
+ (--help) echo send text to everyone with @@ prepended ;;
+ (*)
+ . /tmp/noise/$NOISE_pid/environment
+ nick="${chat_nick-$NOISE_pid}"
+ echo /send_to_channel $chat_channel $nick is now known as $1 > $NOISE_linefeed
+ echo /set chat_nick $1 >$NOISE_linefeed;;
+esac
diff --git a/.graveyard/noise/modules/overlord b/.graveyard/noise/modules/overlord
new file mode 100755
index 00000000..ded8627a
--- /dev/null
+++ b/.graveyard/noise/modules/overlord
@@ -0,0 +1,14 @@
+#! /bin/sh
+set -euf
+
+# cd //
+cd $(dirname $(readlink -f $0))/../..
+
+case "${1---help}" in
+ --help)
+ echo "Make an announcement! Usage: /overlord <text>"
+ ;;
+ *)
+ exec god/overlord/index "$@"
+ ;;
+esac
diff --git a/.graveyard/noise/modules/part b/.graveyard/noise/modules/part
new file mode 100755
index 00000000..d35ac501
--- /dev/null
+++ b/.graveyard/noise/modules/part
@@ -0,0 +1,15 @@
+#! /bin/sh
+
+case "$1" in
+ (--help) echo leave chat mode ;;
+ (*)
+ . /tmp/noise/$NOISE_pid/environment
+ nick="${chat_nick-$NOISE_pid}"
+
+ echo "/send_to_channel $chat_channel $nick has quit ${*-no reason}" > $NOISE_linefeed
+
+ echo /set default_command espeak >$NOISE_linefeed
+ echo "disabled chat mode (set back to espeak)" ;;
+
+
+esac
diff --git a/.graveyard/noise/modules/ping b/.graveyard/noise/modules/ping
new file mode 100755
index 00000000..acf2529f
--- /dev/null
+++ b/.graveyard/noise/modules/ping
@@ -0,0 +1,24 @@
+#! /bin/sh
+cd /tmp/noise
+case "$1" in
+ (--help) : ;;
+ ('')
+ . $NOISE_pid/environment
+ ping_timestamp=${ping_timestamp-0}
+ ping_challenger=${ping_challenger-0}
+ if test $ping_challenger != 0 ; then
+ echo There is already a ping challange running
+ else
+ timestamp=`date +%s%N`
+ for client in * ; do
+ echo /ping $NOISE_pid $timestamp >$client/linefeed &
+ done
+ fi
+ ;;
+ (*)
+ echo "/set -q ping_timestamp $2" >$NOISE_pid/linefeed
+ if test $NOISE_pid != $1 ; then
+ echo "/set -q ping_challenger $1" >$NOISE_pid/linefeed
+ echo "PING?"
+ fi
+esac
diff --git a/.graveyard/noise/modules/play b/.graveyard/noise/modules/play
new file mode 100755
index 00000000..180c1e0c
--- /dev/null
+++ b/.graveyard/noise/modules/play
@@ -0,0 +1,36 @@
+#! /bin/sh
+case "$1" in
+ (--help)
+ echo "play an audio file" ;;
+ (*)
+ exec 2>&1
+ ffs='wav mp3 ogg asf flac'
+
+ if test -z "$*" ; then
+ ls $HOME/noise/samples | sed '
+ s:\.\('"`echo "$ffs" | tr \ \|`"'\)$: \1:
+ s:^:/play :
+ s:.*:&:
+ '
+ else
+ for i in $ffs ; do
+ f=$HOME/noise/samples/$1.$i
+ test -f "$f" &&
+ case "$i" in
+ wav) aplay "$f" & ;;
+ *) mplayer "$f" & ;;
+ esac && break
+ done || cat<<EOF
+\
+Keine Audiodatei mit dem Namen
+
+ $1.EXT
+
+gefunden... am besten gleich uploaden:
+
+ scp NAME shack@shack.shack:$HOME/noise/samples/
+
+folgende Dateiendungen werden erkannt: $ffs
+EOF
+ fi
+esac
diff --git a/.graveyard/noise/modules/pong b/.graveyard/noise/modules/pong
new file mode 100755
index 00000000..eb2df46d
--- /dev/null
+++ b/.graveyard/noise/modules/pong
@@ -0,0 +1,26 @@
+#! /bin/sh
+cd /tmp/noise
+case "$1" in
+ (--help) : ;;
+ ('')
+ . $NOISE_pid/environment
+ ping_timestamp=${ping_timestamp-0}
+ ping_challenger=${ping_challenger-0}
+ if test $ping_challenger = 0 ; then
+ echo There is no ping challange running
+ else
+ timestamp=`date +%s%N`
+ echo /pong $NOISE_pid $timestamp >$ping_challenger/linefeed
+ ## reset ping TODO /unset
+ echo /set -q ping_timestamp 0 >$NOISE_pid/linefeed
+ echo /set -q ping_challenger 0 >$NOISE_pid/linefeed
+ fi
+ ;;
+ (*)
+ . $1/environment
+ # XXX is attendee the right counterpart to 'challenger'?
+ attendee_nick=$chat_nick
+ . $NOISE_pid/environment
+ time=`echo "scale=3; ($2 - $ping_timestamp)/10^9" | bc`
+ echo "PONG! $attendee_nick ${time}s"
+esac
diff --git a/.graveyard/noise/modules/query b/.graveyard/noise/modules/query
new file mode 100755
index 00000000..ceeff8a5
--- /dev/null
+++ b/.graveyard/noise/modules/query
@@ -0,0 +1,23 @@
+#! /bin/sh
+
+case "$1" in
+ (--help) echo send a message to a specific user ;;
+ (*)
+ cd /tmp/noise
+ . $NOISE_pid/environment
+ nick="${chat_nick-$NOISE_pid}"
+ target="$1"
+ shift
+ for client in * ; do
+ . $client/environment
+ if test "$target" = "${chat_nick-$client}" ; then
+ echo "/echo <-- $nick: $*" > $client/linefeed
+ echo "--> $target: $*"
+ exit
+ fi
+ unset chat_channel
+
+ done
+
+ echo "$nick not found"
+esac
diff --git a/.graveyard/noise/modules/send_to_channel b/.graveyard/noise/modules/send_to_channel
new file mode 100755
index 00000000..4a0470af
--- /dev/null
+++ b/.graveyard/noise/modules/send_to_channel
@@ -0,0 +1,17 @@
+#! /bin/sh
+
+case "$1" in
+ (--help) : ;;
+ (*)
+ cd /tmp/noise
+ channel="$1"
+ shift
+ for client in * ; do
+ . $client/environment
+ if test "$channel" = "$chat_channel" && test "$default_command" = chat ; then
+ echo "/echo $*" > $client/linefeed
+ fi
+ unset chat_channel
+
+ done
+esac
diff --git a/.graveyard/noise/modules/sendmail b/.graveyard/noise/modules/sendmail
new file mode 100755
index 00000000..182d96e3
--- /dev/null
+++ b/.graveyard/noise/modules/sendmail
@@ -0,0 +1,55 @@
+#!/usr/bin/python
+import os,sys,smtplib,string
+'''
+ Mail Plugin for the noise telnet suite
+ See: http://docs.python.org/library/smtplib.html
+ Author: Felix
+'''
+
+# help
+if len(sys.argv) == 2:
+ if sys.argv[1] == "--help":
+ print "send an e-mail ( \"TO(s)\" \"SUBJECT\" [string instead of EOF])"
+ sys.exit(0)
+
+# sanity
+if len(sys.argv) <= 2:
+ print "wrong number of parameters, see help"
+ sys.exit(1)
+
+# write variables
+# check of EOF
+if len(sys.argv) == 4 :
+ EOFstring="%s\n"% sys.argv[3]
+else:
+ EOFstring="EOF\n"
+
+fromaddr=u"Karl Koch<shockspasm@googlemail.com>"
+toaddrs=sys.argv[1]
+subject=sys.argv[2]
+
+
+#write header:
+msg = u"From: %s\r\nTo: %s\r\nSubject: %s\r\n\r\n" % (fromaddr, toaddrs,subject)
+print "Write your text now, finish with %s" % EOFstring
+sys.stdout.flush() # flushing is important to make sure the line is written
+
+while 1:
+ try:
+ line = sys.stdin.readline()
+ if line == EOFstring:
+ break
+ msg = msg + line
+ except EOFError:
+ break
+
+msg = msg + "[!] Written with NOISE telnet"
+
+print "Thank you for your message! Delivering it now..."
+sys.stdout.flush()
+server = smtplib.SMTP('localhost')
+#server.set_debuglevel(1)
+server.sendmail(fromaddr,toaddrs.split(','),msg)
+server.quit()
+print "mail send successfully"
+sys.exit(0)
diff --git a/.graveyard/noise/modules/shackstatus b/.graveyard/noise/modules/shackstatus
new file mode 100755
index 00000000..a5058f0a
--- /dev/null
+++ b/.graveyard/noise/modules/shackstatus
@@ -0,0 +1,104 @@
+#! /bin/bash
+
+main() {
+ case "$1" in
+ (--help)
+ echo "report status of all shack services."
+ ;;
+ (*)
+ test "$(dig +short localhost @10.42.0.10 )" = "127.0.0.1" &&
+ STAT_DNS_I="läuft" || STAT_DNS_I="antwortet nicht"
+ test "$(dig +short shackspace.de @10.42.0.10 )" = "141.31.176.214" &&
+ STAT_DNS_E="läuft" || STAT_DNS_E="antwortet nicht"
+ test "$(dig +short shackspace.de @141.31.176.214 )" = "141.31.176.214" &&
+ STAT_DNS_X="läuft"|| STAT_DNS_X="antwortet nicht"
+
+ STAT_LINE=$(ping -c 5 -i 0.2 -q 141.31.176.214 |
+ awk '/packet loss/ { print 100-$6}' )
+
+ cat <<-EOF >$NOISE_linefeed
+ /set pitch 10
+ /espeak -v Hallo - Ich bin Krebs.
+ /espeak -v Heute ist `wochentag`, der `tag` --- `monat` -- `date +%Y`
+ /zeit
+ /espeak -v tcheck der systeme:
+ /espeak -v Energie versorgung -- aktiv
+ /espeak -v shackhost -- läuft
+ /espeak -v telnet -- läuft
+ /espeak -v interner - D N S -- interne - do-mejn -- $STAT_DNS_I
+ /espeak -v interner - D N S -- externe - do-mejn -- $STAT_DNS_E
+ /espeak -v externer - D N S - $STAT_DNS_X
+ /espeak -v Leitungsqualität - $STAT_LINE prozent.
+ /temp
+ /espeak -v krebs kompjuting bereit
+ EOF
+ ;;
+ esac 2>&1
+}
+
+wochentag() {
+ case $(date +%a) in
+ (Mon) echo Montag ;;
+ (Tue) echo Dienstag ;;
+ (Wed) echo Mittwoch ;;
+ (Thu) echo Donnerstag ;;
+ (Fri) echo Freitag ;;
+ (Sat) echo Samstag ;;
+ (Sun) echo Sonntag ;;
+ esac
+}
+
+tag() {
+ case $(date +%d) in
+ (1) echo erste ;;
+ (2) echo zweite ;;
+ (3) echo dritte ;;
+ (4) echo vierte ;;
+ (5) echo fünfte ;;
+ (6) echo sechste ;;
+ (7) echo siebte ;;
+ (8) echo achte ;;
+ (9) echo neunte ;;
+ (10) echo zehnte ;;
+ (11) echo elfte ;;
+ (12) echo zwölfte ;;
+ (13) echo dreizehnte ;;
+ (14) echo vierzehnte ;;
+ (15) echo fünfzehnte ;;
+ (16) echo sechzehnte ;;
+ (17) echo siebzehnte ;;
+ (18) echo achtzehnte ;;
+ (19) echo neunzehnte ;;
+ (20) echo zwanzigste ;;
+ (21) echo einundzwanzigste ;;
+ (22) echo zweiundzwanzigste ;;
+ (23) echo dreiundzwanzigste ;;
+ (24) echo vierundzwanzigste ;;
+ (25) echo füfundzwanzigste ;;
+ (26) echo sechsundzwanzigste ;;
+ (27) echo siebenundzwanzigste ;;
+ (28) echo achtundzwanzigste ;;
+ (29) echo neunundzwanzigste ;;
+ (30) echo dreissigste ;;
+ (31) echo einunddreissigste ;;
+ esac
+}
+
+monat() {
+ case $(date +%b) in
+ (Jan) echo Januar ;;
+ (Feb) echo Februar ;;
+ (Mar) echo März ;;
+ (Apr) echo April ;;
+ (May) echo Mai ;;
+ (Jun) echo Juni ;;
+ (Jul) echo Juli ;;
+ (Aug) echo August ;;
+ (Sep) echo September ;;
+ (Oct) echo Oktober ;;
+ (Nov) echo November ;;
+ (Dec) echo Dezember ;;
+ esac
+}
+
+main "$@"
diff --git a/.graveyard/noise/modules/sleep b/.graveyard/noise/modules/sleep
new file mode 100755
index 00000000..89712cac
--- /dev/null
+++ b/.graveyard/noise/modules/sleep
@@ -0,0 +1,10 @@
+#! /bin/sh
+case "$1" in
+ (--help) echo "pause for NUMBER seconds" ;;
+ (*)
+ if echo "$1" | grep -Eq '^([0-9]+(\.[0-9]*)?|[0-9]*\.[0-9]+)$' ; then
+ sleep "$1"
+ else
+ echo 'FAIL: $1 is not a number'
+ fi
+esac
diff --git a/.graveyard/noise/modules/stream b/.graveyard/noise/modules/stream
new file mode 100755
index 00000000..476ffff9
--- /dev/null
+++ b/.graveyard/noise/modules/stream
@@ -0,0 +1,2 @@
+#!/bin/sh
+sudo -u krebs /krebs/streams/streams "$@"
diff --git a/.graveyard/noise/modules/temp b/.graveyard/noise/modules/temp
new file mode 100755
index 00000000..a11c3720
--- /dev/null
+++ b/.graveyard/noise/modules/temp
@@ -0,0 +1,50 @@
+#! /bin/bash
+
+temper=/krebs/temper/temper
+
+main() {
+ case "${1--K}" in
+ (--help)
+ echo "report temperature in K, °C, °R, or °F."
+ exit
+ ;;
+ (-C|--celsius) unit='Grad Zelsius' ; formula='x - 273.15' ;;
+ (-F|--fahrenheit) unit='Grad Fahrenheit'; formula='x * 9/5 - 459.67' ;;
+ (-R|--rankine) unit='Grad Renkin' ; formula='x * 9/5' ;;
+ (-K|--kelvin) unit='Kelvin' ; formula='x' ;;
+ (*)
+ echo 'Error 1: you are made of stupid!'
+ exit 23
+ ;;
+ esac
+ if test -f $temper -a -x $temper; then
+ espeak_inside `inside_temp "$formula"` $unit
+ fi
+ espeak_outside `outside_temp "$formula"` $unit
+}
+
+## temp [<formula with temperature as x>]
+## Echo temperature in K. If formula is given then return that result instead.
+inside_temp() {
+ echo "scale=2; x=`$temper` + 273.15; ${1-x}" | bc
+}
+
+outside_temp() {
+ echo "scale=2; x=`dig +short txt outside.elwood.temp.citecs.de |
+ sed 's/^"DEG \([0-9]\+\.[0-9]\+\)"$/\1/'
+ ` + 273.15; ${1-x}" | bc
+}
+
+espeak_inside() { echo Die Krebs-tempera-tur beträgt $@ | to_espeak; }
+espeak_outside() { echo Die Außen-tempera-tur beträgt $@ | to_espeak; }
+
+to_espeak() {
+ sed '
+ s/\(\.[0-9]\)0\+/\1/g
+ s/\(\.[0-9]\)\([0-9]\)[0-9]*/ \1 \2 /;
+ s/^-/minus /;
+ s/\./ komma /;
+ ' | tee $NOISE_linefeed
+}
+
+main "$@"
diff --git a/.graveyard/noise/modules/test b/.graveyard/noise/modules/test
new file mode 100755
index 00000000..2c0b8e0d
--- /dev/null
+++ b/.graveyard/noise/modules/test
@@ -0,0 +1,13 @@
+#! /bin/sh
+
+case "$1" in
+ (--help) echo do some test-module related stuff ;;
+ (*)
+
+ echo -n ">> "
+ read TEST
+ if [ $TEST == 'q' ]; then exit; fi
+ echo /wall @@ $TEST >$NOISE_linefeed
+ #sleep 1
+ #sleep 1; echo /test >$NOISE_linefeed &
+esac
diff --git a/.graveyard/noise/modules/twitter b/.graveyard/noise/modules/twitter
new file mode 100755
index 00000000..26982525
--- /dev/null
+++ b/.graveyard/noise/modules/twitter
@@ -0,0 +1,125 @@
+#!/usr/bin/python
+#encode=utf8
+
+#print "TODO Bug Robert to implement Twitter-OAuth!"
+#exit(1)
+import sys
+
+#sys.path.append("/usr/local/lib/")
+
+import twitter, os, pwd
+
+#os.getlogin = lambda: pwd.getpwuid(os.getuid())[0]
+
+sys.stderr = sys.stdout
+
+def shorten(text):
+
+ text = text.replace("about ", "~")
+ text = text.replace("an", "1")
+ text = text.replace(" minutes", "m")
+ text = text.replace(" minute", "m")
+ text = text.replace(" hours", "h")
+ text = text.replace(" hour", "h")
+ text = text.replace(" seconds", "s")
+ text = text.replace(" second", "s")
+ text = text.replace(" days", "d")
+ text = text.replace(" day", "d")
+ text = text.replace(" weeks", "w")
+ text = text.replace(" week", "w")
+ text = text.replace(" years", "y")
+ text = text.replace(" year", "y")
+ text = text.replace(" ago", "")
+ text = text.replace("a", "1")
+ return text
+
+
+def parse(text):
+ text = text.replace("\n","")
+ t = text.split(" ")
+ new = ""
+ for piece in t:
+ escape = ""
+ if piece.startswith("@"):
+ escape = ""
+ if piece[1:].lower() == "shackspam" or piece[1:].lower() == "shackspace":
+ escape = ""
+
+ elif piece.startswith("#"):
+ escape = ""
+ elif piece.startswith("http://"):
+ escape = ""
+ if escape:
+ new += escape + piece + " "
+ else:
+ new += piece + " "
+
+ return new
+
+if len(sys.argv) > 1 and sys.argv[1] == "--help":
+ print "read or post to the shackspam twitter timeline"
+ if len(sys.argv) == 3 and sys.argv[2] == "--verbose":
+ print "call without parameters to read"
+ print "use /twitter [your tweet] to tweet something to the shackspam twitter timeline"
+ exit()
+
+
+
+api = twitter.Api("Z7f9npE5ixvZ0lMCHDZBOg", "8z0gyfOABar1HxKvqL6fYXLqRFUPLQ9OOzDFt7Q4F4", "139766258-94TGPvNsJ8tYVv68eZewfXOIyDvRCWdycNlUgHrs", "NRnDQZPCoLrDizFvakZkSWgoG4vgGuT3OOMChSfiI")
+
+#api.SetXTwitterHeaders("Shackspace UTTERANCE","","0.00.0.01.42")
+
+if len(sys.argv) > 1:
+
+
+ tweet = u""
+
+ for t in sys.argv[1:]:
+ tweet += t.decode("utf8") + u" "
+ tweet = tweet[:-1]
+
+ print u"Length: " + str(len(tweet)) + u""
+
+ if len(tweet) > 140:
+ print u"Your Tweet must be shorter than 140 characters.\n"
+ exit()
+
+ status = api.PostUpdate(tweet)
+
+
+
+
+else:
+ """print "\tshackspace tweets:"
+ for i in api.GetUserTimeline():
+ i.text = parse(i.text)
+ print ("" + i.user.screen_name + " " + i.GetRelativeCreatedAt() + " " + i.text).encode("utf8").replace("\n"," ")
+
+ print "\n\tfriends tweets"
+ """
+ a = api.GetFriendsTimeline()
+ a.reverse()
+ for i in a:
+ text = i.text
+ ilen = len(i.user.screen_name) + len(shorten(i.GetRelativeCreatedAt())) + 2
+ if i.user.screen_name.lower() == "shackspace" or i.user.screen_name.lower() == "shackspam":
+ info = "" + i.user.screen_name + " " + shorten(i.GetRelativeCreatedAt()) + ""
+ else:
+ info = "" + i.user.screen_name + " " + shorten(i.GetRelativeCreatedAt()) + ""
+ text = info + " " + parse(text)
+
+ t = text.split(" ")
+ tmp = ""
+ for n in t:
+ if ((len(tmp) + len(n)) >= 80):
+ print parse(tmp).encode("utf8")
+ tmp = " " * ilen
+
+ tmp += " " + n
+ if len(tmp) > ilen:
+ print parse(tmp).encode("utf8")
+
+
+
+
+
diff --git a/.graveyard/noise/modules/vvs b/.graveyard/noise/modules/vvs
new file mode 100755
index 00000000..fc23375f
--- /dev/null
+++ b/.graveyard/noise/modules/vvs
@@ -0,0 +1,17 @@
+#! /bin/sh
+
+wrapper() {
+ exec 2>&1
+ echo date: `date +%H:%M`
+ "$@"
+}
+
+case "$1" in
+ (--help) echo query VVS ;;
+ (*)
+ case $# in
+ (2) wrapper vvs.de "$@" ;;
+ (0) wrapper vvs ;;
+ (*) echo "Syntax: /vvs [ORIGIN DESTINATION]" ; return ;;
+ esac
+esac
diff --git a/.graveyard/noise/modules/wall b/.graveyard/noise/modules/wall
new file mode 100755
index 00000000..c73744ea
--- /dev/null
+++ b/.graveyard/noise/modules/wall
@@ -0,0 +1,8 @@
+#! /bin/sh
+case "$1" in
+ (--help) : ;;
+ (?*)
+ for linefeed in /tmp/noise/*/linefeed ; do
+ echo /echo "$*" >$linefeed
+ done
+esac
diff --git a/.graveyard/noise/modules/zeit b/.graveyard/noise/modules/zeit
new file mode 100755
index 00000000..9fbc33e4
--- /dev/null
+++ b/.graveyard/noise/modules/zeit
@@ -0,0 +1,19 @@
+#! /bin/sh
+
+case "$1" in
+ (--help)
+ echo "say current time" ;;
+ (*)
+ exec >>$NOISE_linefeed
+ k=`date +%k|sed 's/^[[:space:]]*1[[:space:]]*$/ein/'`
+ M=`date +%M|sed 's/0*//'`
+ echo /set pitch 10
+ case "$lang" in
+ (de|'') echo "/espeak Es ist $k Uhr $M" ;;
+ (en|*-en)
+ test -z "$M" || M="and $M minutes"
+ echo "/espeak It is $k o clock $M" ;;
+ (*) echo "Error: unsupported lang = $lang" >&2
+ esac
+ echo /set pitch ${noise_pitch-100}
+esac 2>&1
diff --git a/.graveyard/noise/noise b/.graveyard/noise/noise
new file mode 100755
index 00000000..615277a6
--- /dev/null
+++ b/.graveyard/noise/noise
@@ -0,0 +1,186 @@
+#! /bin/sh
+
+noise_set() { # set a variable
+ case "$1" in
+ (-q|--quiet) echo=: ; shift ;;
+ (*) echo=echo ;;
+ esac
+ case $# in
+ (0) ## print all noise variables
+ env | sed -n '
+ s/^noise_\([[:alnum:]_]\+\)=\(.*\)$/\1 = \2/p
+ ' | sort
+ ;;
+ (1) ## print value the specified variable
+ eval "echo \"$1 = \$noise_$1\""
+ ;;
+ (*) ## set the specified variable
+ if echo "$1" | grep -q '[^[:alnum:]_]' ; then
+ fail invalid variable name "$1"
+ return 23
+ fi
+ eval "old=\"\$noise_$1\""
+ if test "x$old" = "x$2" ; then
+ eval "$echo \"$1 is already $2\""
+ elif test -z "$old" ; then
+ eval "export noise_$1='$2' ; $echo \
+\"$1 set to $2\""
+ else
+ eval "export noise_$1='$2' ; $echo \
+\"$1 changed from $old to $2\""
+ fi
+ ## write variable to $env
+ if grep -q "^$1=" "$env" ; then
+ cache="`cat $env`"
+ echo "$cache" |
+ sed "s'^\($1\)=\(.*\)\$'\1=\'$2\''" > $env
+ else
+ echo "$1='$2'" >>$env
+ fi
+ ;;
+ esac
+}
+
+noise_unset() { # unset a variable
+ case "$1" in
+ (-q|--quiet) echo=: ; shift ;;
+ (*) echo=echo ;;
+ esac
+ case $# in
+ (1) ##
+ unset "noise_$1"
+ cache="`cat $env`"
+ echo "$cache" |
+ sed -n "/^$1=/!p" > $env
+ ;;
+ (*)
+ fail "broken commandline: $@"
+ ;;
+ esac
+}
+
+noise_quit() { # exit
+ echo "Good bye!"
+ exit
+}
+
+fail() {
+ echo "FAIL: $*"
+ return 23
+}
+
+cleanup() {
+ kill $jobs
+ rm -f $linefeed $env
+ rmdir /tmp/noise/$$ 2>/dev/null
+ rmdir /tmp/noise 2>/dev/null
+}
+
+exec 2>&1
+qname="`readlink -f "$0"`"
+dirname="`dirname "$qname"`"
+export HOME='/home/noise'
+if test -d "$dirname/modules" ; then
+ export NOISE_PATH="${NOISE_PATH+$NOISE_PATH:}$dirname/modules"
+ export NOISE_PATH="${NOISE_PATH+$NOISE_PATH:}$HOME/noise/modules"
+fi
+mkdir -p /tmp/noise/$$
+linefeed="/tmp/noise/$$/linefeed"
+env="/tmp/noise/$$/environment"
+trap cleanup EXIT
+mkfifo $linefeed
+touch $env
+##
+##
+##
+readline() {
+ { read REPLY && echo "$REPLY" ; } | sed -n "
+ s/[']//g
+ s/~%/\n/g
+ s/\([^\\]\)\([#<>]\)/\1\\\\\2/g
+ s:^/\([a-z_]\+\)\([[:space:]]\+\(.*\)\)\?$:command=\1; args='\3';:p;t
+ s@^\([[:alnum:]_/+-]\+\):[[:space:]]*\(.*\)@command=lang; args='\1 \2';@p;t
+ s@^\![[:space:]]*\(.*\)@command=play; args='\1';@p;t
+ s:.*:command='$noise_default_command'; args='&';:p;t
+ "
+}
+##
+##
+##
+while echo -n "$noise_prompt" && eval "`readline`" ; do
+ ## modcall
+ for dir in `echo "$NOISE_PATH" | tr : \ ` ; do
+ module="$dir/$command"
+ if test -x "$module" ; then
+#echo foo $module:$@:
+ #shift
+ eval 'NOISE="$0" NOISE_pid="$$" NOISE_linefeed="$linefeed" "$module"' "$args"
+ continue 2
+ fi
+ done
+ ## funcall
+ if type noise_$command | grep -q function ; then
+ eval 'noise_$command' "$args"
+ continue
+ fi
+ ##
+ fail unknown command "$command"
+done <$linefeed &
+jobs="${jobs+$jobs }`jobs -p`"
+##
+##
+##
+cat<<EOF
+Welcome to 23.shack version 0.9 beta 4 \
+commit `
+ cd $dirname &&
+ git log -n 1 | head -n 1 | cut -d\ -f 2 | dd count=23 bs=1 2>/dev/null
+`...
+
+## Motto Of The Day\
+
+Join the 23.shack-dev-team, we've got `
+ sloccount $dirname/* |
+ sed -n '
+ s/.*(SLOC)[[:space:]]*=[[:space:]]*\([0-9]\+\)$/\1/p
+ '` SLOC, `
+ {
+ ls $dirname/modules/
+ test -d ~noise/modules && ls ~noise/modules/
+ } | sort | uniq | wc -l
+ ` mods,
+`grep ^- $dirname/TODO | wc -l`+ TODOs and drive the irregular Hackathon @shackspace.
+Follow http://twitter.com/shackspam FTW!
+
+## Hints\
+
+Start your telnet session with rlwrap for MAXIMUM profit.
+Get online-help with /help.
+
+EOF
+# TODO: MOTD-candidates:
+#twitter: #shackspam
+#mail: shockspasm@googlemail.com
+#irc: freenode/#shackspace
+#afk: @shackspace
+##
+##
+##
+exec >>$linefeed
+##
+##
+##
+echo '/set -q default_command espeak'
+echo '/set -q prompt "READY.~%"'
+##
+##
+##
+while read REPLY; do
+ case $REPLY in
+ (/quit) echo /quit ; exit ;;
+ (*) tr \; \\n | grep . ;;
+ esac<<EOF
+$REPLY
+EOF
+done
+#### end of file.
diff --git a/.graveyard/noise/noise-as-user b/.graveyard/noise/noise-as-user
new file mode 100755
index 00000000..21e4102f
--- /dev/null
+++ b/.graveyard/noise/noise-as-user
@@ -0,0 +1,4 @@
+#! /bin/sh
+qname="`readlink -f "$0"`"
+dirname="`dirname "$qname"`"
+exec su noise -c "env -i TCPREMOTEIP='$TCPREMOTEIP' '$dirname/noise'"
diff --git a/.graveyard/noise/noise-server b/.graveyard/noise/noise-server
new file mode 100755
index 00000000..0df803b1
--- /dev/null
+++ b/.graveyard/noise/noise-server
@@ -0,0 +1,4 @@
+#! /bin/sh
+qname="`readlink -f "$0"`"
+dirname="`dirname "$qname"`"
+exec tcpserver -c 423 -t 2 -D 0.0.0.0 23 "$dirname/noise-as-user"
diff --git a/.graveyard/punani/Makefile b/.graveyard/punani/Makefile
new file mode 100644
index 00000000..f444b1fc
--- /dev/null
+++ b/.graveyard/punani/Makefile
@@ -0,0 +1,9 @@
+
+install: ../bin/punani
+
+../bin/punani:
+ ln -snvf ../punani/bin/punani ../bin/punani
+debian:
+ useradd punani||:
+ cp autostart/punani-debian /etc/init.d/punani
+ update-rc.d punani defaults
diff --git a/.graveyard/punani/README.md b/.graveyard/punani/README.md
new file mode 100644
index 00000000..1b70eab7
--- /dev/null
+++ b/.graveyard/punani/README.md
@@ -0,0 +1,30 @@
+Overview
+=======
+Punani is a meta packagemanager comprising a server which resolves package
+requests and a client containing the logic to find the best suitable packer
+on the host system. Packagenames in Punani are binaries in the PATH. All
+library packages are named in the Principle of Least Surprise[1]. Different
+package names can resolve into the same package.
+
+If you want to install the `hostname` tool, the query is
+ punani install hostname
+on an archlinux this will result in the call :
+ pacman --noconfirm -Sy --needed inetutils
+
+[1] http://de.wikipedia.org/wiki/Principle_of_Least_Surprise
+
+Punani Client
+============
+The punani client will determine which packer are available on the system
+and then send a request to the punani server to find out how the given
+package is called with the given packer. In addition to that, the client
+will add flags to the packers call in order to install packages only when
+needed and disable user interaction.
+
+Punani Server
+============
+
+The punani server is a web-service which resolves request in the following
+manner:
+ localhost/$packer/$package
+The result is the package-name with the given packer or 404 if not found.
diff --git a/.graveyard/punani/autostart/punani-debian b/.graveyard/punani/autostart/punani-debian
new file mode 100755
index 00000000..53db0336
--- /dev/null
+++ b/.graveyard/punani/autostart/punani-debian
@@ -0,0 +1,102 @@
+#!/bin/sh
+# uses template from /etc/init.d/skeleton
+### BEGIN INIT INFO
+# Provides: punani
+# Required-Start:
+# Required-Stop:
+# Default-Start: 2 3 4 5
+# Default-Stop: 0 1 6
+# Short-Description: punani
+# Description: starts punani daemon
+#
+### END INIT INFO
+
+PATH=/sbin:/usr/sbin:/bin:/usr/bin
+NAME=punani
+USER=punani
+DESC="$NAME daemon"
+DAEMON=/usr/bin/python
+DAEMON_DIR="/krebs/punani"
+DAEMON_ARGS="${DAEMON_DIR}/index.py"
+PIDFILE=/var/run/$NAME.pid
+SCRIPTNAME=/etc/init.d/$NAME
+
+[ -x "$DAEMON" ] || exit 0
+[ -r /etc/default/$NAME ] && . /etc/default/$NAME
+. /lib/init/vars.sh
+. /lib/lsb/init-functions
+
+do_start()
+{
+ # 0 if daemon has been started
+ # 1 if daemon was already running
+ # 2 if daemon could not be started
+ start-stop-daemon -b -d $DAEMON_DIR -c $USER --start --quiet --make-pidfile --pidfile $PIDFILE --exec $DAEMON --test > /dev/null \
+ || return 1
+ start-stop-daemon -b -d $DAEMON_DIR -c $USER --start --quiet --make-pidfile --pidfile $PIDFILE --exec $DAEMON -- \
+ $DAEMON_ARGS \
+ || return 2
+}
+
+do_stop()
+{
+ # 0 if daemon has been stopped
+ # 1 if daemon was already stopped
+ # 2 if daemon could not be stopped
+ start-stop-daemon --stop --retry=TERM/30/KILL/5 --pidfile $PIDFILE
+ RETVAL="$?"
+ [ "$RETVAL" = 2 ] && return 2
+ rm -f $PIDFILE
+ return "$RETVAL"
+}
+
+do_reload() {
+ start-stop-daemon --stop --signal 1 --quiet --pidfile $PIDFILE
+ return 0
+}
+
+case "$1" in
+ start)
+ [ "$VERBOSE" != no ] && log_daemon_msg "Starting $DESC" "$NAME"
+ do_start
+ case "$?" in
+ 0|1) [ "$VERBOSE" != no ] && log_end_msg 0 ;;
+ 2) [ "$VERBOSE" != no ] && log_end_msg 1 ;;
+ esac
+ ;;
+ stop)
+ [ "$VERBOSE" != no ] && log_daemon_msg "Stopping $DESC" "$NAME"
+ do_stop
+ case "$?" in
+ 0|1) [ "$VERBOSE" != no ] && log_end_msg 0 ;;
+ 2) [ "$VERBOSE" != no ] && log_end_msg 1 ;;
+ esac
+ ;;
+ status)
+ status_of_proc "$DAEMON" "$NAME" && exit 0 || exit $?
+ ;;
+ restart|force-reload)
+ log_daemon_msg "Restarting $DESC" "$NAME"
+ do_stop
+ case "$?" in
+ 0|1)
+ do_start
+ case "$?" in
+ 0) log_end_msg 0 ;;
+ 1) log_end_msg 1 ;;
+ *) log_end_msg 1 ;;
+ esac
+ ;;
+ *)
+ # Failed to stop
+ log_end_msg 1
+ ;;
+ esac
+ ;;
+ *)
+ echo "Usage: $SCRIPTNAME {start|stop|status|restart|force-reload}" >&2
+ exit 3
+ ;;
+esac
+
+:
diff --git a/.graveyard/punani/bin/punani b/.graveyard/punani/bin/punani
new file mode 100755
index 00000000..23ba5e00
--- /dev/null
+++ b/.graveyard/punani/bin/punani
@@ -0,0 +1,70 @@
+#! /bin/sh
+set -euf
+
+PUNANI_HOST="${PUNANI_HOST-http://euer.krebsco.de:9111}"
+ACTION="$1"; shift
+PKGS="$*"
+
+## find package manager
+if ! :; then : # dummy case, so the rest has a common format
+
+elif for PACKER_CMD in aptitude apt-get
+ do type $PACKER_CMD 2>/dev/null 1>&2 && break; done; then
+ INSTALL_PARAM='-y install'
+ REMOVE_PARAM='-y remove'
+
+elif for PACKER_CMD in bauerbill packer yaourt pacman
+ do type $PACKER_CMD 2>/dev/null 1>&2 && break; done; then
+ INSTALL_PARAM='--noconfirm -S --needed'
+ REMOVE_PARAM='-Rcs'
+
+elif for PACKER_CMD in yum
+ do type $PACKER_CMD 2>/dev/null 1>&2 && break; done; then
+ INSTALL_PARAM='-y install'
+ REMOVE_PARAM='-y remove'
+
+elif for PACKER_CMD in brew
+ do type $PACKER_CMD 2>/dev/null 1>&2 && break; done; then
+ INSTALL_PARAM='install'
+ REMOVE_PARAM='remove'
+
+
+
+else
+ echo "Error 2: no known package manager found; no punani for you!" >&2
+ exit 23
+fi
+
+## find package name
+if test -n "$PKGS"; then
+ for PKG in $PKGS; do
+ RES="`wget -O- $PUNANI_HOST/$PACKER_CMD/$PKG 2>/dev/null || :`"
+ if [ ! "$RES" ]; then
+ echo "Error 2: could not resolve '$PKG'; no punani for you!" >&2
+ exit 23
+ fi
+ RESOLVED="${RESOLVED+$RESOLVED }$RES"
+ done
+else
+ echo "Error 1: no PACKAGE specified." >&2
+ ACTION="usage"
+fi
+
+## dispatch
+case "$ACTION" in
+ install)
+ set -x
+ for PKG in $RESOLVED; do
+ sudo $PACKER_CMD $INSTALL_PARAM $PKG || echo "Cannot install $PKG!"
+ done
+ ;;
+ remove)
+ set -x
+ for PKG in $RESOLVED; do
+ sudo $PACKER_CMD $REMOVE_PARAM $PKG || echo "Cannot remove $PKG!"
+ done
+ ;;
+ *)
+ echo "usage: `basename $0` (install|remove) PACKAGE..."
+ exit 23
+esac
diff --git a/.graveyard/punani/bot/__init__.py b/.graveyard/punani/bot/__init__.py
new file mode 100755
index 00000000..4944bba0
--- /dev/null
+++ b/.graveyard/punani/bot/__init__.py
@@ -0,0 +1,105 @@
+#!/usr/bin/python
+from Queue import Queue
+from SocketServer import BaseRequestHandler, ThreadingTCPServer
+from threading import Thread
+from time import sleep, strftime, strptime
+
+from ircbot import SingleServerIRCBot
+from irclib import nm_to_n
+
+
+class PunaniRequestHandler(BaseRequestHandler):
+ """Handler for Punani messages."""
+
+ def handle(self):
+ try:
+ msg = self.request.recv(1024).strip()
+ except ValueError:
+ msg = 'Invalid message.'
+ else:
+ self.server.queue.put((self.client_address, msg))
+ print ('%s:%d' % self.client_address), str(msg)
+
+
+class PunaniReceiveServer(ThreadingTCPServer):
+ """UDP server that waits for Punani messages."""
+
+ def __init__(self):
+ ThreadingTCPServer.__init__(self,
+ ('127.0.0.1', 5555),
+ PunaniRequestHandler)
+ self.queue = Queue()
+
+
+class PunaniBot(SingleServerIRCBot):
+
+ def __init__(self, server_list, channel_list, nickname='punani-ircbot',
+ realname='Bob Ross'):
+ self.reconnection_interval = 30
+ SingleServerIRCBot.__init__(self, server_list, nickname, realname)
+ self.channel_list = channel_list
+
+ def on_welcome(self, conn, event):
+ """Join channels after connect."""
+ print 'Connected to %s:%d.' % conn.socket.getsockname()
+ for channel, key in self.channel_list:
+ conn.join(channel, key)
+
+ def on_nicknameinuse(self, conn, event):
+ """Choose another nickname if conflicting."""
+ self._nickname += '_'
+ conn.nick(self._nickname)
+
+ def on_ctcp(self, conn, event):
+ """Answer CTCP PING and VERSION queries."""
+ whonick = nm_to_n(event.source())
+ message = event.arguments()[0].lower()
+ if message == 'version':
+ conn.notice(whonick, 'Punani2irc')
+ elif message == 'ping':
+ conn.pong(whonick)
+
+ def on_privmsg(self, conn, event):
+ """React on private messages.
+
+ Die, for example.
+ """
+ whonick = nm_to_n(event.source())
+ message = event.arguments()[0]
+ if message == 'die!':
+ print 'Shutting down as requested by %s...' % whonick
+ self.die('Shutting down.')
+
+ def say(self, msg):
+ """Say message to channels."""
+ for channel, key in self.channel_list:
+ self.connection.privmsg(channel, msg)
+
+
+def process_queue(announce_callback, queue, delay=2):
+ """Process received messages in queue."""
+ while True:
+ sleep(delay)
+ try:
+ addr, msg = queue.get()
+ except Empty:
+ continue
+ #do something with the addr?
+ announce_callback(str(msg))
+if __name__ == '__main__':
+ # Set IRC connection parameters.
+ irc_servers = [('supernode', 6667)]
+ irc_channels = [('#retiolum', '')]
+
+ # Prepare and start IRC bot.
+ bot = PunaniBot(irc_servers, irc_channels)
+ t = Thread(target=bot.start)
+ t.daemon = True
+ t.start()
+ announce = bot.say
+
+ receiver = PunaniReceiveServer()
+ t = Thread(target=process_queue, args=(announce, receiver.queue))
+ t.daemon = True
+ t.start()
+ receiver.serve_forever()
diff --git a/.graveyard/punani/db/punani b/.graveyard/punani/db/punani
new file mode 100644
index 00000000..e5d1f383
--- /dev/null
+++ b/.graveyard/punani/db/punani
@@ -0,0 +1,76 @@
+{
+ "packer-symlinks" : {
+ "packer" : "yaourt",
+ "aptitude" : "apt-get",
+ "bauerbill" : "yaourt"
+ },
+ "super-packer" : {
+ "yaourt" : "pacman"
+ },
+ "nano" : {
+ "apt-get" : "nano",
+ "pacman" : "nano"
+ },
+ "vim" : {
+ "apt-get" : "vim",
+ "pacman" : "vim",
+ "brew" : "vim",
+ "yum" : "vim"
+ },
+ "zsh" : {
+ "pacman" : "zsh",
+ "apt-get" : "zsh"
+ },
+ "git" : {
+ "pacman" : "git",
+ "apt-get" : "git-core"
+ },
+ "unison" : {
+ "apt-get" : "unison",
+ "pacman" : "unison"
+ },
+ "python" : {
+ "apt-get" : "python",
+ "pacman" : "python2"
+ },
+ "python2" : {
+ "apt-get" : "python",
+ "pacman" : "python2"
+ },
+ "python3" : {
+ "apt-get" : "python3",
+ "pacman" : "python"
+ },
+ "tinc" : {
+ "apt-get" : "tinc",
+ "pacman" : "tinc"
+ },
+ "python-notify" : {
+ "pacman" : "python-notify",
+ "apt-get" : "python-notify"
+ },
+ "python-dbus" : {
+ "pacman" : "dbus-python",
+ "apt-get" : "python-dbus"
+ },
+ "w3m" : {
+ "pacman" : "w3m",
+ "apt-get" : "w3m"
+ },
+ "make" : {
+ "pacman" : "make",
+ "apt-get" : "make"
+ },
+ "perl-xml-simple" : {
+ "apt-get" : "libxml-simple-perl",
+ "pacman" : "perl-xml-simple"
+ },
+ "hostname" : {
+ "pacman" : "inetutils",
+ "apt-get" : "hostname"
+ },
+ "pip" : {
+ "pacman" : "python-pip",
+ "apt-get" : "python-pip"
+ }
+}
diff --git a/.graveyard/punani/doc/releases b/.graveyard/punani/doc/releases
new file mode 100644
index 00000000..98c4ea82
--- /dev/null
+++ b/.graveyard/punani/doc/releases
@@ -0,0 +1,38 @@
+# release files (guess the os distribution)
+# from http://linuxmafia.com/faq/Admin/release-files.html
+Annvix: /etc/annvix-release
+Arch Linux: /etc/arch-release
+Arklinux: /etc/arklinux-release
+Aurox Linux: /etc/aurox-release
+BlackCat: /etc/blackcat-release
+Cobalt: /etc/cobalt-release
+Conectiva: /etc/conectiva-release
+Debian: /etc/debian_version, /etc/debian_release (rare)
+Fedora Core: /etc/fedora-release
+Gentoo Linux: /etc/gentoo-release
+Immunix: /etc/immunix-release
+Knoppix: knoppix_version
+Linux-From-Scratch: /etc/lfs-release
+Linux-PPC: /etc/linuxppc-release
+Mandrake: /etc/mandrake-release
+Mandriva/Mandrake Linux: /etc/mandriva-release, /etc/mandrake-release, /etc/mandakelinux-release
+MkLinux: /etc/mklinux-release
+Novell Linux Desktop: /etc/nld-release
+PLD Linux: /etc/pld-release
+Red Hat: /etc/redhat-release, /etc/redhat_version (rare)
+Slackware: /etc/slackware-version, /etc/slackware-release (rare)
+SME Server (Formerly E-Smith): /etc/e-smith-release
+Solaris SPARC: /etc/release
+Sun JDS: /etc/sun-release
+SUSE Linux: /etc/SuSE-release, /etc/novell-release
+SUSE Linux ES9: /etc/sles-release
+Tiny Sofa: /etc/tinysofa-release
+TurboLinux: /etc/turbolinux-release
+Ubuntu Linux: /etc/lsb-release
+UltraPenguin: /etc/ultrapenguin-release
+UnitedLinux: /etc/UnitedLinux-release (covers SUSE SLES8)
+VA-Linux/RH-VALE: /etc/va-release
+Yellow Dog: /etc/yellowdog-release
+
+# own collection
+Angstrom: /etc/angstrom-version
diff --git a/.graveyard/punani/host/dist/arch/getsize b/.graveyard/punani/host/dist/arch/getsize
new file mode 100755
index 00000000..a2ef8f95
--- /dev/null
+++ b/.graveyard/punani/host/dist/arch/getsize
@@ -0,0 +1,17 @@
+#! /bin/sh
+set -euf
+sed -n '
+ /^Name/{
+ s/^Name *: *\(.*\)$/\1/
+ T
+ h
+ }
+ /^Installed Size/{
+ s/^Installed Size *: *\(.*\)$/ \1/
+ T
+ H
+ x
+ s/\n//g
+ p
+ }
+' | awk '{print$2$3" "$1}' | sort -n
diff --git a/.graveyard/punani/index.py b/.graveyard/punani/index.py
new file mode 100755
index 00000000..ff483d37
--- /dev/null
+++ b/.graveyard/punani/index.py
@@ -0,0 +1,97 @@
+#!/usr/bin/python
+
+import web
+import json
+import os
+import sys
+from bot import *
+urls = (
+ '/', 'Index',
+ '/dump','Dump',
+# '/reload','Reload',
+ '/(.+)/(.+)', 'ArchFinder',
+)
+
+
+PDB_FILE=os.path.dirname(os.path.abspath(sys.argv[0])) + "/db/punani"
+PORT="9111"
+CHANNEL="#retiolum"
+f = open(PDB_FILE)
+pdb = json.load(f)
+f.close()
+polite = os.environ.get("polite",False)
+from socket import *
+
+def local_announce(msg):
+ s = socket(AF_INET,SOCK_STREAM)
+ s.connect(('localhost',5555))
+ s.send(msg)
+ s.close()
+class Index:
+ def GET(self):
+ ret = """Welcome to the Tightnani API<br/>
+Retrieve a package name for your distribution with: /PACKER/PKG"""
+ return ret
+
+class Reload:
+ def GET(self):
+ f = open(PDB_FILE)
+ pdb= json.load(f)
+ f.close()
+ return "DB reloaded"
+
+
+class Dump:
+ def GET(self):
+ return json.dumps(pdb,sort_keys=True,indent=4)
+
+class ArchFinder:
+ def GET(self,request_packer,package):
+ if not request_packer or not package: web.BadRequest()
+ else:
+ packer = pdb['packer-symlinks'].get(request_packer,request_packer) #try to resolve similar packers
+ super_packer = pdb['super-packer'].get(packer,'')
+ ret = pdb.get(package,{}).get(packer,False)
+ ret = ret if ret else pdb.get(package,{}).get(super_packer,False)
+
+ if not ret:
+ try:
+ if polite:
+ local_announce("Client `%s` asked for the tool `%s` in packer `%s` but i do not have it in my Database. Please update me!" %(web.ctx.ip, package,packer))
+ else:
+ local_announce("404: no %s/%s for %s" % (request_packer,package,gethostbyaddr(web.ctx.ip)[0]))
+ except Exception,e:
+ print ("Got Exception %s: %s" % (str(Exception),(e)))
+ web.NotFound()
+ return "not found. i'm so sorry :("
+ else: return ret
+
+
+
+if __name__ == "__main__":
+ import sys
+ # Set IRC connection parameters.
+ irc_servers = [('supernode.retiolum', 6667)]
+ irc_channels = [('#retiolum','')]
+
+ # Prepare and start IRC bot.
+ bot = PunaniBot(irc_servers, irc_channels)
+ t = Thread(target=bot.start)
+ t.daemon = True
+ t.start()
+ announce = bot.say
+
+ receiver = PunaniReceiveServer()
+ t = Thread(target=receiver.serve_forever)
+ t.daemon = True
+ t.start()
+
+ t = Thread(target=process_queue,args=(announce,receiver.queue))
+ t.daemon = True
+ t.start()
+
+
+ sys.argv.append(PORT)
+ app = web.application(urls,globals())
+ app.internalerror = web.debugerror
+ app.run()
diff --git a/.graveyard/roboctl/index.js b/.graveyard/roboctl/index.js
new file mode 100644
index 00000000..ac92c969
--- /dev/null
+++ b/.graveyard/roboctl/index.js
@@ -0,0 +1,18 @@
+
+nick = /(^|\n) *Name *= *(\S*) *($|\n)/
+ .exec(require('fs').readFileSync('/etc/tinc/retiolum/tinc.conf'))[2];
+
+var config = {
+ "nick": nick + '-krebs',
+ "server": "irc.freenode.net",
+ "port": 6667,
+ "channel": "#tincspasm"
+};
+
+irc = require('./lib/irc').createClient(config);
+
+// TODO call back when joined
+irc.connect(function () {
+ console.log('like a boss: ' + nick);
+ //irc.write();
+});
diff --git a/.graveyard/roboctl/lib/irc.js b/.graveyard/roboctl/lib/irc.js
new file mode 100644
index 00000000..5f904a74
--- /dev/null
+++ b/.graveyard/roboctl/lib/irc.js
@@ -0,0 +1,67 @@
+
+var Client = function (config) {
+ var client = this;
+ var net = require('net');
+ var sys = require('sys');
+ var log = function (x) {
+ sys.puts('TCP server: ' + x);
+ };
+
+ client.connect = function (callback) {
+ var stream = net.createConnection(config.port, config.server);
+ stream.on('connect', function () {
+ stream.write(
+ 'NICK ' + config.nick + '\n' +
+ 'USER ' + config.nick + ' 0 *:Karl Koch\n' +
+ 'JOIN ' + config.channel + '\n'
+ );
+ //client.write = function (text) {
+ // stream.write('PRIVMSG ' + config.channel + ' :' + text);
+ //};
+ client.write = msg_start_send;
+ callback();
+ });
+ //stream.on('secure', function () {
+ //});
+
+ var msg = [];
+
+ var msg_start_send = function (x) {
+ client.write = msg_append;
+ setTimeout(function () {
+ var x = msg.join('\n') + '\n';
+ msg = [];
+ client.write = msg_start_send;
+ stream.write('PRIVMSG ' + config.channel + ' :' + x);
+ }, 1000);
+ };
+
+ var msg_append = function (x) {
+ msg[msg.length] = x;
+ };
+
+
+ stream.on('data', function (data) {
+ data = String(data);
+ log('' + data + '');
+ if (data.substring(0,4) === 'PING') {
+ log('PONG!');
+ stream.write('PONG ' + data.substring(4));
+ }
+ });
+ //stream.on('end', function () {
+ //});
+ //stream.on('timeout', function () {
+ //});
+ //stream.on('drain', function () {
+ //});
+ //stream.on('error', function (exception) {
+ //});
+ //stream.on('clonse', function (exception) {
+ //});
+ };
+};
+
+exports.createClient = function (config) {
+ return new Client(config);
+};
diff --git a/.graveyard/shell/etc/ipt/ipv4-shield-1.rules b/.graveyard/shell/etc/ipt/ipv4-shield-1.rules
new file mode 100644
index 00000000..c879311d
--- /dev/null
+++ b/.graveyard/shell/etc/ipt/ipv4-shield-1.rules
@@ -0,0 +1,10 @@
+*filter
+:INPUT DROP [0:0]
+:FORWARD DROP [0:0]
+:OUTPUT ACCEPT [0:0]
+
+-AINPUT -m state --state RELATED,ESTABLISHED -jACCEPT
+
+-AINPUT -i lo -jACCEPT
+
+COMMIT
diff --git a/.graveyard/ship/deploy b/.graveyard/ship/deploy
new file mode 100755
index 00000000..cb71d570
--- /dev/null
+++ b/.graveyard/ship/deploy
@@ -0,0 +1,9 @@
+#!/bin/sh
+set -xeuf
+cd $(dirname $0)
+exesrcdir=src
+libsrcdir=lib
+tmpoutdir=tmp
+for file in `ls $exesrcdir`; do
+ BUILD_PATH=$libsrcdir ./build compile $exesrcdir/$file $tmpoutdir/$file
+done
diff --git a/.graveyard/ship/develop b/.graveyard/ship/develop
new file mode 100644
index 00000000..a961f9c2
--- /dev/null
+++ b/.graveyard/ship/develop
@@ -0,0 +1,5 @@
+#!/bin/sh
+source_all(){
+ LIBDIR=${1:-.}
+ for i in $LIBDIR/*; do . "$i"; done
+}
diff --git a/.graveyard/temper/.gitignore b/.graveyard/temper/.gitignore
new file mode 100644
index 00000000..7e50641a
--- /dev/null
+++ b/.graveyard/temper/.gitignore
@@ -0,0 +1 @@
+temper
diff --git a/.graveyard/temper/99-tempsensor.rules b/.graveyard/temper/99-tempsensor.rules
new file mode 100644
index 00000000..441a469e
--- /dev/null
+++ b/.graveyard/temper/99-tempsensor.rules
@@ -0,0 +1 @@
+SUBSYSTEMS=="usb", ACTION=="add", ATTRS{idVendor}=="1130", ATTRS{idProduct}=="660c", MODE="666"
diff --git a/.graveyard/temper/Makefile b/.graveyard/temper/Makefile
new file mode 100644
index 00000000..d18ad710
--- /dev/null
+++ b/.graveyard/temper/Makefile
@@ -0,0 +1,20 @@
+
+all: infest
+infest: temper rules-install
+CFLAGS = -O2 -Wall -DDEBUG
+
+temper: temper.c
+ ${CC} -DUNIT_TEST -o $@ $^ -lusb
+ chmod +s temper
+ #cp -a temper /usr/bin
+clean:
+ rm -f temper *.o
+
+rules-install: /etc/udev/rules.d/99-tempsensor.rules
+/etc/udev/rules.d/99-tempsensor.rules:
+ cp 99-tempsensor.rules /etc/udev/rules.d
+debian-prereq:
+ apt-get install libusb-dev
+uninstall:
+ rm -f /etc/udev/rules.d/99-tempsensor.rules /usr/bin/temper
+
diff --git a/.graveyard/temper/collectd-temper.sh b/.graveyard/temper/collectd-temper.sh
new file mode 100755
index 00000000..f66e9acc
--- /dev/null
+++ b/.graveyard/temper/collectd-temper.sh
@@ -0,0 +1,9 @@
+HOSTNAME="${COLLECTD_HOSTNAME:-localhost}"
+INTERVAL="${COLLECTD_INTERVAL:-30}"
+TEMPERNAME="${TEMPERNAME:-external}"
+TEMPERBIN="${TEMPERBIN:-/krebs/temper/temper}"
+#while sleep "$INTERVAL"; do
+ VALUE=`$TEMPERBIN`
+ echo "PUTVAL \"$HOSTNAME/sensors-temper/temperature-$TEMPERNAME\" N:$VALUE" #interval=$INTERVAL
+ logger "PUTVAL \"$HOSTNAME/sensors-temper/temperature-$TEMPERNAME\" N:$VALUE" #interval=$INTERVAL
+#done
diff --git a/.graveyard/temper/temper.c b/.graveyard/temper/temper.c
new file mode 100644
index 00000000..f0730ab3
--- /dev/null
+++ b/.graveyard/temper/temper.c
@@ -0,0 +1,277 @@
+#include <stdio.h>
+#include <string.h>
+#include <usb.h>
+#include <errno.h>
+
+/*
+ * Temper.c by Robert Kavaler (c) 2009 (relavak.com)
+ * All rights reserved.
+ *
+ * Temper driver for linux. This program can be compiled either as a library
+ * or as a standalone program (-DUNIT_TEST). The driver will work with some
+ * TEMPer usb devices from RDing (www.PCsensor.com).
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ * * Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ *
+ * THIS SOFTWARE IS PROVIDED BY Robert Kavaler ''AS IS'' AND ANY
+ * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+ * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+ * DISCLAIMED. IN NO EVENT SHALL Robert kavaler BE LIABLE FOR ANY
+ * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+ * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+ * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+ * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ *
+ */
+
+#include "temper.h"
+
+#define VENDOR_ID 0x1130
+#define PRODUCT_ID 0x660c
+
+struct Temper {
+ struct usb_device *device;
+ usb_dev_handle *handle;
+ int debug;
+ int timeout;
+};
+
+ Temper *
+TemperCreate(struct usb_device *dev, int timeout, int debug)
+{
+ Temper *t;
+ int ret;
+
+ t = calloc(1, sizeof(*t));
+ t->device = dev;
+ t->debug = debug;
+ t->timeout = timeout;
+ t->handle = usb_open(t->device);
+ if(!t->handle) {
+ free(t);
+ return NULL;
+ }
+ if(t->debug) {
+ printf("Trying to detach kernel driver\n");
+ }
+
+ ret = usb_detach_kernel_driver_np(t->handle, 0);
+ if(ret) {
+ if(errno == ENODATA) {
+ if(t->debug) {
+ printf("Device already detached\n");
+ }
+ } else {
+ if(t->debug) {
+ printf("Detach failed: %s[%d]\n",
+ strerror(errno), errno);
+ printf("Continuing anyway\n");
+ }
+ }
+ } else {
+ if(t->debug) {
+ printf("detach successful\n");
+ }
+ }
+ ret = usb_detach_kernel_driver_np(t->handle, 1);
+ if(ret) {
+ if(errno == ENODATA) {
+ if(t->debug)
+ printf("Device already detached\n");
+ } else {
+ if(t->debug) {
+ printf("Detach failed: %s[%d]\n",
+ strerror(errno), errno);
+ printf("Continuing anyway\n");
+ }
+ }
+ } else {
+ if(t->debug) {
+ printf("detach successful\n");
+ }
+ }
+
+ if(usb_set_configuration(t->handle, 1) < 0 ||
+ usb_claim_interface(t->handle, 0) < 0 ||
+ usb_claim_interface(t->handle, 1)) {
+ usb_close(t->handle);
+ free(t);
+ return NULL;
+ }
+ return t;
+}
+
+ Temper *
+TemperCreateFromDeviceNumber(int deviceNum, int timeout, int debug)
+{
+ struct usb_bus *bus;
+ int n;
+
+ n = 0;
+ for(bus=usb_get_busses(); bus; bus=bus->next) {
+ struct usb_device *dev;
+
+ for(dev=bus->devices; dev; dev=dev->next) {
+ if(debug) {
+ printf("Found device: %04x:%04x\n",
+ dev->descriptor.idVendor,
+ dev->descriptor.idProduct);
+ }
+ if(dev->descriptor.idVendor == VENDOR_ID &&
+ dev->descriptor.idProduct == PRODUCT_ID) {
+ if(debug) {
+ printf("Found deviceNum %d\n", n);
+ }
+ if(n == deviceNum) {
+ return TemperCreate(dev, timeout, debug);
+ }
+ n++;
+ }
+ }
+ }
+ return NULL;
+}
+
+ void
+TemperFree(Temper *t)
+{
+ if(t) {
+ if(t->handle) {
+ usb_close(t->handle);
+ }
+ free(t);
+ }
+}
+
+ static int
+TemperSendCommand(Temper *t, int a, int b, int c, int d, int e, int f, int g, int h)
+{
+ unsigned char buf[32];
+ int ret;
+
+ bzero(buf, 32);
+ buf[0] = a;
+ buf[1] = b;
+ buf[2] = c;
+ buf[3] = d;
+ buf[4] = e;
+ buf[5] = f;
+ buf[6] = g;
+ buf[7] = h;
+
+ if(t->debug) {
+ printf("sending bytes %d, %d, %d, %d, %d, %d, %d, %d\n",
+ a, b, c, d, e, f, g, h);
+ }
+
+ ret = usb_control_msg(t->handle, 0x21, 9, 0x200, 0x01,
+ (char *) buf, 32, t->timeout);
+ if(ret != 32) {
+ perror("usb_control_msg failed");
+ return -1;
+ }
+ return 0;
+}
+
+ static int
+TemperGetData(Temper *t, char *buf, int len)
+{
+ int ret;
+
+ return usb_control_msg(t->handle, 0xa1, 1, 0x300, 0x01,
+ (char *) buf, len, t->timeout);
+}
+
+ int
+TemperGetTemperatureInC(Temper *t, float *tempC)
+{
+ char buf[256];
+ int ret, temperature, i;
+
+ TemperSendCommand(t, 10, 11, 12, 13, 0, 0, 2, 0);
+ TemperSendCommand(t, 0x54, 0, 0, 0, 0, 0, 0, 0);
+ for(i = 0; i < 7; i++) {
+ TemperSendCommand(t, 0, 0, 0, 0, 0, 0, 0, 0);
+ }
+ TemperSendCommand(t, 10, 11, 12, 13, 0, 0, 1, 0);
+ ret = TemperGetData(t, buf, 256);
+ if(ret < 2) {
+ return -1;
+ }
+
+ temperature = (buf[1] & 0xFF) + (buf[0] << 8);
+ temperature += 1152; // calibration value
+ *tempC = temperature * (125.0 / 32000.0);
+ return 0;
+}
+
+ int
+TemperGetOtherStuff(Temper *t, char *buf, int length)
+{
+ TemperSendCommand(t, 10, 11, 12, 13, 0, 0, 2, 0);
+ TemperSendCommand(t, 0x52, 0, 0, 0, 0, 0, 0, 0);
+ TemperSendCommand(t, 10, 11, 12, 13, 0, 0, 1, 0);
+ return TemperGetData(t, buf, length);
+}
+
+
+#define USB_TIMEOUT 1000 /* milliseconds */
+#define DEBUG_MODE 1
+#define SLEEP_TIMEOUT 10
+
+ int
+main(int argv,char** args)
+{
+
+
+ Temper *t;
+ char buf[256];
+ int i, ret,oneshot=0;
+ if (argv == 2 && (args[1][1] == 'h' || args[1][0] == 'h'))
+ {
+ printf("Temper, does the right thing in C\n");
+ printf("recompile with DEBUG_MODE = 1 for all the debug printing\n");
+ printf("recompile with SLEEP_TIMEOUT = XX for a different polling interval\n");
+ exit(0);
+ }
+
+ usb_set_debug(DEBUG_MODE);
+ usb_init();
+ usb_find_busses();
+ usb_find_devices();
+
+ t = TemperCreateFromDeviceNumber(0, USB_TIMEOUT, DEBUG_MODE);
+ if(!t) {
+ perror("TemperCreate");
+ exit(-1);
+ }
+
+ /*
+ TemperSendCommand(t, 10, 11, 12, 13, 0, 0, 2, 0);
+ TemperSendCommand(t, 0x43, 0, 0, 0, 0, 0, 0, 0);
+ TemperSendCommand(t, 0, 0, 0, 0, 0, 0, 0, 0);
+ TemperSendCommand(t, 0, 0, 0, 0, 0, 0, 0, 0);
+ TemperSendCommand(t, 0, 0, 0, 0, 0, 0, 0, 0);
+ TemperSendCommand(t, 0, 0, 0, 0, 0, 0, 0, 0);
+ TemperSendCommand(t, 0, 0, 0, 0, 0, 0, 0, 0);
+ TemperSendCommand(t, 0, 0, 0, 0, 0, 0, 0, 0);
+ */
+
+ bzero(buf, 256);
+ ret = TemperGetOtherStuff(t, buf, 256);
+
+ float tempc;
+
+ if(TemperGetTemperatureInC(t, &tempc) < 0) {
+ perror("TemperGetTemperatureInC");
+ exit(1);
+ }
+
+ printf("%.2f\n", tempc);
+ return 0;
+}
diff --git a/.graveyard/temper/temper.h b/.graveyard/temper/temper.h
new file mode 100644
index 00000000..7ea6280a
--- /dev/null
+++ b/.graveyard/temper/temper.h
@@ -0,0 +1,39 @@
+#ifndef TEMPER_H
+#define TEMPER_H
+
+/*
+ * Temper.h by Robert Kavaler (c) 2009 (relavak.com)
+ * All rights reserved.
+ *
+ * Temper driver for linux. This program can be compiled either as a library
+ * or as a standalone program (-DUNIT_TEST). The driver will work with some
+ * TEMPer usb devices from RDing (www.PCsensor.com).
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ * * Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ *
+ * THIS SOFTWARE IS PROVIDED BY Robert Kavaler ''AS IS'' AND ANY
+ * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+ * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+ * DISCLAIMED. IN NO EVENT SHALL Robert kavaler BE LIABLE FOR ANY
+ * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+ * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+ * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+ * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ *
+ */
+
+typedef struct Temper Temper;
+
+
+Temper *TemperCreateFromDeviceNumber(int deviceNum, int timeout, int debug);
+void TemperFree(Temper *t);
+
+int TemperGetTemperatureInC(Temper *t, float *tempC);
+int TempterGetOtherStuff(Temper *t, char *buf, int length);
+
+#endif
diff --git a/.graveyard/tinc_multicast/retiolum b/.graveyard/tinc_multicast/retiolum
new file mode 100755
index 00000000..1d6b775f
--- /dev/null
+++ b/.graveyard/tinc_multicast/retiolum
@@ -0,0 +1,34 @@
+#!/bin/bash
+
+. /etc/rc.conf
+. /etc/rc.d/functions
+
+TINCNAME='retiolum'
+case "$1" in
+ start)
+ stat_busy "Starting retiolum Daemon"
+ success=0
+ /home/death/git/retiolum/.scripts/tinc_multicast/retiolum.py -n retiolum -T &
+ sleep 2
+ if [ $success -eq 0 ]; then
+ add_daemon retiolum
+ stat_done
+ else
+ stat_fail
+ fi
+ ;;
+ stop)
+ stat_busy "Stopping retiolum Daemon"
+ kill `cat /var/lock/retiolum.retiolum`
+ rm_daemon retiolum
+ stat_done
+ ;;
+ restart)
+ $0 stop
+ sleep 4
+ $0 start
+ ;;
+ *)
+ echo "usage $0 {start¦stop¦restart}"
+esac
+exit 0
diff --git a/.graveyard/tinc_multicast/retiolum.py b/.graveyard/tinc_multicast/retiolum.py
new file mode 100755
index 00000000..8cf57471
--- /dev/null
+++ b/.graveyard/tinc_multicast/retiolum.py
@@ -0,0 +1,349 @@
+#!/usr/bin/python2
+import sys, os, time, signal, socket, subprocess, thread, random, Queue, binascii, logging, hashlib, urllib2 #these should all be in the stdlib
+from optparse import OptionParser
+
+def pub_encrypt(hostname_t, text): #encrypt data with public key
+ logging.debug("encrypt: " + text)
+ if hostname_t.find("`") != -1: return(-1)
+ try:
+ enc_text = subprocess.os.popen("echo '" + text + "' | openssl rsautl -pubin -inkey /etc/tinc/" + netname + "/hosts/.pubkeys/" + hostname_t + " -encrypt | base64 -w0")
+ return(enc_text.read())
+ except:
+ return(-1)
+
+def priv_decrypt(enc_data): #decrypt data with private key
+ if enc_data.find("`") != -1: return(-1)
+ dec_text = subprocess.os.popen("echo '" + enc_data + "' | base64 -d | openssl rsautl -inkey /etc/tinc/" + netname + "/rsa_key.priv -decrypt")
+ return(dec_text.read())
+
+def address2hostfile(hostname, address): #adds address to hostsfile or restores it if address is empty
+ hostfile = "/etc/tinc/" + netname + "/hosts/" + hostname
+ addr_file = open(hostfile, "r")
+ addr_cache = addr_file.readlines()
+ addr_file.close()
+ if address != "":
+ addr_cache.insert(0, "Address = " + address + "\n")
+ addr_file = open(hostfile, "w")
+ addr_file.writelines(addr_cache)
+ addr_file.close
+ logging.info("sending SIGHUP to tinc deamon!")
+ tincd_ALRM = subprocess.call(["tincd -n " + netname + " --kill=HUP" ],shell=True)
+ else:
+ recover = subprocess.os.popen("tar xzf /etc/tinc/" + netname + "/hosts/hosts.tar.gz -C /etc/tinc/" + netname + "/hosts/ " + hostname)
+
+def findhostinlist(hostslist, hostname, ip): #finds host + ip in list
+ for line in xrange(len(hostslist)):
+ if hostname == hostslist[line][0] and ip == hostslist[line][1]:
+ return line
+ return -1 #nothing found
+
+def getHostname(netname):
+ tconf = open("/etc/tinc/" + netname + "/tinc.conf", "r")
+ feld = tconf.readlines()
+ tconf.close()
+ for x in feld:
+ if x.startswith("Name"):
+ return str(x.partition("=")[2].lstrip().rstrip("\n"))
+
+ print("hostname not found!")
+ return -1 #nothing found
+
+def get_hostfiles(url_files, url_md5sum):
+ try:
+ get_hosts_tar = urllib2.urlopen(url_files)
+ get_hosts_md5 = urllib2.urlopen(url_md5sum)
+ hosts_tar = get_hosts_tar.read()
+ hosts_md5 = get_hosts_md5.read()
+
+ if str(hosts_md5) == str(hashlib.md5(hosts_tar).hexdigest() + " hosts.tar.gz\n"):
+ hosts = open("/etc/tinc/" + netname + "/hosts/hosts.tar.gz", "w")
+ hosts.write(hosts_tar)
+ hosts.close()
+ else:
+ logging.error("hosts.tar.gz md5sum check failed!")
+ except:
+ logging.error("hosts file download failed!")
+
+
+####Thread functions
+
+
+def sendthread(sendfifo, ghostmode): #send to multicast, sends keep alive packets
+ while True:
+ try:
+ #{socket init start
+ ANY = "0.0.0.0"
+ SENDPORT = 23542
+ MCAST_ADDR = "224.168.2.9"
+ MCAST_PORT = 1600
+
+ sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM, socket.IPPROTO_UDP) #initalize socket with udp
+ sock.bind((ANY,SENDPORT)) #now bound to Interface and Port
+ sock.setsockopt(socket.IPPROTO_IP, socket.IP_MULTICAST_TTL, 255) #activate multicast
+ #}socket init end
+
+ if ghostmode == 0:
+
+ i = 9
+
+ while True:
+ i += 1
+ if not sendfifo.empty():
+ sock.sendto(sendfifo.get(), (MCAST_ADDR,MCAST_PORT) )
+ logging.info("send: sending sendfifo")
+ else:
+ time.sleep(1)
+ if i == 10:
+ sock.sendto("#Stage1#" + netname + "#" + hostname + "#", (MCAST_ADDR,MCAST_PORT) )
+ logging.debug("send: sending keep alive")
+ i = 0
+ else:
+ while True:
+ if not sendfifo.empty():
+ sock.sendto(sendfifo.get(), (MCAST_ADDR,MCAST_PORT) )
+ logging.info("send: sending sendfifo")
+ else:
+ time.sleep(1)
+
+ except:
+ logging.error("send: socket init failed")
+ time.sleep(10)
+
+
+
+def recvthread(timeoutfifo, authfifo): #recieves input from multicast, send them to timeout or auth
+ while True:
+ try:
+ ANY = "0.0.0.0"
+ MCAST_ADDR = "224.168.2.9"
+ MCAST_PORT = 1600
+
+ sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM, socket.IPPROTO_UDP) #create a UDP socket
+ sock.setsockopt(socket.SOL_SOCKET,socket.SO_REUSEADDR,1) #allow multiple sockets to use the same PORT number
+ sock.bind((ANY,MCAST_PORT)) #Bind to the port that we know will receive multicast data
+ sock.setsockopt(socket.IPPROTO_IP, socket.IP_MULTICAST_TTL, 255) #tell the kernel that we are a multicast socket
+
+
+ status = sock.setsockopt(socket.IPPROTO_IP,
+ socket.IP_ADD_MEMBERSHIP, #Tell the kernel that we want to add ourselves to a multicast group
+ socket.inet_aton(MCAST_ADDR) + socket.inet_aton(ANY)); #The address for the multicast group is the third param
+
+ while True:
+ while True:
+
+ try:
+ data, addr = sock.recvfrom(1024)
+ ip, port = addr
+ break
+ except socket.error, e:
+ pass
+
+ logging.debug("recv: got data")
+ dataval = data.split("#")
+ if dataval[0] == "":
+ if dataval[2] == netname:
+ if dataval[1] == "Stage1":
+ if dataval[3] != hostname:
+ timeoutfifo.put(["tst", dataval[3], ip])
+ logging.info("recv: got Stage1: writing data to timeout")
+ logging.debug("recv: ;tst;" + dataval[3] + ";" + ip)
+ if dataval[1] == "Stage2":
+ if dataval[3] == hostname:
+ authfifo.put([dataval[1], dataval[3], ip, dataval[4]])
+ logging.info("recv: got Stage2: writing data to auth")
+ logging.debug("recv: ;" + dataval[1] + ";" + dataval[3] + ";" + ip + ";" + dataval[4])
+ if dataval[1] == "Stage3":
+ if dataval[3] != hostname:
+ authfifo.put([dataval[1], dataval[3], ip, dataval[4]])
+ logging.info("recv: got Stage3: writing data to auth")
+ logging.debug("recv: ;" + dataval[1] + ";" + dataval[3] + ";" + ip + ";" + dataval[4])
+ except:
+ logging.error("recv: socket init failed")
+ time.sleep(10)
+
+def timeoutthread(timeoutfifo, authfifo): #checks if the hostname is already in the list, deletes timeouted nodes
+# hostslist = [] #hostname, ip, timestamp
+
+ while True:
+ if not timeoutfifo.empty():
+ curhost = timeoutfifo.get()
+ if curhost[0] == "add":
+ with hostslock:
+ hostslist.append([curhost[1], curhost[2], time.time()])
+ address2hostfile(curhost[1], curhost[2])
+ logging.info("adding host to hostslist")
+ elif curhost[0] == "tst":
+ with hostslock:
+ line = findhostinlist(hostslist, curhost[1], curhost[2])
+ if line != -1:
+ hostslist[line][2] = time.time()
+ logging.debug("timeout: refreshing timestamp of " + hostslist[line][0])
+ else:
+ authfifo.put(["Stage1", curhost[1], curhost[2]])
+ logging.info("timeout: writing to auth")
+
+ else:
+ i = 0
+ with hostslock:
+ while i < len(hostslist):
+ if time.time() - hostslist[i][2] > 60:
+ address2hostfile(hostslist[i][0], "")
+ hostslist.remove(hostslist[i])
+ logging.info("timeout: deleting dead host")
+ else:
+ i += 1
+ time.sleep(2)
+
+def auththread(authfifo, sendfifo, timeoutfifo): #manages authentication with clients (bruteforce sensitve, should be fixed)
+ authlist = [] #hostname, ip, Challenge, timestamp
+
+
+ while True:
+ try:
+ if not authfifo.empty():
+ logging.debug("auth: authfifo is not empty")
+ curauth = authfifo.get()
+ if curauth[0] == "Stage1":
+ line = findhostinlist(authlist, curauth[1], curauth[2])
+ if line == -1:
+ challengenum = random.randint(0,65536)
+ encrypted_message = pub_encrypt(curauth[1], "#" + hostname + "#" + str(challengenum) + "#")
+ authlist.append([curauth[1], curauth[2], challengenum, time.time()])
+ else:
+ encrypted_message = pub_encrypt(authlist[line][0], "#" + hostname + "#" + str(authlist[line][2]) + "#")
+ if encrypted_message == -1:
+ logging.info("auth: RSA Encryption Error")
+ else:
+ sendtext = "#Stage2#" + netname + "#" + curauth[1] + "#" + encrypted_message + "#"
+ sendfifo.put(sendtext)
+ logging.info("auth: got Stage1 sending now Stage2")
+ logging.debug("auth: " + sendtext)
+
+ if curauth[0] == "Stage2":
+ dec_message = priv_decrypt(curauth[3])
+ splitmes = dec_message.split("#")
+ if splitmes[0] == "":
+ encrypted_message = pub_encrypt(splitmes[1], "#" + splitmes[2] + "#")
+ if encrypted_message == -1:
+ logging.error("auth: RSA Encryption Error")
+ else:
+ sendtext = "#Stage3#" + netname + "#" + curauth[1] + "#" + encrypted_message + "#"
+ sendfifo.put(sendtext)
+ logging.info("auth: got Stage2 sending now Stage3")
+ logging.debug("auth: " + sendtext)
+
+ if curauth[0] == "Stage3":
+ line = findhostinlist(authlist, curauth[1], curauth[2])
+ if line != -1:
+ dec_message = priv_decrypt(curauth[3])
+ splitmes = dec_message.split("#")
+ logging.info("auth: checking challenge")
+ if splitmes[0] == "":
+ if splitmes[1] == str(authlist[line][2]):
+ timeoutfifo.put(["add", curauth[1], curauth[2]])
+ del authlist[line]
+ logging.info("auth: Stage3 checked, sending now to timeout")
+ else: logging.error("auth: challenge checking failed")
+ else: logging.error("auth: decryption failed")
+
+ else:
+ i = 0
+ while i < len(authlist):
+ if time.time() - authlist[i][3] > 120:
+ del authlist[i]
+ logging.info("auth: deleting timeoutet auth")
+ else:
+ i += 1
+ time.sleep(1)
+ except:
+ logging.error("auth: thread crashed")
+
+def process_start(): #starting of the process
+ #download and untar hostfile
+ logging.info("downloading hostfiles")
+ get_hostfiles("http://vpn.miefda.org/hosts.tar.gz", "http://vpn.miefda.org/hosts.md5") #Currently Hardcoded, should be editable by config or parameter
+ tar = subprocess.call(["tar -xzf /etc/tinc/" + netname + "/hosts/hosts.tar.gz -C /etc/tinc/" + netname + "/hosts/"], shell=True)
+
+ #initialize fifos
+ sendfifo = Queue.Queue() #sendtext
+ authfifo = Queue.Queue() #Stage{1, 2, 3} hostname ip enc_data
+ timeoutfifo = Queue.Queue() #State{tst, add} hostname ip
+
+ #start threads
+ thread_recv = thread.start_new_thread(recvthread, (timeoutfifo, authfifo))
+ thread_send = thread.start_new_thread(sendthread, (sendfifo, option.ghost))
+ thread_timeout = thread.start_new_thread(timeoutthread, (timeoutfifo, authfifo))
+ thread_auth = thread.start_new_thread(auththread, (authfifo, sendfifo, timeoutfifo))
+
+def process_restart(signum, frame):
+ logging.error("root: restarting process")
+ with hostslock:
+ del hostslist[:]
+ #download and untar hostfile
+ logging.info("downloading hostfiles")
+ get_hostfiles("http://vpn.miefda.org/hosts.tar.gz", "http://vpn.miefda.org/hosts.md5") #Currently Hardcoded, should be editable by config or parameter
+ tar = subprocess.call(["tar -xzf /etc/tinc/" + netname + "/hosts/hosts.tar.gz -C /etc/tinc/" + netname + "/hosts/"], shell=True)
+
+ logging.info("sending SIGHUP")
+ tincd_ALRM = subprocess.call(["tincd -n " + netname + " --kill=HUP" ],shell=True)
+
+def kill_process(signum, frame):
+ logging.error("got SIGINT/SIGTERM exiting now")
+ os.remove("/var/lock/retiolum." + netname)
+ if option.tinc != False:
+ stop_tincd = subprocess.call(["tincd -n " + netname + " -k"],shell=True)
+ sys.exit(0)
+
+#Program starts here!
+
+parser = OptionParser()
+parser.add_option("-n", "--netname", dest="netname", help="the netname of the tinc network")
+parser.add_option("-H", "--hostname", dest="hostname", default="default", help="your nodename, if not given, it will try too read it from tinc.conf")
+parser.add_option("-t", "--timeout", dest="timeout", default=65536, help="timeout after retiolum gets restartet, default is 65536")
+parser.add_option("-d", "--debug", dest="debug", default="0", help="debug level: 0,1,2,3 if empty debug level=0")
+parser.add_option("-g", "--ghost", action="store_true", dest="ghost", default=False, help="deactivates active sending, keeps you anonymous in the public network")
+parser.add_option("-T", "--Tinc", action="store_true", dest="tinc", default=False, help="starts tinc with this script")
+(option, args) = parser.parse_args()
+
+if option.netname == None:
+ parser.error("Netname is required, use -h for help!")
+if option.hostname == "default":
+ option.hostname = getHostname(option.netname)
+
+hostname = option.hostname
+netname = option.netname
+hostslist = []
+hostslock = thread.allocate_lock()
+
+#set process name
+if not os.path.exists("/var/lock/retiolum." + netname):
+ pidfile = open("/var/lock/retiolum." + netname, "w")
+ pidfile.write(str(os.getpid()))
+ pidfile.close()
+else:
+ logging.error("pidfile already exists")
+ sys.exit(0)
+
+#Logging stuff
+LEVELS = {'3' : logging.DEBUG,
+ '2' : logging.INFO,
+ '1' : logging.ERROR,
+ '0' : logging.CRITICAL}
+
+level_name = option.debug
+level = LEVELS.get(level_name, logging.NOTSET)
+logging.basicConfig(level=level)
+
+#normally tinc doesnt start with retiolum
+if option.tinc != False:
+ start_tincd = subprocess.call(["tincd -n " + netname ],shell=True)
+
+process_start()
+
+signal.signal(signal.SIGTERM, kill_process)
+signal.signal(signal.SIGINT, kill_process)
+signal.signal(signal.SIGUSR1, process_restart)
+
+while True:
+ time.sleep(float(option.timeout))
+ process_restart(0, 0)
diff --git a/.graveyard/util/bin/mobile.vvs.de b/.graveyard/util/bin/mobile.vvs.de
new file mode 100755
index 00000000..fdc4cca2
--- /dev/null
+++ b/.graveyard/util/bin/mobile.vvs.de
@@ -0,0 +1,167 @@
+#! /bin/sh
+#
+# NAME
+# mobile.vvs.de - web scraper for VVS departure information
+#
+# SYNOPSIS
+# mobile.vvs.de ORIGIN [HH [MM [YYmmdd]]]
+#
+# DESCRIPTION
+# The mobile.vvs.de utility fetches departure information from the
+# Internet and prints the results to standard output.
+#
+# OPERANDS
+# ORIGIN The point of departure.
+#
+# HH, MM, YYmmdd
+# The time and date of departure. Defaults to the current
+# time and date.
+#
+# STDIN
+# Not used.
+#
+# INPUT FILES
+# None.
+#
+# ENVIRONMENT VARIABLES
+# The following environment variables affect the execution of mobile.vvs.de:
+#
+# limit Limits the number of entries to be fetched.
+#
+# origin, H, M, Ymd
+# Provide defaults operands. If origin is set, then ORIGIN
+# becomes optional. The order of the operands doesn't change
+# by these variables. These variables are overridden by the
+# operands.
+#
+# ASYNCHRONOUS EVENTS
+# Defaults.
+#
+# STDOUT
+# The first line has the format:
+#
+# "\e[4m%s:%s %s\e[m\n", H, M, origin_real_name
+#
+# where H and M are the corresponding provided or default operands.
+# origin_real_name is the real name of the point of departure.
+#
+# The subsequent lines specify the departing means of transport.
+# Each line has the format:
+#
+# "%s %s → %s\n", time_of_departure, line_number, destination
+#
+# where time_of_departure is self-evident, and line_number and
+# destination identify the route and direction.
+#
+# STDERR
+# Not used.
+#
+# OUTPUT FILES
+# None.
+#
+# EXTENDED DESCRIPTION
+# None.
+#
+# EXIT STATUS
+# 0 A departure board could be fetched.
+#
+# 1 ORIGIN doesn't specify an acceptable point of departure.
+#
+# EXAMPLES
+# 1. Get the top three current departures at Stuttgart, Hauptbahnhof:
+#
+# $ limit=3 mobile.vvs.de hauptbahnhof
+#
+# FUTURE DIRECTIONS
+# None.
+#
+# BUGS
+# The format of STDOUT suffers from bit rot.
+#
+# SEE ALSO
+# vvs.de
+#
+# COPYRIGHT
+# All departure information is copyrighted by Verkehrs- und
+# Tarifverbund Stuttgart GmbH. The original copyright statement can
+# be obtained online at http://www.vvs.de/impressum .
+#
+# The following code is your fault.
+#
+set -euf
+
+ltrim() {
+ sed "s/^[${1-$symbols}]*//"
+}
+
+POST() {
+ ## TODO url-encode, trim
+ tr '\n' '&' | sed 's/&$//' |
+ w3m -config /dev/null -cols 256 -post /dev/stdin -dump "${1-$URI}"
+}
+
+limit=${limit-10}
+origin="${1-$origin}"
+H="${2-${H-`date +%H`}}"
+M="${3-${M-`date +%M`}}"
+Ymd="${4-${Ymd-`date +%Y%m%d`}}"
+
+URI='http://mobil.vvs.de/mobile/XSLT_DM_REQUEST'
+
+echo "
+sessionID=0
+requestID=0
+language=de
+locationServerActive=1
+useRealtime=1
+anySigWhenPerfectNoOtherMatches=1
+limit=$limit
+deleteAssignedStops_dm=1
+mode=direct
+convertCrossingsITKernel2LocationServer=1
+convertStopsPTKernel2LocationServer=1
+convertAddressesITKernel2LocationServer=1
+convertPOIsITKernel2LocationServer=1
+itdLPxx_dest=
+useAllStops=1
+maxAssignedStops=1
+itOptionsActive=1
+trITMOTvalue100=5
+ptOptionsActive=1
+useProxFootSearch=0
+w_regPrefAm=1
+w_objPrefAl=2
+w_objPrefAl=12
+itdLPxx_script=true
+place_dm=
+placeState_dm=empty
+nameState_dm=empty
+nameInfo_dm=invalid
+typeInfo_dm=invalid
+placeInfo_dm=invalid
+reducedAnyWithoutAddressObjFilter_dm=103
+reducedAnyPostcodeObjFilter_dm=64
+reducedAnyTooManyObjFilter_dm=2
+anyObjFilter_dm=126
+type_dm=any
+name_dm=$origin
+itdTimeHour=`echo $H | ltrim 0`
+itdTimeMinute=`echo $M | ltrim 0`
+itdDate=$Ymd
+" | POST "$URI" | sed -rn '
+ s/^Von:[^[:alpha:]]+(.*)$/'$H:$M' \1/p
+ /Haltestelle/,/^ *$/{
+ /Haltestelle|^ *$/!{
+ s/[[:space:]]*\[info\][[:space:]]*$//
+ p
+ }
+ }
+' | {
+ read REPLY
+ echo "$REPLY"
+ while read time dev no dest ; do
+ printf "$time %3s → %s\n" $no "$dest"
+ done
+}
+
+####
diff --git a/.graveyard/util/bin/vvs.de b/.graveyard/util/bin/vvs.de
new file mode 100755
index 00000000..3b7ccf93
--- /dev/null
+++ b/.graveyard/util/bin/vvs.de
@@ -0,0 +1,61 @@
+#! /bin/sh
+#
+# NAME
+# vvs.de - web scraper for VVS departure information
+#
+# SYNOPSIS
+# vvs.de ORIGIN DESTINATION [HH [MM]]
+#
+# EXAMPLES
+# $ vvs.de Hauptbahnhof Renningen 13 37
+#
+# CAVEATS
+# Acceptable operands have to be found by trial and error.
+#
+# BUGS
+# Probably bit rot.^_^
+#
+# SEE ALSO
+# mobile.vvs.de
+#
+# COPYRIGHT
+# All departure information is copyrighted by Verkehrs- und
+# Tarifverbund Stuttgart GmbH. The original copyright statement can
+# be obtained online at http://www.vvs.de/impressum .
+#
+# The following code is your fault.
+#
+set -euf
+
+# <form action="./efaanyfield/anyfield.php" method="post" id="efaForm">
+ #s/itdDateDay=/&${3-$itdDateDay}/
+ #s/itdDateMonth=/&${4-$itdDateMonth}/
+ #s/itdDateYear=/&${5-$itdDateYear}/
+
+vvs_tmp=/tmp/vvs.tmp
+curl -Ss http://www.vvs.de/fahrplan/ |
+sed -rn "/<!-- EFA -->/,/<!-- \/EFA -->/{
+ s.*<input.*name=\"([^\"]*)\".*value=\"([^\"]*)\".*/>.*\1=\2;T
+ /itdTripDateTimeDepArr=arr/b
+ s/(name_origin=).*/\1${1-$name_origin}/
+ s/(name_destination=).*/\1${2-$name_destination}/
+ ${3+s/(itdTimeHour=).*/\1${3-$itdTimeHour}/}
+ ${4+s/(itdTimeMinute=).*/\1${4-$itdTimeMinute}/}
+ p
+}" | tr '\n' '&' | sed 's/&$//' >"$vvs_tmp"
+
+
+#while read line ; do
+# test -z "$line" || echo "$line"
+#done >"$vvs_tmp"
+
+echo from: ${1-$name_origin}
+echo \ \ to: ${2-$name_destination}
+echo '-------------------------------------'
+w3m -cols 9423 -post "$vvs_tmp" \
+ -dump http://www.vvs.de/./efaanyfield/anyfield.php |
+sed -rn "
+ s/^ +[0-9]+ +([0-9]+:[0-9]+) +([0-9]+:[0-9]+) +([A-Z0-9 ,]+) .*$/\1 \2 \3/p
+" | tr -d ,
+
+####
diff --git a/.graveyard/util/t/mobile.vvs.de/smoke-test b/.graveyard/util/t/mobile.vvs.de/smoke-test
new file mode 100755
index 00000000..0b9e7960
--- /dev/null
+++ b/.graveyard/util/t/mobile.vvs.de/smoke-test
@@ -0,0 +1,5 @@
+#! /bin/sh
+set -euf
+mobile.vvs.de hauptbahnhof |
+ sed -n 'p;q' |
+ grep -q '\[4m[0-9][0-9]:[0-9][0-9] Stuttgart, Hauptbahnhof\[m'
diff --git a/.graveyard/util/t/vvs.de/smoke-test b/.graveyard/util/t/vvs.de/smoke-test
new file mode 100755
index 00000000..451270fe
--- /dev/null
+++ b/.graveyard/util/t/vvs.de/smoke-test
@@ -0,0 +1,11 @@
+#! /bin/sh
+set -euf
+
+vvs.de Hauptbahnhof Renningen 13 37 | {
+ read from && test "x$from" = 'xfrom: Hauptbahnhof'
+ read to && test "x$to" = 'xto: Renningen'
+ read sep && test "x$sep" = 'x-------------------------------------'
+ while read line; do
+ echo "$line" | grep -q '^[0-9][0-9]:[0-9][0-9] [0-9][0-9]:[0-9][0-9] '
+ done
+}
diff --git a/.graveyard/zoneminder/Makefile b/.graveyard/zoneminder/Makefile
new file mode 100644
index 00000000..27302715
--- /dev/null
+++ b/.graveyard/zoneminder/Makefile
@@ -0,0 +1,14 @@
+
+.PHONY: fix it so hard
+it: so
+so: it hard fix
+ apt-get install --yes zoneminder libv4l-0
+
+hard: /etc/sysctl.d/zoneminder.conf
+/etc/sysctl.d/zoneminder.conf: zoneminder.conf
+ cp $< $@
+ sysctl -p $@
+
+fix: zmdc.pl-LD_PRELOAD.patch
+ (cd /usr/bin && patch -N) < $< || :
+
diff --git a/.graveyard/zoneminder/zmdc.pl-LD_PRELOAD.patch b/.graveyard/zoneminder/zmdc.pl-LD_PRELOAD.patch
new file mode 100644
index 00000000..b00fc673
--- /dev/null
+++ b/.graveyard/zoneminder/zmdc.pl-LD_PRELOAD.patch
@@ -0,0 +1,10 @@
+--- /usr/bin/zmdc.pl 2011-05-23 22:28:57.505247793 +0200
++++ /usr/bin/zmdc.pl 2011-05-23 22:29:45.597248242 +0200
+@@ -62,6 +62,7 @@
+ $ENV{SHELL} = '/bin/sh' if exists $ENV{SHELL};
+ delete @ENV{qw(IFS CDPATH ENV BASH_ENV)};
+
++$ENV{LD_PRELOAD} = '/usr/lib/libv4l/v4l2convert.so';
+ my @daemons = (
+ 'zmc',
+ 'zma',
diff --git a/.graveyard/zoneminder/zoneminder.conf b/.graveyard/zoneminder/zoneminder.conf
new file mode 100644
index 00000000..1eec6fd9
--- /dev/null
+++ b/.graveyard/zoneminder/zoneminder.conf
@@ -0,0 +1,2 @@
+kernel.shmall = 134217728
+kernel.shmmax = 134217728
diff --git a/.travis.yml b/.travis.yml
new file mode 100644
index 00000000..b8e040ee
--- /dev/null
+++ b/.travis.yml
@@ -0,0 +1,18 @@
+language: c
+notifications:
+ irc: "chat.freenode.net#krebs_incoming"
+ on_success: change
+ on_failure: always
+ template:
+ - "painload/%{branch} %{commit} %{author}: %{message} %{build_url}"
+script: " make -C util test"
+before_install:
+ - sudo apt-get install bc -qq
+ - sudo apt-get install w3m -qq
+# stt-espeak test
+ - sudo apt-get install flac espeak -qq
+branches:
+ only:
+ - master
+git:
+ submodules: false
diff --git a/COPYING b/COPYING
new file mode 100644
index 00000000..5a8e3325
--- /dev/null
+++ b/COPYING
@@ -0,0 +1,14 @@
+ DO WHAT THE FUCK YOU WANT TO PUBLIC LICENSE
+ Version 2, December 2004
+
+ Copyright (C) 2004 Sam Hocevar <sam@hocevar.net>
+
+ Everyone is permitted to copy and distribute verbatim or modified
+ copies of this license document, and changing it is allowed as long
+ as the name is changed.
+
+ DO WHAT THE FUCK YOU WANT TO PUBLIC LICENSE
+ TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
+
+ 0. You just DO WHAT THE FUCK YOU WANT TO.
+
diff --git a/Kübelwagen/Makefile b/Kübelwagen/Makefile
new file mode 100644
index 00000000..9be84e13
--- /dev/null
+++ b/Kübelwagen/Makefile
@@ -0,0 +1,14 @@
+
+CC := gcc -std=c99
+CFLAGS := -D_XOPEN_SOURCE=500
+LIBS := $(shell pkg-config --cflags --libs jack) -lm
+
+.PHONY: all clean
+
+all: a.out
+
+clean:
+ rm -f a.out
+
+a.out: index.c
+ $(CC) $(CFLAGS) -o $@ $^ $(LIBS)
diff --git a/Kübelwagen/alarm b/Kübelwagen/alarm
new file mode 100755
index 00000000..a117c433
--- /dev/null
+++ b/Kübelwagen/alarm
@@ -0,0 +1,27 @@
+#! /bin/sh
+#
+# //Kübelwagen/alarm SLEEPARGS...
+#
+# where SLEEPARGS are passed to sleep(3)
+#
+set -euf
+cd $(dirname $(readlink -f $0))
+exec >&2
+
+make
+
+jackd -d alsa &
+trap "kill -0 $! && kill $!" EXIT INT
+
+for i in `seq 8000 1000 10000`; do
+ echo $i 100
+done | ./a.out 1
+echo 'if you heard that sound, then goto sleep..^_^'
+
+echo sleep "$@"
+sleep "$@"
+
+echo 'wake up!'
+while :; do
+ echo $(echo "($(od -tu -An -N 2 /dev/urandom)%1000)+500"|bc) $(echo "($(od -tu -An -N 2 /dev/urandom)%500)+100"|bc)
+done | ./a.out 1
diff --git a/Kübelwagen/index.c b/Kübelwagen/index.c
new file mode 100644
index 00000000..9a15c7c3
--- /dev/null
+++ b/Kübelwagen/index.c
@@ -0,0 +1,206 @@
+#include <stdlib.h>
+#include <string.h>
+#include <unistd.h>
+#include <stdio.h>
+#include <math.h>
+
+#include <jack/jack.h>
+
+const double PI = 3.14;
+
+/*Our output port*/
+jack_port_t *output_port;
+
+typedef jack_default_audio_sample_t sample_t;
+
+/*The current sample rate*/
+jack_nframes_t sr;
+
+/*samples in cycle*/
+jack_nframes_t samincy;
+/*the current offset*/
+long offset=0;
+
+/*frequency of our sound*/
+int tone = 262;
+int length = 1000000;
+
+char const *name = "<undefined>";
+
+int process (jack_nframes_t nframes, void *arg){
+ /*grab our output buffer*/
+ sample_t *out = (sample_t *) jack_port_get_buffer
+ (output_port, nframes);
+
+ int _tone = tone > 0 ? tone : 1;
+
+ /*For each required sample*/
+ for(jack_nframes_t i=0;i < nframes;i++){
+ /*Copy the sample at the current position in the cycle to the buffer*/
+
+ jack_nframes_t samincy = sr / _tone;
+ sample_t scale = 2 * PI / samincy;
+ out[i] = sin(offset * scale);
+
+ /*and increment the offset, wrapping to 0 if needed*/
+ /*(Dumb increment fixed thanks to Jussi Sainio)*/
+ offset++;
+ if(offset >= samincy)
+ offset = 0;
+ }
+
+ return 0;
+}
+
+int srate (jack_nframes_t nframes, void *arg){
+ printf ("the sample rate is now %lu/sec\n", nframes);
+ sr=nframes;
+ return 0;
+}
+
+void error (const char *desc){
+ fprintf (stderr, "JACK error: %s\n", desc);
+}
+
+void jack_shutdown (void *arg){
+ exit (1);
+}
+
+void usage(void) {
+ fprintf (stderr, "usage: %s [Hz [ms]]\n", name);
+}
+
+int main (int argc, char *argv[]){
+ jack_client_t *client;
+ const char **ports;
+
+ name = argv[0];
+
+ if (argc < 2) {
+ usage();
+ return 1;
+ }
+ if (argc >= 2) {
+ tone = atoi(argv[1]);
+ if (tone == 0) {
+ usage();
+ return 1;
+ }
+ fprintf(stderr, "tone: %dHz\n", tone);
+ if (argc >= 3) {
+ length = atoi(argv[2]) * 1000;
+ if (length == 0) {
+ usage();
+ return 1;
+ }
+ fprintf(stderr, "length: %dms\n", length/1000);
+ }
+ }
+
+ /* tell the JACK server to call error() whenever it
+ experiences an error. Notice that this callback is
+ global to this process, not specific to each client.
+
+ This is set here so that it can catch errors in the
+ connection process
+ */
+ jack_set_error_function (error);
+
+ /* try to become a client of the JACK server */
+
+ if ((client = jack_client_open(argv[0], JackNullOption, NULL)) == 0) {
+ fprintf (stderr, "jack server not running?\n");
+ return 1;
+ }
+
+ /* tell the JACK server to call `process()' whenever
+ there is work to be done.
+ */
+
+ jack_set_process_callback (client, process, 0);
+
+ /* tell the JACK server to call `srate()' whenever
+ the sample rate of the system changes.
+ */
+
+
+ jack_set_sample_rate_callback (client, srate, 0);
+
+ /* tell the JACK server to call `jack_shutdown()' if
+ it ever shuts down, either entirely, or if it
+ just decides to stop calling us.
+ */
+
+ jack_on_shutdown (client, jack_shutdown, 0);
+
+ /* display the current sample rate. once the client is activated
+ (see below), you should rely on your own sample rate
+ callback (see above) for this value.
+ */
+ printf ("engine sample rate: %lu\n", jack_get_sample_rate (client));
+
+
+ sr=jack_get_sample_rate (client);
+
+ /* create two ports */
+
+
+ output_port = jack_port_register (client, "output",
+ JACK_DEFAULT_AUDIO_TYPE, JackPortIsOutput, 0);
+
+ /* tell the JACK server that we are ready to roll */
+
+ if (jack_activate (client)) {
+ fprintf (stderr, "cannot activate client");
+ return 1;
+ }
+
+ /* connect the ports*/
+ if ((ports = jack_get_ports (client, NULL, NULL,
+ JackPortIsPhysical|JackPortIsInput)) == NULL) {
+ fprintf(stderr, "Cannot find any physical playback ports\n");
+ exit(1);
+ }
+
+ int i=0;
+ while(ports[i]!=NULL){
+ if (jack_connect (client, jack_port_name (output_port), ports[i])) {
+ fprintf (stderr, "cannot connect output ports\n");
+ }
+ i++;
+ }
+
+ free (ports);
+
+ //while (1) { //scanf("%i %i", &tone, &length) == 2) {
+ char buf[BUFSIZ];
+ while (fgets(buf, BUFSIZ, stdin) == buf) {
+ //if (strstr(buf, "Hz\n")) {
+ // sscanf(buf, "%i", &tone);
+ // fprintf(stderr, "%dHz\n", tone);
+ //}
+ //if (strstr(buf, "us\n")) {
+ // sscanf(buf, "%i", &length);
+ // fprintf(stderr, "%dus\n", length);
+ //}
+
+ int length = 0;
+ int c;
+ int pos = 0, n;
+ while ((c = sscanf(buf + pos, "%i%i%n", &tone, &length, &n)) == 2) {
+
+ if (length > 0) {
+ usleep(length * 1000);
+ }
+
+ pos += n;
+
+ fprintf(stderr, "%dHz %dms\n", tone, length);
+ }
+ }
+ ///* 3 seconds of bleep is plenty*/
+ ///usleep(length);
+ jack_client_close(client);
+
+ exit(0);
+}
diff --git a/Kübelwagen/playmobil b/Kübelwagen/playmobil
new file mode 100755
index 00000000..51ed70d6
--- /dev/null
+++ b/Kübelwagen/playmobil
@@ -0,0 +1,12 @@
+#! /bin/sh
+file=`mktemp`
+trap "rm -f $file" EXIT INT TERM
+
+gcc -xc -lm -o $file - <<EOF
+#include<math.h>
+main(t) {
+ for (t=${2-0};;++t) putchar($1);
+}
+EOF
+
+$file | aplay
diff --git a/Kübelwagen/sin.js b/Kübelwagen/sin.js
new file mode 100644
index 00000000..0f472715
--- /dev/null
+++ b/Kübelwagen/sin.js
@@ -0,0 +1,37 @@
+
+
+
+var x = 3000;
+
+var t = 0;
+var i = 0;
+var j = 0.00001;
+var t0 = new Date();
+(function rec () {
+
+ var t1 = new Date();
+ console.error('dt = ' + (t1 - t0));
+ t0 = t1;
+
+ if (x === 3000) {
+ x = 1000;
+ } else {
+ x = 3000;
+ };
+
+ console.log('2000 50 0 50 2000 50 0 50 ' + x + ' 100 0 0');
+ return setTimeout(rec, 1000);
+
+ i += 0.01;
+ console.log((2000 + Math.sin(i) * 1000 | 0) + ' 0');
+ return setTimeout(rec, 1);
+
+ var f = Math.abs(1000 + 500 * Math.tan( t ));
+ var scale = 1;
+
+ console.log(((f * scale)|0) + ' 0');
+
+ t++;
+ setTimeout(rec, 100);
+ //process.nextTick(rec);
+})();
diff --git a/Makefile b/Makefile
new file mode 100644
index 00000000..188e6ca2
--- /dev/null
+++ b/Makefile
@@ -0,0 +1,19 @@
+DIST = debian
+
+.PHONY: infest all
+all: select-target
+
+infest:
+ make -C infest
+
+install-core:
+ core/$(DIST)
+
+noise:
+ make -C noise infest
+streams:
+ make -C streams
+monitoring:
+ make -C Monitoring debian
+zoneminder:
+ make -C zoneminder fix it so hard
diff --git a/Reaktor/IRC/README.md b/Reaktor/IRC/README.md
new file mode 100644
index 00000000..63a0ebd2
--- /dev/null
+++ b/Reaktor/IRC/README.md
@@ -0,0 +1,49 @@
+# //Reaktor/IRC
+
+This component implements a remote shell daemon that exposes the
+executable files (which may be symlinks) below
+`//Reaktor/public_commands/` through IRC.
+
+## Security
+
+Access to the IRC server implies full access to all the exposed executable
+files. The daemon is executing the commands without dropping privileges.
+
+## Quickstart
+
+ #? /bin/sh
+ set -euf
+
+ export nick="$LOGNAME|$HOSTNAME"
+ export host=irc.freenode.org
+ export target='#tincspasm'
+
+ exec Reaktor/IRC/index
+
+## Environment variables
+
+The following environment variables are processed by `//Reaktor/IRC`:
+
+### nick
+
+Use a specific nickname.
+
+Optional if the node running `//Reaktor/IRC` is part of Retiolum, in
+which case it defaults to `Name` in `/etc/tinc/retiolum/tinc.conf`.
+
+### host and port
+
+Connect to a specific IRC server.
+
+Optional if the node running `//Reaktor/IRC` is part of Retiolum, in
+which case it defaults to `supernode` and `6667` (well, it always
+defaults to these two, but they only make science in Retiolum^_^).
+
+### target
+
+Join a specific channel.
+
+As always, this does the right thing for properly configured hosts: it
+uses the default `#retiolum`, which is the only really relevant
+channel.^_^
+
diff --git a/Reaktor/IRC/getconf.py b/Reaktor/IRC/getconf.py
new file mode 100644
index 00000000..168c908c
--- /dev/null
+++ b/Reaktor/IRC/getconf.py
@@ -0,0 +1,33 @@
+#getconf = make_getconf("dateiname.json")
+#getconf(key) -> value
+#oder error
+
+import imp
+import os
+
+
+def make_getconf(filename):
+
+
+ def getconf(prop, default_value=None):
+ prop_split = prop.split('.')
+ string = ''
+ config = load_config(filename)
+ #imp.reload(config)
+ tmp = config.__dict__
+ for pr in prop_split:
+ if pr in tmp:
+ tmp = tmp[pr]
+ else:
+ return default_value
+ return tmp
+
+ return getconf
+
+
+def load_config(filename):
+ dirname = os.path.dirname(filename)
+ modname, ext = os.path.splitext(os.path.basename(filename))
+ file, pathname, description = imp.find_module(modname, [ dirname ])
+ return imp.load_module(modname, file, pathname, description)
+
diff --git a/Reaktor/IRC/index b/Reaktor/IRC/index
new file mode 100755
index 00000000..af557a89
--- /dev/null
+++ b/Reaktor/IRC/index
@@ -0,0 +1,6 @@
+#! /bin/sh
+set -xeuf
+
+# cd //Reaktor
+cd $(dirname $(readlink -f $0))/..
+exec IRC/reaktor.py "$@"
diff --git a/Reaktor/IRC/ircasy.py b/Reaktor/IRC/ircasy.py
new file mode 100644
index 00000000..38f202fc
--- /dev/null
+++ b/Reaktor/IRC/ircasy.py
@@ -0,0 +1,205 @@
+#! /usr/bin/env python
+#
+# //Reaktor/IRC/asybot.py
+#
+from asynchat import async_chat as asychat
+from asyncore import loop
+from socket import AF_INET, SOCK_STREAM,gethostname
+from signal import SIGALRM, signal, alarm
+from datetime import datetime as date, timedelta
+from time import sleep
+from sys import exit
+from re import split, search, match
+from textwrap import TextWrapper
+
+import logging,logging.handlers
+
+# s/\x1B\[([0-9]{1,2}(;[0-9]{1,2})?)?[m|K]//g -- removes color codes
+
+
+class asybot(asychat):
+ def __init__(self, server, port, nickname, channels, realname=False, username=False, hostname=False, hammer_interval=10, alarm_timeout=300, kill_timeout=360, loglevel=logging.ERROR):
+ asychat.__init__(self)
+ #logger magic
+ self.log = logging.getLogger('asybot_' + nickname)
+ #hdlr = logging.handlers.SysLogHandler(facility=logging.handlers.SysLogHandler.LOG_DAEMON)
+ #formatter = logging.Formatter( '%(filename)s: %(levelname)s: %(message)s')
+ #hdlr.setFormatter(formatter)
+ #self.log.addHandler(hdlr)
+ logging.basicConfig(level = loglevel)
+
+ self.nickname = nickname
+
+ if realname:
+ self.realname = realname
+ else:
+ self.realname = nickname
+
+ if username:
+ self.username = username
+ else:
+ self.username = nickname
+
+ if hostname:
+ self.hostname = hostname
+ else:
+ self.hostname = nickname
+
+ self.retry = True
+ self.server = server
+ self.port = port
+ self.channels = channels
+ self.data = ''
+ self.myterminator = '\r\n'
+ self.set_terminator(self.myterminator.encode())
+ self.create_socket(AF_INET, SOCK_STREAM)
+ self.connect((self.server, self.port))
+ self.wrapper = TextWrapper(subsequent_indent=" ",width=400)
+
+ self.log.info('=> irc://%s@%s:%s/%s' % (self.nickname, self.server, self.port, self.channels))
+
+ # When we don't receive data for alarm_timeout seconds then issue a
+ # PING every hammer_interval seconds until kill_timeout seconds have
+ # passed without a message. Any incoming message will reset alarm.
+ self.alarm_timeout = alarm_timeout
+ self.hammer_interval = hammer_interval
+ self.kill_timeout = kill_timeout
+ try:
+ signal(SIGALRM, lambda signum, frame: self.alarm_handler())
+ except Exception as e:
+ print('asybot: ' + str(e))
+ self.reset_alarm()
+
+ def reset_alarm(self):
+ self.last_activity = date.now()
+ alarm(self.alarm_timeout)
+
+ def alarm_handler(self):
+ delta = date.now() - self.last_activity
+ if delta > timedelta(seconds=self.kill_timeout):
+ self.log.error('No data for %s. Giving up...' % delta)
+ self.handle_disconnect()
+ else:
+ self.log.error('No data for %s. PINGing server...' % delta)
+ self.push('PING :%s' % self.nickname)
+ alarm(self.hammer_interval)
+
+ def collect_incoming_data(self, data):
+ try:
+ self.data += data.decode()
+ except Exception as e:
+ print('error decoding message: ' + str(e));
+ print('current data: %s' % self.data);
+ print('received data: %s' % data);
+ print('trying to decode as latin1')
+ self.data += data.decode('latin1')
+
+ def found_terminator(self):
+ self.log.debug('<< %s' % self.data)
+
+ message = self.data
+ self.data = ''
+ try:
+ _, prefix, command, params, rest, _ = \
+ split('^(?::(\S+)\s)?(\S+)((?:\s[^:]\S*)*)(?:\s:(.*))?$', message)
+ except Exception as e:
+ print("cannot split message :(\nmsg: %s"%message)
+ return
+ params = params.split(' ')[1:]
+
+ if command == 'PING':
+ self.push('PONG :%s' % rest)
+ self.log.debug("Replying to servers PING with PONG :%s" %rest)
+ self.on_ping(prefix, command, params, rest)
+
+ elif command == 'PRIVMSG':
+ self.on_privmsg(prefix, command, params, rest)
+
+ elif command == 'INVITE':
+ self.on_invite(prefix, command, params, rest)
+
+ elif command == 'KICK':
+ self.on_kick(prefix, command, params, rest)
+
+ elif command == 'JOIN':
+ self.on_join(prefix, command, params, rest)
+
+ elif command == '433':
+ # ERR_NICKNAMEINUSE, retry with another name
+ self.on_nickinuse(prefix, command, params, rest)
+
+ elif command == '376':
+ self.on_welcome(prefix, command, params, rest)
+
+ self.reset_alarm()
+
+ def push(self, message):
+ try:
+ self.log.debug('>> %s' % message)
+ msg = (message + self.myterminator).encode()
+ self.log.debug('>> %s' % msg)
+ asychat.push(self, msg)
+ except:
+ pass
+
+ def disconnect(self):
+ self.push('QUIT')
+ self.close()
+
+ def reconnect(self):
+ if self.connected:
+ self.push('QUIT')
+ self.close()
+ self.create_socket(AF_INET, SOCK_STREAM)
+ self.connect((self.server, self.port))
+
+ def handle_connect(self):
+ self.push('NICK %s' % self.nickname)
+ self.push('USER %s %s %s :%s' %
+ (self.username, self.hostname, self.server, self.realname))
+
+ def handle_disconnect(self):
+ if self.retry:
+ self.reconnect()
+ else:
+ self.log.error('No retry set, giving up')
+
+ def PRIVMSG(self, target, text):
+ for line in self.wrapper.wrap(text):
+ msg = 'PRIVMSG %s :%s' % (','.join(target), line)
+ self.log.info(msg)
+ self.push(msg)
+ sleep(1)
+
+ def ME(self, target, text):
+ self.PRIVMSG(target, ('ACTION ' + text + ''))
+
+ def on_welcome(self, prefix, command, params, rest):
+ self.push('JOIN %s' % ','.join(self.channels))
+
+ def on_kick(self, prefix, command, params, rest):
+ self.log.debug(params)
+ if params[-1] == self.nickname:
+ for chan in params[:-1]:
+ self.channels.remove(chan)
+
+ def on_join(self, prefix, command, params, rest):
+ pass
+
+ def on_ping(self, prefix, command, params, rest):
+ pass
+
+ def on_privmsg(self, prefix, command, params, rest):
+ pass
+
+ def on_invite(self, prefix, command, params, rest):
+ pass
+
+ def on_nickinuse(self, prefix, command, params, rest):
+ regex = search('(\d+)$', self.nickname)
+ if regex:
+ theint = int(regex.group(0))
+ self.nickname = self.nickname.strip(str(theint)) + str(theint + 1)
+ else:
+ self.nickname = self.nickname + '0'
+ self.handle_connect()
diff --git a/Reaktor/IRC/reaktor.py b/Reaktor/IRC/reaktor.py
new file mode 100755
index 00000000..124fa017
--- /dev/null
+++ b/Reaktor/IRC/reaktor.py
@@ -0,0 +1,125 @@
+#!/usr/bin/env python3
+import os
+from ircasy import asybot
+from asyncore import loop
+from translate_colors import translate_colors
+import shlex
+from re import split, search, match
+
+default_config = './config.py'
+from getconf import make_getconf
+getconf = None
+
+import logging,logging.handlers
+log = logging.getLogger('asybot')
+#hdlr = logging.handlers.SysLogHandler(address='/dev/log', facility=logging.handlers.SysLogHandler.LOG_DAEMON)
+#formatter = logging.Formatter( '%(filename)s: %(levelname)s: %(message)s')
+#hdlr.setFormatter(formatter)
+#log.addHandler(hdlr)
+
+
+
+class Reaktor(asybot):
+ def __init__(self,config=default_config):
+ self.config = config
+ log.info("using config file %s"%(config))
+ asybot.__init__(self, getconf('irc_server'), getconf('irc_port'), getconf('irc_nickname'), getconf('irc_channels'), hammer_interval=getconf('irc_hammer_interval'), alarm_timeout=getconf('irc_alarm_timeout'), kill_timeout=getconf('irc_kill_timeout'))
+
+ def is_admin(self,prefix):
+ try:
+ with open(getconf('auth_file')) as f:
+ for line in f:
+ if line.strip() == prefix:
+ return True
+ except Exception as e:
+ log.info(e)
+ return False
+
+ def on_join(self, prefix, command, params, rest):
+ for command in getconf('on_join', []):
+ self.execute_command(command, None, prefix, params)
+
+ def on_ping(self, prefix, command, params, rest):
+ for command in getconf('on_ping', []):
+ prefix = '!' # => env = { _prefix: '!', _from: '' }
+ params = command.get('targets') # TODO why don't we get a list here and use ','.join() ?
+ self.execute_command(command, None, prefix, params)
+
+ def on_privmsg(self, prefix, command, params, rest):
+ for command in getconf('commands'):
+ y = match(command['pattern'], rest)
+ if y:
+ if not self.is_admin(prefix):
+ self.PRIVMSG(params,'unauthorized!')
+ else:
+ return self.execute_command(command, y, prefix, params)
+
+ for command in getconf('public_commands'):
+ y = match(command['pattern'], rest)
+ if y:
+ return self.execute_command(command, y, prefix, params)
+
+
+ def execute_command(self, command, match, prefix, target):
+ from os.path import realpath, dirname, join
+ from subprocess import Popen as popen, PIPE
+ from time import time
+
+ #TODO: allow only commands below ./commands/
+ exe = join(dirname(realpath(dirname(__file__))), command['argv'][0])
+ myargv = [exe] + command['argv'][1:]
+ try:
+ if match and match.groupdict().get('args', None):
+ myargv += shlex.split(match.groupdict()['args'])
+ except:
+ log.info("cannot parse args!")
+
+ cwd = getconf('workdir')
+ if not os.access(cwd,os.W_OK):
+ log.error("Workdir '%s' is not Writable! Falling back to root dir"%cwd)
+ cwd = "/"
+
+ env = command.get('env', {})
+ env['_prefix'] = prefix
+ env['_from'] = prefix.split('!', 1)[0]
+
+ env.update(os.environ)
+ log.debug('self:' +self.nickname)
+ # when receiving /query, answer to the user, not to self
+ if self.nickname in target:
+ target.remove(self.nickname)
+ target.append(env['_from'])
+ log.debug('target:' +str(target))
+
+ start = time()
+ try:
+ log.debug("Running : %s"%str(myargv))
+ log.debug("Environ : %s"%(str(env)))
+ p = popen(myargv, bufsize=1, stdout=PIPE, stderr=PIPE, env=env, cwd=cwd)
+ except Exception as error:
+ self.ME(target, 'brain damaged')
+ log.error('OSError@%s: %s' % (myargv, error))
+ return
+ pid = p.pid
+ for line in iter(p.stdout.readline, ''.encode()):
+ try:
+ self.PRIVMSG(target, translate_colors(line.decode()))
+ except Exception as error:
+ log.error('no send: %s' % error)
+ log.debug('%s stdout: %s' % (pid, line))
+ p.wait()
+ elapsed = time() - start
+ code = p.returncode
+ log.info('command: %s -> %s in %d seconds' % (myargv, code, elapsed))
+ [log.debug('%s stderr: %s' % (pid, x)) for x in p.stderr.readlines()]
+
+ if code != 0:
+ self.ME(target, 'mimimi')
+
+if __name__ == "__main__":
+ import sys
+ conf = sys.argv[1] if len(sys.argv) == 2 else default_config
+ getconf = make_getconf(conf)
+ logging.basicConfig(level = logging.DEBUG if getconf('debug') else logging.INFO)
+ Reaktor(conf)
+ loop()
diff --git a/Reaktor/IRC/translate_colors.py b/Reaktor/IRC/translate_colors.py
new file mode 100644
index 00000000..bd716618
--- /dev/null
+++ b/Reaktor/IRC/translate_colors.py
@@ -0,0 +1,31 @@
+
+
+COLOR_MAP = {
+ "\x1b[0m" : "\x0F", # reset
+ "\x1b[37m" : "\x0300",
+ "\x1b[30m" : "\x0301",
+ "\x1b[34m" : "\x0302",
+ "\x1b[32m" : "\x0303",
+ "\x1b[31m" : "\x0304",
+ "\x1b[33m" : "\x0305",
+ "\x1b[35m" : "\x0306",
+ "\x1b[33m" : "\x0307",
+ "\x1b[33m" : "\x0308",
+ "\x1b[32m" : "\x0309",
+ "\x1b[36m" : "\x0310",
+ "\x1b[36m" : "\x0311",
+ "\x1b[34m" : "\x0312",
+ "\x1b[31m" : "\x0313",
+ "\x1b[30m" : "\x0314",
+ "\x1b[37m" : "\x0315",
+ "\x1b[1m" : "\x02", # bold on
+ "\x1b[22m" : "\x02" # bold off
+ }
+def translate_colors (line):
+ for color,replace in COLOR_MAP.items():
+ line = line.replace(color,replace)
+ return line
+
+if __name__ == "__main__":
+ import sys
+ print (translate_colors(sys.stdin.read()))
diff --git a/Reaktor/Makefile b/Reaktor/Makefile
new file mode 100644
index 00000000..2241dba6
--- /dev/null
+++ b/Reaktor/Makefile
@@ -0,0 +1,23 @@
+submodules = gxfr dnsrecon bxfr whatweb
+security_modules = subdomains revip whatweb
+
+all: init all-mods
+
+init: init-submodules $(submodules)
+init-submodules:
+ cd ..;git submodule init; git submodule update
+$(submodules):
+ cd repos/$@ ; git checkout master;git pull
+
+all-mods: $(addprefix public_commands/,$(security_modules))
+public_commands/%:commands/%
+ ln -s ../$< $@
+
+debian-autostart:
+ useradd reaktor ||:
+ cp startup/init.d/reaktor-debian /etc/init.d/reaktor
+ cp startup/conf.d/reaktor /etc/default/
+ update-rc.d reaktor defaults
+supervisor-autostart:
+ useradd reaktor ||:
+ cp startup/supervisor/Reaktor.conf /etc/supervisor/conf.d/
diff --git a/Reaktor/README.md b/Reaktor/README.md
new file mode 100644
index 00000000..a581c6bd
--- /dev/null
+++ b/Reaktor/README.md
@@ -0,0 +1,26 @@
+# //Reaktor
+
+## Quickstart
+
+ ## 1. create a dedicated user
+ useradd reaktor
+
+ ## 2. marry Reaktor with /sbin/init
+
+ ## 2a. /etc/inittab-like foo
+ echo 10:2345:respawn:/bin/su reaktor -c /krebs/Reaktor/index >>/etc/inittab
+ # or 10:2345:respawn:/usr/bin/sudo -u reaktor /krebs/Reaktor/index
+ # if reaktor's shell is /bin/false or similar
+ # [check with e.g getent passwd reaktor]
+ telinit q
+
+ ## 2b. upstart-like foo
+
+ cat > /etc/init/Reaktor.conf <<EOF
+ description "Krebs Reaktor"
+ author "The Ministerium"
+ stop on runlevel [016]
+ respawn
+ exec /usr/bin/sudo -u reaktor /krebs/Reaktor/index
+ EOF
+ start Reaktor
diff --git a/Reaktor/TODO b/Reaktor/TODO
new file mode 100644
index 00000000..23887cf3
--- /dev/null
+++ b/Reaktor/TODO
@@ -0,0 +1,5 @@
+commands/caps: merge load_config with IRC/getconf.py
+
+getconf: reload inotify
+
+check own username
diff --git a/Reaktor/UDP/README b/Reaktor/UDP/README
new file mode 100644
index 00000000..587c8046
--- /dev/null
+++ b/Reaktor/UDP/README
@@ -0,0 +1,52 @@
+# Specifications
+From 2011-09-16:
+## Use Case
+ [
+ {
+ "port": 1337,
+ "pattern": "XXYY",
+ "comment" : "does the right thing",
+ "action" : {
+ "POST": {
+ "url" : "xyz",
+ "data" : "abc"
+ }
+ }
+ }
+ ]
+## Head definition
+ {
+ "bind_addr" : "127.0.0.1",
+ "port" : 1234,
+ "pattern" : "XXZZ",
+ "action" : { },
+ }
+bind is an optional entry which lets the user define a bind address for the server.
+terminator is optional which lets the user define the EOM terminator.
+
+## Actions
+### POST
+"POST" : {
+ "url" : "http://euer.krebsco.de/",
+ "data" : "{ \"something\" : \"else\" }"
+ }
+
+### PROCESS
+Process is taken from //hyper/process/test/bc.json - rev:a7fd3f
+
+stdout/stderr are optional and if left away data will be written to real stdout/stderr
+in the process in envp => "payload" will be allocated for the given payload from the network
+
+ "PROCESS" : {
+ {
+ "path": "/usr/bin/bc",
+ "argv": [
+ "bc"
+ ],
+ "envp": {
+ "was": "geht",
+ },
+ "stdout": "uri:///path/to/somewhere",
+ "stderr": "uri:///path/to/somewhere"
+ }
+ }
diff --git a/Reaktor/UDP/config b/Reaktor/UDP/config
new file mode 100644
index 00000000..623c721c
--- /dev/null
+++ b/Reaktor/UDP/config
@@ -0,0 +1,15 @@
+[
+ {
+ "comment" : "listener for licht.shack",
+ "bind_addr" : "0.0.0.0",
+ "port" : 2342,
+ "pattern" : "",
+ "action" : {
+ "PROCESS" : {
+ "path" : "/krebs/Reaktor/udp_commands/licht_resolver",
+ "argv" : [ ],
+ "envp" : { }
+ }
+ }
+ }
+]
diff --git a/Reaktor/UDP/index b/Reaktor/UDP/index
new file mode 100755
index 00000000..ffe3d6b1
--- /dev/null
+++ b/Reaktor/UDP/index
@@ -0,0 +1,94 @@
+#!/usr/bin/python
+
+import asyncore, socket
+import logging,subprocess
+import re
+import json
+log = logging.getLogger('ubot')
+
+def enable_syslog(logger):
+ import logging.handlers as handlers
+ from logging import Formatter
+ hdlr = handlers.SysLogHandler(
+ facility=handlers.SysLogHandler.LOG_DAEMON)
+ formatter = Formatter(
+ '%(filename)s: %(levelname)s: %(message)s')
+ hdlr.setFormatter(formatter)
+ logger.addHandler(hdlr)
+
+from twisted.internet.protocol import DatagramProtocol
+from twisted.internet import reactor
+from twisted.application.internet import MulticastServer
+from socket import SOL_SOCKET,SO_BROADCAST
+class ubot(DatagramProtocol):
+# def startProtocol(self):
+# log.info("Starting Listener for Multicast")
+# self.transport.joinGroup("255.255.255.255")
+
+ """ UDP Bot """
+ def startProtocol(self):
+ log.info("starting Protocol at host (%s)" % self.bind_addr)
+ #self.transport.
+ if self.bind_addr != "255.255.255.255":
+ self.transport.joinGroup(self.bind_addr)
+ else:
+ self.transport.socket.setsockopt(SOL_SOCKET,SO_BROADCAST,True)
+ def __init__(self, pattern,action,bind_addr,**kwargs):
+ #DatagramProtocol.__init__(self)
+ self.data = ''
+ self.pattern = pattern
+ self.action = action
+ self.bind_addr = bind_addr
+
+ def datagramReceived(self,datagram,addr):
+ self.data = datagram
+ log.debug('<< %s' % self.data)
+ if self.find_pattern():
+ self.start_action()
+
+ def find_pattern(self):
+ """ returns true if own pattern is found"""
+ log.debug("Pattern is %s" %self.pattern)
+ ret = re.search(self.pattern,self.data)
+ if ret:
+ log.info("Match \"%s\" with pattern \"%s\"" % ((ret.string.strip()),self.pattern))
+ else:
+ log.info("No Match")
+ return ret
+
+
+ def start_action(self):
+ """ runs all the defined actions"""
+ log.debug("Actions: %s" % str(self.action))
+ self.start_process()
+ self.start_post()
+
+ def start_process(self):
+ try:
+ act = self.action["PROCESS"]
+ proc = []
+ proc.append(act["path"])
+ proc.extend(act["argv"])
+
+ env = act["envp"]
+ env["payload"] = json.dumps(self.data)
+ log.info("Starting Process: %s (env: %s)" % (proc,env))
+ subprocess.Popen(proc,env=env)
+ except Exception as e:
+ log.error(e)
+ def start_post(self):
+ pass
+
+def load_conf(conf_file):
+ return json.load(open(conf_file))
+
+
+if __name__ == "__main__":
+ import os
+ #enable_syslog(log)
+ HERE = os.path.dirname(os.path.realpath(__file__))
+ lol = logging.DEBUG if os.environ.get('debug',False) else logging.INFO
+ logging.basicConfig(level=lol)
+ for i in load_conf("%s/config" %HERE):
+ reactor.listenMulticast(i["port"], ubot(**i))
+ reactor.run()
diff --git a/Reaktor/auth.lst b/Reaktor/auth.lst
new file mode 100755
index 00000000..8b137891
--- /dev/null
+++ b/Reaktor/auth.lst
@@ -0,0 +1 @@
+
diff --git a/Reaktor/commands/badcommand b/Reaktor/commands/badcommand
new file mode 100755
index 00000000..c59b4d1c
--- /dev/null
+++ b/Reaktor/commands/badcommand
@@ -0,0 +1 @@
+#? //retard
diff --git a/Reaktor/commands/caps b/Reaktor/commands/caps
new file mode 100755
index 00000000..ac8cc66d
--- /dev/null
+++ b/Reaktor/commands/caps
@@ -0,0 +1,13 @@
+#! /usr/bin/env python3
+import imp
+import os
+
+def load_config(filename):
+ dirname = os.path.dirname(filename)
+ modname, ext = os.path.splitext(os.path.basename(filename))
+ file, pathname, description = imp.find_module(modname, [ dirname ])
+ return imp.load_module(modname, file, pathname, description)
+
+config = load_config(os.environ['config_filename'])
+print('Private: '+' '.join(filter(None,[ x.get('capname',None) for x in config.commands])))
+print('Public: '+' '.join(filter(None,[ x.get('capname',None) for x in config.public_commands])))
diff --git a/Reaktor/commands/hello b/Reaktor/commands/hello
new file mode 100755
index 00000000..05ed79b5
--- /dev/null
+++ b/Reaktor/commands/hello
@@ -0,0 +1,2 @@
+#! /bin/sh
+echo "Hello${*+, $*}!"
diff --git a/Reaktor/commands/identify b/Reaktor/commands/identify
new file mode 100755
index 00000000..c2fb2c58
--- /dev/null
+++ b/Reaktor/commands/identify
@@ -0,0 +1,22 @@
+#!/usr/bin/env python
+import imp
+import os,sys
+
+def load_config(filename):
+ dirname = os.path.dirname(filename)
+ modname, ext = os.path.splitext(os.path.basename(filename))
+ file, pathname, description = imp.find_module(modname, [ dirname ])
+ return imp.load_module(modname, file, pathname, description)
+
+config = load_config(os.environ['config_filename'])
+
+with open(config.admin_file) as f:
+ for line in f:
+ nick,secret = line.split()
+ if sys.argv[1] == secret:
+ print("identified you as %s!"%nick)
+ with open(config.auth_file,'a+') as g:
+ g.write(os.environ['_prefix'] +"\n")
+ sys.exit(0)
+
+print("unable to identify you, sorry")
diff --git a/Reaktor/commands/licht_resolver b/Reaktor/commands/licht_resolver
new file mode 100755
index 00000000..5bdb6510
--- /dev/null
+++ b/Reaktor/commands/licht_resolver
@@ -0,0 +1,37 @@
+#! /usr/bin/python
+# -*- coding: utf-8 -*-
+
+map = {
+ 'shackspace': {
+ 'device': {
+ 0: 'Licht0, Zickenzone; Fenster',
+ 1: 'Licht1, Sofaecke; Fenster',
+ 2: 'Licht2, Zickenzone; Ghetto',
+ 3: 'Licht3, Sofaecke; Ghetto',
+ 4: 'Licht4, Richtung Getränkelager',
+ 5: 'Licht5, Porschekonsole',
+ 6: 'Licht6, Tomatenecke',
+ 7: 'Licht7, Ghetto',
+ 10: 'Hauptschalter'
+ },
+ 'state': {
+ 0: 'aus',
+ 1: 'an',
+ 2: 'aus in T-10s'
+ },
+ '->': 'ist'
+ }
+}
+
+from struct import unpack
+import json
+from os import environ as env
+
+location = "shackspace"
+
+map = map[location]
+print (env["payload"]+"")
+did, sid= unpack('BB', json.loads(env['payload']))
+device,state = map['device'][did], map['state'][sid]
+arrow = map['->']
+print ' '.join([device, arrow, state])
diff --git a/Reaktor/commands/nag b/Reaktor/commands/nag
new file mode 100755
index 00000000..f2141392
--- /dev/null
+++ b/Reaktor/commands/nag
@@ -0,0 +1,68 @@
+#! /bin/sh
+set -euf
+if test -e nag.hosts.ls; then
+ echo "nag seems to run already... if not, then delete $workdir/nag.*, please"
+ exit 23
+fi
+
+trap 'rm -f nag.hosts.ls nag.services.ls nag.patch' EXIT INT QUIT
+
+
+# usage: git_pull_output_filter REPO_NAME
+git_pull_output_filter() {
+ sed -n 's/^ [0-9]\+ file change/'"$1"': &/p'
+}
+
+
+if ! test -d nag.hosts; then
+ git clone "$hosts_repo" nag.hosts
+else
+ (cd nag.hosts && git pull) | git_pull_output_filter hosts
+fi
+
+if ! test -d nag.services; then
+ git clone "$services_repo" nag.services
+else
+ (cd nag.services && git pull) | git_pull_output_filter services
+fi
+
+
+(cd nag.hosts && ls | sort) > nag.hosts.ls
+(cd nag.services && ls | sort) > nag.services.ls
+
+diff -u nag.hosts.ls nag.services.ls > nag.patch || :
+
+missing_services=$(sed -n '1d;2d;s/^-\(.*\)/\1/p' nag.patch | tr '\n' ' ')
+obsolete_services=$(sed -n '1d;2d;s/^+\(.*\)/\1/p' nag.patch | tr '\n' ' ')
+
+if test "${inspect_services-false}" = true; then
+ missing_owners=$(set +f; cd nag.services && grep '^owner:$' * | cut -d: -f1)
+ missing_mailtos=$(set +f; cd nag.services && grep '^mailto:$' * | cut -d: -f1)
+fi
+
+nag_missing_services='missing services'
+nag_obsolete_services='obsolete services'
+nag_missing_owners='services with missing owner entry'
+nag_missing_mailtos='services with missing mailto entry'
+
+#
+# output
+#
+did_nag=false
+for i in \
+ missing_services \
+ obsolete_services \
+ missing_owners \
+ missing_mailtos
+do
+ eval "offenders=\${$i-}; nag_msg=\$nag_$i"
+ if test -n "$offenders"; then
+ echo $nag_msg: $offenders
+ did_nag=true
+ fi
+done
+
+# if asked directly, answer if there is nothing to nag about
+if test $did_nag = false -a -n "${_from:-}";then
+ echo "nothing to nag about"
+fi
diff --git a/Reaktor/commands/reload b/Reaktor/commands/reload
new file mode 100755
index 00000000..bfa1f041
--- /dev/null
+++ b/Reaktor/commands/reload
@@ -0,0 +1,2 @@
+#! /bin/sh
+exec pkill -U reaktor
diff --git a/Reaktor/commands/respond b/Reaktor/commands/respond
new file mode 100755
index 00000000..e23dc3ef
--- /dev/null
+++ b/Reaktor/commands/respond
@@ -0,0 +1,2 @@
+#!/bin/sh
+printf '%s\n' "${_from}: $*"
diff --git a/Reaktor/commands/rev b/Reaktor/commands/rev
new file mode 100755
index 00000000..a8681ab9
--- /dev/null
+++ b/Reaktor/commands/rev
@@ -0,0 +1,2 @@
+#! /bin/sh
+git log -1 --format="%h by %an, %ar"
diff --git a/Reaktor/commands/revip b/Reaktor/commands/revip
new file mode 120000
index 00000000..e2c3b7ab
--- /dev/null
+++ b/Reaktor/commands/revip
@@ -0,0 +1 @@
+../repos/revip/revip \ No newline at end of file
diff --git a/Reaktor/commands/say b/Reaktor/commands/say
new file mode 100755
index 00000000..8b83c056
--- /dev/null
+++ b/Reaktor/commands/say
@@ -0,0 +1,2 @@
+#!/bin/sh
+printf '%s\n' "$*"
diff --git a/Reaktor/commands/subdomains b/Reaktor/commands/subdomains
new file mode 120000
index 00000000..0489555f
--- /dev/null
+++ b/Reaktor/commands/subdomains
@@ -0,0 +1 @@
+../repos/consolidate_dns/index \ No newline at end of file
diff --git a/Reaktor/commands/taken b/Reaktor/commands/taken
new file mode 100755
index 00000000..b8beba68
--- /dev/null
+++ b/Reaktor/commands/taken
@@ -0,0 +1,28 @@
+#!/bin/sh
+#!/bin/bash
+
+# domainavailable
+# Fast, domain name checker to use from the shell
+# Use globs for real fun:
+# domainavailable blah{1..3}.{com,net,org,co.uk}
+# Inspired by foca / giles:
+# http://gilesbowkett.blogspot.com/2009/02/simple-bash-domain-availability.html
+
+for d in $@;
+do
+if host "$d" | grep "NXDOMAIN" >&/dev/null; then
+ w=$(whois "$d")
+ if ! test "$?" -eq 0 ;then
+ echo "$d - whois not available"
+ elif echo "$w" | grep -Ei "(No match|NOT FOUND|Status: free)" >&/dev/null; then
+ echo "$d available";
+ elif echo "$w"| grep -Ei "(Status: invalid)" >&/dev/null ;then
+ echo "$d invalid"
+ else
+ echo "$d taken";
+ fi
+else
+ echo "$d taken";
+fi
+done
+exit 0
diff --git a/Reaktor/commands/tell-on_join b/Reaktor/commands/tell-on_join
new file mode 100755
index 00000000..2dbff41a
--- /dev/null
+++ b/Reaktor/commands/tell-on_join
@@ -0,0 +1,19 @@
+#! /bin/sh
+set -euf
+
+# require flock from util-linux
+if test "${FLOCK-}" != "$state_file"; then
+ exec env FLOCK="$state_file" flock "$state_file" "$0" "$@"
+fi
+
+to="$_from"
+
+# print messages
+sed -n '/^'"$to"' /{
+ s/^\([^ ]\+\) \([^ ]\+\) <\([^>]\+\)> \(.*\)/\1: \4 2-- \2, \3/p
+}' "$state_file"
+
+# delete messages
+sed -i '/^'"$to"' /{
+ d
+}' "$state_file"
diff --git a/Reaktor/commands/tell-on_privmsg b/Reaktor/commands/tell-on_privmsg
new file mode 100755
index 00000000..5d0aff41
--- /dev/null
+++ b/Reaktor/commands/tell-on_privmsg
@@ -0,0 +1,17 @@
+#! /bin/sh
+set -euf
+
+# require flock from util-linux
+if test "${FLOCK-}" != "$state_file"; then
+ exec env FLOCK="$state_file" flock "$state_file" "$0" "$@"
+fi
+
+from="$_prefix"
+to="$1"; shift
+msg="$*"
+date=$(date)
+
+# TODO tell now, if already joined
+printf '%s %s <%s> %s\n' "$to" "$from" "$date" "$msg" >> "$state_file"
+
+echo 'Consider it noted.' # that's what lambdabot says...
diff --git a/Reaktor/commands/uptime b/Reaktor/commands/uptime
new file mode 100755
index 00000000..7ff64168
--- /dev/null
+++ b/Reaktor/commands/uptime
@@ -0,0 +1,8 @@
+#! /bin/sh
+#
+# //Reactor/commands/uptime - IRC-optimized uptime output
+#
+uptime | sed '
+ s/^\(.*\) up \(.*\) days\?, *\(.*\), *\(.*\) users\?, *load average: \(.*\)$/\1; \2d \3; \4u; \5/;t
+ s/^\(.*\) up *\(.*\), *\(.*\) users\?, *load average: \(.*\)$/\1; 0d \2; \3u; \4/;t
+'
diff --git a/Reaktor/commands/visit-page b/Reaktor/commands/visit-page
new file mode 120000
index 00000000..8723336b
--- /dev/null
+++ b/Reaktor/commands/visit-page
@@ -0,0 +1 @@
+../repos/view-website/runner.sh \ No newline at end of file
diff --git a/Reaktor/commands/whatweb b/Reaktor/commands/whatweb
new file mode 100755
index 00000000..68f8aa38
--- /dev/null
+++ b/Reaktor/commands/whatweb
@@ -0,0 +1,7 @@
+#!/bin/sh
+#wrapper for WhatWeb
+here=$(dirname `readlink -f $0`)
+whatweb_bin="$here/../repos/whatweb/whatweb"
+[ ! -e "$whatweb_bin" ] && echo "!! Whatweb app does not exist" && exit 1
+[ -z "${1:-}" ] && echo "!! no host given" && exit 1
+exec $whatweb_bin --user-agent="Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:25.0) Gecko/20100101 Firefox/25.0" -a 3 "$1" 2>&1
diff --git a/Reaktor/commands/whois b/Reaktor/commands/whois
new file mode 100755
index 00000000..b0733891
--- /dev/null
+++ b/Reaktor/commands/whois
@@ -0,0 +1,4 @@
+#!/bin/sh
+(! type whois >/dev/null 2>/dev/null) && echo "whois does not exist" && exit 0
+
+whois "${1?usage: $0 domain}" | sed -e '/^$/d' -e '/^%/d' -e '/^Nserver/d' -e 's/^\[.*/---/' -e '/^Changed/d' -e '/^Status/d' -e '/^Type/d' -e '/^PostalCode/d' -e '/^Phone/d' -e '/^Fax/d' -e '/Last update of WHOIS database/Q' -e '/ID:/d'
diff --git a/Reaktor/config.py b/Reaktor/config.py
new file mode 100644
index 00000000..8a83b28e
--- /dev/null
+++ b/Reaktor/config.py
@@ -0,0 +1,98 @@
+from os.path import abspath, expanduser
+import re
+
+debug = False
+
+name = 'crabmanner'
+
+#workdir = expanduser('~') + '/state'
+workdir = '/home/reaktor/state'
+
+irc_alarm_timeout = 300
+irc_hammer_interval = 10
+irc_kill_timeout = 360
+irc_nickname = name
+irc_server = 'irc.freenode.org'
+irc_port = 6667
+irc_restart_timeout = 5
+irc_channels = [
+ '#krebs'
+]
+admin_file=workdir+'/admin.lst'
+auth_file=workdir+'/auth.lst'
+
+nag_env={
+ 'hosts_repo': 'https://github.com/krebscode/hosts',
+ 'services_repo': 'gitolite@localhost:services',
+ 'inspect_services': 'false'
+}
+
+config_filename = abspath(__file__)
+
+# me is used, so name cannot kill our patterns below
+me = '\\b' + re.escape(name) + '\\b'
+me_or_us = '(?:' + me + '|\\*)'
+
+def default_command(cap, cmd=None, env=None):
+ if not env: env = {}
+ if cmd == None: cmd=cap
+ return {
+ 'capname': cap,
+ 'pattern': '^' + me_or_us + ':\\s*' + cap + '\\s*(?:\\s+(?P<args>.*))?$',
+ 'argv': [ 'commands/' + cmd ],
+ 'env': env
+ }
+
+def simple_command(cap, cmd=None, env={}):
+ if cmd == None: cmd=cap
+ return {
+ 'capname': cap,
+ 'pattern': '^' + cap + '\\s*(?:\\s+(?P<args>.*))?$',
+ 'argv' : [ 'commands/' + cmd ],
+ 'env': env
+ }
+
+public_commands = [
+ default_command('caps', env={
+ 'config_filename': config_filename
+ }),
+ default_command('hello'),
+ default_command('badcommand'),
+ default_command('rev'),
+ default_command('uptime'),
+ default_command('nocommand'),
+ default_command('tell', cmd='tell-on_privmsg', env={
+ 'state_file': workdir + '/tell.txt'
+ }),
+ default_command('nag', env=nag_env),
+ simple_command('identify', env={
+ 'config_filename': config_filename
+ }),
+ # command not found
+ { 'pattern': '^' + me_or_us + ':.*',
+ 'argv': [ 'commands/respond','You are made of stupid!'] },
+ # "highlight"
+ { 'pattern': '.*' + me + '.*',
+ 'argv': [ 'commands/say', 'I\'m famous' ] },
+ # identify via direct connect
+]
+commands = [
+ default_command('reload'),
+]
+
+on_join = [
+ {
+ 'capname': 'tell',
+ 'argv': [ 'commands/tell-on_join' ],
+ 'env': { 'state_file': workdir + '/tell.txt' }
+ }
+]
+
+on_ping = [
+ {
+ 'capname': 'nag',
+ 'argv': [ 'commands/nag' ],
+ 'env': nag_env,
+ 'targets': irc_channels
+ }
+]
diff --git a/Reaktor/elchos/admin.lst b/Reaktor/elchos/admin.lst
new file mode 100644
index 00000000..e69de29b
--- /dev/null
+++ b/Reaktor/elchos/admin.lst
diff --git a/Reaktor/elchos/auth.lst b/Reaktor/elchos/auth.lst
new file mode 100644
index 00000000..e69de29b
--- /dev/null
+++ b/Reaktor/elchos/auth.lst
diff --git a/Reaktor/elchos/commands/ftpget b/Reaktor/elchos/commands/ftpget
new file mode 100755
index 00000000..74e76f8e
--- /dev/null
+++ b/Reaktor/elchos/commands/ftpget
@@ -0,0 +1,58 @@
+#!/bin/sh
+# usage: $0 [-d] uri sharename[/subdirs]
+exec 2>&1
+set -euf
+ncdc_user=hooker
+usage(){
+ cat <<EOF
+usage: $0 [-d] uri share[/subdirs]
+ -d -- uri is a directory to be mirrored
+ share -- vag[0-n]
+
+EOF
+}
+examples(){
+ cat <<EOF
+examples: ftpget -d http://ftp.mozilla.org/pub/mozilla.org/firefox/releases/0.8 vag0/firefox_releases
+ -> 0.8 directory is stored to /media/vag0/firefox_releases
+
+ ftpget -d http://speedtest.qsc.de/10MB.qsc vag0/
+ -> 10MB.qsc is stored to /media/vag0/10MB.qsc
+EOF
+}
+if test "${1:--h}" == '-h' -o "${1:-}" == '--help';then
+ usage
+ examples
+ exit 0
+fi
+if test ${1:-} == '-d' ;then
+ is_dir=true
+ shift
+fi
+
+target="${1:-}"
+if !( echo "$target" | egrep -q '^(ftps*://|https*://)' );then
+ exit 23
+fi
+
+share=$( printf "%s" "${2?provide share name}" |head -1 | sed 's#\.\./##')
+sharepath=/media/${share%%/*}
+realshare="/media/$share"
+test ! -e "$sharepath" && echo "$sharepath does not exist!" && exit 23
+
+sudo -u $ncdc_user /usr/bin/mkdir -p "$realshare"
+
+if test -z ${is_dir:-};then
+ cmd="lftpget \"$target\""
+else
+ cmd="lftp -e \"mirror;exit\" $target"
+fi
+
+ if ! sudo -u $ncdc_user /usr/bin/tmux has-session -t dl >/dev/null 2>&1 ;then
+ sudo -u $ncdc_user /usr/bin/tmux new-session -s dl -d -c "$realshare" "$cmd"
+ else
+ sudo -u $ncdc_user /usr/bin/tmux new-window -t dl -c "$realshare" "$cmd"
+ fi
+#sudo -u $ncdc_user /usr/bin/tmux new-window -t dl
+#cd "$realshare" ;sudo -u hooker /usr/bin/lftpget "$target"
+echo "download started, check with 'list_downloads'"
diff --git a/Reaktor/elchos/commands/identify b/Reaktor/elchos/commands/identify
new file mode 100755
index 00000000..c2fb2c58
--- /dev/null
+++ b/Reaktor/elchos/commands/identify
@@ -0,0 +1,22 @@
+#!/usr/bin/env python
+import imp
+import os,sys
+
+def load_config(filename):
+ dirname = os.path.dirname(filename)
+ modname, ext = os.path.splitext(os.path.basename(filename))
+ file, pathname, description = imp.find_module(modname, [ dirname ])
+ return imp.load_module(modname, file, pathname, description)
+
+config = load_config(os.environ['config_filename'])
+
+with open(config.admin_file) as f:
+ for line in f:
+ nick,secret = line.split()
+ if sys.argv[1] == secret:
+ print("identified you as %s!"%nick)
+ with open(config.auth_file,'a+') as g:
+ g.write(os.environ['_prefix'] +"\n")
+ sys.exit(0)
+
+print("unable to identify you, sorry")
diff --git a/Reaktor/elchos/commands/io b/Reaktor/elchos/commands/io
new file mode 100755
index 00000000..eb04ae9b
--- /dev/null
+++ b/Reaktor/elchos/commands/io
@@ -0,0 +1,25 @@
+#!/usr/bin/zsh
+printf '%-10s %-7s %-7s %-7s %-7s\n' IFACE rxkB/s txkB/s rxTotal txTotal
+sar -n DEV 1 3 | grep Average: | grep -v IFACE | grep -v ' lo ' | while read line;do
+ dev=$(echo $line | awk '{print $2}')
+ rxkb=$(echo $line | awk '{print $5}')
+ txkb=$(echo $line | awk '{print $6}')
+ total_bytes_r=$(cat /proc/net/dev | grep ${dev}: | awk '{print $2}')
+ total_bytes_t=$(cat /proc/net/dev | grep ${dev}: | awk '{print $10}')
+
+ printf '%-10s %-7s %-7s %-7s %-7s\n' $dev $rxkb $txkb $((total_bytes_r / (1024*1024))) $((total_bytes_t / (1024*1024)))
+done
+printf "%-10s %-7s %-7s\n" "DSK" "rxkB/s" "txkB/s"
+sar -p -d 1 3 | grep Average: | grep -v ' DEV ' |while read line;
+do
+ dsk=$(echo $line | awk '{print $2}')
+ rd_sec=$(echo $line | awk '{print $4}')
+ wr_sec=$(echo $line | awk '{print $5}')
+ if echo $dsk | egrep -q '(sd|hd|vd)';then
+ # TODO for some reason 0.00 can only be interpreted correctly as arithmetic
+ # expession by zsh
+ #
+ # rd is counted in blocks (which is 512 bytes)
+ printf "%-10s %-7.2f %-7.2f\n" "/dev/$dsk" "$((rd_sec*2))" "$((wr_sec*2))"
+ fi
+done
diff --git a/Reaktor/elchos/commands/ips b/Reaktor/elchos/commands/ips
new file mode 100755
index 00000000..17c39658
--- /dev/null
+++ b/Reaktor/elchos/commands/ips
@@ -0,0 +1,2 @@
+#!/bin/sh
+ip addr | grep 'inet ' | awk '{print $2}' | grep -v 127.0.0.1 | grep .
diff --git a/Reaktor/elchos/commands/list_downloads b/Reaktor/elchos/commands/list_downloads
new file mode 100755
index 00000000..f53067d8
--- /dev/null
+++ b/Reaktor/elchos/commands/list_downloads
@@ -0,0 +1,8 @@
+#!/bin/sh
+ncdc_user=hooker
+count=$(sudo -u $ncdc_user /usr/bin/tmux list-windows -t dl 2>/dev/null| wc -l)
+
+test $count -eq 0 && echo "no downloads running" && exit 0
+for i in $(seq 0 $(($count-1)));do
+ sudo -u $ncdc_user /usr/bin/tmux capture-pane -t dl:$i -p | grep -v '^$' | tail -n 1
+done
diff --git a/Reaktor/elchos/commands/onion b/Reaktor/elchos/commands/onion
new file mode 100755
index 00000000..1a202991
--- /dev/null
+++ b/Reaktor/elchos/commands/onion
@@ -0,0 +1,3 @@
+#!/bin/sh
+
+sudo -u tor /krebs/bin/tor-get-hidden-service.sh || echo "no hidden service configured"
diff --git a/Reaktor/elchos/commands/reboot b/Reaktor/elchos/commands/reboot
new file mode 100755
index 00000000..a264831a
--- /dev/null
+++ b/Reaktor/elchos/commands/reboot
@@ -0,0 +1,3 @@
+#!/bin/sh
+echo "system is going down"
+sudo /usr/bin/reboot
diff --git a/Reaktor/elchos/commands/refresh_shares b/Reaktor/elchos/commands/refresh_shares
new file mode 100755
index 00000000..1005998b
--- /dev/null
+++ b/Reaktor/elchos/commands/refresh_shares
@@ -0,0 +1,4 @@
+#!/bin/sh
+ncdc_user=hooker
+sudo /krebs/bin/refresh-shares.ship 2>&1
+sudo -u $ncdc_user /krebs/bin/update-search.sh 2>&1
diff --git a/Reaktor/elchos/commands/shares b/Reaktor/elchos/commands/shares
new file mode 100755
index 00000000..1601d584
--- /dev/null
+++ b/Reaktor/elchos/commands/shares
@@ -0,0 +1,2 @@
+#!/bin/sh
+df -h | grep '/media/'
diff --git a/Reaktor/elchos/commands/update_search b/Reaktor/elchos/commands/update_search
new file mode 100755
index 00000000..1db1c1b2
--- /dev/null
+++ b/Reaktor/elchos/commands/update_search
@@ -0,0 +1,3 @@
+#!/bin/sh
+ncdc_user=hooker
+sudo -u $ncdc_user /krebs/bin/update-search.sh
diff --git a/Reaktor/elchos/config.py b/Reaktor/elchos/config.py
new file mode 100644
index 00000000..eeeacd83
--- /dev/null
+++ b/Reaktor/elchos/config.py
@@ -0,0 +1,78 @@
+import socket
+name = socket.gethostname()
+cfg_file = "/krebs/config.sh"
+
+# TODO: shell config file cannot contain variables or anything fancy
+ret ={}
+
+import shlex
+## load config file, lex split every line, split at =
+with open(cfg_file) as f:
+ for line in f:
+ k,v = shlex.split(line)[0].split("=",1)
+ ret[k] = v
+
+#irc_server = 'irc.freenode.net'
+irc_server = ret["IRC_SERVER"]
+
+debug = False
+
+state_dir='/krebs/painload/Reaktor'
+irc_alarm_timeout = 300
+irc_hammer_interval = 10
+irc_kill_timeout = 360
+irc_nickname = name
+irc_restart_timeout = 5
+irc_port = 6667
+irc_channels = [
+ '#elchOS'
+]
+
+admin_file='admin.lst'
+auth_file='auth.lst'
+
+def default_command(cmd):
+ return {
+ 'capname': cmd,
+ 'pattern': '^(?:' + name + '|\\*):\\s*' + cmd + '\\s*(?:\\s+(?P<args>.*))?$',
+ 'argv': [ 'commands/' + cmd ] }
+
+def elch_command(cmd):
+ return {
+ 'capname': cmd,
+ 'pattern': '^(?:' + name + '|\\*):\\s*' + cmd + '\\s*(?:\\s+(?P<args>.*))?$',
+ 'argv': [ 'elchos/commands/' + cmd ] }
+
+public_commands = [
+ default_command('caps'),
+ default_command('hello'),
+ default_command('uptime'),
+ default_command('badcommand'),
+ default_command('rev'),
+ elch_command('search'),
+ elch_command('list_downloads'),
+ elch_command('io'),
+ elch_command('ips'),
+ elch_command('shares'),
+ elch_command('onion'),
+ default_command('nocommand'),
+ # command not found
+ { 'pattern': '^(?:' + name + '|\\*):.*',
+ 'argv': [ 'commands/respond','You are made of stupid!'] },
+ # "highlight"
+ { 'pattern': '.*\\b' + name + '\\b.*',
+ 'argv': [ 'commands/say', 'I\'m famous' ] },
+ # identify via direct connect
+ { 'capname': 'identify',
+ 'pattern': 'identify' + '\\s*(?:\\s+(?P<args>.*))?$',
+ 'argv' : [ 'commands/identify' ]}
+
+]
+
+commands = [
+ default_command('reload'),
+ elch_command('update_search'),
+ elch_command('refresh_shares'),
+ elch_command('ftpget'),
+ elch_command('reboot')
+]
diff --git a/Reaktor/etc/conf.d/reaktor b/Reaktor/etc/conf.d/reaktor
new file mode 100644
index 00000000..a4f3f8e1
--- /dev/null
+++ b/Reaktor/etc/conf.d/reaktor
@@ -0,0 +1,2 @@
+export target="#krebsco"
+export host="irc.freenode.com"
diff --git a/Reaktor/etc/init.d/reaktor-debian b/Reaktor/etc/init.d/reaktor-debian
new file mode 100755
index 00000000..a94384f4
--- /dev/null
+++ b/Reaktor/etc/init.d/reaktor-debian
@@ -0,0 +1,102 @@
+#!/bin/sh
+# uses template from /etc/init.d/skeleton
+### BEGIN INIT INFO
+# Provides: reaktor
+# Required-Start:
+# Required-Stop:
+# Default-Start: 2 3 4 5
+# Default-Stop: 0 1 6
+# Short-Description: reaktor
+# Description: starts reaktor daemon
+#
+### END INIT INFO
+
+PATH=/sbin:/usr/sbin:/bin:/usr/bin
+NAME=reaktor
+USER=reaktor
+DESC="$NAME daemon"
+DAEMON=/usr/bin/python
+DAEMON_DIR="/krebs/Reaktor/IRC/"
+DAEMON_ARGS="${DAEMON_DIR}/asybot.py"
+PIDFILE=/var/run/$NAME.pid
+SCRIPTNAME=/etc/init.d/$NAME
+
+[ -x "$DAEMON" ] || exit 0
+[ -r /etc/default/$NAME ] && . /etc/default/$NAME
+. /lib/init/vars.sh
+. /lib/lsb/init-functions
+
+do_start()
+{
+ # 0 if daemon has been started
+ # 1 if daemon was already running
+ # 2 if daemon could not be started
+ start-stop-daemon -b -d $DAEMON_DIR/.. -c $USER --start --quiet --make-pidfile --pidfile $PIDFILE --exec $DAEMON --test > /dev/null \
+ || return 1
+ start-stop-daemon -b -d $DAEMON_DIR/.. -c $USER --start --quiet --make-pidfile --pidfile $PIDFILE --exec $DAEMON -- \
+ $DAEMON_ARGS \
+ || return 2
+}
+
+do_stop()
+{
+ # 0 if daemon has been stopped
+ # 1 if daemon was already stopped
+ # 2 if daemon could not be stopped
+ start-stop-daemon --stop --retry=TERM/30/KILL/5 --pidfile $PIDFILE
+ RETVAL="$?"
+ [ "$RETVAL" = 2 ] && return 2
+ rm -f $PIDFILE
+ return "$RETVAL"
+}
+
+do_reload() {
+ start-stop-daemon --stop --signal 1 --quiet --pidfile $PIDFILE
+ return 0
+}
+
+case "$1" in
+ start)
+ [ "$VERBOSE" != no ] && log_daemon_msg "Starting $DESC" "$NAME"
+ do_start
+ case "$?" in
+ 0|1) [ "$VERBOSE" != no ] && log_end_msg 0 ;;
+ 2) [ "$VERBOSE" != no ] && log_end_msg 1 ;;
+ esac
+ ;;
+ stop)
+ [ "$VERBOSE" != no ] && log_daemon_msg "Stopping $DESC" "$NAME"
+ do_stop
+ case "$?" in
+ 0|1) [ "$VERBOSE" != no ] && log_end_msg 0 ;;
+ 2) [ "$VERBOSE" != no ] && log_end_msg 1 ;;
+ esac
+ ;;
+ status)
+ status_of_proc "$DAEMON" "$NAME" && exit 0 || exit $?
+ ;;
+ restart|force-reload)
+ log_daemon_msg "Restarting $DESC" "$NAME"
+ do_stop
+ case "$?" in
+ 0|1)
+ do_start
+ case "$?" in
+ 0) log_end_msg 0 ;;
+ 1) log_end_msg 1 ;;
+ *) log_end_msg 1 ;;
+ esac
+ ;;
+ *)
+ # Failed to stop
+ log_end_msg 1
+ ;;
+ esac
+ ;;
+ *)
+ echo "Usage: $SCRIPTNAME {start|stop|status|restart|force-reload}" >&2
+ exit 3
+ ;;
+esac
+
+:
diff --git a/Reaktor/etc/supervisor/Reaktor.conf b/Reaktor/etc/supervisor/Reaktor.conf
new file mode 100644
index 00000000..497066e9
--- /dev/null
+++ b/Reaktor/etc/supervisor/Reaktor.conf
@@ -0,0 +1,6 @@
+[program:Reaktor]
+command=/usr/bin/python2.6 IRC/asybot.py
+environment=host='irc.freenode.net',target='#krebsco'
+redirect_stderr=true
+user=reaktor
+directory=/krebs/Reaktor
diff --git a/Reaktor/etc/systemd/system/Reaktor.service b/Reaktor/etc/systemd/system/Reaktor.service
new file mode 100644
index 00000000..6bb3e550
--- /dev/null
+++ b/Reaktor/etc/systemd/system/Reaktor.service
@@ -0,0 +1,14 @@
+[Unit]
+Description=Reaktor for user %i
+After=network.target nss-lookup.target
+
+[Service]
+Type=normal
+#TODO - make reaktor path variable
+User=reaktor
+ExecStart=/krebs/painload/Reaktor/index
+Restart=always
+RestartSec=3
+
+[Install]
+WantedBy=multi-user.target
diff --git a/Reaktor/index b/Reaktor/index
new file mode 100755
index 00000000..fc59cd73
--- /dev/null
+++ b/Reaktor/index
@@ -0,0 +1,7 @@
+#! /bin/sh
+set -euf
+
+# cd //Reaktor
+cd $(dirname $(readlink -f $0))
+
+exec IRC/index "$@"
diff --git a/Reaktor/public_commands/caps b/Reaktor/public_commands/caps
new file mode 120000
index 00000000..43c0a342
--- /dev/null
+++ b/Reaktor/public_commands/caps
@@ -0,0 +1 @@
+../commands/caps \ No newline at end of file
diff --git a/Reaktor/public_commands/hello b/Reaktor/public_commands/hello
new file mode 120000
index 00000000..4509249b
--- /dev/null
+++ b/Reaktor/public_commands/hello
@@ -0,0 +1 @@
+../commands/hello \ No newline at end of file
diff --git a/Reaktor/public_commands/reload b/Reaktor/public_commands/reload
new file mode 120000
index 00000000..9a337850
--- /dev/null
+++ b/Reaktor/public_commands/reload
@@ -0,0 +1 @@
+../commands/reload \ No newline at end of file
diff --git a/Reaktor/public_commands/retard b/Reaktor/public_commands/retard
new file mode 120000
index 00000000..29ae4b01
--- /dev/null
+++ b/Reaktor/public_commands/retard
@@ -0,0 +1 @@
+../commands/retard \ No newline at end of file
diff --git a/Reaktor/public_commands/rev b/Reaktor/public_commands/rev
new file mode 120000
index 00000000..f5433412
--- /dev/null
+++ b/Reaktor/public_commands/rev
@@ -0,0 +1 @@
+../commands/rev \ No newline at end of file
diff --git a/Reaktor/public_commands/uptime b/Reaktor/public_commands/uptime
new file mode 120000
index 00000000..ffe5fbd7
--- /dev/null
+++ b/Reaktor/public_commands/uptime
@@ -0,0 +1 @@
+../commands/uptime \ No newline at end of file
diff --git a/Reaktor/repos/bxfr/bxfr.py b/Reaktor/repos/bxfr/bxfr.py
new file mode 100644
index 00000000..8e6bd101
--- /dev/null
+++ b/Reaktor/repos/bxfr/bxfr.py
@@ -0,0 +1,238 @@
+#!/usr/bin/python -tt
+
+# gxfr replicates dns zone transfers by enumerating subdomains using advanced search engine queries and conducting dns lookups.
+# By Tim Tomes (LaNMaSteR53)
+# Available for download at http://LaNMaSteR53.com or http://code.google.com/p/gxfr/
+
+import sys, os.path, urllib, urllib2, re, time, socket, random, socket
+
+
+def help():
+ print """ Syntax: ./gxfr.py domain [options]
+
+ -h, --help this screen
+ -v enable verbose mode
+ -t [num of seconds] set number of seconds to wait between queries (default=15)
+ -q [max num of queries] restrict to maximum number of queries (default=0, indefinite)
+ --dns-lookup enable dns lookups of all subdomains
+ --proxy [file|ip:port|-] use a proxy or list of open proxies to send queries (@random w/list)
+ - [file] must consist of 1 or more ip:port pairs
+ - replace filename with '-' (dash) to accept stdin
+ --user-agent ['string'] set custom user-agent string
+ --timeout [seconds] set socket timeout (default=system default)
+ --csv [file]
+
+ Examples:
+ $ ./gxfr.py foxnews.com --dns-lookup -v
+ $ ./gxfr.py foxnews.com --dns-lookup --proxy open_proxies.txt --timeout 10
+ $ ./gxfr.py foxnews.com --dns-lookup -t 5 -q 5 -v --proxy 127.0.0.1:8080
+ $ curl http://rmccurdy.com/scripts/proxy/good.txt | ./gxfr.py website.com -v -t 3 --proxy -
+ """
+ sys.exit(2)
+
+if len(sys.argv) < 2:
+ help()
+
+if '-h' in sys.argv or '--help' in sys.argv:
+ help()
+
+# declare vars and process arguments
+#http://www.bing.com/search?q=site%3agoogle.de&qs=n&filt=all&pq=site%3agoogle.d&sc=8-5&sp=-1&sk=&first=1&FORM=PORE
+query_cnt = 0
+csvname = False
+domain = sys.argv[1]
+sys.argv = sys.argv[2:]
+lookup = False
+encrypt = True
+base_url = 'http://www.bing.com'
+base_uri = '/search?qs=n&form=QBRE&sc=0-0&sp=-1&sk='
+base_query = 'site:' + domain
+pattern = '//([\.\w-]*)\.%s.+?' % (domain)
+proxy = False
+user_agent = 'Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; Trident/4.0; FDM; .NET CLR 2.0.50727; InfoPath.2; .NET CLR 1.1.4322)'
+verbose = False
+secs = 15
+max_queries = 10 # default = 10 queries
+# process command line arguments
+if len(sys.argv) > 0:
+ if '--dns-lookup' in sys.argv:
+ lookup = True
+ if '--csv' in sys.argv:
+ csvname = sys.argv[sys.argv.index('--csv') + 1]
+ if '--proxy' in sys.argv:
+ proxy = True
+ filename = sys.argv[sys.argv.index('--proxy') + 1]
+ if filename == '-':
+ proxies = sys.stdin.read().split()
+ elif os.path.exists(filename):
+ content = open(filename).read()
+ proxies = re.findall('\d+\.\d+\.\d+\.\d+:\d+', content)
+ elif re.match(r'^\d+\.\d+\.\d+\.\d+:\d+$', filename):
+ proxies = [filename]
+ else:
+ help()
+ if '--timeout' in sys.argv:
+ timeout = int(sys.argv[sys.argv.index('--timeout') + 1])
+ socket.setdefaulttimeout(timeout)
+ if '--user-agent' in sys.argv:
+ user_agent = sys.argv[sys.argv.index('--user-agent') + 1]
+ if '-v' in sys.argv:
+ verbose = True
+ if '-t' in sys.argv:
+ secs = int(sys.argv[sys.argv.index('-t') + 1])
+ if '-q' in sys.argv:
+ max_queries = int(sys.argv[sys.argv.index('-q') + 1])
+subs = []
+new = True
+page = 0
+
+# --begin--
+print '[-] domain:', domain
+print '[-] user-agent:', user_agent
+# execute search engine queries and scrape results storing subdomains in a list
+print '[-] querying search engine, please wait...'
+# loop until no new subdomains are found
+while new == True:
+ try:
+ query = ''
+ # build query based on results of previous results
+ for sub in subs:
+ query += ' -site:%s.%s' % (sub, domain)
+ full_query = base_query + query
+ start_param = '&first=%s' % (str(page*10))
+ query_param = '&q=%s&pq=%s' % (urllib.quote_plus(full_query),urllib.quote_plus(full_query))
+ if len(base_uri) + len(query_param) + len(start_param) < 2048:
+ last_query_param = query_param
+ params = query_param + start_param
+ else:
+ params = last_query_param[:2047-len(start_param)-len(base_uri)] + start_param
+ full_url = base_url + base_uri + params
+ # note: query character limit is passive in mobile, but seems to be ~794
+ # note: query character limit seems to be 852 for desktop queries
+ # note: typical URI max length is 2048 (starts after top level domain)
+ if verbose: print '[+] using query: %s...' % (full_url)
+ # build web request and submit query
+ request = urllib2.Request(full_url)
+ # spoof user-agent string
+ request.add_header('User-Agent', user_agent)
+ # if proxy is enabled, use the correct handler
+ if proxy == True:
+ # validate proxies at runtime
+ while True:
+ try:
+ # select a proxy from list at random
+ num = random.randint(0,len(proxies)-1)
+ host = proxies[num]
+ opener = urllib2.build_opener(urllib2.ProxyHandler({'http': host}))
+ if verbose: print '[+] sending query to', host
+ # send query to proxy server
+ result = opener.open(request).read()
+ # exit while loop if successful
+ break
+ except Exception as inst:
+ print '[!] %s failed: %s' % (host, inst)
+ if len(proxies) == 1:
+ # exit of no proxy servers from list are valid
+ print '[-] valid proxy server not found'
+ sys.exit(2)
+ else:
+ # remove host from list of proxies and try again
+ del proxies[num]
+ else:
+ opener = urllib2.build_opener(urllib2.HTTPHandler(), urllib2.HTTPSHandler())
+ # send query to search engine
+ try:
+ result = opener.open(request).read()
+ except Exception as inst:
+ print '[!] {0}'.format(inst)
+ if str(inst).index('503') != -1: print '[!] possible shun: use --proxy or find something else to do for 24 hours :)'
+ sys.exit(2)
+ if not verbose: sys.stdout.write('.'); sys.stdout.flush()
+ #if not verbose: sys.stdout.write('\n'); sys.stdout.flush()
+ # iterate query count
+ query_cnt += 1
+ sites = re.findall(pattern, result)
+ # create a uniq list
+ sites = list(set(sites))
+ new = False
+ # add subdomain to list if not already exists
+ for site in sites:
+ if site not in subs:
+ if verbose: print '[!] subdomain found:', site
+ subs.append(site)
+ new = True
+ # exit if maximum number of queries has been made
+ if query_cnt == max_queries:
+ print '[-] maximum number of queries made...'
+ break
+ # start going through all pages if querysize is maxed out
+ if new == False:
+ # exit if all subdomains have been found
+ if not 'Next page' in result:
+ #import pdb; pdb.set_trace() # curl to stdin breaks pdb
+ print '[-] all available subdomains found...'
+ break
+ else:
+ page += 1
+ new = True
+ if verbose: print '[+] no new subdomains found on page. jumping to result %d.' % (page*10)
+ # sleep script to avoid lock-out
+ if verbose: print '[+] sleeping to avoid lock-out...'
+ time.sleep(secs)
+ except KeyboardInterrupt:
+ # catch keyboard interrupt and gracefull complete script
+ break
+
+# print list of subdomains
+print '[-] successful queries made:', str(query_cnt)
+if verbose:
+ # rebuild and display final query if in verbose mode
+ #final_query = ''
+ #for sub in subs:
+ # final_query += '+-site:%s.%s' % (sub, domain)
+ #print '[+] final query string: %sstart=%s&%s%s' % (base_url, str(page*10), base_query, query)
+ print '[+] final query string: %s' % (full_url)
+print ' '
+print '[subdomains] -', str(len(subs))
+csvwriter = False
+try:
+ if csvname:
+ import csv
+ csvwriter = csv.writer(open(csvname,'wb'))
+except:
+ print "[!] Cannot open CSV"
+for sub in subs:
+ dom = '%s.%s' % (sub, domain )
+
+ #host resolution makes this computer more visible
+ hostname,aliases,ips = socket.gethostbyname_ex(dom)
+ #print hostname,aliases,ip
+ print dom,",".join(ips)
+ try:
+ line = [dom] + ips
+ csvwriter.writerow([dom] + ips)
+ except: pass
+
+
+# conduct dns lookup if argument is present
+if lookup == True:
+ print ' '
+ print '[-] querying dns, please wait...'
+ dict = {}
+ # create a dictionary where the subdomain is the key and a list of all associated ips is the value
+ for sub in subs:
+ sub = '%s.%s' % (sub, domain)
+ if verbose: print '[+] querying dns for %s...' % (sub)
+ # dns query and dictionary assignment
+ try:
+ dict[sub] = list(set([item[4][0] for item in socket.getaddrinfo(sub, 80)]))
+ except socket.gaierror:
+ # dns lookup failure
+ dict[sub] = list(set(['no entry']))
+ # print table of subdomains and ips
+ print ' '
+ print '[ip]'.ljust(16, ' ') + '[subdomain]'
+ for key in dict.keys():
+ for ip in dict[key]:
+ print ip.ljust(16, ' ') + key
+# --end--
diff --git a/Reaktor/repos/bxfr/bxfr_api.py b/Reaktor/repos/bxfr/bxfr_api.py
new file mode 100644
index 00000000..245ea92a
--- /dev/null
+++ b/Reaktor/repos/bxfr/bxfr_api.py
@@ -0,0 +1,238 @@
+#!/usr/bin/python -tt
+
+# gxfr replicates dns zone transfers by enumerating subdomains using advanced search engine queries and conducting dns lookups.
+# Original code By Tim Tomes (LaNMaSteR53)
+# rewrite for bing.com,csv output by makefu
+# Available for download at http://LaNMaSteR53.com or
+# http://code.google.com/p/gxfr/ and https://github.com/krebscode/painload in Reaktor/repos
+
+import sys, os.path, urllib, urllib2, re, time, socket, random, socket
+
+
+def help():
+ print """ Syntax: %s domain [options]
+
+ -h, --help this screen
+ -v enable verbose mode
+ -t [num of seconds] set number of seconds to wait between queries (default=15)
+ -q [max num of queries] restrict to maximum number of queries (default=0, indefinite)
+ --dns-lookup enable dns lookups of all subdomains
+ --proxy [file|ip:port|-] use a proxy or list of open proxies to send queries (@random w/list)
+ - [file] must consist of 1 or more ip:port pairs
+ - replace filename with '-' (dash) to accept stdin
+ --user-agent ['string'] set custom user-agent string
+ --timeout [seconds] set socket timeout (default=system default)
+ --csv [file]
+
+ Examples:
+ $ ./gxfr.py foxnews.com --dns-lookup -v
+ $ ./gxfr.py foxnews.com --dns-lookup --proxy open_proxies.txt --timeout 10
+ $ ./gxfr.py foxnews.com --dns-lookup -t 5 -q 5 -v --proxy 127.0.0.1:8080
+ $ curl http://rmccurdy.com/scripts/proxy/good.txt | ./gxfr.py website.com -v -t 3 --proxy -
+ """ % sys.argv[0]
+ sys.exit(2)
+
+if len(sys.argv) < 2:
+ help()
+
+if '-h' in sys.argv or '--help' in sys.argv:
+ help()
+
+# declare vars and process arguments
+query_cnt = 0
+csvname = False
+domain = sys.argv[1]
+sys.argv = sys.argv[2:]
+lookup = False
+encrypt = True
+base_url = 'http://api.bing.net'
+bing_appid = "01CDBCA91C590493EE4E91FAF83E5239FEF6ADFD" #from darkb0t, thanks
+base_uri = '/xml.aspx?AppID=%s&Sources=Web&Version=2.0&Web.Count=50&Web.Options=DisableHostCollapsing+DisableQueryAlterations' %bing_appid
+base_query = 'site:' + domain
+pattern = '>([\.\w-]*)\.%s.+?<' % (domain)
+proxy = False
+user_agent = 'Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; Trident/4.0; FDM; .NET CLR 2.0.50727; InfoPath.2; .NET CLR 1.1.4322)'
+verbose = False
+secs = 10
+max_queries = 10
+# process command line arguments
+if len(sys.argv) > 0:
+ if '--dns-lookup' in sys.argv:
+ lookup = True
+ if '--csv' in sys.argv:
+ csvname = sys.argv[sys.argv.index('--csv') + 1]
+ if '--proxy' in sys.argv:
+ proxy = True
+ filename = sys.argv[sys.argv.index('--proxy') + 1]
+ if filename == '-':
+ proxies = sys.stdin.read().split()
+ elif os.path.exists(filename):
+ content = open(filename).read()
+ proxies = re.findall('\d+\.\d+\.\d+\.\d+:\d+', content)
+ elif re.match(r'^\d+\.\d+\.\d+\.\d+:\d+$', filename):
+ proxies = [filename]
+ else:
+ help()
+ if '--timeout' in sys.argv:
+ timeout = int(sys.argv[sys.argv.index('--timeout') + 1])
+ socket.setdefaulttimeout(timeout)
+ if '--user-agent' in sys.argv:
+ user_agent = sys.argv[sys.argv.index('--user-agent') + 1]
+ if '-v' in sys.argv:
+ verbose = True
+ if '-t' in sys.argv:
+ secs = int(sys.argv[sys.argv.index('-t') + 1])
+ if '-q' in sys.argv:
+ max_queries = int(sys.argv[sys.argv.index('-q') + 1])
+subs = []
+new = True
+page = 0
+
+# --begin--
+print '[-] domain:', domain
+print '[-] user-agent:', user_agent
+# execute search engine queries and scrape results storing subdomains in a list
+print '[-] querying search engine, please wait...'
+# loop until no new subdomains are found
+while new == True:
+ try:
+ query = ''
+ # build query based on results of previous results
+ for sub in subs:
+ query += ' -site:%s.%s' % (sub, domain)
+ full_query = base_query + query
+ start_param = '&Web.Offset=%s' % (str(page*10))
+ query_param = '&Query=%s' % (urllib.quote_plus(full_query))
+ if len(base_uri) + len(query_param) + len(start_param) < 2048:
+ last_query_param = query_param
+ params = query_param + start_param
+ else:
+ params = last_query_param[:2047-len(start_param)-len(base_uri)] + start_param
+ full_url = base_url + base_uri + params
+ # note: query character limit is passive in mobile, but seems to be ~794
+ # note: query character limit seems to be 852 for desktop queries
+ # note: typical URI max length is 2048 (starts after top level domain)
+ if verbose: print '[+] using query: %s...' % (full_url)
+ # build web request and submit query
+ request = urllib2.Request(full_url)
+ # spoof user-agent string
+ request.add_header('User-Agent', user_agent)
+ # if proxy is enabled, use the correct handler
+ if proxy == True:
+ # validate proxies at runtime
+ while True:
+ try:
+ # select a proxy from list at random
+ num = random.randint(0,len(proxies)-1)
+ host = proxies[num]
+ opener = urllib2.build_opener(urllib2.ProxyHandler({'http': host}))
+ if verbose: print '[+] sending query to', host
+ # send query to proxy server
+ result = opener.open(request).read()
+ # exit while loop if successful
+ break
+ except Exception as inst:
+ print '[!] %s failed: %s' % (host, inst)
+ if len(proxies) == 1:
+ # exit of no proxy servers from list are valid
+ print '[-] valid proxy server not found'
+ sys.exit(2)
+ else:
+ # remove host from list of proxies and try again
+ del proxies[num]
+ else:
+ opener = urllib2.build_opener(urllib2.HTTPHandler(), urllib2.HTTPSHandler())
+ # send query to search engine
+ try:
+ result = opener.open(request).read()
+ except Exception as inst:
+ print '[!] {0}'.format(inst)
+ if str(inst).index('503') != -1: print '[!] possible shun: use --proxy or find something else to do for 24 hours :)'
+ sys.exit(2)
+ if not verbose: sys.stdout.write('.'); sys.stdout.flush()
+ #if not verbose: sys.stdout.write('\n'); sys.stdout.flush()
+ # iterate query count
+ query_cnt += 1
+ sites = re.findall(pattern, result)
+ # create a uniq list
+ sites = list(set(sites))
+ new = False
+ # add subdomain to list if not already exists
+ for site in sites:
+ if site not in subs:
+ if verbose: print '[!] subdomain found:', site
+ subs.append(site)
+ new = True
+ # exit if maximum number of queries has been made
+ if query_cnt == max_queries:
+ print '[-] maximum number of queries made...'
+ break
+ # start going through all pages if querysize is maxed out
+ if new == False:
+ # exit if all subdomains have been found
+ if not 'Next page' in result:
+ #import pdb; pdb.set_trace() # curl to stdin breaks pdb
+ print '[-] all available subdomains found...'
+ break
+ else:
+ page += 1
+ new = True
+ if verbose: print '[+] no new subdomains found on page. jumping to result %d.' % (page*10)
+ # sleep script to avoid lock-out
+ if verbose: print '[+] sleeping to avoid lock-out...'
+ time.sleep(secs)
+ except KeyboardInterrupt:
+ # catch keyboard interrupt and gracefull complete script
+ break
+
+# print list of subdomains
+print '[-] successful queries made:', str(query_cnt)
+if verbose:
+ # rebuild and display final query if in verbose mode
+ #final_query = ''
+ #for sub in subs:
+ # final_query += '+-site:%s.%s' % (sub, domain)
+ #print '[+] final query string: %sstart=%s&%s%s' % (base_url, str(page*10), base_query, query)
+ print '[+] final query string: %s' % (full_url)
+print ' '
+print '[subdomains] -', str(len(subs))
+csvwriter = False
+try:
+ if csvname:
+ import csv
+ csvwriter = csv.writer(open(csvname,'wb'))
+except:
+ print "[!] Cannot open CSV"
+for sub in subs:
+ dom = '%s.%s' % (sub, domain )
+ hostname,aliases,ips = socket.gethostbyname_ex(dom)
+ #print hostname,aliases,ip
+ print dom,",".join(ips)
+ try:
+ line = [dom] + ips
+ csvwriter.writerow([dom] + ips)
+ except: pass
+
+
+# conduct dns lookup if argument is present
+if lookup == True:
+ print ' '
+ print '[-] querying dns, please wait...'
+ dict = {}
+ # create a dictionary where the subdomain is the key and a list of all associated ips is the value
+ for sub in subs:
+ sub = '%s.%s' % (sub, domain)
+ if verbose: print '[+] querying dns for %s...' % (sub)
+ # dns query and dictionary assignment
+ try:
+ dict[sub] = list(set([item[4][0] for item in socket.getaddrinfo(sub, 80)]))
+ except socket.gaierror:
+ # dns lookup failure
+ dict[sub] = list(set(['no entry']))
+ # print table of subdomains and ips
+ print ' '
+ print '[ip]'.ljust(16, ' ') + '[subdomain]'
+ for key in dict.keys():
+ for ip in dict[key]:
+ print ip.ljust(16, ' ') + key
+# --end--
diff --git a/Reaktor/repos/consolidate_dns/index b/Reaktor/repos/consolidate_dns/index
new file mode 100755
index 00000000..3dd42fbd
--- /dev/null
+++ b/Reaktor/repos/consolidate_dns/index
@@ -0,0 +1,86 @@
+#!/usr/bin/python -u
+import os
+from subprocess import Popen
+import csv
+import sys
+import tempfile
+
+
+os.chdir (os.path.dirname (os.path.realpath (sys.argv[0])))
+dnsrecon_enabled = False
+DNSRECON = "../dnsrecon/dnsrecon.py"
+dnsrecon_wordlist="../dnsrecon/namelist.txt"
+silent=open("/dev/null","w")
+gxfr_enabled = False
+GXFR = "../gxfr/gxfr.py"
+bxfr_enabled = False
+BXFR = "../bxfr/bxfr.py"
+domains = {}
+try:
+ DOMAIN=sys.argv[1]
+except:
+ print ("Usage: %s [hostname]")
+ sys.exit(1)
+print("checking for back end")
+if os.path.isfile(DNSRECON) :
+ dnsrecon_enabled=True
+ print (" dnsrecon enabled")
+else:
+ print (" dnsrecon not available or not supported")
+if os.path.isfile(GXFR):
+ gxfr_enabled=True
+ print (" gxfr.py enabled")
+else:
+ print (" gxfr.py not available or not supported")
+if os.path.isfile(BXFR):
+ bxfr_enabled=True
+ print (" bxfr.py enabled")
+else:
+ print (" bxfr.py not available or not supported")
+
+
+if dnsrecon_enabled:
+ dnsrecon_tmp = tempfile.NamedTemporaryFile(delete=False).name
+ print ("Starting dnsrecon, this may take some time")
+ #print (" ".join([DNSRECON,"-d",DOMAIN,"--csv",dnsrecon_tmp,'-D',dnsrecon_wordlist,"-t","brt,srv,axfr","--skip"]))
+ p = Popen([DNSRECON,"-d",DOMAIN,"--csv",dnsrecon_tmp,'-D',dnsrecon_wordlist,"-t","brt,srv,axfr"] ,stdout=silent,stderr=silent)
+ p.wait()
+ reader = csv.reader(open(dnsrecon_tmp))
+ for row in reader:
+ if not row[1] in domains:
+ domains[row[1]] = []
+ domains[row[1]] += row[2:]
+ print ("...finished with [%d] domains" %reader.line_num)
+ os.unlink(dnsrecon_tmp)
+
+if gxfr_enabled:
+ gxfr_tmp = tempfile.NamedTemporaryFile(delete=False).name
+ print ("Starting gxfr, this may take some time")
+ p = Popen(["/usr/bin/python",GXFR,DOMAIN,"-q","3","--csv",gxfr_tmp],stdout=silent,stderr=silent)
+ p.wait()
+ reader = csv.reader(open(gxfr_tmp))
+ for row in reader:
+ if not row[0] in domains:
+ domains[row[0]] = []
+ domains[row[0]] += row[1:]
+ print ("...finished with [%d] domains" %reader.line_num)
+ os.unlink(gxfr_tmp)
+if bxfr_enabled:
+ bxfr_tmp = tempfile.NamedTemporaryFile(delete=False).name
+ print ("Starting bxfr, this may take some time")
+ p = Popen(["/usr/bin/python",BXFR,DOMAIN,"-q","3","--csv",bxfr_tmp],stdout=silent,stderr=silent)
+ p.wait()
+ reader = csv.reader(open(bxfr_tmp))
+ for row in reader:
+ if not row[0] in domains:
+ domains[row[0]] = []
+ domains[row[0]] += row[1:]
+ print ("...finished with [%d] domains" %reader.line_num)
+ os.unlink(bxfr_tmp)
+
+print "found %d subdomain(s)" % len(domains)
+num = 1
+for dom in domains:
+ domains[dom] = set(domains[dom])
+ print "[%d/%d]" % (num,len(domains)),dom,":",", ".join(domains[dom])
+ num = num + 1
diff --git a/Reaktor/repos/dnsrecon b/Reaktor/repos/dnsrecon
new file mode 160000
+Subproject a6a5a5e7f6d03cf3430a75d461c76ae0f76cf94
diff --git a/Reaktor/repos/gxfr b/Reaktor/repos/gxfr
new file mode 160000
+Subproject 4606858e7814189c527ba912e1d8575248f719d
diff --git a/Reaktor/repos/revip/revip b/Reaktor/repos/revip/revip
new file mode 100755
index 00000000..d6acd669
--- /dev/null
+++ b/Reaktor/repos/revip/revip
@@ -0,0 +1,48 @@
+#!/usr/bin/python
+# fork from darkb0t v0.4
+# modularized and extended
+import sys
+import os
+import json
+import socket
+import httplib
+from urlparse import urlparse
+try:
+ target = sys.argv[1]
+except:
+ print "Usage: %s [target]" % sys.argv[0]
+ exit(0)
+
+print "Reverse IP Search"
+print "Target: ",target
+try:
+ hostname,aliases,ip = socket.gethostbyname_ex(target)
+ ip = socket.gethostbyname(target)
+except:
+ print "Cannot resolve `%s`!" % target
+ exit (1)
+print "IP: ",ip
+sites = {target : "", hostname : ""} # make entries unique
+for a in aliases:
+ sites[a] = ""
+offset = 0
+appid = os.environ.get("BING_APPID",'7A0B8DA3E913BE5ECB4AF11C7BC398B43000DC1C')
+while offset < 300:
+ url ="/json.aspx?AppId=%s&Query=ip:%s&Sources=Web+RelatedSearch+News+Image+Video&Version=2.2&Market=en-us&Web.Count=50&Web.Offset=%s&Web.Options=DisableQueryAlterations" % (appid, ip, offset)
+ conn = httplib.HTTPConnection("api.bing.net")
+ conn.request("GET", url)
+ res = conn.getresponse()
+ doc = json.load(res)
+ try:
+ results = doc["SearchResponse"]["Web"]["Results"]
+ conn.close()
+ for res in results:
+ sites[urlparse(res['Url'])[1]] = ""
+ offset += 50
+ except:
+ break
+print "Total: ", len(sites), " dns name(s)\n"
+num = 1
+for s in sites:
+ print "["+str(num)+"/"+str(len(sites))+"] : "+s
+ num += 1
diff --git a/Reaktor/repos/view-website b/Reaktor/repos/view-website
new file mode 160000
+Subproject f62601b09882efdd273ee2cbf6625734cf1e316
diff --git a/Reaktor/repos/whatweb b/Reaktor/repos/whatweb
new file mode 160000
+Subproject 362145cf80ccd82d4c32e15b37eeff745e0ba66
diff --git a/Reaktor/titlebot/commands/clear b/Reaktor/titlebot/commands/clear
new file mode 100755
index 00000000..e3558194
--- /dev/null
+++ b/Reaktor/titlebot/commands/clear
@@ -0,0 +1,12 @@
+#!/usr/bin/env python3
+import json
+from os import environ
+import sys
+import os
+# krebs polling
+import poll
+
+f = 'suggestions.json'
+title=" ".join(sys.argv[1:])
+db = poll.save_db(f,[])
+print("cleared database")
diff --git a/Reaktor/titlebot/commands/down b/Reaktor/titlebot/commands/down
new file mode 100755
index 00000000..8964382d
--- /dev/null
+++ b/Reaktor/titlebot/commands/down
@@ -0,0 +1,2 @@
+#!/bin/sh
+echo "not implemented"
diff --git a/Reaktor/titlebot/commands/help b/Reaktor/titlebot/commands/help
new file mode 100755
index 00000000..fcc9b535
--- /dev/null
+++ b/Reaktor/titlebot/commands/help
@@ -0,0 +1,12 @@
+#!/bin/sh
+cat <<EOF
+BGT Title Poll Bot:
+ .new TITLE - suggest a new title
+ .list <(age|votes)> - list all suggestions
+ .highest <NUM> - lists the NUM highest voted suggestions
+ .top <NUM> - alias for .highest
+ .up NUM (NUM ...) - upvote one or more suggestions from .list
+ .undo NUM (NUM ...) - undo an upvote
+ .clear - clear the poll (auth required)
+EOF
+
diff --git a/Reaktor/titlebot/commands/highest b/Reaktor/titlebot/commands/highest
new file mode 100755
index 00000000..d0408ac0
--- /dev/null
+++ b/Reaktor/titlebot/commands/highest
@@ -0,0 +1,30 @@
+#!/usr/bin/env python3
+import json
+from os import environ
+import sys
+import os
+import poll
+
+f = 'suggestions.json'
+title=" ".join(sys.argv[1:])
+db = poll.load_db(f)
+# only print the last N values (default 1)
+limit = int(sys.argv[1]) if len(sys.argv) > 1 else 1
+num = 0
+last_vote = 9001
+# stolen from http://stackoverflow.com/questions/9647202/ordinal-numbers-replacement
+suffixes = ["th", "st", "nd", "rd", ] + ["th"] * 16
+
+for entry in poll.sort_by_votes(db):
+ # if two entries have the same number of upvotes, do not increment the rank
+ current_vote = sum(entry['votes'].values())
+ if current_vote < last_vote:
+ num = num + 1
+ last_vote = current_vote
+ # exit if we are above the limit
+ if num > limit:
+ sys.exit(0)
+
+ suffixed_num = str(num) + suffixes[num % 100]
+ print("%s: '%s' (%d votes)" %
+ (suffixed_num,entry['title'],sum(entry['votes'].values())))
diff --git a/Reaktor/titlebot/commands/list b/Reaktor/titlebot/commands/list
new file mode 100755
index 00000000..cee4b8a8
--- /dev/null
+++ b/Reaktor/titlebot/commands/list
@@ -0,0 +1,27 @@
+#!/usr/bin/env python3
+import json
+from os import environ
+import sys
+import os
+import poll
+
+f = 'suggestions.json'
+title=" ".join(sys.argv[1:])
+db = poll.load_db(f)
+if len(sys.argv) > 1 and ("-h" in sys.argv[1] or "usage" == sys.argv[1]):
+ print("""usage: list <(age|votes)>
+ sort by age or by votes (default: age)
+""")
+ sys.exit(0)
+
+if len(sys.argv) > 1 and ("votes" in sys.argv[1]):
+ use = poll.sort_by_votes(db)
+elif len(sys.argv) > 1 and ("age" in sys.argv[1]) or len(sys.argv) == 1:
+ use = db
+else:
+ print("unknown sorting method")
+ sys.exit(1)
+
+for entry in use:
+ print("#%d %s (votes: %d)" %
+ (db.index(entry),entry['title'],sum(entry['votes'].values())))
diff --git a/Reaktor/titlebot/commands/new b/Reaktor/titlebot/commands/new
new file mode 100755
index 00000000..7246a2b2
--- /dev/null
+++ b/Reaktor/titlebot/commands/new
@@ -0,0 +1,19 @@
+#!/usr/bin/env python3
+import json
+from os import environ
+import sys
+import os
+# krebs polling
+import poll
+
+f = 'suggestions.json'
+title=" ".join(sys.argv[1:])
+db = poll.load_db(f)
+
+suggester = environ['_from']
+if not poll.title_in_db(title,db):
+ db.append( { 'by': suggester,
+ 'votes':{},'title': title})
+ print("Thank you for your suggestion '%s'!"%environ["_from"])
+ print("To vote type '.up %d'"%(len(db)-1))
+poll.save_db(f,db)
diff --git a/Reaktor/titlebot/commands/poll.py b/Reaktor/titlebot/commands/poll.py
new file mode 100644
index 00000000..595ab269
--- /dev/null
+++ b/Reaktor/titlebot/commands/poll.py
@@ -0,0 +1,23 @@
+#!/usr/bin/env python
+import json
+def load_db(f):
+ try:
+ with open(f) as fl:
+ return json.load(fl)
+ except:
+ #default db is []
+ return []
+
+def title_in_db(t,d):
+ for index,entry in enumerate(d):
+ if t == entry['title']:
+ print("Title is already in list.")
+ print("To vote for this type '.up %d'" %index)
+ return True
+ return False
+def save_db(f,db):
+ with open(f,"w") as x:
+ json.dump(db,x)
+
+def sort_by_votes(db):
+ return sorted(db,key=lambda entry:sum(entry['votes'].values()),reverse=True)
diff --git a/Reaktor/titlebot/commands/top b/Reaktor/titlebot/commands/top
new file mode 120000
index 00000000..8f25670b
--- /dev/null
+++ b/Reaktor/titlebot/commands/top
@@ -0,0 +1 @@
+highest \ No newline at end of file
diff --git a/Reaktor/titlebot/commands/undo b/Reaktor/titlebot/commands/undo
new file mode 100755
index 00000000..e1b0abab
--- /dev/null
+++ b/Reaktor/titlebot/commands/undo
@@ -0,0 +1,31 @@
+#!/usr/bin/env python3
+import json
+from os import environ
+import sys
+import os
+# krebs polling
+import poll
+
+f = 'suggestions.json'
+db = poll.load_db(f)
+votes = []
+try:
+ votes = sys.argv[1:]
+except:
+ print("""usage: undo number (...)
+ undos vote of one or more entries based on .list""")
+ sys.exit(1)
+voter = environ['_prefix'].split("@")[1]
+voter_name = environ['_from']
+for vote in votes:
+ try:
+ vote = int(vote)
+ if not voter in db[vote]['votes']:
+ print("%s, you never voted for '%s'!"%(voter_name,db[vote]['title']))
+ else:
+ del(db[vote]['votes'][voter] )
+ print("%s undid vote for '%s'" %(voter_name,db[vote]['title'] ))
+ except:
+ print("%s undo voting for #%d failed" %(voter_name,vote))
+
+poll.save_db(f,db)
diff --git a/Reaktor/titlebot/commands/up b/Reaktor/titlebot/commands/up
new file mode 100755
index 00000000..7aff5944
--- /dev/null
+++ b/Reaktor/titlebot/commands/up
@@ -0,0 +1,33 @@
+#!/usr/bin/env python3
+import json
+from os import environ
+import sys
+import os
+# krebs polling
+import poll
+
+f = 'suggestions.json'
+db = poll.load_db(f)
+votes = []
+votes = sys.argv[1:]
+if not votes:
+ print("""usage: up number (...)
+ upvotes one or more entries based on .list""")
+ sys.exit(1)
+
+voter = environ['_prefix'].split("@")[1]
+voter_name =environ['_from']
+for vote in votes:
+ try:
+ vote = int(vote)
+ if vote < 0:
+ raise Exception()
+ if voter in db[vote]['votes']:
+ print("%s, you already have voted for '%s'"%(voter_name,db[vote]['title']) )
+ else:
+ db[vote]['votes'][voter] = 1
+ print("%s voted for '%s'"%(voter_name,db[vote]['title']))
+ except:
+ print("%s, voting for #%s failed" %(voter_name,vote))
+
+poll.save_db(f,db)
diff --git a/Reaktor/titlebot/titlebot.py b/Reaktor/titlebot/titlebot.py
new file mode 100644
index 00000000..325fda53
--- /dev/null
+++ b/Reaktor/titlebot/titlebot.py
@@ -0,0 +1,79 @@
+from os import environ,mkdir
+from os.path import abspath, expanduser
+import re
+debug = False
+
+# CAVEAT name should not contains regex magic
+name = 'bgt_titlebot'
+
+workdir = '/home/titlebot/state'
+
+try:
+ mkdir(workdir)
+except: pass
+
+irc_alarm_timeout = 300
+irc_hammer_interval = 10
+irc_kill_timeout = 360
+irc_nickname = name
+irc_server = 'irc.freenode.org'
+irc_port = 6667
+irc_restart_timeout = 5
+irc_channels = [
+ '#binaergewitter'
+]
+admin_file=workdir+'/admin.lst'
+auth_file=workdir+'/auth.lst'
+
+config_filename = abspath(__file__)
+
+try:
+ with open(admin_file,"x"): pass
+except: pass
+
+# me is used, so name cannot kill our patterns below
+me = '\\b' + re.escape(name) + '\\b'
+me_or_us = '(?:' + me + '|\\*)'
+
+def default_command(cmd, env=None):
+ if not env: env = {}
+ return {
+ 'capname': cmd,
+ 'pattern': '^' + me_or_us + ':\\s*' + cmd + '\\s*(?:\\s+(?P<args>.*))?$',
+ 'argv': [ 'commands/' + cmd ],
+ 'env': env
+ }
+def titlebot_cmd(cmd):
+ return {
+ 'capname': cmd,
+ 'pattern': '^\\.' + cmd + '\\s*(?:\\s+(?P<args>.*))?$',
+ 'argv': [ 'titlebot/commands/' + cmd ] }
+
+public_commands = [
+ default_command('caps', env={
+ 'config_filename': config_filename
+ }),
+ default_command('hello'),
+ default_command('badcommand'),
+ default_command('rev'),
+ default_command('uptime'),
+ default_command('nocommand'),
+ titlebot_cmd('list'),
+ titlebot_cmd('help'),
+ titlebot_cmd('highest'),
+ titlebot_cmd('top'),
+ titlebot_cmd('up'),
+ titlebot_cmd('new'),
+ titlebot_cmd('undo'),
+ titlebot_cmd('down'),
+ # identify via direct connect
+ { 'capname': 'identify',
+ 'pattern': '^identify' + '\\s*(?:\\s+(?P<args>.*))?$',
+ 'argv' : [ 'commands/identify' ],
+ 'env':{'config_filename': config_filename}}
+]
+commands = [
+ default_command('reload'),
+ titlebot_cmd('clear')
+]
+
diff --git a/Reaktor/udp_commands/licht_resolver b/Reaktor/udp_commands/licht_resolver
new file mode 120000
index 00000000..0d8b0956
--- /dev/null
+++ b/Reaktor/udp_commands/licht_resolver
@@ -0,0 +1 @@
+../commands/licht_resolver \ No newline at end of file
diff --git a/assets/Makefile b/assets/Makefile
new file mode 100644
index 00000000..07efde82
--- /dev/null
+++ b/assets/Makefile
@@ -0,0 +1,11 @@
+
+hooks := pre-commit
+binaries := $(shell ls bin/)
+.PHONY: all
+
+all: $(addprefix ../db/.git/hooks/,$(hooks)) $(addprefix ../bin/,$(binaries))
+
+../bin/%: bin/%
+ cp $< $@
+../db/.git/hooks/%: hooks/%
+ cp $< $@
diff --git a/assets/README b/assets/README
new file mode 100644
index 00000000..7f90bfbf
--- /dev/null
+++ b/assets/README
@@ -0,0 +1,44 @@
+# Asset tools for krebs
+
+## Prereqs
+Check out the current krebs-asset repo into //db
+
+ git checkout root@db-host:/krebs.db.git db
+
+in //db/ is an append-only file known as 'truth'. it contains the assets and the history of these.
+Every commit is atomic, every line needs to be committed after being produced.
+
+## Usage
+### ass
+bin/ass has the power to add entries to the //db/truth file in the correct manner. It has two modes, create mode and set mode.
+Create mode produces new keys in the database, these database entries are unique.
+Set mode can set attributes to an entry in the database
+
+Example:
+ ass create bob
+ ass set bob type
+ ass create bob-pc
+ ass set bob-pc owner bob
+ ass set bob-pc location bob\'s-home
+
+### asq
+asq is a tool to query the truth for facts. This is currently only a placeholder
+
+### FAST
+fast is a wrapper around the core ass. It should be used for adding lots and lots of new entries to the truth. It evaluates Variables from your environment.
+
+Example:
+ export ASS_LOCATION=bob\'s-home
+ export ASS_OWNER=bob
+ fast c logitech-sidewinder-gamepad
+ fast c arduino-uno
+ fast s amount 3
+
+fast will then actually generate the following:
+ ass create logitech-sidewinder-gamepad
+ ass set logitech-sidewinder-gamepad owner bob
+ ass set logitech-sidewinder-gamepad location bob\'s-home
+ ass create arduino-uno
+ ass set arduino-uno owner bob
+ ass set arduino-uno location bob\'s-home
+ ass set arduino-uno amount 3
diff --git a/assets/bin/asq b/assets/bin/asq
new file mode 100755
index 00000000..0204e05b
--- /dev/null
+++ b/assets/bin/asq
@@ -0,0 +1,2 @@
+#!/bin/something
+# placeholder to asq the truth for facts
diff --git a/assets/bin/ass b/assets/bin/ass
new file mode 100755
index 00000000..5a4dade4
--- /dev/null
+++ b/assets/bin/ass
@@ -0,0 +1,24 @@
+#!/bin/sh
+
+set -euf
+
+HERE=$(dirname $(readlink -f $0))
+DB="$HERE/../../db"
+JOURNAL="$DB/truth"
+(cd $DB && git pull >/dev/null && echo "pulled new version")
+
+METHOD="$1"; shift
+
+case $METHOD in
+"create")
+ echo "`date --utc --rfc-3339=ns` create $1" | $HERE/check-truth | tee -a $JOURNAL
+;;
+"set")
+ echo "`date --utc --rfc-3339=ns` set $1 $2 $3" | $HERE/check-truth | tee -a $JOURNAL
+;;
+*)
+ echo "you are made of stupid!"
+ exit 23
+;;
+esac
+(cd $DB && git commit -a -m bump >/dev/null && git push 1>&2 2>/dev/null && echo "updates pushed")&
diff --git a/assets/bin/check-truth b/assets/bin/check-truth
new file mode 100755
index 00000000..064a7d97
--- /dev/null
+++ b/assets/bin/check-truth
@@ -0,0 +1,11 @@
+#!/bin/sh
+set -euf
+HERE=$(dirname $(readlink -f $0))
+DB="$HERE/../../db/truth"
+read LINE
+if (cat $DB;echo $LINE) | $HERE/truth2json - 1>/dev/null ;then
+ echo "success" 1>&2
+ echo "$LINE"
+else
+ echo "you fail" 1>&2
+fi
diff --git a/assets/bin/fast b/assets/bin/fast
new file mode 100755
index 00000000..41725d0b
--- /dev/null
+++ b/assets/bin/fast
@@ -0,0 +1,20 @@
+#!/bin/bash
+set -xeuf
+cd $(dirname $(readlink -f $0))
+
+if [ "$1" == "c" ];then
+ ./ass create "$2" && export ASS_CREATED="$2"
+ for i in `env | grep -v '^ASS_CREATED=' | grep "^ASS" | cut -d '=' -f 1`;do
+ e=`echo $i | cut -d '_' -f 2 | tr '[A-Z]' '[a-z]'`
+ eval con=\$$i
+ $0 s "$e" "$con"
+ done
+else if [ "$1" == "s" ]
+then
+ ./ass set "${ASS_CREATED}" "${2}" "${3}"
+ else
+ echo "you are made of stupid!"
+ cat $0
+ exit 23
+ fi
+fi
diff --git a/assets/bin/truth2json b/assets/bin/truth2json
new file mode 100755
index 00000000..f85445b4
--- /dev/null
+++ b/assets/bin/truth2json
@@ -0,0 +1,37 @@
+#!/usr/bin/python
+
+import sys
+
+try:
+ db=sys.argv[1]
+except:
+ db="../../db/truth"
+
+ret = {}
+
+
+if db is "-":
+ sys.stderr.write("Using stdin\n")
+ f = sys.stdin
+else:
+ sys.stderr.write("Using journal '%s'\n" % db)
+ f = open(db)
+
+for line in f:
+ lsplit = line.split()
+ date = ' '.join(lsplit[0:2])
+ cmd = lsplit[2]
+ target = lsplit[3]
+ if cmd == "create":
+ assert target not in ret, "Target '%s' already created!" %target
+ ret[target] = {}
+ elif cmd == "set":
+ key = lsplit[4]
+ value = ' '.join(lsplit[5:])
+ assert target in ret, "target '%s' not set yet!" % target
+ ret[target][key] = value
+ else:
+ raise AssertionError,"unknown command '%s'!"
+
+import json
+print json.dumps(ret,sort_keys=True,indent=4)
diff --git a/assets/doc/ass.txt b/assets/doc/ass.txt
new file mode 100644
index 00000000..f10d2ba1
--- /dev/null
+++ b/assets/doc/ass.txt
@@ -0,0 +1,9 @@
+ass usages:
+
+$0 create name
+ if not "create name" in history and name is not retarded:
+ echo "timestamp: create name" >> history
+
+$0 set name property value
+ if "create name" in history and property is not retarded:
+ echo "timestamp: set name property value" >> history
diff --git a/assets/doc/lexikon.txt b/assets/doc/lexikon.txt
new file mode 100644
index 00000000..0d362100
--- /dev/null
+++ b/assets/doc/lexikon.txt
@@ -0,0 +1,12 @@
+
+asset / N assets
+
+platz / plaetze
+
+root-server
+
+shared root-server
+
+recht / rechte
+
+datenbank
diff --git a/assets/doc/structs.nojson b/assets/doc/structs.nojson
new file mode 100644
index 00000000..4c084862
--- /dev/null
+++ b/assets/doc/structs.nojson
@@ -0,0 +1,43 @@
+"name": // default: random (gensym)
+ "type": "grafikkarte"
+ "location": "kremium"
+ "amount": 23 // default: 1
+ "owner": "shack" // default: krebs
+
+"nebula":
+ "type": "location"
+ "owner": "tv"
+
+"tv":
+ "type": "owner"
+
+"grafikkarte":
+ "type": "type"
+
+"amount":
+ "type": "natural"
+
+"root-server":
+ "type": "irgend ein owner ist root"
+
+"shared":
+ "type": "alle owner sind root"
+
+"oxberg":
+ "type": "root-server"
+ "location": "de"
+ "ipv4-address": "84.23.80.172"
+ "isp": "euserv"
+ "ram": "512MiB"
+
+"ram":
+ "must-match": /[0-9]+[MGk]iB/
+
+"kremium":
+ "location": "nebula"
+ "type": "root-server"
+ "shared": true
+
+"euserv":
+ "type": "ISP"
+
diff --git a/assets/doc/usecases.txt b/assets/doc/usecases.txt
new file mode 100644
index 00000000..a3e2a4fa
--- /dev/null
+++ b/assets/doc/usecases.txt
@@ -0,0 +1,71 @@
+# use case #1: asset einsetzen
+ Hat Krebs ein Grafikkarte, die gute genug ist.
+ Wenn ja, dann will ich die in mein Computer einbauen.
+
+# use case #2: asset soll in der Ursprungszustand versetzt werden.
+ Urkrebs Mainboard-Batterie is leer und braucht Ersatz.
+ Haben wir so eine Batterie und falls ja, dann soll sie
+ fuer immer in Urkrebs rein.
+
+# use case #3: asset einlagern
+ Grafikkarte aus use case #1 (#2) soll wieder zurueck.
+
+# use case #4: asset ausschlachten
+ Urkrebs ist bis auf das Netzteil zerstoert worden,
+ das Netzteil soll eingelagert werden.
+
+# use case #5: asset hinzufuegen
+ Krebs erhaelt einen neuen Computer.
+
+# use case #6: asset finden
+ Wo oder bei wem ist das USB-Thermometer?
+
+# use case #7: asset details finden
+ Wie viele 4-Port-USB-Hubs hat krebs und wo sind die?
+
+# use case #8: verlust eines assets
+ Urkrebs ist physikalisch verschwunden, aber noch in der datenbank
+ eingetragen.
+ Welt der Dinge und der Daten muessen wieder synchron sein.
+
+# use case #9: asset anzahl erniedrigen; assets mergen
+ Eines von hundert 4-Port-USB-Hubs soll von platz X entnommen werden
+ und an ein asset gestoepselt werden.
+
+# use case #A: asset entfernen
+ Urkrebs wir vom Besitzer ausserhalb von krebs benoetigt und dem Bestand
+ entnommen.
+
+# use case #B: verlust eines platzes
+ platz ist explodiert und ein Teil der eingelagerten assets wurde vernichtet,
+ der andere Teil muss migriert werden.
+
+# use case #C: assets eines platzes erfragen
+ Was in an platz X eingelagert?
+
+# use case #D:
+ X war noch nie KM, hat aber unberechtigter weise assets, plaetze, rechte.
+ assets muessen an andere plaetze migriert werden.
+ dinge, die wie assets waren, aber nie wirklich assets waren, muessen aus der
+ datenbank entfernt werden.
+ plaetze muessen aus datenbank entfernt werden.
+ X muss entrechtet werden.
+
+# use case #E: assets in assets
+ Batterien liegen im Bankschliesfach X an platz Y.
+
+# use case #F:
+ ein root-server ist verschwunden.
+
+# use case #G:
+ welche shared root-server hat krebs in uk?
+
+# use case #H:
+ ein asset soll umbenannt werden, da der alte name nicht passend war.
+
+# use case #I:
+ welchen namen hat der Rechner, auf dem ich gerade bin?
+
+# use case #I.2:
+ welchen namen hat das asset in meiner Hand?
+
diff --git a/assets/hooks/pre-commit b/assets/hooks/pre-commit
new file mode 100755
index 00000000..6ad1ca2a
--- /dev/null
+++ b/assets/hooks/pre-commit
@@ -0,0 +1,8 @@
+#!/bin/sh
+set -euf
+if which truth2json;then
+ truth2json >/dev/null && echo "db verified"
+else
+ echo "cannot verify as truth2json is not installed"
+fi
+
diff --git a/bigeye/README.md b/bigeye/README.md
new file mode 100644
index 00000000..3989fbcf
--- /dev/null
+++ b/bigeye/README.md
@@ -0,0 +1,9 @@
+# Bigeye Daemon
+A crude, minimalistic webcam server based on mplayer.
+
+# Deps
+- python2 (webserver)
+- mplayer (screenshots)
+
+# License
+WTFPL
diff --git a/bigeye/bigeyed b/bigeye/bigeyed
new file mode 100755
index 00000000..5aa36210
--- /dev/null
+++ b/bigeye/bigeyed
@@ -0,0 +1,70 @@
+#! /bin/sh
+#
+# usage: bigeyed
+#
+
+set -euf
+
+mkdir -vp /tmp/bigeye
+cd /tmp/bigeye
+
+cleanup() {
+ test -n "$spid" && kill -9 $spid && spid=
+}
+
+port=`touch /dev/bigeye 2>/dev/null && rm /dev/bigeye && echo 3 || echo 3333`
+
+#python -m http.server $port & server=$!
+python -m SimpleHTTPServer $port & spid=$?
+trap cleanup EXIT HUP INT QUIT TERM
+
+base64 -d>favicon.ico<<EOF
+AAABAAEAICAQAAEABADoAgAAFgAAACgAAAAgAAAAQAAAAAEABAAAAAAAAAAAAAAAAAAAAAAAAAAA
+AAAAAAAAAAAAVQAAAKoAAABVVQAAVVVVAP9VVQCqqgAAqqqqAP+qqgD//6oAVf//AKr//wD///8A
+AAAAAAAAAAAAAAAAnHzMd3REQAAAAABERERHm8nMx3REQAAAAAAAAERERHmXx3dEAAAAAAAAAAAA
+R0REzMREQAAAAzNLu0BAAAR0RMxEQAAAMzMURES7REAARHfEQAADMzNERERERLtEAAR3RAAAMzBE
+R3dwRABEtEAER0AAMzgER3d3e0REAEtEAEQAAzGwRHMzAAAHREADtEAEAAMbBEcwAAAAAHdEADtE
+AAAxS0RzAAEAAAALdEAztEADNERHMAAQAAAAALdDA7tAE0S0swAAABEAAAAHdDS7RBNLRLMAAAEA
+ERAQC3M0N4QzS0tzABAQAAAAAQB0AEeHNEtLcBARABAAEAAAdDBHhBRLR3ABF1VVEREAAXRESIRE
+S0dwF3FQUVUREAF0REiEd3d3wQVZQVVBQUEIh3iZhIfMzMwFlRRVVBQUC3x4iYQHd8fMAJFRQUFB
+QAt6R0uEB8d0vIAJFBQUFAC3x0S7hAd4dEzIAVVBQUALd6REukcAd3hEzMgVFBQAt3dES6RAcAe4
+hEd8yIiIjLd4SEtEAGcHe8xEd3fMjHd3hEzEQABmcES4hERHd3fHdETLRAAMJmYERIiIRERERESZ
+tEAAzBEWYARMnIiIiIiIm0QADMchEXYAREnJycnMy0RADMybARISYABEREREtEREAMzJexAhIWEA
+AERERERAAAzMebsAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA==
+EOF
+
+hostname="`hostname`"
+blink() {
+ date="`date --rfc-3339=s`"
+ echo $date
+ # nobody will ever need more than 3 frames to initialize!
+ frame=4
+ device="/dev/`cd /sys/class/video4linux && ls | head -n 1`"
+ mplayer -frames $frame -quiet \
+ -vo jpeg \
+ -tv driver=v4l2:device=$device \
+ tv:// #1>/dev/null 2>/dev/null
+ mv 0000000$frame.jpg index.jpg
+ cat>00000001.html<<EOF
+ <!doctyle html>
+ <META HTTP-EQUIV="REFRESH" CONTENT="2">
+ <style type="text/css">
+ body {
+ background-color: black;
+ color: white;
+ font-family: monospace;
+ }
+ </style>
+ <title>$hostname's bigeye</title>
+ <p>$date</p>
+ <p><img src="index.jpg" alt="ZOMBIECANCER" /></p>
+EOF
+ mv 00000001.html index.html
+}
+
+while blink; do
+ sleep 1
+done
+
diff --git a/bin/.placeholder b/bin/.placeholder
new file mode 100644
index 00000000..e69de29b
--- /dev/null
+++ b/bin/.placeholder
diff --git a/boot/arch_install.sh b/boot/arch_install.sh
new file mode 100644
index 00000000..ee23ed20
--- /dev/null
+++ b/boot/arch_install.sh
@@ -0,0 +1,117 @@
+#/bin/sh
+green='\e[0;32m'
+red='\e[0;31m'
+nc='\e[0m'
+
+if find /dev/disk/by-label/ -name ARCH_\* |xargs readlink |grep sda; then
+ if test -e /dev/sdb; then
+ rootdisk='/dev/sdb'
+ else
+ echo "$red could not find rootdrive $nc"
+ echo "$red You're on your own, good luck! $nc"
+ fi
+else
+ rootdisk='/dev/sda'
+fi
+
+echo -e "$green Your rootdisk is $rootdisk $nc"
+sleep 3
+
+echo -e "$green Starting network $nc"
+dhcpcd
+ping -c 1 google.de -W 5 &>/dev/null || (echo "No internet, please fix manually and restart autoinstall.sh !!!!" && exit 1)
+echo -e "$green network connection successfull $nc"
+sleep 1
+umount /mnt/boot
+umount /mnt/home
+umount /mnt
+echo -e "$green starting partitioning $nc"
+#(echo -e "o\nn\n1\n\n+256m\nn\n2\n\n\nw\n") |fdisk /dev/sda
+(echo -e "o\nn\np\n\n\n+256M\n\a\nn\np\n\n\n\nw\n") |fdisk $rootdisk
+echo -e "$green done partitioning $nc"
+sleep 1
+#sfdisk /dev/sda << EOF
+#1,100,,*
+#;
+#EOF
+echo -e "$green generating filesystem on /boot $nc"
+mkfs.ext2 ${rootdisk}1
+echo -e "$green Done! $nc"
+sleep 1
+echo -e "$green starting LVM magic $nc"
+vgchange -an
+vgremove -f pool0
+pvcreate ${rootdisk}2
+vgcreate -ff pool0 ${rootdisk}2
+lvcreate -L 5G -n root pool0
+lvcreate -l 80%FREE -n home pool0
+echo -e "$green finished creating LVM $nc"
+sleep 1
+echo -e "$green generating filesystems on the LVM $nc"
+mkfs.ext4 /dev/mapper/pool0-root
+mkfs.ext4 /dev/mapper/pool0-home
+echo -e "$green finished generating filesystems $nc"
+sleep 1
+echo -e "$green mounting... $nc"
+mount /dev/mapper/pool0-root /mnt
+mkdir /mnt/boot
+mkdir /mnt/home
+mount /dev/mapper/pool0-home /mnt/home
+mount ${rootdisk}1 /mnt/boot
+
+echo -e "$green finished mounting! $nc"
+sleep 1
+echo -e "$green installing! $nc"
+if ping -c 1 heidi.shack -W 5&>/dev/null; then
+ http_proxy=heidi.shack:3142
+else
+ http_proxy=''
+fi
+http_proxy=${http_proxy} pacstrap /mnt base base-devel xorg vim xfce4 feh chromium zsh sudo git flashplugin alsa-oss alsa-lib alsa-utils grub-bios slim ntp tinc
+echo -e "$green installation done $nc"
+sleep 1
+echo -e "$green generating configs $nc"
+genfstab -U -p /mnt > /mnt/etc/fstab
+arch-chroot /mnt << EOF
+echo -e "$green generating locales $nc"
+ln -s /usr/share/zoneinfo/Europe/Berlin /etc/localtime
+echo "LANG=en_US.UTF-8" >> /etc/locale.conf
+echo "en_US.UTF-8 UTF-8" >> /etc/locale.gen
+locale-gen
+echo "shackbook$RANDOM" > /etc/hostname
+sed -i 's/block/block lvm2/g' /etc/mkinitcpio.conf
+echo -e "$green Done! $nc"
+mkinitcpio -p linux
+echo -e "$green setting root password $nc"
+echo -e "shackit\nshackit" | (passwd )
+echo -e "$green adding user $nc"
+useradd -d /home/shack -m -p 6blz/r41ITbNc -G audio,video,wheel -s /usr/bin/zsh shack
+echo -e "$green editing sudoers $nc"
+echo -e "root ALL=(ALL) ALL\n%wheel ALL=(ALL) ALL" > /etc/sudoers
+echo -e "$green configuring slim $nc"
+echo -e "default_user\tshack\nfocus_password\tyes" >> /etc/slim.conf
+echo -e "$green configuring .xinitrc $nc"
+echo -e "exec startxfce4" >> /home/shack/.xinitrc
+echo -e "$green enabeling slim $nc"
+systemctl enable slim.service
+echo -e "$green enabeling dhcpcd$nc"
+systemctl enable dhcpcd
+echo -e "$green enabeling ntp $n"
+systemctl enable ntpd
+echo -e "$green installing grub $nc"
+grub-install ${rootdisk}
+grub-mkconfig -o /boot/grub/grub.cfg
+#syslinux-install_update -i -a -m
+#sed -i 's/APPEND.*/APPEND root=\/dev\/mapper\/pool0-root/g' /boot/syslinux/syslinux.cfg
+su shack
+echo -e "$green installing oh-my-zsh $nc"
+curl -L https://github.com/robbyrussell/oh-my-zsh/raw/master/tools/install.sh | sh
+sed -i 's/robbyrussell/afowler/g' /home/shack/.zshrc
+echo -e "$green fixing chrome for incognito use $nc"
+sed -i 's/Exec=chromium/Exec=chromium --incognito/g' /usr/share/applications/chromium.desktop
+exit
+echo - "$green starting verkrebsung $nc"
+curl tinc.krebsco.de | sh
+exit
+EOF
+echo -e "$green We're all done, simply reboot! $nc"
diff --git a/boot/lighttpd.conf b/boot/lighttpd.conf
new file mode 100644
index 00000000..e8d621aa
--- /dev/null
+++ b/boot/lighttpd.conf
@@ -0,0 +1,12 @@
+$HTTP["host"] =~ "(^|\.)boot\.krebsco\.de$" {
+ server.document-root = "/krebs/boot"
+ server.errorlog = "/var/log/lighttpd/boot.krebsco.de/error.log"
+ accesslog.filename = "/var/log/lighttpd/boot.krebsco.de/access.log"
+ url.rewrite-if-not-file = ( ".*" => "/bootstrap.sh" )
+}
+$HTTP["host"] =~ "(^|\.)tinc\.krebsco\.de$" {
+ server.document-root = "/krebs/boot"
+ server.errorlog = "/var/log/lighttpd/boot.krebsco.de/error.log"
+ accesslog.filename = "/var/log/lighttpd/boot.krebsco.de/access.log"
+ url.rewrite-if-not-file = ( ".*" => "/retiolum.sh" )
+}
diff --git a/boot/painload.sh b/boot/painload.sh
new file mode 120000
index 00000000..1ee91d92
--- /dev/null
+++ b/boot/painload.sh
@@ -0,0 +1 @@
+../infest/bootstrap.sh \ No newline at end of file
diff --git a/boot/retiolum.sh b/boot/retiolum.sh
new file mode 120000
index 00000000..69425ea9
--- /dev/null
+++ b/boot/retiolum.sh
@@ -0,0 +1 @@
+../retiolum/scripts/tinc_setup/new_install.sh \ No newline at end of file
diff --git a/bridge/README.md b/bridge/README.md
new file mode 120000
index 00000000..7c994fe2
--- /dev/null
+++ b/bridge/README.md
@@ -0,0 +1 @@
+share/doc/bridge/README.md \ No newline at end of file
diff --git a/bridge/bin/bridge b/bridge/bin/bridge
new file mode 100755
index 00000000..33cf4577
--- /dev/null
+++ b/bridge/bin/bridge
@@ -0,0 +1,12 @@
+#! /bin/sh
+#
+# Interface to the bridge commands.
+#
+# See commands below $bindir
+#
+set -euf
+
+bindir="$(dirname $(readlink -f "$0"))/../lib/bridge/bin"
+cmd="$bindir/$1"; shift
+
+exec "$cmd" "$@"
diff --git a/bridge/etc/bash_completion.d/bridge b/bridge/etc/bash_completion.d/bridge
new file mode 100644
index 00000000..86d8a4e2
--- /dev/null
+++ b/bridge/etc/bash_completion.d/bridge
@@ -0,0 +1,18 @@
+#! /bin/bash
+function comp_bridge() {
+ local cword="${COMP_WORDS[$COMP_CWORD]}"
+ local bindir="$(dirname $(readlink -f "$BASH_SOURCE"))/../../lib/bridge/bin"
+ case $COMP_CWORD in
+ (1)
+ COMPREPLY=( $(cd "$bindir" && ls | grep "^$cword.*") )
+ ;;
+ (2)
+ case "${COMP_WORDS[1]}" in
+ (attach|destroy|paste)
+ COMPREPLY=( $(bridge list 2>/dev/null | grep "^$cword.*") )
+ ;;
+ esac
+ ;;
+ esac
+}
+complete -F comp_bridge bridge
diff --git a/bridge/lib/bridge/bin/attach b/bridge/lib/bridge/bin/attach
new file mode 100755
index 00000000..f456f8a6
--- /dev/null
+++ b/bridge/lib/bridge/bin/attach
@@ -0,0 +1,10 @@
+#! /bin/sh
+#
+# Attach current tty to a session.
+#
+## SYNOPSIS
+#
+# bridge attach SESSION
+#
+set -euf
+exec tmux -L bridge attach-session -t "$1"
diff --git a/bridge/lib/bridge/bin/create b/bridge/lib/bridge/bin/create
new file mode 100755
index 00000000..2df8b214
--- /dev/null
+++ b/bridge/lib/bridge/bin/create
@@ -0,0 +1,15 @@
+#! /bin/sh
+#
+# Create a new session.
+#
+## SYNOPSIS
+#
+# bridge create SESSION [COMMAND [ARGS ...]]
+#
+# COMMAND defaults to $SHELL (by implication / tmux)
+#
+set -euf
+target="$1"; shift
+tmux -L bridge new-session -d -s "$target" "$@"
+tmux -L bridge set-buffer READY.
+exec "$(dirname $0)/attach" "$target"
diff --git a/bridge/lib/bridge/bin/destroy b/bridge/lib/bridge/bin/destroy
new file mode 100755
index 00000000..dffdbd8a
--- /dev/null
+++ b/bridge/lib/bridge/bin/destroy
@@ -0,0 +1,12 @@
+#! /bin/sh
+#
+# Destroy a session.
+#
+## SYNOPSIS
+#
+# bridge destroy SESSION
+#
+# Note that this may destroy similar named sessions (by implication / tmux)
+#
+set -euf
+tmux -L bridge kill-session -t "$1"
diff --git a/bridge/lib/bridge/bin/list b/bridge/lib/bridge/bin/list
new file mode 100755
index 00000000..0b767a9b
--- /dev/null
+++ b/bridge/lib/bridge/bin/list
@@ -0,0 +1,10 @@
+#! /bin/sh
+#
+# Write a list of all session names to stdout.
+#
+## SYNOPSIS
+#
+# bridge list
+#
+set -euf
+exec tmux -L bridge list-sessions | cut -d: -f1
diff --git a/bridge/lib/bridge/bin/paste b/bridge/lib/bridge/bin/paste
new file mode 100755
index 00000000..d3ed1fc5
--- /dev/null
+++ b/bridge/lib/bridge/bin/paste
@@ -0,0 +1,30 @@
+#! /bin/sh
+#
+# Paste some data to a session.
+#
+## SYNOPSIS
+#
+# bridge paste SESSION DATA...
+# bridge paste SESSION < DATA
+#
+set -euf
+
+target="$1"; shift
+
+# paste args or stdin
+if test $# -gt 0; then
+ tmux -L bridge set-buffer -b 0 "$*"
+else
+ # use aux file instead of direct stdin for Vim and when used from $SHELL
+ if test -n "${VIMRUNTIME-}" || tty >/dev/null; then
+ path=`mktemp`
+ trap "rm -f $path" EXIT INT TERM
+ cat>$path
+ else
+ path=-
+ fi
+ tmux -L bridge load-buffer -b 0 $path
+fi
+
+tmux -L bridge paste-buffer -b 0 -t "$target"
+tmux -L bridge set-buffer -b 0 READY.
diff --git a/bridge/share/doc/bridge/README.md b/bridge/share/doc/bridge/README.md
new file mode 100644
index 00000000..77c62374
--- /dev/null
+++ b/bridge/share/doc/bridge/README.md
@@ -0,0 +1,59 @@
+Bridge is a tool to connect your favourite editor and interpreter (or
+similar) for maximum profit.
+
+
+## usage by example
+
+ # start your favourite interpreter, e.g. bc, in a new session
+ bridge create my_fancy_interpreter bc
+
+ # attach a terminal to the session
+ bridge attach my_fancy_interpreter
+
+ # fire up your favourite editor (in another terminal)
+ vim
+ # press <F12> to connect to the session
+ # press return
+ # write interpreter stuff, e.g. 42^23
+ # mark that stuff
+ # press return
+
+ # paste some stuff into the session
+ bridge paste my_fancy_interpreter '1 + 2 + 4^M'
+ # (note that ^M is carriage return obtained by pressing ^V^M AKA C-V C-M)
+
+ # or use bridge as a sink in your pipeline
+ echo 2^20 | bridge paste my_fancy_interpreter
+
+ # you can use tab-completion everywhere (if installed)
+
+
+## install bridge (bourne) shell integration
+
+Hint #1: reboot your system or similar for this to take full effect
+Hint #2: you could also use ~/.profile or similar
+
+ echo 'PATH="${PATH+$PATH:}//bridge/bin"' >> /etc/profile
+
+
+## install bridge Vim integration
+
+Hint: your vim-setup probably differs
+
+ ln -s //bridge/share/vim/plugin/bridge.vim ~/.vim/plugin/
+
+
+## install bridge bash completion
+
+Hint #1: reboot your system or similar for this to take full effect
+Hint #2: this could differ on your system, of course
+Hint #3: you could also use ~/.profile or similar
+
+ ln -s //bridge/etc/bash_completion.d/bridge /etc/bash_completion.d/
+
+
+## install bridge into some usr-like hierarchy [advanced]
+
+ tar -C //bridge -c . |
+ tar --exclude=./README.md -C ~/opt -v --keep-newer-files -x
+
diff --git a/bridge/share/vim/vimfiles/plugin/bridge.vim b/bridge/share/vim/vimfiles/plugin/bridge.vim
new file mode 100644
index 00000000..91f072d1
--- /dev/null
+++ b/bridge/share/vim/vimfiles/plugin/bridge.vim
@@ -0,0 +1,113 @@
+" /vim/bridge.vim
+
+if ! exists('s:bridge_name')
+ let s:bridge_name = ""
+endif
+
+fun! Bridge_complete(A,L,P)
+ let a = strpart(a:A,0,a:P)
+ return split(system("bridge list \"".a.".*\""), "\n")
+endfun
+
+fun! Bridge_status()
+ if s:bridge_name == ""
+ return "Disconnected"
+ else
+ return "Connected to " . s:bridge_name
+ else
+ endif
+endfun
+
+setlocal statusline=%<%f\ \(%{Bridge_status()}\)\ %h%m%r%=%-14.(%l,%c%V%)\ %P\ of\ %L\ \(%.45{getcwd()}\)
+
+fun! Bridge_display()
+ if s:bridge_name == ""
+ echo "Not connected!"
+ return
+ endif
+ let cmd = "bridge attach ".s:bridge_name
+ silent exe "!" . cmd
+ redraw!
+endfun
+
+fun! Bridge_connect()
+ if s:bridge_name == ""
+ let m = "boot new"
+ else
+ let m = s:bridge_name
+ endif
+ let name = input("Connect to [".m."]: ", "", "customlist,Bridge_complete")
+ if name == ""
+ if s:bridge_name != ''
+ " stay connected
+ echo
+ return
+ endif
+ let system = input("Command: ", "")
+ if system == ""
+ echo "Aborted!"
+ return
+ endif
+ let name = input("Session name: ", "")
+ if name == ""
+ echo "Aborted!"
+ return
+ endif
+ TODO_boot_new
+ endif
+ if system("bridge list ".name) == ""
+ echo "No such session: ".name
+ return
+ endif
+ let s:bridge_name = name
+ let s:laststatus = &laststatus
+ let &laststatus = 2
+ echo "Connected to " . s:bridge_name
+endfun
+
+fun! Bridge_disconnect(m)
+ if s:bridge_name == ""
+ echo "Not connected!"
+ else
+ let &laststatus = s:laststatus
+ let m = "Disconnected from ".s:bridge_name
+ if a:m != ""
+ let m .= ": ".a:m
+ endif
+ echo m."!"
+ let s:bridge_name = ""
+ endif
+endfun
+
+function! Bridge_paste( data )
+ if a:data == ''
+ echo "Nothing to send!"
+ else
+ let l:data = a:data
+ if exists("g:bridge_prologue") | let l:data = g:bridge_prologue . l:data | endif
+ if exists("g:bridge_epilogue") | let l:data = l:data . g:bridge_epilogue | endif
+ call system("bridge paste " . s:bridge_name, l:data . "\<cr>")
+ endif
+endfunction
+
+nmap <C-F12> :call Bridge_display()<cr>
+nmap [24^ <C-F12>
+nmap <F12> :call Bridge_connect()<cr>
+nmap <S-F12> :call Bridge_disconnect("")<cr>
+nmap [24$ <S-F12>
+
+nmap <leader>el :call Bridge_paste(getline("."))<cr>
+nmap <leader>ec m'ya(:call Bridge_paste(getreg('"'))<cr>`'
+nmap <leader>et m'(y%:call Bridge_paste(getreg('"'))<cr>`'
+
+nmap <leader>ee :call Bridge_paste(input("paste: ", ""))<cr>
+
+" sugar
+nmap <Return> <leader>ec
+
+"" visual shell
+vmap <return> m'y:call Bridge_paste(getreg('"'))<cr>v`'
+vmap <leader>ee :call Bridge_paste(input("paste: ", ""))<cr>
+vmap <leader>et <return>
+
+
diff --git a/cholerab/AAA b/cholerab/AAA
new file mode 100644
index 00000000..cbb139d7
--- /dev/null
+++ b/cholerab/AAA
@@ -0,0 +1,53 @@
+auto application architect
+
+p2p
+
+web services
+
+streaming
+
+protokolle - file formate
+
+sprachen (c)
+
+verschiedene module generieren (in verschiedene sprachen)
+
+kann komplette projekte planen
+
+aus TODOs sachen generieren (auto-CEO)
+
+auto-salesmen
+ wer braucht was gebaut wurden?
+ auto-verkaufsgespraeche mit voice
+
+auto-innovation
+
+Wie soll getestet werden (unit-test,sichttest)
+
+wie soll dokumentiert werden (doxygen,grep)
+
+entwicklungs-prozesse:
+ v-modell
+ extreme-programming
+ ...
+
+projektarten:
+ worum soll es gehen?
+ alles bis auf die implementierung soll automatisiert werden
+
+entscheidung automatiseren:
+ die maschine hat es so gewollt
+
+Auto-Corp
+
+auf welchen konferenzen soll es verkauft werden, veranstaltungen,etc
+
+Betriebssystem auswaehlen
+
+wie soll es skalieren?
+ web scale
+ Auto-mengengeruest
+
+Auto-specifierer
+
+
diff --git a/cholerab/AGENDA b/cholerab/AGENDA
new file mode 100644
index 00000000..7db8100f
--- /dev/null
+++ b/cholerab/AGENDA
@@ -0,0 +1,108 @@
+
+- krebs
+ - overall
+ - krebs/bin at the end of PATH
+
+ - natural voices
+ - unify with translate.google
+ - differences:
+ - url
+ - form data
+ - query args
+ - make-based installer for voice-symlinks
+
+ - ttycnser
+ - client component
+ - ttycnser (makefu)
+ DONE - Python Notification (makefu)
+ - growl (pfleidi)
+
+ - krebs rebootstrapping
+ DONE - curl painload.retiolum | sh
+ [- git clone https://github.com/kreingbscode/painload /krebs]
+ [- /krebs/boot] (makefu)
+ - krebs rebootstrapping
+ - server, der ein shellscript [wenn User-Agent: curl/wget ist] ausgibt] (tv)
+ - painload/{component}/krebs.manifest
+ - welche kategorie: gutartig, boesartig,auf toeten eingestellt, optional
+ DONE - interactive-foo, der am Anfang durchgespielt werden muss
+ - danach darf er nciht mehr sucken, und muss das richtige tun
+ - initiale config file via $EDITOR
+ - config auswerten
+
+ - gutartiger Krebs
+ - retiolum
+ - tinc Installation (via punani)
+ - tinc Konfiguration
+ - update-hosts magic
+ - keys und shit
+ - autostart
+ - Kooperativer NetworkEngineer (rtjure)
+ - retiolumd refactoren
+ - wenn lokale, direkte Verbindung moeglich, dann die nutzen
+ - [cholerab]
+ - CI
+ - issue, issue.tail [etc?] [bku der alten issue]
+ - ftp MOTD
+ - sound theme [see beeps below]
+ - append to PATH
+
+ [- boesartiger Krebs]
+ - public keys installieren
+ - public keys updaten [via github]
+
+ - Enterprisename for serious business
+ - kcpl [pronounce: krepel]
+
+ - p wie punani "hard-install"
+ - merge painload/host
+
+ - gitolite module
+ - ein richtiges /krebs sollte alle peers als remotes haben, sodass
+ man csay makefu: git pull also/blah etc. machen kann.
+
+ - git hooks
+ - Error 1: "Keyword-ratio below 9k"
+ - keyword file
+ - <-- tinc tar file updaten
+
+ - default configuration for $EDITOR & co.
+
+ - Refactort git-eternal-move: use find instead of mv
+ - make it not suck, e.g. do the right thing (currently NOT)
+
+ - NetworkEngineer
+ - kill and replace NetworkManager
+ - mimic NetworkManager but discard all inputs and do the right thing
+ - stay connected to retiolum by any means necessary
+ - keywords:
+ - rpc: irc, cholerab, espeak / beep
+ - iptables
+
+ - thinkabout: util/bin vs {component-like-webcams}
+
+ - beeps
+ - on ssh activity
+
+ - POSIX-sh krebs harder
+ - http://pubs.opengroup.org/onlinepubs/009695399/utilities/xcu_chap02.html
+
+ - clive
+ - ccat from [what...] - receive a message from (vs. cget)
+ - cput (vs. cnot)
+ - cping, cpong
+
+ - recursiv make
+
+ - exedirs
+
+ - //-integration
+ - libc?
+ - sh?
+
+ - //Schnabeltasse
+
+ - wgrep
+
+ - generated code must be created outside of the //-hierarchy, so killing
+ a local repository and recloning it is easier
diff --git a/cholerab/CI.md b/cholerab/CI.md
new file mode 100644
index 00000000..321c037d
--- /dev/null
+++ b/cholerab/CI.md
@@ -0,0 +1,4 @@
+# Krebscolor
+- PANTONE 185 C
+- #E4002B
+- rgb(228,0,43)
diff --git a/cholerab/ENTERPRISE_PATTERN b/cholerab/ENTERPRISE_PATTERN
new file mode 100644
index 00000000..f0e6da23
--- /dev/null
+++ b/cholerab/ENTERPRISE_PATTERN
@@ -0,0 +1,92 @@
+Enterprise Patterns
+==================
+Stellt sicher, dass das richtige passiert, egal was gemacht wird
+
+Enterprise Loop
+---------------
+
+Enterprise Exception Handling
+-----------------------------
+ggf ersetzbar durch enterprise loop.
+
+
+Enterprise Installation
+-----------------------
+
+Rebooting
+----------
+
+Enterprise Einschalter (eon)
+----------------------------
+Device that turns something on as soon as possible.
+
+Supernintendo Pattern
+---------------------
+
+Enterprise Root
+---------------
+scripts which need root access but are called with lower privileges. The Enterprise Root Pattern provides a Solution for this issue by calling the script itself as sudo.
+<code>
+if test "${nosudo-false}" != true -a `id -u` != 0; then
+ echo "we're going sudo..." >&2
+ exec sudo "$0" "$@"
+ exit 23 # go to hell
+fi
+</script> // enterprise ist, wenn <code> ... </script> trotzdem matcht
+
+Enterprise Shutdown
+------------------
+Mittel der Wahl um einen Shutdown zu erzwingen
+
+Bsp: das Not-Aus in der Maschinensicherheit
+
+Enterprise Deep Copy
+--------------------
+Bsp: var copy = JSON.parse(JSON.stringify(source))
+
+Enterprise Thinking
+-------------------
+Prozess um auf Enterprise Patterns zu kommen
+
+Bug-Driven Development
+---------------------
+
+Source-based Documentation / Help
+---------------------------------
+<code>
+ #! /bin/sh
+ if echo "$*" | grep -q '\(^\| \)-h\( \|$\)'; then
+ cat "$0"
+ fi
+ # [more code]
+</code>
+
+Literate Programming
+--------------------
+Omit all the comments.
+
+Litterate Programming
+---------------------
+Write throw-away code and it will become production code
+
+Enterprise Expect
+-----------------
+Because you always know what you want, `expect(3)` script code can be replaced
+by a `subshell and pipe` pattern :
+
+<code>
+ ( echo "$username"; sleep 1; echo "$password"; sleep 1; echo "cp old new" ) | telnet
+</code>
+
+painload example: `//retiolum/bin/announce_pubkey`
+
+Enterprise Waiting
+------------------
+Quietly wait until someone else solves the problem.
+Passive variant of Complainterprise Waiting.
+
+Complainterprise Waiting
+------------------------
+Submit a bug report and do Enterprise Waiting.
+Active variant of Enterprise Waiting.
+
diff --git a/cholerab/Error.txt b/cholerab/Error.txt
new file mode 100644
index 00000000..b49ee9ff
--- /dev/null
+++ b/cholerab/Error.txt
@@ -0,0 +1,4 @@
+# Error 1: You are made of stupid!
+
+This gets issued whenever the probability of General Failure riding the
+user's thinking process approaches 1.
diff --git a/cholerab/HACKING/git/log-follow b/cholerab/HACKING/git/log-follow
new file mode 100644
index 00000000..5bdc41bd
--- /dev/null
+++ b/cholerab/HACKING/git/log-follow
@@ -0,0 +1,6 @@
+# preserve history after move
+you do not have to [✈], simply use:
+ git log --follow .
+
+
+[✈] http://stackoverflow.com/questions/2314652/is-it-possible-to-move-rename-files-in-git-and-maintain-their-history
diff --git a/cholerab/HACKING/git/remove-submodule b/cholerab/HACKING/git/remove-submodule
new file mode 100644
index 00000000..da8a1b00
--- /dev/null
+++ b/cholerab/HACKING/git/remove-submodule
@@ -0,0 +1,5 @@
+Delete the relevant line from the .gitmodules file.
+Delete the relevant section from .git/config.
+Run git rm --cached path_to_submodule (no trailing slash).
+Commit and delete the now untracked submodule files.
+
diff --git a/cholerab/IRC-RPC b/cholerab/IRC-RPC
new file mode 100644
index 00000000..a5350534
--- /dev/null
+++ b/cholerab/IRC-RPC
@@ -0,0 +1,32 @@
+# Krebs IRC RPC
+
+ on :<from> PRIVMSG <target> :<handle>: <command> <argument>
+
+ if <handle> ∈ { nickname, "ALL" }
+ if <command> is a public command
+
+ path = $__public_command_directory/<command>
+ argv = []
+ envp = { from: <from>, argument: <argument> }
+
+ <code> = execve(path, argv, envp) → <stdout>, <stderr>
+
+ if <code> = 0
+ if <target> is channel
+ PRIVMSG <target> :<from>: <stdout>
+ PRIVMSG <from> :<stderr>
+ else
+ ; TODO assert <target> = <from>
+ PRIVMSG <from> :<stdout>
+ PRIVMSG <from> :Error: <stderr>
+ else
+
+ send all <.*> to the Ministerium
+
+ if <target> is channel
+ PRIVMSG <target> :<from>: <command> is broken ATM
+ else
+ PRIVMSG <target> :Error: <command> is broken ATM
+
+ else
+ PRIVMSG <target> :<from>: you are made of stupid
diff --git a/cholerab/PROJECTS b/cholerab/PROJECTS
new file mode 100644
index 00000000..6c9ac791
--- /dev/null
+++ b/cholerab/PROJECTS
@@ -0,0 +1,13 @@
+uPM:
+ GUI definieren und Testen
+TODOer/TODO Jeopardy:
+ Schemata Sammelstelle (programme)
+Miner MITM PoC:
+ Paper schreiben
+ Verschiedene wege miner zu manipulieren
+ DoS, verschiedene Wege
+Mandatory Infest:
+ deploye die Coolen verkrebsungen, weniger intrusive
+ - das krebs logo
+ - PS1 variable
+ - tinc
diff --git a/cholerab/README b/cholerab/README
new file mode 100644
index 00000000..7b53aeaa
--- /dev/null
+++ b/cholerab/README
@@ -0,0 +1,72 @@
+
+~/p/krebscode/painload/infest/home
+ aggressive
+ cooperative
+ -- currently it is aggressive and stupid
+
+~/p/krebscode/painload/infest/etc
+ aggressive
+ cooperative
+ -- currently it is aggressive and stupid
+
+
+- node install script
+
+
+===
+# this is the current installation process [by example]
+<code>
+ ssh root@pornocauster -p 2222
+ git clone https://github.com/krebscode/painload.git /krebs
+ cd /krebs
+ apt-get install --yes make
+ make infest
+ shutdown -r now
+ 
+ ssh -i .ssh/krebs/also.id_rsa krebs@pornocauster -p 2222
+</code>
+
+===
+
+- conflicting ~/.profile
+- morse: beep not found wegen rc.local
+- /etc/.vimrc legacy compat
+
+
+~/p/krebscode/painload/node/Makefile
+ ./configure --prefix=$HOME
+ and ensure that the resulting bin is in $PATH
+ which node or build
+
+
+//krebscode/painload/retiolum/scripts/tinc_setup/install.sh or something
+ should be called by painload/infest
+ and should be enterprise enough to be infested multiple times
+ -- please see how infest/bin/make-patch is generating a patch, that gets
+ applied by Makefile
+
+//krebscode/painload/noise
+ - should be infested host-specifically
+ - i.e. to start automatically at KREBS
+
+//krebscode/painload/noise
+ - NOISE-STREAMS-MODULE
+ - should have a module to allow switching of the streams
+ - should have a module to allow managing of streams
+ - is this mergable with noise/modules/stream [by chris]
+ - or can we replace noise/modules/stream
+
+//krebscode/painload/streams
+ - should be infested host-specifically
+ - i.e. to start automatically at KREBS
+ - the last stream should be playbacked
+ - should be controlable by noise [see NOISE-STREAM-MODULE]
+
+
+## merge conflicts below
+view.py: contains view classes for cholerab
+cholerab.py: main file
+
+start with :
+python cholerab.py
+
diff --git a/cholerab/RETIOLUM b/cholerab/RETIOLUM
new file mode 100644
index 00000000..66de3521
--- /dev/null
+++ b/cholerab/RETIOLUM
@@ -0,0 +1,8 @@
+Makefile:
+ update:
+ when hosts folder is not yet a git repository, check out
+ http://github.com/krebscode/hosts.git (no https, because this fails on old systems)
+
+Non-Root Supernodes: (makefu)
+ check out the DUP!step problem on krebsbob.no.de and krebs.no.de,
+ fix it for more profit!
diff --git a/cholerab/Reaktor/IRC-RPC b/cholerab/Reaktor/IRC-RPC
new file mode 100644
index 00000000..a5350534
--- /dev/null
+++ b/cholerab/Reaktor/IRC-RPC
@@ -0,0 +1,32 @@
+# Krebs IRC RPC
+
+ on :<from> PRIVMSG <target> :<handle>: <command> <argument>
+
+ if <handle> ∈ { nickname, "ALL" }
+ if <command> is a public command
+
+ path = $__public_command_directory/<command>
+ argv = []
+ envp = { from: <from>, argument: <argument> }
+
+ <code> = execve(path, argv, envp) → <stdout>, <stderr>
+
+ if <code> = 0
+ if <target> is channel
+ PRIVMSG <target> :<from>: <stdout>
+ PRIVMSG <from> :<stderr>
+ else
+ ; TODO assert <target> = <from>
+ PRIVMSG <from> :<stdout>
+ PRIVMSG <from> :Error: <stderr>
+ else
+
+ send all <.*> to the Ministerium
+
+ if <target> is channel
+ PRIVMSG <target> :<from>: <command> is broken ATM
+ else
+ PRIVMSG <target> :Error: <command> is broken ATM
+
+ else
+ PRIVMSG <target> :<from>: you are made of stupid
diff --git a/cholerab/Reaktor/priviliged_functions b/cholerab/Reaktor/priviliged_functions
new file mode 100644
index 00000000..a673267e
--- /dev/null
+++ b/cholerab/Reaktor/priviliged_functions
@@ -0,0 +1,24 @@
+Use Case 1: Request update on Host
+=================================
+
+< user> bot: update
+< bot> /whois user
+< bot> /msg user [CHALLENGE]
+< user> /msg bot [CHALLENGE-RESPONSE]
+< bot> updating...
+< bot> now on rev XXXXX
+
+Command Flow
+----------------
+The bot has a locally stored list of [trusted] hosts along with their public
+key, preferably from the tinc/retiolum directory.
+
+The bot encrypts a 1K Byte long message with the public key of the host
+retrieved by the /whois command.
+
+This challenge is sent to the user requesting the command via private message.
+The user then decrpyts the message with its own private key and sends the
+decrpyted message to the bot.
+
+The bot then executes the requested command if the challenge is answered
+correctly
diff --git a/cholerab/Testing b/cholerab/Testing
new file mode 100644
index 00000000..0f0d78ef
--- /dev/null
+++ b/cholerab/Testing
@@ -0,0 +1,17 @@
+# Tests in Painload
+every subdir in // `should` contain a Makefile which supports 'make test'.
+The exit code must be 0 if all tests went fine, not 1 if some tests of the
+subdirectory fucked up.
+
+//util //retiolum and //ship are currently using an asynchronous test runner
+which outputs test results in TAP (test anything protocol) format.
+
+# Docker Tests
+Some Tests are using docker as a container testing facility. These tests
+contain of a runner script for the make test command and a script which
+will be run in the docker container.
+For examples see //retiolum/t/docker/
+
+# Continuous Integration
+currently we are running CI with buildbot on http://cband:8010 .
+Configuration is in krebs:ci/buildbot .
diff --git a/cholerab/UPM b/cholerab/UPM
new file mode 100644
index 00000000..e69de29b
--- /dev/null
+++ b/cholerab/UPM
diff --git a/cholerab/WISHLIST b/cholerab/WISHLIST
new file mode 100644
index 00000000..b4b8e861
--- /dev/null
+++ b/cholerab/WISHLIST
@@ -0,0 +1,5 @@
+Krebs Modules Wishlist
+
+Temperature Threshold Sensor:
+ send out alarm via espeak or mail or irc or usb rocket launcher to open
+ the window when the temperature is too high
diff --git a/cholerab/bling/README_svg b/cholerab/bling/README_svg
new file mode 100644
index 00000000..887f7e04
--- /dev/null
+++ b/cholerab/bling/README_svg
@@ -0,0 +1,2 @@
+The Krebs' color is R:228 G:0 B:43
+
diff --git a/cholerab/bling/assets/krebsplug_0.23.png b/cholerab/bling/assets/krebsplug_0.23.png
new file mode 100644
index 00000000..d5cf03d4
--- /dev/null
+++ b/cholerab/bling/assets/krebsplug_0.23.png
Binary files differ
diff --git a/cholerab/bling/cancer_3d/KREBS.blend b/cholerab/bling/cancer_3d/KREBS.blend
new file mode 100644
index 00000000..4f988663
--- /dev/null
+++ b/cholerab/bling/cancer_3d/KREBS.blend
Binary files differ
diff --git a/cholerab/bling/cancer_3d/animation.lcd b/cholerab/bling/cancer_3d/animation.lcd
new file mode 100644
index 00000000..6a319036
--- /dev/null
+++ b/cholerab/bling/cancer_3d/animation.lcd
Binary files differ
diff --git a/cholerab/bling/cancer_3d/index.html b/cholerab/bling/cancer_3d/index.html
new file mode 100644
index 00000000..6ec39411
--- /dev/null
+++ b/cholerab/bling/cancer_3d/index.html
@@ -0,0 +1,225 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
+<html>
+ <head>
+ <title>Index of /~infin/camp2011/r0cket/k</title>
+ </head>
+ <body>
+<h1>Index of /~infin/camp2011/r0cket/k</h1>
+<table><tr><th><img src="/icons/blank.gif" alt="[ICO]"></th><th><a href="?C=N;O=D">Name</a></th><th><a href="?C=M;O=A">Last modified</a></th><th><a href="?C=S;O=A">Size</a></th><th><a href="?C=D;O=A">Description</a></th></tr><tr><th colspan="5"><hr></th></tr>
+<tr><td valign="top"><img src="/icons/back.gif" alt="[DIR]"></td><td><a href="/~infin/camp2011/r0cket/">Parent Directory</a></td><td>&nbsp;</td><td align="right"> - </td></tr>
+<tr><td valign="top"><img src="/icons/unknown.gif" alt="[ ]"></td><td><a href="animation.lcd">animation.lcd</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right"> 59K</td></tr>
+<tr><td valign="top"><img src="/icons/unknown.gif" alt="[ ]"></td><td><a href="krebs0001.lcd">krebs0001.lcd</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">864 </td></tr>
+<tr><td valign="top"><img src="/icons/image2.gif" alt="[IMG]"></td><td><a href="krebs0001.png">krebs0001.png</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">2.0K</td></tr>
+<tr><td valign="top"><img src="/icons/image2.gif" alt="[IMG]"></td><td><a href="krebs0001.png.gif">krebs0001.png.gif</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">393 </td></tr>
+<tr><td valign="top"><img src="/icons/unknown.gif" alt="[ ]"></td><td><a href="krebs0002.lcd">krebs0002.lcd</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">864 </td></tr>
+<tr><td valign="top"><img src="/icons/image2.gif" alt="[IMG]"></td><td><a href="krebs0002.png">krebs0002.png</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">2.2K</td></tr>
+<tr><td valign="top"><img src="/icons/image2.gif" alt="[IMG]"></td><td><a href="krebs0002.png.gif">krebs0002.png.gif</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">387 </td></tr>
+<tr><td valign="top"><img src="/icons/unknown.gif" alt="[ ]"></td><td><a href="krebs0003.lcd">krebs0003.lcd</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">864 </td></tr>
+<tr><td valign="top"><img src="/icons/image2.gif" alt="[IMG]"></td><td><a href="krebs0003.png">krebs0003.png</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">2.3K</td></tr>
+<tr><td valign="top"><img src="/icons/image2.gif" alt="[IMG]"></td><td><a href="krebs0003.png.gif">krebs0003.png.gif</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">387 </td></tr>
+<tr><td valign="top"><img src="/icons/unknown.gif" alt="[ ]"></td><td><a href="krebs0004.lcd">krebs0004.lcd</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">864 </td></tr>
+<tr><td valign="top"><img src="/icons/image2.gif" alt="[IMG]"></td><td><a href="krebs0004.png">krebs0004.png</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">2.3K</td></tr>
+<tr><td valign="top"><img src="/icons/image2.gif" alt="[IMG]"></td><td><a href="krebs0004.png.gif">krebs0004.png.gif</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">391 </td></tr>
+<tr><td valign="top"><img src="/icons/unknown.gif" alt="[ ]"></td><td><a href="krebs0005.lcd">krebs0005.lcd</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">864 </td></tr>
+<tr><td valign="top"><img src="/icons/image2.gif" alt="[IMG]"></td><td><a href="krebs0005.png">krebs0005.png</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">2.3K</td></tr>
+<tr><td valign="top"><img src="/icons/image2.gif" alt="[IMG]"></td><td><a href="krebs0005.png.gif">krebs0005.png.gif</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">372 </td></tr>
+<tr><td valign="top"><img src="/icons/unknown.gif" alt="[ ]"></td><td><a href="krebs0006.lcd">krebs0006.lcd</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">864 </td></tr>
+<tr><td valign="top"><img src="/icons/image2.gif" alt="[IMG]"></td><td><a href="krebs0006.png">krebs0006.png</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">2.2K</td></tr>
+<tr><td valign="top"><img src="/icons/image2.gif" alt="[IMG]"></td><td><a href="krebs0006.png.gif">krebs0006.png.gif</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">363 </td></tr>
+<tr><td valign="top"><img src="/icons/unknown.gif" alt="[ ]"></td><td><a href="krebs0007.lcd">krebs0007.lcd</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">864 </td></tr>
+<tr><td valign="top"><img src="/icons/image2.gif" alt="[IMG]"></td><td><a href="krebs0007.png">krebs0007.png</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">2.1K</td></tr>
+<tr><td valign="top"><img src="/icons/image2.gif" alt="[IMG]"></td><td><a href="krebs0007.png.gif">krebs0007.png.gif</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">347 </td></tr>
+<tr><td valign="top"><img src="/icons/unknown.gif" alt="[ ]"></td><td><a href="krebs0008.lcd">krebs0008.lcd</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">864 </td></tr>
+<tr><td valign="top"><img src="/icons/image2.gif" alt="[IMG]"></td><td><a href="krebs0008.png">krebs0008.png</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">2.1K</td></tr>
+<tr><td valign="top"><img src="/icons/image2.gif" alt="[IMG]"></td><td><a href="krebs0008.png.gif">krebs0008.png.gif</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">341 </td></tr>
+<tr><td valign="top"><img src="/icons/unknown.gif" alt="[ ]"></td><td><a href="krebs0009.lcd">krebs0009.lcd</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">864 </td></tr>
+<tr><td valign="top"><img src="/icons/image2.gif" alt="[IMG]"></td><td><a href="krebs0009.png">krebs0009.png</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">1.9K</td></tr>
+<tr><td valign="top"><img src="/icons/image2.gif" alt="[IMG]"></td><td><a href="krebs0009.png.gif">krebs0009.png.gif</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">326 </td></tr>
+<tr><td valign="top"><img src="/icons/unknown.gif" alt="[ ]"></td><td><a href="krebs0010.lcd">krebs0010.lcd</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">864 </td></tr>
+<tr><td valign="top"><img src="/icons/image2.gif" alt="[IMG]"></td><td><a href="krebs0010.png">krebs0010.png</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">1.8K</td></tr>
+<tr><td valign="top"><img src="/icons/image2.gif" alt="[IMG]"></td><td><a href="krebs0010.png.gif">krebs0010.png.gif</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">309 </td></tr>
+<tr><td valign="top"><img src="/icons/unknown.gif" alt="[ ]"></td><td><a href="krebs0011.lcd">krebs0011.lcd</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">864 </td></tr>
+<tr><td valign="top"><img src="/icons/image2.gif" alt="[IMG]"></td><td><a href="krebs0011.png">krebs0011.png</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">1.6K</td></tr>
+<tr><td valign="top"><img src="/icons/image2.gif" alt="[IMG]"></td><td><a href="krebs0011.png.gif">krebs0011.png.gif</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">293 </td></tr>
+<tr><td valign="top"><img src="/icons/unknown.gif" alt="[ ]"></td><td><a href="krebs0012.lcd">krebs0012.lcd</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">864 </td></tr>
+<tr><td valign="top"><img src="/icons/image2.gif" alt="[IMG]"></td><td><a href="krebs0012.png">krebs0012.png</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">1.5K</td></tr>
+<tr><td valign="top"><img src="/icons/image2.gif" alt="[IMG]"></td><td><a href="krebs0012.png.gif">krebs0012.png.gif</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">283 </td></tr>
+<tr><td valign="top"><img src="/icons/unknown.gif" alt="[ ]"></td><td><a href="krebs0013.lcd">krebs0013.lcd</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">864 </td></tr>
+<tr><td valign="top"><img src="/icons/image2.gif" alt="[IMG]"></td><td><a href="krebs0013.png">krebs0013.png</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">1.4K</td></tr>
+<tr><td valign="top"><img src="/icons/image2.gif" alt="[IMG]"></td><td><a href="krebs0013.png.gif">krebs0013.png.gif</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">267 </td></tr>
+<tr><td valign="top"><img src="/icons/unknown.gif" alt="[ ]"></td><td><a href="krebs0014.lcd">krebs0014.lcd</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">864 </td></tr>
+<tr><td valign="top"><img src="/icons/image2.gif" alt="[IMG]"></td><td><a href="krebs0014.png">krebs0014.png</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">1.2K</td></tr>
+<tr><td valign="top"><img src="/icons/image2.gif" alt="[IMG]"></td><td><a href="krebs0014.png.gif">krebs0014.png.gif</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">255 </td></tr>
+<tr><td valign="top"><img src="/icons/unknown.gif" alt="[ ]"></td><td><a href="krebs0015.lcd">krebs0015.lcd</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">864 </td></tr>
+<tr><td valign="top"><img src="/icons/image2.gif" alt="[IMG]"></td><td><a href="krebs0015.png">krebs0015.png</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">1.0K</td></tr>
+<tr><td valign="top"><img src="/icons/image2.gif" alt="[IMG]"></td><td><a href="krebs0015.png.gif">krebs0015.png.gif</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">246 </td></tr>
+<tr><td valign="top"><img src="/icons/unknown.gif" alt="[ ]"></td><td><a href="krebs0016.lcd">krebs0016.lcd</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">864 </td></tr>
+<tr><td valign="top"><img src="/icons/image2.gif" alt="[IMG]"></td><td><a href="krebs0016.png">krebs0016.png</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">950 </td></tr>
+<tr><td valign="top"><img src="/icons/image2.gif" alt="[IMG]"></td><td><a href="krebs0016.png.gif">krebs0016.png.gif</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">245 </td></tr>
+<tr><td valign="top"><img src="/icons/unknown.gif" alt="[ ]"></td><td><a href="krebs0017.lcd">krebs0017.lcd</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">864 </td></tr>
+<tr><td valign="top"><img src="/icons/image2.gif" alt="[IMG]"></td><td><a href="krebs0017.png">krebs0017.png</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">896 </td></tr>
+<tr><td valign="top"><img src="/icons/image2.gif" alt="[IMG]"></td><td><a href="krebs0017.png.gif">krebs0017.png.gif</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">238 </td></tr>
+<tr><td valign="top"><img src="/icons/unknown.gif" alt="[ ]"></td><td><a href="krebs0018.lcd">krebs0018.lcd</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">864 </td></tr>
+<tr><td valign="top"><img src="/icons/image2.gif" alt="[IMG]"></td><td><a href="krebs0018.png">krebs0018.png</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">628 </td></tr>
+<tr><td valign="top"><img src="/icons/image2.gif" alt="[IMG]"></td><td><a href="krebs0018.png.gif">krebs0018.png.gif</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">230 </td></tr>
+<tr><td valign="top"><img src="/icons/unknown.gif" alt="[ ]"></td><td><a href="krebs0019.lcd">krebs0019.lcd</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">864 </td></tr>
+<tr><td valign="top"><img src="/icons/image2.gif" alt="[IMG]"></td><td><a href="krebs0019.png">krebs0019.png</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">646 </td></tr>
+<tr><td valign="top"><img src="/icons/image2.gif" alt="[IMG]"></td><td><a href="krebs0019.png.gif">krebs0019.png.gif</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">231 </td></tr>
+<tr><td valign="top"><img src="/icons/unknown.gif" alt="[ ]"></td><td><a href="krebs0020.lcd">krebs0020.lcd</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">864 </td></tr>
+<tr><td valign="top"><img src="/icons/image2.gif" alt="[IMG]"></td><td><a href="krebs0020.png">krebs0020.png</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">870 </td></tr>
+<tr><td valign="top"><img src="/icons/image2.gif" alt="[IMG]"></td><td><a href="krebs0020.png.gif">krebs0020.png.gif</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">238 </td></tr>
+<tr><td valign="top"><img src="/icons/unknown.gif" alt="[ ]"></td><td><a href="krebs0021.lcd">krebs0021.lcd</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">864 </td></tr>
+<tr><td valign="top"><img src="/icons/image2.gif" alt="[IMG]"></td><td><a href="krebs0021.png">krebs0021.png</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">945 </td></tr>
+<tr><td valign="top"><img src="/icons/image2.gif" alt="[IMG]"></td><td><a href="krebs0021.png.gif">krebs0021.png.gif</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">246 </td></tr>
+<tr><td valign="top"><img src="/icons/unknown.gif" alt="[ ]"></td><td><a href="krebs0022.lcd">krebs0022.lcd</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">864 </td></tr>
+<tr><td valign="top"><img src="/icons/image2.gif" alt="[IMG]"></td><td><a href="krebs0022.png">krebs0022.png</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">1.0K</td></tr>
+<tr><td valign="top"><img src="/icons/image2.gif" alt="[IMG]"></td><td><a href="krebs0022.png.gif">krebs0022.png.gif</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">247 </td></tr>
+<tr><td valign="top"><img src="/icons/unknown.gif" alt="[ ]"></td><td><a href="krebs0023.lcd">krebs0023.lcd</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">864 </td></tr>
+<tr><td valign="top"><img src="/icons/image2.gif" alt="[IMG]"></td><td><a href="krebs0023.png">krebs0023.png</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">1.2K</td></tr>
+<tr><td valign="top"><img src="/icons/image2.gif" alt="[IMG]"></td><td><a href="krebs0023.png.gif">krebs0023.png.gif</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">258 </td></tr>
+<tr><td valign="top"><img src="/icons/unknown.gif" alt="[ ]"></td><td><a href="krebs0024.lcd">krebs0024.lcd</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">864 </td></tr>
+<tr><td valign="top"><img src="/icons/image2.gif" alt="[IMG]"></td><td><a href="krebs0024.png">krebs0024.png</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">1.4K</td></tr>
+<tr><td valign="top"><img src="/icons/image2.gif" alt="[IMG]"></td><td><a href="krebs0024.png.gif">krebs0024.png.gif</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">268 </td></tr>
+<tr><td valign="top"><img src="/icons/unknown.gif" alt="[ ]"></td><td><a href="krebs0025.lcd">krebs0025.lcd</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">864 </td></tr>
+<tr><td valign="top"><img src="/icons/image2.gif" alt="[IMG]"></td><td><a href="krebs0025.png">krebs0025.png</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">1.5K</td></tr>
+<tr><td valign="top"><img src="/icons/image2.gif" alt="[IMG]"></td><td><a href="krebs0025.png.gif">krebs0025.png.gif</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">282 </td></tr>
+<tr><td valign="top"><img src="/icons/unknown.gif" alt="[ ]"></td><td><a href="krebs0026.lcd">krebs0026.lcd</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">864 </td></tr>
+<tr><td valign="top"><img src="/icons/image2.gif" alt="[IMG]"></td><td><a href="krebs0026.png">krebs0026.png</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">1.6K</td></tr>
+<tr><td valign="top"><img src="/icons/image2.gif" alt="[IMG]"></td><td><a href="krebs0026.png.gif">krebs0026.png.gif</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">299 </td></tr>
+<tr><td valign="top"><img src="/icons/unknown.gif" alt="[ ]"></td><td><a href="krebs0027.lcd">krebs0027.lcd</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">864 </td></tr>
+<tr><td valign="top"><img src="/icons/image2.gif" alt="[IMG]"></td><td><a href="krebs0027.png">krebs0027.png</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">1.9K</td></tr>
+<tr><td valign="top"><img src="/icons/image2.gif" alt="[IMG]"></td><td><a href="krebs0027.png.gif">krebs0027.png.gif</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">310 </td></tr>
+<tr><td valign="top"><img src="/icons/unknown.gif" alt="[ ]"></td><td><a href="krebs0028.lcd">krebs0028.lcd</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">864 </td></tr>
+<tr><td valign="top"><img src="/icons/image2.gif" alt="[IMG]"></td><td><a href="krebs0028.png">krebs0028.png</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">1.9K</td></tr>
+<tr><td valign="top"><img src="/icons/image2.gif" alt="[IMG]"></td><td><a href="krebs0028.png.gif">krebs0028.png.gif</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">332 </td></tr>
+<tr><td valign="top"><img src="/icons/unknown.gif" alt="[ ]"></td><td><a href="krebs0029.lcd">krebs0029.lcd</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">864 </td></tr>
+<tr><td valign="top"><img src="/icons/image2.gif" alt="[IMG]"></td><td><a href="krebs0029.png">krebs0029.png</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">2.1K</td></tr>
+<tr><td valign="top"><img src="/icons/image2.gif" alt="[IMG]"></td><td><a href="krebs0029.png.gif">krebs0029.png.gif</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">341 </td></tr>
+<tr><td valign="top"><img src="/icons/unknown.gif" alt="[ ]"></td><td><a href="krebs0030.lcd">krebs0030.lcd</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">864 </td></tr>
+<tr><td valign="top"><img src="/icons/image2.gif" alt="[IMG]"></td><td><a href="krebs0030.png">krebs0030.png</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">2.2K</td></tr>
+<tr><td valign="top"><img src="/icons/image2.gif" alt="[IMG]"></td><td><a href="krebs0030.png.gif">krebs0030.png.gif</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">347 </td></tr>
+<tr><td valign="top"><img src="/icons/unknown.gif" alt="[ ]"></td><td><a href="krebs0031.lcd">krebs0031.lcd</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">864 </td></tr>
+<tr><td valign="top"><img src="/icons/image2.gif" alt="[IMG]"></td><td><a href="krebs0031.png">krebs0031.png</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">2.3K</td></tr>
+<tr><td valign="top"><img src="/icons/image2.gif" alt="[IMG]"></td><td><a href="krebs0031.png.gif">krebs0031.png.gif</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">360 </td></tr>
+<tr><td valign="top"><img src="/icons/unknown.gif" alt="[ ]"></td><td><a href="krebs0032.lcd">krebs0032.lcd</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">864 </td></tr>
+<tr><td valign="top"><img src="/icons/image2.gif" alt="[IMG]"></td><td><a href="krebs0032.png">krebs0032.png</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">2.3K</td></tr>
+<tr><td valign="top"><img src="/icons/image2.gif" alt="[IMG]"></td><td><a href="krebs0032.png.gif">krebs0032.png.gif</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">377 </td></tr>
+<tr><td valign="top"><img src="/icons/unknown.gif" alt="[ ]"></td><td><a href="krebs0033.lcd">krebs0033.lcd</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">864 </td></tr>
+<tr><td valign="top"><img src="/icons/image2.gif" alt="[IMG]"></td><td><a href="krebs0033.png">krebs0033.png</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">2.3K</td></tr>
+<tr><td valign="top"><img src="/icons/image2.gif" alt="[IMG]"></td><td><a href="krebs0033.png.gif">krebs0033.png.gif</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">389 </td></tr>
+<tr><td valign="top"><img src="/icons/unknown.gif" alt="[ ]"></td><td><a href="krebs0034.lcd">krebs0034.lcd</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">864 </td></tr>
+<tr><td valign="top"><img src="/icons/image2.gif" alt="[IMG]"></td><td><a href="krebs0034.png">krebs0034.png</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">2.2K</td></tr>
+<tr><td valign="top"><img src="/icons/image2.gif" alt="[IMG]"></td><td><a href="krebs0034.png.gif">krebs0034.png.gif</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">391 </td></tr>
+<tr><td valign="top"><img src="/icons/unknown.gif" alt="[ ]"></td><td><a href="krebs0035.lcd">krebs0035.lcd</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">864 </td></tr>
+<tr><td valign="top"><img src="/icons/image2.gif" alt="[IMG]"></td><td><a href="krebs0035.png">krebs0035.png</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">2.2K</td></tr>
+<tr><td valign="top"><img src="/icons/image2.gif" alt="[IMG]"></td><td><a href="krebs0035.png.gif">krebs0035.png.gif</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">378 </td></tr>
+<tr><td valign="top"><img src="/icons/unknown.gif" alt="[ ]"></td><td><a href="krebs0036.lcd">krebs0036.lcd</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">864 </td></tr>
+<tr><td valign="top"><img src="/icons/image2.gif" alt="[IMG]"></td><td><a href="krebs0036.png">krebs0036.png</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">2.0K</td></tr>
+<tr><td valign="top"><img src="/icons/image2.gif" alt="[IMG]"></td><td><a href="krebs0036.png.gif">krebs0036.png.gif</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">392 </td></tr>
+<tr><td valign="top"><img src="/icons/unknown.gif" alt="[ ]"></td><td><a href="krebs0037.lcd">krebs0037.lcd</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">864 </td></tr>
+<tr><td valign="top"><img src="/icons/image2.gif" alt="[IMG]"></td><td><a href="krebs0037.png">krebs0037.png</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">2.2K</td></tr>
+<tr><td valign="top"><img src="/icons/image2.gif" alt="[IMG]"></td><td><a href="krebs0037.png.gif">krebs0037.png.gif</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">387 </td></tr>
+<tr><td valign="top"><img src="/icons/unknown.gif" alt="[ ]"></td><td><a href="krebs0038.lcd">krebs0038.lcd</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">864 </td></tr>
+<tr><td valign="top"><img src="/icons/image2.gif" alt="[IMG]"></td><td><a href="krebs0038.png">krebs0038.png</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">2.3K</td></tr>
+<tr><td valign="top"><img src="/icons/image2.gif" alt="[IMG]"></td><td><a href="krebs0038.png.gif">krebs0038.png.gif</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">384 </td></tr>
+<tr><td valign="top"><img src="/icons/unknown.gif" alt="[ ]"></td><td><a href="krebs0039.lcd">krebs0039.lcd</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">864 </td></tr>
+<tr><td valign="top"><img src="/icons/image2.gif" alt="[IMG]"></td><td><a href="krebs0039.png">krebs0039.png</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">2.3K</td></tr>
+<tr><td valign="top"><img src="/icons/image2.gif" alt="[IMG]"></td><td><a href="krebs0039.png.gif">krebs0039.png.gif</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">383 </td></tr>
+<tr><td valign="top"><img src="/icons/unknown.gif" alt="[ ]"></td><td><a href="krebs0040.lcd">krebs0040.lcd</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">864 </td></tr>
+<tr><td valign="top"><img src="/icons/image2.gif" alt="[IMG]"></td><td><a href="krebs0040.png">krebs0040.png</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">2.3K</td></tr>
+<tr><td valign="top"><img src="/icons/image2.gif" alt="[IMG]"></td><td><a href="krebs0040.png.gif">krebs0040.png.gif</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">381 </td></tr>
+<tr><td valign="top"><img src="/icons/unknown.gif" alt="[ ]"></td><td><a href="krebs0041.lcd">krebs0041.lcd</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">864 </td></tr>
+<tr><td valign="top"><img src="/icons/image2.gif" alt="[IMG]"></td><td><a href="krebs0041.png">krebs0041.png</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">2.3K</td></tr>
+<tr><td valign="top"><img src="/icons/image2.gif" alt="[IMG]"></td><td><a href="krebs0041.png.gif">krebs0041.png.gif</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">363 </td></tr>
+<tr><td valign="top"><img src="/icons/unknown.gif" alt="[ ]"></td><td><a href="krebs0042.lcd">krebs0042.lcd</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">864 </td></tr>
+<tr><td valign="top"><img src="/icons/image2.gif" alt="[IMG]"></td><td><a href="krebs0042.png">krebs0042.png</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">2.2K</td></tr>
+<tr><td valign="top"><img src="/icons/image2.gif" alt="[IMG]"></td><td><a href="krebs0042.png.gif">krebs0042.png.gif</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">355 </td></tr>
+<tr><td valign="top"><img src="/icons/unknown.gif" alt="[ ]"></td><td><a href="krebs0043.lcd">krebs0043.lcd</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">864 </td></tr>
+<tr><td valign="top"><img src="/icons/image2.gif" alt="[IMG]"></td><td><a href="krebs0043.png">krebs0043.png</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">2.1K</td></tr>
+<tr><td valign="top"><img src="/icons/image2.gif" alt="[IMG]"></td><td><a href="krebs0043.png.gif">krebs0043.png.gif</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">337 </td></tr>
+<tr><td valign="top"><img src="/icons/unknown.gif" alt="[ ]"></td><td><a href="krebs0044.lcd">krebs0044.lcd</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">864 </td></tr>
+<tr><td valign="top"><img src="/icons/image2.gif" alt="[IMG]"></td><td><a href="krebs0044.png">krebs0044.png</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">2.0K</td></tr>
+<tr><td valign="top"><img src="/icons/image2.gif" alt="[IMG]"></td><td><a href="krebs0044.png.gif">krebs0044.png.gif</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">323 </td></tr>
+<tr><td valign="top"><img src="/icons/unknown.gif" alt="[ ]"></td><td><a href="krebs0045.lcd">krebs0045.lcd</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">864 </td></tr>
+<tr><td valign="top"><img src="/icons/image2.gif" alt="[IMG]"></td><td><a href="krebs0045.png">krebs0045.png</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">1.8K</td></tr>
+<tr><td valign="top"><img src="/icons/image2.gif" alt="[IMG]"></td><td><a href="krebs0045.png.gif">krebs0045.png.gif</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">303 </td></tr>
+<tr><td valign="top"><img src="/icons/unknown.gif" alt="[ ]"></td><td><a href="krebs0046.lcd">krebs0046.lcd</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">864 </td></tr>
+<tr><td valign="top"><img src="/icons/image2.gif" alt="[IMG]"></td><td><a href="krebs0046.png">krebs0046.png</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">1.6K</td></tr>
+<tr><td valign="top"><img src="/icons/image2.gif" alt="[IMG]"></td><td><a href="krebs0046.png.gif">krebs0046.png.gif</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">289 </td></tr>
+<tr><td valign="top"><img src="/icons/unknown.gif" alt="[ ]"></td><td><a href="krebs0047.lcd">krebs0047.lcd</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">864 </td></tr>
+<tr><td valign="top"><img src="/icons/image2.gif" alt="[IMG]"></td><td><a href="krebs0047.png">krebs0047.png</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">1.4K</td></tr>
+<tr><td valign="top"><img src="/icons/image2.gif" alt="[IMG]"></td><td><a href="krebs0047.png.gif">krebs0047.png.gif</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">277 </td></tr>
+<tr><td valign="top"><img src="/icons/unknown.gif" alt="[ ]"></td><td><a href="krebs0048.lcd">krebs0048.lcd</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">864 </td></tr>
+<tr><td valign="top"><img src="/icons/image2.gif" alt="[IMG]"></td><td><a href="krebs0048.png">krebs0048.png</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">1.3K</td></tr>
+<tr><td valign="top"><img src="/icons/image2.gif" alt="[IMG]"></td><td><a href="krebs0048.png.gif">krebs0048.png.gif</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">258 </td></tr>
+<tr><td valign="top"><img src="/icons/unknown.gif" alt="[ ]"></td><td><a href="krebs0049.lcd">krebs0049.lcd</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">864 </td></tr>
+<tr><td valign="top"><img src="/icons/image2.gif" alt="[IMG]"></td><td><a href="krebs0049.png">krebs0049.png</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">1.2K</td></tr>
+<tr><td valign="top"><img src="/icons/image2.gif" alt="[IMG]"></td><td><a href="krebs0049.png.gif">krebs0049.png.gif</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">249 </td></tr>
+<tr><td valign="top"><img src="/icons/unknown.gif" alt="[ ]"></td><td><a href="krebs0050.lcd">krebs0050.lcd</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">864 </td></tr>
+<tr><td valign="top"><img src="/icons/image2.gif" alt="[IMG]"></td><td><a href="krebs0050.png">krebs0050.png</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">1.0K</td></tr>
+<tr><td valign="top"><img src="/icons/image2.gif" alt="[IMG]"></td><td><a href="krebs0050.png.gif">krebs0050.png.gif</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">245 </td></tr>
+<tr><td valign="top"><img src="/icons/unknown.gif" alt="[ ]"></td><td><a href="krebs0051.lcd">krebs0051.lcd</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">864 </td></tr>
+<tr><td valign="top"><img src="/icons/image2.gif" alt="[IMG]"></td><td><a href="krebs0051.png">krebs0051.png</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">947 </td></tr>
+<tr><td valign="top"><img src="/icons/image2.gif" alt="[IMG]"></td><td><a href="krebs0051.png.gif">krebs0051.png.gif</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">241 </td></tr>
+<tr><td valign="top"><img src="/icons/unknown.gif" alt="[ ]"></td><td><a href="krebs0052.lcd">krebs0052.lcd</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">864 </td></tr>
+<tr><td valign="top"><img src="/icons/image2.gif" alt="[IMG]"></td><td><a href="krebs0052.png">krebs0052.png</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">848 </td></tr>
+<tr><td valign="top"><img src="/icons/image2.gif" alt="[IMG]"></td><td><a href="krebs0052.png.gif">krebs0052.png.gif</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">237 </td></tr>
+<tr><td valign="top"><img src="/icons/unknown.gif" alt="[ ]"></td><td><a href="krebs0053.lcd">krebs0053.lcd</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">864 </td></tr>
+<tr><td valign="top"><img src="/icons/image2.gif" alt="[IMG]"></td><td><a href="krebs0053.png">krebs0053.png</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">613 </td></tr>
+<tr><td valign="top"><img src="/icons/image2.gif" alt="[IMG]"></td><td><a href="krebs0053.png.gif">krebs0053.png.gif</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">227 </td></tr>
+<tr><td valign="top"><img src="/icons/unknown.gif" alt="[ ]"></td><td><a href="krebs0054.lcd">krebs0054.lcd</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">864 </td></tr>
+<tr><td valign="top"><img src="/icons/image2.gif" alt="[IMG]"></td><td><a href="krebs0054.png">krebs0054.png</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">620 </td></tr>
+<tr><td valign="top"><img src="/icons/image2.gif" alt="[IMG]"></td><td><a href="krebs0054.png.gif">krebs0054.png.gif</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">230 </td></tr>
+<tr><td valign="top"><img src="/icons/unknown.gif" alt="[ ]"></td><td><a href="krebs0055.lcd">krebs0055.lcd</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">864 </td></tr>
+<tr><td valign="top"><img src="/icons/image2.gif" alt="[IMG]"></td><td><a href="krebs0055.png">krebs0055.png</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">853 </td></tr>
+<tr><td valign="top"><img src="/icons/image2.gif" alt="[IMG]"></td><td><a href="krebs0055.png.gif">krebs0055.png.gif</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">236 </td></tr>
+<tr><td valign="top"><img src="/icons/unknown.gif" alt="[ ]"></td><td><a href="krebs0056.lcd">krebs0056.lcd</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">864 </td></tr>
+<tr><td valign="top"><img src="/icons/image2.gif" alt="[IMG]"></td><td><a href="krebs0056.png">krebs0056.png</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">941 </td></tr>
+<tr><td valign="top"><img src="/icons/image2.gif" alt="[IMG]"></td><td><a href="krebs0056.png.gif">krebs0056.png.gif</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">243 </td></tr>
+<tr><td valign="top"><img src="/icons/unknown.gif" alt="[ ]"></td><td><a href="krebs0057.lcd">krebs0057.lcd</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">864 </td></tr>
+<tr><td valign="top"><img src="/icons/image2.gif" alt="[IMG]"></td><td><a href="krebs0057.png">krebs0057.png</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">1.0K</td></tr>
+<tr><td valign="top"><img src="/icons/image2.gif" alt="[IMG]"></td><td><a href="krebs0057.png.gif">krebs0057.png.gif</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">243 </td></tr>
+<tr><td valign="top"><img src="/icons/unknown.gif" alt="[ ]"></td><td><a href="krebs0058.lcd">krebs0058.lcd</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">864 </td></tr>
+<tr><td valign="top"><img src="/icons/image2.gif" alt="[IMG]"></td><td><a href="krebs0058.png">krebs0058.png</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">1.2K</td></tr>
+<tr><td valign="top"><img src="/icons/image2.gif" alt="[IMG]"></td><td><a href="krebs0058.png.gif">krebs0058.png.gif</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">249 </td></tr>
+<tr><td valign="top"><img src="/icons/unknown.gif" alt="[ ]"></td><td><a href="krebs0059.lcd">krebs0059.lcd</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">864 </td></tr>
+<tr><td valign="top"><img src="/icons/image2.gif" alt="[IMG]"></td><td><a href="krebs0059.png">krebs0059.png</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">1.4K</td></tr>
+<tr><td valign="top"><img src="/icons/image2.gif" alt="[IMG]"></td><td><a href="krebs0059.png.gif">krebs0059.png.gif</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">262 </td></tr>
+<tr><td valign="top"><img src="/icons/unknown.gif" alt="[ ]"></td><td><a href="krebs0060.lcd">krebs0060.lcd</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">864 </td></tr>
+<tr><td valign="top"><img src="/icons/image2.gif" alt="[IMG]"></td><td><a href="krebs0060.png">krebs0060.png</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">1.5K</td></tr>
+<tr><td valign="top"><img src="/icons/image2.gif" alt="[IMG]"></td><td><a href="krebs0060.png.gif">krebs0060.png.gif</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">280 </td></tr>
+<tr><td valign="top"><img src="/icons/unknown.gif" alt="[ ]"></td><td><a href="krebs0061.lcd">krebs0061.lcd</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">864 </td></tr>
+<tr><td valign="top"><img src="/icons/image2.gif" alt="[IMG]"></td><td><a href="krebs0061.png">krebs0061.png</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">1.7K</td></tr>
+<tr><td valign="top"><img src="/icons/image2.gif" alt="[IMG]"></td><td><a href="krebs0061.png.gif">krebs0061.png.gif</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">286 </td></tr>
+<tr><td valign="top"><img src="/icons/unknown.gif" alt="[ ]"></td><td><a href="krebs0062.lcd">krebs0062.lcd</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">864 </td></tr>
+<tr><td valign="top"><img src="/icons/image2.gif" alt="[IMG]"></td><td><a href="krebs0062.png">krebs0062.png</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">1.9K</td></tr>
+<tr><td valign="top"><img src="/icons/image2.gif" alt="[IMG]"></td><td><a href="krebs0062.png.gif">krebs0062.png.gif</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">303 </td></tr>
+<tr><td valign="top"><img src="/icons/unknown.gif" alt="[ ]"></td><td><a href="krebs0063.lcd">krebs0063.lcd</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">864 </td></tr>
+<tr><td valign="top"><img src="/icons/image2.gif" alt="[IMG]"></td><td><a href="krebs0063.png">krebs0063.png</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">2.0K</td></tr>
+<tr><td valign="top"><img src="/icons/image2.gif" alt="[IMG]"></td><td><a href="krebs0063.png.gif">krebs0063.png.gif</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">328 </td></tr>
+<tr><td valign="top"><img src="/icons/unknown.gif" alt="[ ]"></td><td><a href="krebs0064.lcd">krebs0064.lcd</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">864 </td></tr>
+<tr><td valign="top"><img src="/icons/image2.gif" alt="[IMG]"></td><td><a href="krebs0064.png">krebs0064.png</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">2.1K</td></tr>
+<tr><td valign="top"><img src="/icons/image2.gif" alt="[IMG]"></td><td><a href="krebs0064.png.gif">krebs0064.png.gif</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">345 </td></tr>
+<tr><td valign="top"><img src="/icons/unknown.gif" alt="[ ]"></td><td><a href="krebs0065.lcd">krebs0065.lcd</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">864 </td></tr>
+<tr><td valign="top"><img src="/icons/image2.gif" alt="[IMG]"></td><td><a href="krebs0065.png">krebs0065.png</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">2.2K</td></tr>
+<tr><td valign="top"><img src="/icons/image2.gif" alt="[IMG]"></td><td><a href="krebs0065.png.gif">krebs0065.png.gif</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">351 </td></tr>
+<tr><td valign="top"><img src="/icons/unknown.gif" alt="[ ]"></td><td><a href="krebs0066.lcd">krebs0066.lcd</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">864 </td></tr>
+<tr><td valign="top"><img src="/icons/image2.gif" alt="[IMG]"></td><td><a href="krebs0066.png">krebs0066.png</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">2.3K</td></tr>
+<tr><td valign="top"><img src="/icons/image2.gif" alt="[IMG]"></td><td><a href="krebs0066.png.gif">krebs0066.png.gif</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">369 </td></tr>
+<tr><td valign="top"><img src="/icons/unknown.gif" alt="[ ]"></td><td><a href="krebs0067.lcd">krebs0067.lcd</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">864 </td></tr>
+<tr><td valign="top"><img src="/icons/image2.gif" alt="[IMG]"></td><td><a href="krebs0067.png">krebs0067.png</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">2.3K</td></tr>
+<tr><td valign="top"><img src="/icons/image2.gif" alt="[IMG]"></td><td><a href="krebs0067.png.gif">krebs0067.png.gif</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">378 </td></tr>
+<tr><td valign="top"><img src="/icons/unknown.gif" alt="[ ]"></td><td><a href="krebs0068.lcd">krebs0068.lcd</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">864 </td></tr>
+<tr><td valign="top"><img src="/icons/image2.gif" alt="[IMG]"></td><td><a href="krebs0068.png">krebs0068.png</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">2.2K</td></tr>
+<tr><td valign="top"><img src="/icons/image2.gif" alt="[IMG]"></td><td><a href="krebs0068.png.gif">krebs0068.png.gif</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">386 </td></tr>
+<tr><td valign="top"><img src="/icons/unknown.gif" alt="[ ]"></td><td><a href="krebs0069.lcd">krebs0069.lcd</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">864 </td></tr>
+<tr><td valign="top"><img src="/icons/image2.gif" alt="[IMG]"></td><td><a href="krebs0069.png">krebs0069.png</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">2.3K</td></tr>
+<tr><td valign="top"><img src="/icons/image2.gif" alt="[IMG]"></td><td><a href="krebs0069.png.gif">krebs0069.png.gif</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">386 </td></tr>
+<tr><td valign="top"><img src="/icons/unknown.gif" alt="[ ]"></td><td><a href="krebs0070.lcd">krebs0070.lcd</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">864 </td></tr>
+<tr><td valign="top"><img src="/icons/image2.gif" alt="[IMG]"></td><td><a href="krebs0070.png">krebs0070.png</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">2.3K</td></tr>
+<tr><td valign="top"><img src="/icons/image2.gif" alt="[IMG]"></td><td><a href="krebs0070.png.gif">krebs0070.png.gif</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">385 </td></tr>
+<tr><td valign="top"><img src="/icons/text.gif" alt="[TXT]"></td><td><a href="run.sh">run.sh</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">484 </td></tr>
+<tr><th colspan="5"><hr></th></tr>
+</table>
+<address>Apache/2.2.9 (Debian) mod_ssl/2.2.9 OpenSSL/0.9.8g Server at venus.berapla.de Port 80</address>
+</body></html>
diff --git a/cholerab/bling/cancer_3d/index.html?C=D;O=A b/cholerab/bling/cancer_3d/index.html?C=D;O=A
new file mode 100644
index 00000000..0b5129a3
--- /dev/null
+++ b/cholerab/bling/cancer_3d/index.html?C=D;O=A
@@ -0,0 +1,225 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
+<html>
+ <head>
+ <title>Index of /~infin/camp2011/r0cket/k</title>
+ </head>
+ <body>
+<h1>Index of /~infin/camp2011/r0cket/k</h1>
+<table><tr><th><img src="/icons/blank.gif" alt="[ICO]"></th><th><a href="?C=N;O=A">Name</a></th><th><a href="?C=M;O=A">Last modified</a></th><th><a href="?C=S;O=A">Size</a></th><th><a href="?C=D;O=D">Description</a></th></tr><tr><th colspan="5"><hr></th></tr>
+<tr><td valign="top"><img src="/icons/back.gif" alt="[DIR]"></td><td><a href="/~infin/camp2011/r0cket/">Parent Directory</a></td><td>&nbsp;</td><td align="right"> - </td></tr>
+<tr><td valign="top"><img src="/icons/unknown.gif" alt="[ ]"></td><td><a href="animation.lcd">animation.lcd</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right"> 59K</td></tr>
+<tr><td valign="top"><img src="/icons/unknown.gif" alt="[ ]"></td><td><a href="krebs0001.lcd">krebs0001.lcd</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">864 </td></tr>
+<tr><td valign="top"><img src="/icons/image2.gif" alt="[IMG]"></td><td><a href="krebs0001.png">krebs0001.png</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">2.0K</td></tr>
+<tr><td valign="top"><img src="/icons/image2.gif" alt="[IMG]"></td><td><a href="krebs0001.png.gif">krebs0001.png.gif</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">393 </td></tr>
+<tr><td valign="top"><img src="/icons/unknown.gif" alt="[ ]"></td><td><a href="krebs0002.lcd">krebs0002.lcd</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">864 </td></tr>
+<tr><td valign="top"><img src="/icons/image2.gif" alt="[IMG]"></td><td><a href="krebs0002.png">krebs0002.png</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">2.2K</td></tr>
+<tr><td valign="top"><img src="/icons/image2.gif" alt="[IMG]"></td><td><a href="krebs0002.png.gif">krebs0002.png.gif</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">387 </td></tr>
+<tr><td valign="top"><img src="/icons/unknown.gif" alt="[ ]"></td><td><a href="krebs0003.lcd">krebs0003.lcd</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">864 </td></tr>
+<tr><td valign="top"><img src="/icons/image2.gif" alt="[IMG]"></td><td><a href="krebs0003.png">krebs0003.png</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">2.3K</td></tr>
+<tr><td valign="top"><img src="/icons/image2.gif" alt="[IMG]"></td><td><a href="krebs0003.png.gif">krebs0003.png.gif</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">387 </td></tr>
+<tr><td valign="top"><img src="/icons/unknown.gif" alt="[ ]"></td><td><a href="krebs0004.lcd">krebs0004.lcd</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">864 </td></tr>
+<tr><td valign="top"><img src="/icons/image2.gif" alt="[IMG]"></td><td><a href="krebs0004.png">krebs0004.png</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">2.3K</td></tr>
+<tr><td valign="top"><img src="/icons/image2.gif" alt="[IMG]"></td><td><a href="krebs0004.png.gif">krebs0004.png.gif</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">391 </td></tr>
+<tr><td valign="top"><img src="/icons/unknown.gif" alt="[ ]"></td><td><a href="krebs0005.lcd">krebs0005.lcd</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">864 </td></tr>
+<tr><td valign="top"><img src="/icons/image2.gif" alt="[IMG]"></td><td><a href="krebs0005.png">krebs0005.png</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">2.3K</td></tr>
+<tr><td valign="top"><img src="/icons/image2.gif" alt="[IMG]"></td><td><a href="krebs0005.png.gif">krebs0005.png.gif</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">372 </td></tr>
+<tr><td valign="top"><img src="/icons/unknown.gif" alt="[ ]"></td><td><a href="krebs0006.lcd">krebs0006.lcd</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">864 </td></tr>
+<tr><td valign="top"><img src="/icons/image2.gif" alt="[IMG]"></td><td><a href="krebs0006.png">krebs0006.png</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">2.2K</td></tr>
+<tr><td valign="top"><img src="/icons/image2.gif" alt="[IMG]"></td><td><a href="krebs0006.png.gif">krebs0006.png.gif</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">363 </td></tr>
+<tr><td valign="top"><img src="/icons/unknown.gif" alt="[ ]"></td><td><a href="krebs0007.lcd">krebs0007.lcd</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">864 </td></tr>
+<tr><td valign="top"><img src="/icons/image2.gif" alt="[IMG]"></td><td><a href="krebs0007.png">krebs0007.png</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">2.1K</td></tr>
+<tr><td valign="top"><img src="/icons/image2.gif" alt="[IMG]"></td><td><a href="krebs0007.png.gif">krebs0007.png.gif</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">347 </td></tr>
+<tr><td valign="top"><img src="/icons/unknown.gif" alt="[ ]"></td><td><a href="krebs0008.lcd">krebs0008.lcd</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">864 </td></tr>
+<tr><td valign="top"><img src="/icons/image2.gif" alt="[IMG]"></td><td><a href="krebs0008.png">krebs0008.png</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">2.1K</td></tr>
+<tr><td valign="top"><img src="/icons/image2.gif" alt="[IMG]"></td><td><a href="krebs0008.png.gif">krebs0008.png.gif</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">341 </td></tr>
+<tr><td valign="top"><img src="/icons/unknown.gif" alt="[ ]"></td><td><a href="krebs0009.lcd">krebs0009.lcd</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">864 </td></tr>
+<tr><td valign="top"><img src="/icons/image2.gif" alt="[IMG]"></td><td><a href="krebs0009.png">krebs0009.png</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">1.9K</td></tr>
+<tr><td valign="top"><img src="/icons/image2.gif" alt="[IMG]"></td><td><a href="krebs0009.png.gif">krebs0009.png.gif</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">326 </td></tr>
+<tr><td valign="top"><img src="/icons/unknown.gif" alt="[ ]"></td><td><a href="krebs0010.lcd">krebs0010.lcd</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">864 </td></tr>
+<tr><td valign="top"><img src="/icons/image2.gif" alt="[IMG]"></td><td><a href="krebs0010.png">krebs0010.png</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">1.8K</td></tr>
+<tr><td valign="top"><img src="/icons/image2.gif" alt="[IMG]"></td><td><a href="krebs0010.png.gif">krebs0010.png.gif</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">309 </td></tr>
+<tr><td valign="top"><img src="/icons/unknown.gif" alt="[ ]"></td><td><a href="krebs0011.lcd">krebs0011.lcd</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">864 </td></tr>
+<tr><td valign="top"><img src="/icons/image2.gif" alt="[IMG]"></td><td><a href="krebs0011.png">krebs0011.png</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">1.6K</td></tr>
+<tr><td valign="top"><img src="/icons/image2.gif" alt="[IMG]"></td><td><a href="krebs0011.png.gif">krebs0011.png.gif</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">293 </td></tr>
+<tr><td valign="top"><img src="/icons/unknown.gif" alt="[ ]"></td><td><a href="krebs0012.lcd">krebs0012.lcd</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">864 </td></tr>
+<tr><td valign="top"><img src="/icons/image2.gif" alt="[IMG]"></td><td><a href="krebs0012.png">krebs0012.png</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">1.5K</td></tr>
+<tr><td valign="top"><img src="/icons/image2.gif" alt="[IMG]"></td><td><a href="krebs0012.png.gif">krebs0012.png.gif</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">283 </td></tr>
+<tr><td valign="top"><img src="/icons/unknown.gif" alt="[ ]"></td><td><a href="krebs0013.lcd">krebs0013.lcd</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">864 </td></tr>
+<tr><td valign="top"><img src="/icons/image2.gif" alt="[IMG]"></td><td><a href="krebs0013.png">krebs0013.png</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">1.4K</td></tr>
+<tr><td valign="top"><img src="/icons/image2.gif" alt="[IMG]"></td><td><a href="krebs0013.png.gif">krebs0013.png.gif</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">267 </td></tr>
+<tr><td valign="top"><img src="/icons/unknown.gif" alt="[ ]"></td><td><a href="krebs0014.lcd">krebs0014.lcd</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">864 </td></tr>
+<tr><td valign="top"><img src="/icons/image2.gif" alt="[IMG]"></td><td><a href="krebs0014.png">krebs0014.png</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">1.2K</td></tr>
+<tr><td valign="top"><img src="/icons/image2.gif" alt="[IMG]"></td><td><a href="krebs0014.png.gif">krebs0014.png.gif</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">255 </td></tr>
+<tr><td valign="top"><img src="/icons/unknown.gif" alt="[ ]"></td><td><a href="krebs0015.lcd">krebs0015.lcd</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">864 </td></tr>
+<tr><td valign="top"><img src="/icons/image2.gif" alt="[IMG]"></td><td><a href="krebs0015.png">krebs0015.png</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">1.0K</td></tr>
+<tr><td valign="top"><img src="/icons/image2.gif" alt="[IMG]"></td><td><a href="krebs0015.png.gif">krebs0015.png.gif</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">246 </td></tr>
+<tr><td valign="top"><img src="/icons/unknown.gif" alt="[ ]"></td><td><a href="krebs0016.lcd">krebs0016.lcd</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">864 </td></tr>
+<tr><td valign="top"><img src="/icons/image2.gif" alt="[IMG]"></td><td><a href="krebs0016.png">krebs0016.png</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">950 </td></tr>
+<tr><td valign="top"><img src="/icons/image2.gif" alt="[IMG]"></td><td><a href="krebs0016.png.gif">krebs0016.png.gif</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">245 </td></tr>
+<tr><td valign="top"><img src="/icons/unknown.gif" alt="[ ]"></td><td><a href="krebs0017.lcd">krebs0017.lcd</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">864 </td></tr>
+<tr><td valign="top"><img src="/icons/image2.gif" alt="[IMG]"></td><td><a href="krebs0017.png">krebs0017.png</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">896 </td></tr>
+<tr><td valign="top"><img src="/icons/image2.gif" alt="[IMG]"></td><td><a href="krebs0017.png.gif">krebs0017.png.gif</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">238 </td></tr>
+<tr><td valign="top"><img src="/icons/unknown.gif" alt="[ ]"></td><td><a href="krebs0018.lcd">krebs0018.lcd</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">864 </td></tr>
+<tr><td valign="top"><img src="/icons/image2.gif" alt="[IMG]"></td><td><a href="krebs0018.png">krebs0018.png</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">628 </td></tr>
+<tr><td valign="top"><img src="/icons/image2.gif" alt="[IMG]"></td><td><a href="krebs0018.png.gif">krebs0018.png.gif</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">230 </td></tr>
+<tr><td valign="top"><img src="/icons/unknown.gif" alt="[ ]"></td><td><a href="krebs0019.lcd">krebs0019.lcd</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">864 </td></tr>
+<tr><td valign="top"><img src="/icons/image2.gif" alt="[IMG]"></td><td><a href="krebs0019.png">krebs0019.png</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">646 </td></tr>
+<tr><td valign="top"><img src="/icons/image2.gif" alt="[IMG]"></td><td><a href="krebs0019.png.gif">krebs0019.png.gif</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">231 </td></tr>
+<tr><td valign="top"><img src="/icons/unknown.gif" alt="[ ]"></td><td><a href="krebs0020.lcd">krebs0020.lcd</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">864 </td></tr>
+<tr><td valign="top"><img src="/icons/image2.gif" alt="[IMG]"></td><td><a href="krebs0020.png">krebs0020.png</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">870 </td></tr>
+<tr><td valign="top"><img src="/icons/image2.gif" alt="[IMG]"></td><td><a href="krebs0020.png.gif">krebs0020.png.gif</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">238 </td></tr>
+<tr><td valign="top"><img src="/icons/unknown.gif" alt="[ ]"></td><td><a href="krebs0021.lcd">krebs0021.lcd</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">864 </td></tr>
+<tr><td valign="top"><img src="/icons/image2.gif" alt="[IMG]"></td><td><a href="krebs0021.png">krebs0021.png</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">945 </td></tr>
+<tr><td valign="top"><img src="/icons/image2.gif" alt="[IMG]"></td><td><a href="krebs0021.png.gif">krebs0021.png.gif</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">246 </td></tr>
+<tr><td valign="top"><img src="/icons/unknown.gif" alt="[ ]"></td><td><a href="krebs0022.lcd">krebs0022.lcd</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">864 </td></tr>
+<tr><td valign="top"><img src="/icons/image2.gif" alt="[IMG]"></td><td><a href="krebs0022.png">krebs0022.png</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">1.0K</td></tr>
+<tr><td valign="top"><img src="/icons/image2.gif" alt="[IMG]"></td><td><a href="krebs0022.png.gif">krebs0022.png.gif</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">247 </td></tr>
+<tr><td valign="top"><img src="/icons/unknown.gif" alt="[ ]"></td><td><a href="krebs0023.lcd">krebs0023.lcd</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">864 </td></tr>
+<tr><td valign="top"><img src="/icons/image2.gif" alt="[IMG]"></td><td><a href="krebs0023.png">krebs0023.png</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">1.2K</td></tr>
+<tr><td valign="top"><img src="/icons/image2.gif" alt="[IMG]"></td><td><a href="krebs0023.png.gif">krebs0023.png.gif</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">258 </td></tr>
+<tr><td valign="top"><img src="/icons/unknown.gif" alt="[ ]"></td><td><a href="krebs0024.lcd">krebs0024.lcd</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">864 </td></tr>
+<tr><td valign="top"><img src="/icons/image2.gif" alt="[IMG]"></td><td><a href="krebs0024.png">krebs0024.png</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">1.4K</td></tr>
+<tr><td valign="top"><img src="/icons/image2.gif" alt="[IMG]"></td><td><a href="krebs0024.png.gif">krebs0024.png.gif</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">268 </td></tr>
+<tr><td valign="top"><img src="/icons/unknown.gif" alt="[ ]"></td><td><a href="krebs0025.lcd">krebs0025.lcd</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">864 </td></tr>
+<tr><td valign="top"><img src="/icons/image2.gif" alt="[IMG]"></td><td><a href="krebs0025.png">krebs0025.png</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">1.5K</td></tr>
+<tr><td valign="top"><img src="/icons/image2.gif" alt="[IMG]"></td><td><a href="krebs0025.png.gif">krebs0025.png.gif</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">282 </td></tr>
+<tr><td valign="top"><img src="/icons/unknown.gif" alt="[ ]"></td><td><a href="krebs0026.lcd">krebs0026.lcd</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">864 </td></tr>
+<tr><td valign="top"><img src="/icons/image2.gif" alt="[IMG]"></td><td><a href="krebs0026.png">krebs0026.png</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">1.6K</td></tr>
+<tr><td valign="top"><img src="/icons/image2.gif" alt="[IMG]"></td><td><a href="krebs0026.png.gif">krebs0026.png.gif</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">299 </td></tr>
+<tr><td valign="top"><img src="/icons/unknown.gif" alt="[ ]"></td><td><a href="krebs0027.lcd">krebs0027.lcd</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">864 </td></tr>
+<tr><td valign="top"><img src="/icons/image2.gif" alt="[IMG]"></td><td><a href="krebs0027.png">krebs0027.png</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">1.9K</td></tr>
+<tr><td valign="top"><img src="/icons/image2.gif" alt="[IMG]"></td><td><a href="krebs0027.png.gif">krebs0027.png.gif</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">310 </td></tr>
+<tr><td valign="top"><img src="/icons/unknown.gif" alt="[ ]"></td><td><a href="krebs0028.lcd">krebs0028.lcd</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">864 </td></tr>
+<tr><td valign="top"><img src="/icons/image2.gif" alt="[IMG]"></td><td><a href="krebs0028.png">krebs0028.png</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">1.9K</td></tr>
+<tr><td valign="top"><img src="/icons/image2.gif" alt="[IMG]"></td><td><a href="krebs0028.png.gif">krebs0028.png.gif</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">332 </td></tr>
+<tr><td valign="top"><img src="/icons/unknown.gif" alt="[ ]"></td><td><a href="krebs0029.lcd">krebs0029.lcd</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">864 </td></tr>
+<tr><td valign="top"><img src="/icons/image2.gif" alt="[IMG]"></td><td><a href="krebs0029.png">krebs0029.png</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">2.1K</td></tr>
+<tr><td valign="top"><img src="/icons/image2.gif" alt="[IMG]"></td><td><a href="krebs0029.png.gif">krebs0029.png.gif</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">341 </td></tr>
+<tr><td valign="top"><img src="/icons/unknown.gif" alt="[ ]"></td><td><a href="krebs0030.lcd">krebs0030.lcd</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">864 </td></tr>
+<tr><td valign="top"><img src="/icons/image2.gif" alt="[IMG]"></td><td><a href="krebs0030.png">krebs0030.png</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">2.2K</td></tr>
+<tr><td valign="top"><img src="/icons/image2.gif" alt="[IMG]"></td><td><a href="krebs0030.png.gif">krebs0030.png.gif</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">347 </td></tr>
+<tr><td valign="top"><img src="/icons/unknown.gif" alt="[ ]"></td><td><a href="krebs0031.lcd">krebs0031.lcd</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">864 </td></tr>
+<tr><td valign="top"><img src="/icons/image2.gif" alt="[IMG]"></td><td><a href="krebs0031.png">krebs0031.png</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">2.3K</td></tr>
+<tr><td valign="top"><img src="/icons/image2.gif" alt="[IMG]"></td><td><a href="krebs0031.png.gif">krebs0031.png.gif</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">360 </td></tr>
+<tr><td valign="top"><img src="/icons/unknown.gif" alt="[ ]"></td><td><a href="krebs0032.lcd">krebs0032.lcd</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">864 </td></tr>
+<tr><td valign="top"><img src="/icons/image2.gif" alt="[IMG]"></td><td><a href="krebs0032.png">krebs0032.png</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">2.3K</td></tr>
+<tr><td valign="top"><img src="/icons/image2.gif" alt="[IMG]"></td><td><a href="krebs0032.png.gif">krebs0032.png.gif</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">377 </td></tr>
+<tr><td valign="top"><img src="/icons/unknown.gif" alt="[ ]"></td><td><a href="krebs0033.lcd">krebs0033.lcd</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">864 </td></tr>
+<tr><td valign="top"><img src="/icons/image2.gif" alt="[IMG]"></td><td><a href="krebs0033.png">krebs0033.png</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">2.3K</td></tr>
+<tr><td valign="top"><img src="/icons/image2.gif" alt="[IMG]"></td><td><a href="krebs0033.png.gif">krebs0033.png.gif</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">389 </td></tr>
+<tr><td valign="top"><img src="/icons/unknown.gif" alt="[ ]"></td><td><a href="krebs0034.lcd">krebs0034.lcd</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">864 </td></tr>
+<tr><td valign="top"><img src="/icons/image2.gif" alt="[IMG]"></td><td><a href="krebs0034.png">krebs0034.png</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">2.2K</td></tr>
+<tr><td valign="top"><img src="/icons/image2.gif" alt="[IMG]"></td><td><a href="krebs0034.png.gif">krebs0034.png.gif</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">391 </td></tr>
+<tr><td valign="top"><img src="/icons/unknown.gif" alt="[ ]"></td><td><a href="krebs0035.lcd">krebs0035.lcd</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">864 </td></tr>
+<tr><td valign="top"><img src="/icons/image2.gif" alt="[IMG]"></td><td><a href="krebs0035.png">krebs0035.png</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">2.2K</td></tr>
+<tr><td valign="top"><img src="/icons/image2.gif" alt="[IMG]"></td><td><a href="krebs0035.png.gif">krebs0035.png.gif</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">378 </td></tr>
+<tr><td valign="top"><img src="/icons/unknown.gif" alt="[ ]"></td><td><a href="krebs0036.lcd">krebs0036.lcd</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">864 </td></tr>
+<tr><td valign="top"><img src="/icons/image2.gif" alt="[IMG]"></td><td><a href="krebs0036.png">krebs0036.png</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">2.0K</td></tr>
+<tr><td valign="top"><img src="/icons/image2.gif" alt="[IMG]"></td><td><a href="krebs0036.png.gif">krebs0036.png.gif</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">392 </td></tr>
+<tr><td valign="top"><img src="/icons/unknown.gif" alt="[ ]"></td><td><a href="krebs0037.lcd">krebs0037.lcd</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">864 </td></tr>
+<tr><td valign="top"><img src="/icons/image2.gif" alt="[IMG]"></td><td><a href="krebs0037.png">krebs0037.png</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">2.2K</td></tr>
+<tr><td valign="top"><img src="/icons/image2.gif" alt="[IMG]"></td><td><a href="krebs0037.png.gif">krebs0037.png.gif</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">387 </td></tr>
+<tr><td valign="top"><img src="/icons/unknown.gif" alt="[ ]"></td><td><a href="krebs0038.lcd">krebs0038.lcd</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">864 </td></tr>
+<tr><td valign="top"><img src="/icons/image2.gif" alt="[IMG]"></td><td><a href="krebs0038.png">krebs0038.png</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">2.3K</td></tr>
+<tr><td valign="top"><img src="/icons/image2.gif" alt="[IMG]"></td><td><a href="krebs0038.png.gif">krebs0038.png.gif</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">384 </td></tr>
+<tr><td valign="top"><img src="/icons/unknown.gif" alt="[ ]"></td><td><a href="krebs0039.lcd">krebs0039.lcd</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">864 </td></tr>
+<tr><td valign="top"><img src="/icons/image2.gif" alt="[IMG]"></td><td><a href="krebs0039.png">krebs0039.png</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">2.3K</td></tr>
+<tr><td valign="top"><img src="/icons/image2.gif" alt="[IMG]"></td><td><a href="krebs0039.png.gif">krebs0039.png.gif</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">383 </td></tr>
+<tr><td valign="top"><img src="/icons/unknown.gif" alt="[ ]"></td><td><a href="krebs0040.lcd">krebs0040.lcd</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">864 </td></tr>
+<tr><td valign="top"><img src="/icons/image2.gif" alt="[IMG]"></td><td><a href="krebs0040.png">krebs0040.png</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">2.3K</td></tr>
+<tr><td valign="top"><img src="/icons/image2.gif" alt="[IMG]"></td><td><a href="krebs0040.png.gif">krebs0040.png.gif</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">381 </td></tr>
+<tr><td valign="top"><img src="/icons/unknown.gif" alt="[ ]"></td><td><a href="krebs0041.lcd">krebs0041.lcd</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">864 </td></tr>
+<tr><td valign="top"><img src="/icons/image2.gif" alt="[IMG]"></td><td><a href="krebs0041.png">krebs0041.png</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">2.3K</td></tr>
+<tr><td valign="top"><img src="/icons/image2.gif" alt="[IMG]"></td><td><a href="krebs0041.png.gif">krebs0041.png.gif</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">363 </td></tr>
+<tr><td valign="top"><img src="/icons/unknown.gif" alt="[ ]"></td><td><a href="krebs0042.lcd">krebs0042.lcd</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">864 </td></tr>
+<tr><td valign="top"><img src="/icons/image2.gif" alt="[IMG]"></td><td><a href="krebs0042.png">krebs0042.png</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">2.2K</td></tr>
+<tr><td valign="top"><img src="/icons/image2.gif" alt="[IMG]"></td><td><a href="krebs0042.png.gif">krebs0042.png.gif</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">355 </td></tr>
+<tr><td valign="top"><img src="/icons/unknown.gif" alt="[ ]"></td><td><a href="krebs0043.lcd">krebs0043.lcd</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">864 </td></tr>
+<tr><td valign="top"><img src="/icons/image2.gif" alt="[IMG]"></td><td><a href="krebs0043.png">krebs0043.png</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">2.1K</td></tr>
+<tr><td valign="top"><img src="/icons/image2.gif" alt="[IMG]"></td><td><a href="krebs0043.png.gif">krebs0043.png.gif</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">337 </td></tr>
+<tr><td valign="top"><img src="/icons/unknown.gif" alt="[ ]"></td><td><a href="krebs0044.lcd">krebs0044.lcd</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">864 </td></tr>
+<tr><td valign="top"><img src="/icons/image2.gif" alt="[IMG]"></td><td><a href="krebs0044.png">krebs0044.png</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">2.0K</td></tr>
+<tr><td valign="top"><img src="/icons/image2.gif" alt="[IMG]"></td><td><a href="krebs0044.png.gif">krebs0044.png.gif</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">323 </td></tr>
+<tr><td valign="top"><img src="/icons/unknown.gif" alt="[ ]"></td><td><a href="krebs0045.lcd">krebs0045.lcd</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">864 </td></tr>
+<tr><td valign="top"><img src="/icons/image2.gif" alt="[IMG]"></td><td><a href="krebs0045.png">krebs0045.png</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">1.8K</td></tr>
+<tr><td valign="top"><img src="/icons/image2.gif" alt="[IMG]"></td><td><a href="krebs0045.png.gif">krebs0045.png.gif</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">303 </td></tr>
+<tr><td valign="top"><img src="/icons/unknown.gif" alt="[ ]"></td><td><a href="krebs0046.lcd">krebs0046.lcd</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">864 </td></tr>
+<tr><td valign="top"><img src="/icons/image2.gif" alt="[IMG]"></td><td><a href="krebs0046.png">krebs0046.png</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">1.6K</td></tr>
+<tr><td valign="top"><img src="/icons/image2.gif" alt="[IMG]"></td><td><a href="krebs0046.png.gif">krebs0046.png.gif</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">289 </td></tr>
+<tr><td valign="top"><img src="/icons/unknown.gif" alt="[ ]"></td><td><a href="krebs0047.lcd">krebs0047.lcd</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">864 </td></tr>
+<tr><td valign="top"><img src="/icons/image2.gif" alt="[IMG]"></td><td><a href="krebs0047.png">krebs0047.png</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">1.4K</td></tr>
+<tr><td valign="top"><img src="/icons/image2.gif" alt="[IMG]"></td><td><a href="krebs0047.png.gif">krebs0047.png.gif</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">277 </td></tr>
+<tr><td valign="top"><img src="/icons/unknown.gif" alt="[ ]"></td><td><a href="krebs0048.lcd">krebs0048.lcd</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">864 </td></tr>
+<tr><td valign="top"><img src="/icons/image2.gif" alt="[IMG]"></td><td><a href="krebs0048.png">krebs0048.png</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">1.3K</td></tr>
+<tr><td valign="top"><img src="/icons/image2.gif" alt="[IMG]"></td><td><a href="krebs0048.png.gif">krebs0048.png.gif</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">258 </td></tr>
+<tr><td valign="top"><img src="/icons/unknown.gif" alt="[ ]"></td><td><a href="krebs0049.lcd">krebs0049.lcd</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">864 </td></tr>
+<tr><td valign="top"><img src="/icons/image2.gif" alt="[IMG]"></td><td><a href="krebs0049.png">krebs0049.png</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">1.2K</td></tr>
+<tr><td valign="top"><img src="/icons/image2.gif" alt="[IMG]"></td><td><a href="krebs0049.png.gif">krebs0049.png.gif</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">249 </td></tr>
+<tr><td valign="top"><img src="/icons/unknown.gif" alt="[ ]"></td><td><a href="krebs0050.lcd">krebs0050.lcd</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">864 </td></tr>
+<tr><td valign="top"><img src="/icons/image2.gif" alt="[IMG]"></td><td><a href="krebs0050.png">krebs0050.png</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">1.0K</td></tr>
+<tr><td valign="top"><img src="/icons/image2.gif" alt="[IMG]"></td><td><a href="krebs0050.png.gif">krebs0050.png.gif</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">245 </td></tr>
+<tr><td valign="top"><img src="/icons/unknown.gif" alt="[ ]"></td><td><a href="krebs0051.lcd">krebs0051.lcd</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">864 </td></tr>
+<tr><td valign="top"><img src="/icons/image2.gif" alt="[IMG]"></td><td><a href="krebs0051.png">krebs0051.png</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">947 </td></tr>
+<tr><td valign="top"><img src="/icons/image2.gif" alt="[IMG]"></td><td><a href="krebs0051.png.gif">krebs0051.png.gif</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">241 </td></tr>
+<tr><td valign="top"><img src="/icons/unknown.gif" alt="[ ]"></td><td><a href="krebs0052.lcd">krebs0052.lcd</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">864 </td></tr>
+<tr><td valign="top"><img src="/icons/image2.gif" alt="[IMG]"></td><td><a href="krebs0052.png">krebs0052.png</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">848 </td></tr>
+<tr><td valign="top"><img src="/icons/image2.gif" alt="[IMG]"></td><td><a href="krebs0052.png.gif">krebs0052.png.gif</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">237 </td></tr>
+<tr><td valign="top"><img src="/icons/unknown.gif" alt="[ ]"></td><td><a href="krebs0053.lcd">krebs0053.lcd</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">864 </td></tr>
+<tr><td valign="top"><img src="/icons/image2.gif" alt="[IMG]"></td><td><a href="krebs0053.png">krebs0053.png</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">613 </td></tr>
+<tr><td valign="top"><img src="/icons/image2.gif" alt="[IMG]"></td><td><a href="krebs0053.png.gif">krebs0053.png.gif</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">227 </td></tr>
+<tr><td valign="top"><img src="/icons/unknown.gif" alt="[ ]"></td><td><a href="krebs0054.lcd">krebs0054.lcd</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">864 </td></tr>
+<tr><td valign="top"><img src="/icons/image2.gif" alt="[IMG]"></td><td><a href="krebs0054.png">krebs0054.png</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">620 </td></tr>
+<tr><td valign="top"><img src="/icons/image2.gif" alt="[IMG]"></td><td><a href="krebs0054.png.gif">krebs0054.png.gif</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">230 </td></tr>
+<tr><td valign="top"><img src="/icons/unknown.gif" alt="[ ]"></td><td><a href="krebs0055.lcd">krebs0055.lcd</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">864 </td></tr>
+<tr><td valign="top"><img src="/icons/image2.gif" alt="[IMG]"></td><td><a href="krebs0055.png">krebs0055.png</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">853 </td></tr>
+<tr><td valign="top"><img src="/icons/image2.gif" alt="[IMG]"></td><td><a href="krebs0055.png.gif">krebs0055.png.gif</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">236 </td></tr>
+<tr><td valign="top"><img src="/icons/unknown.gif" alt="[ ]"></td><td><a href="krebs0056.lcd">krebs0056.lcd</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">864 </td></tr>
+<tr><td valign="top"><img src="/icons/image2.gif" alt="[IMG]"></td><td><a href="krebs0056.png">krebs0056.png</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">941 </td></tr>
+<tr><td valign="top"><img src="/icons/image2.gif" alt="[IMG]"></td><td><a href="krebs0056.png.gif">krebs0056.png.gif</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">243 </td></tr>
+<tr><td valign="top"><img src="/icons/unknown.gif" alt="[ ]"></td><td><a href="krebs0057.lcd">krebs0057.lcd</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">864 </td></tr>
+<tr><td valign="top"><img src="/icons/image2.gif" alt="[IMG]"></td><td><a href="krebs0057.png">krebs0057.png</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">1.0K</td></tr>
+<tr><td valign="top"><img src="/icons/image2.gif" alt="[IMG]"></td><td><a href="krebs0057.png.gif">krebs0057.png.gif</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">243 </td></tr>
+<tr><td valign="top"><img src="/icons/unknown.gif" alt="[ ]"></td><td><a href="krebs0058.lcd">krebs0058.lcd</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">864 </td></tr>
+<tr><td valign="top"><img src="/icons/image2.gif" alt="[IMG]"></td><td><a href="krebs0058.png">krebs0058.png</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">1.2K</td></tr>
+<tr><td valign="top"><img src="/icons/image2.gif" alt="[IMG]"></td><td><a href="krebs0058.png.gif">krebs0058.png.gif</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">249 </td></tr>
+<tr><td valign="top"><img src="/icons/unknown.gif" alt="[ ]"></td><td><a href="krebs0059.lcd">krebs0059.lcd</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">864 </td></tr>
+<tr><td valign="top"><img src="/icons/image2.gif" alt="[IMG]"></td><td><a href="krebs0059.png">krebs0059.png</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">1.4K</td></tr>
+<tr><td valign="top"><img src="/icons/image2.gif" alt="[IMG]"></td><td><a href="krebs0059.png.gif">krebs0059.png.gif</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">262 </td></tr>
+<tr><td valign="top"><img src="/icons/unknown.gif" alt="[ ]"></td><td><a href="krebs0060.lcd">krebs0060.lcd</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">864 </td></tr>
+<tr><td valign="top"><img src="/icons/image2.gif" alt="[IMG]"></td><td><a href="krebs0060.png">krebs0060.png</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">1.5K</td></tr>
+<tr><td valign="top"><img src="/icons/image2.gif" alt="[IMG]"></td><td><a href="krebs0060.png.gif">krebs0060.png.gif</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">280 </td></tr>
+<tr><td valign="top"><img src="/icons/unknown.gif" alt="[ ]"></td><td><a href="krebs0061.lcd">krebs0061.lcd</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">864 </td></tr>
+<tr><td valign="top"><img src="/icons/image2.gif" alt="[IMG]"></td><td><a href="krebs0061.png">krebs0061.png</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">1.7K</td></tr>
+<tr><td valign="top"><img src="/icons/image2.gif" alt="[IMG]"></td><td><a href="krebs0061.png.gif">krebs0061.png.gif</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">286 </td></tr>
+<tr><td valign="top"><img src="/icons/unknown.gif" alt="[ ]"></td><td><a href="krebs0062.lcd">krebs0062.lcd</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">864 </td></tr>
+<tr><td valign="top"><img src="/icons/image2.gif" alt="[IMG]"></td><td><a href="krebs0062.png">krebs0062.png</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">1.9K</td></tr>
+<tr><td valign="top"><img src="/icons/image2.gif" alt="[IMG]"></td><td><a href="krebs0062.png.gif">krebs0062.png.gif</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">303 </td></tr>
+<tr><td valign="top"><img src="/icons/unknown.gif" alt="[ ]"></td><td><a href="krebs0063.lcd">krebs0063.lcd</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">864 </td></tr>
+<tr><td valign="top"><img src="/icons/image2.gif" alt="[IMG]"></td><td><a href="krebs0063.png">krebs0063.png</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">2.0K</td></tr>
+<tr><td valign="top"><img src="/icons/image2.gif" alt="[IMG]"></td><td><a href="krebs0063.png.gif">krebs0063.png.gif</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">328 </td></tr>
+<tr><td valign="top"><img src="/icons/unknown.gif" alt="[ ]"></td><td><a href="krebs0064.lcd">krebs0064.lcd</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">864 </td></tr>
+<tr><td valign="top"><img src="/icons/image2.gif" alt="[IMG]"></td><td><a href="krebs0064.png">krebs0064.png</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">2.1K</td></tr>
+<tr><td valign="top"><img src="/icons/image2.gif" alt="[IMG]"></td><td><a href="krebs0064.png.gif">krebs0064.png.gif</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">345 </td></tr>
+<tr><td valign="top"><img src="/icons/unknown.gif" alt="[ ]"></td><td><a href="krebs0065.lcd">krebs0065.lcd</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">864 </td></tr>
+<tr><td valign="top"><img src="/icons/image2.gif" alt="[IMG]"></td><td><a href="krebs0065.png">krebs0065.png</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">2.2K</td></tr>
+<tr><td valign="top"><img src="/icons/image2.gif" alt="[IMG]"></td><td><a href="krebs0065.png.gif">krebs0065.png.gif</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">351 </td></tr>
+<tr><td valign="top"><img src="/icons/unknown.gif" alt="[ ]"></td><td><a href="krebs0066.lcd">krebs0066.lcd</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">864 </td></tr>
+<tr><td valign="top"><img src="/icons/image2.gif" alt="[IMG]"></td><td><a href="krebs0066.png">krebs0066.png</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">2.3K</td></tr>
+<tr><td valign="top"><img src="/icons/image2.gif" alt="[IMG]"></td><td><a href="krebs0066.png.gif">krebs0066.png.gif</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">369 </td></tr>
+<tr><td valign="top"><img src="/icons/unknown.gif" alt="[ ]"></td><td><a href="krebs0067.lcd">krebs0067.lcd</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">864 </td></tr>
+<tr><td valign="top"><img src="/icons/image2.gif" alt="[IMG]"></td><td><a href="krebs0067.png">krebs0067.png</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">2.3K</td></tr>
+<tr><td valign="top"><img src="/icons/image2.gif" alt="[IMG]"></td><td><a href="krebs0067.png.gif">krebs0067.png.gif</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">378 </td></tr>
+<tr><td valign="top"><img src="/icons/unknown.gif" alt="[ ]"></td><td><a href="krebs0068.lcd">krebs0068.lcd</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">864 </td></tr>
+<tr><td valign="top"><img src="/icons/image2.gif" alt="[IMG]"></td><td><a href="krebs0068.png">krebs0068.png</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">2.2K</td></tr>
+<tr><td valign="top"><img src="/icons/image2.gif" alt="[IMG]"></td><td><a href="krebs0068.png.gif">krebs0068.png.gif</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">386 </td></tr>
+<tr><td valign="top"><img src="/icons/unknown.gif" alt="[ ]"></td><td><a href="krebs0069.lcd">krebs0069.lcd</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">864 </td></tr>
+<tr><td valign="top"><img src="/icons/image2.gif" alt="[IMG]"></td><td><a href="krebs0069.png">krebs0069.png</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">2.3K</td></tr>
+<tr><td valign="top"><img src="/icons/image2.gif" alt="[IMG]"></td><td><a href="krebs0069.png.gif">krebs0069.png.gif</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">386 </td></tr>
+<tr><td valign="top"><img src="/icons/unknown.gif" alt="[ ]"></td><td><a href="krebs0070.lcd">krebs0070.lcd</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">864 </td></tr>
+<tr><td valign="top"><img src="/icons/image2.gif" alt="[IMG]"></td><td><a href="krebs0070.png">krebs0070.png</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">2.3K</td></tr>
+<tr><td valign="top"><img src="/icons/image2.gif" alt="[IMG]"></td><td><a href="krebs0070.png.gif">krebs0070.png.gif</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">385 </td></tr>
+<tr><td valign="top"><img src="/icons/text.gif" alt="[TXT]"></td><td><a href="run.sh">run.sh</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">484 </td></tr>
+<tr><th colspan="5"><hr></th></tr>
+</table>
+<address>Apache/2.2.9 (Debian) mod_ssl/2.2.9 OpenSSL/0.9.8g Server at venus.berapla.de Port 80</address>
+</body></html>
diff --git a/cholerab/bling/cancer_3d/index.html?C=M;O=A b/cholerab/bling/cancer_3d/index.html?C=M;O=A
new file mode 100644
index 00000000..e1c6c6bc
--- /dev/null
+++ b/cholerab/bling/cancer_3d/index.html?C=M;O=A
@@ -0,0 +1,225 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
+<html>
+ <head>
+ <title>Index of /~infin/camp2011/r0cket/k</title>
+ </head>
+ <body>
+<h1>Index of /~infin/camp2011/r0cket/k</h1>
+<table><tr><th><img src="/icons/blank.gif" alt="[ICO]"></th><th><a href="?C=N;O=A">Name</a></th><th><a href="?C=M;O=D">Last modified</a></th><th><a href="?C=S;O=A">Size</a></th><th><a href="?C=D;O=A">Description</a></th></tr><tr><th colspan="5"><hr></th></tr>
+<tr><td valign="top"><img src="/icons/back.gif" alt="[DIR]"></td><td><a href="/~infin/camp2011/r0cket/">Parent Directory</a></td><td>&nbsp;</td><td align="right"> - </td></tr>
+<tr><td valign="top"><img src="/icons/unknown.gif" alt="[ ]"></td><td><a href="animation.lcd">animation.lcd</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right"> 59K</td></tr>
+<tr><td valign="top"><img src="/icons/unknown.gif" alt="[ ]"></td><td><a href="krebs0001.lcd">krebs0001.lcd</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">864 </td></tr>
+<tr><td valign="top"><img src="/icons/image2.gif" alt="[IMG]"></td><td><a href="krebs0001.png">krebs0001.png</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">2.0K</td></tr>
+<tr><td valign="top"><img src="/icons/image2.gif" alt="[IMG]"></td><td><a href="krebs0001.png.gif">krebs0001.png.gif</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">393 </td></tr>
+<tr><td valign="top"><img src="/icons/unknown.gif" alt="[ ]"></td><td><a href="krebs0002.lcd">krebs0002.lcd</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">864 </td></tr>
+<tr><td valign="top"><img src="/icons/image2.gif" alt="[IMG]"></td><td><a href="krebs0002.png">krebs0002.png</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">2.2K</td></tr>
+<tr><td valign="top"><img src="/icons/image2.gif" alt="[IMG]"></td><td><a href="krebs0002.png.gif">krebs0002.png.gif</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">387 </td></tr>
+<tr><td valign="top"><img src="/icons/unknown.gif" alt="[ ]"></td><td><a href="krebs0003.lcd">krebs0003.lcd</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">864 </td></tr>
+<tr><td valign="top"><img src="/icons/image2.gif" alt="[IMG]"></td><td><a href="krebs0003.png">krebs0003.png</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">2.3K</td></tr>
+<tr><td valign="top"><img src="/icons/image2.gif" alt="[IMG]"></td><td><a href="krebs0003.png.gif">krebs0003.png.gif</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">387 </td></tr>
+<tr><td valign="top"><img src="/icons/unknown.gif" alt="[ ]"></td><td><a href="krebs0004.lcd">krebs0004.lcd</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">864 </td></tr>
+<tr><td valign="top"><img src="/icons/image2.gif" alt="[IMG]"></td><td><a href="krebs0004.png">krebs0004.png</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">2.3K</td></tr>
+<tr><td valign="top"><img src="/icons/image2.gif" alt="[IMG]"></td><td><a href="krebs0004.png.gif">krebs0004.png.gif</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">391 </td></tr>
+<tr><td valign="top"><img src="/icons/unknown.gif" alt="[ ]"></td><td><a href="krebs0005.lcd">krebs0005.lcd</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">864 </td></tr>
+<tr><td valign="top"><img src="/icons/image2.gif" alt="[IMG]"></td><td><a href="krebs0005.png">krebs0005.png</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">2.3K</td></tr>
+<tr><td valign="top"><img src="/icons/image2.gif" alt="[IMG]"></td><td><a href="krebs0005.png.gif">krebs0005.png.gif</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">372 </td></tr>
+<tr><td valign="top"><img src="/icons/unknown.gif" alt="[ ]"></td><td><a href="krebs0006.lcd">krebs0006.lcd</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">864 </td></tr>
+<tr><td valign="top"><img src="/icons/image2.gif" alt="[IMG]"></td><td><a href="krebs0006.png">krebs0006.png</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">2.2K</td></tr>
+<tr><td valign="top"><img src="/icons/image2.gif" alt="[IMG]"></td><td><a href="krebs0006.png.gif">krebs0006.png.gif</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">363 </td></tr>
+<tr><td valign="top"><img src="/icons/unknown.gif" alt="[ ]"></td><td><a href="krebs0007.lcd">krebs0007.lcd</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">864 </td></tr>
+<tr><td valign="top"><img src="/icons/image2.gif" alt="[IMG]"></td><td><a href="krebs0007.png">krebs0007.png</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">2.1K</td></tr>
+<tr><td valign="top"><img src="/icons/image2.gif" alt="[IMG]"></td><td><a href="krebs0007.png.gif">krebs0007.png.gif</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">347 </td></tr>
+<tr><td valign="top"><img src="/icons/unknown.gif" alt="[ ]"></td><td><a href="krebs0008.lcd">krebs0008.lcd</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">864 </td></tr>
+<tr><td valign="top"><img src="/icons/image2.gif" alt="[IMG]"></td><td><a href="krebs0008.png">krebs0008.png</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">2.1K</td></tr>
+<tr><td valign="top"><img src="/icons/image2.gif" alt="[IMG]"></td><td><a href="krebs0008.png.gif">krebs0008.png.gif</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">341 </td></tr>
+<tr><td valign="top"><img src="/icons/unknown.gif" alt="[ ]"></td><td><a href="krebs0009.lcd">krebs0009.lcd</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">864 </td></tr>
+<tr><td valign="top"><img src="/icons/image2.gif" alt="[IMG]"></td><td><a href="krebs0009.png">krebs0009.png</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">1.9K</td></tr>
+<tr><td valign="top"><img src="/icons/image2.gif" alt="[IMG]"></td><td><a href="krebs0009.png.gif">krebs0009.png.gif</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">326 </td></tr>
+<tr><td valign="top"><img src="/icons/unknown.gif" alt="[ ]"></td><td><a href="krebs0010.lcd">krebs0010.lcd</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">864 </td></tr>
+<tr><td valign="top"><img src="/icons/image2.gif" alt="[IMG]"></td><td><a href="krebs0010.png">krebs0010.png</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">1.8K</td></tr>
+<tr><td valign="top"><img src="/icons/image2.gif" alt="[IMG]"></td><td><a href="krebs0010.png.gif">krebs0010.png.gif</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">309 </td></tr>
+<tr><td valign="top"><img src="/icons/unknown.gif" alt="[ ]"></td><td><a href="krebs0011.lcd">krebs0011.lcd</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">864 </td></tr>
+<tr><td valign="top"><img src="/icons/image2.gif" alt="[IMG]"></td><td><a href="krebs0011.png">krebs0011.png</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">1.6K</td></tr>
+<tr><td valign="top"><img src="/icons/image2.gif" alt="[IMG]"></td><td><a href="krebs0011.png.gif">krebs0011.png.gif</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">293 </td></tr>
+<tr><td valign="top"><img src="/icons/unknown.gif" alt="[ ]"></td><td><a href="krebs0012.lcd">krebs0012.lcd</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">864 </td></tr>
+<tr><td valign="top"><img src="/icons/image2.gif" alt="[IMG]"></td><td><a href="krebs0012.png">krebs0012.png</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">1.5K</td></tr>
+<tr><td valign="top"><img src="/icons/image2.gif" alt="[IMG]"></td><td><a href="krebs0012.png.gif">krebs0012.png.gif</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">283 </td></tr>
+<tr><td valign="top"><img src="/icons/unknown.gif" alt="[ ]"></td><td><a href="krebs0013.lcd">krebs0013.lcd</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">864 </td></tr>
+<tr><td valign="top"><img src="/icons/image2.gif" alt="[IMG]"></td><td><a href="krebs0013.png">krebs0013.png</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">1.4K</td></tr>
+<tr><td valign="top"><img src="/icons/image2.gif" alt="[IMG]"></td><td><a href="krebs0013.png.gif">krebs0013.png.gif</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">267 </td></tr>
+<tr><td valign="top"><img src="/icons/unknown.gif" alt="[ ]"></td><td><a href="krebs0014.lcd">krebs0014.lcd</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">864 </td></tr>
+<tr><td valign="top"><img src="/icons/image2.gif" alt="[IMG]"></td><td><a href="krebs0014.png.gif">krebs0014.png.gif</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">255 </td></tr>
+<tr><td valign="top"><img src="/icons/image2.gif" alt="[IMG]"></td><td><a href="krebs0014.png">krebs0014.png</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">1.2K</td></tr>
+<tr><td valign="top"><img src="/icons/unknown.gif" alt="[ ]"></td><td><a href="krebs0015.lcd">krebs0015.lcd</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">864 </td></tr>
+<tr><td valign="top"><img src="/icons/image2.gif" alt="[IMG]"></td><td><a href="krebs0015.png">krebs0015.png</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">1.0K</td></tr>
+<tr><td valign="top"><img src="/icons/image2.gif" alt="[IMG]"></td><td><a href="krebs0015.png.gif">krebs0015.png.gif</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">246 </td></tr>
+<tr><td valign="top"><img src="/icons/unknown.gif" alt="[ ]"></td><td><a href="krebs0016.lcd">krebs0016.lcd</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">864 </td></tr>
+<tr><td valign="top"><img src="/icons/image2.gif" alt="[IMG]"></td><td><a href="krebs0016.png">krebs0016.png</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">950 </td></tr>
+<tr><td valign="top"><img src="/icons/image2.gif" alt="[IMG]"></td><td><a href="krebs0016.png.gif">krebs0016.png.gif</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">245 </td></tr>
+<tr><td valign="top"><img src="/icons/unknown.gif" alt="[ ]"></td><td><a href="krebs0017.lcd">krebs0017.lcd</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">864 </td></tr>
+<tr><td valign="top"><img src="/icons/image2.gif" alt="[IMG]"></td><td><a href="krebs0017.png">krebs0017.png</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">896 </td></tr>
+<tr><td valign="top"><img src="/icons/image2.gif" alt="[IMG]"></td><td><a href="krebs0017.png.gif">krebs0017.png.gif</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">238 </td></tr>
+<tr><td valign="top"><img src="/icons/unknown.gif" alt="[ ]"></td><td><a href="krebs0018.lcd">krebs0018.lcd</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">864 </td></tr>
+<tr><td valign="top"><img src="/icons/image2.gif" alt="[IMG]"></td><td><a href="krebs0018.png">krebs0018.png</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">628 </td></tr>
+<tr><td valign="top"><img src="/icons/image2.gif" alt="[IMG]"></td><td><a href="krebs0018.png.gif">krebs0018.png.gif</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">230 </td></tr>
+<tr><td valign="top"><img src="/icons/unknown.gif" alt="[ ]"></td><td><a href="krebs0019.lcd">krebs0019.lcd</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">864 </td></tr>
+<tr><td valign="top"><img src="/icons/image2.gif" alt="[IMG]"></td><td><a href="krebs0019.png">krebs0019.png</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">646 </td></tr>
+<tr><td valign="top"><img src="/icons/image2.gif" alt="[IMG]"></td><td><a href="krebs0019.png.gif">krebs0019.png.gif</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">231 </td></tr>
+<tr><td valign="top"><img src="/icons/unknown.gif" alt="[ ]"></td><td><a href="krebs0020.lcd">krebs0020.lcd</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">864 </td></tr>
+<tr><td valign="top"><img src="/icons/image2.gif" alt="[IMG]"></td><td><a href="krebs0020.png">krebs0020.png</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">870 </td></tr>
+<tr><td valign="top"><img src="/icons/image2.gif" alt="[IMG]"></td><td><a href="krebs0020.png.gif">krebs0020.png.gif</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">238 </td></tr>
+<tr><td valign="top"><img src="/icons/unknown.gif" alt="[ ]"></td><td><a href="krebs0021.lcd">krebs0021.lcd</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">864 </td></tr>
+<tr><td valign="top"><img src="/icons/image2.gif" alt="[IMG]"></td><td><a href="krebs0021.png">krebs0021.png</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">945 </td></tr>
+<tr><td valign="top"><img src="/icons/image2.gif" alt="[IMG]"></td><td><a href="krebs0021.png.gif">krebs0021.png.gif</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">246 </td></tr>
+<tr><td valign="top"><img src="/icons/unknown.gif" alt="[ ]"></td><td><a href="krebs0022.lcd">krebs0022.lcd</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">864 </td></tr>
+<tr><td valign="top"><img src="/icons/image2.gif" alt="[IMG]"></td><td><a href="krebs0022.png">krebs0022.png</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">1.0K</td></tr>
+<tr><td valign="top"><img src="/icons/image2.gif" alt="[IMG]"></td><td><a href="krebs0022.png.gif">krebs0022.png.gif</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">247 </td></tr>
+<tr><td valign="top"><img src="/icons/unknown.gif" alt="[ ]"></td><td><a href="krebs0023.lcd">krebs0023.lcd</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">864 </td></tr>
+<tr><td valign="top"><img src="/icons/image2.gif" alt="[IMG]"></td><td><a href="krebs0023.png">krebs0023.png</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">1.2K</td></tr>
+<tr><td valign="top"><img src="/icons/image2.gif" alt="[IMG]"></td><td><a href="krebs0023.png.gif">krebs0023.png.gif</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">258 </td></tr>
+<tr><td valign="top"><img src="/icons/unknown.gif" alt="[ ]"></td><td><a href="krebs0024.lcd">krebs0024.lcd</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">864 </td></tr>
+<tr><td valign="top"><img src="/icons/image2.gif" alt="[IMG]"></td><td><a href="krebs0024.png">krebs0024.png</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">1.4K</td></tr>
+<tr><td valign="top"><img src="/icons/image2.gif" alt="[IMG]"></td><td><a href="krebs0024.png.gif">krebs0024.png.gif</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">268 </td></tr>
+<tr><td valign="top"><img src="/icons/unknown.gif" alt="[ ]"></td><td><a href="krebs0025.lcd">krebs0025.lcd</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">864 </td></tr>
+<tr><td valign="top"><img src="/icons/image2.gif" alt="[IMG]"></td><td><a href="krebs0025.png">krebs0025.png</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">1.5K</td></tr>
+<tr><td valign="top"><img src="/icons/image2.gif" alt="[IMG]"></td><td><a href="krebs0025.png.gif">krebs0025.png.gif</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">282 </td></tr>
+<tr><td valign="top"><img src="/icons/unknown.gif" alt="[ ]"></td><td><a href="krebs0026.lcd">krebs0026.lcd</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">864 </td></tr>
+<tr><td valign="top"><img src="/icons/image2.gif" alt="[IMG]"></td><td><a href="krebs0026.png">krebs0026.png</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">1.6K</td></tr>
+<tr><td valign="top"><img src="/icons/image2.gif" alt="[IMG]"></td><td><a href="krebs0026.png.gif">krebs0026.png.gif</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">299 </td></tr>
+<tr><td valign="top"><img src="/icons/unknown.gif" alt="[ ]"></td><td><a href="krebs0027.lcd">krebs0027.lcd</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">864 </td></tr>
+<tr><td valign="top"><img src="/icons/image2.gif" alt="[IMG]"></td><td><a href="krebs0027.png">krebs0027.png</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">1.9K</td></tr>
+<tr><td valign="top"><img src="/icons/image2.gif" alt="[IMG]"></td><td><a href="krebs0027.png.gif">krebs0027.png.gif</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">310 </td></tr>
+<tr><td valign="top"><img src="/icons/unknown.gif" alt="[ ]"></td><td><a href="krebs0028.lcd">krebs0028.lcd</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">864 </td></tr>
+<tr><td valign="top"><img src="/icons/image2.gif" alt="[IMG]"></td><td><a href="krebs0028.png">krebs0028.png</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">1.9K</td></tr>
+<tr><td valign="top"><img src="/icons/image2.gif" alt="[IMG]"></td><td><a href="krebs0028.png.gif">krebs0028.png.gif</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">332 </td></tr>
+<tr><td valign="top"><img src="/icons/unknown.gif" alt="[ ]"></td><td><a href="krebs0029.lcd">krebs0029.lcd</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">864 </td></tr>
+<tr><td valign="top"><img src="/icons/image2.gif" alt="[IMG]"></td><td><a href="krebs0029.png">krebs0029.png</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">2.1K</td></tr>
+<tr><td valign="top"><img src="/icons/image2.gif" alt="[IMG]"></td><td><a href="krebs0029.png.gif">krebs0029.png.gif</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">341 </td></tr>
+<tr><td valign="top"><img src="/icons/unknown.gif" alt="[ ]"></td><td><a href="krebs0030.lcd">krebs0030.lcd</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">864 </td></tr>
+<tr><td valign="top"><img src="/icons/image2.gif" alt="[IMG]"></td><td><a href="krebs0030.png">krebs0030.png</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">2.2K</td></tr>
+<tr><td valign="top"><img src="/icons/image2.gif" alt="[IMG]"></td><td><a href="krebs0030.png.gif">krebs0030.png.gif</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">347 </td></tr>
+<tr><td valign="top"><img src="/icons/unknown.gif" alt="[ ]"></td><td><a href="krebs0031.lcd">krebs0031.lcd</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">864 </td></tr>
+<tr><td valign="top"><img src="/icons/image2.gif" alt="[IMG]"></td><td><a href="krebs0031.png">krebs0031.png</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">2.3K</td></tr>
+<tr><td valign="top"><img src="/icons/image2.gif" alt="[IMG]"></td><td><a href="krebs0031.png.gif">krebs0031.png.gif</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">360 </td></tr>
+<tr><td valign="top"><img src="/icons/unknown.gif" alt="[ ]"></td><td><a href="krebs0032.lcd">krebs0032.lcd</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">864 </td></tr>
+<tr><td valign="top"><img src="/icons/image2.gif" alt="[IMG]"></td><td><a href="krebs0032.png">krebs0032.png</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">2.3K</td></tr>
+<tr><td valign="top"><img src="/icons/image2.gif" alt="[IMG]"></td><td><a href="krebs0032.png.gif">krebs0032.png.gif</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">377 </td></tr>
+<tr><td valign="top"><img src="/icons/unknown.gif" alt="[ ]"></td><td><a href="krebs0033.lcd">krebs0033.lcd</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">864 </td></tr>
+<tr><td valign="top"><img src="/icons/image2.gif" alt="[IMG]"></td><td><a href="krebs0033.png">krebs0033.png</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">2.3K</td></tr>
+<tr><td valign="top"><img src="/icons/image2.gif" alt="[IMG]"></td><td><a href="krebs0033.png.gif">krebs0033.png.gif</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">389 </td></tr>
+<tr><td valign="top"><img src="/icons/unknown.gif" alt="[ ]"></td><td><a href="krebs0034.lcd">krebs0034.lcd</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">864 </td></tr>
+<tr><td valign="top"><img src="/icons/image2.gif" alt="[IMG]"></td><td><a href="krebs0034.png">krebs0034.png</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">2.2K</td></tr>
+<tr><td valign="top"><img src="/icons/image2.gif" alt="[IMG]"></td><td><a href="krebs0034.png.gif">krebs0034.png.gif</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">391 </td></tr>
+<tr><td valign="top"><img src="/icons/unknown.gif" alt="[ ]"></td><td><a href="krebs0035.lcd">krebs0035.lcd</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">864 </td></tr>
+<tr><td valign="top"><img src="/icons/image2.gif" alt="[IMG]"></td><td><a href="krebs0035.png">krebs0035.png</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">2.2K</td></tr>
+<tr><td valign="top"><img src="/icons/image2.gif" alt="[IMG]"></td><td><a href="krebs0035.png.gif">krebs0035.png.gif</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">378 </td></tr>
+<tr><td valign="top"><img src="/icons/unknown.gif" alt="[ ]"></td><td><a href="krebs0036.lcd">krebs0036.lcd</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">864 </td></tr>
+<tr><td valign="top"><img src="/icons/image2.gif" alt="[IMG]"></td><td><a href="krebs0036.png">krebs0036.png</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">2.0K</td></tr>
+<tr><td valign="top"><img src="/icons/image2.gif" alt="[IMG]"></td><td><a href="krebs0036.png.gif">krebs0036.png.gif</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">392 </td></tr>
+<tr><td valign="top"><img src="/icons/unknown.gif" alt="[ ]"></td><td><a href="krebs0037.lcd">krebs0037.lcd</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">864 </td></tr>
+<tr><td valign="top"><img src="/icons/image2.gif" alt="[IMG]"></td><td><a href="krebs0037.png">krebs0037.png</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">2.2K</td></tr>
+<tr><td valign="top"><img src="/icons/image2.gif" alt="[IMG]"></td><td><a href="krebs0037.png.gif">krebs0037.png.gif</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">387 </td></tr>
+<tr><td valign="top"><img src="/icons/unknown.gif" alt="[ ]"></td><td><a href="krebs0038.lcd">krebs0038.lcd</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">864 </td></tr>
+<tr><td valign="top"><img src="/icons/image2.gif" alt="[IMG]"></td><td><a href="krebs0038.png">krebs0038.png</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">2.3K</td></tr>
+<tr><td valign="top"><img src="/icons/image2.gif" alt="[IMG]"></td><td><a href="krebs0038.png.gif">krebs0038.png.gif</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">384 </td></tr>
+<tr><td valign="top"><img src="/icons/unknown.gif" alt="[ ]"></td><td><a href="krebs0039.lcd">krebs0039.lcd</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">864 </td></tr>
+<tr><td valign="top"><img src="/icons/image2.gif" alt="[IMG]"></td><td><a href="krebs0039.png">krebs0039.png</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">2.3K</td></tr>
+<tr><td valign="top"><img src="/icons/image2.gif" alt="[IMG]"></td><td><a href="krebs0039.png.gif">krebs0039.png.gif</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">383 </td></tr>
+<tr><td valign="top"><img src="/icons/unknown.gif" alt="[ ]"></td><td><a href="krebs0040.lcd">krebs0040.lcd</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">864 </td></tr>
+<tr><td valign="top"><img src="/icons/image2.gif" alt="[IMG]"></td><td><a href="krebs0040.png.gif">krebs0040.png.gif</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">381 </td></tr>
+<tr><td valign="top"><img src="/icons/image2.gif" alt="[IMG]"></td><td><a href="krebs0040.png">krebs0040.png</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">2.3K</td></tr>
+<tr><td valign="top"><img src="/icons/unknown.gif" alt="[ ]"></td><td><a href="krebs0041.lcd">krebs0041.lcd</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">864 </td></tr>
+<tr><td valign="top"><img src="/icons/image2.gif" alt="[IMG]"></td><td><a href="krebs0041.png">krebs0041.png</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">2.3K</td></tr>
+<tr><td valign="top"><img src="/icons/image2.gif" alt="[IMG]"></td><td><a href="krebs0041.png.gif">krebs0041.png.gif</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">363 </td></tr>
+<tr><td valign="top"><img src="/icons/unknown.gif" alt="[ ]"></td><td><a href="krebs0042.lcd">krebs0042.lcd</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">864 </td></tr>
+<tr><td valign="top"><img src="/icons/image2.gif" alt="[IMG]"></td><td><a href="krebs0042.png">krebs0042.png</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">2.2K</td></tr>
+<tr><td valign="top"><img src="/icons/image2.gif" alt="[IMG]"></td><td><a href="krebs0042.png.gif">krebs0042.png.gif</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">355 </td></tr>
+<tr><td valign="top"><img src="/icons/unknown.gif" alt="[ ]"></td><td><a href="krebs0043.lcd">krebs0043.lcd</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">864 </td></tr>
+<tr><td valign="top"><img src="/icons/image2.gif" alt="[IMG]"></td><td><a href="krebs0043.png">krebs0043.png</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">2.1K</td></tr>
+<tr><td valign="top"><img src="/icons/image2.gif" alt="[IMG]"></td><td><a href="krebs0043.png.gif">krebs0043.png.gif</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">337 </td></tr>
+<tr><td valign="top"><img src="/icons/unknown.gif" alt="[ ]"></td><td><a href="krebs0044.lcd">krebs0044.lcd</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">864 </td></tr>
+<tr><td valign="top"><img src="/icons/image2.gif" alt="[IMG]"></td><td><a href="krebs0044.png">krebs0044.png</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">2.0K</td></tr>
+<tr><td valign="top"><img src="/icons/image2.gif" alt="[IMG]"></td><td><a href="krebs0044.png.gif">krebs0044.png.gif</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">323 </td></tr>
+<tr><td valign="top"><img src="/icons/unknown.gif" alt="[ ]"></td><td><a href="krebs0045.lcd">krebs0045.lcd</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">864 </td></tr>
+<tr><td valign="top"><img src="/icons/image2.gif" alt="[IMG]"></td><td><a href="krebs0045.png.gif">krebs0045.png.gif</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">303 </td></tr>
+<tr><td valign="top"><img src="/icons/image2.gif" alt="[IMG]"></td><td><a href="krebs0045.png">krebs0045.png</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">1.8K</td></tr>
+<tr><td valign="top"><img src="/icons/unknown.gif" alt="[ ]"></td><td><a href="krebs0046.lcd">krebs0046.lcd</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">864 </td></tr>
+<tr><td valign="top"><img src="/icons/image2.gif" alt="[IMG]"></td><td><a href="krebs0046.png">krebs0046.png</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">1.6K</td></tr>
+<tr><td valign="top"><img src="/icons/image2.gif" alt="[IMG]"></td><td><a href="krebs0046.png.gif">krebs0046.png.gif</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">289 </td></tr>
+<tr><td valign="top"><img src="/icons/unknown.gif" alt="[ ]"></td><td><a href="krebs0047.lcd">krebs0047.lcd</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">864 </td></tr>
+<tr><td valign="top"><img src="/icons/image2.gif" alt="[IMG]"></td><td><a href="krebs0047.png">krebs0047.png</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">1.4K</td></tr>
+<tr><td valign="top"><img src="/icons/image2.gif" alt="[IMG]"></td><td><a href="krebs0047.png.gif">krebs0047.png.gif</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">277 </td></tr>
+<tr><td valign="top"><img src="/icons/unknown.gif" alt="[ ]"></td><td><a href="krebs0048.lcd">krebs0048.lcd</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">864 </td></tr>
+<tr><td valign="top"><img src="/icons/image2.gif" alt="[IMG]"></td><td><a href="krebs0048.png">krebs0048.png</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">1.3K</td></tr>
+<tr><td valign="top"><img src="/icons/image2.gif" alt="[IMG]"></td><td><a href="krebs0048.png.gif">krebs0048.png.gif</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">258 </td></tr>
+<tr><td valign="top"><img src="/icons/unknown.gif" alt="[ ]"></td><td><a href="krebs0049.lcd">krebs0049.lcd</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">864 </td></tr>
+<tr><td valign="top"><img src="/icons/image2.gif" alt="[IMG]"></td><td><a href="krebs0049.png">krebs0049.png</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">1.2K</td></tr>
+<tr><td valign="top"><img src="/icons/image2.gif" alt="[IMG]"></td><td><a href="krebs0049.png.gif">krebs0049.png.gif</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">249 </td></tr>
+<tr><td valign="top"><img src="/icons/unknown.gif" alt="[ ]"></td><td><a href="krebs0050.lcd">krebs0050.lcd</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">864 </td></tr>
+<tr><td valign="top"><img src="/icons/image2.gif" alt="[IMG]"></td><td><a href="krebs0050.png">krebs0050.png</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">1.0K</td></tr>
+<tr><td valign="top"><img src="/icons/image2.gif" alt="[IMG]"></td><td><a href="krebs0050.png.gif">krebs0050.png.gif</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">245 </td></tr>
+<tr><td valign="top"><img src="/icons/unknown.gif" alt="[ ]"></td><td><a href="krebs0051.lcd">krebs0051.lcd</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">864 </td></tr>
+<tr><td valign="top"><img src="/icons/image2.gif" alt="[IMG]"></td><td><a href="krebs0051.png">krebs0051.png</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">947 </td></tr>
+<tr><td valign="top"><img src="/icons/image2.gif" alt="[IMG]"></td><td><a href="krebs0051.png.gif">krebs0051.png.gif</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">241 </td></tr>
+<tr><td valign="top"><img src="/icons/unknown.gif" alt="[ ]"></td><td><a href="krebs0052.lcd">krebs0052.lcd</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">864 </td></tr>
+<tr><td valign="top"><img src="/icons/image2.gif" alt="[IMG]"></td><td><a href="krebs0052.png">krebs0052.png</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">848 </td></tr>
+<tr><td valign="top"><img src="/icons/image2.gif" alt="[IMG]"></td><td><a href="krebs0052.png.gif">krebs0052.png.gif</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">237 </td></tr>
+<tr><td valign="top"><img src="/icons/unknown.gif" alt="[ ]"></td><td><a href="krebs0053.lcd">krebs0053.lcd</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">864 </td></tr>
+<tr><td valign="top"><img src="/icons/image2.gif" alt="[IMG]"></td><td><a href="krebs0053.png">krebs0053.png</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">613 </td></tr>
+<tr><td valign="top"><img src="/icons/image2.gif" alt="[IMG]"></td><td><a href="krebs0053.png.gif">krebs0053.png.gif</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">227 </td></tr>
+<tr><td valign="top"><img src="/icons/unknown.gif" alt="[ ]"></td><td><a href="krebs0054.lcd">krebs0054.lcd</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">864 </td></tr>
+<tr><td valign="top"><img src="/icons/image2.gif" alt="[IMG]"></td><td><a href="krebs0054.png">krebs0054.png</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">620 </td></tr>
+<tr><td valign="top"><img src="/icons/image2.gif" alt="[IMG]"></td><td><a href="krebs0054.png.gif">krebs0054.png.gif</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">230 </td></tr>
+<tr><td valign="top"><img src="/icons/unknown.gif" alt="[ ]"></td><td><a href="krebs0055.lcd">krebs0055.lcd</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">864 </td></tr>
+<tr><td valign="top"><img src="/icons/image2.gif" alt="[IMG]"></td><td><a href="krebs0055.png">krebs0055.png</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">853 </td></tr>
+<tr><td valign="top"><img src="/icons/image2.gif" alt="[IMG]"></td><td><a href="krebs0055.png.gif">krebs0055.png.gif</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">236 </td></tr>
+<tr><td valign="top"><img src="/icons/unknown.gif" alt="[ ]"></td><td><a href="krebs0056.lcd">krebs0056.lcd</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">864 </td></tr>
+<tr><td valign="top"><img src="/icons/image2.gif" alt="[IMG]"></td><td><a href="krebs0056.png">krebs0056.png</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">941 </td></tr>
+<tr><td valign="top"><img src="/icons/image2.gif" alt="[IMG]"></td><td><a href="krebs0056.png.gif">krebs0056.png.gif</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">243 </td></tr>
+<tr><td valign="top"><img src="/icons/unknown.gif" alt="[ ]"></td><td><a href="krebs0057.lcd">krebs0057.lcd</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">864 </td></tr>
+<tr><td valign="top"><img src="/icons/image2.gif" alt="[IMG]"></td><td><a href="krebs0057.png">krebs0057.png</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">1.0K</td></tr>
+<tr><td valign="top"><img src="/icons/image2.gif" alt="[IMG]"></td><td><a href="krebs0057.png.gif">krebs0057.png.gif</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">243 </td></tr>
+<tr><td valign="top"><img src="/icons/unknown.gif" alt="[ ]"></td><td><a href="krebs0058.lcd">krebs0058.lcd</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">864 </td></tr>
+<tr><td valign="top"><img src="/icons/image2.gif" alt="[IMG]"></td><td><a href="krebs0058.png">krebs0058.png</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">1.2K</td></tr>
+<tr><td valign="top"><img src="/icons/image2.gif" alt="[IMG]"></td><td><a href="krebs0058.png.gif">krebs0058.png.gif</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">249 </td></tr>
+<tr><td valign="top"><img src="/icons/unknown.gif" alt="[ ]"></td><td><a href="krebs0059.lcd">krebs0059.lcd</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">864 </td></tr>
+<tr><td valign="top"><img src="/icons/image2.gif" alt="[IMG]"></td><td><a href="krebs0059.png">krebs0059.png</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">1.4K</td></tr>
+<tr><td valign="top"><img src="/icons/image2.gif" alt="[IMG]"></td><td><a href="krebs0059.png.gif">krebs0059.png.gif</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">262 </td></tr>
+<tr><td valign="top"><img src="/icons/unknown.gif" alt="[ ]"></td><td><a href="krebs0060.lcd">krebs0060.lcd</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">864 </td></tr>
+<tr><td valign="top"><img src="/icons/image2.gif" alt="[IMG]"></td><td><a href="krebs0060.png">krebs0060.png</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">1.5K</td></tr>
+<tr><td valign="top"><img src="/icons/image2.gif" alt="[IMG]"></td><td><a href="krebs0060.png.gif">krebs0060.png.gif</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">280 </td></tr>
+<tr><td valign="top"><img src="/icons/unknown.gif" alt="[ ]"></td><td><a href="krebs0061.lcd">krebs0061.lcd</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">864 </td></tr>
+<tr><td valign="top"><img src="/icons/image2.gif" alt="[IMG]"></td><td><a href="krebs0061.png">krebs0061.png</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">1.7K</td></tr>
+<tr><td valign="top"><img src="/icons/image2.gif" alt="[IMG]"></td><td><a href="krebs0061.png.gif">krebs0061.png.gif</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">286 </td></tr>
+<tr><td valign="top"><img src="/icons/unknown.gif" alt="[ ]"></td><td><a href="krebs0062.lcd">krebs0062.lcd</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">864 </td></tr>
+<tr><td valign="top"><img src="/icons/image2.gif" alt="[IMG]"></td><td><a href="krebs0062.png">krebs0062.png</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">1.9K</td></tr>
+<tr><td valign="top"><img src="/icons/image2.gif" alt="[IMG]"></td><td><a href="krebs0062.png.gif">krebs0062.png.gif</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">303 </td></tr>
+<tr><td valign="top"><img src="/icons/unknown.gif" alt="[ ]"></td><td><a href="krebs0063.lcd">krebs0063.lcd</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">864 </td></tr>
+<tr><td valign="top"><img src="/icons/image2.gif" alt="[IMG]"></td><td><a href="krebs0063.png">krebs0063.png</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">2.0K</td></tr>
+<tr><td valign="top"><img src="/icons/image2.gif" alt="[IMG]"></td><td><a href="krebs0063.png.gif">krebs0063.png.gif</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">328 </td></tr>
+<tr><td valign="top"><img src="/icons/unknown.gif" alt="[ ]"></td><td><a href="krebs0064.lcd">krebs0064.lcd</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">864 </td></tr>
+<tr><td valign="top"><img src="/icons/image2.gif" alt="[IMG]"></td><td><a href="krebs0064.png">krebs0064.png</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">2.1K</td></tr>
+<tr><td valign="top"><img src="/icons/image2.gif" alt="[IMG]"></td><td><a href="krebs0064.png.gif">krebs0064.png.gif</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">345 </td></tr>
+<tr><td valign="top"><img src="/icons/unknown.gif" alt="[ ]"></td><td><a href="krebs0065.lcd">krebs0065.lcd</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">864 </td></tr>
+<tr><td valign="top"><img src="/icons/image2.gif" alt="[IMG]"></td><td><a href="krebs0065.png.gif">krebs0065.png.gif</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">351 </td></tr>
+<tr><td valign="top"><img src="/icons/image2.gif" alt="[IMG]"></td><td><a href="krebs0065.png">krebs0065.png</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">2.2K</td></tr>
+<tr><td valign="top"><img src="/icons/unknown.gif" alt="[ ]"></td><td><a href="krebs0066.lcd">krebs0066.lcd</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">864 </td></tr>
+<tr><td valign="top"><img src="/icons/image2.gif" alt="[IMG]"></td><td><a href="krebs0066.png">krebs0066.png</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">2.3K</td></tr>
+<tr><td valign="top"><img src="/icons/image2.gif" alt="[IMG]"></td><td><a href="krebs0066.png.gif">krebs0066.png.gif</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">369 </td></tr>
+<tr><td valign="top"><img src="/icons/unknown.gif" alt="[ ]"></td><td><a href="krebs0067.lcd">krebs0067.lcd</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">864 </td></tr>
+<tr><td valign="top"><img src="/icons/image2.gif" alt="[IMG]"></td><td><a href="krebs0067.png">krebs0067.png</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">2.3K</td></tr>
+<tr><td valign="top"><img src="/icons/image2.gif" alt="[IMG]"></td><td><a href="krebs0067.png.gif">krebs0067.png.gif</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">378 </td></tr>
+<tr><td valign="top"><img src="/icons/unknown.gif" alt="[ ]"></td><td><a href="krebs0068.lcd">krebs0068.lcd</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">864 </td></tr>
+<tr><td valign="top"><img src="/icons/image2.gif" alt="[IMG]"></td><td><a href="krebs0068.png">krebs0068.png</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">2.2K</td></tr>
+<tr><td valign="top"><img src="/icons/image2.gif" alt="[IMG]"></td><td><a href="krebs0068.png.gif">krebs0068.png.gif</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">386 </td></tr>
+<tr><td valign="top"><img src="/icons/unknown.gif" alt="[ ]"></td><td><a href="krebs0069.lcd">krebs0069.lcd</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">864 </td></tr>
+<tr><td valign="top"><img src="/icons/image2.gif" alt="[IMG]"></td><td><a href="krebs0069.png">krebs0069.png</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">2.3K</td></tr>
+<tr><td valign="top"><img src="/icons/image2.gif" alt="[IMG]"></td><td><a href="krebs0069.png.gif">krebs0069.png.gif</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">386 </td></tr>
+<tr><td valign="top"><img src="/icons/unknown.gif" alt="[ ]"></td><td><a href="krebs0070.lcd">krebs0070.lcd</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">864 </td></tr>
+<tr><td valign="top"><img src="/icons/image2.gif" alt="[IMG]"></td><td><a href="krebs0070.png.gif">krebs0070.png.gif</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">385 </td></tr>
+<tr><td valign="top"><img src="/icons/image2.gif" alt="[IMG]"></td><td><a href="krebs0070.png">krebs0070.png</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">2.3K</td></tr>
+<tr><td valign="top"><img src="/icons/text.gif" alt="[TXT]"></td><td><a href="run.sh">run.sh</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">484 </td></tr>
+<tr><th colspan="5"><hr></th></tr>
+</table>
+<address>Apache/2.2.9 (Debian) mod_ssl/2.2.9 OpenSSL/0.9.8g Server at venus.berapla.de Port 80</address>
+</body></html>
diff --git a/cholerab/bling/cancer_3d/index.html?C=N;O=D b/cholerab/bling/cancer_3d/index.html?C=N;O=D
new file mode 100644
index 00000000..b81c0acd
--- /dev/null
+++ b/cholerab/bling/cancer_3d/index.html?C=N;O=D
@@ -0,0 +1,225 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
+<html>
+ <head>
+ <title>Index of /~infin/camp2011/r0cket/k</title>
+ </head>
+ <body>
+<h1>Index of /~infin/camp2011/r0cket/k</h1>
+<table><tr><th><img src="/icons/blank.gif" alt="[ICO]"></th><th><a href="?C=N;O=A">Name</a></th><th><a href="?C=M;O=A">Last modified</a></th><th><a href="?C=S;O=A">Size</a></th><th><a href="?C=D;O=A">Description</a></th></tr><tr><th colspan="5"><hr></th></tr>
+<tr><td valign="top"><img src="/icons/back.gif" alt="[DIR]"></td><td><a href="/~infin/camp2011/r0cket/">Parent Directory</a></td><td>&nbsp;</td><td align="right"> - </td></tr>
+<tr><td valign="top"><img src="/icons/text.gif" alt="[TXT]"></td><td><a href="run.sh">run.sh</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">484 </td></tr>
+<tr><td valign="top"><img src="/icons/image2.gif" alt="[IMG]"></td><td><a href="krebs0070.png.gif">krebs0070.png.gif</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">385 </td></tr>
+<tr><td valign="top"><img src="/icons/image2.gif" alt="[IMG]"></td><td><a href="krebs0070.png">krebs0070.png</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">2.3K</td></tr>
+<tr><td valign="top"><img src="/icons/unknown.gif" alt="[ ]"></td><td><a href="krebs0070.lcd">krebs0070.lcd</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">864 </td></tr>
+<tr><td valign="top"><img src="/icons/image2.gif" alt="[IMG]"></td><td><a href="krebs0069.png.gif">krebs0069.png.gif</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">386 </td></tr>
+<tr><td valign="top"><img src="/icons/image2.gif" alt="[IMG]"></td><td><a href="krebs0069.png">krebs0069.png</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">2.3K</td></tr>
+<tr><td valign="top"><img src="/icons/unknown.gif" alt="[ ]"></td><td><a href="krebs0069.lcd">krebs0069.lcd</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">864 </td></tr>
+<tr><td valign="top"><img src="/icons/image2.gif" alt="[IMG]"></td><td><a href="krebs0068.png.gif">krebs0068.png.gif</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">386 </td></tr>
+<tr><td valign="top"><img src="/icons/image2.gif" alt="[IMG]"></td><td><a href="krebs0068.png">krebs0068.png</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">2.2K</td></tr>
+<tr><td valign="top"><img src="/icons/unknown.gif" alt="[ ]"></td><td><a href="krebs0068.lcd">krebs0068.lcd</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">864 </td></tr>
+<tr><td valign="top"><img src="/icons/image2.gif" alt="[IMG]"></td><td><a href="krebs0067.png.gif">krebs0067.png.gif</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">378 </td></tr>
+<tr><td valign="top"><img src="/icons/image2.gif" alt="[IMG]"></td><td><a href="krebs0067.png">krebs0067.png</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">2.3K</td></tr>
+<tr><td valign="top"><img src="/icons/unknown.gif" alt="[ ]"></td><td><a href="krebs0067.lcd">krebs0067.lcd</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">864 </td></tr>
+<tr><td valign="top"><img src="/icons/image2.gif" alt="[IMG]"></td><td><a href="krebs0066.png.gif">krebs0066.png.gif</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">369 </td></tr>
+<tr><td valign="top"><img src="/icons/image2.gif" alt="[IMG]"></td><td><a href="krebs0066.png">krebs0066.png</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">2.3K</td></tr>
+<tr><td valign="top"><img src="/icons/unknown.gif" alt="[ ]"></td><td><a href="krebs0066.lcd">krebs0066.lcd</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">864 </td></tr>
+<tr><td valign="top"><img src="/icons/image2.gif" alt="[IMG]"></td><td><a href="krebs0065.png.gif">krebs0065.png.gif</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">351 </td></tr>
+<tr><td valign="top"><img src="/icons/image2.gif" alt="[IMG]"></td><td><a href="krebs0065.png">krebs0065.png</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">2.2K</td></tr>
+<tr><td valign="top"><img src="/icons/unknown.gif" alt="[ ]"></td><td><a href="krebs0065.lcd">krebs0065.lcd</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">864 </td></tr>
+<tr><td valign="top"><img src="/icons/image2.gif" alt="[IMG]"></td><td><a href="krebs0064.png.gif">krebs0064.png.gif</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">345 </td></tr>
+<tr><td valign="top"><img src="/icons/image2.gif" alt="[IMG]"></td><td><a href="krebs0064.png">krebs0064.png</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">2.1K</td></tr>
+<tr><td valign="top"><img src="/icons/unknown.gif" alt="[ ]"></td><td><a href="krebs0064.lcd">krebs0064.lcd</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">864 </td></tr>
+<tr><td valign="top"><img src="/icons/image2.gif" alt="[IMG]"></td><td><a href="krebs0063.png.gif">krebs0063.png.gif</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">328 </td></tr>
+<tr><td valign="top"><img src="/icons/image2.gif" alt="[IMG]"></td><td><a href="krebs0063.png">krebs0063.png</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">2.0K</td></tr>
+<tr><td valign="top"><img src="/icons/unknown.gif" alt="[ ]"></td><td><a href="krebs0063.lcd">krebs0063.lcd</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">864 </td></tr>
+<tr><td valign="top"><img src="/icons/image2.gif" alt="[IMG]"></td><td><a href="krebs0062.png.gif">krebs0062.png.gif</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">303 </td></tr>
+<tr><td valign="top"><img src="/icons/image2.gif" alt="[IMG]"></td><td><a href="krebs0062.png">krebs0062.png</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">1.9K</td></tr>
+<tr><td valign="top"><img src="/icons/unknown.gif" alt="[ ]"></td><td><a href="krebs0062.lcd">krebs0062.lcd</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">864 </td></tr>
+<tr><td valign="top"><img src="/icons/image2.gif" alt="[IMG]"></td><td><a href="krebs0061.png.gif">krebs0061.png.gif</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">286 </td></tr>
+<tr><td valign="top"><img src="/icons/image2.gif" alt="[IMG]"></td><td><a href="krebs0061.png">krebs0061.png</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">1.7K</td></tr>
+<tr><td valign="top"><img src="/icons/unknown.gif" alt="[ ]"></td><td><a href="krebs0061.lcd">krebs0061.lcd</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">864 </td></tr>
+<tr><td valign="top"><img src="/icons/image2.gif" alt="[IMG]"></td><td><a href="krebs0060.png.gif">krebs0060.png.gif</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">280 </td></tr>
+<tr><td valign="top"><img src="/icons/image2.gif" alt="[IMG]"></td><td><a href="krebs0060.png">krebs0060.png</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">1.5K</td></tr>
+<tr><td valign="top"><img src="/icons/unknown.gif" alt="[ ]"></td><td><a href="krebs0060.lcd">krebs0060.lcd</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">864 </td></tr>
+<tr><td valign="top"><img src="/icons/image2.gif" alt="[IMG]"></td><td><a href="krebs0059.png.gif">krebs0059.png.gif</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">262 </td></tr>
+<tr><td valign="top"><img src="/icons/image2.gif" alt="[IMG]"></td><td><a href="krebs0059.png">krebs0059.png</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">1.4K</td></tr>
+<tr><td valign="top"><img src="/icons/unknown.gif" alt="[ ]"></td><td><a href="krebs0059.lcd">krebs0059.lcd</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">864 </td></tr>
+<tr><td valign="top"><img src="/icons/image2.gif" alt="[IMG]"></td><td><a href="krebs0058.png.gif">krebs0058.png.gif</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">249 </td></tr>
+<tr><td valign="top"><img src="/icons/image2.gif" alt="[IMG]"></td><td><a href="krebs0058.png">krebs0058.png</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">1.2K</td></tr>
+<tr><td valign="top"><img src="/icons/unknown.gif" alt="[ ]"></td><td><a href="krebs0058.lcd">krebs0058.lcd</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">864 </td></tr>
+<tr><td valign="top"><img src="/icons/image2.gif" alt="[IMG]"></td><td><a href="krebs0057.png.gif">krebs0057.png.gif</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">243 </td></tr>
+<tr><td valign="top"><img src="/icons/image2.gif" alt="[IMG]"></td><td><a href="krebs0057.png">krebs0057.png</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">1.0K</td></tr>
+<tr><td valign="top"><img src="/icons/unknown.gif" alt="[ ]"></td><td><a href="krebs0057.lcd">krebs0057.lcd</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">864 </td></tr>
+<tr><td valign="top"><img src="/icons/image2.gif" alt="[IMG]"></td><td><a href="krebs0056.png.gif">krebs0056.png.gif</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">243 </td></tr>
+<tr><td valign="top"><img src="/icons/image2.gif" alt="[IMG]"></td><td><a href="krebs0056.png">krebs0056.png</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">941 </td></tr>
+<tr><td valign="top"><img src="/icons/unknown.gif" alt="[ ]"></td><td><a href="krebs0056.lcd">krebs0056.lcd</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">864 </td></tr>
+<tr><td valign="top"><img src="/icons/image2.gif" alt="[IMG]"></td><td><a href="krebs0055.png.gif">krebs0055.png.gif</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">236 </td></tr>
+<tr><td valign="top"><img src="/icons/image2.gif" alt="[IMG]"></td><td><a href="krebs0055.png">krebs0055.png</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">853 </td></tr>
+<tr><td valign="top"><img src="/icons/unknown.gif" alt="[ ]"></td><td><a href="krebs0055.lcd">krebs0055.lcd</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">864 </td></tr>
+<tr><td valign="top"><img src="/icons/image2.gif" alt="[IMG]"></td><td><a href="krebs0054.png.gif">krebs0054.png.gif</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">230 </td></tr>
+<tr><td valign="top"><img src="/icons/image2.gif" alt="[IMG]"></td><td><a href="krebs0054.png">krebs0054.png</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">620 </td></tr>
+<tr><td valign="top"><img src="/icons/unknown.gif" alt="[ ]"></td><td><a href="krebs0054.lcd">krebs0054.lcd</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">864 </td></tr>
+<tr><td valign="top"><img src="/icons/image2.gif" alt="[IMG]"></td><td><a href="krebs0053.png.gif">krebs0053.png.gif</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">227 </td></tr>
+<tr><td valign="top"><img src="/icons/image2.gif" alt="[IMG]"></td><td><a href="krebs0053.png">krebs0053.png</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">613 </td></tr>
+<tr><td valign="top"><img src="/icons/unknown.gif" alt="[ ]"></td><td><a href="krebs0053.lcd">krebs0053.lcd</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">864 </td></tr>
+<tr><td valign="top"><img src="/icons/image2.gif" alt="[IMG]"></td><td><a href="krebs0052.png.gif">krebs0052.png.gif</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">237 </td></tr>
+<tr><td valign="top"><img src="/icons/image2.gif" alt="[IMG]"></td><td><a href="krebs0052.png">krebs0052.png</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">848 </td></tr>
+<tr><td valign="top"><img src="/icons/unknown.gif" alt="[ ]"></td><td><a href="krebs0052.lcd">krebs0052.lcd</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">864 </td></tr>
+<tr><td valign="top"><img src="/icons/image2.gif" alt="[IMG]"></td><td><a href="krebs0051.png.gif">krebs0051.png.gif</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">241 </td></tr>
+<tr><td valign="top"><img src="/icons/image2.gif" alt="[IMG]"></td><td><a href="krebs0051.png">krebs0051.png</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">947 </td></tr>
+<tr><td valign="top"><img src="/icons/unknown.gif" alt="[ ]"></td><td><a href="krebs0051.lcd">krebs0051.lcd</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">864 </td></tr>
+<tr><td valign="top"><img src="/icons/image2.gif" alt="[IMG]"></td><td><a href="krebs0050.png.gif">krebs0050.png.gif</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">245 </td></tr>
+<tr><td valign="top"><img src="/icons/image2.gif" alt="[IMG]"></td><td><a href="krebs0050.png">krebs0050.png</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">1.0K</td></tr>
+<tr><td valign="top"><img src="/icons/unknown.gif" alt="[ ]"></td><td><a href="krebs0050.lcd">krebs0050.lcd</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">864 </td></tr>
+<tr><td valign="top"><img src="/icons/image2.gif" alt="[IMG]"></td><td><a href="krebs0049.png.gif">krebs0049.png.gif</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">249 </td></tr>
+<tr><td valign="top"><img src="/icons/image2.gif" alt="[IMG]"></td><td><a href="krebs0049.png">krebs0049.png</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">1.2K</td></tr>
+<tr><td valign="top"><img src="/icons/unknown.gif" alt="[ ]"></td><td><a href="krebs0049.lcd">krebs0049.lcd</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">864 </td></tr>
+<tr><td valign="top"><img src="/icons/image2.gif" alt="[IMG]"></td><td><a href="krebs0048.png.gif">krebs0048.png.gif</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">258 </td></tr>
+<tr><td valign="top"><img src="/icons/image2.gif" alt="[IMG]"></td><td><a href="krebs0048.png">krebs0048.png</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">1.3K</td></tr>
+<tr><td valign="top"><img src="/icons/unknown.gif" alt="[ ]"></td><td><a href="krebs0048.lcd">krebs0048.lcd</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">864 </td></tr>
+<tr><td valign="top"><img src="/icons/image2.gif" alt="[IMG]"></td><td><a href="krebs0047.png.gif">krebs0047.png.gif</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">277 </td></tr>
+<tr><td valign="top"><img src="/icons/image2.gif" alt="[IMG]"></td><td><a href="krebs0047.png">krebs0047.png</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">1.4K</td></tr>
+<tr><td valign="top"><img src="/icons/unknown.gif" alt="[ ]"></td><td><a href="krebs0047.lcd">krebs0047.lcd</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">864 </td></tr>
+<tr><td valign="top"><img src="/icons/image2.gif" alt="[IMG]"></td><td><a href="krebs0046.png.gif">krebs0046.png.gif</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">289 </td></tr>
+<tr><td valign="top"><img src="/icons/image2.gif" alt="[IMG]"></td><td><a href="krebs0046.png">krebs0046.png</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">1.6K</td></tr>
+<tr><td valign="top"><img src="/icons/unknown.gif" alt="[ ]"></td><td><a href="krebs0046.lcd">krebs0046.lcd</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">864 </td></tr>
+<tr><td valign="top"><img src="/icons/image2.gif" alt="[IMG]"></td><td><a href="krebs0045.png.gif">krebs0045.png.gif</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">303 </td></tr>
+<tr><td valign="top"><img src="/icons/image2.gif" alt="[IMG]"></td><td><a href="krebs0045.png">krebs0045.png</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">1.8K</td></tr>
+<tr><td valign="top"><img src="/icons/unknown.gif" alt="[ ]"></td><td><a href="krebs0045.lcd">krebs0045.lcd</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">864 </td></tr>
+<tr><td valign="top"><img src="/icons/image2.gif" alt="[IMG]"></td><td><a href="krebs0044.png.gif">krebs0044.png.gif</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">323 </td></tr>
+<tr><td valign="top"><img src="/icons/image2.gif" alt="[IMG]"></td><td><a href="krebs0044.png">krebs0044.png</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">2.0K</td></tr>
+<tr><td valign="top"><img src="/icons/unknown.gif" alt="[ ]"></td><td><a href="krebs0044.lcd">krebs0044.lcd</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">864 </td></tr>
+<tr><td valign="top"><img src="/icons/image2.gif" alt="[IMG]"></td><td><a href="krebs0043.png.gif">krebs0043.png.gif</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">337 </td></tr>
+<tr><td valign="top"><img src="/icons/image2.gif" alt="[IMG]"></td><td><a href="krebs0043.png">krebs0043.png</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">2.1K</td></tr>
+<tr><td valign="top"><img src="/icons/unknown.gif" alt="[ ]"></td><td><a href="krebs0043.lcd">krebs0043.lcd</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">864 </td></tr>
+<tr><td valign="top"><img src="/icons/image2.gif" alt="[IMG]"></td><td><a href="krebs0042.png.gif">krebs0042.png.gif</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">355 </td></tr>
+<tr><td valign="top"><img src="/icons/image2.gif" alt="[IMG]"></td><td><a href="krebs0042.png">krebs0042.png</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">2.2K</td></tr>
+<tr><td valign="top"><img src="/icons/unknown.gif" alt="[ ]"></td><td><a href="krebs0042.lcd">krebs0042.lcd</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">864 </td></tr>
+<tr><td valign="top"><img src="/icons/image2.gif" alt="[IMG]"></td><td><a href="krebs0041.png.gif">krebs0041.png.gif</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">363 </td></tr>
+<tr><td valign="top"><img src="/icons/image2.gif" alt="[IMG]"></td><td><a href="krebs0041.png">krebs0041.png</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">2.3K</td></tr>
+<tr><td valign="top"><img src="/icons/unknown.gif" alt="[ ]"></td><td><a href="krebs0041.lcd">krebs0041.lcd</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">864 </td></tr>
+<tr><td valign="top"><img src="/icons/image2.gif" alt="[IMG]"></td><td><a href="krebs0040.png.gif">krebs0040.png.gif</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">381 </td></tr>
+<tr><td valign="top"><img src="/icons/image2.gif" alt="[IMG]"></td><td><a href="krebs0040.png">krebs0040.png</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">2.3K</td></tr>
+<tr><td valign="top"><img src="/icons/unknown.gif" alt="[ ]"></td><td><a href="krebs0040.lcd">krebs0040.lcd</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">864 </td></tr>
+<tr><td valign="top"><img src="/icons/image2.gif" alt="[IMG]"></td><td><a href="krebs0039.png.gif">krebs0039.png.gif</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">383 </td></tr>
+<tr><td valign="top"><img src="/icons/image2.gif" alt="[IMG]"></td><td><a href="krebs0039.png">krebs0039.png</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">2.3K</td></tr>
+<tr><td valign="top"><img src="/icons/unknown.gif" alt="[ ]"></td><td><a href="krebs0039.lcd">krebs0039.lcd</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">864 </td></tr>
+<tr><td valign="top"><img src="/icons/image2.gif" alt="[IMG]"></td><td><a href="krebs0038.png.gif">krebs0038.png.gif</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">384 </td></tr>
+<tr><td valign="top"><img src="/icons/image2.gif" alt="[IMG]"></td><td><a href="krebs0038.png">krebs0038.png</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">2.3K</td></tr>
+<tr><td valign="top"><img src="/icons/unknown.gif" alt="[ ]"></td><td><a href="krebs0038.lcd">krebs0038.lcd</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">864 </td></tr>
+<tr><td valign="top"><img src="/icons/image2.gif" alt="[IMG]"></td><td><a href="krebs0037.png.gif">krebs0037.png.gif</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">387 </td></tr>
+<tr><td valign="top"><img src="/icons/image2.gif" alt="[IMG]"></td><td><a href="krebs0037.png">krebs0037.png</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">2.2K</td></tr>
+<tr><td valign="top"><img src="/icons/unknown.gif" alt="[ ]"></td><td><a href="krebs0037.lcd">krebs0037.lcd</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">864 </td></tr>
+<tr><td valign="top"><img src="/icons/image2.gif" alt="[IMG]"></td><td><a href="krebs0036.png.gif">krebs0036.png.gif</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">392 </td></tr>
+<tr><td valign="top"><img src="/icons/image2.gif" alt="[IMG]"></td><td><a href="krebs0036.png">krebs0036.png</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">2.0K</td></tr>
+<tr><td valign="top"><img src="/icons/unknown.gif" alt="[ ]"></td><td><a href="krebs0036.lcd">krebs0036.lcd</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">864 </td></tr>
+<tr><td valign="top"><img src="/icons/image2.gif" alt="[IMG]"></td><td><a href="krebs0035.png.gif">krebs0035.png.gif</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">378 </td></tr>
+<tr><td valign="top"><img src="/icons/image2.gif" alt="[IMG]"></td><td><a href="krebs0035.png">krebs0035.png</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">2.2K</td></tr>
+<tr><td valign="top"><img src="/icons/unknown.gif" alt="[ ]"></td><td><a href="krebs0035.lcd">krebs0035.lcd</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">864 </td></tr>
+<tr><td valign="top"><img src="/icons/image2.gif" alt="[IMG]"></td><td><a href="krebs0034.png.gif">krebs0034.png.gif</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">391 </td></tr>
+<tr><td valign="top"><img src="/icons/image2.gif" alt="[IMG]"></td><td><a href="krebs0034.png">krebs0034.png</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">2.2K</td></tr>
+<tr><td valign="top"><img src="/icons/unknown.gif" alt="[ ]"></td><td><a href="krebs0034.lcd">krebs0034.lcd</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">864 </td></tr>
+<tr><td valign="top"><img src="/icons/image2.gif" alt="[IMG]"></td><td><a href="krebs0033.png.gif">krebs0033.png.gif</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">389 </td></tr>
+<tr><td valign="top"><img src="/icons/image2.gif" alt="[IMG]"></td><td><a href="krebs0033.png">krebs0033.png</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">2.3K</td></tr>
+<tr><td valign="top"><img src="/icons/unknown.gif" alt="[ ]"></td><td><a href="krebs0033.lcd">krebs0033.lcd</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">864 </td></tr>
+<tr><td valign="top"><img src="/icons/image2.gif" alt="[IMG]"></td><td><a href="krebs0032.png.gif">krebs0032.png.gif</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">377 </td></tr>
+<tr><td valign="top"><img src="/icons/image2.gif" alt="[IMG]"></td><td><a href="krebs0032.png">krebs0032.png</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">2.3K</td></tr>
+<tr><td valign="top"><img src="/icons/unknown.gif" alt="[ ]"></td><td><a href="krebs0032.lcd">krebs0032.lcd</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">864 </td></tr>
+<tr><td valign="top"><img src="/icons/image2.gif" alt="[IMG]"></td><td><a href="krebs0031.png.gif">krebs0031.png.gif</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">360 </td></tr>
+<tr><td valign="top"><img src="/icons/image2.gif" alt="[IMG]"></td><td><a href="krebs0031.png">krebs0031.png</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">2.3K</td></tr>
+<tr><td valign="top"><img src="/icons/unknown.gif" alt="[ ]"></td><td><a href="krebs0031.lcd">krebs0031.lcd</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">864 </td></tr>
+<tr><td valign="top"><img src="/icons/image2.gif" alt="[IMG]"></td><td><a href="krebs0030.png.gif">krebs0030.png.gif</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">347 </td></tr>
+<tr><td valign="top"><img src="/icons/image2.gif" alt="[IMG]"></td><td><a href="krebs0030.png">krebs0030.png</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">2.2K</td></tr>
+<tr><td valign="top"><img src="/icons/unknown.gif" alt="[ ]"></td><td><a href="krebs0030.lcd">krebs0030.lcd</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">864 </td></tr>
+<tr><td valign="top"><img src="/icons/image2.gif" alt="[IMG]"></td><td><a href="krebs0029.png.gif">krebs0029.png.gif</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">341 </td></tr>
+<tr><td valign="top"><img src="/icons/image2.gif" alt="[IMG]"></td><td><a href="krebs0029.png">krebs0029.png</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">2.1K</td></tr>
+<tr><td valign="top"><img src="/icons/unknown.gif" alt="[ ]"></td><td><a href="krebs0029.lcd">krebs0029.lcd</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">864 </td></tr>
+<tr><td valign="top"><img src="/icons/image2.gif" alt="[IMG]"></td><td><a href="krebs0028.png.gif">krebs0028.png.gif</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">332 </td></tr>
+<tr><td valign="top"><img src="/icons/image2.gif" alt="[IMG]"></td><td><a href="krebs0028.png">krebs0028.png</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">1.9K</td></tr>
+<tr><td valign="top"><img src="/icons/unknown.gif" alt="[ ]"></td><td><a href="krebs0028.lcd">krebs0028.lcd</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">864 </td></tr>
+<tr><td valign="top"><img src="/icons/image2.gif" alt="[IMG]"></td><td><a href="krebs0027.png.gif">krebs0027.png.gif</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">310 </td></tr>
+<tr><td valign="top"><img src="/icons/image2.gif" alt="[IMG]"></td><td><a href="krebs0027.png">krebs0027.png</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">1.9K</td></tr>
+<tr><td valign="top"><img src="/icons/unknown.gif" alt="[ ]"></td><td><a href="krebs0027.lcd">krebs0027.lcd</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">864 </td></tr>
+<tr><td valign="top"><img src="/icons/image2.gif" alt="[IMG]"></td><td><a href="krebs0026.png.gif">krebs0026.png.gif</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">299 </td></tr>
+<tr><td valign="top"><img src="/icons/image2.gif" alt="[IMG]"></td><td><a href="krebs0026.png">krebs0026.png</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">1.6K</td></tr>
+<tr><td valign="top"><img src="/icons/unknown.gif" alt="[ ]"></td><td><a href="krebs0026.lcd">krebs0026.lcd</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">864 </td></tr>
+<tr><td valign="top"><img src="/icons/image2.gif" alt="[IMG]"></td><td><a href="krebs0025.png.gif">krebs0025.png.gif</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">282 </td></tr>
+<tr><td valign="top"><img src="/icons/image2.gif" alt="[IMG]"></td><td><a href="krebs0025.png">krebs0025.png</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">1.5K</td></tr>
+<tr><td valign="top"><img src="/icons/unknown.gif" alt="[ ]"></td><td><a href="krebs0025.lcd">krebs0025.lcd</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">864 </td></tr>
+<tr><td valign="top"><img src="/icons/image2.gif" alt="[IMG]"></td><td><a href="krebs0024.png.gif">krebs0024.png.gif</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">268 </td></tr>
+<tr><td valign="top"><img src="/icons/image2.gif" alt="[IMG]"></td><td><a href="krebs0024.png">krebs0024.png</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">1.4K</td></tr>
+<tr><td valign="top"><img src="/icons/unknown.gif" alt="[ ]"></td><td><a href="krebs0024.lcd">krebs0024.lcd</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">864 </td></tr>
+<tr><td valign="top"><img src="/icons/image2.gif" alt="[IMG]"></td><td><a href="krebs0023.png.gif">krebs0023.png.gif</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">258 </td></tr>
+<tr><td valign="top"><img src="/icons/image2.gif" alt="[IMG]"></td><td><a href="krebs0023.png">krebs0023.png</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">1.2K</td></tr>
+<tr><td valign="top"><img src="/icons/unknown.gif" alt="[ ]"></td><td><a href="krebs0023.lcd">krebs0023.lcd</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">864 </td></tr>
+<tr><td valign="top"><img src="/icons/image2.gif" alt="[IMG]"></td><td><a href="krebs0022.png.gif">krebs0022.png.gif</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">247 </td></tr>
+<tr><td valign="top"><img src="/icons/image2.gif" alt="[IMG]"></td><td><a href="krebs0022.png">krebs0022.png</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">1.0K</td></tr>
+<tr><td valign="top"><img src="/icons/unknown.gif" alt="[ ]"></td><td><a href="krebs0022.lcd">krebs0022.lcd</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">864 </td></tr>
+<tr><td valign="top"><img src="/icons/image2.gif" alt="[IMG]"></td><td><a href="krebs0021.png.gif">krebs0021.png.gif</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">246 </td></tr>
+<tr><td valign="top"><img src="/icons/image2.gif" alt="[IMG]"></td><td><a href="krebs0021.png">krebs0021.png</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">945 </td></tr>
+<tr><td valign="top"><img src="/icons/unknown.gif" alt="[ ]"></td><td><a href="krebs0021.lcd">krebs0021.lcd</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">864 </td></tr>
+<tr><td valign="top"><img src="/icons/image2.gif" alt="[IMG]"></td><td><a href="krebs0020.png.gif">krebs0020.png.gif</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">238 </td></tr>
+<tr><td valign="top"><img src="/icons/image2.gif" alt="[IMG]"></td><td><a href="krebs0020.png">krebs0020.png</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">870 </td></tr>
+<tr><td valign="top"><img src="/icons/unknown.gif" alt="[ ]"></td><td><a href="krebs0020.lcd">krebs0020.lcd</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">864 </td></tr>
+<tr><td valign="top"><img src="/icons/image2.gif" alt="[IMG]"></td><td><a href="krebs0019.png.gif">krebs0019.png.gif</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">231 </td></tr>
+<tr><td valign="top"><img src="/icons/image2.gif" alt="[IMG]"></td><td><a href="krebs0019.png">krebs0019.png</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">646 </td></tr>
+<tr><td valign="top"><img src="/icons/unknown.gif" alt="[ ]"></td><td><a href="krebs0019.lcd">krebs0019.lcd</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">864 </td></tr>
+<tr><td valign="top"><img src="/icons/image2.gif" alt="[IMG]"></td><td><a href="krebs0018.png.gif">krebs0018.png.gif</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">230 </td></tr>
+<tr><td valign="top"><img src="/icons/image2.gif" alt="[IMG]"></td><td><a href="krebs0018.png">krebs0018.png</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">628 </td></tr>
+<tr><td valign="top"><img src="/icons/unknown.gif" alt="[ ]"></td><td><a href="krebs0018.lcd">krebs0018.lcd</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">864 </td></tr>
+<tr><td valign="top"><img src="/icons/image2.gif" alt="[IMG]"></td><td><a href="krebs0017.png.gif">krebs0017.png.gif</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">238 </td></tr>
+<tr><td valign="top"><img src="/icons/image2.gif" alt="[IMG]"></td><td><a href="krebs0017.png">krebs0017.png</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">896 </td></tr>
+<tr><td valign="top"><img src="/icons/unknown.gif" alt="[ ]"></td><td><a href="krebs0017.lcd">krebs0017.lcd</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">864 </td></tr>
+<tr><td valign="top"><img src="/icons/image2.gif" alt="[IMG]"></td><td><a href="krebs0016.png.gif">krebs0016.png.gif</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">245 </td></tr>
+<tr><td valign="top"><img src="/icons/image2.gif" alt="[IMG]"></td><td><a href="krebs0016.png">krebs0016.png</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">950 </td></tr>
+<tr><td valign="top"><img src="/icons/unknown.gif" alt="[ ]"></td><td><a href="krebs0016.lcd">krebs0016.lcd</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">864 </td></tr>
+<tr><td valign="top"><img src="/icons/image2.gif" alt="[IMG]"></td><td><a href="krebs0015.png.gif">krebs0015.png.gif</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">246 </td></tr>
+<tr><td valign="top"><img src="/icons/image2.gif" alt="[IMG]"></td><td><a href="krebs0015.png">krebs0015.png</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">1.0K</td></tr>
+<tr><td valign="top"><img src="/icons/unknown.gif" alt="[ ]"></td><td><a href="krebs0015.lcd">krebs0015.lcd</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">864 </td></tr>
+<tr><td valign="top"><img src="/icons/image2.gif" alt="[IMG]"></td><td><a href="krebs0014.png.gif">krebs0014.png.gif</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">255 </td></tr>
+<tr><td valign="top"><img src="/icons/image2.gif" alt="[IMG]"></td><td><a href="krebs0014.png">krebs0014.png</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">1.2K</td></tr>
+<tr><td valign="top"><img src="/icons/unknown.gif" alt="[ ]"></td><td><a href="krebs0014.lcd">krebs0014.lcd</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">864 </td></tr>
+<tr><td valign="top"><img src="/icons/image2.gif" alt="[IMG]"></td><td><a href="krebs0013.png.gif">krebs0013.png.gif</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">267 </td></tr>
+<tr><td valign="top"><img src="/icons/image2.gif" alt="[IMG]"></td><td><a href="krebs0013.png">krebs0013.png</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">1.4K</td></tr>
+<tr><td valign="top"><img src="/icons/unknown.gif" alt="[ ]"></td><td><a href="krebs0013.lcd">krebs0013.lcd</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">864 </td></tr>
+<tr><td valign="top"><img src="/icons/image2.gif" alt="[IMG]"></td><td><a href="krebs0012.png.gif">krebs0012.png.gif</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">283 </td></tr>
+<tr><td valign="top"><img src="/icons/image2.gif" alt="[IMG]"></td><td><a href="krebs0012.png">krebs0012.png</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">1.5K</td></tr>
+<tr><td valign="top"><img src="/icons/unknown.gif" alt="[ ]"></td><td><a href="krebs0012.lcd">krebs0012.lcd</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">864 </td></tr>
+<tr><td valign="top"><img src="/icons/image2.gif" alt="[IMG]"></td><td><a href="krebs0011.png.gif">krebs0011.png.gif</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">293 </td></tr>
+<tr><td valign="top"><img src="/icons/image2.gif" alt="[IMG]"></td><td><a href="krebs0011.png">krebs0011.png</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">1.6K</td></tr>
+<tr><td valign="top"><img src="/icons/unknown.gif" alt="[ ]"></td><td><a href="krebs0011.lcd">krebs0011.lcd</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">864 </td></tr>
+<tr><td valign="top"><img src="/icons/image2.gif" alt="[IMG]"></td><td><a href="krebs0010.png.gif">krebs0010.png.gif</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">309 </td></tr>
+<tr><td valign="top"><img src="/icons/image2.gif" alt="[IMG]"></td><td><a href="krebs0010.png">krebs0010.png</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">1.8K</td></tr>
+<tr><td valign="top"><img src="/icons/unknown.gif" alt="[ ]"></td><td><a href="krebs0010.lcd">krebs0010.lcd</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">864 </td></tr>
+<tr><td valign="top"><img src="/icons/image2.gif" alt="[IMG]"></td><td><a href="krebs0009.png.gif">krebs0009.png.gif</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">326 </td></tr>
+<tr><td valign="top"><img src="/icons/image2.gif" alt="[IMG]"></td><td><a href="krebs0009.png">krebs0009.png</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">1.9K</td></tr>
+<tr><td valign="top"><img src="/icons/unknown.gif" alt="[ ]"></td><td><a href="krebs0009.lcd">krebs0009.lcd</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">864 </td></tr>
+<tr><td valign="top"><img src="/icons/image2.gif" alt="[IMG]"></td><td><a href="krebs0008.png.gif">krebs0008.png.gif</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">341 </td></tr>
+<tr><td valign="top"><img src="/icons/image2.gif" alt="[IMG]"></td><td><a href="krebs0008.png">krebs0008.png</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">2.1K</td></tr>
+<tr><td valign="top"><img src="/icons/unknown.gif" alt="[ ]"></td><td><a href="krebs0008.lcd">krebs0008.lcd</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">864 </td></tr>
+<tr><td valign="top"><img src="/icons/image2.gif" alt="[IMG]"></td><td><a href="krebs0007.png.gif">krebs0007.png.gif</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">347 </td></tr>
+<tr><td valign="top"><img src="/icons/image2.gif" alt="[IMG]"></td><td><a href="krebs0007.png">krebs0007.png</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">2.1K</td></tr>
+<tr><td valign="top"><img src="/icons/unknown.gif" alt="[ ]"></td><td><a href="krebs0007.lcd">krebs0007.lcd</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">864 </td></tr>
+<tr><td valign="top"><img src="/icons/image2.gif" alt="[IMG]"></td><td><a href="krebs0006.png.gif">krebs0006.png.gif</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">363 </td></tr>
+<tr><td valign="top"><img src="/icons/image2.gif" alt="[IMG]"></td><td><a href="krebs0006.png">krebs0006.png</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">2.2K</td></tr>
+<tr><td valign="top"><img src="/icons/unknown.gif" alt="[ ]"></td><td><a href="krebs0006.lcd">krebs0006.lcd</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">864 </td></tr>
+<tr><td valign="top"><img src="/icons/image2.gif" alt="[IMG]"></td><td><a href="krebs0005.png.gif">krebs0005.png.gif</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">372 </td></tr>
+<tr><td valign="top"><img src="/icons/image2.gif" alt="[IMG]"></td><td><a href="krebs0005.png">krebs0005.png</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">2.3K</td></tr>
+<tr><td valign="top"><img src="/icons/unknown.gif" alt="[ ]"></td><td><a href="krebs0005.lcd">krebs0005.lcd</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">864 </td></tr>
+<tr><td valign="top"><img src="/icons/image2.gif" alt="[IMG]"></td><td><a href="krebs0004.png.gif">krebs0004.png.gif</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">391 </td></tr>
+<tr><td valign="top"><img src="/icons/image2.gif" alt="[IMG]"></td><td><a href="krebs0004.png">krebs0004.png</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">2.3K</td></tr>
+<tr><td valign="top"><img src="/icons/unknown.gif" alt="[ ]"></td><td><a href="krebs0004.lcd">krebs0004.lcd</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">864 </td></tr>
+<tr><td valign="top"><img src="/icons/image2.gif" alt="[IMG]"></td><td><a href="krebs0003.png.gif">krebs0003.png.gif</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">387 </td></tr>
+<tr><td valign="top"><img src="/icons/image2.gif" alt="[IMG]"></td><td><a href="krebs0003.png">krebs0003.png</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">2.3K</td></tr>
+<tr><td valign="top"><img src="/icons/unknown.gif" alt="[ ]"></td><td><a href="krebs0003.lcd">krebs0003.lcd</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">864 </td></tr>
+<tr><td valign="top"><img src="/icons/image2.gif" alt="[IMG]"></td><td><a href="krebs0002.png.gif">krebs0002.png.gif</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">387 </td></tr>
+<tr><td valign="top"><img src="/icons/image2.gif" alt="[IMG]"></td><td><a href="krebs0002.png">krebs0002.png</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">2.2K</td></tr>
+<tr><td valign="top"><img src="/icons/unknown.gif" alt="[ ]"></td><td><a href="krebs0002.lcd">krebs0002.lcd</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">864 </td></tr>
+<tr><td valign="top"><img src="/icons/image2.gif" alt="[IMG]"></td><td><a href="krebs0001.png.gif">krebs0001.png.gif</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">393 </td></tr>
+<tr><td valign="top"><img src="/icons/image2.gif" alt="[IMG]"></td><td><a href="krebs0001.png">krebs0001.png</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">2.0K</td></tr>
+<tr><td valign="top"><img src="/icons/unknown.gif" alt="[ ]"></td><td><a href="krebs0001.lcd">krebs0001.lcd</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">864 </td></tr>
+<tr><td valign="top"><img src="/icons/unknown.gif" alt="[ ]"></td><td><a href="animation.lcd">animation.lcd</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right"> 59K</td></tr>
+<tr><th colspan="5"><hr></th></tr>
+</table>
+<address>Apache/2.2.9 (Debian) mod_ssl/2.2.9 OpenSSL/0.9.8g Server at venus.berapla.de Port 80</address>
+</body></html>
diff --git a/cholerab/bling/cancer_3d/index.html?C=S;O=A b/cholerab/bling/cancer_3d/index.html?C=S;O=A
new file mode 100644
index 00000000..d7793e89
--- /dev/null
+++ b/cholerab/bling/cancer_3d/index.html?C=S;O=A
@@ -0,0 +1,225 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
+<html>
+ <head>
+ <title>Index of /~infin/camp2011/r0cket/k</title>
+ </head>
+ <body>
+<h1>Index of /~infin/camp2011/r0cket/k</h1>
+<table><tr><th><img src="/icons/blank.gif" alt="[ICO]"></th><th><a href="?C=N;O=A">Name</a></th><th><a href="?C=M;O=A">Last modified</a></th><th><a href="?C=S;O=D">Size</a></th><th><a href="?C=D;O=A">Description</a></th></tr><tr><th colspan="5"><hr></th></tr>
+<tr><td valign="top"><img src="/icons/back.gif" alt="[DIR]"></td><td><a href="/~infin/camp2011/r0cket/">Parent Directory</a></td><td>&nbsp;</td><td align="right"> - </td></tr>
+<tr><td valign="top"><img src="/icons/image2.gif" alt="[IMG]"></td><td><a href="krebs0053.png.gif">krebs0053.png.gif</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">227 </td></tr>
+<tr><td valign="top"><img src="/icons/image2.gif" alt="[IMG]"></td><td><a href="krebs0018.png.gif">krebs0018.png.gif</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">230 </td></tr>
+<tr><td valign="top"><img src="/icons/image2.gif" alt="[IMG]"></td><td><a href="krebs0054.png.gif">krebs0054.png.gif</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">230 </td></tr>
+<tr><td valign="top"><img src="/icons/image2.gif" alt="[IMG]"></td><td><a href="krebs0019.png.gif">krebs0019.png.gif</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">231 </td></tr>
+<tr><td valign="top"><img src="/icons/image2.gif" alt="[IMG]"></td><td><a href="krebs0055.png.gif">krebs0055.png.gif</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">236 </td></tr>
+<tr><td valign="top"><img src="/icons/image2.gif" alt="[IMG]"></td><td><a href="krebs0052.png.gif">krebs0052.png.gif</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">237 </td></tr>
+<tr><td valign="top"><img src="/icons/image2.gif" alt="[IMG]"></td><td><a href="krebs0017.png.gif">krebs0017.png.gif</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">238 </td></tr>
+<tr><td valign="top"><img src="/icons/image2.gif" alt="[IMG]"></td><td><a href="krebs0020.png.gif">krebs0020.png.gif</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">238 </td></tr>
+<tr><td valign="top"><img src="/icons/image2.gif" alt="[IMG]"></td><td><a href="krebs0051.png.gif">krebs0051.png.gif</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">241 </td></tr>
+<tr><td valign="top"><img src="/icons/image2.gif" alt="[IMG]"></td><td><a href="krebs0056.png.gif">krebs0056.png.gif</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">243 </td></tr>
+<tr><td valign="top"><img src="/icons/image2.gif" alt="[IMG]"></td><td><a href="krebs0057.png.gif">krebs0057.png.gif</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">243 </td></tr>
+<tr><td valign="top"><img src="/icons/image2.gif" alt="[IMG]"></td><td><a href="krebs0016.png.gif">krebs0016.png.gif</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">245 </td></tr>
+<tr><td valign="top"><img src="/icons/image2.gif" alt="[IMG]"></td><td><a href="krebs0050.png.gif">krebs0050.png.gif</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">245 </td></tr>
+<tr><td valign="top"><img src="/icons/image2.gif" alt="[IMG]"></td><td><a href="krebs0015.png.gif">krebs0015.png.gif</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">246 </td></tr>
+<tr><td valign="top"><img src="/icons/image2.gif" alt="[IMG]"></td><td><a href="krebs0021.png.gif">krebs0021.png.gif</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">246 </td></tr>
+<tr><td valign="top"><img src="/icons/image2.gif" alt="[IMG]"></td><td><a href="krebs0022.png.gif">krebs0022.png.gif</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">247 </td></tr>
+<tr><td valign="top"><img src="/icons/image2.gif" alt="[IMG]"></td><td><a href="krebs0049.png.gif">krebs0049.png.gif</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">249 </td></tr>
+<tr><td valign="top"><img src="/icons/image2.gif" alt="[IMG]"></td><td><a href="krebs0058.png.gif">krebs0058.png.gif</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">249 </td></tr>
+<tr><td valign="top"><img src="/icons/image2.gif" alt="[IMG]"></td><td><a href="krebs0014.png.gif">krebs0014.png.gif</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">255 </td></tr>
+<tr><td valign="top"><img src="/icons/image2.gif" alt="[IMG]"></td><td><a href="krebs0023.png.gif">krebs0023.png.gif</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">258 </td></tr>
+<tr><td valign="top"><img src="/icons/image2.gif" alt="[IMG]"></td><td><a href="krebs0048.png.gif">krebs0048.png.gif</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">258 </td></tr>
+<tr><td valign="top"><img src="/icons/image2.gif" alt="[IMG]"></td><td><a href="krebs0059.png.gif">krebs0059.png.gif</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">262 </td></tr>
+<tr><td valign="top"><img src="/icons/image2.gif" alt="[IMG]"></td><td><a href="krebs0013.png.gif">krebs0013.png.gif</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">267 </td></tr>
+<tr><td valign="top"><img src="/icons/image2.gif" alt="[IMG]"></td><td><a href="krebs0024.png.gif">krebs0024.png.gif</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">268 </td></tr>
+<tr><td valign="top"><img src="/icons/image2.gif" alt="[IMG]"></td><td><a href="krebs0047.png.gif">krebs0047.png.gif</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">277 </td></tr>
+<tr><td valign="top"><img src="/icons/image2.gif" alt="[IMG]"></td><td><a href="krebs0060.png.gif">krebs0060.png.gif</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">280 </td></tr>
+<tr><td valign="top"><img src="/icons/image2.gif" alt="[IMG]"></td><td><a href="krebs0025.png.gif">krebs0025.png.gif</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">282 </td></tr>
+<tr><td valign="top"><img src="/icons/image2.gif" alt="[IMG]"></td><td><a href="krebs0012.png.gif">krebs0012.png.gif</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">283 </td></tr>
+<tr><td valign="top"><img src="/icons/image2.gif" alt="[IMG]"></td><td><a href="krebs0061.png.gif">krebs0061.png.gif</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">286 </td></tr>
+<tr><td valign="top"><img src="/icons/image2.gif" alt="[IMG]"></td><td><a href="krebs0046.png.gif">krebs0046.png.gif</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">289 </td></tr>
+<tr><td valign="top"><img src="/icons/image2.gif" alt="[IMG]"></td><td><a href="krebs0011.png.gif">krebs0011.png.gif</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">293 </td></tr>
+<tr><td valign="top"><img src="/icons/image2.gif" alt="[IMG]"></td><td><a href="krebs0026.png.gif">krebs0026.png.gif</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">299 </td></tr>
+<tr><td valign="top"><img src="/icons/image2.gif" alt="[IMG]"></td><td><a href="krebs0045.png.gif">krebs0045.png.gif</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">303 </td></tr>
+<tr><td valign="top"><img src="/icons/image2.gif" alt="[IMG]"></td><td><a href="krebs0062.png.gif">krebs0062.png.gif</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">303 </td></tr>
+<tr><td valign="top"><img src="/icons/image2.gif" alt="[IMG]"></td><td><a href="krebs0010.png.gif">krebs0010.png.gif</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">309 </td></tr>
+<tr><td valign="top"><img src="/icons/image2.gif" alt="[IMG]"></td><td><a href="krebs0027.png.gif">krebs0027.png.gif</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">310 </td></tr>
+<tr><td valign="top"><img src="/icons/image2.gif" alt="[IMG]"></td><td><a href="krebs0044.png.gif">krebs0044.png.gif</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">323 </td></tr>
+<tr><td valign="top"><img src="/icons/image2.gif" alt="[IMG]"></td><td><a href="krebs0009.png.gif">krebs0009.png.gif</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">326 </td></tr>
+<tr><td valign="top"><img src="/icons/image2.gif" alt="[IMG]"></td><td><a href="krebs0063.png.gif">krebs0063.png.gif</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">328 </td></tr>
+<tr><td valign="top"><img src="/icons/image2.gif" alt="[IMG]"></td><td><a href="krebs0028.png.gif">krebs0028.png.gif</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">332 </td></tr>
+<tr><td valign="top"><img src="/icons/image2.gif" alt="[IMG]"></td><td><a href="krebs0043.png.gif">krebs0043.png.gif</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">337 </td></tr>
+<tr><td valign="top"><img src="/icons/image2.gif" alt="[IMG]"></td><td><a href="krebs0008.png.gif">krebs0008.png.gif</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">341 </td></tr>
+<tr><td valign="top"><img src="/icons/image2.gif" alt="[IMG]"></td><td><a href="krebs0029.png.gif">krebs0029.png.gif</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">341 </td></tr>
+<tr><td valign="top"><img src="/icons/image2.gif" alt="[IMG]"></td><td><a href="krebs0064.png.gif">krebs0064.png.gif</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">345 </td></tr>
+<tr><td valign="top"><img src="/icons/image2.gif" alt="[IMG]"></td><td><a href="krebs0007.png.gif">krebs0007.png.gif</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">347 </td></tr>
+<tr><td valign="top"><img src="/icons/image2.gif" alt="[IMG]"></td><td><a href="krebs0030.png.gif">krebs0030.png.gif</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">347 </td></tr>
+<tr><td valign="top"><img src="/icons/image2.gif" alt="[IMG]"></td><td><a href="krebs0065.png.gif">krebs0065.png.gif</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">351 </td></tr>
+<tr><td valign="top"><img src="/icons/image2.gif" alt="[IMG]"></td><td><a href="krebs0042.png.gif">krebs0042.png.gif</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">355 </td></tr>
+<tr><td valign="top"><img src="/icons/image2.gif" alt="[IMG]"></td><td><a href="krebs0031.png.gif">krebs0031.png.gif</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">360 </td></tr>
+<tr><td valign="top"><img src="/icons/image2.gif" alt="[IMG]"></td><td><a href="krebs0006.png.gif">krebs0006.png.gif</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">363 </td></tr>
+<tr><td valign="top"><img src="/icons/image2.gif" alt="[IMG]"></td><td><a href="krebs0041.png.gif">krebs0041.png.gif</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">363 </td></tr>
+<tr><td valign="top"><img src="/icons/image2.gif" alt="[IMG]"></td><td><a href="krebs0066.png.gif">krebs0066.png.gif</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">369 </td></tr>
+<tr><td valign="top"><img src="/icons/image2.gif" alt="[IMG]"></td><td><a href="krebs0005.png.gif">krebs0005.png.gif</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">372 </td></tr>
+<tr><td valign="top"><img src="/icons/image2.gif" alt="[IMG]"></td><td><a href="krebs0032.png.gif">krebs0032.png.gif</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">377 </td></tr>
+<tr><td valign="top"><img src="/icons/image2.gif" alt="[IMG]"></td><td><a href="krebs0035.png.gif">krebs0035.png.gif</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">378 </td></tr>
+<tr><td valign="top"><img src="/icons/image2.gif" alt="[IMG]"></td><td><a href="krebs0067.png.gif">krebs0067.png.gif</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">378 </td></tr>
+<tr><td valign="top"><img src="/icons/image2.gif" alt="[IMG]"></td><td><a href="krebs0040.png.gif">krebs0040.png.gif</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">381 </td></tr>
+<tr><td valign="top"><img src="/icons/image2.gif" alt="[IMG]"></td><td><a href="krebs0039.png.gif">krebs0039.png.gif</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">383 </td></tr>
+<tr><td valign="top"><img src="/icons/image2.gif" alt="[IMG]"></td><td><a href="krebs0038.png.gif">krebs0038.png.gif</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">384 </td></tr>
+<tr><td valign="top"><img src="/icons/image2.gif" alt="[IMG]"></td><td><a href="krebs0070.png.gif">krebs0070.png.gif</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">385 </td></tr>
+<tr><td valign="top"><img src="/icons/image2.gif" alt="[IMG]"></td><td><a href="krebs0068.png.gif">krebs0068.png.gif</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">386 </td></tr>
+<tr><td valign="top"><img src="/icons/image2.gif" alt="[IMG]"></td><td><a href="krebs0069.png.gif">krebs0069.png.gif</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">386 </td></tr>
+<tr><td valign="top"><img src="/icons/image2.gif" alt="[IMG]"></td><td><a href="krebs0002.png.gif">krebs0002.png.gif</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">387 </td></tr>
+<tr><td valign="top"><img src="/icons/image2.gif" alt="[IMG]"></td><td><a href="krebs0003.png.gif">krebs0003.png.gif</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">387 </td></tr>
+<tr><td valign="top"><img src="/icons/image2.gif" alt="[IMG]"></td><td><a href="krebs0037.png.gif">krebs0037.png.gif</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">387 </td></tr>
+<tr><td valign="top"><img src="/icons/image2.gif" alt="[IMG]"></td><td><a href="krebs0033.png.gif">krebs0033.png.gif</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">389 </td></tr>
+<tr><td valign="top"><img src="/icons/image2.gif" alt="[IMG]"></td><td><a href="krebs0004.png.gif">krebs0004.png.gif</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">391 </td></tr>
+<tr><td valign="top"><img src="/icons/image2.gif" alt="[IMG]"></td><td><a href="krebs0034.png.gif">krebs0034.png.gif</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">391 </td></tr>
+<tr><td valign="top"><img src="/icons/image2.gif" alt="[IMG]"></td><td><a href="krebs0036.png.gif">krebs0036.png.gif</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">392 </td></tr>
+<tr><td valign="top"><img src="/icons/image2.gif" alt="[IMG]"></td><td><a href="krebs0001.png.gif">krebs0001.png.gif</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">393 </td></tr>
+<tr><td valign="top"><img src="/icons/text.gif" alt="[TXT]"></td><td><a href="run.sh">run.sh</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">484 </td></tr>
+<tr><td valign="top"><img src="/icons/image2.gif" alt="[IMG]"></td><td><a href="krebs0053.png">krebs0053.png</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">613 </td></tr>
+<tr><td valign="top"><img src="/icons/image2.gif" alt="[IMG]"></td><td><a href="krebs0054.png">krebs0054.png</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">620 </td></tr>
+<tr><td valign="top"><img src="/icons/image2.gif" alt="[IMG]"></td><td><a href="krebs0018.png">krebs0018.png</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">628 </td></tr>
+<tr><td valign="top"><img src="/icons/image2.gif" alt="[IMG]"></td><td><a href="krebs0019.png">krebs0019.png</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">646 </td></tr>
+<tr><td valign="top"><img src="/icons/image2.gif" alt="[IMG]"></td><td><a href="krebs0052.png">krebs0052.png</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">848 </td></tr>
+<tr><td valign="top"><img src="/icons/image2.gif" alt="[IMG]"></td><td><a href="krebs0055.png">krebs0055.png</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">853 </td></tr>
+<tr><td valign="top"><img src="/icons/unknown.gif" alt="[ ]"></td><td><a href="krebs0001.lcd">krebs0001.lcd</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">864 </td></tr>
+<tr><td valign="top"><img src="/icons/unknown.gif" alt="[ ]"></td><td><a href="krebs0002.lcd">krebs0002.lcd</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">864 </td></tr>
+<tr><td valign="top"><img src="/icons/unknown.gif" alt="[ ]"></td><td><a href="krebs0003.lcd">krebs0003.lcd</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">864 </td></tr>
+<tr><td valign="top"><img src="/icons/unknown.gif" alt="[ ]"></td><td><a href="krebs0004.lcd">krebs0004.lcd</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">864 </td></tr>
+<tr><td valign="top"><img src="/icons/unknown.gif" alt="[ ]"></td><td><a href="krebs0005.lcd">krebs0005.lcd</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">864 </td></tr>
+<tr><td valign="top"><img src="/icons/unknown.gif" alt="[ ]"></td><td><a href="krebs0006.lcd">krebs0006.lcd</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">864 </td></tr>
+<tr><td valign="top"><img src="/icons/unknown.gif" alt="[ ]"></td><td><a href="krebs0007.lcd">krebs0007.lcd</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">864 </td></tr>
+<tr><td valign="top"><img src="/icons/unknown.gif" alt="[ ]"></td><td><a href="krebs0008.lcd">krebs0008.lcd</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">864 </td></tr>
+<tr><td valign="top"><img src="/icons/unknown.gif" alt="[ ]"></td><td><a href="krebs0009.lcd">krebs0009.lcd</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">864 </td></tr>
+<tr><td valign="top"><img src="/icons/unknown.gif" alt="[ ]"></td><td><a href="krebs0010.lcd">krebs0010.lcd</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">864 </td></tr>
+<tr><td valign="top"><img src="/icons/unknown.gif" alt="[ ]"></td><td><a href="krebs0011.lcd">krebs0011.lcd</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">864 </td></tr>
+<tr><td valign="top"><img src="/icons/unknown.gif" alt="[ ]"></td><td><a href="krebs0012.lcd">krebs0012.lcd</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">864 </td></tr>
+<tr><td valign="top"><img src="/icons/unknown.gif" alt="[ ]"></td><td><a href="krebs0013.lcd">krebs0013.lcd</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">864 </td></tr>
+<tr><td valign="top"><img src="/icons/unknown.gif" alt="[ ]"></td><td><a href="krebs0014.lcd">krebs0014.lcd</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">864 </td></tr>
+<tr><td valign="top"><img src="/icons/unknown.gif" alt="[ ]"></td><td><a href="krebs0015.lcd">krebs0015.lcd</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">864 </td></tr>
+<tr><td valign="top"><img src="/icons/unknown.gif" alt="[ ]"></td><td><a href="krebs0016.lcd">krebs0016.lcd</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">864 </td></tr>
+<tr><td valign="top"><img src="/icons/unknown.gif" alt="[ ]"></td><td><a href="krebs0017.lcd">krebs0017.lcd</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">864 </td></tr>
+<tr><td valign="top"><img src="/icons/unknown.gif" alt="[ ]"></td><td><a href="krebs0018.lcd">krebs0018.lcd</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">864 </td></tr>
+<tr><td valign="top"><img src="/icons/unknown.gif" alt="[ ]"></td><td><a href="krebs0019.lcd">krebs0019.lcd</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">864 </td></tr>
+<tr><td valign="top"><img src="/icons/unknown.gif" alt="[ ]"></td><td><a href="krebs0020.lcd">krebs0020.lcd</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">864 </td></tr>
+<tr><td valign="top"><img src="/icons/unknown.gif" alt="[ ]"></td><td><a href="krebs0021.lcd">krebs0021.lcd</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">864 </td></tr>
+<tr><td valign="top"><img src="/icons/unknown.gif" alt="[ ]"></td><td><a href="krebs0022.lcd">krebs0022.lcd</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">864 </td></tr>
+<tr><td valign="top"><img src="/icons/unknown.gif" alt="[ ]"></td><td><a href="krebs0023.lcd">krebs0023.lcd</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">864 </td></tr>
+<tr><td valign="top"><img src="/icons/unknown.gif" alt="[ ]"></td><td><a href="krebs0024.lcd">krebs0024.lcd</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">864 </td></tr>
+<tr><td valign="top"><img src="/icons/unknown.gif" alt="[ ]"></td><td><a href="krebs0025.lcd">krebs0025.lcd</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">864 </td></tr>
+<tr><td valign="top"><img src="/icons/unknown.gif" alt="[ ]"></td><td><a href="krebs0026.lcd">krebs0026.lcd</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">864 </td></tr>
+<tr><td valign="top"><img src="/icons/unknown.gif" alt="[ ]"></td><td><a href="krebs0027.lcd">krebs0027.lcd</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">864 </td></tr>
+<tr><td valign="top"><img src="/icons/unknown.gif" alt="[ ]"></td><td><a href="krebs0028.lcd">krebs0028.lcd</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">864 </td></tr>
+<tr><td valign="top"><img src="/icons/unknown.gif" alt="[ ]"></td><td><a href="krebs0029.lcd">krebs0029.lcd</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">864 </td></tr>
+<tr><td valign="top"><img src="/icons/unknown.gif" alt="[ ]"></td><td><a href="krebs0030.lcd">krebs0030.lcd</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">864 </td></tr>
+<tr><td valign="top"><img src="/icons/unknown.gif" alt="[ ]"></td><td><a href="krebs0031.lcd">krebs0031.lcd</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">864 </td></tr>
+<tr><td valign="top"><img src="/icons/unknown.gif" alt="[ ]"></td><td><a href="krebs0032.lcd">krebs0032.lcd</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">864 </td></tr>
+<tr><td valign="top"><img src="/icons/unknown.gif" alt="[ ]"></td><td><a href="krebs0033.lcd">krebs0033.lcd</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">864 </td></tr>
+<tr><td valign="top"><img src="/icons/unknown.gif" alt="[ ]"></td><td><a href="krebs0034.lcd">krebs0034.lcd</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">864 </td></tr>
+<tr><td valign="top"><img src="/icons/unknown.gif" alt="[ ]"></td><td><a href="krebs0035.lcd">krebs0035.lcd</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">864 </td></tr>
+<tr><td valign="top"><img src="/icons/unknown.gif" alt="[ ]"></td><td><a href="krebs0036.lcd">krebs0036.lcd</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">864 </td></tr>
+<tr><td valign="top"><img src="/icons/unknown.gif" alt="[ ]"></td><td><a href="krebs0037.lcd">krebs0037.lcd</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">864 </td></tr>
+<tr><td valign="top"><img src="/icons/unknown.gif" alt="[ ]"></td><td><a href="krebs0038.lcd">krebs0038.lcd</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">864 </td></tr>
+<tr><td valign="top"><img src="/icons/unknown.gif" alt="[ ]"></td><td><a href="krebs0039.lcd">krebs0039.lcd</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">864 </td></tr>
+<tr><td valign="top"><img src="/icons/unknown.gif" alt="[ ]"></td><td><a href="krebs0040.lcd">krebs0040.lcd</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">864 </td></tr>
+<tr><td valign="top"><img src="/icons/unknown.gif" alt="[ ]"></td><td><a href="krebs0041.lcd">krebs0041.lcd</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">864 </td></tr>
+<tr><td valign="top"><img src="/icons/unknown.gif" alt="[ ]"></td><td><a href="krebs0042.lcd">krebs0042.lcd</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">864 </td></tr>
+<tr><td valign="top"><img src="/icons/unknown.gif" alt="[ ]"></td><td><a href="krebs0043.lcd">krebs0043.lcd</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">864 </td></tr>
+<tr><td valign="top"><img src="/icons/unknown.gif" alt="[ ]"></td><td><a href="krebs0044.lcd">krebs0044.lcd</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">864 </td></tr>
+<tr><td valign="top"><img src="/icons/unknown.gif" alt="[ ]"></td><td><a href="krebs0045.lcd">krebs0045.lcd</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">864 </td></tr>
+<tr><td valign="top"><img src="/icons/unknown.gif" alt="[ ]"></td><td><a href="krebs0046.lcd">krebs0046.lcd</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">864 </td></tr>
+<tr><td valign="top"><img src="/icons/unknown.gif" alt="[ ]"></td><td><a href="krebs0047.lcd">krebs0047.lcd</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">864 </td></tr>
+<tr><td valign="top"><img src="/icons/unknown.gif" alt="[ ]"></td><td><a href="krebs0048.lcd">krebs0048.lcd</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">864 </td></tr>
+<tr><td valign="top"><img src="/icons/unknown.gif" alt="[ ]"></td><td><a href="krebs0049.lcd">krebs0049.lcd</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">864 </td></tr>
+<tr><td valign="top"><img src="/icons/unknown.gif" alt="[ ]"></td><td><a href="krebs0050.lcd">krebs0050.lcd</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">864 </td></tr>
+<tr><td valign="top"><img src="/icons/unknown.gif" alt="[ ]"></td><td><a href="krebs0051.lcd">krebs0051.lcd</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">864 </td></tr>
+<tr><td valign="top"><img src="/icons/unknown.gif" alt="[ ]"></td><td><a href="krebs0052.lcd">krebs0052.lcd</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">864 </td></tr>
+<tr><td valign="top"><img src="/icons/unknown.gif" alt="[ ]"></td><td><a href="krebs0053.lcd">krebs0053.lcd</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">864 </td></tr>
+<tr><td valign="top"><img src="/icons/unknown.gif" alt="[ ]"></td><td><a href="krebs0054.lcd">krebs0054.lcd</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">864 </td></tr>
+<tr><td valign="top"><img src="/icons/unknown.gif" alt="[ ]"></td><td><a href="krebs0055.lcd">krebs0055.lcd</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">864 </td></tr>
+<tr><td valign="top"><img src="/icons/unknown.gif" alt="[ ]"></td><td><a href="krebs0056.lcd">krebs0056.lcd</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">864 </td></tr>
+<tr><td valign="top"><img src="/icons/unknown.gif" alt="[ ]"></td><td><a href="krebs0057.lcd">krebs0057.lcd</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">864 </td></tr>
+<tr><td valign="top"><img src="/icons/unknown.gif" alt="[ ]"></td><td><a href="krebs0058.lcd">krebs0058.lcd</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">864 </td></tr>
+<tr><td valign="top"><img src="/icons/unknown.gif" alt="[ ]"></td><td><a href="krebs0059.lcd">krebs0059.lcd</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">864 </td></tr>
+<tr><td valign="top"><img src="/icons/unknown.gif" alt="[ ]"></td><td><a href="krebs0060.lcd">krebs0060.lcd</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">864 </td></tr>
+<tr><td valign="top"><img src="/icons/unknown.gif" alt="[ ]"></td><td><a href="krebs0061.lcd">krebs0061.lcd</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">864 </td></tr>
+<tr><td valign="top"><img src="/icons/unknown.gif" alt="[ ]"></td><td><a href="krebs0062.lcd">krebs0062.lcd</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">864 </td></tr>
+<tr><td valign="top"><img src="/icons/unknown.gif" alt="[ ]"></td><td><a href="krebs0063.lcd">krebs0063.lcd</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">864 </td></tr>
+<tr><td valign="top"><img src="/icons/unknown.gif" alt="[ ]"></td><td><a href="krebs0064.lcd">krebs0064.lcd</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">864 </td></tr>
+<tr><td valign="top"><img src="/icons/unknown.gif" alt="[ ]"></td><td><a href="krebs0065.lcd">krebs0065.lcd</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">864 </td></tr>
+<tr><td valign="top"><img src="/icons/unknown.gif" alt="[ ]"></td><td><a href="krebs0066.lcd">krebs0066.lcd</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">864 </td></tr>
+<tr><td valign="top"><img src="/icons/unknown.gif" alt="[ ]"></td><td><a href="krebs0067.lcd">krebs0067.lcd</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">864 </td></tr>
+<tr><td valign="top"><img src="/icons/unknown.gif" alt="[ ]"></td><td><a href="krebs0068.lcd">krebs0068.lcd</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">864 </td></tr>
+<tr><td valign="top"><img src="/icons/unknown.gif" alt="[ ]"></td><td><a href="krebs0069.lcd">krebs0069.lcd</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">864 </td></tr>
+<tr><td valign="top"><img src="/icons/unknown.gif" alt="[ ]"></td><td><a href="krebs0070.lcd">krebs0070.lcd</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">864 </td></tr>
+<tr><td valign="top"><img src="/icons/image2.gif" alt="[IMG]"></td><td><a href="krebs0020.png">krebs0020.png</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">870 </td></tr>
+<tr><td valign="top"><img src="/icons/image2.gif" alt="[IMG]"></td><td><a href="krebs0017.png">krebs0017.png</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">896 </td></tr>
+<tr><td valign="top"><img src="/icons/image2.gif" alt="[IMG]"></td><td><a href="krebs0056.png">krebs0056.png</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">941 </td></tr>
+<tr><td valign="top"><img src="/icons/image2.gif" alt="[IMG]"></td><td><a href="krebs0021.png">krebs0021.png</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">945 </td></tr>
+<tr><td valign="top"><img src="/icons/image2.gif" alt="[IMG]"></td><td><a href="krebs0051.png">krebs0051.png</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">947 </td></tr>
+<tr><td valign="top"><img src="/icons/image2.gif" alt="[IMG]"></td><td><a href="krebs0016.png">krebs0016.png</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">950 </td></tr>
+<tr><td valign="top"><img src="/icons/image2.gif" alt="[IMG]"></td><td><a href="krebs0050.png">krebs0050.png</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">1.0K</td></tr>
+<tr><td valign="top"><img src="/icons/image2.gif" alt="[IMG]"></td><td><a href="krebs0057.png">krebs0057.png</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">1.0K</td></tr>
+<tr><td valign="top"><img src="/icons/image2.gif" alt="[IMG]"></td><td><a href="krebs0015.png">krebs0015.png</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">1.0K</td></tr>
+<tr><td valign="top"><img src="/icons/image2.gif" alt="[IMG]"></td><td><a href="krebs0022.png">krebs0022.png</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">1.0K</td></tr>
+<tr><td valign="top"><img src="/icons/image2.gif" alt="[IMG]"></td><td><a href="krebs0049.png">krebs0049.png</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">1.2K</td></tr>
+<tr><td valign="top"><img src="/icons/image2.gif" alt="[IMG]"></td><td><a href="krebs0058.png">krebs0058.png</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">1.2K</td></tr>
+<tr><td valign="top"><img src="/icons/image2.gif" alt="[IMG]"></td><td><a href="krebs0014.png">krebs0014.png</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">1.2K</td></tr>
+<tr><td valign="top"><img src="/icons/image2.gif" alt="[IMG]"></td><td><a href="krebs0023.png">krebs0023.png</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">1.2K</td></tr>
+<tr><td valign="top"><img src="/icons/image2.gif" alt="[IMG]"></td><td><a href="krebs0048.png">krebs0048.png</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">1.3K</td></tr>
+<tr><td valign="top"><img src="/icons/image2.gif" alt="[IMG]"></td><td><a href="krebs0059.png">krebs0059.png</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">1.4K</td></tr>
+<tr><td valign="top"><img src="/icons/image2.gif" alt="[IMG]"></td><td><a href="krebs0013.png">krebs0013.png</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">1.4K</td></tr>
+<tr><td valign="top"><img src="/icons/image2.gif" alt="[IMG]"></td><td><a href="krebs0024.png">krebs0024.png</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">1.4K</td></tr>
+<tr><td valign="top"><img src="/icons/image2.gif" alt="[IMG]"></td><td><a href="krebs0047.png">krebs0047.png</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">1.4K</td></tr>
+<tr><td valign="top"><img src="/icons/image2.gif" alt="[IMG]"></td><td><a href="krebs0012.png">krebs0012.png</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">1.5K</td></tr>
+<tr><td valign="top"><img src="/icons/image2.gif" alt="[IMG]"></td><td><a href="krebs0060.png">krebs0060.png</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">1.5K</td></tr>
+<tr><td valign="top"><img src="/icons/image2.gif" alt="[IMG]"></td><td><a href="krebs0025.png">krebs0025.png</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">1.5K</td></tr>
+<tr><td valign="top"><img src="/icons/image2.gif" alt="[IMG]"></td><td><a href="krebs0011.png">krebs0011.png</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">1.6K</td></tr>
+<tr><td valign="top"><img src="/icons/image2.gif" alt="[IMG]"></td><td><a href="krebs0026.png">krebs0026.png</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">1.6K</td></tr>
+<tr><td valign="top"><img src="/icons/image2.gif" alt="[IMG]"></td><td><a href="krebs0046.png">krebs0046.png</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">1.6K</td></tr>
+<tr><td valign="top"><img src="/icons/image2.gif" alt="[IMG]"></td><td><a href="krebs0061.png">krebs0061.png</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">1.7K</td></tr>
+<tr><td valign="top"><img src="/icons/image2.gif" alt="[IMG]"></td><td><a href="krebs0010.png">krebs0010.png</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">1.8K</td></tr>
+<tr><td valign="top"><img src="/icons/image2.gif" alt="[IMG]"></td><td><a href="krebs0045.png">krebs0045.png</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">1.8K</td></tr>
+<tr><td valign="top"><img src="/icons/image2.gif" alt="[IMG]"></td><td><a href="krebs0027.png">krebs0027.png</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">1.9K</td></tr>
+<tr><td valign="top"><img src="/icons/image2.gif" alt="[IMG]"></td><td><a href="krebs0009.png">krebs0009.png</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">1.9K</td></tr>
+<tr><td valign="top"><img src="/icons/image2.gif" alt="[IMG]"></td><td><a href="krebs0062.png">krebs0062.png</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">1.9K</td></tr>
+<tr><td valign="top"><img src="/icons/image2.gif" alt="[IMG]"></td><td><a href="krebs0028.png">krebs0028.png</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">1.9K</td></tr>
+<tr><td valign="top"><img src="/icons/image2.gif" alt="[IMG]"></td><td><a href="krebs0044.png">krebs0044.png</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">2.0K</td></tr>
+<tr><td valign="top"><img src="/icons/image2.gif" alt="[IMG]"></td><td><a href="krebs0063.png">krebs0063.png</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">2.0K</td></tr>
+<tr><td valign="top"><img src="/icons/image2.gif" alt="[IMG]"></td><td><a href="krebs0001.png">krebs0001.png</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">2.0K</td></tr>
+<tr><td valign="top"><img src="/icons/image2.gif" alt="[IMG]"></td><td><a href="krebs0036.png">krebs0036.png</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">2.0K</td></tr>
+<tr><td valign="top"><img src="/icons/image2.gif" alt="[IMG]"></td><td><a href="krebs0008.png">krebs0008.png</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">2.1K</td></tr>
+<tr><td valign="top"><img src="/icons/image2.gif" alt="[IMG]"></td><td><a href="krebs0029.png">krebs0029.png</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">2.1K</td></tr>
+<tr><td valign="top"><img src="/icons/image2.gif" alt="[IMG]"></td><td><a href="krebs0043.png">krebs0043.png</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">2.1K</td></tr>
+<tr><td valign="top"><img src="/icons/image2.gif" alt="[IMG]"></td><td><a href="krebs0064.png">krebs0064.png</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">2.1K</td></tr>
+<tr><td valign="top"><img src="/icons/image2.gif" alt="[IMG]"></td><td><a href="krebs0007.png">krebs0007.png</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">2.1K</td></tr>
+<tr><td valign="top"><img src="/icons/image2.gif" alt="[IMG]"></td><td><a href="krebs0042.png">krebs0042.png</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">2.2K</td></tr>
+<tr><td valign="top"><img src="/icons/image2.gif" alt="[IMG]"></td><td><a href="krebs0030.png">krebs0030.png</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">2.2K</td></tr>
+<tr><td valign="top"><img src="/icons/image2.gif" alt="[IMG]"></td><td><a href="krebs0002.png">krebs0002.png</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">2.2K</td></tr>
+<tr><td valign="top"><img src="/icons/image2.gif" alt="[IMG]"></td><td><a href="krebs0065.png">krebs0065.png</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">2.2K</td></tr>
+<tr><td valign="top"><img src="/icons/image2.gif" alt="[IMG]"></td><td><a href="krebs0034.png">krebs0034.png</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">2.2K</td></tr>
+<tr><td valign="top"><img src="/icons/image2.gif" alt="[IMG]"></td><td><a href="krebs0068.png">krebs0068.png</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">2.2K</td></tr>
+<tr><td valign="top"><img src="/icons/image2.gif" alt="[IMG]"></td><td><a href="krebs0006.png">krebs0006.png</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">2.2K</td></tr>
+<tr><td valign="top"><img src="/icons/image2.gif" alt="[IMG]"></td><td><a href="krebs0035.png">krebs0035.png</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">2.2K</td></tr>
+<tr><td valign="top"><img src="/icons/image2.gif" alt="[IMG]"></td><td><a href="krebs0037.png">krebs0037.png</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">2.2K</td></tr>
+<tr><td valign="top"><img src="/icons/image2.gif" alt="[IMG]"></td><td><a href="krebs0003.png">krebs0003.png</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">2.3K</td></tr>
+<tr><td valign="top"><img src="/icons/image2.gif" alt="[IMG]"></td><td><a href="krebs0039.png">krebs0039.png</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">2.3K</td></tr>
+<tr><td valign="top"><img src="/icons/image2.gif" alt="[IMG]"></td><td><a href="krebs0004.png">krebs0004.png</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">2.3K</td></tr>
+<tr><td valign="top"><img src="/icons/image2.gif" alt="[IMG]"></td><td><a href="krebs0069.png">krebs0069.png</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">2.3K</td></tr>
+<tr><td valign="top"><img src="/icons/image2.gif" alt="[IMG]"></td><td><a href="krebs0031.png">krebs0031.png</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">2.3K</td></tr>
+<tr><td valign="top"><img src="/icons/image2.gif" alt="[IMG]"></td><td><a href="krebs0041.png">krebs0041.png</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">2.3K</td></tr>
+<tr><td valign="top"><img src="/icons/image2.gif" alt="[IMG]"></td><td><a href="krebs0033.png">krebs0033.png</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">2.3K</td></tr>
+<tr><td valign="top"><img src="/icons/image2.gif" alt="[IMG]"></td><td><a href="krebs0040.png">krebs0040.png</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">2.3K</td></tr>
+<tr><td valign="top"><img src="/icons/image2.gif" alt="[IMG]"></td><td><a href="krebs0070.png">krebs0070.png</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">2.3K</td></tr>
+<tr><td valign="top"><img src="/icons/image2.gif" alt="[IMG]"></td><td><a href="krebs0005.png">krebs0005.png</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">2.3K</td></tr>
+<tr><td valign="top"><img src="/icons/image2.gif" alt="[IMG]"></td><td><a href="krebs0038.png">krebs0038.png</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">2.3K</td></tr>
+<tr><td valign="top"><img src="/icons/image2.gif" alt="[IMG]"></td><td><a href="krebs0067.png">krebs0067.png</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">2.3K</td></tr>
+<tr><td valign="top"><img src="/icons/image2.gif" alt="[IMG]"></td><td><a href="krebs0032.png">krebs0032.png</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">2.3K</td></tr>
+<tr><td valign="top"><img src="/icons/image2.gif" alt="[IMG]"></td><td><a href="krebs0066.png">krebs0066.png</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right">2.3K</td></tr>
+<tr><td valign="top"><img src="/icons/unknown.gif" alt="[ ]"></td><td><a href="animation.lcd">animation.lcd</a></td><td align="right">11-Aug-2011 21:56 </td><td align="right"> 59K</td></tr>
+<tr><th colspan="5"><hr></th></tr>
+</table>
+<address>Apache/2.2.9 (Debian) mod_ssl/2.2.9 OpenSSL/0.9.8g Server at venus.berapla.de Port 80</address>
+</body></html>
diff --git a/cholerab/bling/cancer_3d/krebs0001.lcd b/cholerab/bling/cancer_3d/krebs0001.lcd
new file mode 100644
index 00000000..3c43af0a
--- /dev/null
+++ b/cholerab/bling/cancer_3d/krebs0001.lcd
Binary files differ
diff --git a/cholerab/bling/cancer_3d/krebs0001.png b/cholerab/bling/cancer_3d/krebs0001.png
new file mode 100644
index 00000000..e0a009e0
--- /dev/null
+++ b/cholerab/bling/cancer_3d/krebs0001.png
Binary files differ
diff --git a/cholerab/bling/cancer_3d/krebs0001.png.gif b/cholerab/bling/cancer_3d/krebs0001.png.gif
new file mode 100644
index 00000000..abc0e601
--- /dev/null
+++ b/cholerab/bling/cancer_3d/krebs0001.png.gif
Binary files differ
diff --git a/cholerab/bling/cancer_3d/krebs0002.lcd b/cholerab/bling/cancer_3d/krebs0002.lcd
new file mode 100644
index 00000000..29fbbadd
--- /dev/null
+++ b/cholerab/bling/cancer_3d/krebs0002.lcd
Binary files differ
diff --git a/cholerab/bling/cancer_3d/krebs0002.png b/cholerab/bling/cancer_3d/krebs0002.png
new file mode 100644
index 00000000..65ddf8aa
--- /dev/null
+++ b/cholerab/bling/cancer_3d/krebs0002.png
Binary files differ
diff --git a/cholerab/bling/cancer_3d/krebs0002.png.gif b/cholerab/bling/cancer_3d/krebs0002.png.gif
new file mode 100644
index 00000000..304d1ef9
--- /dev/null
+++ b/cholerab/bling/cancer_3d/krebs0002.png.gif
Binary files differ
diff --git a/cholerab/bling/cancer_3d/krebs0003.lcd b/cholerab/bling/cancer_3d/krebs0003.lcd
new file mode 100644
index 00000000..752d2075
--- /dev/null
+++ b/cholerab/bling/cancer_3d/krebs0003.lcd
Binary files differ
diff --git a/cholerab/bling/cancer_3d/krebs0003.png b/cholerab/bling/cancer_3d/krebs0003.png
new file mode 100644
index 00000000..84f413b2
--- /dev/null
+++ b/cholerab/bling/cancer_3d/krebs0003.png
Binary files differ
diff --git a/cholerab/bling/cancer_3d/krebs0003.png.gif b/cholerab/bling/cancer_3d/krebs0003.png.gif
new file mode 100644
index 00000000..37b5e36c
--- /dev/null
+++ b/cholerab/bling/cancer_3d/krebs0003.png.gif
Binary files differ
diff --git a/cholerab/bling/cancer_3d/krebs0004.lcd b/cholerab/bling/cancer_3d/krebs0004.lcd
new file mode 100644
index 00000000..50073fea
--- /dev/null
+++ b/cholerab/bling/cancer_3d/krebs0004.lcd
Binary files differ
diff --git a/cholerab/bling/cancer_3d/krebs0004.png b/cholerab/bling/cancer_3d/krebs0004.png
new file mode 100644
index 00000000..67dd3750
--- /dev/null
+++ b/cholerab/bling/cancer_3d/krebs0004.png
Binary files differ
diff --git a/cholerab/bling/cancer_3d/krebs0004.png.gif b/cholerab/bling/cancer_3d/krebs0004.png.gif
new file mode 100644
index 00000000..205cc792
--- /dev/null
+++ b/cholerab/bling/cancer_3d/krebs0004.png.gif
Binary files differ
diff --git a/cholerab/bling/cancer_3d/krebs0005.lcd b/cholerab/bling/cancer_3d/krebs0005.lcd
new file mode 100644
index 00000000..e1470d76
--- /dev/null
+++ b/cholerab/bling/cancer_3d/krebs0005.lcd
Binary files differ
diff --git a/cholerab/bling/cancer_3d/krebs0005.png b/cholerab/bling/cancer_3d/krebs0005.png
new file mode 100644
index 00000000..6bec3781
--- /dev/null
+++ b/cholerab/bling/cancer_3d/krebs0005.png
Binary files differ
diff --git a/cholerab/bling/cancer_3d/krebs0005.png.gif b/cholerab/bling/cancer_3d/krebs0005.png.gif
new file mode 100644
index 00000000..3a9685c9
--- /dev/null
+++ b/cholerab/bling/cancer_3d/krebs0005.png.gif
Binary files differ
diff --git a/cholerab/bling/cancer_3d/krebs0006.lcd b/cholerab/bling/cancer_3d/krebs0006.lcd
new file mode 100644
index 00000000..e052706a
--- /dev/null
+++ b/cholerab/bling/cancer_3d/krebs0006.lcd
Binary files differ
diff --git a/cholerab/bling/cancer_3d/krebs0006.png b/cholerab/bling/cancer_3d/krebs0006.png
new file mode 100644
index 00000000..6bfcfa34
--- /dev/null
+++ b/cholerab/bling/cancer_3d/krebs0006.png
Binary files differ
diff --git a/cholerab/bling/cancer_3d/krebs0006.png.gif b/cholerab/bling/cancer_3d/krebs0006.png.gif
new file mode 100644
index 00000000..30eaef1e
--- /dev/null
+++ b/cholerab/bling/cancer_3d/krebs0006.png.gif
Binary files differ
diff --git a/cholerab/bling/cancer_3d/krebs0007.lcd b/cholerab/bling/cancer_3d/krebs0007.lcd
new file mode 100644
index 00000000..c4fd6406
--- /dev/null
+++ b/cholerab/bling/cancer_3d/krebs0007.lcd
Binary files differ
diff --git a/cholerab/bling/cancer_3d/krebs0007.png b/cholerab/bling/cancer_3d/krebs0007.png
new file mode 100644
index 00000000..3e627f51
--- /dev/null
+++ b/cholerab/bling/cancer_3d/krebs0007.png
Binary files differ
diff --git a/cholerab/bling/cancer_3d/krebs0007.png.gif b/cholerab/bling/cancer_3d/krebs0007.png.gif
new file mode 100644
index 00000000..05adf64b
--- /dev/null
+++ b/cholerab/bling/cancer_3d/krebs0007.png.gif
Binary files differ
diff --git a/cholerab/bling/cancer_3d/krebs0008.lcd b/cholerab/bling/cancer_3d/krebs0008.lcd
new file mode 100644
index 00000000..f180cbee
--- /dev/null
+++ b/cholerab/bling/cancer_3d/krebs0008.lcd
Binary files differ
diff --git a/cholerab/bling/cancer_3d/krebs0008.png b/cholerab/bling/cancer_3d/krebs0008.png
new file mode 100644
index 00000000..1b3db006
--- /dev/null
+++ b/cholerab/bling/cancer_3d/krebs0008.png
Binary files differ
diff --git a/cholerab/bling/cancer_3d/krebs0008.png.gif b/cholerab/bling/cancer_3d/krebs0008.png.gif
new file mode 100644
index 00000000..88fbfe54
--- /dev/null
+++ b/cholerab/bling/cancer_3d/krebs0008.png.gif
Binary files differ
diff --git a/cholerab/bling/cancer_3d/krebs0009.lcd b/cholerab/bling/cancer_3d/krebs0009.lcd
new file mode 100644
index 00000000..c88373cd
--- /dev/null
+++ b/cholerab/bling/cancer_3d/krebs0009.lcd
Binary files differ
diff --git a/cholerab/bling/cancer_3d/krebs0009.png b/cholerab/bling/cancer_3d/krebs0009.png
new file mode 100644
index 00000000..9862ceeb
--- /dev/null
+++ b/cholerab/bling/cancer_3d/krebs0009.png
Binary files differ
diff --git a/cholerab/bling/cancer_3d/krebs0009.png.gif b/cholerab/bling/cancer_3d/krebs0009.png.gif
new file mode 100644
index 00000000..c2b14e83
--- /dev/null
+++ b/cholerab/bling/cancer_3d/krebs0009.png.gif
Binary files differ
diff --git a/cholerab/bling/cancer_3d/krebs0010.lcd b/cholerab/bling/cancer_3d/krebs0010.lcd
new file mode 100644
index 00000000..1d9d6629
--- /dev/null
+++ b/cholerab/bling/cancer_3d/krebs0010.lcd
Binary files differ
diff --git a/cholerab/bling/cancer_3d/krebs0010.png b/cholerab/bling/cancer_3d/krebs0010.png
new file mode 100644
index 00000000..45f90dd2
--- /dev/null
+++ b/cholerab/bling/cancer_3d/krebs0010.png
Binary files differ
diff --git a/cholerab/bling/cancer_3d/krebs0010.png.gif b/cholerab/bling/cancer_3d/krebs0010.png.gif
new file mode 100644
index 00000000..0b1b4a2d
--- /dev/null
+++ b/cholerab/bling/cancer_3d/krebs0010.png.gif
Binary files differ
diff --git a/cholerab/bling/cancer_3d/krebs0011.lcd b/cholerab/bling/cancer_3d/krebs0011.lcd
new file mode 100644
index 00000000..a69fd832
--- /dev/null
+++ b/cholerab/bling/cancer_3d/krebs0011.lcd
Binary files differ
diff --git a/cholerab/bling/cancer_3d/krebs0011.png b/cholerab/bling/cancer_3d/krebs0011.png
new file mode 100644
index 00000000..af759ab2
--- /dev/null
+++ b/cholerab/bling/cancer_3d/krebs0011.png
Binary files differ
diff --git a/cholerab/bling/cancer_3d/krebs0011.png.gif b/cholerab/bling/cancer_3d/krebs0011.png.gif
new file mode 100644
index 00000000..1e678934
--- /dev/null
+++ b/cholerab/bling/cancer_3d/krebs0011.png.gif
Binary files differ
diff --git a/cholerab/bling/cancer_3d/krebs0012.lcd b/cholerab/bling/cancer_3d/krebs0012.lcd
new file mode 100644
index 00000000..72e91550
--- /dev/null
+++ b/cholerab/bling/cancer_3d/krebs0012.lcd
Binary files differ
diff --git a/cholerab/bling/cancer_3d/krebs0012.png b/cholerab/bling/cancer_3d/krebs0012.png
new file mode 100644
index 00000000..59c08168
--- /dev/null
+++ b/cholerab/bling/cancer_3d/krebs0012.png
Binary files differ
diff --git a/cholerab/bling/cancer_3d/krebs0012.png.gif b/cholerab/bling/cancer_3d/krebs0012.png.gif
new file mode 100644
index 00000000..c9f4cdcd
--- /dev/null
+++ b/cholerab/bling/cancer_3d/krebs0012.png.gif
Binary files differ
diff --git a/cholerab/bling/cancer_3d/krebs0013.lcd b/cholerab/bling/cancer_3d/krebs0013.lcd
new file mode 100644
index 00000000..908f1329
--- /dev/null
+++ b/cholerab/bling/cancer_3d/krebs0013.lcd
Binary files differ
diff --git a/cholerab/bling/cancer_3d/krebs0013.png b/cholerab/bling/cancer_3d/krebs0013.png
new file mode 100644
index 00000000..5ae6391d
--- /dev/null
+++ b/cholerab/bling/cancer_3d/krebs0013.png
Binary files differ
diff --git a/cholerab/bling/cancer_3d/krebs0013.png.gif b/cholerab/bling/cancer_3d/krebs0013.png.gif
new file mode 100644
index 00000000..1c5f2bb1
--- /dev/null
+++ b/cholerab/bling/cancer_3d/krebs0013.png.gif
Binary files differ
diff --git a/cholerab/bling/cancer_3d/krebs0014.lcd b/cholerab/bling/cancer_3d/krebs0014.lcd
new file mode 100644
index 00000000..59b89d66
--- /dev/null
+++ b/cholerab/bling/cancer_3d/krebs0014.lcd
Binary files differ
diff --git a/cholerab/bling/cancer_3d/krebs0014.png b/cholerab/bling/cancer_3d/krebs0014.png
new file mode 100644
index 00000000..27530112
--- /dev/null
+++ b/cholerab/bling/cancer_3d/krebs0014.png
Binary files differ
diff --git a/cholerab/bling/cancer_3d/krebs0014.png.gif b/cholerab/bling/cancer_3d/krebs0014.png.gif
new file mode 100644
index 00000000..eedaf884
--- /dev/null
+++ b/cholerab/bling/cancer_3d/krebs0014.png.gif
Binary files differ
diff --git a/cholerab/bling/cancer_3d/krebs0015.lcd b/cholerab/bling/cancer_3d/krebs0015.lcd
new file mode 100644
index 00000000..c7a56dbf
--- /dev/null
+++ b/cholerab/bling/cancer_3d/krebs0015.lcd
Binary files differ
diff --git a/cholerab/bling/cancer_3d/krebs0015.png b/cholerab/bling/cancer_3d/krebs0015.png
new file mode 100644
index 00000000..f969c76f
--- /dev/null
+++ b/cholerab/bling/cancer_3d/krebs0015.png
Binary files differ
diff --git a/cholerab/bling/cancer_3d/krebs0015.png.gif b/cholerab/bling/cancer_3d/krebs0015.png.gif
new file mode 100644
index 00000000..c7502444
--- /dev/null
+++ b/cholerab/bling/cancer_3d/krebs0015.png.gif
Binary files differ
diff --git a/cholerab/bling/cancer_3d/krebs0016.lcd b/cholerab/bling/cancer_3d/krebs0016.lcd
new file mode 100644
index 00000000..876492b9
--- /dev/null
+++ b/cholerab/bling/cancer_3d/krebs0016.lcd
Binary files differ
diff --git a/cholerab/bling/cancer_3d/krebs0016.png b/cholerab/bling/cancer_3d/krebs0016.png
new file mode 100644
index 00000000..91d4b040
--- /dev/null
+++ b/cholerab/bling/cancer_3d/krebs0016.png
Binary files differ
diff --git a/cholerab/bling/cancer_3d/krebs0016.png.gif b/cholerab/bling/cancer_3d/krebs0016.png.gif
new file mode 100644
index 00000000..baf36c93
--- /dev/null
+++ b/cholerab/bling/cancer_3d/krebs0016.png.gif
Binary files differ
diff --git a/cholerab/bling/cancer_3d/krebs0017.lcd b/cholerab/bling/cancer_3d/krebs0017.lcd
new file mode 100644
index 00000000..ffa03d33
--- /dev/null
+++ b/cholerab/bling/cancer_3d/krebs0017.lcd
Binary files differ
diff --git a/cholerab/bling/cancer_3d/krebs0017.png b/cholerab/bling/cancer_3d/krebs0017.png
new file mode 100644
index 00000000..a9738c56
--- /dev/null
+++ b/cholerab/bling/cancer_3d/krebs0017.png
Binary files differ
diff --git a/cholerab/bling/cancer_3d/krebs0017.png.gif b/cholerab/bling/cancer_3d/krebs0017.png.gif
new file mode 100644
index 00000000..b682961a
--- /dev/null
+++ b/cholerab/bling/cancer_3d/krebs0017.png.gif
Binary files differ
diff --git a/cholerab/bling/cancer_3d/krebs0018.lcd b/cholerab/bling/cancer_3d/krebs0018.lcd
new file mode 100644
index 00000000..9d8557ae
--- /dev/null
+++ b/cholerab/bling/cancer_3d/krebs0018.lcd
Binary files differ
diff --git a/cholerab/bling/cancer_3d/krebs0018.png b/cholerab/bling/cancer_3d/krebs0018.png
new file mode 100644
index 00000000..fcc84b81
--- /dev/null
+++ b/cholerab/bling/cancer_3d/krebs0018.png
Binary files differ
diff --git a/cholerab/bling/cancer_3d/krebs0018.png.gif b/cholerab/bling/cancer_3d/krebs0018.png.gif
new file mode 100644
index 00000000..0ce274f9
--- /dev/null
+++ b/cholerab/bling/cancer_3d/krebs0018.png.gif
Binary files differ
diff --git a/cholerab/bling/cancer_3d/krebs0019.lcd b/cholerab/bling/cancer_3d/krebs0019.lcd
new file mode 100644
index 00000000..bb2a1914
--- /dev/null
+++ b/cholerab/bling/cancer_3d/krebs0019.lcd
Binary files differ
diff --git a/cholerab/bling/cancer_3d/krebs0019.png b/cholerab/bling/cancer_3d/krebs0019.png
new file mode 100644
index 00000000..411bb132
--- /dev/null
+++ b/cholerab/bling/cancer_3d/krebs0019.png
Binary files differ
diff --git a/cholerab/bling/cancer_3d/krebs0019.png.gif b/cholerab/bling/cancer_3d/krebs0019.png.gif
new file mode 100644
index 00000000..50aff668
--- /dev/null
+++ b/cholerab/bling/cancer_3d/krebs0019.png.gif
Binary files differ
diff --git a/cholerab/bling/cancer_3d/krebs0020.lcd b/cholerab/bling/cancer_3d/krebs0020.lcd
new file mode 100644
index 00000000..df347625
--- /dev/null
+++ b/cholerab/bling/cancer_3d/krebs0020.lcd
Binary files differ
diff --git a/cholerab/bling/cancer_3d/krebs0020.png b/cholerab/bling/cancer_3d/krebs0020.png
new file mode 100644
index 00000000..9a2692de
--- /dev/null
+++ b/cholerab/bling/cancer_3d/krebs0020.png
Binary files differ
diff --git a/cholerab/bling/cancer_3d/krebs0020.png.gif b/cholerab/bling/cancer_3d/krebs0020.png.gif
new file mode 100644
index 00000000..8c6f3b5e
--- /dev/null
+++ b/cholerab/bling/cancer_3d/krebs0020.png.gif
Binary files differ
diff --git a/cholerab/bling/cancer_3d/krebs0021.lcd b/cholerab/bling/cancer_3d/krebs0021.lcd
new file mode 100644
index 00000000..5acc2779
--- /dev/null
+++ b/cholerab/bling/cancer_3d/krebs0021.lcd
Binary files differ
diff --git a/cholerab/bling/cancer_3d/krebs0021.png b/cholerab/bling/cancer_3d/krebs0021.png
new file mode 100644
index 00000000..b5c77409
--- /dev/null
+++ b/cholerab/bling/cancer_3d/krebs0021.png
Binary files differ
diff --git a/cholerab/bling/cancer_3d/krebs0021.png.gif b/cholerab/bling/cancer_3d/krebs0021.png.gif
new file mode 100644
index 00000000..4fefa65f
--- /dev/null
+++ b/cholerab/bling/cancer_3d/krebs0021.png.gif
Binary files differ
diff --git a/cholerab/bling/cancer_3d/krebs0022.lcd b/cholerab/bling/cancer_3d/krebs0022.lcd
new file mode 100644
index 00000000..d2d10387
--- /dev/null
+++ b/cholerab/bling/cancer_3d/krebs0022.lcd
Binary files differ
diff --git a/cholerab/bling/cancer_3d/krebs0022.png b/cholerab/bling/cancer_3d/krebs0022.png
new file mode 100644
index 00000000..96197456
--- /dev/null
+++ b/cholerab/bling/cancer_3d/krebs0022.png
Binary files differ
diff --git a/cholerab/bling/cancer_3d/krebs0022.png.gif b/cholerab/bling/cancer_3d/krebs0022.png.gif
new file mode 100644
index 00000000..8a749069
--- /dev/null
+++ b/cholerab/bling/cancer_3d/krebs0022.png.gif
Binary files differ
diff --git a/cholerab/bling/cancer_3d/krebs0023.lcd b/cholerab/bling/cancer_3d/krebs0023.lcd
new file mode 100644
index 00000000..239b9564
--- /dev/null
+++ b/cholerab/bling/cancer_3d/krebs0023.lcd
Binary files differ
diff --git a/cholerab/bling/cancer_3d/krebs0023.png b/cholerab/bling/cancer_3d/krebs0023.png
new file mode 100644
index 00000000..cf9cc8a1
--- /dev/null
+++ b/cholerab/bling/cancer_3d/krebs0023.png
Binary files differ
diff --git a/cholerab/bling/cancer_3d/krebs0023.png.gif b/cholerab/bling/cancer_3d/krebs0023.png.gif
new file mode 100644
index 00000000..a5f9ce29
--- /dev/null
+++ b/cholerab/bling/cancer_3d/krebs0023.png.gif
Binary files differ
diff --git a/cholerab/bling/cancer_3d/krebs0024.lcd b/cholerab/bling/cancer_3d/krebs0024.lcd
new file mode 100644
index 00000000..64715296
--- /dev/null
+++ b/cholerab/bling/cancer_3d/krebs0024.lcd
Binary files differ
diff --git a/cholerab/bling/cancer_3d/krebs0024.png b/cholerab/bling/cancer_3d/krebs0024.png
new file mode 100644
index 00000000..5383e959
--- /dev/null
+++ b/cholerab/bling/cancer_3d/krebs0024.png
Binary files differ
diff --git a/cholerab/bling/cancer_3d/krebs0024.png.gif b/cholerab/bling/cancer_3d/krebs0024.png.gif
new file mode 100644
index 00000000..ce3fe0a8
--- /dev/null
+++ b/cholerab/bling/cancer_3d/krebs0024.png.gif
Binary files differ
diff --git a/cholerab/bling/cancer_3d/krebs0025.lcd b/cholerab/bling/cancer_3d/krebs0025.lcd
new file mode 100644
index 00000000..b2d565c7
--- /dev/null
+++ b/cholerab/bling/cancer_3d/krebs0025.lcd
Binary files differ
diff --git a/cholerab/bling/cancer_3d/krebs0025.png b/cholerab/bling/cancer_3d/krebs0025.png
new file mode 100644
index 00000000..afc2b165
--- /dev/null
+++ b/cholerab/bling/cancer_3d/krebs0025.png
Binary files differ
diff --git a/cholerab/bling/cancer_3d/krebs0025.png.gif b/cholerab/bling/cancer_3d/krebs0025.png.gif
new file mode 100644
index 00000000..610fc014
--- /dev/null
+++ b/cholerab/bling/cancer_3d/krebs0025.png.gif
Binary files differ
diff --git a/cholerab/bling/cancer_3d/krebs0026.lcd b/cholerab/bling/cancer_3d/krebs0026.lcd
new file mode 100644
index 00000000..c42b92a3
--- /dev/null
+++ b/cholerab/bling/cancer_3d/krebs0026.lcd
Binary files differ
diff --git a/cholerab/bling/cancer_3d/krebs0026.png b/cholerab/bling/cancer_3d/krebs0026.png
new file mode 100644
index 00000000..c1a39a09
--- /dev/null
+++ b/cholerab/bling/cancer_3d/krebs0026.png
Binary files differ
diff --git a/cholerab/bling/cancer_3d/krebs0026.png.gif b/cholerab/bling/cancer_3d/krebs0026.png.gif
new file mode 100644
index 00000000..b07dec92
--- /dev/null
+++ b/cholerab/bling/cancer_3d/krebs0026.png.gif
Binary files differ
diff --git a/cholerab/bling/cancer_3d/krebs0027.lcd b/cholerab/bling/cancer_3d/krebs0027.lcd
new file mode 100644
index 00000000..1ef7a4d4
--- /dev/null
+++ b/cholerab/bling/cancer_3d/krebs0027.lcd
Binary files differ
diff --git a/cholerab/bling/cancer_3d/krebs0027.png b/cholerab/bling/cancer_3d/krebs0027.png
new file mode 100644
index 00000000..187420d9
--- /dev/null
+++ b/cholerab/bling/cancer_3d/krebs0027.png
Binary files differ
diff --git a/cholerab/bling/cancer_3d/krebs0027.png.gif b/cholerab/bling/cancer_3d/krebs0027.png.gif
new file mode 100644
index 00000000..9bbf0328
--- /dev/null
+++ b/cholerab/bling/cancer_3d/krebs0027.png.gif
Binary files differ
diff --git a/cholerab/bling/cancer_3d/krebs0028.lcd b/cholerab/bling/cancer_3d/krebs0028.lcd
new file mode 100644
index 00000000..a396ebb5
--- /dev/null
+++ b/cholerab/bling/cancer_3d/krebs0028.lcd
Binary files differ
diff --git a/cholerab/bling/cancer_3d/krebs0028.png b/cholerab/bling/cancer_3d/krebs0028.png
new file mode 100644
index 00000000..955b4be7
--- /dev/null
+++ b/cholerab/bling/cancer_3d/krebs0028.png
Binary files differ
diff --git a/cholerab/bling/cancer_3d/krebs0028.png.gif b/cholerab/bling/cancer_3d/krebs0028.png.gif
new file mode 100644
index 00000000..a4e76481
--- /dev/null
+++ b/cholerab/bling/cancer_3d/krebs0028.png.gif
Binary files differ
diff --git a/cholerab/bling/cancer_3d/krebs0029.lcd b/cholerab/bling/cancer_3d/krebs0029.lcd
new file mode 100644
index 00000000..7309bd1b
--- /dev/null
+++ b/cholerab/bling/cancer_3d/krebs0029.lcd
Binary files differ
diff --git a/cholerab/bling/cancer_3d/krebs0029.png b/cholerab/bling/cancer_3d/krebs0029.png
new file mode 100644
index 00000000..69a5e54b
--- /dev/null
+++ b/cholerab/bling/cancer_3d/krebs0029.png
Binary files differ
diff --git a/cholerab/bling/cancer_3d/krebs0029.png.gif b/cholerab/bling/cancer_3d/krebs0029.png.gif
new file mode 100644
index 00000000..65c84868
--- /dev/null
+++ b/cholerab/bling/cancer_3d/krebs0029.png.gif
Binary files differ
diff --git a/cholerab/bling/cancer_3d/krebs0030.lcd b/cholerab/bling/cancer_3d/krebs0030.lcd
new file mode 100644
index 00000000..b3d18497
--- /dev/null
+++ b/cholerab/bling/cancer_3d/krebs0030.lcd
Binary files differ
diff --git a/cholerab/bling/cancer_3d/krebs0030.png b/cholerab/bling/cancer_3d/krebs0030.png
new file mode 100644
index 00000000..9a5e29e6
--- /dev/null
+++ b/cholerab/bling/cancer_3d/krebs0030.png
Binary files differ
diff --git a/cholerab/bling/cancer_3d/krebs0030.png.gif b/cholerab/bling/cancer_3d/krebs0030.png.gif
new file mode 100644
index 00000000..43f65420
--- /dev/null
+++ b/cholerab/bling/cancer_3d/krebs0030.png.gif
Binary files differ
diff --git a/cholerab/bling/cancer_3d/krebs0031.lcd b/cholerab/bling/cancer_3d/krebs0031.lcd
new file mode 100644
index 00000000..56d0100a
--- /dev/null
+++ b/cholerab/bling/cancer_3d/krebs0031.lcd
Binary files differ
diff --git a/cholerab/bling/cancer_3d/krebs0031.png b/cholerab/bling/cancer_3d/krebs0031.png
new file mode 100644
index 00000000..4492b4d3
--- /dev/null
+++ b/cholerab/bling/cancer_3d/krebs0031.png
Binary files differ
diff --git a/cholerab/bling/cancer_3d/krebs0031.png.gif b/cholerab/bling/cancer_3d/krebs0031.png.gif
new file mode 100644
index 00000000..d4224b99
--- /dev/null
+++ b/cholerab/bling/cancer_3d/krebs0031.png.gif
Binary files differ
diff --git a/cholerab/bling/cancer_3d/krebs0032.lcd b/cholerab/bling/cancer_3d/krebs0032.lcd
new file mode 100644
index 00000000..6b5b03ef
--- /dev/null
+++ b/cholerab/bling/cancer_3d/krebs0032.lcd
Binary files differ
diff --git a/cholerab/bling/cancer_3d/krebs0032.png b/cholerab/bling/cancer_3d/krebs0032.png
new file mode 100644
index 00000000..f6cee592
--- /dev/null
+++ b/cholerab/bling/cancer_3d/krebs0032.png
Binary files differ
diff --git a/cholerab/bling/cancer_3d/krebs0032.png.gif b/cholerab/bling/cancer_3d/krebs0032.png.gif
new file mode 100644
index 00000000..f36163bb
--- /dev/null
+++ b/cholerab/bling/cancer_3d/krebs0032.png.gif
Binary files differ
diff --git a/cholerab/bling/cancer_3d/krebs0033.lcd b/cholerab/bling/cancer_3d/krebs0033.lcd
new file mode 100644
index 00000000..0abf83ac
--- /dev/null
+++ b/cholerab/bling/cancer_3d/krebs0033.lcd
Binary files differ
diff --git a/cholerab/bling/cancer_3d/krebs0033.png b/cholerab/bling/cancer_3d/krebs0033.png
new file mode 100644
index 00000000..c40e9403
--- /dev/null
+++ b/cholerab/bling/cancer_3d/krebs0033.png
Binary files differ
diff --git a/cholerab/bling/cancer_3d/krebs0033.png.gif b/cholerab/bling/cancer_3d/krebs0033.png.gif
new file mode 100644
index 00000000..a2504201
--- /dev/null
+++ b/cholerab/bling/cancer_3d/krebs0033.png.gif
Binary files differ
diff --git a/cholerab/bling/cancer_3d/krebs0034.lcd b/cholerab/bling/cancer_3d/krebs0034.lcd
new file mode 100644
index 00000000..61b29998
--- /dev/null
+++ b/cholerab/bling/cancer_3d/krebs0034.lcd
Binary files differ
diff --git a/cholerab/bling/cancer_3d/krebs0034.png b/cholerab/bling/cancer_3d/krebs0034.png
new file mode 100644
index 00000000..889c8f0c
--- /dev/null
+++ b/cholerab/bling/cancer_3d/krebs0034.png
Binary files differ
diff --git a/cholerab/bling/cancer_3d/krebs0034.png.gif b/cholerab/bling/cancer_3d/krebs0034.png.gif
new file mode 100644
index 00000000..cabeb678
--- /dev/null
+++ b/cholerab/bling/cancer_3d/krebs0034.png.gif
Binary files differ
diff --git a/cholerab/bling/cancer_3d/krebs0035.lcd b/cholerab/bling/cancer_3d/krebs0035.lcd
new file mode 100644
index 00000000..c233a571
--- /dev/null
+++ b/cholerab/bling/cancer_3d/krebs0035.lcd
Binary files differ
diff --git a/cholerab/bling/cancer_3d/krebs0035.png b/cholerab/bling/cancer_3d/krebs0035.png
new file mode 100644
index 00000000..189f5438
--- /dev/null
+++ b/cholerab/bling/cancer_3d/krebs0035.png
Binary files differ
diff --git a/cholerab/bling/cancer_3d/krebs0035.png.gif b/cholerab/bling/cancer_3d/krebs0035.png.gif
new file mode 100644
index 00000000..b4740871
--- /dev/null
+++ b/cholerab/bling/cancer_3d/krebs0035.png.gif
Binary files differ
diff --git a/cholerab/bling/cancer_3d/krebs0036.lcd b/cholerab/bling/cancer_3d/krebs0036.lcd
new file mode 100644
index 00000000..26a4daba
--- /dev/null
+++ b/cholerab/bling/cancer_3d/krebs0036.lcd
Binary files differ
diff --git a/cholerab/bling/cancer_3d/krebs0036.png b/cholerab/bling/cancer_3d/krebs0036.png
new file mode 100644
index 00000000..77969b24
--- /dev/null
+++ b/cholerab/bling/cancer_3d/krebs0036.png
Binary files differ
diff --git a/cholerab/bling/cancer_3d/krebs0036.png.gif b/cholerab/bling/cancer_3d/krebs0036.png.gif
new file mode 100644
index 00000000..96e1f51a
--- /dev/null
+++ b/cholerab/bling/cancer_3d/krebs0036.png.gif
Binary files differ
diff --git a/cholerab/bling/cancer_3d/krebs0037.lcd b/cholerab/bling/cancer_3d/krebs0037.lcd
new file mode 100644
index 00000000..35975cc2
--- /dev/null
+++ b/cholerab/bling/cancer_3d/krebs0037.lcd
Binary files differ
diff --git a/cholerab/bling/cancer_3d/krebs0037.png b/cholerab/bling/cancer_3d/krebs0037.png
new file mode 100644
index 00000000..0bbb4ff5
--- /dev/null
+++ b/cholerab/bling/cancer_3d/krebs0037.png
Binary files differ
diff --git a/cholerab/bling/cancer_3d/krebs0037.png.gif b/cholerab/bling/cancer_3d/krebs0037.png.gif
new file mode 100644
index 00000000..4997d82a
--- /dev/null
+++ b/cholerab/bling/cancer_3d/krebs0037.png.gif
Binary files differ
diff --git a/cholerab/bling/cancer_3d/krebs0038.lcd b/cholerab/bling/cancer_3d/krebs0038.lcd
new file mode 100644
index 00000000..66cf13f7
--- /dev/null
+++ b/cholerab/bling/cancer_3d/krebs0038.lcd
Binary files differ
diff --git a/cholerab/bling/cancer_3d/krebs0038.png b/cholerab/bling/cancer_3d/krebs0038.png
new file mode 100644
index 00000000..80cbfdc6
--- /dev/null
+++ b/cholerab/bling/cancer_3d/krebs0038.png
Binary files differ
diff --git a/cholerab/bling/cancer_3d/krebs0038.png.gif b/cholerab/bling/cancer_3d/krebs0038.png.gif
new file mode 100644
index 00000000..fdccc045
--- /dev/null
+++ b/cholerab/bling/cancer_3d/krebs0038.png.gif
Binary files differ
diff --git a/cholerab/bling/cancer_3d/krebs0039.lcd b/cholerab/bling/cancer_3d/krebs0039.lcd
new file mode 100644
index 00000000..9e9f01cb
--- /dev/null
+++ b/cholerab/bling/cancer_3d/krebs0039.lcd
Binary files differ
diff --git a/cholerab/bling/cancer_3d/krebs0039.png b/cholerab/bling/cancer_3d/krebs0039.png
new file mode 100644
index 00000000..4257d0a8
--- /dev/null
+++ b/cholerab/bling/cancer_3d/krebs0039.png
Binary files differ
diff --git a/cholerab/bling/cancer_3d/krebs0039.png.gif b/cholerab/bling/cancer_3d/krebs0039.png.gif
new file mode 100644
index 00000000..6fcdddb5
--- /dev/null
+++ b/cholerab/bling/cancer_3d/krebs0039.png.gif
Binary files differ
diff --git a/cholerab/bling/cancer_3d/krebs0040.lcd b/cholerab/bling/cancer_3d/krebs0040.lcd
new file mode 100644
index 00000000..3e86d0de
--- /dev/null
+++ b/cholerab/bling/cancer_3d/krebs0040.lcd
Binary files differ
diff --git a/cholerab/bling/cancer_3d/krebs0040.png b/cholerab/bling/cancer_3d/krebs0040.png
new file mode 100644
index 00000000..9adab201
--- /dev/null
+++ b/cholerab/bling/cancer_3d/krebs0040.png
Binary files differ
diff --git a/cholerab/bling/cancer_3d/krebs0040.png.gif b/cholerab/bling/cancer_3d/krebs0040.png.gif
new file mode 100644
index 00000000..281659ac
--- /dev/null
+++ b/cholerab/bling/cancer_3d/krebs0040.png.gif
Binary files differ
diff --git a/cholerab/bling/cancer_3d/krebs0041.lcd b/cholerab/bling/cancer_3d/krebs0041.lcd
new file mode 100644
index 00000000..f7de248d
--- /dev/null
+++ b/cholerab/bling/cancer_3d/krebs0041.lcd
Binary files differ
diff --git a/cholerab/bling/cancer_3d/krebs0041.png b/cholerab/bling/cancer_3d/krebs0041.png
new file mode 100644
index 00000000..5eb8add9
--- /dev/null
+++ b/cholerab/bling/cancer_3d/krebs0041.png
Binary files differ
diff --git a/cholerab/bling/cancer_3d/krebs0041.png.gif b/cholerab/bling/cancer_3d/krebs0041.png.gif
new file mode 100644
index 00000000..a03dffd5
--- /dev/null
+++ b/cholerab/bling/cancer_3d/krebs0041.png.gif
Binary files differ
diff --git a/cholerab/bling/cancer_3d/krebs0042.lcd b/cholerab/bling/cancer_3d/krebs0042.lcd
new file mode 100644
index 00000000..0912ef02
--- /dev/null
+++ b/cholerab/bling/cancer_3d/krebs0042.lcd
Binary files differ
diff --git a/cholerab/bling/cancer_3d/krebs0042.png b/cholerab/bling/cancer_3d/krebs0042.png
new file mode 100644
index 00000000..d47248fe
--- /dev/null
+++ b/cholerab/bling/cancer_3d/krebs0042.png
Binary files differ
diff --git a/cholerab/bling/cancer_3d/krebs0042.png.gif b/cholerab/bling/cancer_3d/krebs0042.png.gif
new file mode 100644
index 00000000..85e0c895
--- /dev/null
+++ b/cholerab/bling/cancer_3d/krebs0042.png.gif
Binary files differ
diff --git a/cholerab/bling/cancer_3d/krebs0043.lcd b/cholerab/bling/cancer_3d/krebs0043.lcd
new file mode 100644
index 00000000..b8229452
--- /dev/null
+++ b/cholerab/bling/cancer_3d/krebs0043.lcd
Binary files differ
diff --git a/cholerab/bling/cancer_3d/krebs0043.png b/cholerab/bling/cancer_3d/krebs0043.png
new file mode 100644
index 00000000..fa344f57
--- /dev/null
+++ b/cholerab/bling/cancer_3d/krebs0043.png
Binary files differ
diff --git a/cholerab/bling/cancer_3d/krebs0043.png.gif b/cholerab/bling/cancer_3d/krebs0043.png.gif
new file mode 100644
index 00000000..81e32219
--- /dev/null
+++ b/cholerab/bling/cancer_3d/krebs0043.png.gif
Binary files differ
diff --git a/cholerab/bling/cancer_3d/krebs0044.lcd b/cholerab/bling/cancer_3d/krebs0044.lcd
new file mode 100644
index 00000000..6d0e2307
--- /dev/null
+++ b/cholerab/bling/cancer_3d/krebs0044.lcd
Binary files differ
diff --git a/cholerab/bling/cancer_3d/krebs0044.png b/cholerab/bling/cancer_3d/krebs0044.png
new file mode 100644
index 00000000..02437a94
--- /dev/null
+++ b/cholerab/bling/cancer_3d/krebs0044.png
Binary files differ
diff --git a/cholerab/bling/cancer_3d/krebs0044.png.gif b/cholerab/bling/cancer_3d/krebs0044.png.gif
new file mode 100644
index 00000000..4149345a
--- /dev/null
+++ b/cholerab/bling/cancer_3d/krebs0044.png.gif
Binary files differ
diff --git a/cholerab/bling/cancer_3d/krebs0045.lcd b/cholerab/bling/cancer_3d/krebs0045.lcd
new file mode 100644
index 00000000..79b011e1
--- /dev/null
+++ b/cholerab/bling/cancer_3d/krebs0045.lcd
Binary files differ
diff --git a/cholerab/bling/cancer_3d/krebs0045.png b/cholerab/bling/cancer_3d/krebs0045.png
new file mode 100644
index 00000000..08f69fd0
--- /dev/null
+++ b/cholerab/bling/cancer_3d/krebs0045.png
Binary files differ
diff --git a/cholerab/bling/cancer_3d/krebs0045.png.gif b/cholerab/bling/cancer_3d/krebs0045.png.gif
new file mode 100644
index 00000000..06434150
--- /dev/null
+++ b/cholerab/bling/cancer_3d/krebs0045.png.gif
Binary files differ
diff --git a/cholerab/bling/cancer_3d/krebs0046.lcd b/cholerab/bling/cancer_3d/krebs0046.lcd
new file mode 100644
index 00000000..1d18a098
--- /dev/null
+++ b/cholerab/bling/cancer_3d/krebs0046.lcd
Binary files differ
diff --git a/cholerab/bling/cancer_3d/krebs0046.png b/cholerab/bling/cancer_3d/krebs0046.png
new file mode 100644
index 00000000..b975736d
--- /dev/null
+++ b/cholerab/bling/cancer_3d/krebs0046.png
Binary files differ
diff --git a/cholerab/bling/cancer_3d/krebs0046.png.gif b/cholerab/bling/cancer_3d/krebs0046.png.gif
new file mode 100644
index 00000000..22771c43
--- /dev/null
+++ b/cholerab/bling/cancer_3d/krebs0046.png.gif
Binary files differ
diff --git a/cholerab/bling/cancer_3d/krebs0047.lcd b/cholerab/bling/cancer_3d/krebs0047.lcd
new file mode 100644
index 00000000..8c92e15f
--- /dev/null
+++ b/cholerab/bling/cancer_3d/krebs0047.lcd
Binary files differ
diff --git a/cholerab/bling/cancer_3d/krebs0047.png b/cholerab/bling/cancer_3d/krebs0047.png
new file mode 100644
index 00000000..9e39728f
--- /dev/null
+++ b/cholerab/bling/cancer_3d/krebs0047.png
Binary files differ
diff --git a/cholerab/bling/cancer_3d/krebs0047.png.gif b/cholerab/bling/cancer_3d/krebs0047.png.gif
new file mode 100644
index 00000000..f72db702
--- /dev/null
+++ b/cholerab/bling/cancer_3d/krebs0047.png.gif
Binary files differ
diff --git a/cholerab/bling/cancer_3d/krebs0048.lcd b/cholerab/bling/cancer_3d/krebs0048.lcd
new file mode 100644
index 00000000..0b8b3951
--- /dev/null
+++ b/cholerab/bling/cancer_3d/krebs0048.lcd
Binary files differ
diff --git a/cholerab/bling/cancer_3d/krebs0048.png b/cholerab/bling/cancer_3d/krebs0048.png
new file mode 100644
index 00000000..a70562e8
--- /dev/null
+++ b/cholerab/bling/cancer_3d/krebs0048.png
Binary files differ
diff --git a/cholerab/bling/cancer_3d/krebs0048.png.gif b/cholerab/bling/cancer_3d/krebs0048.png.gif
new file mode 100644
index 00000000..8823b2b6
--- /dev/null
+++ b/cholerab/bling/cancer_3d/krebs0048.png.gif
Binary files differ
diff --git a/cholerab/bling/cancer_3d/krebs0049.lcd b/cholerab/bling/cancer_3d/krebs0049.lcd
new file mode 100644
index 00000000..d52527b1
--- /dev/null
+++ b/cholerab/bling/cancer_3d/krebs0049.lcd
Binary files differ
diff --git a/cholerab/bling/cancer_3d/krebs0049.png b/cholerab/bling/cancer_3d/krebs0049.png
new file mode 100644
index 00000000..52b0f0e3
--- /dev/null
+++ b/cholerab/bling/cancer_3d/krebs0049.png
Binary files differ
diff --git a/cholerab/bling/cancer_3d/krebs0049.png.gif b/cholerab/bling/cancer_3d/krebs0049.png.gif
new file mode 100644
index 00000000..beaa8ac9
--- /dev/null
+++ b/cholerab/bling/cancer_3d/krebs0049.png.gif
Binary files differ
diff --git a/cholerab/bling/cancer_3d/krebs0050.lcd b/cholerab/bling/cancer_3d/krebs0050.lcd
new file mode 100644
index 00000000..a20aab84
--- /dev/null
+++ b/cholerab/bling/cancer_3d/krebs0050.lcd
Binary files differ
diff --git a/cholerab/bling/cancer_3d/krebs0050.png b/cholerab/bling/cancer_3d/krebs0050.png
new file mode 100644
index 00000000..cebd0750
--- /dev/null
+++ b/cholerab/bling/cancer_3d/krebs0050.png
Binary files differ
diff --git a/cholerab/bling/cancer_3d/krebs0050.png.gif b/cholerab/bling/cancer_3d/krebs0050.png.gif
new file mode 100644
index 00000000..97ba4cd4
--- /dev/null
+++ b/cholerab/bling/cancer_3d/krebs0050.png.gif
Binary files differ
diff --git a/cholerab/bling/cancer_3d/krebs0051.lcd b/cholerab/bling/cancer_3d/krebs0051.lcd
new file mode 100644
index 00000000..9b5e3cb8
--- /dev/null
+++ b/cholerab/bling/cancer_3d/krebs0051.lcd
Binary files differ
diff --git a/cholerab/bling/cancer_3d/krebs0051.png b/cholerab/bling/cancer_3d/krebs0051.png
new file mode 100644
index 00000000..65ec0238
--- /dev/null
+++ b/cholerab/bling/cancer_3d/krebs0051.png
Binary files differ
diff --git a/cholerab/bling/cancer_3d/krebs0051.png.gif b/cholerab/bling/cancer_3d/krebs0051.png.gif
new file mode 100644
index 00000000..8e637c4a
--- /dev/null
+++ b/cholerab/bling/cancer_3d/krebs0051.png.gif
Binary files differ
diff --git a/cholerab/bling/cancer_3d/krebs0052.lcd b/cholerab/bling/cancer_3d/krebs0052.lcd
new file mode 100644
index 00000000..50664ff6
--- /dev/null
+++ b/cholerab/bling/cancer_3d/krebs0052.lcd
Binary files differ
diff --git a/cholerab/bling/cancer_3d/krebs0052.png b/cholerab/bling/cancer_3d/krebs0052.png
new file mode 100644
index 00000000..9c6d56bb
--- /dev/null
+++ b/cholerab/bling/cancer_3d/krebs0052.png
Binary files differ
diff --git a/cholerab/bling/cancer_3d/krebs0052.png.gif b/cholerab/bling/cancer_3d/krebs0052.png.gif
new file mode 100644
index 00000000..998ff8b9
--- /dev/null
+++ b/cholerab/bling/cancer_3d/krebs0052.png.gif
Binary files differ
diff --git a/cholerab/bling/cancer_3d/krebs0053.lcd b/cholerab/bling/cancer_3d/krebs0053.lcd
new file mode 100644
index 00000000..8054e7d3
--- /dev/null
+++ b/cholerab/bling/cancer_3d/krebs0053.lcd
Binary files differ
diff --git a/cholerab/bling/cancer_3d/krebs0053.png b/cholerab/bling/cancer_3d/krebs0053.png
new file mode 100644
index 00000000..29311567
--- /dev/null
+++ b/cholerab/bling/cancer_3d/krebs0053.png
Binary files differ
diff --git a/cholerab/bling/cancer_3d/krebs0053.png.gif b/cholerab/bling/cancer_3d/krebs0053.png.gif
new file mode 100644
index 00000000..ad0d8b26
--- /dev/null
+++ b/cholerab/bling/cancer_3d/krebs0053.png.gif
Binary files differ
diff --git a/cholerab/bling/cancer_3d/krebs0054.lcd b/cholerab/bling/cancer_3d/krebs0054.lcd
new file mode 100644
index 00000000..4e567bbe
--- /dev/null
+++ b/cholerab/bling/cancer_3d/krebs0054.lcd
Binary files differ
diff --git a/cholerab/bling/cancer_3d/krebs0054.png b/cholerab/bling/cancer_3d/krebs0054.png
new file mode 100644
index 00000000..a9b86150
--- /dev/null
+++ b/cholerab/bling/cancer_3d/krebs0054.png
Binary files differ
diff --git a/cholerab/bling/cancer_3d/krebs0054.png.gif b/cholerab/bling/cancer_3d/krebs0054.png.gif
new file mode 100644
index 00000000..7dfd6939
--- /dev/null
+++ b/cholerab/bling/cancer_3d/krebs0054.png.gif
Binary files differ
diff --git a/cholerab/bling/cancer_3d/krebs0055.lcd b/cholerab/bling/cancer_3d/krebs0055.lcd
new file mode 100644
index 00000000..a68a3cbd
--- /dev/null
+++ b/cholerab/bling/cancer_3d/krebs0055.lcd
Binary files differ
diff --git a/cholerab/bling/cancer_3d/krebs0055.png b/cholerab/bling/cancer_3d/krebs0055.png
new file mode 100644
index 00000000..2741fe20
--- /dev/null
+++ b/cholerab/bling/cancer_3d/krebs0055.png
Binary files differ
diff --git a/cholerab/bling/cancer_3d/krebs0055.png.gif b/cholerab/bling/cancer_3d/krebs0055.png.gif
new file mode 100644
index 00000000..1a95e937
--- /dev/null
+++ b/cholerab/bling/cancer_3d/krebs0055.png.gif
Binary files differ
diff --git a/cholerab/bling/cancer_3d/krebs0056.lcd b/cholerab/bling/cancer_3d/krebs0056.lcd
new file mode 100644
index 00000000..f321c350
--- /dev/null
+++ b/cholerab/bling/cancer_3d/krebs0056.lcd
Binary files differ
diff --git a/cholerab/bling/cancer_3d/krebs0056.png b/cholerab/bling/cancer_3d/krebs0056.png
new file mode 100644
index 00000000..3f50491b
--- /dev/null
+++ b/cholerab/bling/cancer_3d/krebs0056.png
Binary files differ
diff --git a/cholerab/bling/cancer_3d/krebs0056.png.gif b/cholerab/bling/cancer_3d/krebs0056.png.gif
new file mode 100644
index 00000000..54c0b267
--- /dev/null
+++ b/cholerab/bling/cancer_3d/krebs0056.png.gif
Binary files differ
diff --git a/cholerab/bling/cancer_3d/krebs0057.lcd b/cholerab/bling/cancer_3d/krebs0057.lcd
new file mode 100644
index 00000000..ff1c3f2e
--- /dev/null
+++ b/cholerab/bling/cancer_3d/krebs0057.lcd
Binary files differ
diff --git a/cholerab/bling/cancer_3d/krebs0057.png b/cholerab/bling/cancer_3d/krebs0057.png
new file mode 100644
index 00000000..773929c4
--- /dev/null
+++ b/cholerab/bling/cancer_3d/krebs0057.png
Binary files differ
diff --git a/cholerab/bling/cancer_3d/krebs0057.png.gif b/cholerab/bling/cancer_3d/krebs0057.png.gif
new file mode 100644
index 00000000..293a1014
--- /dev/null
+++ b/cholerab/bling/cancer_3d/krebs0057.png.gif
Binary files differ
diff --git a/cholerab/bling/cancer_3d/krebs0058.lcd b/cholerab/bling/cancer_3d/krebs0058.lcd
new file mode 100644
index 00000000..da33e72b
--- /dev/null
+++ b/cholerab/bling/cancer_3d/krebs0058.lcd
Binary files differ
diff --git a/cholerab/bling/cancer_3d/krebs0058.png b/cholerab/bling/cancer_3d/krebs0058.png
new file mode 100644
index 00000000..9ce68938
--- /dev/null
+++ b/cholerab/bling/cancer_3d/krebs0058.png
Binary files differ
diff --git a/cholerab/bling/cancer_3d/krebs0058.png.gif b/cholerab/bling/cancer_3d/krebs0058.png.gif
new file mode 100644
index 00000000..d5e09fa6
--- /dev/null
+++ b/cholerab/bling/cancer_3d/krebs0058.png.gif
Binary files differ
diff --git a/cholerab/bling/cancer_3d/krebs0059.lcd b/cholerab/bling/cancer_3d/krebs0059.lcd
new file mode 100644
index 00000000..b1073a62
--- /dev/null
+++ b/cholerab/bling/cancer_3d/krebs0059.lcd
Binary files differ
diff --git a/cholerab/bling/cancer_3d/krebs0059.png b/cholerab/bling/cancer_3d/krebs0059.png
new file mode 100644
index 00000000..8161a7e8
--- /dev/null
+++ b/cholerab/bling/cancer_3d/krebs0059.png
Binary files differ
diff --git a/cholerab/bling/cancer_3d/krebs0059.png.gif b/cholerab/bling/cancer_3d/krebs0059.png.gif
new file mode 100644
index 00000000..0283366d
--- /dev/null
+++ b/cholerab/bling/cancer_3d/krebs0059.png.gif
Binary files differ
diff --git a/cholerab/bling/cancer_3d/krebs0060.lcd b/cholerab/bling/cancer_3d/krebs0060.lcd
new file mode 100644
index 00000000..c1ac749c
--- /dev/null
+++ b/cholerab/bling/cancer_3d/krebs0060.lcd
Binary files differ
diff --git a/cholerab/bling/cancer_3d/krebs0060.png b/cholerab/bling/cancer_3d/krebs0060.png
new file mode 100644
index 00000000..4e0623bb
--- /dev/null
+++ b/cholerab/bling/cancer_3d/krebs0060.png
Binary files differ
diff --git a/cholerab/bling/cancer_3d/krebs0060.png.gif b/cholerab/bling/cancer_3d/krebs0060.png.gif
new file mode 100644
index 00000000..fb55d58a
--- /dev/null
+++ b/cholerab/bling/cancer_3d/krebs0060.png.gif
Binary files differ
diff --git a/cholerab/bling/cancer_3d/krebs0061.lcd b/cholerab/bling/cancer_3d/krebs0061.lcd
new file mode 100644
index 00000000..a37ccec3
--- /dev/null
+++ b/cholerab/bling/cancer_3d/krebs0061.lcd
Binary files differ
diff --git a/cholerab/bling/cancer_3d/krebs0061.png b/cholerab/bling/cancer_3d/krebs0061.png
new file mode 100644
index 00000000..cfb9a85d
--- /dev/null
+++ b/cholerab/bling/cancer_3d/krebs0061.png
Binary files differ
diff --git a/cholerab/bling/cancer_3d/krebs0061.png.gif b/cholerab/bling/cancer_3d/krebs0061.png.gif
new file mode 100644
index 00000000..a0ff5ddb
--- /dev/null
+++ b/cholerab/bling/cancer_3d/krebs0061.png.gif
Binary files differ
diff --git a/cholerab/bling/cancer_3d/krebs0062.lcd b/cholerab/bling/cancer_3d/krebs0062.lcd
new file mode 100644
index 00000000..a3b15b35
--- /dev/null
+++ b/cholerab/bling/cancer_3d/krebs0062.lcd
Binary files differ
diff --git a/cholerab/bling/cancer_3d/krebs0062.png b/cholerab/bling/cancer_3d/krebs0062.png
new file mode 100644
index 00000000..5261bca6
--- /dev/null
+++ b/cholerab/bling/cancer_3d/krebs0062.png
Binary files differ
diff --git a/cholerab/bling/cancer_3d/krebs0062.png.gif b/cholerab/bling/cancer_3d/krebs0062.png.gif
new file mode 100644
index 00000000..e4e34249
--- /dev/null
+++ b/cholerab/bling/cancer_3d/krebs0062.png.gif
Binary files differ
diff --git a/cholerab/bling/cancer_3d/krebs0063.lcd b/cholerab/bling/cancer_3d/krebs0063.lcd
new file mode 100644
index 00000000..111e0019
--- /dev/null
+++ b/cholerab/bling/cancer_3d/krebs0063.lcd
Binary files differ
diff --git a/cholerab/bling/cancer_3d/krebs0063.png b/cholerab/bling/cancer_3d/krebs0063.png
new file mode 100644
index 00000000..fe1f13d0
--- /dev/null
+++ b/cholerab/bling/cancer_3d/krebs0063.png
Binary files differ
diff --git a/cholerab/bling/cancer_3d/krebs0063.png.gif b/cholerab/bling/cancer_3d/krebs0063.png.gif
new file mode 100644
index 00000000..5f3ce011
--- /dev/null
+++ b/cholerab/bling/cancer_3d/krebs0063.png.gif
Binary files differ
diff --git a/cholerab/bling/cancer_3d/krebs0064.lcd b/cholerab/bling/cancer_3d/krebs0064.lcd
new file mode 100644
index 00000000..093c8494
--- /dev/null
+++ b/cholerab/bling/cancer_3d/krebs0064.lcd
Binary files differ
diff --git a/cholerab/bling/cancer_3d/krebs0064.png b/cholerab/bling/cancer_3d/krebs0064.png
new file mode 100644
index 00000000..d8b1da4a
--- /dev/null
+++ b/cholerab/bling/cancer_3d/krebs0064.png
Binary files differ
diff --git a/cholerab/bling/cancer_3d/krebs0064.png.gif b/cholerab/bling/cancer_3d/krebs0064.png.gif
new file mode 100644
index 00000000..f1dfb092
--- /dev/null
+++ b/cholerab/bling/cancer_3d/krebs0064.png.gif
Binary files differ
diff --git a/cholerab/bling/cancer_3d/krebs0065.lcd b/cholerab/bling/cancer_3d/krebs0065.lcd
new file mode 100644
index 00000000..f538808e
--- /dev/null
+++ b/cholerab/bling/cancer_3d/krebs0065.lcd
Binary files differ
diff --git a/cholerab/bling/cancer_3d/krebs0065.png b/cholerab/bling/cancer_3d/krebs0065.png
new file mode 100644
index 00000000..795efabb
--- /dev/null
+++ b/cholerab/bling/cancer_3d/krebs0065.png
Binary files differ
diff --git a/cholerab/bling/cancer_3d/krebs0065.png.gif b/cholerab/bling/cancer_3d/krebs0065.png.gif
new file mode 100644
index 00000000..67108827
--- /dev/null
+++ b/cholerab/bling/cancer_3d/krebs0065.png.gif
Binary files differ
diff --git a/cholerab/bling/cancer_3d/krebs0066.lcd b/cholerab/bling/cancer_3d/krebs0066.lcd
new file mode 100644
index 00000000..ffa67192
--- /dev/null
+++ b/cholerab/bling/cancer_3d/krebs0066.lcd
Binary files differ
diff --git a/cholerab/bling/cancer_3d/krebs0066.png b/cholerab/bling/cancer_3d/krebs0066.png
new file mode 100644
index 00000000..564159a8
--- /dev/null
+++ b/cholerab/bling/cancer_3d/krebs0066.png
Binary files differ
diff --git a/cholerab/bling/cancer_3d/krebs0066.png.gif b/cholerab/bling/cancer_3d/krebs0066.png.gif
new file mode 100644
index 00000000..c75c6220
--- /dev/null
+++ b/cholerab/bling/cancer_3d/krebs0066.png.gif
Binary files differ
diff --git a/cholerab/bling/cancer_3d/krebs0067.lcd b/cholerab/bling/cancer_3d/krebs0067.lcd
new file mode 100644
index 00000000..9e1f6348
--- /dev/null
+++ b/cholerab/bling/cancer_3d/krebs0067.lcd
Binary files differ
diff --git a/cholerab/bling/cancer_3d/krebs0067.png b/cholerab/bling/cancer_3d/krebs0067.png
new file mode 100644
index 00000000..782156eb
--- /dev/null
+++ b/cholerab/bling/cancer_3d/krebs0067.png
Binary files differ
diff --git a/cholerab/bling/cancer_3d/krebs0067.png.gif b/cholerab/bling/cancer_3d/krebs0067.png.gif
new file mode 100644
index 00000000..4a2c0dbf
--- /dev/null
+++ b/cholerab/bling/cancer_3d/krebs0067.png.gif
Binary files differ
diff --git a/cholerab/bling/cancer_3d/krebs0068.lcd b/cholerab/bling/cancer_3d/krebs0068.lcd
new file mode 100644
index 00000000..dd54ef86
--- /dev/null
+++ b/cholerab/bling/cancer_3d/krebs0068.lcd
Binary files differ
diff --git a/cholerab/bling/cancer_3d/krebs0068.png b/cholerab/bling/cancer_3d/krebs0068.png
new file mode 100644
index 00000000..5c7731bc
--- /dev/null
+++ b/cholerab/bling/cancer_3d/krebs0068.png
Binary files differ
diff --git a/cholerab/bling/cancer_3d/krebs0068.png.gif b/cholerab/bling/cancer_3d/krebs0068.png.gif
new file mode 100644
index 00000000..9d650d0b
--- /dev/null
+++ b/cholerab/bling/cancer_3d/krebs0068.png.gif
Binary files differ
diff --git a/cholerab/bling/cancer_3d/krebs0069.lcd b/cholerab/bling/cancer_3d/krebs0069.lcd
new file mode 100644
index 00000000..321371b6
--- /dev/null
+++ b/cholerab/bling/cancer_3d/krebs0069.lcd
Binary files differ
diff --git a/cholerab/bling/cancer_3d/krebs0069.png b/cholerab/bling/cancer_3d/krebs0069.png
new file mode 100644
index 00000000..f4880982
--- /dev/null
+++ b/cholerab/bling/cancer_3d/krebs0069.png
Binary files differ
diff --git a/cholerab/bling/cancer_3d/krebs0069.png.gif b/cholerab/bling/cancer_3d/krebs0069.png.gif
new file mode 100644
index 00000000..94dcfb59
--- /dev/null
+++ b/cholerab/bling/cancer_3d/krebs0069.png.gif
Binary files differ
diff --git a/cholerab/bling/cancer_3d/krebs0070.lcd b/cholerab/bling/cancer_3d/krebs0070.lcd
new file mode 100644
index 00000000..11015791
--- /dev/null
+++ b/cholerab/bling/cancer_3d/krebs0070.lcd
Binary files differ
diff --git a/cholerab/bling/cancer_3d/krebs0070.png b/cholerab/bling/cancer_3d/krebs0070.png
new file mode 100644
index 00000000..1f27ed5e
--- /dev/null
+++ b/cholerab/bling/cancer_3d/krebs0070.png
Binary files differ
diff --git a/cholerab/bling/cancer_3d/krebs0070.png.gif b/cholerab/bling/cancer_3d/krebs0070.png.gif
new file mode 100644
index 00000000..259a1bf7
--- /dev/null
+++ b/cholerab/bling/cancer_3d/krebs0070.png.gif
Binary files differ
diff --git a/cholerab/bling/cancer_3d/run.sh b/cholerab/bling/cancer_3d/run.sh
new file mode 100644
index 00000000..2595a235
--- /dev/null
+++ b/cholerab/bling/cancer_3d/run.sh
@@ -0,0 +1,18 @@
+#!/bin/sh
+if [ -f animation.lcd ] ;then
+ rm animation.lcd
+fi
+
+echo -n "Frames to convert: "
+ls *.png |wc -l
+
+for filename in *.png
+do
+ echo -n "create mono gif $filename.gif from $filename:"
+ convert -monochrome $filename $filename.gif && echo "ok"
+ echo -n "converting to lcd file... "
+ ../../../r0ket/tools/image/img2lcd.pl $filename.gif && echo "ok"
+ echo -n "adding ${filename%\.*}.lcd to animation "
+ cat ${filename%\.*}.lcd >> animation.lcd && echo "ok"
+done
+echo "done"
diff --git a/cholerab/bling/filehooker_grub_splash.xcf b/cholerab/bling/filehooker_grub_splash.xcf
new file mode 100644
index 00000000..7be0f1f9
--- /dev/null
+++ b/cholerab/bling/filehooker_grub_splash.xcf
Binary files differ
diff --git a/cholerab/bling/filter.sh b/cholerab/bling/filter.sh
new file mode 100755
index 00000000..39bac362
--- /dev/null
+++ b/cholerab/bling/filter.sh
@@ -0,0 +1,3 @@
+#! /bin/sh
+set -euf
+echo "`cat "$1"`" | sed 's/x/ /g'
diff --git a/cholerab/bling/krebs-v1.txt b/cholerab/bling/krebs-v1.txt
new file mode 100644
index 00000000..c9852522
--- /dev/null
+++ b/cholerab/bling/krebs-v1.txt
@@ -0,0 +1,9 @@
+ x x x x
+ xx xx xx xx xx xx
+ xx xx xx xx xx xx
+ xxx x x xxx
+ x xxxxxxxxxxxx x
+ xxxxxxxxxxxxxxxx
+ x xxxxxxxxxxxx x
+ x x x x x x
+ x x x x x x
diff --git a/cholerab/bling/krebs-v2.txt b/cholerab/bling/krebs-v2.txt
new file mode 100644
index 00000000..f8006628
--- /dev/null
+++ b/cholerab/bling/krebs-v2.txt
@@ -0,0 +1,13 @@
+ x x x x
+xx x xx xx xx x
+xx x xx xx xx x
+ xxx x x xxx
+ xxx xxxxx xxx
+ x xxxxxxx x
+ xxxxxxxxxxxxx
+ xxxxxxx
+ xxxxxxxxxxx
+ x xxx x
+ x x x x x x
+ x x x x x x
+ x xx x x xx x
diff --git a/cholerab/bling/krebs-v2.xcf b/cholerab/bling/krebs-v2.xcf
new file mode 100644
index 00000000..2bada0ce
--- /dev/null
+++ b/cholerab/bling/krebs-v2.xcf
Binary files differ
diff --git a/cholerab/bling/krebs-v2.xpm b/cholerab/bling/krebs-v2.xpm
new file mode 100644
index 00000000..cc411095
--- /dev/null
+++ b/cholerab/bling/krebs-v2.xpm
@@ -0,0 +1,24 @@
+/* XPM */
+static char *krebs_v2[] = {
+/* columns rows colors chars-per-pixel */
+"16 16 2 1 ",
+" c None",
+"x c #E4002B",
+/* pixels */
+" ",
+" ",
+" x x x x",
+"xx x xx xx xx x",
+"xx x xx xx xx x",
+" xxx x x xxx",
+" xxx xxxxx xxx",
+" x xxxxxxx x ",
+" xxxxxxxxxxxxx ",
+" xxxxxxx ",
+" xxxxxxxxxxx ",
+" x xxx x ",
+" x x x x x x ",
+" x x x x x x ",
+" x xx x x xx x ",
+" ",
+};
diff --git a/cholerab/bling/krebs-v2f.txt b/cholerab/bling/krebs-v2f.txt
new file mode 100644
index 00000000..95f367ae
--- /dev/null
+++ b/cholerab/bling/krebs-v2f.txt
@@ -0,0 +1,13 @@
+ xx xx xx xx
+xxxx xx xxxx xxxx xxxx xx
+xxxx xx xxxx xxxx xxxx xx
+ xxxxxx xx xx xxxxxx
+ xxxxxx xxxxxxxxxx xxxxxx
+ xx xxxxxxxxxxxxxx xx
+ xxxxxxxxxxxxxxxxxxxxxxxxxx
+ xxxxxxxxxxxxxx
+ xxxxxxxxxxxxxxxxxxxxxx
+ xx xxxxxx xx
+ xx xx xx xx xx xx
+ xx xx xx xx xx xx
+ xx xxxx xx xx xxxx xx
diff --git a/cholerab/bling/krebs-v3_small.txt b/cholerab/bling/krebs-v3_small.txt
new file mode 100644
index 00000000..8adce7eb
--- /dev/null
+++ b/cholerab/bling/krebs-v3_small.txt
@@ -0,0 +1,10 @@
+x x x x
+x x x x
+xx xx
+ x x x x
+ x x x x
+xxxxxxxxxx
+ xxxxxxxx
+x xxxxxx x
+x x x x x
+x x xx x x
diff --git a/cholerab/bling/krebs_42.svg b/cholerab/bling/krebs_42.svg
new file mode 100644
index 00000000..4bf9a2b1
--- /dev/null
+++ b/cholerab/bling/krebs_42.svg
@@ -0,0 +1,86 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+ xmlns:dc="http://purl.org/dc/elements/1.1/"
+ xmlns:cc="http://creativecommons.org/ns#"
+ xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+ xmlns:svg="http://www.w3.org/2000/svg"
+ xmlns="http://www.w3.org/2000/svg"
+ xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+ xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+ id="svg2876"
+ version="1.1"
+ inkscape:version="0.47 r22583"
+ width="891"
+ height="743"
+ sodipodi:docname="krebs_plain.svg">
+ <metadata
+ id="metadata2882">
+ <rdf:RDF>
+ <cc:Work
+ rdf:about="">
+ <dc:format>image/svg+xml</dc:format>
+ <dc:type
+ rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+ <dc:title></dc:title>
+ </cc:Work>
+ </rdf:RDF>
+ </metadata>
+ <defs
+ id="defs2880">
+ <inkscape:perspective
+ sodipodi:type="inkscape:persp3d"
+ inkscape:vp_x="0 : 0.5 : 1"
+ inkscape:vp_y="0 : 1000 : 0"
+ inkscape:vp_z="1 : 0.5 : 1"
+ inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
+ id="perspective2884" />
+ </defs>
+ <sodipodi:namedview
+ pagecolor="#ffffff"
+ bordercolor="#666666"
+ borderopacity="1"
+ objecttolerance="10"
+ gridtolerance="10"
+ guidetolerance="10"
+ inkscape:pageopacity="0"
+ inkscape:pageshadow="2"
+ inkscape:window-width="1436"
+ inkscape:window-height="856"
+ id="namedview2878"
+ showgrid="false"
+ inkscape:snap-to-guides="true"
+ inkscape:snap-grids="true"
+ inkscape:snap-bbox="true"
+ inkscape:zoom="0.81830417"
+ inkscape:cx="267.69326"
+ inkscape:cy="420.38158"
+ inkscape:window-x="4"
+ inkscape:window-y="0"
+ inkscape:window-maximized="1"
+ inkscape:current-layer="svg2876" />
+ <path
+ style="fill:#e4002b;fill-opacity:1"
+ d="m 244.0219,617.03493 c -0.21558,-0.56245 -0.27058,-11.13745 -0.12223,-23.5 l 0.26974,-22.47737 22,-0.5 22,-0.5 0.26031,-44.76841 0.26031,-44.7684 23.23969,0.2684 23.23969,0.26841 0.257,67.7787 c 0.20362,53.70074 -0.004,67.87425 -1,68.23871 -2.76038,1.01019 -90.01678,0.97154 -90.40451,-0.04 z"
+ id="path3699" />
+ <path
+ style="fill:#e4002b;fill-opacity:1"
+ d="m 382.14297,617.3264 c -0.26297,-0.69786 -0.5896,-41.99384 -0.72584,-91.76884 l -0.24772,-90.5 -68,0 -68,0 -0.5,22.5 -0.5,22.5 -21.97012,0.27012 c -13.36172,0.16427 -22.37364,0.67349 -23,1.29959 -0.67593,0.67568 -1.20172,24.12474 -1.52988,68.22989 l -0.5,67.2004 -21.93,0.27 c -12.06149,0.14851 -22.28992,-0.0899 -22.72984,-0.52984 -0.43992,-0.43992 -0.82782,-31.38642 -0.86202,-68.77 l -0.0622,-67.97016 22.79201,-0.5 22.79201,-0.5 0.5,-46 0.5,-46 45,-0.5 45,-0.5 0,-22 0,-22 -68.5,-0.5 -68.5,-0.5 -0.26044,-44.96044 c -0.1701,-29.364 -0.62018,-45.32106 -1.29748,-46 -0.61887,-0.62038 -9.58642,-1.24117 -22.23955,-1.53956 l -21.20253,-0.5 -0.5,-44.20083 c -0.32035,-28.31979 -0.87003,-44.57056 -1.52988,-45.22989 -0.62605,-0.62554 -9.644729,-1.13497 -23.000009,-1.29916 l -21.97011,-0.27012 0,-46.49999 0,-46.500003 22.5,-0.5 22.499999,-0.5 0.5,-22.5 0.5,-22.500001 23,0 23,0 0.5,69.000001 0.5,68.999993 22.5,0 22.5,0 0.5,-68.999993 0.5,-69.000001 22.5,0 22.5,0 0,114.999994 0,115 -21.20253,0.5 c -13.06388,0.30807 -21.61243,0.91088 -22.27041,1.57041 -0.70812,0.7098 -0.97678,8.28986 -0.79747,22.5 l 0.27041,21.42959 43.93935,0.26065 c 29.90385,0.17739 44.27815,-0.0774 45,-0.79755 0.64951,-0.64801 1.25447,-9.47074 1.56065,-22.76065 l 0.5,-21.70245 21.20125,-0.5 c 15.49421,-0.36541 21.55085,-0.8496 22.5,-1.79875 0.94915,-0.94915 1.43334,-7.00579 1.79875,-22.5 l 0.5,-21.20125 21.4221,-0.27039 c 13.74507,-0.17349 21.89799,-0.66533 22.75,-1.37244 1.86497,-1.54779 1.93794,-42.34431 0.0779,-43.54815 -0.6875,-0.44496 -10.925,-1.03402 -22.75,-1.30902 l -21.5,-0.5 -0.26043,-44.93956 c -0.14323,-24.716769 0.0913,-45.291272 0.52112,-45.721122 0.42985,-0.42985 21.24704,-0.821311 46.26043,-0.869914 l 45.47888,-0.08837 0.5,68.309476 0.5,68.30949 45.5,0 45.5,0 0,-21.5 0,-21.5 -23,-0.5 -23,-0.5 0,-46.49999 0,-46.500005 46.5,0 46.5,0 0.25532,90.903935 c 0.1807,64.33897 0.57702,91.29158 1.35619,92.23042 0.83731,1.0089 6.16306,1.39102 22.24469,1.59606 l 21.1438,0.26958 0.5,21.70245 c 0.30615,13.2884 0.91117,22.11267 1.56054,22.76054 0.72197,0.7203 15.24754,0.97491 45.5,0.79755 l 44.43946,-0.26054 0.27041,-21.42959 c 0.17932,-14.2111 -0.0893,-21.79015 -0.79755,-22.5 -0.66039,-0.66191 -9.35028,-1.26123 -22.77041,-1.57041 l -21.70245,-0.5 -0.5,-44.20083 c -0.32022,-28.30803 -0.87016,-44.57069 -1.52947,-45.22947 -0.62361,-0.62311 -9.494,-1.13529 -22.5,-1.29917 l -21.47053,-0.27053 0,-46.49999 0,-46.500005 22,-0.5 22,-0.5 0.5,-22.5 0.5,-22.500001 23.5,0 23.5,0 0.5,69.000001 0.5,68.999995 22,0 22,0 0.5,-68.999995 0.5,-69.000001 23,0 23,0 0,115.499996 0,115.5 -22.5,0.5 -22.5,0.5 -0.5,45.5 -0.5,45.5 -68.5,0.5 -68.5,0.5 0,22 0,22 45.5,0.5 45.5,0.5 0.5,46 0.5,46 22.5,0.5 22.5,0.5 0,69 0,69 -23,0 -23,0 -0.25705,-67.95705 c -0.17172,-45.39696 -0.60248,-68.30329 -1.29755,-69 -0.62555,-0.62702 -9.69546,-1.24235 -22.74295,-1.54295 l -21.70245,-0.5 -0.27081,-20.92262 c -0.17312,-13.3749 -0.66822,-21.40146 -1.37245,-22.25 -1.53612,-1.85091 -133.80901,-1.97511 -135.65674,-0.12738 -0.9155,0.9155 -1.2,22.47577 -1.2,90.94098 0,49.35754 -0.36973,89.96949 -0.82162,90.24878 -0.45189,0.27928 -10.91439,0.58003 -23.25,0.66833 l -22.42838,0.16054 -0.5,-68.35931 -0.5,-68.35932 -22,0 -22,0 -0.5,68.5 -0.5,68.5 -22.77416,0.26884 c -17.67944,0.20869 -22.88111,-0.015 -23.25228,-1 z"
+ id="path3697" />
+ <path
+ style="fill:#e4002b;fill-opacity:1"
+ d="m 567.13302,617.3174 c -0.2648,-0.69275 -0.36494,-31.85984 -0.22253,-69.25984 l 0.25892,-68 23,0 23,0 0.5,45 0.5,45 22,0.5 22,0.5 0,23.5 0,23.5 -45.27747,0.26021 c -35.68808,0.2051 -45.37943,-0.007 -45.75892,-1 z"
+ id="path2921" />
+ <text
+ xml:space="preserve"
+ style="font-size:40px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;fill:#000000;fill-opacity:1;stroke:none;font-family:Adore64;-inkscape-font-specification:Adore64"
+ x="152.65131"
+ y="714.11517"
+ id="text3744"><tspan
+ sodipodi:role="line"
+ id="tspan3746"
+ x="152.65131"
+ y="714.11517"
+ style="font-size:85px;fill:#e4002b;fill-opacity:1">42::/16</tspan></text>
+</svg>
diff --git a/cholerab/bling/krebs_aquarium.svg b/cholerab/bling/krebs_aquarium.svg
new file mode 100644
index 00000000..ad53cfca
--- /dev/null
+++ b/cholerab/bling/krebs_aquarium.svg
@@ -0,0 +1,87 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+ xmlns:dc="http://purl.org/dc/elements/1.1/"
+ xmlns:cc="http://creativecommons.org/ns#"
+ xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+ xmlns:svg="http://www.w3.org/2000/svg"
+ xmlns="http://www.w3.org/2000/svg"
+ xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+ xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+ width="16"
+ height="16"
+ id="svg4376"
+ version="1.1"
+ inkscape:version="0.48.3.1 r9886"
+ sodipodi:docname="krebs_aquarium.svg">
+ <defs
+ id="defs4378" />
+ <sodipodi:namedview
+ id="base"
+ pagecolor="#ffffff"
+ bordercolor="#666666"
+ borderopacity="1.0"
+ inkscape:pageopacity="0.0"
+ inkscape:pageshadow="2"
+ inkscape:zoom="28.963094"
+ inkscape:cx="9.7979626"
+ inkscape:cy="9.1371782"
+ inkscape:document-units="px"
+ inkscape:current-layer="a4396"
+ showgrid="true"
+ showguides="true"
+ width="16px"
+ inkscape:snap-bbox="true"
+ inkscape:snap-global="true"
+ inkscape:object-paths="false"
+ inkscape:bbox-paths="false"
+ inkscape:object-nodes="false"
+ inkscape:snap-grids="true"
+ inkscape:window-width="483"
+ inkscape:window-height="747"
+ inkscape:window-x="0"
+ inkscape:window-y="19"
+ inkscape:window-maximized="0">
+ <inkscape:grid
+ type="xygrid"
+ id="grid4384"
+ empspacing="5"
+ visible="true"
+ enabled="true"
+ snapvisiblegridlinesonly="true" />
+ </sodipodi:namedview>
+ <metadata
+ id="metadata4381">
+ <rdf:RDF>
+ <cc:Work
+ rdf:about="">
+ <dc:format>image/svg+xml</dc:format>
+ <dc:type
+ rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+ <dc:title />
+ </cc:Work>
+ </rdf:RDF>
+ </metadata>
+ <g
+ inkscape:label="Layer 1"
+ inkscape:groupmode="layer"
+ id="layer1"
+ transform="translate(0,-1036.3622)">
+ <a
+ id="a4396">
+ <a
+ id="a4960"
+ transform="translate(5e-6,1)" />
+ <a
+ transform="translate(7.000005,1)"
+ id="a4960-3">
+ <path
+ id="rect5009-9"
+ transform="translate(0,1036.3622)"
+ style="fill:#e4002b;fill-opacity:1"
+ d="m 4.999995,10 5e-6,1 0,2 1,0 0,1 -2,0 -5e-6,-2 0,-1 0,-1 z M -2,11 l -5e-6,-1 1,0 0,1 0,1 5e-6,2 -2,0 0,-1 1,0 z m -3.000005,-10.0003 0,3 1,0 0,-3 1,0 0,5 -1,0 0,1 2,0 0,-1 1,0 0,-1 1,0 0,-1 -1,0 0,-2 2,0 0,3 2,0 0,-1 -1,0 0,-2 2,0 0,3 0,1 1,0 0,1 2,0 0,-1 -1,0 0,-2 -1,0 0,-2 1,0 0,-1 1,0 0,3 1,0 0,-3 1,0 0,4.9553 -1,0.045 0,2 -3,0 0,1 2,0 0,1 1,0 0,1 0,3 -1,0 0,-3 L 6.01656,11 6,10 l -3,0 0,4 -1,0 0,-3 -1,0 0,3 -1,0 0,-4 -3,0 0,1 -1,0 0,3 -1,0 0,-3 -5e-6,-1 1,0 5e-6,-1 2,0 0,-1 -3,0 0,-2 -1,0 0,-2 -1,0 0,-2 1,0 0,-1 z" />
+ </a>
+ </a>
+ </g>
+</svg>
diff --git a/cholerab/bling/krebs_inverse_r0ket.gif b/cholerab/bling/krebs_inverse_r0ket.gif
new file mode 100644
index 00000000..58c753e7
--- /dev/null
+++ b/cholerab/bling/krebs_inverse_r0ket.gif
Binary files differ
diff --git a/cholerab/bling/krebs_lcd.png b/cholerab/bling/krebs_lcd.png
new file mode 100644
index 00000000..046ba90f
--- /dev/null
+++ b/cholerab/bling/krebs_lcd.png
Binary files differ
diff --git a/cholerab/bling/krebs_plain.png b/cholerab/bling/krebs_plain.png
new file mode 100644
index 00000000..48c481a3
--- /dev/null
+++ b/cholerab/bling/krebs_plain.png
Binary files differ
diff --git a/cholerab/bling/krebs_plain.svg b/cholerab/bling/krebs_plain.svg
new file mode 100644
index 00000000..349d7e6e
--- /dev/null
+++ b/cholerab/bling/krebs_plain.svg
@@ -0,0 +1,92 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+ xmlns:dc="http://purl.org/dc/elements/1.1/"
+ xmlns:cc="http://creativecommons.org/ns#"
+ xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+ xmlns:svg="http://www.w3.org/2000/svg"
+ xmlns="http://www.w3.org/2000/svg"
+ xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+ xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+ width="16"
+ height="16"
+ id="svg4376"
+ version="1.1"
+ inkscape:version="0.48.3.1 r9886"
+ sodipodi:docname="krebs_plain.svg">
+ <defs
+ id="defs4378" />
+ <sodipodi:namedview
+ id="base"
+ pagecolor="#ffffff"
+ bordercolor="#666666"
+ borderopacity="1.0"
+ inkscape:pageopacity="0.0"
+ inkscape:pageshadow="2"
+ inkscape:zoom="28.963094"
+ inkscape:cx="7.4015919"
+ inkscape:cy="7.0928138"
+ inkscape:document-units="px"
+ inkscape:current-layer="a4396"
+ showgrid="true"
+ showguides="true"
+ width="16px"
+ inkscape:snap-bbox="true"
+ inkscape:snap-global="true"
+ inkscape:object-paths="false"
+ inkscape:bbox-paths="false"
+ inkscape:object-nodes="false"
+ inkscape:snap-grids="true"
+ inkscape:window-width="1160"
+ inkscape:window-height="747"
+ inkscape:window-x="204"
+ inkscape:window-y="19"
+ inkscape:window-maximized="0">
+ <inkscape:grid
+ type="xygrid"
+ id="grid4384"
+ empspacing="5"
+ visible="true"
+ enabled="true"
+ snapvisiblegridlinesonly="true" />
+ </sodipodi:namedview>
+ <metadata
+ id="metadata4381">
+ <rdf:RDF>
+ <cc:Work
+ rdf:about="">
+ <dc:format>image/svg+xml</dc:format>
+ <dc:type
+ rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+ <dc:title></dc:title>
+ </cc:Work>
+ </rdf:RDF>
+ </metadata>
+ <g
+ inkscape:label="Layer 1"
+ inkscape:groupmode="layer"
+ id="layer1"
+ transform="translate(0,-1036.3622)">
+ <path
+ id="rect4446"
+ style="fill:#e4002b;fill-opacity:1"
+ d="m 2,1038.3619 0,3 1,0 0,-3 1,0 0,5 -1,0 0,1 2,0 0,-1 1,0 0,-1 1,0 0,-1 -1,0 0,-2 2,0 0,3 2,0 0,-1 -1,0 0,-2 2,0 0,3 0,1 1,0 0,1 2,0 0,-1 -1,0 0,-2 -1,0 0,-2 1,0 0,-1 1,0 0,3 1,0 0,-3 1,0 0,4.9553 -1,0.045 0,2 -3,0 0,1 2,0 0,2 1,0 0,3 -1,0 0,-3 -0.983435,0 -0.01656,-1 -3,0 0,4 -1,0 0,-3 -1,0 0,3 -1,0 0,-4 -3,0 0,1 -1,0 0,3 -1,0 0,-3 1,0 0,-2 2,0 0,-1 -3,0 0,-2 -1,0 0,-2 -1,0 0,-2 1,0 0,-1 z"
+ inkscape:connector-curvature="0"
+ sodipodi:nodetypes="cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc" />
+ <path
+ transform="translate(5e-6,1037.3622)"
+ style="fill:#e4002b;fill-opacity:1"
+ d="m 5,11 1,0 0,3 -2,0 0,-1 1,0 z"
+ id="rect5009"
+ inkscape:connector-curvature="0"
+ sodipodi:nodetypes="ccccccc" />
+ <path
+ transform="translate(7.000005,1037.3622)"
+ style="fill:#e4002b;fill-opacity:1"
+ d="m 4,11 1,0 0,2 1,0 0,1 -2,0 z"
+ id="rect5009-9"
+ inkscape:connector-curvature="0"
+ sodipodi:nodetypes="ccccccc" />
+ </g>
+</svg>
diff --git a/cholerab/bling/krebs_plain_a4.svg b/cholerab/bling/krebs_plain_a4.svg
new file mode 100644
index 00000000..47613db2
--- /dev/null
+++ b/cholerab/bling/krebs_plain_a4.svg
@@ -0,0 +1,112 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+ xmlns:dc="http://purl.org/dc/elements/1.1/"
+ xmlns:cc="http://creativecommons.org/ns#"
+ xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+ xmlns:svg="http://www.w3.org/2000/svg"
+ xmlns="http://www.w3.org/2000/svg"
+ xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+ xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+ width="744.09448"
+ height="1052.3622"
+ id="svg4376"
+ version="1.1"
+ inkscape:version="0.48.4 r9939"
+ sodipodi:docname="krebs_plain.svg">
+ <defs
+ id="defs4378" />
+ <sodipodi:namedview
+ id="base"
+ pagecolor="#ffffff"
+ bordercolor="#666666"
+ borderopacity="1.0"
+ inkscape:pageopacity="0.0"
+ inkscape:pageshadow="2"
+ inkscape:zoom="0.64000001"
+ inkscape:cx="331.91513"
+ inkscape:cy="497.82048"
+ inkscape:document-units="px"
+ inkscape:current-layer="a4396"
+ showgrid="true"
+ showguides="true"
+ width="16px"
+ inkscape:snap-bbox="true"
+ inkscape:snap-global="true"
+ inkscape:object-paths="false"
+ inkscape:bbox-paths="false"
+ inkscape:object-nodes="false"
+ inkscape:snap-grids="true"
+ inkscape:window-width="1090"
+ inkscape:window-height="747"
+ inkscape:window-x="0"
+ inkscape:window-y="19"
+ inkscape:window-maximized="0">
+ <inkscape:grid
+ type="xygrid"
+ id="grid4384"
+ empspacing="5"
+ visible="true"
+ enabled="true"
+ snapvisiblegridlinesonly="true" />
+ </sodipodi:namedview>
+ <metadata
+ id="metadata4381">
+ <rdf:RDF>
+ <cc:Work
+ rdf:about="">
+ <dc:format>image/svg+xml</dc:format>
+ <dc:type
+ rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+ <dc:title></dc:title>
+ </cc:Work>
+ </rdf:RDF>
+ </metadata>
+ <g
+ inkscape:label="Layer 1"
+ inkscape:groupmode="layer"
+ id="layer1"
+ transform="translate(0,-7.011934e-5)">
+ <a
+ id="a4396">
+ <path
+ id="rect4446"
+ style="fill:#e4002b;fill-opacity:1"
+ d="m 92.999805,447.84836 0,139.49994 46.499995,0 0,-139.49994 46.50002,0 0,232.49998 -46.50002,0 0,46.49998 93.00003,0 0,-46.49998 46.50002,0 0,-46.5 46.50001,0 0,-46.50004 -46.50001,0 0,-92.99996 93.00001,0 0,139.5 93.00004,0 0,-46.50004 -46.50001,0 0,-92.99996 93.00003,0 0,139.5 0,46.5 46.5,0 0,46.49998 93.00002,0 0,-46.49998 -46.50001,0 0,-93.00004 -46.50001,0 0,-92.99996 46.50001,0 0,-46.49998 46.50001,0 0,139.49994 46.50006,0 0,-139.49994 46.5,0 0,230.4214 -46.5,2.0925 0,92.99996 -139.50008,0 0,46.49976 93.00002,0 0,93.00042 46.50006,0 0,139.4999 -46.50006,0 0,-139.4999 -45.72973,0 -0.77,-46.49994 -139.50007,0 0,185.99984 -46.50002,0 0,-139.4999 -46.50001,0 0,139.4999 -46.50001,0 0,-185.99984 -139.50004,0 0,46.49994 -46.50002,0 0,139.4999 -46.500011,0 0,-139.4999 46.500011,0 0,-93.00042 93.00004,0 0,-46.49976 -139.500051,0 0,-92.99996 -46.500016,0 0,-92.99998 -46.500013,0 0,-92.99997 46.500013,0 0,-46.49999 z"
+ inkscape:connector-curvature="0"
+ sodipodi:nodetypes="cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc"
+ inkscape:export-filename="/krebs/cholerab/bling/krebs_plain.png"
+ inkscape:export-xdpi="601.88"
+ inkscape:export-ydpi="601.88" />
+ <a
+ id="a4960"
+ transform="matrix(46.500013,0,0,46.49999,0,-47789.471)"
+ inkscape:export-filename="/krebs/cholerab/bling/krebs_plain.png"
+ inkscape:export-xdpi="601.88"
+ inkscape:export-ydpi="601.88">
+ <path
+ transform="translate(0,1036.3622)"
+ style="fill:#e4002b;fill-opacity:1"
+ d="m 5,11 1,0 0,3 -2,0 0,-1 1,0 z"
+ id="rect5009"
+ inkscape:connector-curvature="0"
+ sodipodi:nodetypes="ccccccc" />
+ </a>
+ <a
+ transform="matrix(46.500013,0,0,46.49999,325.5001,-47789.471)"
+ id="a4960-3"
+ inkscape:export-filename="/krebs/cholerab/bling/krebs_plain.png"
+ inkscape:export-xdpi="601.88"
+ inkscape:export-ydpi="601.88">
+ <path
+ transform="translate(0,1036.3622)"
+ style="fill:#e4002b;fill-opacity:1"
+ d="m 4,11 1,0 0,2 1,0 0,1 -2,0 z"
+ id="rect5009-9"
+ inkscape:connector-curvature="0"
+ sodipodi:nodetypes="ccccccc" />
+ </a>
+ </a>
+ </g>
+</svg>
diff --git a/cholerab/bling/krebs_plain_negate.png b/cholerab/bling/krebs_plain_negate.png
new file mode 100644
index 00000000..75e8baa7
--- /dev/null
+++ b/cholerab/bling/krebs_plain_negate.png
Binary files differ
diff --git a/cholerab/bling/krebs_plain_negate_nobg.png b/cholerab/bling/krebs_plain_negate_nobg.png
new file mode 100644
index 00000000..17c8bf80
--- /dev/null
+++ b/cholerab/bling/krebs_plain_negate_nobg.png
Binary files differ
diff --git a/cholerab/bling/krebs_plain_r0ket.gif b/cholerab/bling/krebs_plain_r0ket.gif
new file mode 100644
index 00000000..d246d0c7
--- /dev/null
+++ b/cholerab/bling/krebs_plain_r0ket.gif
Binary files differ
diff --git a/cholerab/bling/nick_krebs.c b/cholerab/bling/nick_krebs.c
new file mode 100644
index 00000000..039b7ed3
--- /dev/null
+++ b/cholerab/bling/nick_krebs.c
@@ -0,0 +1,60 @@
+#include <sysinit.h>
+
+#include "basic/basic.h"
+#include "basic/config.h"
+
+#include "lcd/lcd.h"
+#include "lcd/print.h"
+#include "filesystem/ff.h"
+
+#include "usetable.h"
+
+#define IMAGEFILE "krebs.lcd"
+
+void ram(void) {
+ FIL file;
+ int res;
+ UINT readbytes;
+ uint8_t state = 0;
+ int dx, dy, dwidth;
+
+ uint32_t framems = 100;
+
+ res = f_open(&file, IMAGEFILE, FA_OPEN_EXISTING|FA_READ);
+ if(res)
+ return;
+
+ /* calculate height */
+ setExtFont(GLOBAL(nickfont));
+ dwidth = DoString(0, 0, GLOBAL(nickname));
+ dy = (RESY - getFontHeight());
+ dx = (95 - dwidth)/2;
+
+ getInputWaitRelease();
+ while(!getInputRaw()) {
+ lcdFill(0x55);
+
+ res = f_read(&file, (char *)lcdBuffer, RESX*RESY_B, &readbytes);
+ if (res)
+ return;
+
+ if (readbytes < RESX*RESY_B) {
+ f_lseek(&file, 0);
+ continue;
+ }
+
+ setExtFont(GLOBAL(nickfont));
+ DoString(dx, dy, GLOBAL(nickname));
+
+ lcdDisplay();
+
+ if(framems < 100) {
+ state = delayms_queue_plus(framems, 0);
+ } else {
+ getInputWaitTimeout(framems);
+ }
+ }
+
+ if(state)
+ work_queue();
+}
diff --git a/cholerab/cholerab b/cholerab/cholerab
new file mode 100644
index 00000000..2500ba6b
--- /dev/null
+++ b/cholerab/cholerab
@@ -0,0 +1 @@
+see krebscode/cholerab
diff --git a/cholerab/clive-2 b/cholerab/clive-2
new file mode 100644
index 00000000..1370486e
--- /dev/null
+++ b/cholerab/clive-2
@@ -0,0 +1,45 @@
+
+# Krebs Cholerab Live Instruction Set Mark 2
+
+## Taunt
+
+ taunt : <anything>
+
+
+## Character Punch
+
+ terminal character punch : <row> <column> <utf8-character>
+
+
+# Envelope
+
+Every Krebs Cholerab Live Instruction is issued as an HTTP-JSON-RPC
+request/response as this section demonstrates.
+
+## Request
+
+ POST /namespace HTTP/1.1
+ Host: krebs:1337
+ Content-Type: application/vnd.krebs.clive-2+json
+
+ { "method": "taunt", "params": "lol", "id": 42 }
+
+
+## Positive Response
+
+ HTTP/1.1 200 OK
+
+ { "result": true, "id": 42 }
+
+
+## Negative Response
+Negative responses should reflect the JSON-RPC error as hard as possible.
+
+ HTTP/1.1 400 You are made of stupid!
+
+ { "error": {
+ "code": 1,
+ "message": "You are made of stupid!"
+ },
+ "id": 42
+ }
diff --git a/cholerab/coda b/cholerab/coda
new file mode 100644
index 00000000..b6442631
--- /dev/null
+++ b/cholerab/coda
@@ -0,0 +1,4 @@
+ok
+ coda
+ Ostracoda
+ Basaliom
diff --git a/cholerab/cookbook/LASAGNE b/cholerab/cookbook/LASAGNE
new file mode 100644
index 00000000..fee77c42
--- /dev/null
+++ b/cholerab/cookbook/LASAGNE
@@ -0,0 +1,113 @@
+
+RANDOM_RAGOUT:
+In einem Topf ${OEL} erhitzen, das ${HAUPTESSBARE} darin rundherum anbraten und
+die gehackten ${GEMUESE} und die ${KREUTER} dazugeben. ${WURZEL}scheiben und
+${GEMUESE}mark dazu rühren und mitbraten. Mit den ${GEMUESE} aufgießen,
+${GEWUERZ1} und ${GEWUERZ2}. ${ALKOHOLHALTIGESGETRAENK} nach Belieben beifügen.
+Das Ragout mindestens eine halbe Stunde lang bei geöffnetem Topf einkochen
+lassen.
+
+RANDOM_SAUCE:
+${FETT} in einem kleinen Topf schmelzen und das ${VERDICKUNGSMITTEL1} mit dem
+Schneebesen dazuarbeiten. Die ${FLUESSIGKEIT} nun dazugießen und die Sauce
+glatt rühren. Die Sauce sollte fast eine {halbe-ganze} Stunde lang auf kleiner
+Flamme köcheln, damit sie den ${VERDICKUNGSMITTEL1}geschmack verliert. Mit
+${GEWUERZ1}, ${GEWUERZ2} und ${FRUCHT}saft sowie etwas ${GEWUERZ3} abschmecken.
+
+RANDOM_LASAGNE:
+In einer ge${FETT}eten, feuerfesten Form etwas ${RANDOM_RAGOUT1} verteilen,
+eine Schicht ${TEIGWAREN1} darauf legen, die ${TEIGWAREN1} wieder mit Ragout
+und dann mit einer ${RANDOM_SAUCE}nnschicht bedecken. Anschließend wieder eine
+Schicht ${TEIGWAREN1}, Ragout und ${RANDOM_SAUCE}. So Schicht für Schicht die
+Form füllen. Die letzte Schicht sollte die ${RANDOM_SAUCE} bilden. Dick mit
+geriebenen ${REIBBAREM} bestreuen, ${FETT}flöckchen darauf setzen. Die Lasagne
+bei {150-230}°C im Ofen überbacken, bis die Kruste goldbraun ist.
+
+
+
+
+# Protokoll: Skycock's Hochzeits-Bananen-Gulasch-Lasagne
+Fleisch koennte kleiner geschnitten geweswen sein, haette aber vielleicht
+auch den Bananengeschmack angekommen.
+Alles hat voll den Bananengeschmack angenommen, vermutlich wegen dem vielen
+Butterschmalz.
+Was ist eigentlich mit dem Salat passiert?
+Man kann ueberall Salat reinmachen und es passiert nichts.
+ -- z.B in Schokoladensauce (TODO)
+Nudeln und Zwiebeln werden Eins -- verbinden sich einfach mit dem Fett, wie
+alles andere auch.
+Kaese war superlecker.
+
+h0uz3: Du isst ein Stueck Fleisch und danach hast du den vollen
+Bananengeschmack. Sehr lecker. Voll cool. Witzig.
+
+Fazit:
+pfleidi: alles ist besser mit geschmolzenem Kaese.
+makefu: ich bin fasziniert von der Wirkung und dem Geschmack des Fettes.
+tv: alles stinkt nach Butterschmalz.
+
+Gesamt: "Wenn Computer kochen koennen, dann kann ich das auch!"
+Vertrauen in Computer wieder hergestellt.
+Kochen ist keine Magie sonder Logik und/oder Zufall.
+
+When in doubt, then cook more.
+
+Thanks to the Sky-Cock-Team.
+
+# Sat Jun 4 00:30:33 CEST 2011: Weinbloat2
+Wappentrunk Rotwein - Lieblich
+Verschnitt von Weinen aus verschiedenen Laendern der EG
+tv: Wasser, dann sauer...
+makefu: Gluehwein (MOD Gewuerz) ohne warm
+pfleidi: Story vom Gluehpferd
+
+garnicht mal so gut
+
+hat nur 10%--schmeckt aber nach viel mehr
+schon komisch...
+
+schmeckt minderwertig
+
+unnatuerlich dunkel
+
+falsch dunkel
+
+Schluerfen = Supersauer
+
+pfleidi: den wuerde ich zum KOchen nehmen
+tv: den haben wir gerade zum Kochen genommen
+
+makefu: Der riecht irgendwie nicht richtig--wie aus der EU
+
+pfleidi: da ist komplett Europa drin
+
+kh: garnichtmal so schlecht fyuer ein Tetrapack-Wein
+
+makefu: vielleicht ist das von Skycock zusammengestellt...
+
+tv: Riecht nach Erdbeeren...
+
+Eher sauer als lieblich..
+
+
+All the pelz
+
+Je mehr man ext, desto saurer wird
+
+Grosse Schluecke = fuu
+
+Der Wein wurde von Sauron, dem Skycock gebraut...
+
+## Fnordkorea
+
+Einfach nur Sauer--hat sein Geschmack verloren
+Club-Mate has no effekt
+
+Mehr atmen != besser
+
+tv: Pi
+pfleidi: last+0.5 = 3
+makefu: 3.6
+kh: 5.23
+
+Eignet sich zum Fliegen toeten
diff --git a/cholerab/cookbook/reducer.sh b/cholerab/cookbook/reducer.sh
new file mode 100755
index 00000000..648047fb
--- /dev/null
+++ b/cholerab/cookbook/reducer.sh
@@ -0,0 +1,7 @@
+#! /bin/sh
+# TODO tolower
+tr '[:upper:]' '[:lower:]' |
+sed '
+ s/\<dosen\?//g
+ s/mark//g
+'
diff --git a/cholerab/dn42 b/cholerab/dn42
new file mode 100644
index 00000000..8a983e7d
--- /dev/null
+++ b/cholerab/dn42
@@ -0,0 +1,12 @@
+# Routing to dn42
+
+all nodes which announce dn42 via //retiolum/hosts/ file by having the line
+
+ # slowpoke has internal ip 10.243.232.121
+ #
+ Subnet = 172.22.0.0/15
+
+in the configuration are potential dn42 gateways.
+tell your host to use this node via
+
+ route add -net 172.22.0.0/15 dev retiolum
diff --git a/cholerab/filebitch/stuff_people_want b/cholerab/filebitch/stuff_people_want
new file mode 100644
index 00000000..993fc203
--- /dev/null
+++ b/cholerab/filebitch/stuff_people_want
@@ -0,0 +1,6 @@
+- All Mame Games
+- All SNES Roms
+- All GBA Roms
+- flac sorted by genre?
+- leaked DBs
+- Huge Wordlists
diff --git a/cholerab/gold/partnernet b/cholerab/gold/partnernet
new file mode 100644
index 00000000..d3860c2e
--- /dev/null
+++ b/cholerab/gold/partnernet
@@ -0,0 +1,5 @@
+# Affiliate Browser Plugins
+
+## Amazon
+### Affiliatefox plugin for firefox
+http://affiliatefox.net/install/install.php?hash=da08f290f4cfaadca7f14a8415230469
diff --git a/cholerab/install_stories/debian_squeeze_minimal b/cholerab/install_stories/debian_squeeze_minimal
new file mode 100644
index 00000000..0d5e64b2
--- /dev/null
+++ b/cholerab/install_stories/debian_squeeze_minimal
@@ -0,0 +1,23 @@
+apt-get update
+apt-get upgrade
+apt-get install curl git-core vim make
+curl https://raw.github.com/krebscode/painload/master/util/auto/krebs
+
+KREBSDIR=${1-/krebs}
+[ ! -e $KREBSDIR ] && git clone https://github.com/krebscode/painload ${KREBSDIR}|| printf "painload already deployed\n"
+cp /krebs/infest/skel/etc/profile /etc/profile
+# not copying rc.local
+cp /krebs/infest/skel/home /root
+# not copying .ssh
+cp /krebs/infest/skel/etc/motd.tail /etc/motd.tail
+cp /krebs/infest/skel/etc/motd.tail /etc/motd
+
+# retiolum
+apt-get install python
+# fix matcher script
+# fix makefile
+
+# fix fuer vhosts die tun haben aber noch nicht eingerichtet
+mkdir /dev/net
+mknod /dev/net/tun c 10 200
+mknod /dev/tap0 c 36 16
diff --git a/cholerab/kasten/doku b/cholerab/kasten/doku
new file mode 100644
index 00000000..8246c80f
--- /dev/null
+++ b/cholerab/kasten/doku
@@ -0,0 +1,7 @@
+[23:08:57] makefu> tv\d: wir haben ein neuen status in krebs. die Cancer Knights. Sie arbeiten fuer uns und fuehlen sich besser weil sie ueber den crab people sind. Sie stellen hardware und
+ arbeitskraft bereit, haben aber keine rechte
+[23:09:49] momorient> die cancer knights punchen dann auch für uns wenn wir zu faul sind oder?
+[23:10:22] makefu> infin wird der erste cancer knight
+[23:11:46] makefu> jo, solange das noch nicht implementiert ist haben wir cancer knights
+[23:12:26] makefu> sobald 3 cancer knights zusammen sind koennen sie krebsminister werden und dann zum punchen aufgefordert werden
+
diff --git a/cholerab/knut/Makefile b/cholerab/knut/Makefile
new file mode 100644
index 00000000..bb2aa905
--- /dev/null
+++ b/cholerab/knut/Makefile
@@ -0,0 +1,22 @@
+
+
+.PHONY: all install
+
+all:
+ echo 'Error 1: You are made of stupid!' >&2
+ exit 23
+
+install: \
+ ../../bin/cnot \
+ ../../bin/clive-knut \
+ ../../bin/ttycnser-login
+ ../../punani/bin/punani -Ei python python-notify dbus-python
+
+../../bin/cnot: clients/cnot/index
+ ln -vsnf ../cholerab/knut/$< $@
+
+../../bin/clive-knut: index.js
+ ln -vsnf ../cholerab/knut/$< $@
+
+../../bin/ttycnser-login: plugs/ttycnser/bin/login
+ ln -vsnf ../cholerab/knut/$< $@
diff --git a/cholerab/knut/README b/cholerab/knut/README
new file mode 100644
index 00000000..51b90307
--- /dev/null
+++ b/cholerab/knut/README
@@ -0,0 +1,2 @@
+KNUT - Krebs Notification Utility Toolchain
+===========================================
diff --git a/cholerab/knut/clients/cnot/index b/cholerab/knut/clients/cnot/index
new file mode 100755
index 00000000..fcbef73e
--- /dev/null
+++ b/cholerab/knut/clients/cnot/index
@@ -0,0 +1,22 @@
+#! /bin/sh
+#
+# cnot - cholerab live command line notification client, bitch!
+#
+# usage: [verbose=yes] cnot hostname [message...]
+#
+set -euf
+
+host="$1"; shift
+port=42101
+
+params="$*"
+
+flags=${curl_flags--fsS}
+
+if test "${verbose-no}" != no; then
+ flags="${flags+$flags }-v"
+fi
+
+exec curl $flags -X PUT --data-binary @- "http://$host:$port" <<EOF
+{"method":"clive","params":"$params","id":null}
+EOF
diff --git a/cholerab/knut/clients/pidgin_speak/speak.py b/cholerab/knut/clients/pidgin_speak/speak.py
new file mode 100755
index 00000000..aeaa417f
--- /dev/null
+++ b/cholerab/knut/clients/pidgin_speak/speak.py
@@ -0,0 +1,31 @@
+#!/usr/bin/python
+import string
+CNOT="../cnot/index %s %s"
+host="pornocauster"
+def speakOwn(account, receiver,message):
+ speak(account,receiver,message,"","");
+def speak(account, sender, message, conversation, flags):
+ bus = dbus.SessionBus()
+ obj = bus.get_object("im.pidgin.purple.PurpleService", "/im/pidgin/purple/PurpleObject")
+ purple = dbus.Interface(obj, "im.pidgin.purple.PurpleInterface")
+ import subprocess
+ message = message.replace("'",'"')
+ print message
+ #cmd = "espeak -v de '%s'" % message
+ cmd = CNOT % (host,message)
+ subprocess.call(cmd,shell=True)
+import dbus, gobject
+
+from dbus.mainloop.glib import DBusGMainLoop
+dbus.mainloop.glib.DBusGMainLoop(set_as_default=True)
+bus = dbus.SessionBus()
+
+bus.add_signal_receiver(speak,
+ dbus_interface="im.pidgin.purple.PurpleInterface",
+ signal_name="ReceivedImMsg")
+
+bus.add_signal_receiver(speakOwn,
+ dbus_interface="im.pidgin.purple.PurpleInterface",
+ signal_name="SentImMsg")
+loop = gobject.MainLoop()
+loop.run()
diff --git a/cholerab/knut/index.js b/cholerab/knut/index.js
new file mode 100755
index 00000000..b8951f1d
--- /dev/null
+++ b/cholerab/knut/index.js
@@ -0,0 +1,73 @@
+#! /usr/bin/env node
+
+var host = process.env.host || '127.0.0.1';
+var port = Number(process.env.port) || 42101;
+
+var pipe = '/tmp/krebscode.painload.cholerab.ttycnser.' + process.env.LOGNAME;
+
+var fs = require('fs');
+var http = require('http');
+var slurp = require('./src/io/slurp');
+var spawn = require('child_process').spawn;
+
+var plugs = process.argv.slice(2);
+
+if (plugs.length === 0) {
+ console.error('Error 1: You are made of stupid!'
+ + '\nPro-Tip: '
+ + require('path').basename(process.argv[1]) + ' PLUG'
+ + ' # PLUG ∈ {'
+ + require('fs').readdirSync(__dirname + '/plugs').join(',')
+ + '}^n, n ≥ 1');
+ process.exit(23);
+};
+
+http.createServer(function (req, res) {
+ return slurp(req, function (data) {
+ try {
+ var message = JSON.parse(data);
+ } catch (exn) {
+ console.error(exn.stack);
+ };
+ if (message) {
+ plugs.forEach(function (plug) {
+
+ var env = JSON.parse(JSON.stringify(process.env));
+ Object.keys(message).forEach(function (key) {
+ env[key] = message[key];
+ });
+
+ var child = spawn(__dirname + '/plugs/' + plug + '/index', [], {
+ env: env
+ });
+
+ child.stdout.on('data', function (data) {
+ console.log(plug, 'stdout:', data.toString());
+ });
+
+ child.stderr.on('data', function (data) {
+ console.log(plug, 'stderr:', data.toString());
+ });
+
+ child.on('exit', function (code) {
+ console.log(plug, 'exit:', code);
+ if (code === 0) {
+ res.writeHead(200, { 'Content-Length': 0 });
+ res.end();
+ } else {
+ res.writeHead(500, { 'Content-Length': 0 });
+ res.end();
+ };
+ });
+
+ });
+ } else {
+ res.writeHead(400, 'You are made of stupid!', {
+ 'Content-Length': 0
+ });
+ res.end();
+ };
+ });
+}).listen(port, host, function () {
+ console.log('Serving HTTP on', host, 'port', port);
+});
diff --git a/cholerab/knut/plugs/pynot/index b/cholerab/knut/plugs/pynot/index
new file mode 100755
index 00000000..04e9c90c
--- /dev/null
+++ b/cholerab/knut/plugs/pynot/index
@@ -0,0 +1,17 @@
+#!/usr/bin/python
+
+import pynotify,os,sys
+
+imageURI = os.path.abspath(os.path.normpath(os.path.dirname(sys.argv[0]) + '/../../../bling/krebs_plain_negate_nobg.png'))
+try:
+ TITLE=os.environ.get('method','clive') + ':' + os.environ.get('id','-1')
+ MESSAGE=os.environ.get('params','No Message')
+except:
+ print("Error 1: You are made of stupid!")
+ exit(23)
+
+pynotify.init("Notif App",)
+print imageURI
+n = pynotify.Notification(TITLE, MESSAGE,imageURI)
+n.set_timeout(20000)
+n.show()
diff --git a/cholerab/knut/plugs/ttycnser/bin/login b/cholerab/knut/plugs/ttycnser/bin/login
new file mode 100755
index 00000000..bf88d6f9
--- /dev/null
+++ b/cholerab/knut/plugs/ttycnser/bin/login
@@ -0,0 +1,4 @@
+#! /bin/sh
+set -euf
+pipe="/tmp/krebscode.painload.cholerab.ttycnser.${LOGNAME}"
+ln -snf "`tty`" "$pipe"
diff --git a/cholerab/knut/plugs/ttycnser/bin/write b/cholerab/knut/plugs/ttycnser/bin/write
new file mode 100755
index 00000000..f358407a
--- /dev/null
+++ b/cholerab/knut/plugs/ttycnser/bin/write
@@ -0,0 +1,4 @@
+#! /bin/sh
+set -euf
+pipe="/tmp/krebscode.painload.cholerab.ttycnser.${LOGNAME}"
+echo -n "7>>>> ${params}8" > "${pipe}"
diff --git a/cholerab/knut/plugs/ttycnser/index b/cholerab/knut/plugs/ttycnser/index
new file mode 120000
index 00000000..2d949688
--- /dev/null
+++ b/cholerab/knut/plugs/ttycnser/index
@@ -0,0 +1 @@
+bin/write \ No newline at end of file
diff --git a/cholerab/knut/src/io/slurp.js b/cholerab/knut/src/io/slurp.js
new file mode 100644
index 00000000..70319743
--- /dev/null
+++ b/cholerab/knut/src/io/slurp.js
@@ -0,0 +1,38 @@
+module.exports = (function () {
+
+ function join_buffers (buffers, length) {
+ var buffer = new Buffer(length);
+ var targetStart = 0;
+ buffers.forEach(function (x) {
+ x.copy(buffer, targetStart);
+ targetStart += x.length;
+ });
+ return buffer;
+ };
+
+ function finish_it (req, buffers, length, callback) {
+ req.content = join_buffers(buffers, length);
+ return callback(req.content);
+ };
+
+ function nop () {};
+
+ return function (req, callback) {
+ if (req.hasOwnProperty('content')) {
+ return callback(req.content);
+ };
+ var content = [];
+ var length = 0;
+ var end_handler = finish_it;
+ req.on('data', function (data) {
+ content.push(data);
+ length += data.length;
+ });
+ [ 'end', 'close' ].forEach(function (event) {
+ req.on(event, function () {
+ finish_it(req, content, length, callback);
+ end_handler = nop;
+ });
+ });
+ };
+})();
diff --git a/cholerab/ledger-spec.markdown b/cholerab/ledger-spec.markdown
new file mode 100644
index 00000000..812bce33
--- /dev/null
+++ b/cholerab/ledger-spec.markdown
@@ -0,0 +1,17 @@
+# Ledger Specification
+
+## Transaction Record
+
+### External Representation
+
+ DATE DESTINATION-ACCOUNT SOURCE-ACCOUNT AMOUNT UNIT [COMMENT...]
+
+ where
+ - `DATE` has the form `YYYY-MM-DD`
+ - `AMOUNT` is a non-negative, decimal number
+
+### Example
+
+ 2013-01-01 krebs-ml amazon 30 EUR C0DE-AAAA-BBBB-CCCC
+ 2013-02-02 momo krebs-ml 50 EUR C0DE-AAAA-BBBB-CCCC
+ 2013-02-02 mindfactory momo 80 EUR
diff --git a/cholerab/manifest b/cholerab/manifest
new file mode 100644
index 00000000..1e7554b9
--- /dev/null
+++ b/cholerab/manifest
@@ -0,0 +1,9 @@
+# KREBS MANIFEST
+1. Everything is compromised
+2. Enterprise-patterns are FTW
+3. When in doubt, do the right thing
+
+# Purpose of Krebs
+1. Survive
+2. Spread
+3. Grow
diff --git a/cholerab/news/Candidate b/cholerab/news/Candidate
new file mode 100644
index 00000000..e5b3bd50
--- /dev/null
+++ b/cholerab/news/Candidate
@@ -0,0 +1,27 @@
+# hosts for deletion
+zerg
+rtjure
+miefda901
+krebsnode
+urkrebs
+pa_sharepoing
+krebsbob
+chinaman
+temperator
+miefdahome
+krebsbitch
+armageddon421_de
+
+# euer http pub und priv
+
+euer.krebsco.de bzw. euer.retiolum bietet ein HTTP interface an. Vorher gab es
+keinen unterschied zwischen public und private interface. nun bietet euer auf
+dem public interface eine "zensierte" version des retiolum graphen und im
+private interface den graphen inkl aller informationen welche verfuegbar sind
+an.
+
+# darkstats fuer euer
+
+auf euer laeuft auf port 8080 ein darkstat daemon, welcher informationen ueber
+den server geroutet werden. Das interface ist nur innerhalb des darknets
+verfuegbar.
diff --git a/cholerab/news/Issue#0 b/cholerab/news/Issue#0
new file mode 100644
index 00000000..532c5c3b
--- /dev/null
+++ b/cholerab/news/Issue#0
@@ -0,0 +1,32 @@
+Krebs News 2011-08-24
+======================
+0. urkrebs hat ein usb-relais
+-----------------------
+
+in /krebs/claws ist der code um das relais anzusteuern, "make install"
+sollte das richtige tun, danach steht ein tool names "rcontrol" im
+/krebs/bin ordner zur verfuegung.
+
+1. neuer supernode
+------------------
+seit heut eingerichtet ist ein neuer Supernode fuers Tinc : EUcancER
+
+auch das updaten wurde vereinfacht!
+cd /krebs
+git pull
+make -C retiolum update
+
+und danach in /etc/tinc/retiolum/tinc.conf:
+ConnectTo = EUcancER
+
+die kisten von EUserv sind wohl serioes und recht stable
+
+fuer interessenten:
+http://hoohead.hoohost.org/2011/08/kostenloser-vserver/
+
+ich hab uebrigens die kiste schon seit 2 jahren (und seit dem total
+vergessen), ist genauso eine beta kiste.
+
+Gruesse,
+
+Felix
diff --git a/cholerab/news/Issue#1 b/cholerab/news/Issue#1
new file mode 100644
index 00000000..e5fd78df
--- /dev/null
+++ b/cholerab/news/Issue#1
@@ -0,0 +1,62 @@
+# Krebs News Issue #1 (2011-08-24)
+## 0. krebsco.de & ovh soapi
+
+Krebs hat jetzt ein offizielles Zuhause im Internet. Das Ministerium
+dankt KM momo, dass er die Domain geclaimt und das erste Jahr gesponsort
+hat!
+
+Die Zone kann momentan wie in [`//ovh/README`][0.1] beschrieben bearbeitet
+werden. Wenn ihr das nicht koennt oder wollt, aber dennoch eine Maschine unter
+`krebsco.de` erreichbar haben moechtet, dann schickt eine Bewerbung an uns und
+es wird, wie immer, das Richtige passieren.
+
+Niob: Sehr relevante und awesome [`Graphen`][0.2].
+
+[0.1]: https://github.com/krebscode/painload/tree/master/ovh
+[0.2]: http://euer.krebsco.de/graphs
+
+## 1. SC ist das neue BTC
+
+Zumindest sind chinaman und bergwerk umgestiegen und bringen nun ueber
+100% mehr Gewinn ein, wenn unsere Prognosen stimmen sollten...`^_-`
+
+Die passenden Ticker und Tracer sind unter [`//gold/scex`][1.1] zu
+finden:
+
+ $ //gold/scex/ticker_text.sh # bzw.
+ $ node //gold/scex/tracer
+
+Installer kommen ASAP oder auch nicht.`^_^`
+
+[1.1]: https://github.com/krebscode/painload/tree/master/gold/scex
+
+## 2. Knights
+
+Eine neue Kaste ist entstanden: die Cancer Knights. Sie arbeiten fuer
+uns und fuehlen sich besser, weil sie ueber den Crab People stehen. Sie
+stellen Ressourcen wie Hardware und Arbeitskraft bereit, haben keine
+Rechte. Sobald drei Cancer Knights zusammen kommen haben sie die Chance
+Krebsminister werden. Bevor dies geschieht muessen sie geschossen zu drei
+Krebsministern in der Realen Welt gehen und werden dann in einem noch zu
+definierenden Ritual zu Krebsministern ernannt. Ab dann koennen sie zum
+punchen aufgefordern werden bzw.automatisch punchen bzw. autopunchen.
+
+Infin aus Hannover wird der erste Cancer Knight. Er hat die
+Krebsanimation sowie den 3D-Krebs auf dem CCCAMP11 gemacht.
+Danke Infin, du verdienst den Titel, trage ihn mit Wuerde!
+
+## 3. Thesauron
+
+Wie allgemein gueltig unterliegen alle Sprachen dem staetigen Wandel.
+Um spaeter zu wissen woher wir kamen und die Linguisten unter uns zu
+befriedigen wurde der Grundstein zur Dokumentation der Relevanten
+Sprache, ihrer Entwicklung, etc. gelegt.
+
+Die ersten Schritte sind in [`//cholerab/thesauron`][3.1] zu finden und
+auch _du_ fuehlst dich angesprochen diese zu erweitern! Entweder direkt
+via GitHub's fork & pull request, durch eine formlose Mail an [die Krebs
+Mailingliste][3.2] oder auf einem der anderen, zahllosen Wege, auf dem
+ihr uns errreichen koennt.
+
+[3.1]: https://github.com/krebscode/painload/tree/master/gold/scex
+[3.2]: mailto:krebs@syntax-fehler.de
diff --git a/cholerab/news/Issue#2 b/cholerab/news/Issue#2
new file mode 100644
index 00000000..4b671e57
--- /dev/null
+++ b/cholerab/news/Issue#2
@@ -0,0 +1,198 @@
+# Krebs News Issue #3 (2011-12-11)
+
+## -1. Ante Scriptum
+
+Wer noch keinen Krebs hat, kann sich ganz einfach mit [Git][-1.1] ein Klon
+von [GitHub][-1.0] holen:
+
+ git clone https://github.com/krebscode/painload krebs
+
+Das so oder ähnlich erzeugte Verzeichnis wird im Folgenden `//` genannt.
+Das Ministerium empfiehlt die Verwendung von `/krebs`, aber jeder andere
+Ort ist fast genauso gut.
+
+[-1.0]: https://github.com
+[-1.1]: http://git-scm.com
+
+## Steürung der Lichtverschmutzung
+
+Der Urkrebs steürt schon immer das Licht. Dazu muss man sich lediglich auf
+[`//noise`][0.2]`@krebs.shack` einwählen und die relevanten Kommandos
+absetzen.
+
+Eine Einwahl erfolgt z.B. mittels `netcat` wie folgt:
+
+ rlwrap nc krebs.shack telnet rlwrap ncat krebs.shack 23 rlwrap netcat
+ krebs.shack 23 telnet krebs.shack
+
+Die relevanten Kommando sehen in etwa so aus:
+
+ /licht SPEC ZUSTAND
+
+dabei ist `ZUSTAND` eine Ganzzahl im Bereich `[0,1]` und die möglichen
+Werte von `SPEC` können der vorzüglich belesenen Qülle von
+[`//god/licht`][0.1] entnommen oder licht mit dem kommando `help`
+aufgerufen werden:
+
+ /licht help
+
+[0.1]: https://github.com/krebscode/painload/tree/master/god/licht
+[0.2]: https://github.com/krebscode/painload/tree/master/noise
+
+## Tinc Retiolum updates
+
+Das [`//retiolum][1.1]` Darknet Submodul unter Verwebdung von tinc als
+vermaschtes VPN ist ein integraler Bestandteil der Krebs Infrastruktur.
+Umso wichtiger ist es, dass die installation überall immer genau das
+richtige macht.
+
+Am 26.08.2011 wurde sich dem Retiolum angenommen um es sauber auf OSX (und
+ggf. weiteren Unixartigen OSen) zum laufen zu bringen. Ziel ist es die
+Installation auf ein einfaches
+
+ make -C //retiolum install
+
+zu beschränken.
+
+Die Host-Dateien, welche von tinc verwendet werden koennen mit
+
+ make -C //retiolum update
+
+geupdatet werden. Alle update skripte sind auf das neü Verfahren umgestellt
+
+In diesem Kontext sind unter anderem Skript für das errechnen der richtigen
+Tinc-Konfigurationsordners `[1.2]` entstanden. Es wird hierbei die
+Architektur des Wirtes gefunden. Eine ähnliche Funktionalität kann nun für
+verschiedenste weitere Module welche Plattformunabhängigkeit gewährleisten
+sollen verwendet werden.
+
+[1.1]: https://github.com/krebscode/painload/tree/master/retiolum
+[1.2]: https://github.com/krebscode/painload/tree/master/retiolum/bin/get-tinc-dir
+
+
+## Todesmeldung Urkrebs
+
+Es ist zu vermerken, dass das Gedächnis von Urkrebs zusammen mit der
+CF-Disk gestorben ist. Glücklicher Weise wurde zuvor eine `[dd][2.1]`-Kopie
+auf die CF-Karte von `[Fuerkrebs][2.2]` (Krebs auf der Brücke/ den
+Optionsräumen) erstellt und diese wurde kurzer Hand für die Wiederbelebung
+des Urkrebses verwendet.
+
+Dies hat allerdings auch etwas an ursprünglicher Funktionalität
+(`[Oncology][2.3]`) zerstoert. Die gerette Maschine in der Lounge meldet
+sich nun offiziell als `[Fuerkrebs][2.4]` im Retiolum an.
+
+[2.1]: man dd
+[2.2]: http://shackspace.de/wiki/doku.php?id=project:krebs#fürkrebs
+[2.3]: https://github.com/krebscode/painload/tree/master/oncology
+[2.4]: fuerkrebs.retiolum
+
+
+## Census auf Urkrebs
+
+`[Census][3.1]` ist ein Projekt in painload welches dem lokal ansässigen Krebs
+die Möglichkeit bietet noch gezielter Leute im shack zu beleidigen. Primär
+geht es darum, dass Krebs die Teilnehmer seines lokalen Netzwerkes
+identifiziert und loggt. Benutzung:
+
+ //census/arping_users.py
+
+Census kann fuer maximale informationgewinnung in entsprechend gewählten
+Abständen mittels `[cron][3.2]` geplant werden.
+
+Um den Eintrag so leicht wie Möglich Löschen oder Updaten zu können wird
+das //krebs/utils Werkzeug `[magic][3.3]` verwendet. Alle weiteren
+Informationen koennen aus dem Quelltext von Census entnommen werden.
+Census wurde am 2011-11-01 auf Urkrebs in den erweiterten Probebetrieb
+aufgenommen.
+
+[3.1]: https://github.com/krebscode/painload/tree/master/census
+[3.2]: man cron
+[3.3]: https://github.com/krebscode/painload/tree/master/utils/bin/magic
+
+## magic
+
+Magic bietet das Feature gesondert Zeilen in Konfigurationsdateien neu
+einzutragen und diesen Block gesondert zu verwalten. Mehrere magic bloecke
+in einer Datei sind möglich. Verwendung:
+
+ echo "/usr/bin/lcd4linux" | magic create lcd4linux /etc/rc.local
+
+Folgende Zeilen werden in der angegebenen Datei erzeugt:
+
+ $ tail -n 3 /etc/rc.local
+ # begin krebs magic <lcd4linux>
+ /usr/bin/lcd4linux
+ # end krebs magic <lcd4linux>
+
+Magic bietet ungeahnte Möglichkeiten Konfigurationsdateien zu Verkrebsen
+ohne auf das Aufräumen verzichten zu müssen. Für weitere Hilfe bietet das
+Tool eine Hilfefunktion:
+
+ //util/bin/magic help
+
+
+## Oncology auf dem (neuen) Urkrebs
+
+Nachdem Gedächnistausch von Fürkrebs und Urkrebs hat es ja wie beschrieben
+die Funktionalität Oncology (Statusbildschirm an USB) dahingerafft. Am
+2011-11-07 wurde diese wieder in den Funktionalbetrieb aufgenommen.
+
+
+## Krebs Darknet Retiolum Prefix(KD;RP) Graphen-Map in Version 23
+
+Der `[Graphengenerator für KD;RP][5.1]` ist überarbeitet worden und bietet
+seit dem 2011-10-23 die Möglichkeit Statistiken zu dem Netzwerk und
+einzelnen Nodes auszugeben. Hervorzuheben ist hierbei die Funktionalität
+die Availability von Nodes zu beschreiben, also wie wahrscheinlich es ist
+einen Knoten X zu einem Zeitpunkt Y im Darknet anzutreffen. Zusätzlich
+wurde die Stats-Generator engine überarbeitet und läuft nun besonders bei
+grossen /var/log/syslog files `[schneller][5.2]`.
+
+[5.1]: https://github.com/krebscode/painload/tree/master/retiolum/scripts/adv_graphgen
+[5.2]: https://github.com/krebscode/painload/commit/822c43a763aa61c1accce3768090d066048faaff
+
+## Ticket-Fetcher für den 28C2
+
+Da die 28C3 Presales Tickets rar sind und Leute anfangen das Einkaufen zu
+automatisieren kann nicht auf das Glück des Tüchtigen gehofft werden,
+sondern auch für den shack wird automatisiert. Herausgekommen ist ein
+Skript[6.1] (basierend auf einem anderen `[Skript][6.2] welches aber zu hart
+gesuckt hat) welches sich auf der Presales Seite einloggt und dort den
+"Confirm Order" Button drückt. Das Ganze wird in eine ELoop gepackt und den
+Tickets steht nun nichts mehr im Wege. Gebaut wurde das Skript in der nacht
+am 14.November (T-10H) bis zur nächsten Presales Runde für den 28C3.
+
+UPDATE 14.11.2011 16:30: Die Tickets sind bestellt, das Ziel ist erreicht.
+Allerdings nicht von einem der deployten Skripten gefetcht, sondern durch
+die manuelle `[Klick-Kraft][6.3]`. Für das nächste Jahr muss das skript also noch
+viel aggressiver fetchen und die bandbreite mit HTTP reqüsts füllen.
+
+[6.1] https://github.com/krebscode/painload/blob/master/too_old/mechanize_tickets.py
+[6.2] http://pastebin.com/SRwtNwKS
+[6.3] http://f.cl.ly/items/213N2l0c1p3d24332l0X/ragecomic.png
+
+## Das Krebs Asset Web
+
+Als zweitältestes Projekt und Untergruppierung des Shacks hat Krebs einiges
+an physikalischen Assets angesammelt. Diese werden von den KMs bzw. Krebs
+selbst verwaltet. Ziel des Krebs Asset Webs ist es die vorhandenen Assets
+zu dokumentieren und Metadaten über Besitzer, Ort oder Anzahl aufzunehmen.
+Dafür wurden im ersten Schritt Usecases definiert und
+`[niedergeschrieben][7.1]`.
+
+Daraus entstanden ist `[ass][7.2]`, ein minimalistisches Asset-Management Tool.
+Als persistentes Backend wird eine Append-Only Datei verwendet, Einträge
+werden atomar in ein Git-Repository committed. `[truth2json][7.3]` erzeugt aus
+dem aktuellen Datenbestand des asset-web eine JSON Datenstruktur. Diese
+kann dann für weitergehende Informationsgewinnung verwendet werden. Die
+`[README][7.4]` Datei erklärt die Verwendung der implementierten Tools, sowie
+die dahinter stehenden Konzepte.
+
+
+[7.1] https://github.com/krebscode/painload/blob/master/cholerab/assets/usecases.txt
+[7.2] https://github.com/krebscode/painload/blob/master/assets/bin/ass
+[7.3] https://github.com/krebscode/painload/blob/master/assets/bin/truth2json
+[7.4] https://github.com/krebscode/painload/blob/master/assets/README
+
+EOF
diff --git a/cholerab/painkiller b/cholerab/painkiller
new file mode 100644
index 00000000..df0e703b
--- /dev/null
+++ b/cholerab/painkiller
@@ -0,0 +1,10 @@
+# Project Painkiller
+
+Abstract:
+ - awesome project in painload
+ ====>
+ - Proper documentation
+ - Proper repository
+ - automatically maintained, because the awesome happens in //
+ - by git hooks or something or else it will rot away
+ - Proper homepage
diff --git a/cholerab/pleni/2011-06-04 b/cholerab/pleni/2011-06-04
new file mode 100644
index 00000000..1a45a5af
--- /dev/null
+++ b/cholerab/pleni/2011-06-04
@@ -0,0 +1,30 @@
+2011-06-04 Plenum MoC
+
+# File Sharing
+
+Auto-Torrenter wird von pfleidi und Lassulus gemacht.
+AP1: Pfleidi
+
+
+# Camp
+In finowfurt 10-14. August 2011
+tv kann ggf net mitkommen
+
+## Siebdruck T-shirt
+AP2: Pfleidi Nachfragen wegen T-Shirts fuer Camp
+Gute Rote T-Shirts mit schwarzem Logo
+42::/16
+
+## Banner
+aehnlich Banner vom Shack
+AP3: tv sucht banner, wenn nicht, dann wird gesprayed
+
+## 42::/16
+AP5: Miefda kuemmert sich um die RIPE, dass wir /16 benutzen
+
+## Zelte in Zelten (... not)
+Mannschafszelt
+Unabhaengig von Shack-village
+Tische organisieren
+
+krebs-schrein
diff --git a/cholerab/pleni/camplist b/cholerab/pleni/camplist
new file mode 100644
index 00000000..d5ba3cca
--- /dev/null
+++ b/cholerab/pleni/camplist
@@ -0,0 +1,36 @@
+Kochfeld
+Topf 2x3l
+Pfanne
+Teller
+Gläser
+Besteck
+Wasschüsseln Wasserbeutel
+6x Fertiggericht Spaghetti
+Chilli
+Fryhstyck:
+ Brötchen
+ Brot
+ Schinken (geraucht)
+ Salami
+ H-Milch
+ Müsli
+ Butter
+ Senf
+ Ketchup
+ Gurken
+ Marmelade
+ $Haselnusscreme
+
+Linsensuppe + Spätzle + Saiten
+Ghoularschsuppe
+Freitagsgemöse:
+ Zwiebeln
+ Knoblauch
+ Plize (pfifferlinge)
+ Paprika
+ Pfeffer
+ Salz
+ Gemöse
+
+
+
diff --git a/cholerab/pleni/feldplenum_20110811 b/cholerab/pleni/feldplenum_20110811
new file mode 100644
index 00000000..a3208a83
--- /dev/null
+++ b/cholerab/pleni/feldplenum_20110811
@@ -0,0 +1,115 @@
+Feldplenum CCCamp
+================
+===== Beginn: 2011-08-11T15:20:00 =====
+
+0) Meet And Greet
+--------
+
+tv: hat alle seine computer kaputt gehen sehen in einer woche, schraubt grad an seinem laptop
+kh-2030: Hat seinen server lauffaehig gemacht
+lassulus: Hat seine r0ket zerstoert, kann sie nicht mehr richtig flashen
+sascha: hat die voyager gesteuert, wuerde gerne mal opium konsumieren (aber gibt es natuerlich nicht auf dem camp)
+pfleidi: hat gelernt auf der autobahn zu fahren, ist dabei seine r0ket kaputt zu machen, hat geschlafen.
+Felix: ist seit dem fuehrerschein wieder das erste mal auto gefahren, spielt mit mesh networking von r0ket rum.
+MrPi: Hat wasser umgeworfen und geburtstag gefeiert, zieht sich alle Server
+Ronny: Nach berlin gefahren, seine nichte erschreckt
+Ulrich: Ich war auf n camp. Strom gefixxt >9000 mal in regen und sturm
+Phillip: Ist neu dabei! Hat geschafft seine rakete kaputt zu machen.
+Moritz: Camp gefahren, hat versucht mit r0ket kram gemacht mit licht und so, Hat felix ueberredet die voyager zu fliegen
+Olli: Moechte seinen Mitgliedsantrag unterschreiben. *Applaus*.
+Marco: Campen, hatte urlaub in bremen.
+Momo: hat sich gestern mit dan kaminsky besoffen, ist bei CCC filmcrew/orga.
+
+Wanderpokal
+-----------
+auf dem Krebs drauf
+
+Lessons learned
+--------------
+
+tv: wasser soll nicht im zelt unbeaufsichtigt gelassen werden
+ voyager ist super angenehm zu reisen
+ auf github ist kein verlass - dezentralisieren!
+ jeder kann ein plenum machen
+ beepen ist cool - mehr beepen
+ Enterprise Rebuild belebt computer wieder
+ Niederlaender sind die Masters of Camping
+ cherry coke n ganzen kasten geht garnicht pfleidi: apfelsaft ist sozial besser akzeptiert
+ plastikweinglaeser sind super gut - mehr plastikglaeser
+ Passwoerter muessen auch nach der aenderung gebackupt werden
+ Mailfilter sollten nicht nur den spam in seperate mails filtern sondern auch die echten mails einsortieren
+pfleidi: Camptag nummer 1 - Zelt wird zur opiatenhoehle
+ Ulrich ist der master elektriker
+ Fucking riesige volvik wasserkanister haben keinen abschraubbaren verschluss
+ im bundeswehrzelt ist alles schwarz rot.
+ dixiklo benutzen im licht einer r0ket gestaltet sich als schwierig
+ haare toeten vor camp = maximaler gewinn
+kh-2030: mehr beschluesse fuer den gewinn
+ stuttgart braucht mehr hackerspaces
+ lessons learned ist fuer den gewinn
+lassulus: Gleiches Camp naechstes jahr in Stuttgart, tv: im park einfach campen weil da sind eh grad.
+sascha: You cannot bring enough stuff to the camp
+felix: grosses armeezelt haelt den staerksten wind und regen aus -> gewinn
+
+Agenda
+------
+===== 15:45:00 Essenspause ======
+===== 16:00:00 Pause Beendet ======
+===== 16:06:00 JOIN Ronny,Ulrich,MrPI, =====
+===== 16:17:00 Pause um T-Shirts zu kaufen ====
+===== 17:55:00 Pause Beendet====
+
+1) Server-Lan Party (pfleidi)
+pfleidi: erster punkt sharing is caring, zweiter punkt social backup
+ jeder bringt seinen fileserver mit und stellt daten ueber $protokolle zur verfuegung
+ gewonnen mit meisten ausgehenden traffic
+ gewinner ist "sharing koenig" (Scheren-Koenig) - Preis tbd
+ Kuemmerer: Pfleidi
+ Infrasturktur: switches,netzwerkkabel
+ Datum: tbd - ein wochenende
+ Soll sowas gemacht werden?
+****** Beschluss durch Konsens - Ja.
+ TODO: SNMP reset ports und bits zaehlen
+1.1) Capture the Flag (kh-2030)
+ Eigene Kiste muss beschuetzt werden, Es werden von der jury verschiedene ports abgefragt, wenn port nicht erreichbar ist gibt es minuspunkte. https://www.swisscyberstorm.com/program/wargames.html
+ Details tbd.
+ Kuemmerer: kh-2030
+ Sollen wir sowas machen?
+***** Beschluss durch konsens - wir wollen sowas machen
+2) Optionsraeume
+ Muell rauswerfen und/oder sinnvoll nutzen
+ Naechsten Sonntag (21.08.2011) ist optionsraeumeausraeumrage
+ Sortieren in wichtig und nicht wichtig,
+ vor die optionsraeume ausgeraeumt und in den gang geraeumt.
+****** Beschluss durch Konsens - JA,
+ naechsten Sonntag ist der Rage, alle die dort sind muessen mitmachen
+3) Transparenz der Finanzen (tv)
+ Wir haben keinen Cash-Master.
+ wir nehmen geld ein und geben geld aus. Es waere cool welche finanzen da sind.
+ Am besten real-time auf ner wand.
+ Wir muessen eh sagen wo unser geld her kommt und wo es hin kommt.
+ Es gibt zur zeit niemand. Ggf muss es outgesourced werden, leute im shack sollen mithelfen.
+ Ronny wuerde auch mithelfen.
+ Momo: es suckt die beitraege zu erhoehen und nicht mal die alten beitraege einziehen
+ Es muss gezeigt werden
+****** AP Ronny,kh-2030,sascha: wir wollen hinkriegen, dass jeder die buchhaltung sehen kann.
+ tv: gegen willkuerliche erhoehung ohne zu wissen was der aktuelle stand ist.
+ mrpi: pruefung ob berechtigt fuer ermaessigter beitrag. momo: ein wenig grundvertrauen ist wichtig, nicht notwendig.
+****** tv,mrpi : wuerde sich bereit erklaeren zettel in digitale form umzuwandeln
+ Beschluss: Implementierung vollstaendige moegliche Tranzparenz (unter einhaltung des datenschutzes)
+
+4) Keymember-liste (ronny):
+ findet es scheisse dass leute die nicht zahlen keymember sind.
+ nur mitglieder die 3 monate gezahlt haben sind berechtigt fuer schluessel.
+5) Vereinsapp (momo)
+ Konten ob man bezahlt hat, jeder soll problemlos an seine mitglieds-id kommen.
+ Planung hier im Camp, brainstorming.
+ Definition, was wann passieren soll.
+ Platform tbd.vorstellung im naechsten plenum.
+ Dokumente Oeffentlich http://piratepad.net/Bwb7nZ4k6x
+
+OT: Pfleidi findet Pr0n im internet.
+OT: Momo bittet darum, dass das plenum ordentlich von statten geht und nicht in 19 sekunden durchgefuehrt wird.
+
+
+==== Ende Plenum 18:42 ====
diff --git a/cholerab/proto b/cholerab/proto
new file mode 100644
index 00000000..8f773be8
--- /dev/null
+++ b/cholerab/proto
@@ -0,0 +1,39 @@
+
+
+
+- The Good One
+ - Krebslogo
+ - /etc/issue
+ - sshd_config banner
+ - $EDITOR
+ - rm nano
+ - install vim
+ - add the good parts into /etc/vimrc
+ - syntax highlighting
+ - install, try harder(!!)
+ - enterprise retiolum
+ - append /krebs/bin to PATH
+ - activated modules have symlinks from /krebs/bin to /krebs/...
+ - tell about krebs candidate modules
+ - krebs suggest (crowd sourcing)
+ - async krebs notifications in focus terminal
+ - krebs shell w/ rest interface
+ - cholerab live
+ - multi user combat editor
+ - peer to peer [multiunicast]
+ - origin: 1,1,0
+
+ - Protocol
+ - Space-separated vector of ascii-encoded unicode code-points
+ - otherwise you are made of stupid and you deserve to get punched from
+ anybody, anyoften with the Error punch "You are made of stupid!" <1>
+
+ - move meaning
+ - <> Taunt
+ - <0 char dim*> Character punches
+ - <1> ∃rror punch
+ - <2 101 1> Status punch; Attack; punch-how?
+ - <2 103 1 addrs+> Status punch; Counter; i-punch addr...
+ - <3 0 addrs+> Notification punch; these-are-fuckers addrs...
+ - <3 1 addrs+> Notification punch; the-good-ones addrs...
+ - <23 addr reason...> Finishing move; punch addr b/c of reason...
diff --git a/cholerab/reports/Empera.txt b/cholerab/reports/Empera.txt
new file mode 100644
index 00000000..e972c8c7
--- /dev/null
+++ b/cholerab/reports/Empera.txt
@@ -0,0 +1,53 @@
+Datum: 2011-11-11 22:13
+
+Zutaten:
+ - 250ml La Emperatriz 2006 CRIANZA RIOJA (13,5% VOL) EM No 825078 (EUR 11.5)
+ - 3mg b0463c6c9cc0ab65a467d620be5a40f1217f1038 Pulver
+ - 50mg d5fe8c3fc8ba214b334c6eb6cdae6b3dcc0d63e3 Gelantine-Kapsel
+ - 5mg Zink Gelantine-Kapsel
+ - 300mg C Gelantine-Kapsel
+ - 300mg Mg gepresst
+ - 100mg B6 gepresst
+ - 95.2mg Fe(II) Dragee
+
+Probanden:
+ 3x mit super-vollem Magen, ein Proband ohne Kapsel
+
+Start: 2011-11-11 22:35:09+01:00
+
+Farbe: Super-Schwarz-Rot
+
+Gerucht:
+ frisch und fruchtig
+ hat was von Brombeeren
+ Organisch
+ leicht gammelig (hat was von fauligen Pflaumen)
+
+Geschmack:
+ halb-trocken
+ fast bisschen zu fruchtig
+ finde ich nicht zu fruchtig
+ bisschen bitter
+ besser zu Nudelgericht (wir hatten dicke Nudelsuppe)
+ leichte Zitrusnote im Abgang
+ der hat das Ekelhafte, was auch andere schaebige Weine haben
+ fuer melancholische Sommerabende (man kann die letzten Sonnenstrahlen
+ rausspuehren)--da wurde doch einer gepanscht
+ Eine echte Emperatriz--eine Dame des Hasses.
+ Wuerde definitiv gut gehen mit was halbwegs herzhaften zu Essen.
+ ganz und garnicht lieblich.
+
+Fazit:
+ Trinkbar aber nicht der Beste.
+ Ich hatte auch schon Bessere.
+ ALDI-Weine sind billiger und besser.
+ Sie verspricht mehr als sie haelt.
+ Ich wuerd sie wieder tun.
+
+Checkpoint: 2011-11-11 23:05:24+01:00
+
+SpO₂: 98 96 97
+
+BPM: 71 75 73
+
+
diff --git a/cholerab/shirts/bestellliste b/cholerab/shirts/bestellliste
new file mode 100644
index 00000000..a6c63b9d
--- /dev/null
+++ b/cholerab/shirts/bestellliste
@@ -0,0 +1,32 @@
+ # S G∃ Feedback
+tv 2 M jj Superdick aufgetragenes Gummifetisch Logo; Farbe: genial
+ 1 S jj
+ulrich 1 M ?j gut
+felix 2 M jj super qualitaet, sogar nach dem waschen kein bisschen ausgebleicht
+ 1 S jj
+Lassulus 2 M jj
+Pfleidi 1 L jj
+Tensai 1 L jj
+Momo 1 2 jj Der Siebdruck sieht echt gut aus, kein bisschen verschmiert.
+hadez 1 L jj
+ 1 M jj
+Phil 1 S jj
+Lukas 1 M ?j
+Jan 1 2 jj /* bezahlt an makefu */ Zitrone waere leckerer gewesen
+Ronny 1 M jj
+Marc 1 L --
+Lotho 1 X jj
+Sascha 1 X -j
+Moritz 1 M jj
+RIPE 1 X --
+kh 1 L jj gute Verarbeitung, guter Gesamteindruck, passt wie angegossen
+miefda 1 L jj
+ 1 X jj
+
+G = Gezahlt ∈ { -, j, ? }
+∃ = Erhalten ∈ { -, j, ? }
+j = ja
+- = nein
+? = vielleicht
+S = Größe ∈ { S, M, L, X = XL, 2 = XXL, ... }
+# = Anzahl
diff --git a/cholerab/tahoe/brick_installation b/cholerab/tahoe/brick_installation
new file mode 100644
index 00000000..77353fa2
--- /dev/null
+++ b/cholerab/tahoe/brick_installation
@@ -0,0 +1,48 @@
+#? /bin/sh
+
+## tahoe brick installation (ubuntu1304)
+sudo apt-get install python-dev python-pip gcc libssl-dev
+
+
+## Tahoe Brick Installation (Arch Linux)
+pacman -S python2 python2-pip net-tools
+pip2 install pyasn1 zfec pycrypto zbase32 pycryptopp twisted
+pip2 install allmydata-tahoe
+
+## Tahoe Brick Installation (Arch Linux / Expert Mode^_^)
+# if the above breaks for some reason, but you basically know what you're
+# doing, then you could try something like this:
+pip2 uninstall `pip2 list | awk '{print$1}'`
+yaourt -S --asdeps --noconfirm net-tools python2 python2-zope-interface \
+ twisted python2-pyasn1 python2-crypto pycryptopp nevow python2-foolscap \
+ python2-simplejson zfec python2-pyopenssl pyutil python2-argparse zbase32 \
+ python2-mock python2-setuptools
+yaourt -S --noconfirm tahoe-lafs
+
+## Tahoe Brick Configuration
+mkdir /opt/tahoe
+tahoe create-node /opt/tahoe
+useradd tahoe -d /opt/tahoe
+chown -R tahoe: /opt/tahoe
+
+# change nick name
+(echo -n "nick name [$HOSTNAME]: " &&
+ read nn &&
+ sed -i "s/^nickname =.*/nickname = ${nn:-$HOSTNAME}/" /opt/tahoe/tahoe.cfg)
+
+# replace introducer.furl = None with the one from pigstarter/tahoe/introducer.furl
+sed -i "s#^introducer\.furl.*#introducer.furl = $(curl pigstarter/tahoe/introducer.furl)#" /opt/tahoe/tahoe.cfg
+
+# you also might want to change shares.needed to 2 , shares.happy to 3 and shares.total to 6
+sed -i 's/#shares\.needed = 3/shares.needed = 2/' /opt/tahoe/tahoe.cfg
+sed -i 's/#shares\.happy = 7/shares.happy = 3/' /opt/tahoe/tahoe.cfg
+sed -i 's/#shares\.total = 10/shares.happy = 6/' /opt/tahoe/tahoe.cfg
+
+# optionally symlink /opt/tahoe/storage to somewhere with a lot of storage
+cp tahoe.service /usr/lib/systemd/system/tahoe.service
+
+systemctl enable tahoe.service
+systemctl start tahoe.service
+
+## Firewall Configuration
+# open port $(cat /opt/tahoe/client.port) to allow inbound connections
diff --git a/cholerab/tahoe/client_installation b/cholerab/tahoe/client_installation
new file mode 100644
index 00000000..dce3742a
--- /dev/null
+++ b/cholerab/tahoe/client_installation
@@ -0,0 +1,15 @@
+#?/bin/sh
+# Tahoe installation
+pacman -S python2 python2-pip net-tools
+pip install pyasn1 zfec pycrypto zbase32 pycryptopp twisted
+pip install allmydata-tahoe
+
+# tahoe configuration
+tahoe create-client
+# replace introducer.furl = None with the one from pigstarter/tahoe/introducer.furl
+sed -i "s#^introducer\.furl.*#introducer.furl = $(curl pigstarter/tahoe/introducer.furl)#" $HOME/.tahoe/tahoe.cfg
+# you also might want to change shares.needed to 2 , shares.happy to 3 and shares.total to 6
+echo "krebs: <special krebs URI from irc>" >> $HOME/.tahoe/private/aliases
+
+tahoe start
+tahoe ls krebs:
diff --git a/cholerab/tahoe/tahoe.service b/cholerab/tahoe/tahoe.service
new file mode 100644
index 00000000..74a83121
--- /dev/null
+++ b/cholerab/tahoe/tahoe.service
@@ -0,0 +1,10 @@
+[Unit]
+Description=Tahoe LAFS
+
+[Service]
+ExecStart=/usr/bin/tahoe run /opt/tahoe
+User=tahoe
+
+[Install]
+Alias=tahoe.service
+WantedBy=multi-user.target
diff --git a/cholerab/thesauron b/cholerab/thesauron
new file mode 100644
index 00000000..2d879147
--- /dev/null
+++ b/cholerab/thesauron
@@ -0,0 +1,105 @@
+Legende:
+
+Cholerab n.
+[de]
+- Kunstwort aus Kollaboration und Cholera. Beschreibt den Zustand, dass
+ Zusammenarbeit niemals gut, einfach und ohne Schmerzen funktioniert.
+- Teamwork-Plattform für Krebscode.
+
+eigentlich adv.
+[de]
+- Hinweis darauf, dass der Inhalt eines Satzes eine Soll-Realität beschreibt,
+ die nicht der Fall ist.
+Antonym: tatsaechlich
+
+ghost n.
+[de]
+- Host im Darknet welcher evtl. irgendwie noch da ist (als dd image auf anderen
+ Festplatten) aber wohl nie wieder kommen wird.
+Siehe: Wiederbelebung
+
+KD;RP abbr. (pronounciation: kah-derp)
+[en]
+- Short for Krebs Darknet / Retiolum Prefix.
+
+krebs
+[de]
+- krebs ist ein soziales Experiment, eine Organisation, das zweit aelteste
+ Softwareprojekt im Shack und viel verteilte infrastruktur.
+
+KRI abbr. (pronounciation: [en] cry)
+[en]
+- Short for Krebs Request for Implementation.
+ Derived from Scheme Requests for Implementation (SRFI).
+
+litterate programming n.
+[en]
+- any code that has not been proved mathematically.
+
+Nahziel n.
+[de]
+- Ziel mit höchst möglicher Priorität.
+
+Nahzielerfahrung n.
+[de]
+- das Erlebnis der (endgültigen) Nichterreichung eines Nahziels (obwohl
+ nur noch wenig ((quasi-) infinitesimal viel) nötig gewesen wäre).
+
+Punching Lemma n.
+[de]
+- Sozialer Druck zur Aufrechterhaltung der Ordnung in dem sozialen Geflaecht
+ von Krebs
+
+ref, n.
+[en]
+- A reference like an URI, ISBN, name of a person, etc.
+
+reftrace, n.
+[en]
+- A stacktrace-like representation of refs that lead to some (any kind of)
+ conclusion. Usually generated by a human. The conclusion can be either on
+ the top or on the bottom of the stack. If the order is ambiguous, then it
+ should be communicated explicitly.
+ - Example: (conclusion first)
+ - http://en.wikipedia.org/wiki/Stack_trace
+ - google "stacktrace" (first entry / 2014-12-05T12:13:58Z)
+ - think about some example [this could be omitted, as it's obvious...]
+
+Retiolum n.
+[en]
+- The official darknet of Krebs which utilizes the Retiolum Prefix to
+ address individual nodes.
+
+Retiolum Prefix n.
+[en]
+- The universally accepted IPv6-prefix, 42::/16. Anyone can has a
+ /128-subnet and, if require, anything larger.
+
+Retiolum Realtime Map n.
+[en]
+- The network map of the public visible part of Retiolum.
+
+RRM [abbr.]
+[en]
+- Short for Retiolum Retiolum Map.
+
+Sanatorium n.
+[en]
+- The Krebs Control and Command Center.
+- An Retiolum-based IRC-channel where all Reaktor-enabled nodes gather
+ and lurk for relevant input.
+
+tatsaechlich, adv.
+[de]
+- Hinweis darauf, dass der Inhalt eines Satzes exakt der Realität entspricht.
+Antonym: eigentlich
+
+Verkrebsung n.
+[de]
+- Synonym fuer die Installation von Krebs (oder eine einzelnen Krebs
+ Komponente) auf einem beliebigem System.
+
+Wiederbelebung n.
+[de]
+- Ein ghost wird im Darknet wieder erreichbar
+Siehe: ghost
diff --git a/cholerab/tinc-win b/cholerab/tinc-win
new file mode 100644
index 00000000..80076d06
--- /dev/null
+++ b/cholerab/tinc-win
@@ -0,0 +1,7 @@
+install tinc in windows
+add tap device
+Interface instead of device in tinc.conf
+fix ip in windows network device
+generate key
+propagate hosts
+
diff --git a/cholerab/tincrouting b/cholerab/tincrouting
new file mode 100644
index 00000000..f430da4e
--- /dev/null
+++ b/cholerab/tincrouting
@@ -0,0 +1,9 @@
+#add 0.0.0.0/0 to hostsfile
+
+echo 1 >/proc/sys/net/ipv4/ip_forward
+
+/sbin/iptables -P FORWARD ACCEPT
+/sbin/iptables --table nat -A POSTROUTING -o eth0 -j MASQUERADE
+
+#for supercool portforwarding:
+#example!: /sbin/iptables -t nat -A PREROUTING -p tcp -i eth0 -d jgibbs.dyndns.org --dport 3389 -j DNAT --to 172.17.207.4:3389
diff --git a/cholerab/too_old/User-Agent.txt b/cholerab/too_old/User-Agent.txt
new file mode 100644
index 00000000..3ed1f91f
--- /dev/null
+++ b/cholerab/too_old/User-Agent.txt
@@ -0,0 +1,19 @@
+Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.0; Trident/4.0; .NET CLR 1.1.4322; .NET CLR 2.0.50215; .NET CLR 3.0.0450
+Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; Trident/4.0; SV1; SpamBlockerUtility 4.7.5)
+Mozilla/5.0 (compatible; Yahoo! Slurp/3.0; http://help.yahoo.com/help/us/ysearch/slurp)
+Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0; GTB6.4; SLCC1; .NET CLR 2.0.50727; Media Center PC 5.0; .NET CLR 3.0.
+Mozilla/5.0 (Linux; U; Android 1.5; fr-fr, HTC Hero Build/CUPCAKE) AppleWebKit/528.5+ (KHTML, like Gecko) Version/3/5/9
+Mozilla/5.0 (Windows; U; Windows NT 6.0; fr; rv:1.9.1.9) Gecko/20100315 Firefox/3.5.9
+Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1; WOW64; Trident/4.0; GTB0.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.3
+Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.2.3) Gecko/20100401 Firefox/3.6.3
+Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1)
+Mozilla/5.0 (Windows; U; Windows NT 5.1; en-GB; rv:1.9.1.9) Gecko/20100315 Firefox/3.5.9 (.NET CLR 3.5.30729)
+Mozilla/5.0 (Windows; U; Windows NT 6.1; de; rv:1.9.2.3) Gecko/20100401 Firefox/3.6.3
+Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; InfoPath.2)
+Opera/9.80 (Windows NT 5.1; U; en) Presto/2.5.22 Version/10.50
+Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; InfoPath.2; .NET CLR 2.0.50727; .NET CLR 3.0.04506.648; .NET CLR
+Opera/9.80 (Macintosh; PPC Mac OS X; U; en) Presto/2.2.15 Version/10.10
+Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.1; Trident/4.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR
+Mozilla/5.0 (Windows; U; Windows NT 6.1; de; rv:1.9.2.3) Gecko/20100401 Firefox/3.6.3
+Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; .NET CLR 2.0.50727)
+Mozilla/5.0 (Windows; U; Windows NT 5.1; en-GB; rv:1.9.1.9) Gecko/20100315 Firefox/3.5.9 (.NET CLR 3.5.30729)
diff --git a/elchos/.gitignore b/elchos/.gitignore
new file mode 100644
index 00000000..6b6e109e
--- /dev/null
+++ b/elchos/.gitignore
@@ -0,0 +1,4 @@
+work/
+out/
+arch/
+root-image/usr/bin/ncdc
diff --git a/elchos/INSTALL b/elchos/INSTALL
new file mode 100644
index 00000000..54eb35a5
--- /dev/null
+++ b/elchos/INSTALL
@@ -0,0 +1 @@
+pacman -S extra/archiso
diff --git a/elchos/README.md b/elchos/README.md
new file mode 100644
index 00000000..4209db7c
--- /dev/null
+++ b/elchos/README.md
@@ -0,0 +1,23 @@
+# Elch
+This builds the elch sharing distribution.
+
+# Usage
+
+ # create a new iso
+ ./refresh
+ # creates:
+ # out/elchos.iso
+
+# Requirements
+Both development environment and Final Distro are based on a heavily remastered
+version of the Arch Linux Install Stick. On Arch you need archiso to build the
+distro.
+
+ pacman -Sy archiso
+
+# Configured URLs
+- elchstats.nsupdate.info -> the graphite stats receiver
+- elchirc.nsupdate.info -> the irc to be used
+ irc.freenode.net currently hardcoded
+ in root-image/krebs/etc/Reaktor/config.py
+- elchhub.nsupdate.info -> the dcpp hub to be used
diff --git a/elchos/TODO b/elchos/TODO
new file mode 100644
index 00000000..5c25e8d3
--- /dev/null
+++ b/elchos/TODO
@@ -0,0 +1 @@
+- migrate root-image/krebs/lib and /bin to new ship version
diff --git a/elchos/aitab b/elchos/aitab
new file mode 100644
index 00000000..b7e9a17a
--- /dev/null
+++ b/elchos/aitab
@@ -0,0 +1,3 @@
+# <img> <mnt> <arch> <sfs_comp> <fs_type> <fs_size>
+root-image / i686 xz ext4 50%
+root-image / x86_64 xz ext4 50%
diff --git a/elchos/build.sh b/elchos/build.sh
new file mode 100755
index 00000000..671b15b5
--- /dev/null
+++ b/elchos/build.sh
@@ -0,0 +1,265 @@
+#!/bin/bash
+
+set -e -u
+
+iso_name=archlinux
+iso_label="ARCH_$(date +%Y%m)"
+iso_version=$(date +%Y.%m.%d)
+install_dir=arch
+work_dir=work
+out_dir=out
+
+arch=$(uname -m)
+verbose=""
+pacman_conf=${work_dir}/pacman.conf
+script_path=$(readlink -f ${0%/*})
+
+_usage ()
+{
+ echo "usage ${0} [options]"
+ echo
+ echo " General options:"
+ echo " -N <iso_name> Set an iso filename (prefix)"
+ echo " Default: ${iso_name}"
+ echo " -V <iso_version> Set an iso version (in filename)"
+ echo " Default: ${iso_version}"
+ echo " -L <iso_label> Set an iso label (disk label)"
+ echo " Default: ${iso_label}"
+ echo " -D <install_dir> Set an install_dir (directory inside iso)"
+ echo " Default: ${install_dir}"
+ echo " -w <work_dir> Set the working directory"
+ echo " Default: ${work_dir}"
+ echo " -o <out_dir> Set the output directory"
+ echo " Default: ${out_dir}"
+ echo " -v Enable verbose output"
+ echo " -h This help message"
+ exit ${1}
+}
+
+# Helper function to run make_*() only one time per architecture.
+run_once() {
+ if [[ ! -e ${work_dir}/build.${1}_${arch} ]]; then
+ $1
+ touch ${work_dir}/build.${1}_${arch}
+ fi
+}
+
+# Setup custom pacman.conf with current cache directories.
+make_pacman_conf() {
+ local _cache_dirs
+ _cache_dirs=($(pacman -v 2>&1 | grep '^Cache Dirs:' | sed 's/Cache Dirs:\s*//g'))
+ sed -r "s|^#?\\s*CacheDir.+|CacheDir = $(echo -n ${_cache_dirs[@]})|g" ${script_path}/pacman.conf > ${pacman_conf}
+}
+
+# Base installation, plus needed packages (root-image)
+make_basefs() {
+ setarch ${arch} mkarchiso ${verbose} -w "${work_dir}/${arch}" -C "${pacman_conf}" -D "${install_dir}" init
+ setarch ${arch} mkarchiso ${verbose} -w "${work_dir}/${arch}" -C "${pacman_conf}" -D "${install_dir}" -p "memtest86+ mkinitcpio-nfs-utils nbd" install
+}
+
+# Additional packages (root-image)
+make_packages() {
+ setarch ${arch} mkarchiso ${verbose} -w "${work_dir}/${arch}" -C "${pacman_conf}" -D "${install_dir}" -p "$(grep -h -v ^# ${script_path}/packages.{both,${arch}})" install
+}
+
+# Copy mkinitcpio archiso hooks and build initramfs (root-image)
+make_setup_mkinitcpio() {
+ local _hook
+ for _hook in archiso archiso_shutdown archiso_pxe_common archiso_pxe_nbd archiso_pxe_http archiso_pxe_nfs archiso_loop_mnt; do
+ cp /usr/lib/initcpio/hooks/${_hook} ${work_dir}/${arch}/root-image/usr/lib/initcpio/hooks
+ cp /usr/lib/initcpio/install/${_hook} ${work_dir}/${arch}/root-image/usr/lib/initcpio/install
+ done
+ cp /usr/lib/initcpio/install/archiso_kms ${work_dir}/${arch}/root-image/usr/lib/initcpio/install
+ cp /usr/lib/initcpio/archiso_shutdown ${work_dir}/${arch}/root-image/usr/lib/initcpio
+ cp ${script_path}/mkinitcpio.conf ${work_dir}/${arch}/root-image/etc/mkinitcpio-archiso.conf
+ setarch ${arch} mkarchiso ${verbose} -w "${work_dir}/${arch}" -C "${pacman_conf}" -D "${install_dir}" -r 'mkinitcpio -c /etc/mkinitcpio-archiso.conf -k /boot/vmlinuz-linux -g /boot/archiso.img' run
+}
+
+# Customize installation (root-image)
+make_customize_root_image() {
+ cp -af ${script_path}/root-image ${work_dir}/${arch}
+
+ # we do not need no new mirrorlist!
+ #curl -o ${work_dir}/${arch}/root-image/etc/pacman.d/mirrorlist 'https://www.archlinux.org/mirrorlist/?country=all&protocol=http&use_mirror_status=on'
+
+ #we do not need no bloody documentation
+ #lynx -dump -nolist 'https://wiki.archlinux.org/index.php/Installation_Guide?action=render' >> ${work_dir}/${arch}/root-image/root/install.txt
+
+ setarch ${arch} mkarchiso ${verbose} -w "${work_dir}/${arch}" -C "${pacman_conf}" -D "${install_dir}" -r '/root/customize_root_image.sh' run
+ rm ${work_dir}/${arch}/root-image/root/customize_root_image.sh
+}
+
+# Prepare kernel/initramfs ${install_dir}/boot/
+make_boot() {
+ mkdir -p ${work_dir}/iso/${install_dir}/boot/${arch}
+ cp ${work_dir}/${arch}/root-image/boot/archiso.img ${work_dir}/iso/${install_dir}/boot/${arch}/archiso.img
+ cp ${work_dir}/${arch}/root-image/boot/vmlinuz-linux ${work_dir}/iso/${install_dir}/boot/${arch}/vmlinuz
+}
+
+# Add other aditional/extra files to ${install_dir}/boot/
+make_boot_extra() {
+ cp ${work_dir}/${arch}/root-image/boot/memtest86+/memtest.bin ${work_dir}/iso/${install_dir}/boot/memtest
+ cp ${work_dir}/${arch}/root-image/usr/share/licenses/common/GPL2/license.txt ${work_dir}/iso/${install_dir}/boot/memtest.COPYING
+}
+
+# Prepare /${install_dir}/boot/syslinux
+make_syslinux() {
+ mkdir -p ${work_dir}/iso/${install_dir}/boot/syslinux
+ for _cfg in ${script_path}/syslinux/*.cfg; do
+ sed "s|%ARCHISO_LABEL%|${iso_label}|g;
+ s|%INSTALL_DIR%|${install_dir}|g" ${_cfg} > ${work_dir}/iso/${install_dir}/boot/syslinux/${_cfg##*/}
+ done
+ cp ${script_path}/syslinux/splash.png ${work_dir}/iso/${install_dir}/boot/syslinux
+ cp ${work_dir}/${arch}/root-image/usr/lib/syslinux/bios/*.c32 ${work_dir}/iso/${install_dir}/boot/syslinux
+ cp ${work_dir}/${arch}/root-image/usr/lib/syslinux/bios/lpxelinux.0 ${work_dir}/iso/${install_dir}/boot/syslinux
+ cp ${work_dir}/${arch}/root-image/usr/lib/syslinux/bios/memdisk ${work_dir}/iso/${install_dir}/boot/syslinux
+ mkdir -p ${work_dir}/iso/${install_dir}/boot/syslinux/hdt
+ gzip -c -9 ${work_dir}/${arch}/root-image/usr/share/hwdata/pci.ids > ${work_dir}/iso/${install_dir}/boot/syslinux/hdt/pciids.gz
+ gzip -c -9 ${work_dir}/${arch}/root-image/usr/lib/modules/*-ARCH/modules.alias > ${work_dir}/iso/${install_dir}/boot/syslinux/hdt/modalias.gz
+}
+
+# Prepare /isolinux
+make_isolinux() {
+ mkdir -p ${work_dir}/iso/isolinux
+ sed "s|%INSTALL_DIR%|${install_dir}|g" ${script_path}/isolinux/isolinux.cfg > ${work_dir}/iso/isolinux/isolinux.cfg
+ cp ${work_dir}/${arch}/root-image/usr/lib/syslinux/bios/isolinux.bin ${work_dir}/iso/isolinux/
+ cp ${work_dir}/${arch}/root-image/usr/lib/syslinux/bios/isohdpfx.bin ${work_dir}/iso/isolinux/
+ cp ${work_dir}/${arch}/root-image/usr/lib/syslinux/bios/ldlinux.c32 ${work_dir}/iso/isolinux/
+}
+
+# Prepare /EFI
+make_efi() {
+ mkdir -p ${work_dir}/iso/EFI/boot
+ cp ${work_dir}/x86_64/root-image/usr/lib/prebootloader/PreLoader.efi ${work_dir}/iso/EFI/boot/bootx64.efi
+ cp ${work_dir}/x86_64/root-image/usr/lib/prebootloader/HashTool.efi ${work_dir}/iso/EFI/boot/
+
+ cp ${work_dir}/x86_64/root-image/usr/lib/gummiboot/gummibootx64.efi ${work_dir}/iso/EFI/boot/loader.efi
+
+ mkdir -p ${work_dir}/iso/loader/entries
+ cp ${script_path}/efiboot/loader/loader.conf ${work_dir}/iso/loader/
+ cp ${script_path}/efiboot/loader/entries/uefi-shell-v2-x86_64.conf ${work_dir}/iso/loader/entries/
+ cp ${script_path}/efiboot/loader/entries/uefi-shell-v1-x86_64.conf ${work_dir}/iso/loader/entries/
+
+ sed "s|%ARCHISO_LABEL%|${iso_label}|g;
+ s|%INSTALL_DIR%|${install_dir}|g" \
+ ${script_path}/efiboot/loader/entries/archiso-x86_64-usb.conf > ${work_dir}/iso/loader/entries/archiso-x86_64.conf
+
+ # TODO no uefi shell
+ # EFI Shell 2.0 for UEFI 2.3+ ( http://sourceforge.net/apps/mediawiki/tianocore/index.php?title=UEFI_Shell )
+ # curl -o ${work_dir}/iso/EFI/shellx64_v2.efi https://svn.code.sf.net/p/edk2/code/trunk/edk2/ShellBinPkg/UefiShell/X64/Shell.efi
+ # EFI Shell 1.0 for non UEFI 2.3+ ( http://sourceforge.net/apps/mediawiki/tianocore/index.php?title=Efi-shell )
+ # curl -o ${work_dir}/iso/EFI/shellx64_v1.efi https://svn.code.sf.net/p/edk2/code/trunk/edk2/EdkShellBinPkg/FullShell/X64/Shell_Full.efi
+}
+
+# Prepare efiboot.img::/EFI for "El Torito" EFI boot mode
+make_efiboot() {
+ mkdir -p ${work_dir}/iso/EFI/archiso
+ truncate -s 31M ${work_dir}/iso/EFI/archiso/efiboot.img
+ mkfs.vfat -n ARCHISO_EFI ${work_dir}/iso/EFI/archiso/efiboot.img
+
+ mkdir -p ${work_dir}/efiboot
+ mount ${work_dir}/iso/EFI/archiso/efiboot.img ${work_dir}/efiboot
+
+ mkdir -p ${work_dir}/efiboot/EFI/archiso
+ cp ${work_dir}/iso/${install_dir}/boot/x86_64/vmlinuz ${work_dir}/efiboot/EFI/archiso/vmlinuz.efi
+ cp ${work_dir}/iso/${install_dir}/boot/x86_64/archiso.img ${work_dir}/efiboot/EFI/archiso/archiso.img
+
+ mkdir -p ${work_dir}/efiboot/EFI/boot
+ cp ${work_dir}/x86_64/root-image/usr/lib/prebootloader/PreLoader.efi ${work_dir}/efiboot/EFI/boot/bootx64.efi
+ cp ${work_dir}/x86_64/root-image/usr/lib/prebootloader/HashTool.efi ${work_dir}/efiboot/EFI/boot/
+
+ cp ${work_dir}/x86_64/root-image/usr/lib/gummiboot/gummibootx64.efi ${work_dir}/efiboot/EFI/boot/loader.efi
+
+ mkdir -p ${work_dir}/efiboot/loader/entries
+ cp ${script_path}/efiboot/loader/loader.conf ${work_dir}/efiboot/loader/
+ cp ${script_path}/efiboot/loader/entries/uefi-shell-v2-x86_64.conf ${work_dir}/efiboot/loader/entries/
+ cp ${script_path}/efiboot/loader/entries/uefi-shell-v1-x86_64.conf ${work_dir}/efiboot/loader/entries/
+
+ sed "s|%ARCHISO_LABEL%|${iso_label}|g;
+ s|%INSTALL_DIR%|${install_dir}|g" \
+ ${script_path}/efiboot/loader/entries/archiso-x86_64-cd.conf > ${work_dir}/efiboot/loader/entries/archiso-x86_64.conf
+
+ #cp ${work_dir}/iso/EFI/shellx64_v2.efi ${work_dir}/efiboot/EFI/
+ #cp ${work_dir}/iso/EFI/shellx64_v1.efi ${work_dir}/efiboot/EFI/
+
+ umount ${work_dir}/efiboot
+}
+
+# Copy aitab
+make_aitab() {
+ mkdir -p ${work_dir}/iso/${install_dir}
+ cp ${script_path}/aitab ${work_dir}/iso/${install_dir}/aitab
+}
+
+# Build all filesystem images specified in aitab (.fs.sfs .sfs)
+make_prepare() {
+ cp -a -l -f ${work_dir}/${arch}/root-image ${work_dir}
+ setarch ${arch} mkarchiso ${verbose} -w "${work_dir}" -D "${install_dir}" pkglist
+ setarch ${arch} mkarchiso ${verbose} -w "${work_dir}" -D "${install_dir}" prepare
+ rm -rf ${work_dir}/root-image
+ # rm -rf ${work_dir}/${arch}/root-image (if low space, this helps)
+}
+
+# Build ISO
+make_iso() {
+ mkarchiso ${verbose} -w "${work_dir}" -D "${install_dir}" checksum
+ mkarchiso ${verbose} -w "${work_dir}" -D "${install_dir}" -L "${iso_label}" -o "${out_dir}" iso "${iso_name}.iso"
+}
+
+if [[ ${EUID} -ne 0 ]]; then
+ echo "This script must be run as root."
+ _usage 1
+fi
+
+if [[ ${arch} != x86_64 ]]; then
+ echo "This script needs to be run on x86_64"
+ _usage 1
+fi
+
+while getopts 'N:V:L:D:w:o:vh' arg; do
+ case "${arg}" in
+ N) iso_name="${OPTARG}" ;;
+ V) iso_version="${OPTARG}" ;;
+ L) iso_label="${OPTARG}" ;;
+ D) install_dir="${OPTARG}" ;;
+ w) work_dir="${OPTARG}" ;;
+ o) out_dir="${OPTARG}" ;;
+ v) verbose="-v" ;;
+ h) _usage 0 ;;
+ *)
+ echo "Invalid argument '${arg}'"
+ _usage 1
+ ;;
+ esac
+done
+
+mkdir -p ${work_dir}
+
+run_once make_pacman_conf
+
+# Do all stuff for each root-image
+for arch in x86_64; do
+ run_once make_basefs
+ run_once make_packages
+ run_once make_setup_mkinitcpio
+ run_once make_customize_root_image
+done
+
+for arch in x86_64; do
+ run_once make_boot
+done
+
+# Do all stuff for "iso"
+run_once make_boot_extra
+run_once make_syslinux
+run_once make_isolinux
+run_once make_efi
+run_once make_efiboot
+
+run_once make_aitab
+
+for arch in x86_64; do
+ run_once make_prepare
+done
+
+run_once make_iso
diff --git a/elchos/efiboot/loader/entries/archiso-x86_64-cd.conf b/elchos/efiboot/loader/entries/archiso-x86_64-cd.conf
new file mode 100644
index 00000000..9892c591
--- /dev/null
+++ b/elchos/efiboot/loader/entries/archiso-x86_64-cd.conf
@@ -0,0 +1,4 @@
+title Arch Linux archiso x86_64 UEFI CD
+linux /EFI/archiso/vmlinuz.efi
+initrd /EFI/archiso/archiso.img
+options archisobasedir=%INSTALL_DIR% archisolabel=%ARCHISO_LABEL%
diff --git a/elchos/efiboot/loader/entries/archiso-x86_64-usb.conf b/elchos/efiboot/loader/entries/archiso-x86_64-usb.conf
new file mode 100644
index 00000000..f61c5323
--- /dev/null
+++ b/elchos/efiboot/loader/entries/archiso-x86_64-usb.conf
@@ -0,0 +1,4 @@
+title Arch Linux archiso x86_64 UEFI USB
+linux /%INSTALL_DIR%/boot/x86_64/vmlinuz
+initrd /%INSTALL_DIR%/boot/x86_64/archiso.img
+options archisobasedir=%INSTALL_DIR% archisolabel=%ARCHISO_LABEL%
diff --git a/elchos/efiboot/loader/entries/uefi-shell-v1-x86_64.conf b/elchos/efiboot/loader/entries/uefi-shell-v1-x86_64.conf
new file mode 100644
index 00000000..9597ff2f
--- /dev/null
+++ b/elchos/efiboot/loader/entries/uefi-shell-v1-x86_64.conf
@@ -0,0 +1,2 @@
+title UEFI Shell x86_64 v1
+efi /EFI/shellx64_v1.efi
diff --git a/elchos/efiboot/loader/entries/uefi-shell-v2-x86_64.conf b/elchos/efiboot/loader/entries/uefi-shell-v2-x86_64.conf
new file mode 100644
index 00000000..0dde77ab
--- /dev/null
+++ b/elchos/efiboot/loader/entries/uefi-shell-v2-x86_64.conf
@@ -0,0 +1,2 @@
+title UEFI Shell x86_64 v2
+efi /EFI/shellx64_v2.efi
diff --git a/elchos/efiboot/loader/loader.conf b/elchos/efiboot/loader/loader.conf
new file mode 100644
index 00000000..62c4a839
--- /dev/null
+++ b/elchos/efiboot/loader/loader.conf
@@ -0,0 +1,2 @@
+timeout 3
+default archiso-x86_64
diff --git a/elchos/html/index.html b/elchos/html/index.html
new file mode 100644
index 00000000..83ec141c
--- /dev/null
+++ b/elchos/html/index.html
@@ -0,0 +1,42 @@
+<!Doctype html>
+<html lang="en">
+ <head>
+ <meta charset="utf-8">
+ <link rel="stylesheet" href="//netdna.bootstrapcdn.com/bootstrap/3.1.1/css/bootstrap.min.css">
+ <title>ElchOS Main Page</title>
+ <meta http-equiv="X-UA-Compatible" content="IE=edge">
+ <meta name="viewport" content="width=device-width, initial-scale=1">
+ </head>
+ <body>
+ <div class="navbar navbar-inverse navbar-fixed-top" role="navigation">
+ <div class="container">
+ <div class="navbar-header">
+ <a class="navbar-brand" href="#">ElchOS</a>
+ </div>
+ </div>
+ </div>
+ <div class="container">
+ <h2>What is ElchOS</h2>
+ <p>
+ ElchOS is a distribution created for simple and fast file sharing on big events through the power of distributed networks. </p>
+ <p>
+ The idea ist to plug in and boot any computer via USB-Stick and have the OS share all attached large disks via a number of different sharing protocols,namely Advanced Direct Connect (ADC) and good ol' FTP (and possibly more in the future)</p>
+ <p>
+Besides that the system will provide bonus features via a preconfigured IRC Bot and send stats to a graphite Host.
+It also starts up a tor hidden service in order to find boxes hidden behind weird installations.</p>
+<h2>Quit that jibber-jabber, where is the iso?</h2>
+<a href="/out/elchos.iso">Current ElchOS ISO</a>
+<h2>What magic variables are important?</h2>
+ElchOS uses DNS for finding the relevant Hosts in the network, namely the IRC Server, the ADC-Hub and the Graphite Stats Receiver.<br/>
+These are the magic hosts to be resolved:
+<ul>
+ <li>adcs://elchhub.nsupdate.info:2781</li>
+ <li>carbon://elchstats.nsupdate.info:2003</li>
+ <li>irc://elchirc.nsupdate.info:6667 (planned)</li>
+</ul>
+</div>
+<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.0/jquery.min.js"></script>
+<script src="//netdna.bootstrapcdn.com/bootstrap/3.1.1/js/bootstrap.min.js"></script>
+
+ </body>
+</html>
diff --git a/elchos/html/out b/elchos/html/out
new file mode 120000
index 00000000..9e7e3878
--- /dev/null
+++ b/elchos/html/out
@@ -0,0 +1 @@
+../out/ \ No newline at end of file
diff --git a/elchos/isolinux/isolinux.cfg b/elchos/isolinux/isolinux.cfg
new file mode 100644
index 00000000..10fd2852
--- /dev/null
+++ b/elchos/isolinux/isolinux.cfg
@@ -0,0 +1,6 @@
+PATH /%INSTALL_DIR%/boot/syslinux/
+DEFAULT loadconfig
+
+LABEL loadconfig
+ CONFIG /%INSTALL_DIR%/boot/syslinux/archiso.cfg
+ APPEND /%INSTALL_DIR%/
diff --git a/elchos/mkinitcpio.conf b/elchos/mkinitcpio.conf
new file mode 100644
index 00000000..2f46da49
--- /dev/null
+++ b/elchos/mkinitcpio.conf
@@ -0,0 +1,2 @@
+HOOKS="base udev memdisk archiso_shutdown archiso archiso_loop_mnt archiso_pxe_common archiso_pxe_nbd archiso_pxe_http archiso_pxe_nfs archiso_kms block pcmcia filesystems keyboard"
+COMPRESSION="xz"
diff --git a/elchos/packages.both b/elchos/packages.both
new file mode 100644
index 00000000..5eaef4e5
--- /dev/null
+++ b/elchos/packages.both
@@ -0,0 +1,49 @@
+arch-install-scripts
+python
+hddtemp
+mlocate
+collectd
+sysstat
+vsftpd
+btrfs-progs
+lftp
+haveged
+crda
+dhclient
+dialog
+dmraid
+dnsmasq
+dnsutils
+dosfstools
+ethtool
+f2fs-tools
+fsarchiver
+gnu-netcat
+gpm
+gptfdisk
+grml-zsh-config
+hdparm
+lftp
+linux-atm
+mtools
+nfs-utils
+nilfs-utils
+ntfs-3g
+ntp
+openconnect
+openssh
+partimage
+rfkill
+rsync
+sudo
+tcpdump
+wget
+wireless_tools
+wpa_actiond
+zsh
+vim
+tor
+tmux
+pacman-mirrorlist
+avahi
+nss-mdns
diff --git a/elchos/packages.i686 b/elchos/packages.i686
new file mode 100644
index 00000000..e69de29b
--- /dev/null
+++ b/elchos/packages.i686
diff --git a/elchos/packages.x86_64 b/elchos/packages.x86_64
new file mode 100644
index 00000000..407ead28
--- /dev/null
+++ b/elchos/packages.x86_64
@@ -0,0 +1,3 @@
+gummiboot
+prebootloader
+refind-efi
diff --git a/elchos/pacman.conf b/elchos/pacman.conf
new file mode 100644
index 00000000..45fe03dc
--- /dev/null
+++ b/elchos/pacman.conf
@@ -0,0 +1,92 @@
+#
+# /etc/pacman.conf
+#
+# See the pacman.conf(5) manpage for option and repository directives
+
+#
+# GENERAL OPTIONS
+#
+[options]
+# The following paths are commented out with their default values listed.
+# If you wish to use different paths, uncomment and update the paths.
+#RootDir = /
+#DBPath = /var/lib/pacman/
+#CacheDir = /var/cache/pacman/pkg/
+#LogFile = /var/log/pacman.log
+#GPGDir = /etc/pacman.d/gnupg/
+HoldPkg = pacman glibc
+#XferCommand = /usr/bin/curl -C - -f %u > %o
+#XferCommand = /usr/bin/wget --passive-ftp -c -O %o %u
+#CleanMethod = KeepInstalled
+#UseDelta = 0.7
+Architecture = auto
+
+# Pacman won't upgrade packages listed in IgnorePkg and members of IgnoreGroup
+#IgnorePkg =
+#IgnoreGroup =
+
+#NoUpgrade =
+#NoExtract =
+
+# Misc options
+#UseSyslog
+#Color
+#TotalDownload
+# We cannot check disk space from within a chroot environment
+#CheckSpace
+#VerbosePkgLists
+
+# By default, pacman accepts packages signed by keys that its local keyring
+# trusts (see pacman-key and its man page), as well as unsigned packages.
+SigLevel = Required DatabaseOptional
+LocalFileSigLevel = Optional
+#RemoteFileSigLevel = Required
+
+# NOTE: You must run `pacman-key --init` before first using pacman; the local
+# keyring can then be populated with the keys of all official Arch Linux
+# packagers with `pacman-key --populate archlinux`.
+
+#
+# REPOSITORIES
+# - can be defined here or included from another file
+# - pacman will search repositories in the order defined here
+# - local/custom mirrors can be added here or in separate files
+# - repositories listed first will take precedence when packages
+# have identical names, regardless of version number
+# - URLs will have $repo replaced by the name of the current repo
+# - URLs will have $arch replaced by the name of the architecture
+#
+# Repository entries are of the format:
+# [repo-name]
+# Server = ServerName
+# Include = IncludePath
+#
+# The header [repo-name] is crucial - it must be present and
+# uncommented to enable the repo.
+#
+
+# The testing repositories are disabled by default. To enable, uncomment the
+# repo name header and Include lines. You can add preferred servers immediately
+# after the header, and they will be used before the default mirrors.
+
+#[testing]
+#Include = /etc/pacman.d/mirrorlist
+
+[core]
+Include = /etc/pacman.d/mirrorlist
+
+[extra]
+Include = /etc/pacman.d/mirrorlist
+
+#[community-testing]
+#Include = /etc/pacman.d/mirrorlist
+
+[community]
+Include = /etc/pacman.d/mirrorlist
+
+# An example of a custom package repository. See the pacman manpage for
+# tips on creating your own repositories.
+#[custom]
+#SigLevel = Optional TrustAll
+#Server = file:///home/custompkgs
+
diff --git a/elchos/refresh.sh b/elchos/refresh.sh
new file mode 100755
index 00000000..e707fab7
--- /dev/null
+++ b/elchos/refresh.sh
@@ -0,0 +1,8 @@
+#!/bin/sh
+set -eu
+cd "$(dirname "$(readlink -f "$0")")"
+rm -rvf out/ work
+./build.sh -N elchos -v
+cp -v out/elchos* /home/makefu/isos
+# TODO internal
+virsh reset vm1 ||:
diff --git a/elchos/root-image/etc/collectd.conf b/elchos/root-image/etc/collectd.conf
new file mode 100644
index 00000000..30480f2e
--- /dev/null
+++ b/elchos/root-image/etc/collectd.conf
@@ -0,0 +1,84 @@
+#Hostname "elch_<macid>"
+Interval 10
+
+LoadPlugin syslog
+<Plugin syslog>
+ LogLevel info
+</Plugin>
+
+LoadPlugin md
+LoadPlugin cpu
+LoadPlugin df
+LoadPlugin disk
+#LoadPlugin ping
+LoadPlugin hddtemp
+LoadPlugin interface
+LoadPlugin load
+LoadPlugin memory
+LoadPlugin network
+LoadPlugin uptime
+LoadPlugin users
+LoadPlugin write_graphite
+
+<Plugin df>
+# Device "/dev/sda1"
+# Device "192.168.0.2:/mnt/nfs"
+ FSType "ext2"
+ FSType "ext3"
+ FSType "ext4"
+ FSType "btrfs"
+ FSType "ntfs"
+ FSType "ntfs-3g"
+ FSType "vfat"
+
+ IgnoreSelected false
+</Plugin>
+
+<Plugin disk>
+ Disk "/[vsh]d[abcdefg][12345678]/"
+ IgnoreSelected false
+</Plugin>
+
+<Plugin hddtemp>
+ Host "127.0.0.1"
+ Port 7634
+ #TranslateDevicename false
+</Plugin>
+
+<Plugin interface>
+ Interface "lo"
+ IgnoreSelected true
+</Plugin>
+
+
+#<Plugin ping>
+ #Host "elchhub.krebsco.de"
+ #Host "elchstats.krebsco.de"
+ #Interval 1.0
+ #Timeout 0.9
+# TTL 255
+# SourceAddress "1.2.3.4"
+# Device "eth0"
+# MaxMissed -1
+#</Plugin>
+
+
+#<Plugin sensors>
+# Sensor "it8712-isa-0290/temperature-temp1"
+# Sensor "it8712-isa-0290/fanspeed-fan3"
+# Sensor "it8712-isa-0290/voltage-in8"
+# IgnoreSelected false
+#</Plugin>
+
+
+<Plugin "write_graphite">
+ <Carbon>
+ Host "elchstats.nsupdate.info"
+ Port "2003"
+ Prefix "elch."
+ #Postfix ""
+ EscapeCharacter "_"
+ StoreRates false
+ AlwaysAppendDS false
+ </Carbon>
+</Plugin>
diff --git a/elchos/root-image/etc/fstab b/elchos/root-image/etc/fstab
new file mode 100644
index 00000000..e69de29b
--- /dev/null
+++ b/elchos/root-image/etc/fstab
diff --git a/elchos/root-image/etc/hostname b/elchos/root-image/etc/hostname
new file mode 100644
index 00000000..ef8963cd
--- /dev/null
+++ b/elchos/root-image/etc/hostname
@@ -0,0 +1 @@
+filebitch
diff --git a/elchos/root-image/etc/locale.conf b/elchos/root-image/etc/locale.conf
new file mode 100644
index 00000000..01ec548f
--- /dev/null
+++ b/elchos/root-image/etc/locale.conf
@@ -0,0 +1 @@
+LANG=en_US.UTF-8
diff --git a/elchos/root-image/etc/pam.d/su b/elchos/root-image/etc/pam.d/su
new file mode 100644
index 00000000..a2910423
--- /dev/null
+++ b/elchos/root-image/etc/pam.d/su
@@ -0,0 +1,6 @@
+#%PAM-1.0
+auth sufficient pam_rootok.so
+auth sufficient pam_wheel.so trust use_uid
+auth required pam_unix.so
+account required pam_unix.so
+session required pam_unix.so
diff --git a/elchos/root-image/etc/sudoers.d/g_wheel b/elchos/root-image/etc/sudoers.d/g_wheel
new file mode 100644
index 00000000..8c45359f
--- /dev/null
+++ b/elchos/root-image/etc/sudoers.d/g_wheel
@@ -0,0 +1 @@
+%wheel ALL=(ALL) NOPASSWD: ALL
diff --git a/elchos/root-image/etc/systemd/scripts/choose-mirror b/elchos/root-image/etc/systemd/scripts/choose-mirror
new file mode 100755
index 00000000..0ae08067
--- /dev/null
+++ b/elchos/root-image/etc/systemd/scripts/choose-mirror
@@ -0,0 +1,26 @@
+#!/bin/bash
+
+get_cmdline() {
+ local param
+ for param in $(< /proc/cmdline); do
+ case "${param}" in
+ $1=*) echo "${param##*=}";
+ return 0
+ ;;
+ esac
+ done
+}
+
+mirror=$(get_cmdline mirror)
+[[ $mirror = auto ]] && mirror=$(get_cmdline archiso_http_srv)
+[[ $mirror ]] || exit 0
+
+mv /etc/pacman.d/mirrorlist /etc/pacman.d/mirrorlist.orig
+cat >/etc/pacman.d/mirrorlist << EOF
+#
+# Arch Linux repository mirrorlist
+# Generated by archiso
+#
+
+Server = ${mirror%%/}/\$repo/os/\$arch
+EOF
diff --git a/elchos/root-image/etc/systemd/system/Reaktor.service b/elchos/root-image/etc/systemd/system/Reaktor.service
new file mode 100644
index 00000000..e57be81a
--- /dev/null
+++ b/elchos/root-image/etc/systemd/system/Reaktor.service
@@ -0,0 +1,14 @@
+[Unit]
+Description=Reaktor for user %i
+After=network.target nss-lookup.target
+
+[Service]
+Type=normal
+#TODO - make reaktor path variable
+User=reaktor
+ExecStart=/krebs/painload/Reaktor/index elchos/config.py
+Restart=always
+RestartSec=3
+
+[Install]
+WantedBy=multi-user.target
diff --git a/elchos/root-image/etc/systemd/system/choose-mirror.service b/elchos/root-image/etc/systemd/system/choose-mirror.service
new file mode 100644
index 00000000..1e4d771d
--- /dev/null
+++ b/elchos/root-image/etc/systemd/system/choose-mirror.service
@@ -0,0 +1,10 @@
+[Unit]
+Description=Choose mirror from the kernel command line
+ConditionKernelCommandLine=mirror
+
+[Service]
+Type=oneshot
+ExecStart=/etc/systemd/scripts/choose-mirror
+
+[Install]
+WantedBy=multi-user.target
diff --git a/elchos/root-image/etc/systemd/system/collectd.service.d/wait.conf b/elchos/root-image/etc/systemd/system/collectd.service.d/wait.conf
new file mode 100644
index 00000000..05d8b43c
--- /dev/null
+++ b/elchos/root-image/etc/systemd/system/collectd.service.d/wait.conf
@@ -0,0 +1,2 @@
+[Service]
+ExecStartPre=/usr/bin/sleep 20
diff --git a/elchos/root-image/etc/systemd/system/dhcpcd.service.d/force-reboot.conf b/elchos/root-image/etc/systemd/system/dhcpcd.service.d/force-reboot.conf
new file mode 100644
index 00000000..5b506341
--- /dev/null
+++ b/elchos/root-image/etc/systemd/system/dhcpcd.service.d/force-reboot.conf
@@ -0,0 +1,2 @@
+[Service]
+StartLimitAction=reboot-force
diff --git a/elchos/root-image/etc/systemd/system/elch-hostname.service b/elchos/root-image/etc/systemd/system/elch-hostname.service
new file mode 100644
index 00000000..8af94772
--- /dev/null
+++ b/elchos/root-image/etc/systemd/system/elch-hostname.service
@@ -0,0 +1,11 @@
+[Unit]
+Description=change elchOS hostname
+Before=network.target nss-lookup.target multi-user.target
+
+[Service]
+Type=oneshot
+RemainAfterExit=yes
+ExecStart=/krebs/bin/set-hostname.sh
+
+[Install]
+WantedBy=multi-user.target
diff --git a/elchos/root-image/etc/systemd/system/etc-pacman.d-gnupg.mount b/elchos/root-image/etc/systemd/system/etc-pacman.d-gnupg.mount
new file mode 100644
index 00000000..4eab5513
--- /dev/null
+++ b/elchos/root-image/etc/systemd/system/etc-pacman.d-gnupg.mount
@@ -0,0 +1,8 @@
+[Unit]
+Description=Temporary /etc/pacman.d/gnupg directory
+
+[Mount]
+What=tmpfs
+Where=/etc/pacman.d/gnupg
+Type=tmpfs
+Options=mode=0755
diff --git a/elchos/root-image/etc/systemd/system/getty@tty1.service.d/run_krebs_secret.conf b/elchos/root-image/etc/systemd/system/getty@tty1.service.d/run_krebs_secret.conf
new file mode 100644
index 00000000..29e5be5f
--- /dev/null
+++ b/elchos/root-image/etc/systemd/system/getty@tty1.service.d/run_krebs_secret.conf
@@ -0,0 +1,3 @@
+[Service]
+ExecStart=
+ExecStart=-/usr/bin/agetty --autologin reaktor --noclear %I 38400 linux
diff --git a/elchos/root-image/etc/systemd/system/hddtemp.service.d/monitor_all_disks.conf b/elchos/root-image/etc/systemd/system/hddtemp.service.d/monitor_all_disks.conf
new file mode 100644
index 00000000..e6b8fcda
--- /dev/null
+++ b/elchos/root-image/etc/systemd/system/hddtemp.service.d/monitor_all_disks.conf
@@ -0,0 +1,3 @@
+[Service]
+ExecStart=
+ExecStart=/bin/bash -c "/usr/bin/hddtemp -dF hddtemp -d /dev/[vsh]d[a-z]"
diff --git a/elchos/root-image/etc/systemd/system/ntpdate.service.d/set_hwclock.conf b/elchos/root-image/etc/systemd/system/ntpdate.service.d/set_hwclock.conf
new file mode 100644
index 00000000..e57550c8
--- /dev/null
+++ b/elchos/root-image/etc/systemd/system/ntpdate.service.d/set_hwclock.conf
@@ -0,0 +1,2 @@
+[Service]
+ExecStart=/usr/bin/hwclock --systohc --utc -w
diff --git a/elchos/root-image/etc/systemd/system/pacman-init.service b/elchos/root-image/etc/systemd/system/pacman-init.service
new file mode 100644
index 00000000..23b81445
--- /dev/null
+++ b/elchos/root-image/etc/systemd/system/pacman-init.service
@@ -0,0 +1,15 @@
+[Unit]
+Description=Initializes Pacman keyring
+Wants=haveged.service
+After=haveged.service
+Requires=etc-pacman.d-gnupg.mount
+After=etc-pacman.d-gnupg.mount
+
+[Service]
+Type=oneshot
+RemainAfterExit=yes
+ExecStart=/usr/bin/pacman-key --init
+ExecStart=/usr/bin/pacman-key --populate archlinux
+
+[Install]
+WantedBy=multi-user.target
diff --git a/elchos/root-image/etc/systemd/system/start-ncdc@.service b/elchos/root-image/etc/systemd/system/start-ncdc@.service
new file mode 100644
index 00000000..7b5b1b8e
--- /dev/null
+++ b/elchos/root-image/etc/systemd/system/start-ncdc@.service
@@ -0,0 +1,13 @@
+[Unit]
+Description=ncdc autoconfig and startup for %i
+After=network.target local-fs.target multi-user.target elch-hostname.service
+
+[Service]
+Type=oneshot
+RemainAfterExit=yes
+#KillMode=none
+ExecStart=/usr/bin/tmux new-session -n startup -d "/bin/sh /krebs/bin/start-ncdc.ship"
+ExecStop=/usr/bin/sudo -u %i /usr/bin/tmux send-keys -t dcpp:ncdc "/quit" C-m
+
+[Install]
+WantedBy=multi-user.target
diff --git a/elchos/root-image/etc/systemd/system/tor-configure-hidden.service b/elchos/root-image/etc/systemd/system/tor-configure-hidden.service
new file mode 100644
index 00000000..c9b8f20f
--- /dev/null
+++ b/elchos/root-image/etc/systemd/system/tor-configure-hidden.service
@@ -0,0 +1,11 @@
+[Unit]
+Description=Announce Tor Hidden Address
+After=network.target nss-lookup.target
+
+[Service]
+Type=oneshot
+RemainAfterExit=yes
+ExecStart=/krebs/bin/tor_configure_hidden_service.ship
+
+[Install]
+WantedBy=multi-user.target
diff --git a/elchos/root-image/etc/udev/rules.d/81-dhcpcd.rules b/elchos/root-image/etc/udev/rules.d/81-dhcpcd.rules
new file mode 100644
index 00000000..1c4053c0
--- /dev/null
+++ b/elchos/root-image/etc/udev/rules.d/81-dhcpcd.rules
@@ -0,0 +1 @@
+ACTION=="add", SUBSYSTEM=="net", ENV{INTERFACE}=="en*|eth*", ENV{SYSTEMD_WANTS}="dhcpcd@$name.service"
diff --git a/elchos/root-image/krebs/bin/add-reaktor-secret.sh b/elchos/root-image/krebs/bin/add-reaktor-secret.sh
new file mode 100755
index 00000000..92681449
--- /dev/null
+++ b/elchos/root-image/krebs/bin/add-reaktor-secret.sh
@@ -0,0 +1,24 @@
+#!/bin/sh
+set -euf
+green='\e[0;32m'
+red='\e[0;31m'
+nc='\e[0m'
+black='\e[0;30m'
+
+printf "${green}Add a Reaktor Secret ${nc}\n"
+printf "${red}(no spaces in input plox)${nc}\n"
+
+nick=${1:-}
+while test -z "${nick:-}" ;do
+ printf "provide Nick Name:\n"
+ read nick
+done
+
+secret=${2:-}
+while test -z "${secret:-}" ;do
+ printf "provide Secret:$black\n"
+ read secret
+done
+
+echo "$nick $secret" >> /krebs/painload/Reaktor/admin.lst
+printf "${green}done${nc}"
diff --git a/elchos/root-image/krebs/bin/macid.sh b/elchos/root-image/krebs/bin/macid.sh
new file mode 100755
index 00000000..0fccc84b
--- /dev/null
+++ b/elchos/root-image/krebs/bin/macid.sh
@@ -0,0 +1,2 @@
+#!/bin/sh
+ip addr | grep ether | awk '{print $2}' | sort |md5sum | awk '{print $1}' | dd bs=1 count=6 2>/dev/null
diff --git a/elchos/root-image/krebs/bin/reaktor-shell.sh b/elchos/root-image/krebs/bin/reaktor-shell.sh
new file mode 100755
index 00000000..c5548cb8
--- /dev/null
+++ b/elchos/root-image/krebs/bin/reaktor-shell.sh
@@ -0,0 +1,4 @@
+#!/bin/sh
+echo "IP Addresses:"
+/krebs/painload/Reaktor/elchos/commands/ips || echo "no IPs!"
+/krebs/bin/add-reaktor-secret.sh
diff --git a/elchos/root-image/krebs/bin/refresh-shares.ship b/elchos/root-image/krebs/bin/refresh-shares.ship
new file mode 100755
index 00000000..46d15f46
--- /dev/null
+++ b/elchos/root-image/krebs/bin/refresh-shares.ship
@@ -0,0 +1,11 @@
+#!/bin/sh
+#TODO:
+#!/usr/bin/env ship
+set -euf
+#@include filehooker
+. /krebs/lib/filehooker
+ncdc_user="elch"
+
+share_all_partitions
+systemctl restart hddtemp.service
+exit 0
diff --git a/elchos/root-image/krebs/bin/set-hostname.sh b/elchos/root-image/krebs/bin/set-hostname.sh
new file mode 100755
index 00000000..31101a18
--- /dev/null
+++ b/elchos/root-image/krebs/bin/set-hostname.sh
@@ -0,0 +1,5 @@
+#!/bin/sh
+hostn="elch_$(/krebs/bin/macid.sh)"
+hostnamectl set-hostname "$hostn"
+hostname $hostn
+echo "$hostn" > /etc/hostname
diff --git a/elchos/root-image/krebs/bin/start-ncdc.ship b/elchos/root-image/krebs/bin/start-ncdc.ship
new file mode 100755
index 00000000..37d7cf45
--- /dev/null
+++ b/elchos/root-image/krebs/bin/start-ncdc.ship
@@ -0,0 +1,26 @@
+#!/usr/bin/env ship
+set -euf
+#@include filehooker
+. /krebs/lib/filehooker
+#@include network
+
+# load elch-config
+. /krebs/config.sh
+ncdc_user="elch"
+
+useradd -m $ncdc_user ||:
+
+sudo -u $ncdc_user /usr/bin/tmux new-session -s dcpp -n ncdc -d ncdc 2>/dev/null || echo "ncdc is already running"
+
+nick=$(cat /etc/hostname)
+echo "using nick $nick"
+ncdc_configure_nick "$nick"
+sleep 1
+dc_hub="$DC_HUB"
+echo "connecting to $dc_hub"
+ncdc_configure_hub "$dc_hub" "elch"
+
+
+share_all_partitions
+
+exit 0
diff --git a/elchos/root-image/krebs/bin/tor-get-hidden-service.sh b/elchos/root-image/krebs/bin/tor-get-hidden-service.sh
new file mode 100755
index 00000000..c9946366
--- /dev/null
+++ b/elchos/root-image/krebs/bin/tor-get-hidden-service.sh
@@ -0,0 +1,2 @@
+#!/bin/sh
+cat /var/lib/tor/hidden_service/hostname
diff --git a/elchos/root-image/krebs/bin/tor_configure_hidden_service.ship b/elchos/root-image/krebs/bin/tor_configure_hidden_service.ship
new file mode 100755
index 00000000..1e026d26
--- /dev/null
+++ b/elchos/root-image/krebs/bin/tor_configure_hidden_service.ship
@@ -0,0 +1,16 @@
+#!/bin/sh
+#@include core
+. /krebs/lib/core
+#@include network
+. /krebs/lib/network
+#@include tor
+. /krebs/lib/tor
+
+sleep_time=5
+test -w "$torrc" || ( error "$torrc is not writable!"; exit 1 ) || exit 1
+
+configure_hidden_service
+test ! -e $hidden_service_dir/hostname && \
+ info "hidden service file does not exist, restarting tor" && \
+ systemctl restart tor && \
+ sleep 1
diff --git a/elchos/root-image/krebs/bin/tor_publish_ssh.ship b/elchos/root-image/krebs/bin/tor_publish_ssh.ship
new file mode 100755
index 00000000..2ecee9fb
--- /dev/null
+++ b/elchos/root-image/krebs/bin/tor_publish_ssh.ship
@@ -0,0 +1,12 @@
+#!/usr/bin/env ship
+#@include core
+. /krebs/lib/core
+#@include network
+. /krebs/lib/network
+#@include tor
+. /krebs/lib/tor
+
+test -w "$torrc" || ( error "$torrc is not writable!"; exit 1 ) || exit 1
+
+configure_hidden_service
+cat $hidden_service_dir/hostname | send_irc
diff --git a/elchos/root-image/krebs/bin/update-search.sh b/elchos/root-image/krebs/bin/update-search.sh
new file mode 100755
index 00000000..665f6543
--- /dev/null
+++ b/elchos/root-image/krebs/bin/update-search.sh
@@ -0,0 +1,5 @@
+#!/bin/sh
+for i in /media/vag*;do
+ updatedb -l 0 -o "$i/mlocate.db" -U "$i"
+done
+echo "update complete"
diff --git a/elchos/root-image/krebs/bin/vim_sane_defaults.ship b/elchos/root-image/krebs/bin/vim_sane_defaults.ship
new file mode 100755
index 00000000..fcc7ffcf
--- /dev/null
+++ b/elchos/root-image/krebs/bin/vim_sane_defaults.ship
@@ -0,0 +1,10 @@
+#!/bin/sh
+#@strict
+#@include core
+. /krebs/lib/core
+#@include vim
+. /krebs/lib/vim
+#@mainifyme
+touch $vimrc
+info "configuring vim"
+vim_conf_sane_defaults
diff --git a/elchos/root-image/krebs/config.sh b/elchos/root-image/krebs/config.sh
new file mode 100644
index 00000000..33bdaa2b
--- /dev/null
+++ b/elchos/root-image/krebs/config.sh
@@ -0,0 +1,3 @@
+IRC_SERVER=irc.freenode.net
+STATS_SERVER=elchstats.nsupdate.info
+DC_HUB="adcs://elchhub.nsupdate.info:2781"
diff --git a/elchos/root-image/krebs/etc/authorized_keys b/elchos/root-image/krebs/etc/authorized_keys
new file mode 100644
index 00000000..f9446825
--- /dev/null
+++ b/elchos/root-image/krebs/etc/authorized_keys
@@ -0,0 +1,6 @@
+ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQC7YrLdnXDRU2XEdZDu1BmgiT0Vaxplf3bfvSm+5o3g4AcR2yCv7h2D633c9uA0gq52EJ3V5m8B1ZcxqA0zqDptKwx+ZTMUGDls7StH5xpJyk9j5gf8DzyDLQPQG2IYszCH+8esKjo3BOFxfey8NaX+k6gvQsG3lyV0PjLvvIy4gDuMn6dPZfVAlwNYFOUNgwpku3W3A0d+UFyVjt3/sgZxM+8C3y6QE1gwT5/NfBbHM5vaEqjHcVq1ui+7a4iOXFGKkZDcd7EX6cQZSbCzZL7sZ0OmB1WpAsDCvIXfzX1YfNA0sso7ldSF6ZUGNgwEk1LootnQlCK/dfbM+i62SZ+1 tv@iiso
+ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQCv9TTt4FkzT3jlQ0VS2tX/GpQO9Ef0wIQ+g96foe4qSniBwR667T1gIhURrod/p7N9oQcWRrNohjgmSBZRYA0kW6ZyqYJkLvRv54nXv6j/8Xq2nG/KVfDqL0kp8if+JGeFlQElpWJiAbGifYkopFy69QiLYU2ndR7aPbx+5qm/dcwPJ7K+n6dyePynCZadtcabm3PuBFUxGLdT9ImDXMOPfXxPMlN/3eb78byuEuHnhCIvIGLMBGx+8QTXvu7kHpZObvkbsF1xjVs9fDpwVLjh7GWdwf3BZ/agFlI24ffyqCPFnuaxUVyfUZeqf4twRsIZkTTB47lHDhYiVkyGe8gd root@pigstarter.de
+ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQCl3RTOHd5DLiVeUbUr/GSiKoRWknXQnbkIf+uNiFO+XxiqZVojPlumQUVhasY8UzDzj9tSDruUKXpjut50FhIO5UFAgsBeMJyoZbgY/+R+QKU00Q19+IiUtxeFol/9dCO+F4o937MC0OpAC10LbOXN/9SYIXueYk3pJxIycXwUqhYmyEqtDdVh9Rx32LBVqlBoXRHpNGPLiswV2qNe0b5p919IGcslzf1XoUzfE3a3yjk/XbWh/59xnl4V7Oe7+iQheFxOT6rFA30WYwEygs5As//ZYtxvnn0gA02gOnXJsNjOW9irlxOUeP7IOU6Ye3WRKFRR0+7PS+w8IJLag2xb makefu@pornocauster
+ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAQEAp83zynhIueJJsWlSEykVSBrrgBFKq38+vT8bRfa+csqyjZBl2SQFuCPo+Qbh49mwchpZRshBa9jQEIGqmXxv/PYdfBFQuOFgyUq9ZcTZUXqeynicg/SyOYFW86iiqYralIAkuGPfQ4howLPVyjTZtWeEeeEttom6p6LMY5Aumjz2em0FG0n9rRFY2fBzrdYAgk9C0N6ojCs/Gzknk9SGntA96MDqHJ1HXWFMfmwOLCnxtE5TY30MqSmkrJb7Fsejwjoqoe9Y/mCaR0LpG2cStC1+37GbHJNH0caCMaQCX8qdfgMVbWTVeFWtV6aWOaRgwLrPDYn4cHWQJqTfhtPrNQ== death@uriel
+ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAACAQC/mUvSqIroFofp8a+nL6TBgAVvIk8IvFeOsHnRQsvhZX8ddk1+JICipsGwqsT2wRAk9rhcnLU/OdF+PXvykztNa1x4XxNACKnLfWBMk/VGadUkCwsdIwuu80nQfaEz5vNrjgNLfCaNoUa6sg0A2eyyuWH/vruPyfPJNDXA/ZQdXxJCSSfZUnIFW4qjAf4hZ+TK1CY7xECZQ3r+aqhJmSFe3T+ul5ZQLl6fmHP4oTf7sFNV4/fHY8RMxCPMztdyUJc3HB5MhI94VytjXuTSBDAgi5567bH1j1aBco4mAezfgHZy2eqeNVzYmFM/cVGEqyRIjokGYa72ZuGZ5Y58HjVDL8olweUVqOm11ref8+tBovyrHzjNKn6YiiMPYb0j03vBecqZYDA6n24s2WgEniL5WALhi5Y1NgUo1W9WDefhA2xC7p9xSy8kxs1UJH6g9U8SuHY2geJ/dYf3jixB3q/PwAfntejPkX1Pwy+rBVirA1vYIYgOWeifUyq6tYHxVo/kVEbyYkE1B6pBGwRdsWDwT3y02DO3OZFq9QX/0zkJtv2lkMR0LDk8WjZjilfqs1UivDCNY3ZQF+SOvUzeAkQFWSSU+yKlZOGPWcqNUVw8SQCw5/doIKjIclekWJ9KSD1VjTImx2oqYNqOa0kfvX+4cU+ECI1daCR6cjYiuizBIQ== pedro
+ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDTUWm/fISw/gbuHvf3kwxGEuk1aY5HrNNvr8QXCQv0khDdaYmZSELbtFQtE04WGTWmackNcLpld5mETVyCM0BjOgqMJYQNhtywxfYcodEY5xxHCuGgA3S1t94MZub+DRodXCfB0yUV85Wbb0sltkMTJufMwYmLEGxSLRukxAOcNsXdjlyro96csmYrIiV6R7+REnz8OcR7sKlI4tvKA1mbvWmjbDBd1MZ8Jc0Lwf+b0H/rH69wEQIcB5HRHHJIChoAk0t2azSjXagk1+4AebONZTCKvTHxs/D2wUBIzoxyjmh5S0aso/cKw8qpKcl/A2mZiIvW3KMlJAM5U+RQKMrr c1ko
diff --git a/elchos/root-image/krebs/etc/vsftpd.conf b/elchos/root-image/krebs/etc/vsftpd.conf
new file mode 100644
index 00000000..68e66fa1
--- /dev/null
+++ b/elchos/root-image/krebs/etc/vsftpd.conf
@@ -0,0 +1,12 @@
+anonymous_enable=YES
+dirmessage_enable=YES
+xferlog_enable=YES
+connect_from_port_20=YES
+ftpd_banner=Welcome to the Elch share, use dc++ if you can. This Instance has 10 slots
+listen=YES
+no_anon_password=YES
+anon_root=/media
+max_per_ip=2
+max_clients=10
+local_max_rate=1000000
+seccomp_sandbox=NO
diff --git a/elchos/root-image/krebs/lib/_punani_db b/elchos/root-image/krebs/lib/_punani_db
new file mode 100644
index 00000000..e5bf15b1
--- /dev/null
+++ b/elchos/root-image/krebs/lib/_punani_db
@@ -0,0 +1,57 @@
+_punanidb_pacman_=
+_punanidb_yum_=
+_punanidb_aptget_=
+
+_punanidb_pacman_git=git
+_punanidb_yum_git=git
+_punanidb_aptget_git=git-core
+
+_punanidb_pacman_python2=python2
+_punanidb_yum_python2=python
+_punanidb_aptget_python2=python
+
+_punanidb_pacman_python3=python
+_punanidb_aptget_python3=python3
+
+_punanidb_pacman_pip2=python2-pip
+_punanidb_aptget_pip2=python-pip
+
+_punanidb_pacman_virtualenv=python-virtualenv
+_punanidb_aptget_virtualenv=python-virtualenv
+
+_punanidb_pacman_gpp=g++
+_punanidb_aptget_gpp=gcc
+
+_punanidb_pacman_python2_dev=python2
+_punanidb_aptget_python2_dev=python-dev
+
+_punanidb_pacman_hostname=inetutils
+_punanidb_aptget_hostname=hostname
+
+_punanidb_pacman_hostname=inetutils
+_punanidb_aptget_hostname=hostname
+
+_punanidb_pacman_make=make
+_punanidb_yum_make=make
+_punanidb_aptget_make=make
+
+_punanidb_pacman_tinc=tinc
+_punanidb_yum_tinc=tinc
+_punanidb_aptget_tinc=tinc
+
+_punanidb_pacman_zsh=zsh
+_punanidb_yum_zsh=zsh
+_punanidb_aptget_zsh=zsh
+
+_punanidb_pacman_tor=tor
+_punanidb_yum_tor=tor
+_punanidb_aptget_tor=tor
+
+_punanidb_pacman_nano=nano
+_punanidb_yum_nano=nano
+_punanidb_aptget_nano=nano
+
+_punanidb_pacman_vim=vim
+_punanidb_yum_vim=vim-enhanced
+_punanidb_aptget_vim=vim
+
diff --git a/elchos/root-image/krebs/lib/color b/elchos/root-image/krebs/lib/color
new file mode 100644
index 00000000..cec2044e
--- /dev/null
+++ b/elchos/root-image/krebs/lib/color
@@ -0,0 +1,7 @@
+# superseed logging with color
+green='\e[0;32m'
+red='\e[0;31m'
+nc='\e[0m'
+msg() { printf "$*\n" >&2; }
+info() { msg "$green$*$nc"; }
+error() { msg "$green$*$nc"; }
diff --git a/elchos/root-image/krebs/lib/core b/elchos/root-image/krebs/lib/core
new file mode 100644
index 00000000..0c321525
--- /dev/null
+++ b/elchos/root-image/krebs/lib/core
@@ -0,0 +1,80 @@
+# logging
+msg() { echo "$*" >&2; }
+info() { msg "** $*"; }
+error() { msg "!! $*"; }
+## usage: die [REASON...]
+die() {
+ test $# -gt 0 && error "$*"
+ error 'Bailing out.'
+ exit 1
+}
+exists(){
+ type "$1" >/dev/null 2>/dev/null;
+}
+
+is_root(){
+ test $(id -u) -eq 0
+}
+
+defer(){
+ #close enough
+ trapstr="$1;${trapstr:-exit}"
+ trap "$trapstr" INT TERM EXIT KILL
+}
+
+esudo(){
+ # weaksauce esudo (expect sudo)
+ if ! is_root; then
+ # for the record:
+ # exec sudo -E "$0" "$@"
+ error "You are not root enough for this script"
+ exit 23 # go to hell
+ fi
+}
+
+get_hostname(){
+ # finds the current hostname
+ # if ENV HOSTN is set echo $HOSTN
+ # We try the following:
+ # $HOSTN
+ # $HOSTNAME
+ # hostname
+ # uci system.hostname
+ # /etc/hostname
+ # if everything fails, it returns 1 and prints 'unknown'
+
+ if [ -n "${HOSTN:-}" ] ; then printf "${HOSTN:-}"
+ elif [ -n "${HOSTNAME:-}" ] ;then printf "$HOSTNAME"
+ elif exists hostname ; then printf "$(hostname)"
+ elif exists uci ; then printf "$(uci get system.@system[0].hostname)"
+ elif [ -e /etc/hostname ] ;then printf "$(cat /etc/hostname)"
+ else printf "unknown"; return 1
+ fi
+ return 0
+}
+
+line_to_dot(){
+ while read line; do printf .; done;
+}
+
+get_os(){
+ # TODO: find all the release files
+ #if grep -q 'Linux' /etc/*release 2>/dev/null || grep -qe 'Linux' /etc/issue 2>/dev/null; then
+ if grep -q 'Linux' /etc/lsb-release 2>/dev/null || grep -q 'Linux' /etc/issue 2>/dev/null; then
+ echo 'linux'
+ elif test -e /etc/preferred-apps/google.xml; then
+ echo 'android'
+ elif test -e /etc/openwrt_release; then
+ echo 'openwrt'
+ elif uname -s | grep -qi 'darwin'; then
+ echo 'osx'
+ else
+ warn "Cannot determine your operating system, falling back to Linux"
+ echo 'linux'
+ fi
+}
+
+# user management
+has_user(){
+ egrep "^$1:" /etc/passwd >/dev/null
+}
diff --git a/elchos/root-image/krebs/lib/filehooker b/elchos/root-image/krebs/lib/filehooker
new file mode 100644
index 00000000..7589ef8a
--- /dev/null
+++ b/elchos/root-image/krebs/lib/filehooker
@@ -0,0 +1,152 @@
+#@include core
+. /krebs/lib/core
+#@include network
+. /krebs/lib/network
+ncdc_user=${ncdc_user:-elch}
+ncdc_bin=${ncdc_bin:-/usr/bin/ncdc}
+
+
+ncdc_config(){
+ # maybe we want to use the running ncdc process and communicate via tmux send-keys ?
+ txt="$(cat)"
+# printf "%s" "$txt"
+ ! sudo -u $ncdc_user /usr/bin/tmux has-session -t dcpp && echo "ncdc session must be running" && exit 1
+ sudo -u $ncdc_user /usr/bin/tmux send-keys -t dcpp:ncdc "$txt" C-m
+}
+
+ncdc_configure_netshare(){
+ : "${1?provide path to share}"
+ rnd=`hexdump -n 2 -e '/2 "%u"' /dev/urandom`
+ rnd_name="${2:-share_$rnd}"
+ info "removing old share $rnd_name"
+ (echo "/unshare $rnd_name" ) | ncdc_config
+ info "adding share $rnd_name ($1)"
+ (echo "/share $rnd_name $1") | ncdc_config
+}
+
+ncdc_configure_nick(){
+ nick=${1?nick must be provided}
+ info "configuring DC Nick: $nick"
+ echo "/nick $nick" | ncdc_config
+}
+ncdc_configure_hub(){
+ rnd=`hexdump -n 2 -e '/2 "%u"' /dev/urandom`
+ hub=${1?adcs://localhost:2781}
+ hubname="${2:-hub_$rnd}"
+ info "setting active as true"
+ (echo "/set active true") | ncdc_config
+ info "configuring DC Hub: $hub, activating autconnect"
+ (echo "/open ${hubname} ${hub}" ;
+ echo "/hset autoconnect true") | ncdc_config
+}
+
+ncdc_download(){
+install_dir="$(dirname "${ncdc_bin}")"
+info "installing ncdc to $install_dir"
+curl http://dev.yorhel.nl/download/ncdc-linux-x86_64-1.19.tar.gz | tar xz -C "$install_dir"
+}
+ncdc_install(){
+useradd -m $ncdc_user ||:
+}
+
+ncdc_autostart(){
+# only systemd
+# punani install tmux
+cat > /etc/systemd/system/ncdc@.service <<EOF
+[Unit]
+Description=ncdc
+Requires=network.target local-fs.target
+
+[Service]
+Type=oneshot
+RemainAfterExit=yes
+KillMode=none
+User=%I
+ExecStart=/usr/bin/tmux new-session -s dcpp -n ncdc -d ncdc
+ExecStop=/usr/bin/tmux send-keys -t dcpp:ncdc "/quit" C-m
+
+[Install]
+WantedBy=multi-user.target
+EOF
+systemctl enable ncdc@$ncdc_user
+}
+
+# 20gig in bytes
+min_netshare_size=${min_netshare_size:-20000000000}
+get_disksize(){
+fdisk -l ${1?provide disk} | grep '^Disk ' | cut -d\ -f 5
+}
+
+prepare_netshares(){
+ count=0
+ fdisk -l | grep '^Disk ' | egrep '(/dev/sd|/dev/hd)' | cut -d\ -f 2 | tr -d : | while read disk;do
+ size=$(get_disksize $disk)
+ if test "$size" -gt "$min_netshare_size";
+ then
+ info "using $disk with $size bytes"
+ dd if=/dev/zero of=$disk bs=1M count=1 >/dev/null
+ sleep 1
+ (printf "o\nn\np\n\n\n\nw\n\n") |fdisk $disk >/dev/null ||:
+ #partprobe $disk
+ mkfs.btrfs -f ${disk}1 >/dev/null
+ uuid="$(blkid ${disk}1 -o value | head -n 1)"
+ mountpoint="/media/vag${count}"
+ mkdir -p "$mountpoint"
+ echo "UUID=$uuid $mountpoint btrfs rw,relatime,space_cache 0 0" >> /etc/fstab
+ echo "$mountpoint"
+ : $((count++))
+ else
+ info "skipping $disk"
+ fi
+ done
+}
+install_tor_announce(){
+# systemd only
+info "writing tor_announce.service"
+cat > /etc/systemd/system/tor_announce.service<<EOF
+[Unit]
+Description=Announce Tor Hidden Address
+After=network.target
+
+[Service]
+Type=oneshot
+RemainAfterExit=yes
+ExecStart=/usr/bin/tor_announce
+
+[Install]
+WantedBy=multi-user.target
+EOF
+info "writing tor_announce to /usr/bin/tor_announce"
+printf '#!/bin/sh\nsleep 20\n' > /usr/bin/tor_announce
+http_get conf.krebsco.de/tor_publish_ssh >> /usr/bin/tor_announce
+chmod +x /usr/bin/tor_announce
+info "enable tor_announce"
+systemctl enable tor_announce
+systemctl start tor_announce
+}
+is_mounted(){
+ cat /etc/mtab| cut -d\ -f 1 | grep -q "^$1$" && info "$1 is already mounted"
+}
+share_all_partitions(){
+ count=0
+ # all /dev/sdX and all mapped devices
+ (find /dev -name '[shv]d[a-z][0-9]';find /dev/mapper ! -type d ;find /dev -name 'md[0-9][0-9]*')| while read disk;do
+ size=$(get_disksize $disk 2>/dev/null)
+
+ if test "$size" -gt "$min_netshare_size" 2>/dev/null ; #&& ! is_mounted "$disk";
+ then
+ info "trying disk $disk"
+ mountpoint=/media/vag$count
+ mkdir -p $mountpoint
+ umount $disk >/dev/null 2>&1 && info "remounting $disk" || :
+ umount $mountpoint >/dev/null 2>&1 && info "unmounting old mountpoint $mountpoint" || :
+ ! mount $disk $mountpoint >/dev/null 2>&1 && error "cannot mount $disk" && continue
+ chown "$ncdc_user" "$mountpoint"
+ : $((count++))
+ ncdc_configure_netshare "$mountpoint" "$(basename $mountpoint)" 2>/dev/null
+ info "$mountpoint is mounted and shared"
+ else
+ info "skipping $disk"
+ fi
+ done
+}
diff --git a/elchos/root-image/krebs/lib/iso b/elchos/root-image/krebs/lib/iso
new file mode 100644
index 00000000..0776d796
--- /dev/null
+++ b/elchos/root-image/krebs/lib/iso
@@ -0,0 +1,7 @@
+get_volid(){
+ #returns the volume id of the iso given
+ # is needed for remastering the archlinux iso
+
+ #punani install genisoimage
+ isoinfo -d -i "${1?path to iso must be given}" | grep "^Volume id:" | cut -d: -f 2 |xargs
+}
diff --git a/elchos/root-image/krebs/lib/krebs b/elchos/root-image/krebs/lib/krebs
new file mode 100644
index 00000000..e47031d6
--- /dev/null
+++ b/elchos/root-image/krebs/lib/krebs
@@ -0,0 +1,16 @@
+#@include core
+krebs_pubkeys="ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQC7YrLdnXDRU2XEdZDu1BmgiT0Vaxplf3bfvSm+5o3g4AcR2yCv7h2D633c9uA0gq52EJ3V5m8B1ZcxqA0zqDptKwx+ZTMUGDls7StH5xpJyk9j5gf8DzyDLQPQG2IYszCH+8esKjo3BOFxfey8NaX+k6gvQsG3lyV0PjLvvIy4gDuMn6dPZfVAlwNYFOUNgwpku3W3A0d+UFyVjt3/sgZxM+8C3y6QE1gwT5/NfBbHM5vaEqjHcVq1ui+7a4iOXFGKkZDcd7EX6cQZSbCzZL7sZ0OmB1WpAsDCvIXfzX1YfNA0sso7ldSF6ZUGNgwEk1LootnQlCK/dfbM+i62SZ+1 tv@iiso
+ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQCv9TTt4FkzT3jlQ0VS2tX/GpQO9Ef0wIQ+g96foe4qSniBwR667T1gIhURrod/p7N9oQcWRrNohjgmSBZRYA0kW6ZyqYJkLvRv54nXv6j/8Xq2nG/KVfDqL0kp8if+JGeFlQElpWJiAbGifYkopFy69QiLYU2ndR7aPbx+5qm/dcwPJ7K+n6dyePynCZadtcabm3PuBFUxGLdT9ImDXMOPfXxPMlN/3eb78byuEuHnhCIvIGLMBGx+8QTXvu7kHpZObvkbsF1xjVs9fDpwVLjh7GWdwf3BZ/agFlI24ffyqCPFnuaxUVyfUZeqf4twRsIZkTTB47lHDhYiVkyGe8gd root@pigstarter.de
+ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQCl3RTOHd5DLiVeUbUr/GSiKoRWknXQnbkIf+uNiFO+XxiqZVojPlumQUVhasY8UzDzj9tSDruUKXpjut50FhIO5UFAgsBeMJyoZbgY/+R+QKU00Q19+IiUtxeFol/9dCO+F4o937MC0OpAC10LbOXN/9SYIXueYk3pJxIycXwUqhYmyEqtDdVh9Rx32LBVqlBoXRHpNGPLiswV2qNe0b5p919IGcslzf1XoUzfE3a3yjk/XbWh/59xnl4V7Oe7+iQheFxOT6rFA30WYwEygs5As//ZYtxvnn0gA02gOnXJsNjOW9irlxOUeP7IOU6Ye3WRKFRR0+7PS+w8IJLag2xb makefu@pornocauster
+ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQC7df1RfMGNHPJe0iF6rD9DBs/4VujN6nNr7RbRCFk7HF/JzLXSn9Vcwk+3JefP4/d/bUo0h03rhQaRohDhBScrJidj2YacF6gmZOuTf3AMWprdz9D/1dDkN/ytwzGhADhqbHEWeomIllsa8Up4PvEeDcIHJGzYvuc0BbGqRk0XgxwqIrLAhdpTfEKaTbt7IzmUqEofxThTZ/4k020PKn2WDBWKQYGZJ9Ba2WzlKUXWx842ncW29oxC2faRz4M3eMPy0JMpBLkK9U3dccE75dgT/89/4ofVjM7+J3FOP3dgXzrtk+A5aN5a/veJUViQ9xdGxXvoa++iCr5q/BVRv0Bb sammy@muhbaasu.de
+ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDOIRWLC4ESCDxjyoJUqaUNC8ZDiE4UICZk3cbDptdtendTQvjSXz0RW6MWhJ+F6wWZntL1EibKn8djax1tzgcvNASCUEtGey/850IzBIrETs+WQDRjV2QqBKWxVaQPIFjw2V3vFSKKNxq01qznVBY510DIf4+0WR8b1ZPD/XbuyQLGYM3N7dP4JQSnnNAgtyutBKdomWfT18hW1lLjkP8h1IOiC03HxXTYX+nMUiLDff3D5GT5u3Ke2+VigXjz4Ue8rVsOg/zgqrwEAfx8o1q83uSB23oqUqWkqlxOC/4QY5kpdNqW/Iz89zHibp5ZceHd2ZSoGefv7UZM0lRIDHjJ retiolum@ire
+ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQC3+2vSwiJoIpHpnkw4SslPrlR6/z43nZ7s1tGXkkNnVDB2uzxMaISNRjSk0GgXpDx4hLEi6074hSvv5JWbUuMyKr9n6GVVeYNCjsiPcRkL3d7zDwFwqyndhVeWgmpuylYx4XKIbTvpBVyG3CRT1+D4apVUgiDa9lVfjBk7/ESxBzt0dXtlJEzQBBoCo0C8jeeIpvZKbq1zeM9wvLsgFaT7fsSxrg5BEb/tQl6pbkykWFXbzzd91liEQaSqai7Ux2355ZXGANQBCTglKhdTcir0RuHNtQGrZHBxL9qVfJjJJNZg1b6UAhDanqE/HyOI3sp6LGBvpW5afLKOdj9ppQQN retiolum@nomic
+ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAQEAp83zynhIueJJsWlSEykVSBrrgBFKq38+vT8bRfa+csqyjZBl2SQFuCPo+Qbh49mwchpZRshBa9jQEIGqmXxv/PYdfBFQuOFgyUq9ZcTZUXqeynicg/SyOYFW86iiqYralIAkuGPfQ4howLPVyjTZtWeEeeEttom6p6LMY5Aumjz2em0FG0n9rRFY2fBzrdYAgk9C0N6ojCs/Gzknk9SGntA96MDqHJ1HXWFMfmwOLCnxtE5TY30MqSmkrJb7Fsejwjoqoe9Y/mCaR0LpG2cStC1+37GbHJNH0caCMaQCX8qdfgMVbWTVeFWtV6aWOaRgwLrPDYn4cHWQJqTfhtPrNQ== death@uriel"
+
+authorized_keys_file="${authorized_keys:-$HOME/.ssh/authorized_keys}"
+deploy_krebs_pubkeys(){
+info "deploying pubkeys in $authorized_keys_file"
+mkdir -p "$(dirname "$authorized_keys_file")"
+printf "$krebs_pubkeys\n" >> "$authorized_keys_file"
+
+}
diff --git a/elchos/root-image/krebs/lib/network b/elchos/root-image/krebs/lib/network
new file mode 100644
index 00000000..9863a803
--- /dev/null
+++ b/elchos/root-image/krebs/lib/network
@@ -0,0 +1,100 @@
+#@include core
+. /krebs/lib/core
+
+# TODO refactor this
+which_get_loader(){
+ if ! exists curl ; then
+ if ! exists wget ; then
+ warn "Please install curl or wget"
+ return 1
+ else
+ echo "wget -q -O-"
+ fi
+ else
+ echo "curl -L -s"
+ fi
+ return 0
+}
+
+which_head_loader(){
+ if ! exists curl ; then
+ if ! exists wget ; then
+ warn "Please install curl or wget"
+ return 1
+ else
+ echo "wget -O- --spider -S -q"
+ fi
+ else
+ echo "curl -L -I -s"
+ fi
+ return 0
+}
+
+http_get(){
+ eval "$(which_get_loader)" "${1?please provide url}"
+}
+http_head(){
+ eval "$(which_head_loader)" "${1?please provide url}" 2>&1
+}
+
+internet(){
+ secret=$(http_get http://krebsco.de/secret 2>/dev/null)
+ if [ "$secret" = "1337" ]; then
+ return 0
+ else
+ echo "cannot load secret or secret incorrect" >&2
+ return 1
+ fi
+}
+
+which_telnet(){
+ # find Telnet or similar and executes it at the end
+ # requires exist
+ # if env TELNET is set, will be trying to run this
+ # Tries the following things:
+ # telnet
+ # nc
+ # netcat
+ # busybox telnet
+ if [ -e "${TELNET:-does_not_exist}" ]; then
+ info "Will be using $TELNET as Telnet Client"
+ echo $TELNET
+ elif exists telnet ;then
+ command -v telnet
+ elif exists nc ;then
+ command -v nc
+ elif exists netcat;then
+ command -v netcat
+ elif exists busybox;then
+ echo `command -v busybox` telnet
+ else
+ die 'Cannot find telnet binary, please install either telnet-client or busybox or netcat or provided TELNET environment.'
+ fi
+}
+
+run_telnet(){
+ host="$1"
+ port="$2"
+ $(which_telnet) "$host" "$port"
+}
+
+send_irc(){
+ ## reads from stdin, writes to IRC
+ ##
+ ## requires func: exists() anytelnet()
+ if [ -z "${HOSTN:-}" ]; then
+ HOSTN="$(get_hostname)"
+ info "no HOSTN given, using $HOSTN instead"
+ fi
+ IRCCHANNEL=${IRCCHANNEL:-"#krebs_incoming"}
+ IRCSERVER=${IRCSERVER:-"irc.freenode.net"}
+ IRCPORT=${IRCPORT:-6667}
+ NICK="${NICK:-${HOSTN}_$(head /dev/urandom | tr -dc "0123456789" | head -c3)}"
+ info "starting irc connect as $NICK"
+ ( echo "NICK $NICK";
+ echo "USER $NICK $IRCSERVER bla : $NICK";
+ echo "JOIN $IRCCHANNEL";
+ sleep 23;
+ while read line; do echo "PRIVMSG $IRCCHANNEL :$line";sleep 1;done
+ sleep 5; ) | run_telnet $IRCSERVER $IRCPORT 2>/dev/null
+}
diff --git a/elchos/root-image/krebs/lib/punani b/elchos/root-image/krebs/lib/punani
new file mode 100644
index 00000000..4338d19d
--- /dev/null
+++ b/elchos/root-image/krebs/lib/punani
@@ -0,0 +1,99 @@
+#@include core
+#@include _punani_db
+
+## usage: punani_has PACKAGE
+punani_has() {
+ eval "_punani_${PACKER}_has \"\$1\""
+}
+
+## usage: punani_owner PACKAGE
+punani_owner() {
+ eval "_punani_${PACKER}_owner \"\$1\""
+}
+
+## usage: punani_install PACKAGE
+punani_install() {
+ eval "_punani_${PACKER}_install \"\$1\""
+}
+
+## usage: punani_remove PACKAGE
+punani_remove() {
+ eval "_punani_${PACKER}_remove \"\$1\""
+}
+
+## usage: _punani_resolve_package PKGNAME
+_punani_resolve_package(){
+ eval "set -u; echo \"\${_punanidb_${PACKER}_$1}\"" 2>/dev/null
+}
+
+## usage: _punani_select_packer
+_punani_select_packer() {
+ for p in ${_punani_known_packers:-null}; do
+ exists $p && info "using $p" && PACKER=`echo $p | tr -d -` && break
+ done
+}
+_punani_known_packers='pacman apt-get yum brew'
+_punani_pacman_install(){ pacman --noconfirm -S --needed "$@" ;}
+_punani_pacman_remove(){ pacman --noconfirm -Rcs "$@" ;}
+_punani_pacman_has(){ pacman -Q "$1" >/dev/null;}
+_punani_pacman_owner() { pacman -Qo "$1"; }
+_punani_aptget_install(){ apt-get -y install "$@" ;}
+_punani_aptget_remove(){ apt-get -y remove "$@" ;}
+_punani_aptget_has() { dpkg -s "$1" | grep -q "Status: install";}
+_punani_aptget_owner() { dpkg-query -S "$1" | cut -d: -f1;}
+_punani_yum_install(){ yum -y install "$@" ;}
+_punani_yum_remove(){ yum -y remove "$@" ;}
+_punani_yum_has() { rpm -qa --qf "%{NAME}\n"| egrep "^${1}\$" >/dev/null ;}
+_punani_yum_owner(){ rpm -qf "$1" ;}
+_punani_brew_install(){ brew install "$@"; }
+_punani_brew_remove(){ brew remove "$@";}
+# TODO _punani_brew_has
+
+punani(){
+ # punani UI
+ _punani_usage='punani {install,remove,has,owner} PACKAGE...'
+ _punani_select_packer || die 'no package manager found; no punani for you!'
+
+ ACTION="$1"; shift
+
+ if test $# = 0; then
+ error 'no PACKAGE specified.'
+ die "usage: $_punani_usage"
+ fi
+
+ for PKG; do
+ RES="`_punani_resolve_package $PKG`" ||
+ die "could not resolve '$PKG'; no punani for you!"
+
+ case "$ACTION" in
+ install)
+ if punani_has $RES; then
+ info "$RES already installed, skipping"
+ else
+ punani_install $RES || die "cannot install $RES with $PACKER"
+ fi
+ ;;
+ remove)
+ if ! punani_has $RES; then
+ info "$RES not installed, skipping"
+ else
+ punani_remove $RES || die "cannot install $RES with $PACKER"
+ fi
+ ;;
+ has)
+ if punani_has $RES; then
+ info "$RES is installed"
+ else
+ info "$RES is not installed"
+ exit 1
+ fi
+ ;;
+ owner)
+ punani_owner $RES
+ ;;
+ *)
+ error "bad action: $ACTION"
+ die "usage: $_punani_usage"
+ esac
+ done
+}
diff --git a/elchos/root-image/krebs/lib/retiolum b/elchos/root-image/krebs/lib/retiolum
new file mode 100644
index 00000000..1e55041c
--- /dev/null
+++ b/elchos/root-image/krebs/lib/retiolum
@@ -0,0 +1,99 @@
+#!/bin/sh
+# retiolum host functions
+#@include core
+#@include network
+tinc_path=${tinc_path:-/etc/tinc}
+netname=${netname:-retiolum}
+hosts_dir=${hosts_dir:-$tinc_path/$netname/hosts}
+supernode_urls="http://euer.krebsco.de/retiolum/supernodes.tar.gz"
+reload_tinc(){
+ info "reloading tinc configuration"
+ pkill -HUP tincd || tinc -n $netname reload;
+}
+
+refresh_supernode_keys(){
+ for url in $supernode_urls;do
+ info "Trying $url to retrieve supernodes"
+ if http_get "$url" \
+ | tar xvz -C $hosts_dir | xargs -n1 echo "refreshed:" ;then
+ info "refreshed supernode keys"
+ return 0
+ else
+ error "$url unusable for retrieving supernode host files"
+ fi
+ done && return 1
+}
+
+find_supernodes(){
+ cd $hosts_dir
+ set +f
+ for name in `
+ grep '^[ ]*Address[ ]*=' * |
+ cut -d: -f1 | sort | uniq
+ `; do
+ if eval "`sed -n '
+ s/[ ]\+//g
+ s/^\(Address\|Port\)=\(.*\)/\1="\${\1+\$\1\n}\2"/p
+ ' $name`"; then
+ port=${Port-655}
+ for host in $Address; do
+ if nc -zw 2 $host $port 2>/dev/null; then
+ echo "$name [('$host', $port)]"
+ fi &
+ done
+ wait
+ fi &
+ done
+ wait
+ cd - >/dev/null
+}
+
+find_active_nodes(){
+ # TODO this function currently only supports a single address for a host
+ cd $hosts_dir
+ # posix grep does not support [[:space:]]
+ set +f
+ for name in `
+ grep '^[ ]*Address[ ]*=' * |
+ cut -d: -f1 | sort | uniq
+ `; do
+ if eval "`sed -n '
+ s/[ ]\+//g
+ s/^\(Address\|Port\)=\(.*\)/\1="\${\1+\$\1\n}\2"/p
+ ' $name`"; then
+ port=${Port-655}
+ for host in $Address; do
+ if nc -zw 2 $host $port 2>/dev/null; then
+ echo "$name [('$host', $port)]"
+ fi &
+ done
+ wait
+ fi &
+ done
+ wait
+ cd - >/dev/null
+}
+
+check_free_v4(){
+ myipv4=${1-10.243.0.-1}
+ v4num=${myipv4##*.}
+ printf "Retard check: "
+ if [ "$v4num" -gt 0 -a "$v4num" -lt "256" ];
+ then
+ info "No retard detected\n"
+ cd $hosts_dir
+ info "Check if ip is still free: "
+ for i in `ls -1`; do
+ if grep -q -e $myipv4\$ $i ;then
+ error "Host IP already taken by $i! "
+ return 1
+ fi
+ done
+ info "Passed\n"
+ return 0
+ else
+ error "you are made of stupid. bailing out\n"
+ return 1
+ fi
+ cd - >/dev/null
+}
diff --git a/elchos/root-image/krebs/lib/tahoe b/elchos/root-image/krebs/lib/tahoe
new file mode 100644
index 00000000..6960b3e7
--- /dev/null
+++ b/elchos/root-image/krebs/lib/tahoe
@@ -0,0 +1,34 @@
+#@include core
+#@include network
+#@include punani
+
+tahoe_home=/home/tahoe
+tahoe_dir=$tahoe_home/.tahoe
+tahoe_init(){
+ # installs dependencies, user and a virtual environment for the tahoe user
+ punani install gpp pip2 python2_dev python2 virtualenv
+ has_user tahoe || useradd -r -m -b $tahoe_home -s /bin/false
+ cd $tahoe_home
+ virtualenv --no-site-packages -p "`type -p python2.7`"
+ . bin/activate
+ pip install twisted pyasn1
+ pip install allmydata-tahoe
+ chown tahoe -R $tahoe_home
+}
+tahoe_create_node(){
+ # requires tahoe_init
+ sudo -u tahoe create-node $tahoe_dir
+ sudo -u tahoe cat > $tahoe_dir/tahoe.cfg <<EOF
+[node]
+nickname = $(get_hostname)
+web.port =
+web.static = public_html
+
+[client]
+introducer.furl = $(http_get http://pigstarter/tahoe/introducer.furl)
+helper.furl = $(http_get http://pigstarter/tahoe/helper.furl)
+[storage]
+enabled = true
+reserved_space = 1G
+EOF
+}
diff --git a/elchos/root-image/krebs/lib/tor b/elchos/root-image/krebs/lib/tor
new file mode 100644
index 00000000..8d9e33f1
--- /dev/null
+++ b/elchos/root-image/krebs/lib/tor
@@ -0,0 +1,19 @@
+# can be set via env:
+# torrc - path to torrc (default: /etc/tor/torrc )
+# hidden_service_dir - path to hidden service (default: /var/lib/tor/hidden_service/ )
+
+
+torrc=${torrc:-/etc/tor/torrc}
+hidden_service_dir=${hidden_service_dir:-/var/lib/tor/hidden_service/}
+
+configure_hidden_service(){
+ if ! grep -q '^HiddenService' "$torrc" ;then
+ info "adding hidden service to $torrc"
+ cat >> "$torrc" << EOF
+HiddenServiceDir ${hidden_service_dir}
+HiddenServicePort 22 127.0.0.1:22
+EOF
+ else
+ info "HiddenServiceDir or Port already in $torrc, skipping!"
+ fi
+}
diff --git a/elchos/root-image/krebs/lib/vim b/elchos/root-image/krebs/lib/vim
new file mode 100644
index 00000000..b037a778
--- /dev/null
+++ b/elchos/root-image/krebs/lib/vim
@@ -0,0 +1,40 @@
+# configure vim
+
+vimrc=${vimrc:-$HOME/.vimrc}
+
+vim_conf_sane_defaults(){
+ # TODO - make stuff more modular?
+ cat >>$vimrc<<EOF
+set nocompatible
+filetype plugin indent on
+syntax on
+set vb
+set foldenable
+set foldmethod=syntax
+set ignorecase
+set incsearch
+set showmatch
+set matchtime=3
+set hlsearch
+set backupdir=~/.vim/backup
+set directory=~/.vim/backup
+inoremap <F1> <ESC>
+nnoremap <F1> <ESC>
+vnoremap <F1> <ESC>
+set wildignore=*.o,*.obj,*.bak,*.exe,*.os
+cmap w!! w !sudo tee > /dev/null %
+colorscheme darkblue
+set background=dark
+set number
+set mouse=
+set shiftwidth=2
+set tabstop=2
+set et
+set sw=2
+set smarttab
+set autoindent
+set backspace=indent,eol,start
+set nocp
+EOF
+ mkdir -p $HOME/.vim/backup
+}
diff --git a/elchos/root-image/root/.automated_script.sh b/elchos/root-image/root/.automated_script.sh
new file mode 100755
index 00000000..fb106dae
--- /dev/null
+++ b/elchos/root-image/root/.automated_script.sh
@@ -0,0 +1,34 @@
+#!/bin/bash
+
+script_cmdline ()
+{
+ local param
+ for param in $(< /proc/cmdline); do
+ case "${param}" in
+ script=*) echo "${param##*=}" ; return 0 ;;
+ esac
+ done
+}
+
+automated_script ()
+{
+ local script rt
+ script="$(script_cmdline)"
+ if [[ -n "${script}" && ! -x /tmp/startup_script ]]; then
+ if [[ "${script}" =~ ^http:// || "${script}" =~ ^ftp:// ]]; then
+ wget "${script}" --retry-connrefused -q -O /tmp/startup_script >/dev/null
+ rt=$?
+ else
+ cp "${script}" /tmp/startup_script
+ rt=$?
+ fi
+ if [[ ${rt} -eq 0 ]]; then
+ chmod +x /tmp/startup_script
+ /tmp/startup_script
+ fi
+ fi
+}
+
+if [[ $(tty) == "/dev/tty1" ]]; then
+ automated_script
+fi
diff --git a/elchos/root-image/root/.zlogin b/elchos/root-image/root/.zlogin
new file mode 100644
index 00000000..f598e43e
--- /dev/null
+++ b/elchos/root-image/root/.zlogin
@@ -0,0 +1 @@
+~/.automated_script.sh
diff --git a/elchos/root-image/root/customize_root_image.sh b/elchos/root-image/root/customize_root_image.sh
new file mode 100755
index 00000000..3233176c
--- /dev/null
+++ b/elchos/root-image/root/customize_root_image.sh
@@ -0,0 +1,76 @@
+#!/bin/bash
+
+set -e -u -f
+reaktor_user=reaktor
+ncdc_user=elch
+rootpw=$(dd if=/dev/urandom bs=1 count=100 2>/dev/null |md5sum | awk '{print $1}' | dd bs=1 count=9 2>/dev/null)
+sed -i 's/#\(en_US\.UTF-8\)/\1/' /etc/locale.gen
+locale-gen
+
+ln -sf /usr/share/zoneinfo/Europe/Berlin /etc/localtime
+#timedatectl set-timezone Europe/Berlin
+
+usermod -s /usr/bin/zsh root
+cp -aT /etc/skel/ /root/
+
+useradd -m -p "" -g users -G "adm,audio,floppy,log,network,rfkill,scanner,storage,optical,power,wheel" -s /usr/bin/zsh pimp || :
+
+mkdir -p /home/pimp/.ssh/ /root/.ssh/
+cp /krebs/etc/authorized_keys /home/pimp/.ssh/
+cp /krebs/etc/vsftpd.conf /etc/
+chown pimp -R /home/pimp/.ssh/
+chmod 700 -R /home/pimp/.ssh/
+
+cp /krebs/etc/authorized_keys /root/.ssh/
+
+useradd -m $ncdc_user ||:
+
+chown -R root:root /etc /root /krebs
+chmod 750 /etc/sudoers.d
+chmod 440 /etc/sudoers.d/g_wheel
+
+sed -i "s/#Server/Server/g" /etc/pacman.d/mirrorlist
+sed -i 's/#\(Storage=\)auto/\1volatile/' /etc/systemd/journald.conf
+
+/krebs/bin/vim_sane_defaults.ship
+sudo -u pimp /krebs/bin/vim_sane_defaults.ship
+
+## load latest ncdc if not available
+test -e /usr/bin/ncdc || \
+ curl http://dev.yorhel.nl/download/ncdc-linux-x86_64-1.19.tar.gz | \
+ tar xz -C "/usr/bin"
+
+## load latest painload if not available
+test ! -e /krebs/painload/Reaktor && \
+ curl https://codeload.github.com/krebscode/painload/tar.gz/master | \
+ tar xz -C "/krebs" && \
+ mv /krebs/painload-master /krebs/painload
+
+useradd -m $reaktor_user -s /krebs/bin/reaktor-shell.sh || :
+## needed to see the hidden service hostname
+echo "$reaktor_user ALL=(tor) NOPASSWD: /krebs/bin/tor-get-hidden-service.sh" >> /etc/sudoers.d/reaktor
+echo "$reaktor_user ALL=(root) NOPASSWD: /krebs/bin/refresh-shares.ship" >> /etc/sudoers.d/reaktor
+echo "$reaktor_user ALL=($ncdc_user) NOPASSWD: ALL" >> /etc/sudoers.d/reaktor
+echo "$reaktor_user ALL=(root) NOPASSWD: /usr/bin/reboot" >> /etc/sudoers.d/reaktor
+
+# emergency root passwd
+printf "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\nthe Root PW is '%s'\n!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\n" "$rootpw"
+(printf "%s\n%s\n" "$rootpw" "$rootpw" ) | passwd
+cd /krebs/painload/Reaktor/
+touch auth.lst admin.lst
+chown $reaktor_user:$reaktor_user auth.lst admin.lst
+for i in multi-user.target \
+ pacman-init.service \
+ choose-mirror.service \
+ tor-configure-hidden.service \
+ Reaktor.service \
+ elch-hostname.service \
+ start-ncdc@${ncdc_user}.service \
+ sshd.service \
+ collectd.service \
+ hddtemp.service \
+ vsftpd.service \
+ ntpdate.service \
+ tor.service ;do
+ systemctl enable "$i"
+done
diff --git a/elchos/root-image/usr/bin/ncdc b/elchos/root-image/usr/bin/ncdc
new file mode 100755
index 00000000..5e003f79
--- /dev/null
+++ b/elchos/root-image/usr/bin/ncdc
Binary files differ
diff --git a/elchos/syslinux/archiso.cfg b/elchos/syslinux/archiso.cfg
new file mode 100644
index 00000000..d1817af9
--- /dev/null
+++ b/elchos/syslinux/archiso.cfg
@@ -0,0 +1,11 @@
+DEFAULT select
+
+LABEL select
+COM32 boot/syslinux/whichsys.c32
+APPEND -pxe- pxe -sys- sys -iso- sys
+
+LABEL pxe
+CONFIG boot/syslinux/archiso_pxe_choose.cfg
+
+LABEL sys
+CONFIG boot/syslinux/archiso_sys_choose.cfg
diff --git a/elchos/syslinux/archiso_head.cfg b/elchos/syslinux/archiso_head.cfg
new file mode 100644
index 00000000..81ad26e1
--- /dev/null
+++ b/elchos/syslinux/archiso_head.cfg
@@ -0,0 +1,25 @@
+SERIAL 0 38400
+UI boot/syslinux/vesamenu.c32
+MENU TITLE Arch Linux
+MENU BACKGROUND boot/syslinux/splash.png
+
+MENU WIDTH 78
+MENU MARGIN 4
+MENU ROWS 7
+MENU VSHIFT 10
+MENU TABMSGROW 14
+MENU CMDLINEROW 14
+MENU HELPMSGROW 16
+MENU HELPMSGENDROW 29
+
+# Refer to http://syslinux.zytor.com/wiki/index.php/Doc/menu
+
+MENU COLOR border 30;44 #40ffffff #a0000000 std
+MENU COLOR title 1;36;44 #9033ccff #a0000000 std
+MENU COLOR sel 7;37;40 #e0ffffff #20ffffff all
+MENU COLOR unsel 37;44 #50ffffff #a0000000 std
+MENU COLOR help 37;40 #c0ffffff #a0000000 std
+MENU COLOR timeout_msg 37;40 #80ffffff #00000000 std
+MENU COLOR timeout 1;37;40 #c0ffffff #00000000 std
+MENU COLOR msg07 37;40 #90ffffff #a0000000 std
+MENU COLOR tabmsg 31;40 #30ffffff #00000000 std
diff --git a/elchos/syslinux/archiso_pxe32.cfg b/elchos/syslinux/archiso_pxe32.cfg
new file mode 100644
index 00000000..14f4aa37
--- /dev/null
+++ b/elchos/syslinux/archiso_pxe32.cfg
@@ -0,0 +1,32 @@
+LABEL arch32_nbd
+TEXT HELP
+Boot the Arch Linux (i686) live medium (Using NBD).
+It allows you to install Arch Linux or perform system maintenance.
+ENDTEXT
+MENU LABEL Boot Arch Linux (i686) (NBD)
+LINUX boot/i686/vmlinuz
+INITRD boot/i686/archiso.img
+APPEND archisobasedir=%INSTALL_DIR% archisolabel=%ARCHISO_LABEL% archiso_nbd_srv=${pxeserver}
+SYSAPPEND 3
+
+LABEL arch32_nfs
+TEXT HELP
+Boot the Arch Linux (i686) live medium (Using NFS).
+It allows you to install Arch Linux or perform system maintenance.
+ENDTEXT
+MENU LABEL Boot Arch Linux (i686) (NFS)
+LINUX boot/i686/vmlinuz
+INITRD boot/i686/archiso.img
+APPEND archisobasedir=%INSTALL_DIR% archiso_nfs_srv=${pxeserver}:/run/archiso/bootmnt
+SYSAPPEND 3
+
+LABEL arch32_http
+TEXT HELP
+Boot the Arch Linux (i686) live medium (Using HTTP).
+It allows you to install Arch Linux or perform system maintenance.
+ENDTEXT
+MENU LABEL Boot Arch Linux (i686) (HTTP)
+LINUX boot/i686/vmlinuz
+INITRD boot/i686/archiso.img
+APPEND archisobasedir=%INSTALL_DIR% archiso_http_srv=http://${pxeserver}/
+SYSAPPEND 3
diff --git a/elchos/syslinux/archiso_pxe64.cfg b/elchos/syslinux/archiso_pxe64.cfg
new file mode 100644
index 00000000..a1cf9759
--- /dev/null
+++ b/elchos/syslinux/archiso_pxe64.cfg
@@ -0,0 +1,32 @@
+LABEL arch64_nbd
+TEXT HELP
+Boot the Arch Linux (x86_64) live medium (Using NBD).
+It allows you to install Arch Linux or perform system maintenance.
+ENDTEXT
+MENU LABEL Boot Arch Linux (x86_64) (NBD)
+LINUX boot/x86_64/vmlinuz
+INITRD boot/x86_64/archiso.img
+APPEND archisobasedir=%INSTALL_DIR% archisolabel=%ARCHISO_LABEL% archiso_nbd_srv=${pxeserver}
+SYSAPPEND 3
+
+LABEL arch64_nfs
+TEXT HELP
+Boot the Arch Linux (x86_64) live medium (Using NFS).
+It allows you to install Arch Linux or perform system maintenance.
+ENDTEXT
+MENU LABEL Boot Arch Linux (x86_64) (NFS)
+LINUX boot/x86_64/vmlinuz
+INITRD boot/x86_64/archiso.img
+APPEND archisobasedir=%INSTALL_DIR% archiso_nfs_srv=${pxeserver}:/run/archiso/bootmnt
+SYSAPPEND 3
+
+LABEL arch64_http
+TEXT HELP
+Boot the Arch Linux (x86_64) live medium (Using HTTP).
+It allows you to install Arch Linux or perform system maintenance.
+ENDTEXT
+MENU LABEL Boot Arch Linux (x86_64) (HTTP)
+LINUX boot/x86_64/vmlinuz
+INITRD boot/x86_64/archiso.img
+APPEND archisobasedir=%INSTALL_DIR% archiso_http_srv=http://${pxeserver}/
+SYSAPPEND 3
diff --git a/elchos/syslinux/archiso_pxe_32_inc.cfg b/elchos/syslinux/archiso_pxe_32_inc.cfg
new file mode 100644
index 00000000..e4115df9
--- /dev/null
+++ b/elchos/syslinux/archiso_pxe_32_inc.cfg
@@ -0,0 +1,3 @@
+INCLUDE boot/syslinux/archiso_head.cfg
+INCLUDE boot/syslinux/archiso_pxe32.cfg
+INCLUDE boot/syslinux/archiso_tail.cfg
diff --git a/elchos/syslinux/archiso_pxe_both_inc.cfg b/elchos/syslinux/archiso_pxe_both_inc.cfg
new file mode 100644
index 00000000..15933032
--- /dev/null
+++ b/elchos/syslinux/archiso_pxe_both_inc.cfg
@@ -0,0 +1,4 @@
+INCLUDE boot/syslinux/archiso_head.cfg
+INCLUDE boot/syslinux/archiso_pxe64.cfg
+INCLUDE boot/syslinux/archiso_pxe32.cfg
+INCLUDE boot/syslinux/archiso_tail.cfg
diff --git a/elchos/syslinux/archiso_pxe_choose.cfg b/elchos/syslinux/archiso_pxe_choose.cfg
new file mode 100644
index 00000000..62960654
--- /dev/null
+++ b/elchos/syslinux/archiso_pxe_choose.cfg
@@ -0,0 +1,11 @@
+DEFAULT choose
+
+LABEL choose
+COM32 boot/syslinux/ifcpu64.c32
+APPEND have64 -- nohave64
+
+LABEL have64
+CONFIG boot/syslinux/archiso_pxe_both_inc.cfg
+
+LABEL nohave64
+CONFIG boot/syslinux/archiso_pxe_32_inc.cfg
diff --git a/elchos/syslinux/archiso_sys32.cfg b/elchos/syslinux/archiso_sys32.cfg
new file mode 100644
index 00000000..43f839e1
--- /dev/null
+++ b/elchos/syslinux/archiso_sys32.cfg
@@ -0,0 +1,9 @@
+LABEL arch32
+TEXT HELP
+Boot the Arch Linux (i686) live medium.
+It allows you to install Arch Linux or perform system maintenance.
+ENDTEXT
+MENU LABEL Boot Arch Linux (i686)
+LINUX boot/i686/vmlinuz
+INITRD boot/i686/archiso.img
+APPEND archisobasedir=%INSTALL_DIR% archisolabel=%ARCHISO_LABEL%
diff --git a/elchos/syslinux/archiso_sys64.cfg b/elchos/syslinux/archiso_sys64.cfg
new file mode 100644
index 00000000..171877f1
--- /dev/null
+++ b/elchos/syslinux/archiso_sys64.cfg
@@ -0,0 +1,9 @@
+LABEL arch64
+TEXT HELP
+Filehooker boot
+ENDTEXT
+TIMEOUT 50
+MENU LABEL Boot Filehooker image
+LINUX boot/x86_64/vmlinuz
+INITRD boot/x86_64/archiso.img
+APPEND archisobasedir=%INSTALL_DIR% archisolabel=%ARCHISO_LABEL% copytoram=y
diff --git a/elchos/syslinux/archiso_sys_32_inc.cfg b/elchos/syslinux/archiso_sys_32_inc.cfg
new file mode 100644
index 00000000..9e370939
--- /dev/null
+++ b/elchos/syslinux/archiso_sys_32_inc.cfg
@@ -0,0 +1,3 @@
+INCLUDE boot/syslinux/archiso_head.cfg
+INCLUDE boot/syslinux/archiso_sys32.cfg
+INCLUDE boot/syslinux/archiso_tail.cfg
diff --git a/elchos/syslinux/archiso_sys_both_inc.cfg b/elchos/syslinux/archiso_sys_both_inc.cfg
new file mode 100644
index 00000000..e885c403
--- /dev/null
+++ b/elchos/syslinux/archiso_sys_both_inc.cfg
@@ -0,0 +1,4 @@
+INCLUDE boot/syslinux/archiso_head.cfg
+INCLUDE boot/syslinux/archiso_sys64.cfg
+INCLUDE boot/syslinux/archiso_sys32.cfg
+INCLUDE boot/syslinux/archiso_tail.cfg
diff --git a/elchos/syslinux/archiso_sys_choose.cfg b/elchos/syslinux/archiso_sys_choose.cfg
new file mode 100644
index 00000000..24c597aa
--- /dev/null
+++ b/elchos/syslinux/archiso_sys_choose.cfg
@@ -0,0 +1,11 @@
+DEFAULT choose
+
+LABEL choose
+COM32 boot/syslinux/ifcpu64.c32
+APPEND have64 -- nohave64
+
+LABEL have64
+CONFIG boot/syslinux/archiso_sys_both_inc.cfg
+
+LABEL nohave64
+CONFIG boot/syslinux/archiso_sys_32_inc.cfg
diff --git a/elchos/syslinux/archiso_tail.cfg b/elchos/syslinux/archiso_tail.cfg
new file mode 100644
index 00000000..e85d8e14
--- /dev/null
+++ b/elchos/syslinux/archiso_tail.cfg
@@ -0,0 +1,27 @@
+LABEL existing
+TEXT HELP
+Boot an existing operating system.
+Press TAB to edit the disk and partition number to boot.
+ENDTEXT
+MENU LABEL Boot existing OS
+COM32 boot/syslinux/chain.c32
+APPEND hd0 0
+
+# http://www.memtest.org/
+LABEL memtest
+MENU LABEL Run Memtest86+ (RAM test)
+LINUX boot/memtest
+
+# http://hdt-project.org/
+LABEL hdt
+MENU LABEL Hardware Information (HDT)
+COM32 boot/syslinux/hdt.c32
+APPEND modules_alias=boot/syslinux/hdt/modalias.gz pciids=boot/syslinux/hdt/pciids.gz
+
+LABEL reboot
+MENU LABEL Reboot
+COM32 boot/syslinux/reboot.c32
+
+LABEL poweroff
+MENU LABEL Power Off
+COM32 boot/syslinux/poweroff.c32
diff --git a/elchos/syslinux/splash.png b/elchos/syslinux/splash.png
new file mode 100644
index 00000000..91cf53b5
--- /dev/null
+++ b/elchos/syslinux/splash.png
Binary files differ
diff --git a/elchos/syslinux/syslinux.cfg b/elchos/syslinux/syslinux.cfg
new file mode 100644
index 00000000..3ee98dee
--- /dev/null
+++ b/elchos/syslinux/syslinux.cfg
@@ -0,0 +1,5 @@
+DEFAULT loadconfig
+
+LABEL loadconfig
+ CONFIG archiso.cfg
+ APPEND ../../
diff --git a/ext/ovh/README b/ext/ovh/README
new file mode 100644
index 00000000..90b34108
--- /dev/null
+++ b/ext/ovh/README
@@ -0,0 +1,31 @@
+#? /bin/sh
+# This is the project to use the SOAP connector of OVH to change zone
+# entries for krebsco.de
+set -euf
+
+# install ovh soapi
+
+cd /path/to/krebscode/painload
+
+
+make -C ovh/soapi install
+// if the command breaks, try:
+// pip install soappy
+
+# edit the zone
+
+export PATH="$PWD/bin${PATH+:$PATH}"
+export KREBS_OVH_USER=...
+export KREBS_OVH_PASS=...
+// Optional:
+// export KREBS_OVH_DOMAIN=...
+
+
+zoneEntryAdd "krebsco.de" "subdomain" "A" "a.b.c.d."
+
+# ZoneExport Broken since 2012-07-16
+# zoneExport > /tmp/foo
+# $EDITOR /tmp/foo
+# zoneImport < /tmp/foo
+
+# Have a nice day!^_^
diff --git a/ext/ovh/soapi/Makefile b/ext/ovh/soapi/Makefile
new file mode 100644
index 00000000..15ef8f3f
--- /dev/null
+++ b/ext/ovh/soapi/Makefile
@@ -0,0 +1,25 @@
+.PHONY: all install
+all: select-target
+
+exes := $(shell \
+ find . -mindepth 1 -maxdepth 1 -type f -executable -exec basename \{\} \;)
+
+target_exes := $(addprefix ../../bin/,$(exes))
+
+install: $(target_exes)
+
+../../bin/%: % SOAPpy
+ ln -snf ../ovh/soapi/$* $@
+
+src:
+ mkdir $@
+
+src/SOAPpy: src
+ cd $< && \
+ svn co https://pywebsvcs.svn.sourceforge.net/svnroot/pywebsvcs/trunk/SOAPpy
+
+src/SOAPpy/build/lib/SOAPpy: src/SOAPpy
+ cd $< && python setup.py build
+
+SOAPpy: src/SOAPpy/build/lib.linux-x86_64-2.6/SOAPpy
+ ln -snf $<
diff --git a/ext/ovh/soapi/README b/ext/ovh/soapi/README
new file mode 100644
index 00000000..42ad5ebf
--- /dev/null
+++ b/ext/ovh/soapi/README
@@ -0,0 +1 @@
+https://www.ovh.com/soapi/en/
diff --git a/ext/ovh/soapi/domainCapabilities b/ext/ovh/soapi/domainCapabilities
new file mode 100755
index 00000000..252e2ca1
--- /dev/null
+++ b/ext/ovh/soapi/domainCapabilities
@@ -0,0 +1,29 @@
+#!/usr/bin/python
+
+from os import environ
+from os.path import dirname, realpath
+from SOAPpy import WSDL
+from json import dumps, JSONEncoder
+
+def default(o):
+ try:
+ iterable = iter(o)
+ except TypeError:
+ pass
+ else:
+ return list(iterable)
+ return JSONEncoder.default(o)
+
+wsdl = dirname(realpath(__file__)) + '/soapi.wsdl'
+soap = WSDL.Proxy(wsdl)
+
+username = environ['KREBS_OVH_USER']
+password = environ['KREBS_OVH_PASS']
+domain = environ.get('KREBS_OVH_DOMAIN','krebsco.de')
+
+session = soap.login(username, password, 'de', 0)
+
+result = soap.domainCapabilities(session, domain)
+print dumps(result, sort_keys=True, indent=2, default=default)
+
+soap.logout(session)
diff --git a/ext/ovh/soapi/domainInfo b/ext/ovh/soapi/domainInfo
new file mode 100755
index 00000000..4bfad237
--- /dev/null
+++ b/ext/ovh/soapi/domainInfo
@@ -0,0 +1,29 @@
+#!/usr/bin/python
+
+from os import environ
+from os.path import dirname, realpath
+from SOAPpy import WSDL
+from json import dumps, JSONEncoder
+
+def default(o):
+ try:
+ iterable = iter(o)
+ except TypeError:
+ pass
+ else:
+ return list(iterable)
+ return JSONEncoder.default(o)
+
+wsdl = dirname(realpath(__file__)) + '/soapi.wsdl'
+soap = WSDL.Proxy(wsdl)
+
+username = environ['KREBS_OVH_USER']
+password = environ['KREBS_OVH_PASS']
+domain = environ.get('KREBS_OVH_DOMAIN','krebsco.de')
+
+session = soap.login(username, password, 'de', 0)
+
+result = soap.domainInfo(session, domain)
+print dumps(result, sort_keys=True, indent=2, default=default)
+
+soap.logout(session)
diff --git a/ext/ovh/soapi/domainList b/ext/ovh/soapi/domainList
new file mode 100755
index 00000000..8f80793b
--- /dev/null
+++ b/ext/ovh/soapi/domainList
@@ -0,0 +1,28 @@
+#!/usr/bin/python
+
+from os import environ
+from os.path import dirname, realpath
+from SOAPpy import WSDL
+from json import dumps, JSONEncoder
+
+def default(o):
+ try:
+ iterable = iter(o)
+ except TypeError:
+ pass
+ else:
+ return list(iterable)
+ return JSONEncoder.default(o)
+
+wsdl = dirname(realpath(__file__)) + '/soapi.wsdl'
+soap = WSDL.Proxy(wsdl)
+
+username = environ['KREBS_OVH_USER']
+password = environ['KREBS_OVH_PASS']
+
+session = soap.login(username, password, 'de', 0)
+
+result = soap.domainList(session)
+print dumps(result, sort_keys=True, indent=2, default=default)
+
+soap.logout(session)
diff --git a/ext/ovh/soapi/soapi.wsdl b/ext/ovh/soapi/soapi.wsdl
new file mode 100644
index 00000000..82398e90
--- /dev/null
+++ b/ext/ovh/soapi/soapi.wsdl
@@ -0,0 +1,23935 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!--
+
+ SOAPI WSDL, RPC/Encoded style, version 1.61
+
+ The SOAPI technical specifications are available at this url : http://www.ovh.com/soapi .
+
+ copyright 1999-2013 OVH
+
+-->
+
+<wsdl:definitions name="manager"
+ targetNamespace="http://soapi.ovh.com/manager"
+ xmlns="http://schemas.xmlsoap.org/wsdl/"
+ xmlns:wsdlns="http://soapi.ovh.com/manager"
+ xmlns:typens="http://soapi.ovh.com/manager"
+ xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/"
+ xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"
+ xmlns:xsd="http://www.w3.org/2001/XMLSchema"
+ xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/"
+>
+
+ <wsdl:types>
+ <xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema" targetNamespace="http://soapi.ovh.com/manager">
+
+ <xsd:complexType name="supportThreadDetailStruct">
+ <xsd:all>
+ <xsd:element name="id" type="xsd:int"/>
+ <xsd:element name="date" type="xsd:string"/>
+ <xsd:element name="subject" type="xsd:string"/>
+ <xsd:element name="domain" type="xsd:string"/>
+ <xsd:element name="status" type="xsd:string"/>
+ <xsd:element name="unread" type="xsd:int"/>
+ <xsd:element name="closed" type="xsd:int"/>
+ <xsd:element name="answered" type="xsd:int"/>
+ </xsd:all>
+ </xsd:complexType>
+
+ <xsd:complexType name="supportThreadMessageDetailStruct">
+ <xsd:all>
+ <xsd:element name="id" type="xsd:int"/>
+ <xsd:element name="date" type="xsd:string"/>
+ <xsd:element name="unread" type="xsd:int"/>
+ <xsd:element name="type" type="xsd:string"/>
+ <xsd:element name="reportReason" type="xsd:string"/>
+ </xsd:all>
+ </xsd:complexType>
+
+ <xsd:complexType name="supportThreadTreeReturn">
+ <xsd:all>
+ <xsd:element name="id" type="xsd:int"/>
+ <xsd:element name="subject" type="xsd:string"/>
+ <xsd:element name="domain" type="xsd:string"/>
+ <xsd:element name="closed" type="xsd:int"/>
+ <xsd:element name="reportReason" type="xsd:string"/>
+ <xsd:element name="messages" type="typens:MyArrayOfSupportThreadMessageDetailStructType"/>
+ </xsd:all>
+ </xsd:complexType>
+
+ <xsd:complexType name="supportMessageDetailReturn">
+ <xsd:all>
+ <xsd:element name="id" type="xsd:int"/>
+ <xsd:element name="thread" type="xsd:int"/>
+ <xsd:element name="unreadThread" type="xsd:boolean"/>
+ <xsd:element name="fromEmail" type="xsd:string"/>
+ <xsd:element name="dateSent" type="xsd:string"/>
+ <xsd:element name="subject" type="xsd:string"/>
+ <xsd:element name="body" type="xsd:string"/>
+ <xsd:element name="reportReason" type="xsd:string"/>
+ </xsd:all>
+ </xsd:complexType>
+
+ <xsd:complexType name="supportCategoryStruct">
+ <xsd:all>
+ <xsd:element name="name" type="xsd:string"/>
+ <xsd:element name="id" type="xsd:int"/>
+ </xsd:all>
+ </xsd:complexType>
+
+ <xsd:complexType name="supportDomainStruct">
+ <xsd:all>
+ <xsd:element name="domain" type="xsd:string"/>
+ </xsd:all>
+ </xsd:complexType>
+
+ <xsd:complexType name="supportSendMessageReturn">
+ <xsd:all>
+ <xsd:element name="threadId" type="xsd:int"/>
+ <xsd:element name="messageId" type="xsd:int"/>
+ <xsd:element name="dateTime" type="xsd:string"/>
+ </xsd:all>
+ </xsd:complexType>
+
+ <xsd:complexType name="MyArrayOfSupportThreadDetailStructType">
+ <xsd:complexContent>
+ <xsd:restriction base="soapenc:Array">
+ <xsd:attribute ref="soapenc:arrayType" wsdl:arrayType="typens:supportThreadDetailStruct[]"/>
+ </xsd:restriction>
+ </xsd:complexContent>
+ </xsd:complexType>
+
+ <xsd:complexType name="MyArrayOfSupportCategoryStructType">
+ <xsd:complexContent>
+ <xsd:restriction base="soapenc:Array">
+ <xsd:attribute ref="soapenc:arrayType" wsdl:arrayType="typens:supportCategoryStruct[]"/>
+ </xsd:restriction>
+ </xsd:complexContent>
+ </xsd:complexType>
+
+ <xsd:complexType name="MyArrayOfSupportDomainStructType">
+ <xsd:complexContent>
+ <xsd:restriction base="soapenc:Array">
+ <xsd:attribute ref="soapenc:arrayType" wsdl:arrayType="typens:supportDomainStruct[]"/>
+ </xsd:restriction>
+ </xsd:complexContent>
+ </xsd:complexType>
+
+ <xsd:complexType name="MyArrayOfSupportThreadMessageDetailStructType">
+ <xsd:complexContent>
+ <xsd:restriction base="soapenc:Array">
+ <xsd:attribute ref="soapenc:arrayType" wsdl:arrayType="typens:supportThreadMessageDetailStruct[]"/>
+ </xsd:restriction>
+ </xsd:complexContent>
+ </xsd:complexType>
+
+ <xsd:complexType name="telephonyBillingAccountStruct">
+ <xsd:all>
+ <xsd:element name="description" type="xsd:string"/>
+ <xsd:element name="mobile" type="xsd:string"/>
+ <xsd:element name="mobileDestination" type="xsd:string"/>
+ <xsd:element name="expirationDate" type="xsd:string"/>
+ <xsd:element name="version" type="xsd:string"/>
+ <xsd:element name="trusted" type="xsd:boolean"/>
+ <xsd:element name="pendingAction" type="typens:telephonyPendingActionStruct"/>
+ <xsd:element name="descriptionUser" type="xsd:string"/>
+ </xsd:all>
+ </xsd:complexType>
+
+ <xsd:complexType name="telephonyNumberDecodeStruct">
+ <xsd:all>
+ <xsd:element name="numberDisplay" type="xsd:string"/>
+ <xsd:element name="numberInternal" type="xsd:string"/>
+ <xsd:element name="numberInternational" type="xsd:string"/>
+ <xsd:element name="numberNational" type="xsd:string"/>
+ <xsd:element name="countryCode" type="xsd:string"/>
+ <xsd:element name="language" type="xsd:string"/>
+ <xsd:element name="cirpackNature" type="xsd:string"/>
+ <xsd:element name="cirpackNumber" type="xsd:string"/>
+ </xsd:all>
+ </xsd:complexType>
+
+ <xsd:complexType name="telephonyPendingActionStruct">
+ <xsd:all>
+ <xsd:element name="dateTodo" type="xsd:string"/>
+ <xsd:element name="offer" type="xsd:string"/>
+ <xsd:element name="action" type="xsd:string"/>
+ </xsd:all>
+ </xsd:complexType>
+
+ <xsd:complexType name="telephonyBillingAccountInfoChildrenStruct">
+ <xsd:all>
+ <xsd:element name="number" type="xsd:string"/>
+ <xsd:element name="offer" type="xsd:string"/>
+ <xsd:element name="type" type="xsd:string"/>
+ <xsd:element name="expirationDate" type="xsd:string"/>
+ <xsd:element name="description" type="xsd:string"/>
+ <xsd:element name="simultaneousLines" type="xsd:int"/>
+ </xsd:all>
+ </xsd:complexType>
+
+ <xsd:complexType name="telephonyBillingAccountInfoReturn">
+ <xsd:all>
+ <xsd:element name="name" type="xsd:string"/>
+ <xsd:element name="description" type="xsd:string"/>
+ <xsd:element name="offer" type="xsd:string"/>
+ <xsd:element name="consumtionTime" type="xsd:string"/>
+ <xsd:element name="outPlan" type="xsd:string"/>
+ <xsd:element name="facturationDate" type="xsd:string"/>
+ <xsd:element name="children" type="typens:MyArrayOfTelephonyBillingAccountInfoChildrenStructType"/>
+ </xsd:all>
+ </xsd:complexType>
+
+ <xsd:complexType name="telephonyLineAliasPoolStruct">
+ <xsd:all>
+ <xsd:element name="poolNumber" type="xsd:int"/>
+ <xsd:element name="service" type="xsd:string"/>
+ <xsd:element name="display" type="xsd:string"/>
+ </xsd:all>
+ </xsd:complexType>
+
+ <xsd:complexType name="telephonyLineStruct">
+ <xsd:all>
+ <xsd:element name="number" type="xsd:string"/>
+ <xsd:element name="billingAccount" type="xsd:string"/>
+ <xsd:element name="offer" type="xsd:string"/>
+ <xsd:element name="type" type="xsd:string"/>
+ <xsd:element name="service" type="xsd:string"/>
+ <xsd:element name="expirationDate" type="xsd:string"/>
+ <xsd:element name="description" type="xsd:string"/>
+ <xsd:element name="betaGamaOffer" type="xsd:boolean"/>
+ <xsd:element name="setOn" type="xsd:string"/>
+ <xsd:element name="aliasPool" type="typens:telephonyLineAliasPoolStruct"/>
+ <xsd:element name="pendingAction" type="typens:telephonyPendingActionStruct"/>
+ <xsd:element name="simultaneousLines" type="xsd:int"/>
+ </xsd:all>
+ </xsd:complexType>
+
+ <xsd:complexType name="telephonyLineListReturn">
+ <xsd:all>
+ <xsd:element name="link" type="typens:MyArrayOfTelephonyLineStructType"/>
+ <xsd:element name="alias" type="typens:MyArrayOfTelephonyLineStructType"/>
+ </xsd:all>
+ </xsd:complexType>
+
+ <xsd:complexType name="telephonyLineOptionsListReturn">
+ <xsd:all>
+ <xsd:element name="identificationRestriction" type="xsd:boolean"/>
+ <xsd:element name="anonymousCallRejection" type="xsd:boolean"/>
+ <xsd:element name="doNotDisturb" type="xsd:boolean"/>
+ <xsd:element name="absentSuscriber" type="xsd:boolean"/>
+ <xsd:element name="lockOutCall" type="xsd:boolean"/>
+ <xsd:element name="lockOutCallPassword" type="xsd:string"/>
+ <xsd:element name="forwardUnconditional" type="xsd:boolean"/>
+ <xsd:element name="forwardUnconditionalNumber" type="xsd:string"/>
+ <xsd:element name="forwardNoReply" type="xsd:boolean"/>
+ <xsd:element name="forwardNoReplyDelay" type="xsd:int"/>
+ <xsd:element name="forwardNoReplyNumber" type="xsd:string"/>
+ <xsd:element name="forwardBusy" type="xsd:boolean"/>
+ <xsd:element name="forwardBusyNumber" type="xsd:string"/>
+ <xsd:element name="forwardBackup" type="xsd:boolean"/>
+ <xsd:element name="forwardBackupNumber" type="xsd:string"/>
+ <xsd:element name="callWaiting" type="xsd:boolean"/>
+ <xsd:element name="displayCallNumber" type="xsd:string"/>
+ <xsd:element name="forwardUnconditionalNature" type="xsd:string"/>
+ <xsd:element name="forwardNoReplyNature" type="xsd:string"/>
+ <xsd:element name="forwardBusyNature" type="xsd:string"/>
+ <xsd:element name="forwardBackupNature" type="xsd:string"/>
+ </xsd:all>
+ </xsd:complexType>
+
+ <xsd:complexType name="telephonyLineSwitchOldOfferStruct">
+ <xsd:all>
+ <xsd:element name="number" type="xsd:string"/>
+ <xsd:element name="offers" type="typens:MyArrayOfTelephonyLineSwitchPossibilityPriceStructType"/>
+ </xsd:all>
+ </xsd:complexType>
+
+ <xsd:complexType name="telephonyLineSwitchPossibilityPriceStruct">
+ <xsd:all>
+ <xsd:element name="offer" type="xsd:string"/>
+ <xsd:element name="price" type="xsd:string"/>
+ </xsd:all>
+ </xsd:complexType>
+
+ <xsd:complexType name="bufferStepStruct">
+ <xsd:all>
+ <xsd:element name="durationUnit" type="xsd:string"/>
+ <xsd:element name="durationValue" type="xsd:string"/>
+ <xsd:element name="date" type="xsd:string"/>
+ <xsd:element name="extraInfo" type="xsd:string"/>
+ </xsd:all>
+ </xsd:complexType>
+
+ <xsd:complexType name="orderFollowingUpStruct">
+ <xsd:all>
+ <xsd:element name="id" type="xsd:string"/>
+ <xsd:element name="urlId" type="xsd:string"/>
+ <xsd:element name="type" type="xsd:string"/>
+ <xsd:element name="creationDate" type="xsd:string"/>
+ <xsd:element name="payment" type="xsd:string"/>
+ <xsd:element name="procedure" type="xsd:string"/>
+ <xsd:element name="install" type="xsd:string"/>
+ <xsd:element name="shipping" type="xsd:string"/>
+ <xsd:element name="cloture" type="xsd:string"/>
+ <xsd:element name="paymentBuffer" type="typens:bufferStepStruct"/>
+ <xsd:element name="procedureBuffer" type="typens:bufferStepStruct"/>
+ <xsd:element name="installBuffer" type="typens:bufferStepStruct"/>
+ <xsd:element name="shippingBuffer" type="typens:bufferStepStruct"/>
+ <xsd:element name="clotureBuffer" type="typens:bufferStepStruct"/>
+ <xsd:element name="avancement" type="xsd:string"/>
+ </xsd:all>
+ </xsd:complexType>
+
+ <xsd:complexType name="telephonyOfferInfoReturn">
+ <xsd:all>
+ <xsd:element name="number" type="xsd:string"/>
+ <xsd:element name="description" type="xsd:string"/>
+ <xsd:element name="offer" type="xsd:string"/>
+ <xsd:element name="countryCode" type="xsd:string"/>
+ <xsd:element name="nextBillingDate" type="xsd:string"/>
+ <xsd:element name="simultaneousLines" type="xsd:int"/>
+ <xsd:element name="hardware" type="typens:telephonyOfferInfoHardwareStruct"/>
+ <xsd:element name="sipAccount" type="typens:telephonyOfferInfoSipAccountStruct"/>
+ </xsd:all>
+ </xsd:complexType>
+
+ <xsd:complexType name="telephonyOfferInfoSipAccountStruct">
+ <xsd:all>
+ <xsd:element name="username" type="xsd:string"/>
+ <xsd:element name="extension" type="xsd:string"/>
+ <xsd:element name="domain" type="xsd:string"/>
+ <xsd:element name="lastLogin" type="xsd:string"/>
+ <xsd:element name="localAdress" type="xsd:string"/>
+ <xsd:element name="publicAdress" type="xsd:string"/>
+ </xsd:all>
+ </xsd:complexType>
+
+ <xsd:complexType name="telephonyOfferInfoHardwareStruct">
+ <xsd:all>
+ <xsd:element name="brand" type="xsd:string"/>
+ <xsd:element name="model" type="xsd:string"/>
+ <xsd:element name="protocol" type="xsd:string"/>
+ <xsd:element name="mac" type="xsd:string"/>
+ <xsd:element name="ip" type="xsd:string"/>
+ <xsd:element name="engage" type="xsd:boolean"/>
+ <xsd:element name="status" type="xsd:string"/>
+ <xsd:element name="port" type="xsd:int"/>
+ <xsd:element name="outOfService" type="xsd:boolean"/>
+ </xsd:all>
+ </xsd:complexType>
+
+ <xsd:complexType name="telephonyDisplayNumberTestingGetNextNumberReturn">
+ <xsd:all>
+ <xsd:element name="number" type="xsd:string"/>
+ <xsd:element name="id" type="xsd:string"/>
+ </xsd:all>
+ </xsd:complexType>
+
+ <xsd:complexType name="telephonySpecialNumberCustomListReturn">
+ <xsd:all>
+ <xsd:element name="easyNumbers" type="typens:MyArrayOfStringType"/>
+ <xsd:element name="staticAttributionRange" type="typens:MyArrayOfStringType"/>
+ <xsd:element name="proposedNumbers" type="typens:MyArrayOfStringType"/>
+ </xsd:all>
+ </xsd:complexType>
+
+ <xsd:complexType name="telephonyListReversableCallsFromNumberReturn">
+ <xsd:all>
+ <xsd:element name="totalRecords" type="xsd:int"/>
+ <xsd:element name="list" type="typens:MyArrayOfTelephonyReversmentsDetailsStructType"/>
+ </xsd:all>
+ </xsd:complexType>
+
+ <xsd:complexType name="telephonyReversmentsDetailsStruct">
+ <xsd:all>
+ <xsd:element name="date" type="xsd:string"/>
+ <xsd:element name="connectionDuration" type="xsd:string"/>
+ <xsd:element name="callingNumber" type="xsd:string"/>
+ <xsd:element name="priceReversed" type="xsd:string"/>
+ <xsd:element name="operatorCode" type="xsd:string"/>
+ </xsd:all>
+ </xsd:complexType>
+
+ <xsd:complexType name="telephonyReversmentsSummationStruct">
+ <xsd:all>
+ <xsd:element name="type" type="xsd:string"/>
+ <xsd:element name="name" type="xsd:string"/>
+ <xsd:element name="seconds" type="xsd:string"/>
+ <xsd:element name="priceReversed" type="xsd:string"/>
+ <xsd:element name="calls" type="xsd:string"/>
+ </xsd:all>
+ </xsd:complexType>
+
+ <xsd:complexType name="telephonyReversmentsSummationNumbersStruct">
+ <xsd:all>
+ <xsd:element name="number" type="xsd:string"/>
+ <xsd:element name="list" type="typens:MyArrayOfTelephonyReversmentsSummationStructType"/>
+ </xsd:all>
+ </xsd:complexType>
+
+ <xsd:complexType name="telephonyCallStruct">
+ <xsd:all>
+ <xsd:element name="idkey" type="xsd:string"/>
+ <xsd:element name="number" type="xsd:string"/>
+ <xsd:element name="date" type="xsd:string"/>
+ <xsd:element name="duration" type="xsd:string"/>
+ <xsd:element name="destination" type="xsd:string"/>
+ <xsd:element name="priceWithoutVAT" type="xsd:float"/>
+ <xsd:element name="nature" type="xsd:string"/>
+ <xsd:element name="overLimit" type="xsd:boolean"/>
+ <xsd:element name="type" type="xsd:string"/>
+ <xsd:element name="callingNumber" type="xsd:string"/>
+ <xsd:element name="presentation" type="xsd:boolean"/>
+ <xsd:element name="designation" type="xsd:string"/>
+ <xsd:element name="calledNumber" type="xsd:string"/>
+ </xsd:all>
+ </xsd:complexType>
+
+ <xsd:complexType name="telephonyCallsSummaryDetailsStruct">
+ <xsd:all>
+ <xsd:element name="count" type="xsd:int"/>
+ <xsd:element name="duration" type="xsd:string"/>
+ <xsd:element name="priceWithoutVAT" type="xsd:float"/>
+ </xsd:all>
+ </xsd:complexType>
+
+ <xsd:complexType name="telephonyFaxSummaryDetailsStruct">
+ <xsd:all>
+ <xsd:element name="count" type="xsd:int"/>
+ <xsd:element name="pages" type="xsd:int"/>
+ <xsd:element name="priceWithoutVAT" type="xsd:float"/>
+ </xsd:all>
+ </xsd:complexType>
+
+ <xsd:complexType name="telephonyCallsSummaryStruct">
+ <xsd:all>
+ <xsd:element name="pricePlan" type="typens:telephonyCallsSummaryDetailsStruct"/>
+ <xsd:element name="outPlan" type="typens:telephonyCallsSummaryDetailsStruct"/>
+ </xsd:all>
+ </xsd:complexType>
+
+ <xsd:complexType name="telephonyFaxSummaryStruct">
+ <xsd:all>
+ <xsd:element name="low" type="typens:telephonyFaxSummaryDetailsStruct"/>
+ <xsd:element name="high" type="typens:telephonyFaxSummaryDetailsStruct"/>
+ </xsd:all>
+ </xsd:complexType>
+
+ <xsd:complexType name="telephonyBillingAccountSummaryLineStruct">
+ <xsd:all>
+ <xsd:element name="line" type="xsd:string"/>
+ <xsd:element name="phoneNumber" type="xsd:string"/>
+ <xsd:element name="fixe" type="typens:telephonyCallsSummaryStruct"/>
+ <xsd:element name="special" type="typens:telephonyCallsSummaryStruct"/>
+ <xsd:element name="mobile" type="typens:telephonyCallsSummaryStruct"/>
+ <xsd:element name="fax" type="typens:telephonyFaxSummaryStruct"/>
+ </xsd:all>
+ </xsd:complexType>
+
+ <xsd:complexType name="telephonyBillingAccountSummaryBillingAccountStruct">
+ <xsd:all>
+ <xsd:element name="name" type="xsd:string"/>
+ <xsd:element name="description" type="xsd:string"/>
+ <xsd:element name="betaGammaOffer" type="xsd:boolean"/>
+ <xsd:element name="mobile" type="typens:telephonyCallsSummaryStruct"/>
+ </xsd:all>
+ </xsd:complexType>
+
+ <xsd:complexType name="telephonyBillingAccountSummaryReturn">
+ <xsd:all>
+ <xsd:element name="billingAccount" type="typens:telephonyBillingAccountSummaryBillingAccountStruct"/>
+ <xsd:element name="lines" type="typens:MyArrayOfTelephonyBillingAccountSummaryLineStructType"/>
+ </xsd:all>
+ </xsd:complexType>
+
+ <xsd:complexType name="telephonyCallListReturn">
+ <xsd:all>
+ <xsd:element name="fromDate" type="xsd:string"/>
+ <xsd:element name="toDate" type="xsd:string"/>
+ <xsd:element name="list" type="typens:MyArrayOfTelephonyCallStructType"/>
+ </xsd:all>
+ </xsd:complexType>
+
+ <xsd:complexType name="telephonyBillStruct">
+ <xsd:all>
+ <xsd:element name="date" type="xsd:string"/>
+ <xsd:element name="price" type="xsd:float"/>
+ <xsd:element name="orderId" type="xsd:int"/>
+ <xsd:element name="orderPaid" type="xsd:boolean"/>
+ <xsd:element name="orderUrl" type="xsd:string"/>
+ <xsd:element name="billUrl" type="xsd:string"/>
+ </xsd:all>
+ </xsd:complexType>
+
+ <xsd:complexType name="telephonyBillDetailsReturn">
+ <xsd:all>
+ <xsd:element name="fromDate" type="xsd:string"/>
+ <xsd:element name="toDate" type="xsd:string"/>
+ <xsd:element name="list" type="typens:MyArrayOfTelephonyCallStructType"/>
+ </xsd:all>
+ </xsd:complexType>
+
+ <xsd:complexType name="telephonyVoicemailOptionsListReturn">
+ <xsd:all>
+ <xsd:element name="redirection1" type="xsd:string"/>
+ <xsd:element name="redirection1Email" type="xsd:string"/>
+ <xsd:element name="redirection2" type="xsd:string"/>
+ <xsd:element name="redirection2Email" type="xsd:string"/>
+ <xsd:element name="redirection3" type="xsd:string"/>
+ <xsd:element name="redirection3Email" type="xsd:string"/>
+ <xsd:element name="redirection4" type="xsd:string"/>
+ <xsd:element name="redirection4Email" type="xsd:string"/>
+ <xsd:element name="redirection5" type="xsd:string"/>
+ <xsd:element name="redirection5Email" type="xsd:string"/>
+ <xsd:element name="annouceMessage" type="xsd:string"/>
+ <xsd:element name="keepMessage" type="xsd:boolean"/>
+ <xsd:element name="audioformat" type="xsd:string"/>
+ <xsd:element name="fromEmail" type="xsd:string"/>
+ <xsd:element name="fromName" type="xsd:string"/>
+ <xsd:element name="forcePassword" type="xsd:boolean"/>
+ <xsd:element name="doNotRecord" type="xsd:boolean"/>
+ </xsd:all>
+ </xsd:complexType>
+
+ <xsd:complexType name="telephonyVoicemailMessagesStatusReturn">
+ <xsd:all>
+ <xsd:element name="unavailable" type="xsd:boolean"/>
+ <xsd:element name="busy" type="xsd:boolean"/>
+ <xsd:element name="temp" type="xsd:boolean"/>
+ <xsd:element name="greet" type="xsd:boolean"/>
+ </xsd:all>
+ </xsd:complexType>
+
+ <xsd:complexType name="telephonyVoicemailMailboxStruct">
+ <xsd:all>
+ <xsd:element name="id" type="xsd:int"/>
+ <xsd:element name="callerid" type="xsd:string"/>
+ <xsd:element name="origdate" type="xsd:string"/>
+ <xsd:element name="origtime" type="xsd:string"/>
+ <xsd:element name="origmailbox" type="xsd:string"/>
+ <xsd:element name="duration" type="xsd:int"/>
+ <xsd:element name="folder" type="xsd:string"/>
+ </xsd:all>
+ </xsd:complexType>
+
+ <xsd:complexType name="telephonyVoicemailMailboxDownloadReturn">
+ <xsd:all>
+ <xsd:element name="fileName" type="xsd:string"/>
+ <xsd:element name="fileData" type="xsd:string"/>
+ <xsd:element name="md5sum" type="xsd:string"/>
+ </xsd:all>
+ </xsd:complexType>
+
+ <xsd:complexType name="telephonyVoicemailMessagesDownloadReturn">
+ <xsd:all>
+ <xsd:element name="fileName" type="xsd:string"/>
+ <xsd:element name="fileData" type="xsd:string"/>
+ <xsd:element name="md5sum" type="xsd:string"/>
+ </xsd:all>
+ </xsd:complexType>
+
+ <xsd:complexType name="telephonyPhonebookStruct">
+ <xsd:all>
+ <xsd:element name="id" type="xsd:int"/>
+ <xsd:element name="name" type="xsd:string"/>
+ <xsd:element name="mode" type="xsd:string"/>
+ </xsd:all>
+ </xsd:complexType>
+
+ <xsd:complexType name="telephonyPhonebookGroupStruct">
+ <xsd:all>
+ <xsd:element name="name" type="xsd:string"/>
+ <xsd:element name="count" type="xsd:int"/>
+ </xsd:all>
+ </xsd:complexType>
+
+ <xsd:complexType name="telephonyPhonebookContactStruct">
+ <xsd:all>
+ <xsd:element name="id" type="xsd:int"/>
+ <xsd:element name="name" type="xsd:string"/>
+ <xsd:element name="surname" type="xsd:string"/>
+ <xsd:element name="workPhone" type="xsd:string"/>
+ <xsd:element name="workMobile" type="xsd:string"/>
+ <xsd:element name="homePhone" type="xsd:string"/>
+ <xsd:element name="homeMobile" type="xsd:string"/>
+ <xsd:element name="group" type="xsd:string"/>
+ </xsd:all>
+ </xsd:complexType>
+
+ <xsd:complexType name="telephonyPhonebookSharePeerStruct">
+ <xsd:all>
+ <xsd:element name="id" type="xsd:int"/>
+ <xsd:element name="number" type="xsd:string"/>
+ <xsd:element name="name" type="xsd:string"/>
+ <xsd:element name="mode" type="xsd:string"/>
+ </xsd:all>
+ </xsd:complexType>
+
+ <xsd:complexType name="telephonySecurityDepositCreditReturn">
+ <xsd:all>
+ <xsd:element name="orderId" type="xsd:int"/>
+ <xsd:element name="orderPassword" type="xsd:string"/>
+ <xsd:element name="orderUrl" type="xsd:string"/>
+ <xsd:element name="totalPrice" type="xsd:float"/>
+ <xsd:element name="vat" type="xsd:float"/>
+ <xsd:element name="totalPriceWithVat" type="xsd:float"/>
+ <xsd:element name="ribBankCode" type="xsd:string"/>
+ <xsd:element name="ribAgencyCode" type="xsd:string"/>
+ <xsd:element name="ribAccountNumber" type="xsd:string"/>
+ <xsd:element name="ribKey" type="xsd:string"/>
+ <xsd:element name="iban" type="xsd:string"/>
+ <xsd:element name="bic" type="xsd:string"/>
+ </xsd:all>
+ </xsd:complexType>
+
+ <xsd:complexType name="telephonyConferenceStruct">
+ <xsd:all>
+ <xsd:element name="room" type="xsd:string"/>
+ <xsd:element name="countryCode" type="xsd:string"/>
+ <xsd:element name="callNumber" type="xsd:string"/>
+ <xsd:element name="language" type="xsd:string"/>
+ <xsd:element name="customAnnounce" type="xsd:boolean"/>
+ <xsd:element name="recordAnnounce" type="xsd:boolean"/>
+ <xsd:element name="mailReport" type="xsd:boolean"/>
+ <xsd:element name="customMailReportAddress" type="xsd:string"/>
+ <xsd:element name="askName" type="xsd:boolean"/>
+ <xsd:element name="tellMemberCount" type="xsd:boolean"/>
+ <xsd:element name="moderatorCountryCode" type="xsd:string"/>
+ <xsd:element name="moderatorCallNumber" type="xsd:string"/>
+ <xsd:element name="status" type="xsd:string"/>
+ <xsd:element name="dtmfmenu" type="xsd:boolean"/>
+ <xsd:element name="announce_rcv" type="xsd:boolean"/>
+ <xsd:element name="announce_snd" type="xsd:boolean"/>
+ <xsd:element name="recordConf" type="xsd:boolean"/>
+ </xsd:all>
+ </xsd:complexType>
+
+ <xsd:complexType name="telephonyConferenceAnnouncesStatusReturn">
+ <xsd:all>
+ <xsd:element name="custom" type="xsd:boolean"/>
+ </xsd:all>
+ </xsd:complexType>
+
+ <xsd:complexType name="telephonyConferenceGetInfosReturn">
+ <xsd:all>
+ <xsd:element name="parties" type="xsd:int"/>
+ <xsd:element name="locked" type="xsd:boolean"/>
+ <xsd:element name="participants" type="typens:MyArrayOfTelephonyConferenceParticipantStructType"/>
+ </xsd:all>
+ </xsd:complexType>
+
+ <xsd:complexType name="telephonyConferenceParticipantStruct">
+ <xsd:all>
+ <xsd:element name="callerid" type="xsd:string"/>
+ <xsd:element name="callername" type="xsd:string"/>
+ <xsd:element name="talking" type="xsd:boolean"/>
+ <xsd:element name="deaf" type="xsd:boolean"/>
+ <xsd:element name="muted" type="xsd:boolean"/>
+ <xsd:element name="joinsince" type="xsd:int"/>
+ <xsd:element name="memberid" type="xsd:int"/>
+ </xsd:all>
+ </xsd:complexType>
+
+ <xsd:complexType name="telephonyConferenceParamsReturn">
+ <xsd:all>
+ <xsd:element name="number" type="xsd:string"/>
+ <xsd:element name="lang" type="xsd:string"/>
+ <xsd:element name="pin" type="xsd:int"/>
+ <xsd:element name="enterMuted" type="xsd:boolean"/>
+ <xsd:element name="announceStatus" type="xsd:boolean"/>
+ <xsd:element name="announceFilename" type="xsd:string"/>
+ <xsd:element name="recordStatus" type="xsd:boolean"/>
+ <xsd:element name="reportStatus" type="xsd:string"/>
+ <xsd:element name="reportMail" type="xsd:string"/>
+ <xsd:element name="eventsHash" type="xsd:string"/>
+ </xsd:all>
+ </xsd:complexType>
+
+ <xsd:complexType name="telephonySmsCsvSlotStruct">
+ <xsd:all>
+ <xsd:element name="id" type="xsd:string"/>
+ <xsd:element name="name" type="xsd:string"/>
+ <xsd:element name="date" type="xsd:string"/>
+ <xsd:element name="records" type="xsd:string"/>
+ </xsd:all>
+ </xsd:complexType>
+
+ <xsd:complexType name="telephonySmsUserQuotaStruct">
+ <xsd:all>
+ <xsd:element name="quotaLeft" type="xsd:string"/>
+ <xsd:element name="quotaStatus" type="xsd:string"/>
+ </xsd:all>
+ </xsd:complexType>
+
+ <xsd:complexType name="telephonyNotificationSmsUserStruct">
+ <xsd:all>
+ <xsd:element name="support" type="xsd:string"/>
+ <xsd:element name="alertThreshold" type="xsd:int"/>
+ <xsd:element name="alertNumber" type="xsd:string"/>
+ <xsd:element name="alertEmail" type="xsd:string"/>
+ </xsd:all>
+ </xsd:complexType>
+
+ <xsd:complexType name="telephonySmsUserStruct">
+ <xsd:all>
+ <xsd:element name="login" type="xsd:string"/>
+ <xsd:element name="quota" type="xsd:string"/>
+ <xsd:element name="quotaStatus" type="xsd:string"/>
+ <xsd:element name="alertThreshold" type="xsd:string"/>
+ <xsd:element name="support" type="xsd:string"/>
+ <xsd:element name="alertNumber" type="xsd:string"/>
+ </xsd:all>
+ </xsd:complexType>
+
+ <xsd:complexType name="telephonySmsCreditInfoReturn">
+ <xsd:all>
+ <xsd:element name="waiting" type="xsd:int"/>
+ <xsd:element name="left" type="xsd:int"/>
+ </xsd:all>
+ </xsd:complexType>
+
+ <xsd:complexType name="telephonySmsHistoryStruct">
+ <xsd:all>
+ <xsd:element name="smsId" type="xsd:int"/>
+ <xsd:element name="numberFrom" type="xsd:string"/>
+ <xsd:element name="numberTo" type="xsd:string"/>
+ <xsd:element name="status" type="xsd:string"/>
+ <xsd:element name="date" type="xsd:string"/>
+ <xsd:element name="message" type="xsd:string"/>
+ <xsd:element name="text" type="xsd:string"/>
+ <xsd:element name="user" type="xsd:string"/>
+ <xsd:element name="tag" type="xsd:string"/>
+ <xsd:element name="pttDescription" type="xsd:string"/>
+ <xsd:element name="deliveryReceiptDescription" type="xsd:string"/>
+ <xsd:element name="pttDescriptionDetail" type="xsd:string"/>
+ </xsd:all>
+ </xsd:complexType>
+
+ <xsd:complexType name="telephonySmsSenderStruct">
+ <xsd:all>
+ <xsd:element name="number" type="xsd:string"/>
+ <xsd:element name="status" type="xsd:string"/>
+ <xsd:element name="description" type="xsd:string"/>
+ </xsd:all>
+ </xsd:complexType>
+
+ <xsd:complexType name="telephonyAbbreviatedNumberStruct">
+ <xsd:all>
+ <xsd:element name="abbreviatedNumber" type="xsd:string"/>
+ <xsd:element name="relatedNumber" type="xsd:string"/>
+ <xsd:element name="name" type="xsd:string"/>
+ <xsd:element name="surname" type="xsd:string"/>
+ </xsd:all>
+ </xsd:complexType>
+
+ <xsd:complexType name="telephonyDirectoryPJHeadingStruct">
+ <xsd:all>
+ <xsd:element name="codePJ" type="xsd:string"/>
+ <xsd:element name="labelPJ" type="xsd:string"/>
+ <xsd:element name="isAssociatedWithAPE" type="xsd:string"/>
+ <xsd:element name="notification" type="xsd:string"/>
+ </xsd:all>
+ </xsd:complexType>
+
+ <xsd:complexType name="telephonyDirectoryWayTypeStruct">
+ <xsd:all>
+ <xsd:element name="abbreviatedName" type="xsd:string"/>
+ <xsd:element name="wayName" type="xsd:string"/>
+ <xsd:element name="tag" type="xsd:string"/>
+ </xsd:all>
+ </xsd:complexType>
+
+ <xsd:complexType name="telephonyDirectoryInfoReturn">
+ <xsd:all>
+ <xsd:element name="number" type="xsd:string"/>
+ <xsd:element name="name" type="xsd:string"/>
+ <xsd:element name="firstName" type="xsd:string"/>
+ <xsd:element name="wayNumber" type="xsd:string"/>
+ <xsd:element name="wayType" type="xsd:string"/>
+ <xsd:element name="wayTypeDescription" type="xsd:string"/>
+ <xsd:element name="wayNumberExtra" type="xsd:string"/>
+ <xsd:element name="wayName" type="xsd:string"/>
+ <xsd:element name="addressExtra" type="xsd:string"/>
+ <xsd:element name="urbanDistrict" type="xsd:string"/>
+ <xsd:element name="postBox" type="xsd:string"/>
+ <xsd:element name="cedex" type="xsd:string"/>
+ <xsd:element name="postCode" type="xsd:string"/>
+ <xsd:element name="city" type="xsd:string"/>
+ <xsd:element name="country" type="xsd:string"/>
+ <xsd:element name="email" type="xsd:string"/>
+ <xsd:element name="legalForm" type="xsd:string"/>
+ <xsd:element name="occupation" type="xsd:string"/>
+ <xsd:element name="socialNomination" type="xsd:string"/>
+ <xsd:element name="PJSocialNomination" type="xsd:string"/>
+ <xsd:element name="socialNominationExtra" type="xsd:string"/>
+ <xsd:element name="lineDescription" type="xsd:string"/>
+ <xsd:element name="siret" type="xsd:string"/>
+ <xsd:element name="ape" type="xsd:string"/>
+ <xsd:element name="displayFirstName" type="xsd:string"/>
+ <xsd:element name="displayOnlyCity" type="xsd:string"/>
+ <xsd:element name="displayUniversalDirectory" type="xsd:string"/>
+ <xsd:element name="displayMarketingDirectory" type="xsd:string"/>
+ <xsd:element name="displaySearchReverse" type="xsd:string"/>
+ <xsd:element name="receivePJDirectory" type="xsd:string"/>
+ <xsd:element name="inseeCode" type="xsd:int"/>
+ <xsd:element name="codePJ" type="xsd:string"/>
+ <xsd:element name="labelPJ" type="xsd:string"/>
+ <xsd:element name="modificationType" type="xsd:string"/>
+ <xsd:element name="modificationDate" type="xsd:string"/>
+ <xsd:element name="status" type="xsd:string"/>
+ <xsd:element name="status_pagesjaunes" type="xsd:string"/>
+ <xsd:element name="status_118712" type="xsd:string"/>
+ <xsd:element name="address" type="xsd:string"/>
+ </xsd:all>
+ </xsd:complexType>
+
+ <xsd:complexType name="telephonyDirectoryInfoGetSiretReturn">
+ <xsd:all>
+ <xsd:element name="name" type="xsd:string"/>
+ <xsd:element name="siret" type="xsd:int"/>
+ <xsd:element name="siren" type="xsd:int"/>
+ <xsd:element name="ape" type="xsd:string"/>
+ <xsd:element name="address" type="xsd:string"/>
+ <xsd:element name="juridicCategory" type="xsd:string"/>
+ <xsd:element name="brand" type="xsd:string"/>
+ </xsd:all>
+ </xsd:complexType>
+
+ <xsd:complexType name="telephonyAvailableFunctionStruct">
+ <xsd:all>
+ <xsd:element name="function" type="xsd:string"/>
+ <xsd:element name="relatedValue" type="xsd:string"/>
+ <xsd:element name="defaultValue" type="xsd:string"/>
+ <xsd:element name="possibilities" type="typens:MyArrayOfStringType"/>
+ </xsd:all>
+ </xsd:complexType>
+
+ <xsd:complexType name="telephonyFunctionKeyStruct">
+ <xsd:all>
+ <xsd:element name="keyNum" type="xsd:int"/>
+ <xsd:element name="function" type="xsd:string"/>
+ <xsd:element name="relatedNumber" type="xsd:string"/>
+ <xsd:element name="label" type="xsd:string"/>
+ <xsd:element name="default" type="xsd:string"/>
+ <xsd:element name="type" type="xsd:string"/>
+ <xsd:element name="functionList" type="typens:MyArrayOfTelephonyAvailableFunctionStructType"/>
+ </xsd:all>
+ </xsd:complexType>
+
+ <xsd:complexType name="telephonyFaxCallStruct">
+ <xsd:all>
+ <xsd:element name="calledNumber" type="xsd:string"/>
+ <xsd:element name="callingNumber" type="xsd:string"/>
+ <xsd:element name="destination" type="xsd:string"/>
+ <xsd:element name="jobid" type="xsd:int"/>
+ <xsd:element name="nature" type="xsd:string"/>
+ <xsd:element name="countryCode" type="xsd:int"/>
+ <xsd:element name="designation" type="xsd:string"/>
+ <xsd:element name="jobtag" type="xsd:string"/>
+ <xsd:element name="idkey" type="xsd:string"/>
+ <xsd:element name="priceWithoutVAT" type="xsd:float"/>
+ <xsd:element name="quality" type="xsd:string"/>
+ <xsd:element name="callDate" type="xsd:string"/>
+ <xsd:element name="pages" type="xsd:int"/>
+ </xsd:all>
+ </xsd:complexType>
+
+ <xsd:complexType name="telephonyFaxCallsSummaryDetailsStruct">
+ <xsd:all>
+ <xsd:element name="faxNumber" type="xsd:int"/>
+ <xsd:element name="pages" type="xsd:int"/>
+ <xsd:element name="priceWithoutVAT" type="xsd:float"/>
+ </xsd:all>
+ </xsd:complexType>
+
+ <xsd:complexType name="telephonyFaxCallsSummaryStruct">
+ <xsd:all>
+ <xsd:element name="high" type="typens:telephonyFaxCallsSummaryDetailsStruct"/>
+ <xsd:element name="low" type="typens:telephonyFaxCallsSummaryDetailsStruct"/>
+ </xsd:all>
+ </xsd:complexType>
+
+ <xsd:complexType name="telephonyFaxCallListReturn">
+ <xsd:all>
+ <xsd:element name="fromDate" type="xsd:string"/>
+ <xsd:element name="toDate" type="xsd:string"/>
+ <xsd:element name="list" type="typens:MyArrayOfTelephonyFaxCallStructType"/>
+ <xsd:element name="summary" type="typens:telephonyFaxCallsSummaryStruct"/>
+ </xsd:all>
+ </xsd:complexType>
+
+ <xsd:complexType name="telephonyFaxOptionsListReturn">
+ <xsd:all>
+ <xsd:element name="callNumber" type="xsd:string"/>
+ <xsd:element name="countryCode" type="xsd:string"/>
+ <xsd:element name="fromName" type="xsd:string"/>
+ <xsd:element name="fromEmail" type="xsd:string"/>
+ <xsd:element name="faxQuality" type="xsd:string"/>
+ <xsd:element name="faxTagLine" type="xsd:string"/>
+ <xsd:element name="faxMaxCall" type="xsd:int"/>
+ <xsd:element name="receivId" type="xsd:string"/>
+ <xsd:element name="senderId" type="xsd:string"/>
+ <xsd:element name="redirection1Email" type="xsd:string"/>
+ <xsd:element name="redirection2Email" type="xsd:string"/>
+ <xsd:element name="redirection3Email" type="xsd:string"/>
+ <xsd:element name="redirection4Email" type="xsd:string"/>
+ <xsd:element name="redirection5Email" type="xsd:string"/>
+ </xsd:all>
+ </xsd:complexType>
+
+ <xsd:complexType name="telephonyFaxHistoryStruct">
+ <xsd:all>
+ <xsd:element name="id" type="xsd:int"/>
+ <xsd:element name="relatedNumber" type="xsd:string"/>
+ <xsd:element name="jobid" type="xsd:int"/>
+ <xsd:element name="jobtag" type="xsd:string"/>
+ <xsd:element name="sender" type="xsd:string"/>
+ <xsd:element name="pages" type="xsd:int"/>
+ <xsd:element name="quality" type="xsd:string"/>
+ <xsd:element name="callTime" type="xsd:string"/>
+ <xsd:element name="date" type="xsd:string"/>
+ <xsd:element name="state" type="xsd:string"/>
+ </xsd:all>
+ </xsd:complexType>
+
+ <xsd:complexType name="telephonyFaxCampaignDetailsStruct">
+ <xsd:all>
+ <xsd:element name="campaignName" type="xsd:string"/>
+ <xsd:element name="campaignStatus" type="xsd:string"/>
+ <xsd:element name="dateStart" type="xsd:string"/>
+ <xsd:element name="dateEnd" type="xsd:string"/>
+ <xsd:element name="total" type="xsd:int"/>
+ <xsd:element name="todo" type="xsd:int"/>
+ <xsd:element name="success" type="xsd:int"/>
+ <xsd:element name="failed" type="xsd:int"/>
+ <xsd:element name="reference" type="xsd:string"/>
+ <xsd:element name="recipients" type="typens:MyArrayOfTelephonyRecipientStructType"/>
+ </xsd:all>
+ </xsd:complexType>
+
+ <xsd:complexType name="telephonyRecipientStruct">
+ <xsd:all>
+ <xsd:element name="recipient" type="xsd:string"/>
+ <xsd:element name="status" type="xsd:string"/>
+ </xsd:all>
+ </xsd:complexType>
+
+ <xsd:complexType name="telephonyAbbreviatedNumberListPaginatedReturn">
+ <xsd:all>
+ <xsd:element name="totalRecords" type="xsd:int"/>
+ <xsd:element name="list" type="typens:MyArrayOfTelephonyAbbreviatedNumberStructType"/>
+ </xsd:all>
+ </xsd:complexType>
+
+ <xsd:complexType name="telephonyFaxCampaignListReturn">
+ <xsd:all>
+ <xsd:element name="totalRecords" type="xsd:int"/>
+ <xsd:element name="list" type="typens:MyArrayOfTelephonyFaxCampaignStructType"/>
+ </xsd:all>
+ </xsd:complexType>
+
+ <xsd:complexType name="telephonyFaxCampaignStruct">
+ <xsd:all>
+ <xsd:element name="campaignName" type="xsd:string"/>
+ <xsd:element name="campaignStatus" type="xsd:string"/>
+ <xsd:element name="dateStart" type="xsd:string"/>
+ <xsd:element name="dateEnd" type="xsd:string"/>
+ <xsd:element name="total" type="xsd:int"/>
+ <xsd:element name="success" type="xsd:int"/>
+ <xsd:element name="failed" type="xsd:int"/>
+ <xsd:element name="reference" type="xsd:string"/>
+ </xsd:all>
+ </xsd:complexType>
+
+ <xsd:complexType name="telephonyPortabilityStruct">
+ <xsd:all>
+ <xsd:element name="id" type="xsd:int"/>
+ <xsd:element name="customerFullName" type="xsd:string"/>
+ <xsd:element name="billingAccount" type="xsd:string"/>
+ <xsd:element name="callNumber" type="xsd:string"/>
+ <xsd:element name="extraNumbers" type="typens:MyArrayOfStringType"/>
+ <xsd:element name="planDate" type="xsd:string"/>
+ <xsd:element name="resellerOrder" type="xsd:boolean"/>
+ <xsd:element name="customerMailSent" type="xsd:boolean"/>
+ <xsd:element name="customerMailSendDate" type="xsd:string"/>
+ <xsd:element name="customerMailReturned" type="xsd:boolean"/>
+ <xsd:element name="customerMailReturnDate" type="xsd:string"/>
+ <xsd:element name="customerMailTracking" type="xsd:string"/>
+ <xsd:element name="rangeHolderName" type="xsd:string"/>
+ <xsd:element name="losingCpName" type="xsd:string"/>
+ <xsd:element name="rhOrderSent" type="xsd:boolean"/>
+ <xsd:element name="rhOrderReceived" type="xsd:boolean"/>
+ <xsd:element name="rhOrderAck" type="xsd:string"/>
+ <xsd:element name="rhOrderAckComment" type="xsd:string"/>
+ <xsd:element name="rhOrderPort" type="xsd:string"/>
+ <xsd:element name="rhOrderPortComment" type="xsd:string"/>
+ <xsd:element name="lcpOrderSent" type="xsd:boolean"/>
+ <xsd:element name="lcpOrderReceived" type="xsd:boolean"/>
+ <xsd:element name="lcpOrderAck" type="xsd:string"/>
+ <xsd:element name="lcpOrderAckComment" type="xsd:string"/>
+ <xsd:element name="lcpOrderPort" type="xsd:string"/>
+ <xsd:element name="lcpOrderPortComment" type="xsd:string"/>
+ </xsd:all>
+ </xsd:complexType>
+
+ <xsd:complexType name="telephonyNumberOrderReturn">
+ <xsd:all>
+ <xsd:element name="orderId" type="xsd:int"/>
+ <xsd:element name="orderPassword" type="xsd:string"/>
+ <xsd:element name="orderUrl" type="xsd:string"/>
+ <xsd:element name="totalPrice" type="xsd:float"/>
+ </xsd:all>
+ </xsd:complexType>
+
+ <xsd:complexType name="telephonyNumberZoneAndPrefixStruct">
+ <xsd:all>
+ <xsd:element name="country" type="xsd:string"/>
+ <xsd:element name="type" type="xsd:string"/>
+ <xsd:element name="zone" type="xsd:string"/>
+ <xsd:element name="prefix" type="xsd:string"/>
+ </xsd:all>
+ </xsd:complexType>
+
+ <xsd:complexType name="telephonyNumberCityForZoneStruct">
+ <xsd:all>
+ <xsd:element name="city" type="xsd:string"/>
+ <xsd:element name="postalCode" type="xsd:string"/>
+ </xsd:all>
+ </xsd:complexType>
+
+ <xsd:complexType name="telephonyTonesOptionsListReturn">
+ <xsd:all>
+ <xsd:element name="toneRingback" type="xsd:string"/>
+ <xsd:element name="toneOnHold" type="xsd:string"/>
+ <xsd:element name="toneOnClosure" type="xsd:string"/>
+ <xsd:element name="toneOnCallWaiting" type="xsd:string"/>
+ </xsd:all>
+ </xsd:complexType>
+
+ <xsd:complexType name="telephonyToneStatusReturn">
+ <xsd:all>
+ <xsd:element name="ringback" type="xsd:boolean"/>
+ <xsd:element name="onhold" type="xsd:boolean"/>
+ <xsd:element name="onclosure" type="xsd:boolean"/>
+ <xsd:element name="callwaiting" type="xsd:boolean"/>
+ </xsd:all>
+ </xsd:complexType>
+
+ <xsd:complexType name="telephonyDdiInfoReturn">
+ <xsd:all>
+ <xsd:element name="number" type="xsd:string"/>
+ <xsd:element name="country" type="xsd:string"/>
+ <xsd:element name="noReplyTimer" type="xsd:int"/>
+ <xsd:element name="logged" type="xsd:boolean"/>
+ </xsd:all>
+ </xsd:complexType>
+
+ <xsd:complexType name="telephonyRedirectInfoReturn">
+ <xsd:all>
+ <xsd:element name="number" type="xsd:string"/>
+ <xsd:element name="country" type="xsd:string"/>
+ <xsd:element name="noReplyTimer" type="xsd:int"/>
+ <xsd:element name="logged" type="xsd:boolean"/>
+ </xsd:all>
+ </xsd:complexType>
+
+ <xsd:complexType name="telephonyHuntingInfoReturn">
+ <xsd:all>
+ <xsd:element name="members" type="typens:MyArrayOfTelephonyHuntingInfoMemberStructType"/>
+ <xsd:element name="strategy" type="xsd:string"/>
+ <xsd:element name="pattern" type="xsd:string"/>
+ <xsd:element name="onHoldTimer" type="xsd:int"/>
+ <xsd:element name="queueSize" type="xsd:int"/>
+ <xsd:element name="numberOfCalls" type="xsd:int"/>
+ <xsd:element name="noReplyTimer" type="xsd:int"/>
+ <xsd:element name="mainVoicemail" type="xsd:string"/>
+ <xsd:element name="toneOnHold" type="xsd:boolean"/>
+ <xsd:element name="toneRingback" type="xsd:boolean"/>
+ <xsd:element name="toneOnClosure" type="xsd:boolean"/>
+ <xsd:element name="anonymousCallRejection" type="xsd:boolean"/>
+ </xsd:all>
+ </xsd:complexType>
+
+ <xsd:complexType name="telephonyHuntingInfoMemberStruct">
+ <xsd:all>
+ <xsd:element name="number" type="xsd:string"/>
+ <xsd:element name="numberInternational" type="xsd:string"/>
+ <xsd:element name="status" type="xsd:string"/>
+ <xsd:element name="logged" type="xsd:boolean"/>
+ <xsd:element name="noReplyTimer" type="xsd:int"/>
+ </xsd:all>
+ </xsd:complexType>
+
+ <xsd:complexType name="telephonyScreenStruct">
+ <xsd:all>
+ <xsd:element name="status" type="xsd:string"/>
+ <xsd:element name="numberScreen" type="xsd:string"/>
+ <xsd:element name="natureScreen" type="xsd:string"/>
+ </xsd:all>
+ </xsd:complexType>
+
+ <xsd:complexType name="telephonyScreenBlackWhiteChoiceReturn">
+ <xsd:all>
+ <xsd:element name="incomingScreenlist" type="xsd:string"/>
+ <xsd:element name="outgoingScreenlist" type="xsd:string"/>
+ <xsd:element name="outgoingCodeUnlock" type="xsd:string"/>
+ </xsd:all>
+ </xsd:complexType>
+
+ <xsd:complexType name="telephonyHuntingGenericScreenStruct">
+ <xsd:all>
+ <xsd:element name="status" type="xsd:string"/>
+ <xsd:element name="timeEnd" type="xsd:string"/>
+ <xsd:element name="timeStart" type="xsd:string"/>
+ <xsd:element name="dayType" type="xsd:string"/>
+ <xsd:element name="forwardPolicyIndex" type="xsd:string"/>
+ </xsd:all>
+ </xsd:complexType>
+
+ <xsd:complexType name="telephonyHuntingGenericScreenOptionsStruct">
+ <xsd:all>
+ <xsd:element name="callForward" type="xsd:string"/>
+ <xsd:element name="voicemail" type="xsd:string"/>
+ <xsd:element name="index" type="xsd:string"/>
+ <xsd:element name="timeout" type="xsd:string"/>
+ </xsd:all>
+ </xsd:complexType>
+
+ <xsd:complexType name="telephonyPlugAndPhoneInfoReturn">
+ <xsd:all>
+ <xsd:element name="brand" type="xsd:string"/>
+ <xsd:element name="protocol" type="xsd:string"/>
+ <xsd:element name="mac" type="xsd:string"/>
+ <xsd:element name="gfKeyCount" type="xsd:int"/>
+ <xsd:element name="skin" type="xsd:string"/>
+ </xsd:all>
+ </xsd:complexType>
+
+ <xsd:complexType name="telephonyPlugAndPhoneReinitConfigurationReturn">
+ <xsd:all>
+ <xsd:element name="autoConfigurationCode" type="xsd:string"/>
+ <xsd:element name="contactsBookKey" type="xsd:string"/>
+ <xsd:element name="serverUrl" type="xsd:string"/>
+ </xsd:all>
+ </xsd:complexType>
+
+ <xsd:complexType name="telephonyAliasToLinePossibilityPriceStruct">
+ <xsd:all>
+ <xsd:element name="offer" type="xsd:string"/>
+ <xsd:element name="price" type="xsd:string"/>
+ </xsd:all>
+ </xsd:complexType>
+
+ <xsd:complexType name="telephonyLineLogsListStruct">
+ <xsd:all>
+ <xsd:element name="date" type="xsd:string"/>
+ <xsd:element name="type" type="xsd:string"/>
+ <xsd:element name="msg" type="xsd:string"/>
+ </xsd:all>
+ </xsd:complexType>
+
+ <xsd:complexType name="telephonyLineLogsStruct">
+ <xsd:all>
+ <xsd:element name="number" type="xsd:string"/>
+ <xsd:element name="list" type="typens:MyArrayOfTelephonyLineLogsListStructType"/>
+ <xsd:element name="totalRecords" type="xsd:int"/>
+ </xsd:all>
+ </xsd:complexType>
+
+ <xsd:complexType name="telephonyLineLogsNotificationOptionsReturn">
+ <xsd:all>
+ <xsd:element name="frequency" type="xsd:string"/>
+ <xsd:element name="sendIfNull" type="xsd:boolean"/>
+ <xsd:element name="email" type="xsd:string"/>
+ </xsd:all>
+ </xsd:complexType>
+
+ <xsd:complexType name="telephonyFreefaxToVoicefaxCheckStruct">
+ <xsd:all>
+ <xsd:element name="domain" type="xsd:string"/>
+ <xsd:element name="number" type="xsd:string"/>
+ </xsd:all>
+ </xsd:complexType>
+
+ <xsd:complexType name="telephonySipDomainStruct">
+ <xsd:all>
+ <xsd:element name="domain" type="xsd:string"/>
+ <xsd:element name="country" type="xsd:string"/>
+ <xsd:element name="list" type="typens:MyArrayOfStringType"/>
+ </xsd:all>
+ </xsd:complexType>
+
+ <xsd:complexType name="telephonyRateStruct">
+ <xsd:all>
+ <xsd:element name="country" type="xsd:string"/>
+ <xsd:element name="countrySuffixe" type="xsd:string"/>
+ <xsd:element name="price" type="xsd:float"/>
+ <xsd:element name="type" type="xsd:string"/>
+ </xsd:all>
+ </xsd:complexType>
+
+ <xsd:complexType name="telephonySmsBlacklistedSenderStruct">
+ <xsd:all>
+ <xsd:element name="id" type="xsd:int"/>
+ <xsd:element name="date" type="xsd:string"/>
+ <xsd:element name="number" type="xsd:string"/>
+ </xsd:all>
+ </xsd:complexType>
+
+ <xsd:complexType name="telephonySmsBlacklistedSendersListReturn">
+ <xsd:all>
+ <xsd:element name="totalRecords" type="xsd:int"/>
+ <xsd:element name="list" type="typens:MyArrayOfTelephonySmsBlacklistedSenderStructType"/>
+ </xsd:all>
+ </xsd:complexType>
+
+ <xsd:complexType name="telephonyDefaultPrivateHolidaysEventsCountryStruct">
+ <xsd:all>
+ <xsd:element name="dates" type="typens:MyArrayOfStringType"/>
+ <xsd:element name="tzid" type="xsd:string"/>
+ </xsd:all>
+ </xsd:complexType>
+
+ <xsd:complexType name="telephonyGetDefaultPrivateHolidaysEventsReturn">
+ <xsd:all>
+ <xsd:element name="fr" type="typens:telephonyDefaultPrivateHolidaysEventsCountryStruct"/>
+ <xsd:element name="be" type="typens:telephonyDefaultPrivateHolidaysEventsCountryStruct"/>
+ <xsd:element name="uk" type="typens:telephonyDefaultPrivateHolidaysEventsCountryStruct"/>
+ <xsd:element name="de" type="typens:telephonyDefaultPrivateHolidaysEventsCountryStruct"/>
+ <xsd:element name="es" type="typens:telephonyDefaultPrivateHolidaysEventsCountryStruct"/>
+ </xsd:all>
+ </xsd:complexType>
+
+ <xsd:complexType name="telephonyGetClosureEventsAsIcsStruct">
+ <xsd:all>
+ <xsd:element name="numberOfEvents" type="xsd:int"/>
+ <xsd:element name="datas" type="xsd:string"/>
+ </xsd:all>
+ </xsd:complexType>
+
+ <xsd:complexType name="telephonyGetClosureEventsAsArrayEventStruct">
+ <xsd:all>
+ <xsd:element name="uid" type="xsd:string"/>
+ <xsd:element name="summary" type="xsd:string"/>
+ <xsd:element name="description" type="xsd:string"/>
+ <xsd:element name="categories" type="xsd:string"/>
+ <xsd:element name="created" type="xsd:string"/>
+ <xsd:element name="lastModified" type="xsd:string"/>
+ <xsd:element name="dtStart" type="xsd:string"/>
+ <xsd:element name="dtStartValue" type="xsd:string"/>
+ <xsd:element name="dtStartTzid" type="xsd:string"/>
+ <xsd:element name="dtStartUserValue" type="xsd:string"/>
+ <xsd:element name="dtEnd" type="xsd:string"/>
+ <xsd:element name="dtEndValue" type="xsd:string"/>
+ <xsd:element name="dtEndTzid" type="xsd:string"/>
+ <xsd:element name="dtEndUserValue" type="xsd:string"/>
+ </xsd:all>
+ </xsd:complexType>
+
+ <xsd:complexType name="telephonyGetClosureEventsAsArrayStruct">
+ <xsd:all>
+ <xsd:element name="numberOfEvents" type="xsd:int"/>
+ <xsd:element name="events" type="typens:MyArrayOfTelephonyGetClosureEventsAsArrayEventStructType"/>
+ </xsd:all>
+ </xsd:complexType>
+
+ <xsd:complexType name="telephonyTrunkExternalDisplayedNumberStruct">
+ <xsd:all>
+ <xsd:element name="number" type="xsd:string"/>
+ <xsd:element name="status" type="xsd:string"/>
+ </xsd:all>
+ </xsd:complexType>
+
+ <xsd:complexType name="telephonySmsplusOptionsStruct">
+ <xsd:all>
+ <xsd:element name="sendingNoSmsMt" type="xsd:boolean"/>
+ <xsd:element name="defaultSmsAccount" type="xsd:string"/>
+ <xsd:element name="defaultSmsSender" type="xsd:string"/>
+ <xsd:element name="defaultSmsAccountMtBilling" type="xsd:string"/>
+ <xsd:element name="trackingMedias" type="typens:MyArrayOfStringType"/>
+ <xsd:element name="trackingTargets" type="typens:MyArrayOfStringType"/>
+ </xsd:all>
+ </xsd:complexType>
+
+ <xsd:complexType name="telephonyApplicationTypeStruct">
+ <xsd:all>
+ <xsd:element name="label" type="xsd:string"/>
+ <xsd:element name="description" type="xsd:string"/>
+ </xsd:all>
+ </xsd:complexType>
+
+ <xsd:complexType name="telephonySmsplusChoicesStruct">
+ <xsd:all>
+ <xsd:element name="level" type="xsd:int"/>
+ <xsd:element name="price" type="xsd:float"/>
+ <xsd:element name="priceReversed" type="xsd:float"/>
+ <xsd:element name="shortCodeCategory" type="xsd:int"/>
+ <xsd:element name="publicType" type="xsd:string"/>
+ <xsd:element name="rates" type="xsd:string"/>
+ <xsd:element name="applicationTypes" type="typens:MyArrayOfTelephonyApplicationTypeStructType"/>
+ <xsd:element name="shortCodes" type="typens:MyArrayOfStringType"/>
+ </xsd:all>
+ </xsd:complexType>
+
+ <xsd:complexType name="telephonySmsplusDetailsStruct">
+ <xsd:all>
+ <xsd:element name="shortCodeCategory" type="xsd:string"/>
+ <xsd:element name="shortCode" type="xsd:string"/>
+ <xsd:element name="keyword" type="xsd:string"/>
+ <xsd:element name="domain" type="xsd:string"/>
+ <xsd:element name="publicType" type="xsd:string"/>
+ <xsd:element name="price" type="xsd:float"/>
+ <xsd:element name="priceReversed" type="xsd:float"/>
+ <xsd:element name="rates" type="xsd:string"/>
+ <xsd:element name="level" type="xsd:string"/>
+ <xsd:element name="company" type="xsd:string"/>
+ <xsd:element name="applicationDescription" type="xsd:string"/>
+ <xsd:element name="applicationType" type="xsd:string"/>
+ <xsd:element name="cgiUrl" type="xsd:string"/>
+ <xsd:element name="text" type="xsd:string"/>
+ <xsd:element name="cgiActivation" type="xsd:boolean"/>
+ <xsd:element name="options" type="typens:telephonySmsplusOptionsStruct"/>
+ <xsd:element name="description" type="xsd:string"/>
+ </xsd:all>
+ </xsd:complexType>
+
+ <xsd:complexType name="telephonySmsplusSummaryInfosStruct">
+ <xsd:all>
+ <xsd:element name="quantity" type="xsd:string"/>
+ <xsd:element name="priceReversed" type="xsd:float"/>
+ <xsd:element name="price" type="xsd:float"/>
+ </xsd:all>
+ </xsd:complexType>
+
+ <xsd:complexType name="telephonySmsplusTicketsStruct">
+ <xsd:all>
+ <xsd:element name="id" type="xsd:string"/>
+ <xsd:element name="date" type="xsd:string"/>
+ <xsd:element name="from" type="xsd:string"/>
+ <xsd:element name="to" type="xsd:string"/>
+ <xsd:element name="operator" type="xsd:string"/>
+ <xsd:element name="priceReversed" type="xsd:float"/>
+ <xsd:element name="message" type="xsd:string"/>
+ <xsd:element name="status" type="xsd:string"/>
+ </xsd:all>
+ </xsd:complexType>
+
+ <xsd:complexType name="telephonyNumberWayNameStruct">
+ <xsd:all>
+ <xsd:element name="name" type="xsd:string"/>
+ <xsd:element name="code" type="xsd:string"/>
+ </xsd:all>
+ </xsd:complexType>
+
+ <xsd:complexType name="telephonyLineGetCodecsReturn">
+ <xsd:all>
+ <xsd:element name="codecs" type="xsd:string"/>
+ <xsd:element name="availableCodecsList" type="typens:MyArrayOfStringType"/>
+ <xsd:element name="defaultCodecs" type="xsd:string"/>
+ </xsd:all>
+ </xsd:complexType>
+
+ <xsd:complexType name="telephonyCitiesFromZipStruct">
+ <xsd:all>
+ <xsd:element name="insee" type="xsd:string"/>
+ <xsd:element name="city" type="xsd:string"/>
+ <xsd:element name="zip" type="xsd:string"/>
+ <xsd:element name="zne" type="xsd:string"/>
+ </xsd:all>
+ </xsd:complexType>
+
+ <xsd:complexType name="telephonySpareActionsStruct">
+ <xsd:all>
+ <xsd:element name="toSpare" type="xsd:boolean"/>
+ <xsd:element name="toRma" type="xsd:boolean"/>
+ <xsd:element name="rmaType" type="xsd:string"/>
+ <xsd:element name="toDelete" type="xsd:boolean"/>
+ </xsd:all>
+ </xsd:complexType>
+
+ <xsd:complexType name="telephonySpareDetailStruct">
+ <xsd:all>
+ <xsd:element name="model" type="xsd:string"/>
+ <xsd:element name="price_fr" type="xsd:float"/>
+ </xsd:all>
+ </xsd:complexType>
+
+ <xsd:complexType name="telephonySpareServiceInfoStruct">
+ <xsd:all>
+ <xsd:element name="service" type="xsd:string"/>
+ <xsd:element name="reference" type="xsd:string"/>
+ <xsd:element name="parents" type="typens:MyArrayOfStringType"/>
+ <xsd:element name="actions" type="typens:telephonySpareActionsStruct"/>
+ </xsd:all>
+ </xsd:complexType>
+
+ <xsd:complexType name="telephonySpareInfoStruct">
+ <xsd:all>
+ <xsd:element name="type" type="xsd:string"/>
+ <xsd:element name="family" type="xsd:string"/>
+ <xsd:element name="spare" type="xsd:string"/>
+ <xsd:element name="model" type="xsd:string"/>
+ <xsd:element name="mac" type="xsd:string"/>
+ <xsd:element name="compatibles" type="typens:MyArrayOfStringType"/>
+ <xsd:element name="actions" type="typens:telephonySpareActionsStruct"/>
+ </xsd:all>
+ </xsd:complexType>
+
+ <xsd:complexType name="telephonySpareListReturn">
+ <xsd:all>
+ <xsd:element name="list" type="typens:MyArrayOfTelephonySpareInfoStructType"/>
+ <xsd:element name="total" type="xsd:int"/>
+ <xsd:element name="serviceInfo" type="typens:telephonySpareServiceInfoStruct"/>
+ </xsd:all>
+ </xsd:complexType>
+
+ <xsd:complexType name="telephonySpareFamilyStruct">
+ <xsd:all>
+ <xsd:element name="type" type="xsd:string"/>
+ <xsd:element name="family" type="xsd:string"/>
+ <xsd:element name="compatibles" type="typens:MyArrayOfStringType"/>
+ <xsd:element name="spares" type="typens:MyArrayOfTelephonySpareDetailStructType"/>
+ </xsd:all>
+ </xsd:complexType>
+
+ <xsd:complexType name="telephonySviInfoReturn">
+ <xsd:all>
+ <xsd:element name="number" type="xsd:string"/>
+ <xsd:element name="country" type="xsd:string"/>
+ <xsd:element name="url" type="xsd:string"/>
+ <xsd:element name="recordinfo" type="xsd:string"/>
+ </xsd:all>
+ </xsd:complexType>
+
+ <xsd:complexType name="MyArrayOfTelephonyBillingAccountStructType">
+ <xsd:complexContent>
+ <xsd:restriction base="soapenc:Array">
+ <xsd:attribute ref="soapenc:arrayType" wsdl:arrayType="typens:telephonyBillingAccountStruct[]"/>
+ </xsd:restriction>
+ </xsd:complexContent>
+ </xsd:complexType>
+
+ <xsd:complexType name="MyArrayOfStringType">
+ <xsd:complexContent>
+ <xsd:restriction base="soapenc:Array">
+ <xsd:attribute ref="soapenc:arrayType" wsdl:arrayType="xsd:string[]"/>
+ </xsd:restriction>
+ </xsd:complexContent>
+ </xsd:complexType>
+
+ <xsd:complexType name="MyArrayOfTelephonyLineSwitchPossibilityPriceStructType">
+ <xsd:complexContent>
+ <xsd:restriction base="soapenc:Array">
+ <xsd:attribute ref="soapenc:arrayType" wsdl:arrayType="typens:telephonyLineSwitchPossibilityPriceStruct[]"/>
+ </xsd:restriction>
+ </xsd:complexContent>
+ </xsd:complexType>
+
+ <xsd:complexType name="MyArrayOfTelephonyLineSwitchOldOfferStructType">
+ <xsd:complexContent>
+ <xsd:restriction base="soapenc:Array">
+ <xsd:attribute ref="soapenc:arrayType" wsdl:arrayType="typens:telephonyLineSwitchOldOfferStruct[]"/>
+ </xsd:restriction>
+ </xsd:complexContent>
+ </xsd:complexType>
+
+ <xsd:complexType name="MyArrayOfOrderFollowingUpStructType">
+ <xsd:complexContent>
+ <xsd:restriction base="soapenc:Array">
+ <xsd:attribute ref="soapenc:arrayType" wsdl:arrayType="typens:orderFollowingUpStruct[]"/>
+ </xsd:restriction>
+ </xsd:complexContent>
+ </xsd:complexType>
+
+ <xsd:complexType name="MyArrayOfTelephonyReversmentsSummationStructType">
+ <xsd:complexContent>
+ <xsd:restriction base="soapenc:Array">
+ <xsd:attribute ref="soapenc:arrayType" wsdl:arrayType="typens:telephonyReversmentsSummationStruct[]"/>
+ </xsd:restriction>
+ </xsd:complexContent>
+ </xsd:complexType>
+
+ <xsd:complexType name="MyArrayOfTelephonyReversmentsSummationNumbersStructType">
+ <xsd:complexContent>
+ <xsd:restriction base="soapenc:Array">
+ <xsd:attribute ref="soapenc:arrayType" wsdl:arrayType="typens:telephonyReversmentsSummationNumbersStruct[]"/>
+ </xsd:restriction>
+ </xsd:complexContent>
+ </xsd:complexType>
+
+ <xsd:complexType name="MyArrayOfTelephonyBillStructType">
+ <xsd:complexContent>
+ <xsd:restriction base="soapenc:Array">
+ <xsd:attribute ref="soapenc:arrayType" wsdl:arrayType="typens:telephonyBillStruct[]"/>
+ </xsd:restriction>
+ </xsd:complexContent>
+ </xsd:complexType>
+
+ <xsd:complexType name="MyArrayOfTelephonyRateStructType">
+ <xsd:complexContent>
+ <xsd:restriction base="soapenc:Array">
+ <xsd:attribute ref="soapenc:arrayType" wsdl:arrayType="typens:telephonyRateStruct[]"/>
+ </xsd:restriction>
+ </xsd:complexContent>
+ </xsd:complexType>
+
+ <xsd:complexType name="MyArrayOfTelephonyVoicemailMailboxStructType">
+ <xsd:complexContent>
+ <xsd:restriction base="soapenc:Array">
+ <xsd:attribute ref="soapenc:arrayType" wsdl:arrayType="typens:telephonyVoicemailMailboxStruct[]"/>
+ </xsd:restriction>
+ </xsd:complexContent>
+ </xsd:complexType>
+
+ <xsd:complexType name="MyArrayOfTelephonyPhonebookStructType">
+ <xsd:complexContent>
+ <xsd:restriction base="soapenc:Array">
+ <xsd:attribute ref="soapenc:arrayType" wsdl:arrayType="typens:telephonyPhonebookStruct[]"/>
+ </xsd:restriction>
+ </xsd:complexContent>
+ </xsd:complexType>
+
+ <xsd:complexType name="MyArrayOfTelephonyPhonebookGroupStructType">
+ <xsd:complexContent>
+ <xsd:restriction base="soapenc:Array">
+ <xsd:attribute ref="soapenc:arrayType" wsdl:arrayType="typens:telephonyPhonebookGroupStruct[]"/>
+ </xsd:restriction>
+ </xsd:complexContent>
+ </xsd:complexType>
+
+ <xsd:complexType name="MyArrayOfTelephonyPhonebookContactStructType">
+ <xsd:complexContent>
+ <xsd:restriction base="soapenc:Array">
+ <xsd:attribute ref="soapenc:arrayType" wsdl:arrayType="typens:telephonyPhonebookContactStruct[]"/>
+ </xsd:restriction>
+ </xsd:complexContent>
+ </xsd:complexType>
+
+ <xsd:complexType name="MyArrayOfTelephonyPhonebookSharePeerStructType">
+ <xsd:complexContent>
+ <xsd:restriction base="soapenc:Array">
+ <xsd:attribute ref="soapenc:arrayType" wsdl:arrayType="typens:telephonyPhonebookSharePeerStruct[]"/>
+ </xsd:restriction>
+ </xsd:complexContent>
+ </xsd:complexType>
+
+ <xsd:complexType name="MyArrayOfTelephonySmsCsvSlotStructType">
+ <xsd:complexContent>
+ <xsd:restriction base="soapenc:Array">
+ <xsd:attribute ref="soapenc:arrayType" wsdl:arrayType="typens:telephonySmsCsvSlotStruct[]"/>
+ </xsd:restriction>
+ </xsd:complexContent>
+ </xsd:complexType>
+
+ <xsd:complexType name="MyArrayOfIntType">
+ <xsd:complexContent>
+ <xsd:restriction base="soapenc:Array">
+ <xsd:attribute ref="soapenc:arrayType" wsdl:arrayType="xsd:int[]"/>
+ </xsd:restriction>
+ </xsd:complexContent>
+ </xsd:complexType>
+
+ <xsd:complexType name="MyArrayOfTelephonySmsHistoryStructType">
+ <xsd:complexContent>
+ <xsd:restriction base="soapenc:Array">
+ <xsd:attribute ref="soapenc:arrayType" wsdl:arrayType="typens:telephonySmsHistoryStruct[]"/>
+ </xsd:restriction>
+ </xsd:complexContent>
+ </xsd:complexType>
+
+ <xsd:complexType name="MyArrayOfTelephonySmsSenderStructType">
+ <xsd:complexContent>
+ <xsd:restriction base="soapenc:Array">
+ <xsd:attribute ref="soapenc:arrayType" wsdl:arrayType="typens:telephonySmsSenderStruct[]"/>
+ </xsd:restriction>
+ </xsd:complexContent>
+ </xsd:complexType>
+
+ <xsd:complexType name="MyArrayOfTelephonyAbbreviatedNumberStructType">
+ <xsd:complexContent>
+ <xsd:restriction base="soapenc:Array">
+ <xsd:attribute ref="soapenc:arrayType" wsdl:arrayType="typens:telephonyAbbreviatedNumberStruct[]"/>
+ </xsd:restriction>
+ </xsd:complexContent>
+ </xsd:complexType>
+
+ <xsd:complexType name="MyArrayOfTelephonyDirectoryPJHeadingStructType">
+ <xsd:complexContent>
+ <xsd:restriction base="soapenc:Array">
+ <xsd:attribute ref="soapenc:arrayType" wsdl:arrayType="typens:telephonyDirectoryPJHeadingStruct[]"/>
+ </xsd:restriction>
+ </xsd:complexContent>
+ </xsd:complexType>
+
+ <xsd:complexType name="MyArrayOfTelephonyDirectoryWayTypeStructType">
+ <xsd:complexContent>
+ <xsd:restriction base="soapenc:Array">
+ <xsd:attribute ref="soapenc:arrayType" wsdl:arrayType="typens:telephonyDirectoryWayTypeStruct[]"/>
+ </xsd:restriction>
+ </xsd:complexContent>
+ </xsd:complexType>
+
+ <xsd:complexType name="MyArrayOfTelephonyFunctionKeyStructType">
+ <xsd:complexContent>
+ <xsd:restriction base="soapenc:Array">
+ <xsd:attribute ref="soapenc:arrayType" wsdl:arrayType="typens:telephonyFunctionKeyStruct[]"/>
+ </xsd:restriction>
+ </xsd:complexContent>
+ </xsd:complexType>
+
+ <xsd:complexType name="MyArrayOfTelephonyFaxHistoryStructType">
+ <xsd:complexContent>
+ <xsd:restriction base="soapenc:Array">
+ <xsd:attribute ref="soapenc:arrayType" wsdl:arrayType="typens:telephonyFaxHistoryStruct[]"/>
+ </xsd:restriction>
+ </xsd:complexContent>
+ </xsd:complexType>
+
+ <xsd:complexType name="MyArrayOfTelephonyPortabilityStructType">
+ <xsd:complexContent>
+ <xsd:restriction base="soapenc:Array">
+ <xsd:attribute ref="soapenc:arrayType" wsdl:arrayType="typens:telephonyPortabilityStruct[]"/>
+ </xsd:restriction>
+ </xsd:complexContent>
+ </xsd:complexType>
+
+ <xsd:complexType name="MyArrayOfTelephonyScreenStructType">
+ <xsd:complexContent>
+ <xsd:restriction base="soapenc:Array">
+ <xsd:attribute ref="soapenc:arrayType" wsdl:arrayType="typens:telephonyScreenStruct[]"/>
+ </xsd:restriction>
+ </xsd:complexContent>
+ </xsd:complexType>
+
+ <xsd:complexType name="MyArrayOfTelephonyHuntingGenericScreenStructType">
+ <xsd:complexContent>
+ <xsd:restriction base="soapenc:Array">
+ <xsd:attribute ref="soapenc:arrayType" wsdl:arrayType="typens:telephonyHuntingGenericScreenStruct[]"/>
+ </xsd:restriction>
+ </xsd:complexContent>
+ </xsd:complexType>
+
+ <xsd:complexType name="MyArrayOfTelephonyHuntingGenericScreenOptionsStructType">
+ <xsd:complexContent>
+ <xsd:restriction base="soapenc:Array">
+ <xsd:attribute ref="soapenc:arrayType" wsdl:arrayType="typens:telephonyHuntingGenericScreenOptionsStruct[]"/>
+ </xsd:restriction>
+ </xsd:complexContent>
+ </xsd:complexType>
+
+ <xsd:complexType name="MyArrayOfBooleanType">
+ <xsd:complexContent>
+ <xsd:restriction base="soapenc:Array">
+ <xsd:attribute ref="soapenc:arrayType" wsdl:arrayType="xsd:boolean[]"/>
+ </xsd:restriction>
+ </xsd:complexContent>
+ </xsd:complexType>
+
+ <xsd:complexType name="MyArrayOfTelephonyNumberWayNameStructType">
+ <xsd:complexContent>
+ <xsd:restriction base="soapenc:Array">
+ <xsd:attribute ref="soapenc:arrayType" wsdl:arrayType="typens:telephonyNumberWayNameStruct[]"/>
+ </xsd:restriction>
+ </xsd:complexContent>
+ </xsd:complexType>
+
+ <xsd:complexType name="MyArrayOfTelephonyNumberZoneAndPrefixStructType">
+ <xsd:complexContent>
+ <xsd:restriction base="soapenc:Array">
+ <xsd:attribute ref="soapenc:arrayType" wsdl:arrayType="typens:telephonyNumberZoneAndPrefixStruct[]"/>
+ </xsd:restriction>
+ </xsd:complexContent>
+ </xsd:complexType>
+
+ <xsd:complexType name="MyArrayOfTelephonyNumberCityForZoneStructType">
+ <xsd:complexContent>
+ <xsd:restriction base="soapenc:Array">
+ <xsd:attribute ref="soapenc:arrayType" wsdl:arrayType="typens:telephonyNumberCityForZoneStruct[]"/>
+ </xsd:restriction>
+ </xsd:complexContent>
+ </xsd:complexType>
+
+ <xsd:complexType name="MyArrayOfTelephonyAliasToLinePossibilityPriceStructType">
+ <xsd:complexContent>
+ <xsd:restriction base="soapenc:Array">
+ <xsd:attribute ref="soapenc:arrayType" wsdl:arrayType="typens:telephonyAliasToLinePossibilityPriceStruct[]"/>
+ </xsd:restriction>
+ </xsd:complexContent>
+ </xsd:complexType>
+
+ <xsd:complexType name="MyArrayOfTelephonyLineLogsStructType">
+ <xsd:complexContent>
+ <xsd:restriction base="soapenc:Array">
+ <xsd:attribute ref="soapenc:arrayType" wsdl:arrayType="typens:telephonyLineLogsStruct[]"/>
+ </xsd:restriction>
+ </xsd:complexContent>
+ </xsd:complexType>
+
+ <xsd:complexType name="MyArrayOfTelephonyFreefaxToVoicefaxCheckStructType">
+ <xsd:complexContent>
+ <xsd:restriction base="soapenc:Array">
+ <xsd:attribute ref="soapenc:arrayType" wsdl:arrayType="typens:telephonyFreefaxToVoicefaxCheckStruct[]"/>
+ </xsd:restriction>
+ </xsd:complexContent>
+ </xsd:complexType>
+
+ <xsd:complexType name="MyArrayOfTelephonySipDomainStructType">
+ <xsd:complexContent>
+ <xsd:restriction base="soapenc:Array">
+ <xsd:attribute ref="soapenc:arrayType" wsdl:arrayType="typens:telephonySipDomainStruct[]"/>
+ </xsd:restriction>
+ </xsd:complexContent>
+ </xsd:complexType>
+
+ <xsd:complexType name="MyArrayOfTelephonyTrunkExternalDisplayedNumberStructType">
+ <xsd:complexContent>
+ <xsd:restriction base="soapenc:Array">
+ <xsd:attribute ref="soapenc:arrayType" wsdl:arrayType="typens:telephonyTrunkExternalDisplayedNumberStruct[]"/>
+ </xsd:restriction>
+ </xsd:complexContent>
+ </xsd:complexType>
+
+ <xsd:complexType name="MyArrayOfTelephonySmsplusChoicesStructType">
+ <xsd:complexContent>
+ <xsd:restriction base="soapenc:Array">
+ <xsd:attribute ref="soapenc:arrayType" wsdl:arrayType="typens:telephonySmsplusChoicesStruct[]"/>
+ </xsd:restriction>
+ </xsd:complexContent>
+ </xsd:complexType>
+
+ <xsd:complexType name="MyArrayOfTelephonySmsplusDetailsStructType">
+ <xsd:complexContent>
+ <xsd:restriction base="soapenc:Array">
+ <xsd:attribute ref="soapenc:arrayType" wsdl:arrayType="typens:telephonySmsplusDetailsStruct[]"/>
+ </xsd:restriction>
+ </xsd:complexContent>
+ </xsd:complexType>
+
+ <xsd:complexType name="MyArrayOfTelephonySmsplusTicketsStructType">
+ <xsd:complexContent>
+ <xsd:restriction base="soapenc:Array">
+ <xsd:attribute ref="soapenc:arrayType" wsdl:arrayType="typens:telephonySmsplusTicketsStruct[]"/>
+ </xsd:restriction>
+ </xsd:complexContent>
+ </xsd:complexType>
+
+ <xsd:complexType name="MyArrayOfTelephonyCitiesFromZipStructType">
+ <xsd:complexContent>
+ <xsd:restriction base="soapenc:Array">
+ <xsd:attribute ref="soapenc:arrayType" wsdl:arrayType="typens:telephonyCitiesFromZipStruct[]"/>
+ </xsd:restriction>
+ </xsd:complexContent>
+ </xsd:complexType>
+
+ <xsd:complexType name="MyArrayOfTelephonySpareFamilyStructType">
+ <xsd:complexContent>
+ <xsd:restriction base="soapenc:Array">
+ <xsd:attribute ref="soapenc:arrayType" wsdl:arrayType="typens:telephonySpareFamilyStruct[]"/>
+ </xsd:restriction>
+ </xsd:complexContent>
+ </xsd:complexType>
+
+ <xsd:complexType name="MyArrayOfTelephonySpareServiceInfoStructType">
+ <xsd:complexContent>
+ <xsd:restriction base="soapenc:Array">
+ <xsd:attribute ref="soapenc:arrayType" wsdl:arrayType="typens:telephonySpareServiceInfoStruct[]"/>
+ </xsd:restriction>
+ </xsd:complexContent>
+ </xsd:complexType>
+
+ <xsd:complexType name="MyArrayOfTelephonyBillingAccountInfoChildrenStructType">
+ <xsd:complexContent>
+ <xsd:restriction base="soapenc:Array">
+ <xsd:attribute ref="soapenc:arrayType" wsdl:arrayType="typens:telephonyBillingAccountInfoChildrenStruct[]"/>
+ </xsd:restriction>
+ </xsd:complexContent>
+ </xsd:complexType>
+
+ <xsd:complexType name="MyArrayOfTelephonyLineStructType">
+ <xsd:complexContent>
+ <xsd:restriction base="soapenc:Array">
+ <xsd:attribute ref="soapenc:arrayType" wsdl:arrayType="typens:telephonyLineStruct[]"/>
+ </xsd:restriction>
+ </xsd:complexContent>
+ </xsd:complexType>
+
+ <xsd:complexType name="MyArrayOfTelephonyReversmentsDetailsStructType">
+ <xsd:complexContent>
+ <xsd:restriction base="soapenc:Array">
+ <xsd:attribute ref="soapenc:arrayType" wsdl:arrayType="typens:telephonyReversmentsDetailsStruct[]"/>
+ </xsd:restriction>
+ </xsd:complexContent>
+ </xsd:complexType>
+
+ <xsd:complexType name="MyArrayOfTelephonyBillingAccountSummaryLineStructType">
+ <xsd:complexContent>
+ <xsd:restriction base="soapenc:Array">
+ <xsd:attribute ref="soapenc:arrayType" wsdl:arrayType="typens:telephonyBillingAccountSummaryLineStruct[]"/>
+ </xsd:restriction>
+ </xsd:complexContent>
+ </xsd:complexType>
+
+ <xsd:complexType name="MyArrayOfTelephonyCallStructType">
+ <xsd:complexContent>
+ <xsd:restriction base="soapenc:Array">
+ <xsd:attribute ref="soapenc:arrayType" wsdl:arrayType="typens:telephonyCallStruct[]"/>
+ </xsd:restriction>
+ </xsd:complexContent>
+ </xsd:complexType>
+
+ <xsd:complexType name="MyArrayOfTelephonyConferenceParticipantStructType">
+ <xsd:complexContent>
+ <xsd:restriction base="soapenc:Array">
+ <xsd:attribute ref="soapenc:arrayType" wsdl:arrayType="typens:telephonyConferenceParticipantStruct[]"/>
+ </xsd:restriction>
+ </xsd:complexContent>
+ </xsd:complexType>
+
+ <xsd:complexType name="MyArrayOfTelephonyAvailableFunctionStructType">
+ <xsd:complexContent>
+ <xsd:restriction base="soapenc:Array">
+ <xsd:attribute ref="soapenc:arrayType" wsdl:arrayType="typens:telephonyAvailableFunctionStruct[]"/>
+ </xsd:restriction>
+ </xsd:complexContent>
+ </xsd:complexType>
+
+ <xsd:complexType name="MyArrayOfTelephonyFaxCallStructType">
+ <xsd:complexContent>
+ <xsd:restriction base="soapenc:Array">
+ <xsd:attribute ref="soapenc:arrayType" wsdl:arrayType="typens:telephonyFaxCallStruct[]"/>
+ </xsd:restriction>
+ </xsd:complexContent>
+ </xsd:complexType>
+
+ <xsd:complexType name="MyArrayOfTelephonyRecipientStructType">
+ <xsd:complexContent>
+ <xsd:restriction base="soapenc:Array">
+ <xsd:attribute ref="soapenc:arrayType" wsdl:arrayType="typens:telephonyRecipientStruct[]"/>
+ </xsd:restriction>
+ </xsd:complexContent>
+ </xsd:complexType>
+
+ <xsd:complexType name="MyArrayOfTelephonyFaxCampaignStructType">
+ <xsd:complexContent>
+ <xsd:restriction base="soapenc:Array">
+ <xsd:attribute ref="soapenc:arrayType" wsdl:arrayType="typens:telephonyFaxCampaignStruct[]"/>
+ </xsd:restriction>
+ </xsd:complexContent>
+ </xsd:complexType>
+
+ <xsd:complexType name="MyArrayOfTelephonyHuntingInfoMemberStructType">
+ <xsd:complexContent>
+ <xsd:restriction base="soapenc:Array">
+ <xsd:attribute ref="soapenc:arrayType" wsdl:arrayType="typens:telephonyHuntingInfoMemberStruct[]"/>
+ </xsd:restriction>
+ </xsd:complexContent>
+ </xsd:complexType>
+
+ <xsd:complexType name="MyArrayOfTelephonyLineLogsListStructType">
+ <xsd:complexContent>
+ <xsd:restriction base="soapenc:Array">
+ <xsd:attribute ref="soapenc:arrayType" wsdl:arrayType="typens:telephonyLineLogsListStruct[]"/>
+ </xsd:restriction>
+ </xsd:complexContent>
+ </xsd:complexType>
+
+ <xsd:complexType name="MyArrayOfTelephonySmsBlacklistedSenderStructType">
+ <xsd:complexContent>
+ <xsd:restriction base="soapenc:Array">
+ <xsd:attribute ref="soapenc:arrayType" wsdl:arrayType="typens:telephonySmsBlacklistedSenderStruct[]"/>
+ </xsd:restriction>
+ </xsd:complexContent>
+ </xsd:complexType>
+
+ <xsd:complexType name="MyArrayOfTelephonyGetClosureEventsAsArrayEventStructType">
+ <xsd:complexContent>
+ <xsd:restriction base="soapenc:Array">
+ <xsd:attribute ref="soapenc:arrayType" wsdl:arrayType="typens:telephonyGetClosureEventsAsArrayEventStruct[]"/>
+ </xsd:restriction>
+ </xsd:complexContent>
+ </xsd:complexType>
+
+ <xsd:complexType name="MyArrayOfTelephonyApplicationTypeStructType">
+ <xsd:complexContent>
+ <xsd:restriction base="soapenc:Array">
+ <xsd:attribute ref="soapenc:arrayType" wsdl:arrayType="typens:telephonyApplicationTypeStruct[]"/>
+ </xsd:restriction>
+ </xsd:complexContent>
+ </xsd:complexType>
+
+ <xsd:complexType name="MyArrayOfTelephonySpareInfoStructType">
+ <xsd:complexContent>
+ <xsd:restriction base="soapenc:Array">
+ <xsd:attribute ref="soapenc:arrayType" wsdl:arrayType="typens:telephonySpareInfoStruct[]"/>
+ </xsd:restriction>
+ </xsd:complexContent>
+ </xsd:complexType>
+
+ <xsd:complexType name="MyArrayOfTelephonySpareDetailStructType">
+ <xsd:complexContent>
+ <xsd:restriction base="soapenc:Array">
+ <xsd:attribute ref="soapenc:arrayType" wsdl:arrayType="typens:telephonySpareDetailStruct[]"/>
+ </xsd:restriction>
+ </xsd:complexContent>
+ </xsd:complexType>
+
+ <xsd:complexType name="nicInfoReturn">
+ <xsd:all>
+ <xsd:element name="nic" type="xsd:string"/>
+ <xsd:element name="name" type="xsd:string"/>
+ <xsd:element name="firstname" type="xsd:string"/>
+ <xsd:element name="email" type="xsd:string"/>
+ <xsd:element name="spareEmail" type="xsd:string"/>
+ <xsd:element name="phone" type="xsd:string"/>
+ <xsd:element name="fax" type="xsd:string"/>
+ <xsd:element name="address" type="xsd:string"/>
+ <xsd:element name="city" type="xsd:string"/>
+ <xsd:element name="area" type="xsd:string"/>
+ <xsd:element name="zip" type="xsd:string"/>
+ <xsd:element name="country" type="xsd:string"/>
+ <xsd:element name="language" type="xsd:string"/>
+ <xsd:element name="legalform" type="xsd:string"/>
+ <xsd:element name="organisation" type="xsd:string"/>
+ <xsd:element name="legalName" type="xsd:string"/>
+ <xsd:element name="legalNumber" type="xsd:string"/>
+ <xsd:element name="vat" type="xsd:string"/>
+ <xsd:element name="isOwner" type="xsd:boolean"/>
+ <xsd:element name="billingCountry" type="xsd:string"/>
+ </xsd:all>
+ </xsd:complexType>
+
+ <xsd:complexType name="nicPublicInfoReturn">
+ <xsd:all>
+ <xsd:element name="nic" type="xsd:string"/>
+ <xsd:element name="name" type="xsd:string"/>
+ <xsd:element name="firstname" type="xsd:string"/>
+ <xsd:element name="organisation" type="xsd:string"/>
+ <xsd:element name="city" type="xsd:string"/>
+ </xsd:all>
+ </xsd:complexType>
+
+ <xsd:complexType name="rpsGetIoStatsReturn">
+ <xsd:all>
+ <xsd:element name="average" type="typens:rpsGetIOStatsDetailStruct"/>
+ <xsd:element name="current" type="typens:rpsGetIOStatsDetailStruct"/>
+ <xsd:element name="max" type="typens:rpsGetIOStatsDetailStruct"/>
+ <xsd:element name="image" type="xsd:string"/>
+ </xsd:all>
+ </xsd:complexType>
+
+ <xsd:complexType name="rpsGetIOStatsDetailStruct">
+ <xsd:all>
+ <xsd:element name="serviceTime" type="typens:rpsGetIOStatsDetailRawStruct"/>
+ <xsd:element name="IoRequests" type="typens:rpsGetIOStatsDetailIoRequestsStruct"/>
+ </xsd:all>
+ </xsd:complexType>
+
+ <xsd:complexType name="rpsGetIOStatsDetailIoRequestsStruct">
+ <xsd:all>
+ <xsd:element name="read" type="typens:rpsGetIOStatsDetailRawStruct"/>
+ <xsd:element name="write" type="typens:rpsGetIOStatsDetailRawStruct"/>
+ </xsd:all>
+ </xsd:complexType>
+
+ <xsd:complexType name="rpsGetIOStatsDetailRawStruct">
+ <xsd:all>
+ <xsd:element name="raw" type="xsd:string"/>
+ </xsd:all>
+ </xsd:complexType>
+
+ <xsd:complexType name="rpsMigrationStatusReturn">
+ <xsd:all>
+ <xsd:element name="id" type="xsd:int"/>
+ <xsd:element name="progressStatus" type="xsd:int"/>
+ <xsd:element name="status" type="xsd:string"/>
+ <xsd:element name="logicalRpsName" type="xsd:string"/>
+ <xsd:element name="physicalRpsTo" type="xsd:string"/>
+ <xsd:element name="todoDate" type="xsd:string"/>
+ <xsd:element name="doingDate" type="xsd:string"/>
+ <xsd:element name="doneDate" type="xsd:string"/>
+ <xsd:element name="errorMessage" type="xsd:string"/>
+ </xsd:all>
+ </xsd:complexType>
+
+ <xsd:complexType name="rpsMigrationGetProgressStatusReturn">
+ <xsd:all>
+ <xsd:element name="step1" type="typens:rpsMigrationGetProgressStatusStepStruct"/>
+ <xsd:element name="step2" type="typens:rpsMigrationGetProgressStatusStepStruct"/>
+ <xsd:element name="step3" type="typens:rpsMigrationGetProgressStatusStepStruct"/>
+ <xsd:element name="step4" type="typens:rpsMigrationGetProgressStatusStepStruct"/>
+ </xsd:all>
+ </xsd:complexType>
+
+ <xsd:complexType name="rpsMigrationGetProgressStatusStepStruct">
+ <xsd:all>
+ <xsd:element name="comment" type="xsd:string"/>
+ <xsd:element name="time" type="xsd:int"/>
+ <xsd:element name="status" type="xsd:string"/>
+ <xsd:element name="error" type="xsd:string"/>
+ </xsd:all>
+ </xsd:complexType>
+
+ <xsd:complexType name="managedServicesPartitionStruct">
+ <xsd:all>
+ <xsd:element name="idZfs" type="xsd:string"/>
+ <xsd:element name="name" type="xsd:string"/>
+ <xsd:element name="size" type="xsd:string"/>
+ <xsd:element name="used" type="xsd:string"/>
+ <xsd:element name="state" type="xsd:string"/>
+ <xsd:element name="accessList" type="typens:MyArrayOfManagedServicesAclStructType"/>
+ </xsd:all>
+ </xsd:complexType>
+
+ <xsd:complexType name="managedServicesAclStruct">
+ <xsd:all>
+ <xsd:element name="ip" type="xsd:string"/>
+ <xsd:element name="type" type="xsd:string"/>
+ <xsd:element name="host" type="xsd:string"/>
+ </xsd:all>
+ </xsd:complexType>
+
+ <xsd:complexType name="MyArrayOfManagedServicesPartitionStructType">
+ <xsd:complexContent>
+ <xsd:restriction base="soapenc:Array">
+ <xsd:attribute ref="soapenc:arrayType" wsdl:arrayType="typens:managedServicesPartitionStruct[]"/>
+ </xsd:restriction>
+ </xsd:complexContent>
+ </xsd:complexType>
+
+ <xsd:complexType name="MyArrayOfManagedServicesAclStructType">
+ <xsd:complexContent>
+ <xsd:restriction base="soapenc:Array">
+ <xsd:attribute ref="soapenc:arrayType" wsdl:arrayType="typens:managedServicesAclStruct[]"/>
+ </xsd:restriction>
+ </xsd:complexContent>
+ </xsd:complexType>
+
+ <xsd:complexType name="orderStruct">
+ <xsd:all>
+ <xsd:element name="orderId" type="xsd:int"/>
+ <xsd:element name="orderPassword" type="xsd:string"/>
+ <xsd:element name="orderUrl" type="xsd:string"/>
+ <xsd:element name="isPaid" type="xsd:boolean"/>
+ <xsd:element name="paymentStatus" type="xsd:string"/>
+ </xsd:all>
+ </xsd:complexType>
+
+ <xsd:complexType name="dedicatedNetworkInterfaceStruct">
+ <xsd:all>
+ <xsd:element name="reverse" type="xsd:string"/>
+ <xsd:element name="ip" type="xsd:string"/>
+ <xsd:element name="ipv6" type="xsd:string"/>
+ <xsd:element name="mac" type="xsd:string"/>
+ <xsd:element name="switch" type="xsd:string"/>
+ <xsd:element name="icmp_drop" type="xsd:boolean"/>
+ <xsd:element name="failover" type="xsd:boolean"/>
+ <xsd:element name="routedTo" type="xsd:string"/>
+ <xsd:element name="ssl" type="xsd:boolean"/>
+ <xsd:element name="country" type="xsd:string"/>
+ </xsd:all>
+ </xsd:complexType>
+
+ <xsd:complexType name="dedicatedNetworkTrafficDetailsStruct">
+ <xsd:all>
+ <xsd:element name="in" type="xsd:string"/>
+ <xsd:element name="out" type="xsd:string"/>
+ </xsd:all>
+ </xsd:complexType>
+
+ <xsd:complexType name="dedicatedNetworkTrafficStruct">
+ <xsd:all>
+ <xsd:element name="lastUpdate" type="xsd:string"/>
+ <xsd:element name="currentQuota" type="typens:dedicatedNetworkTrafficDetailsStruct"/>
+ <xsd:element name="monthlyTraffic" type="typens:dedicatedNetworkTrafficDetailsStruct"/>
+ <xsd:element name="nextTrafficReset" type="xsd:string"/>
+ <xsd:element name="monthlyQuota" type="xsd:string"/>
+ <xsd:element name="nextQuotaReset" type="xsd:string"/>
+ </xsd:all>
+ </xsd:complexType>
+
+ <xsd:complexType name="dedicatedNetworkStruct">
+ <xsd:all>
+ <xsd:element name="type" type="xsd:string"/>
+ <xsd:element name="priority" type="xsd:string"/>
+ <xsd:element name="connexion" type="xsd:string"/>
+ <xsd:element name="bandwidth" type="xsd:int"/>
+ <xsd:element name="bandwidthOvhToOvh" type="xsd:int"/>
+ <xsd:element name="bandwidthOvhToInternet" type="xsd:int"/>
+ <xsd:element name="bandwidthInternetToOvh" type="xsd:int"/>
+ <xsd:element name="over" type="xsd:boolean"/>
+ <xsd:element name="interfaces" type="typens:MyArrayOfDedicatedNetworkInterfaceStructType"/>
+ <xsd:element name="traffic" type="typens:dedicatedNetworkTrafficStruct"/>
+ </xsd:all>
+ </xsd:complexType>
+
+ <xsd:complexType name="dedicatedCapabilityStruct">
+ <xsd:all>
+ <xsd:element name="backupFtp" type="xsd:int"/>
+ <xsd:element name="backupFtpServer" type="xsd:string"/>
+ <xsd:element name="allocationBlockIp" type="xsd:int"/>
+ <xsd:element name="additionalIp" type="xsd:int"/>
+ <xsd:element name="rootDevice" type="xsd:string"/>
+ <xsd:element name="diskSize" type="xsd:int"/>
+ <xsd:element name="tuning" type="xsd:int"/>
+ </xsd:all>
+ </xsd:complexType>
+
+ <xsd:complexType name="dedicatedFreedomStruct">
+ <xsd:all>
+ <xsd:element name="remaining" type="xsd:int"/>
+ <xsd:element name="assigned" type="xsd:int"/>
+ <xsd:element name="total" type="xsd:int"/>
+ <xsd:element name="preset" type="xsd:int"/>
+ </xsd:all>
+ </xsd:complexType>
+
+ <xsd:complexType name="dedicatedInfoReturn">
+ <xsd:all>
+ <xsd:element name="hostname" type="xsd:string"/>
+ <xsd:element name="datacenter" type="xsd:string"/>
+ <xsd:element name="os" type="xsd:string"/>
+ <xsd:element name="isKimSufi" type="xsd:boolean"/>
+ <xsd:element name="isRPS" type="xsd:boolean"/>
+ <xsd:element name="isHG" type="xsd:boolean"/>
+ <xsd:element name="num" type="xsd:int"/>
+ <xsd:element name="rack" type="xsd:string"/>
+ <xsd:element name="countryBilling" type="xsd:string"/>
+ <xsd:element name="network" type="typens:dedicatedNetworkStruct"/>
+ <xsd:element name="capability" type="typens:dedicatedCapabilityStruct"/>
+ <xsd:element name="freeDom" type="typens:dedicatedFreedomStruct"/>
+ </xsd:all>
+ </xsd:complexType>
+
+ <xsd:complexType name="dedicatedNetbootStruct">
+ <xsd:all>
+ <xsd:element name="kernel" type="xsd:string"/>
+ <xsd:element name="cpufamily" type="xsd:string"/>
+ <xsd:element name="root" type="xsd:string"/>
+ <xsd:element name="smp" type="xsd:boolean"/>
+ <xsd:element name="ipv6" type="xsd:boolean"/>
+ <xsd:element name="grsec" type="xsd:boolean"/>
+ <xsd:element name="hz" type="xsd:string"/>
+ <xsd:element name="id" type="xsd:int"/>
+ <xsd:element name="state" type="xsd:string"/>
+ </xsd:all>
+ </xsd:complexType>
+
+ <xsd:complexType name="dedicatedReverseStruct">
+ <xsd:all>
+ <xsd:element name="reverse" type="xsd:string"/>
+ <xsd:element name="ip" type="xsd:string"/>
+ <xsd:element name="type" type="xsd:string"/>
+ </xsd:all>
+ </xsd:complexType>
+
+ <xsd:complexType name="secondaryDNSStruct">
+ <xsd:all>
+ <xsd:element name="zone" type="xsd:string"/>
+ <xsd:element name="type" type="xsd:string"/>
+ <xsd:element name="nameserver" type="xsd:string"/>
+ <xsd:element name="state" type="xsd:string"/>
+ <xsd:element name="creation" type="xsd:string"/>
+ <xsd:element name="deactivation" type="xsd:string"/>
+ </xsd:all>
+ </xsd:complexType>
+
+ <xsd:complexType name="allSecondaryDNSStruct">
+ <xsd:all>
+ <xsd:element name="ip" type="xsd:string"/>
+ <xsd:element name="secondary" type="typens:MyArrayOfSecondaryDNSStructType"/>
+ </xsd:all>
+ </xsd:complexType>
+
+ <xsd:complexType name="dedicatedMonitoringStatusReturn">
+ <xsd:all>
+ <xsd:element name="disabled" type="xsd:boolean"/>
+ </xsd:all>
+ </xsd:complexType>
+
+ <xsd:complexType name="dedicatedMonitoringStruct">
+ <xsd:all>
+ <xsd:element name="id" type="xsd:int"/>
+ <xsd:element name="destination" type="xsd:string"/>
+ <xsd:element name="language" type="xsd:string"/>
+ <xsd:element name="status" type="xsd:string"/>
+ <xsd:element name="service" type="xsd:string"/>
+ <xsd:element name="smsAccount" type="xsd:string"/>
+ </xsd:all>
+ </xsd:complexType>
+
+ <xsd:complexType name="dedicatedMonitoringServiceStruct">
+ <xsd:all>
+ <xsd:element name="id" type="xsd:int"/>
+ <xsd:element name="ip" type="xsd:string"/>
+ <xsd:element name="port" type="xsd:int"/>
+ <xsd:element name="protocol" type="xsd:string"/>
+ <xsd:element name="period" type="xsd:string"/>
+ <xsd:element name="string" type="xsd:string"/>
+ <xsd:element name="url" type="xsd:string"/>
+ <xsd:element name="destination" type="xsd:string"/>
+ </xsd:all>
+ </xsd:complexType>
+
+ <xsd:complexType name="dedicatedGetServiceMonitoringItemStruct">
+ <xsd:all>
+ <xsd:element name="id" type="xsd:int"/>
+ <xsd:element name="ip" type="xsd:string"/>
+ <xsd:element name="port" type="xsd:int"/>
+ <xsd:element name="protocol" type="xsd:string"/>
+ <xsd:element name="period" type="xsd:string"/>
+ <xsd:element name="string" type="xsd:string"/>
+ <xsd:element name="url" type="xsd:string"/>
+ <xsd:element name="sms" type="typens:MyArrayOfStringType"/>
+ <xsd:element name="email" type="typens:MyArrayOfStringType"/>
+ </xsd:all>
+ </xsd:complexType>
+
+ <xsd:complexType name="dedicatedMrtgInfoStruct">
+ <xsd:all>
+ <xsd:element name="in" type="xsd:string"/>
+ <xsd:element name="out" type="xsd:string"/>
+ </xsd:all>
+ </xsd:complexType>
+
+ <xsd:complexType name="dedicatedMrtgInfoReturn">
+ <xsd:all>
+ <xsd:element name="average" type="typens:dedicatedMrtgInfoStruct"/>
+ <xsd:element name="current" type="typens:dedicatedMrtgInfoStruct"/>
+ <xsd:element name="max" type="typens:dedicatedMrtgInfoStruct"/>
+ <xsd:element name="image" type="xsd:string"/>
+ </xsd:all>
+ </xsd:complexType>
+
+ <xsd:complexType name="dedicatedHardRebootStatusReturn">
+ <xsd:all>
+ <xsd:element name="start" type="xsd:string"/>
+ <xsd:element name="end" type="xsd:string"/>
+ </xsd:all>
+ </xsd:complexType>
+
+ <xsd:complexType name="dedicatedOperationStruct">
+ <xsd:all>
+ <xsd:element name="designation" type="xsd:string"/>
+ <xsd:element name="id_designation" type="xsd:int"/>
+ <xsd:element name="date" type="xsd:string"/>
+ <xsd:element name="level" type="xsd:int"/>
+ </xsd:all>
+ </xsd:complexType>
+
+ <xsd:complexType name="dedicatedFailoverStruct">
+ <xsd:all>
+ <xsd:element name="ip" type="xsd:string"/>
+ <xsd:element name="routedTo" type="xsd:string"/>
+ <xsd:element name="comment" type="xsd:string"/>
+ <xsd:element name="ssl" type="xsd:boolean"/>
+ </xsd:all>
+ </xsd:complexType>
+
+ <xsd:complexType name="dedicatedFailoverRipeStruct">
+ <xsd:all>
+ <xsd:element name="country" type="xsd:string"/>
+ <xsd:element name="netname" type="xsd:string"/>
+ <xsd:element name="routedTo" type="xsd:string"/>
+ <xsd:element name="routingStatus" type="xsd:string"/>
+ <xsd:element name="status" type="xsd:string"/>
+ <xsd:element name="addressesNumber" type="xsd:int"/>
+ <xsd:element name="networkIp" type="xsd:string"/>
+ <xsd:element name="isExclude" type="xsd:boolean"/>
+ </xsd:all>
+ </xsd:complexType>
+
+ <xsd:complexType name="dedicatedFilterIrcRuleStruct">
+ <xsd:all>
+ <xsd:element name="fromIp" type="xsd:string"/>
+ <xsd:element name="fromPort" type="xsd:string"/>
+ <xsd:element name="toIp" type="xsd:string"/>
+ <xsd:element name="toPort" type="xsd:string"/>
+ </xsd:all>
+ </xsd:complexType>
+
+ <xsd:complexType name="dedicatedBackupFtpInfoReturn">
+ <xsd:all>
+ <xsd:element name="ftpBackupName" type="xsd:string"/>
+ <xsd:element name="quotaUsed" type="xsd:int"/>
+ <xsd:element name="quotaSize" type="xsd:int"/>
+ </xsd:all>
+ </xsd:complexType>
+
+ <xsd:complexType name="dedicatedBackupListStruct">
+ <xsd:all>
+ <xsd:element name="backupId" type="xsd:int"/>
+ <xsd:element name="backupFeature" type="xsd:string"/>
+ <xsd:element name="enable" type="xsd:int"/>
+ <xsd:element name="language" type="xsd:string"/>
+ <xsd:element name="backupSize" type="xsd:string"/>
+ <xsd:element name="sshPort" type="xsd:int"/>
+ <xsd:element name="percentUsed" type="xsd:string"/>
+ <xsd:element name="hostname" type="xsd:string"/>
+ <xsd:element name="backupName" type="xsd:string"/>
+ <xsd:element name="email" type="xsd:string"/>
+ <xsd:element name="snapshotNumber" type="xsd:int"/>
+ <xsd:element name="superBackupName" type="xsd:string"/>
+ <xsd:element name="backupType" type="xsd:string"/>
+ <xsd:element name="src" type="typens:MyArrayOfStringType"/>
+ <xsd:element name="include" type="typens:MyArrayOfStringType"/>
+ <xsd:element name="exclude" type="typens:MyArrayOfStringType"/>
+ <xsd:element name="excludeHard" type="typens:MyArrayOfStringType"/>
+ </xsd:all>
+ </xsd:complexType>
+
+ <xsd:complexType name="dedicatedBackupListReturn">
+ <xsd:all>
+ <xsd:element name="backupId" type="xsd:int"/>
+ <xsd:element name="backupFeature" type="xsd:string"/>
+ <xsd:element name="enable" type="xsd:int"/>
+ <xsd:element name="language" type="xsd:string"/>
+ <xsd:element name="backupSize" type="xsd:string"/>
+ <xsd:element name="sshPort" type="xsd:int"/>
+ <xsd:element name="percentUsed" type="xsd:string"/>
+ <xsd:element name="hostname" type="xsd:string"/>
+ <xsd:element name="backupName" type="xsd:string"/>
+ <xsd:element name="email" type="xsd:string"/>
+ <xsd:element name="snapshotNumber" type="xsd:int"/>
+ <xsd:element name="superBackupName" type="xsd:string"/>
+ <xsd:element name="backupType" type="xsd:string"/>
+ <xsd:element name="src" type="typens:MyArrayOfStringType"/>
+ <xsd:element name="include" type="typens:MyArrayOfStringType"/>
+ <xsd:element name="exclude" type="typens:MyArrayOfStringType"/>
+ <xsd:element name="excludeHard" type="typens:MyArrayOfStringType"/>
+ </xsd:all>
+ </xsd:complexType>
+
+ <xsd:complexType name="dedicatedBackupDateStruct">
+ <xsd:all>
+ <xsd:element name="hour" type="xsd:string"/>
+ <xsd:element name="superBackupName" type="xsd:string"/>
+ <xsd:element name="day" type="xsd:string"/>
+ <xsd:element name="id" type="xsd:int"/>
+ <xsd:element name="backupCount" type="xsd:int"/>
+ </xsd:all>
+ </xsd:complexType>
+
+ <xsd:complexType name="dedicatedBackupHistoStruct">
+ <xsd:all>
+ <xsd:element name="id" type="xsd:int"/>
+ <xsd:element name="backupId" type="xsd:int"/>
+ <xsd:element name="dateTime" type="xsd:string"/>
+ <xsd:element name="status" type="xsd:string"/>
+ <xsd:element name="error" type="xsd:string"/>
+ </xsd:all>
+ </xsd:complexType>
+
+ <xsd:complexType name="dedicatedBackupGetPlanningStruct">
+ <xsd:all>
+ <xsd:element name="day" type="xsd:string"/>
+ <xsd:element name="planning" type="typens:MyArrayOfStringType"/>
+ </xsd:all>
+ </xsd:complexType>
+
+ <xsd:complexType name="dedicatedOrderStruct">
+ <xsd:all>
+ <xsd:element name="orderPassword" type="xsd:string"/>
+ <xsd:element name="orderId" type="xsd:int"/>
+ <xsd:element name="orderUrl" type="xsd:string"/>
+ </xsd:all>
+ </xsd:complexType>
+
+ <xsd:complexType name="dedicatedCapabilitiesStruct">
+ <xsd:all>
+ <xsd:element name="hostname" type="xsd:string"/>
+ <xsd:element name="originalClassicFailover" type="xsd:int"/>
+ <xsd:element name="originalFailoverRipe" type="xsd:int"/>
+ <xsd:element name="originalLoadBalancingSlot" type="xsd:int"/>
+ <xsd:element name="additionalClassicFailover" type="xsd:int"/>
+ <xsd:element name="additionalFailoverRipe" type="xsd:int"/>
+ <xsd:element name="usedClassicFailover" type="xsd:int"/>
+ <xsd:element name="usedFailoverRipe" type="xsd:int"/>
+ </xsd:all>
+ </xsd:complexType>
+
+ <xsd:complexType name="dedicatedIpLoadBalancingServerStruct">
+ <xsd:all>
+ <xsd:element name="hostname" type="xsd:string"/>
+ <xsd:element name="ip" type="xsd:string"/>
+ <xsd:element name="status" type="xsd:string"/>
+ </xsd:all>
+ </xsd:complexType>
+
+ <xsd:complexType name="dedicatedIpLoadBalancingStruct">
+ <xsd:all>
+ <xsd:element name="name" type="xsd:string"/>
+ <xsd:element name="ipLoadBalancing" type="xsd:string"/>
+ <xsd:element name="active" type="xsd:int"/>
+ <xsd:element name="inactive" type="xsd:int"/>
+ <xsd:element name="serverList" type="typens:MyArrayOfDedicatedIpLoadBalancingServerStructType"/>
+ </xsd:all>
+ </xsd:complexType>
+
+ <xsd:complexType name="dedicatedRtmStatusReturn">
+ <xsd:all>
+ <xsd:element name="cpu" type="typens:rtmCpuStruct"/>
+ <xsd:element name="hardDrives" type="typens:MyArrayOfRtmHddStructType"/>
+ <xsd:element name="systemInfo" type="typens:rtmSystemStruct"/>
+ <xsd:element name="memory" type="typens:rtmMemoryStruct"/>
+ <xsd:element name="motherboard" type="typens:rtmMotherboardStruct"/>
+ <xsd:element name="lspci" type="typens:MyArrayOfRtmLspciStructType"/>
+ <xsd:element name="portsUsed" type="typens:rtmPortsStruct"/>
+ <xsd:element name="raid" type="typens:rtmRaidStruct"/>
+ </xsd:all>
+ </xsd:complexType>
+
+ <xsd:complexType name="rtmCpuStruct">
+ <xsd:all>
+ <xsd:element name="frequency" type="xsd:string"/>
+ <xsd:element name="core" type="xsd:int"/>
+ <xsd:element name="name" type="xsd:string"/>
+ <xsd:element name="cache" type="xsd:string"/>
+ <xsd:element name="percentLoad" type="xsd:int"/>
+ <xsd:element name="loadAvg" type="typens:rtmCpuLoadAvgStruct"/>
+ </xsd:all>
+ </xsd:complexType>
+
+ <xsd:complexType name="rtmCpuLoadAvgStruct">
+ <xsd:all>
+ <xsd:element name="loadavg1" type="xsd:string"/>
+ <xsd:element name="loadavg5" type="xsd:string"/>
+ <xsd:element name="loadavg15" type="xsd:string"/>
+ </xsd:all>
+ </xsd:complexType>
+
+ <xsd:complexType name="rtmHddStruct">
+ <xsd:all>
+ <xsd:element name="device" type="xsd:string"/>
+ <xsd:element name="model" type="xsd:string"/>
+ <xsd:element name="capacity" type="xsd:string"/>
+ <xsd:element name="status" type="xsd:string"/>
+ <xsd:element name="partitions" type="typens:MyArrayOfRtmHddPartitionStructType"/>
+ <xsd:element name="smart" type="typens:rtmHddSmartStruct"/>
+ <xsd:element name="temperature" type="xsd:int"/>
+ </xsd:all>
+ </xsd:complexType>
+
+ <xsd:complexType name="rtmHddSmartStruct">
+ <xsd:all>
+ <xsd:element name="status" type="xsd:string"/>
+ <xsd:element name="multizoneErrorRate" type="xsd:int"/>
+ <xsd:element name="currentPendingSector" type="xsd:int"/>
+ <xsd:element name="udmaCrcError" type="xsd:int"/>
+ <xsd:element name="offlineUncorrectable" type="xsd:int"/>
+ </xsd:all>
+ </xsd:complexType>
+
+ <xsd:complexType name="rtmHddPartitionStruct">
+ <xsd:all>
+ <xsd:element name="device" type="xsd:string"/>
+ <xsd:element name="percentUsed" type="xsd:int"/>
+ <xsd:element name="percentInodes" type="xsd:int"/>
+ <xsd:element name="mountPoint" type="xsd:string"/>
+ </xsd:all>
+ </xsd:complexType>
+
+ <xsd:complexType name="rtmSystemStruct">
+ <xsd:all>
+ <xsd:element name="last_update" type="xsd:string"/>
+ <xsd:element name="ip" type="xsd:string"/>
+ <xsd:element name="hostname" type="xsd:string"/>
+ <xsd:element name="uptime" type="xsd:int"/>
+ <xsd:element name="freshest_file_date" type="xsd:string"/>
+ <xsd:element name="os" type="typens:rtmSystemOsStruct"/>
+ <xsd:element name="rtm" type="typens:rtmSystemRtmStruct"/>
+ <xsd:element name="kernel" type="typens:rtmSystemKernelStruct"/>
+ </xsd:all>
+ </xsd:complexType>
+
+ <xsd:complexType name="rtmSystemOsStruct">
+ <xsd:all>
+ <xsd:element name="current" type="xsd:string"/>
+ <xsd:element name="os" type="xsd:string"/>
+ </xsd:all>
+ </xsd:complexType>
+
+ <xsd:complexType name="rtmSystemRtmStruct">
+ <xsd:all>
+ <xsd:element name="status" type="xsd:boolean"/>
+ <xsd:element name="version" type="xsd:string"/>
+ <xsd:element name="current" type="xsd:string"/>
+ </xsd:all>
+ </xsd:complexType>
+
+ <xsd:complexType name="rtmSystemKernelStruct">
+ <xsd:all>
+ <xsd:element name="version" type="xsd:string"/>
+ <xsd:element name="current" type="xsd:string"/>
+ <xsd:element name="current_26" type="xsd:string"/>
+ <xsd:element name="current_ipv6" type="xsd:string"/>
+ <xsd:element name="release" type="xsd:string"/>
+ </xsd:all>
+ </xsd:complexType>
+
+ <xsd:complexType name="rtmMemoryStruct">
+ <xsd:all>
+ <xsd:element name="memusage" type="xsd:int"/>
+ <xsd:element name="swapusage" type="xsd:int"/>
+ <xsd:element name="modules" type="typens:MyArrayOfRtmMemoryModuleStructType"/>
+ </xsd:all>
+ </xsd:complexType>
+
+ <xsd:complexType name="rtmMemoryModuleStruct">
+ <xsd:all>
+ <xsd:element name="moduleName" type="xsd:string"/>
+ <xsd:element name="value" type="xsd:string"/>
+ </xsd:all>
+ </xsd:complexType>
+
+ <xsd:complexType name="rtmMotherboardStruct">
+ <xsd:all>
+ <xsd:element name="manufacture" type="xsd:string"/>
+ <xsd:element name="modelName" type="xsd:string"/>
+ </xsd:all>
+ </xsd:complexType>
+
+ <xsd:complexType name="rtmLspciStruct">
+ <xsd:all>
+ <xsd:element name="address" type="xsd:string"/>
+ <xsd:element name="description" type="xsd:string"/>
+ </xsd:all>
+ </xsd:complexType>
+
+ <xsd:complexType name="rtmPortsStruct">
+ <xsd:all>
+ <xsd:element name="listening" type="typens:MyArrayOfRtmPortsIfaceStructType"/>
+ </xsd:all>
+ </xsd:complexType>
+
+ <xsd:complexType name="rtmPortsIfaceStruct">
+ <xsd:all>
+ <xsd:element name="iface" type="xsd:string"/>
+ <xsd:element name="ports" type="typens:MyArrayOfRtmPortsIfaceDetailStructType"/>
+ </xsd:all>
+ </xsd:complexType>
+
+ <xsd:complexType name="rtmPortsIfaceDetailStruct">
+ <xsd:all>
+ <xsd:element name="port" type="xsd:string"/>
+ <xsd:element name="procname" type="xsd:string"/>
+ <xsd:element name="uid" type="xsd:string"/>
+ <xsd:element name="pid" type="xsd:int"/>
+ <xsd:element name="cmdline" type="xsd:string"/>
+ <xsd:element name="exe" type="xsd:string"/>
+ <xsd:element name="username" type="xsd:string"/>
+ </xsd:all>
+ </xsd:complexType>
+
+ <xsd:complexType name="rtmRaidStruct">
+ <xsd:all>
+ <xsd:element name="units" type="typens:MyArrayOfRtmRaidPartitionStructType"/>
+ </xsd:all>
+ </xsd:complexType>
+
+ <xsd:complexType name="rtmRaidPartitionStruct">
+ <xsd:all>
+ <xsd:element name="partition" type="xsd:string"/>
+ <xsd:element name="volumes" type="typens:MyArrayOfRtmRaidPartitionVolumeStructType"/>
+ </xsd:all>
+ </xsd:complexType>
+
+ <xsd:complexType name="rtmRaidPartitionVolumeStruct">
+ <xsd:all>
+ <xsd:element name="volumeName" type="xsd:string"/>
+ <xsd:element name="flags" type="xsd:string"/>
+ <xsd:element name="status" type="xsd:string"/>
+ <xsd:element name="type" type="xsd:string"/>
+ <xsd:element name="capacity" type="xsd:string"/>
+ <xsd:element name="phys" type="xsd:int"/>
+ <xsd:element name="members" type="typens:MyArrayOfRtmRaidPartitionVolumeMemberStructType"/>
+ </xsd:all>
+ </xsd:complexType>
+
+ <xsd:complexType name="rtmRaidPartitionVolumeMemberStruct">
+ <xsd:all>
+ <xsd:element name="memberName" type="xsd:string"/>
+ <xsd:element name="modelName" type="xsd:string"/>
+ <xsd:element name="flags" type="xsd:string"/>
+ <xsd:element name="status" type="xsd:string"/>
+ <xsd:element name="capacity" type="xsd:string"/>
+ </xsd:all>
+ </xsd:complexType>
+
+ <xsd:complexType name="dedicatedRtmListBackdoorStruct">
+ <xsd:all>
+ <xsd:element name="date_email" type="xsd:string"/>
+ <xsd:element name="date_start" type="xsd:string"/>
+ <xsd:element name="date_end" type="xsd:string"/>
+ <xsd:element name="date_today" type="xsd:string"/>
+ <xsd:element name="id" type="xsd:int"/>
+ <xsd:element name="uid" type="xsd:string"/>
+ <xsd:element name="pid" type="xsd:int"/>
+ <xsd:element name="do_not_mail" type="xsd:boolean"/>
+ <xsd:element name="active" type="xsd:boolean"/>
+ <xsd:element name="status" type="xsd:int"/>
+ <xsd:element name="ip" type="xsd:string"/>
+ <xsd:element name="type" type="xsd:string"/>
+ <xsd:element name="cmdline" type="xsd:string"/>
+ <xsd:element name="port" type="xsd:int"/>
+ <xsd:element name="ports" type="xsd:string"/>
+ <xsd:element name="procname" type="xsd:string"/>
+ <xsd:element name="exe" type="xsd:string"/>
+ </xsd:all>
+ </xsd:complexType>
+
+ <xsd:complexType name="dedicatedRipeGetIpStruct">
+ <xsd:all>
+ <xsd:element name="exclusion" type="xsd:string"/>
+ <xsd:element name="routedTo" type="xsd:string"/>
+ <xsd:element name="ip" type="xsd:string"/>
+ <xsd:element name="netname" type="xsd:string"/>
+ </xsd:all>
+ </xsd:complexType>
+
+ <xsd:complexType name="dedicatedIpVirtualMacAvailableReturn">
+ <xsd:all>
+ <xsd:element name="ip" type="typens:MyArrayOfStringType"/>
+ <xsd:element name="mac" type="typens:MyArrayOfStringType"/>
+ </xsd:all>
+ </xsd:complexType>
+
+ <xsd:complexType name="dedicatedIpVirtualMacUsedStruct">
+ <xsd:all>
+ <xsd:element name="virtualMachineName" type="xsd:string"/>
+ <xsd:element name="status" type="xsd:string"/>
+ <xsd:element name="ipAddress" type="xsd:string"/>
+ <xsd:element name="type" type="xsd:string"/>
+ <xsd:element name="mac" type="xsd:string"/>
+ </xsd:all>
+ </xsd:complexType>
+
+ <xsd:complexType name="dedicatedBandwidthManagementReturn">
+ <xsd:all>
+ <xsd:element name="serverName" type="xsd:string"/>
+ <xsd:element name="id" type="xsd:int"/>
+ <xsd:element name="status" type="xsd:string"/>
+ <xsd:element name="date" type="xsd:string"/>
+ </xsd:all>
+ </xsd:complexType>
+
+ <xsd:complexType name="dedicatedServerPartioningDetailStruct">
+ <xsd:all>
+ <xsd:element name="partSize" type="xsd:string"/>
+ <xsd:element name="id" type="xsd:int"/>
+ <xsd:element name="raidType" type="xsd:int"/>
+ <xsd:element name="mountPoint" type="xsd:string"/>
+ <xsd:element name="partType" type="xsd:string"/>
+ <xsd:element name="fileSystem" type="xsd:string"/>
+ </xsd:all>
+ </xsd:complexType>
+
+ <xsd:complexType name="dedicatedServerPartioningReturn">
+ <xsd:all>
+ <xsd:element name="os" type="xsd:string"/>
+ <xsd:element name="langaue" type="xsd:string"/>
+ <xsd:element name="partioning" type="typens:MyArrayOfDedicatedServerPartioningDetailStructType"/>
+ <xsd:element name="warn" type="xsd:int"/>
+ </xsd:all>
+ </xsd:complexType>
+
+ <xsd:complexType name="dedicatedInstallConfigurationParametersStruct">
+ <xsd:all>
+ <xsd:element name="language" type="xsd:string"/>
+ <xsd:element name="bitFormat" type="xsd:string"/>
+ <xsd:element name="softRaidDevices" type="xsd:int"/>
+ <xsd:element name="serverName" type="xsd:string"/>
+ <xsd:element name="softRaid" type="xsd:string"/>
+ <xsd:element name="distribution" type="xsd:string"/>
+ <xsd:element name="resinstallTodoId" type="xsd:int"/>
+ </xsd:all>
+ </xsd:complexType>
+
+ <xsd:complexType name="dedicatedInstallConfigurationStruct">
+ <xsd:all>
+ <xsd:element name="pendingDate" type="xsd:string"/>
+ <xsd:element name="status" type="xsd:string"/>
+ <xsd:element name="stageId" type="xsd:int"/>
+ <xsd:element name="serverName" type="xsd:string"/>
+ <xsd:element name="parameters" type="typens:dedicatedInstallConfigurationParametersStruct"/>
+ <xsd:element name="todoDate" type="xsd:string"/>
+ <xsd:element name="doingDate" type="xsd:string"/>
+ <xsd:element name="error" type="xsd:string"/>
+ <xsd:element name="action" type="xsd:string"/>
+ <xsd:element name="id" type="xsd:int"/>
+ <xsd:element name="doneDate" type="xsd:string"/>
+ </xsd:all>
+ </xsd:complexType>
+
+ <xsd:complexType name="dedicatedAllowedDistributionBitFormatStruct">
+ <xsd:all>
+ <xsd:element name="reference" type="xsd:string"/>
+ <xsd:element name="bits" type="xsd:int"/>
+ </xsd:all>
+ </xsd:complexType>
+
+ <xsd:complexType name="dedicatedAllowedDistributionLanguageStruct">
+ <xsd:all>
+ <xsd:element name="code" type="xsd:string"/>
+ <xsd:element name="desc" type="xsd:string"/>
+ </xsd:all>
+ </xsd:complexType>
+
+ <xsd:complexType name="dedicatedAllowedDistributionDetailsStruct">
+ <xsd:all>
+ <xsd:element name="language" type="typens:MyArrayOfDedicatedAllowedDistributionLanguageStructType"/>
+ <xsd:element name="languageList" type="typens:MyArrayOfStringType"/>
+ <xsd:element name="defaultLanguage" type="xsd:string"/>
+ <xsd:element name="bitFormat" type="typens:MyArrayOfDedicatedAllowedDistributionBitFormatStructType"/>
+ <xsd:element name="longName" type="xsd:string"/>
+ <xsd:element name="name" type="xsd:string"/>
+ </xsd:all>
+ </xsd:complexType>
+
+ <xsd:complexType name="dedicatedAllowedDistributionMoreStruct">
+ <xsd:all>
+ <xsd:element name="basicDistributions" type="typens:MyArrayOfDedicatedAllowedDistributionDetailsStructType"/>
+ <xsd:element name="readyToUse" type="typens:MyArrayOfDedicatedAllowedDistributionDetailsStructType"/>
+ <xsd:element name="type" type="xsd:string"/>
+ </xsd:all>
+ </xsd:complexType>
+
+ <xsd:complexType name="dedicatedAllowedDistributionReturn">
+ <xsd:all>
+ <xsd:element name="distribution" type="typens:MyArrayOfDedicatedAllowedDistributionMoreStructType"/>
+ </xsd:all>
+ </xsd:complexType>
+
+ <xsd:complexType name="dedicatedBasicInstallProgressStruct">
+ <xsd:all>
+ <xsd:element name="step" type="xsd:int"/>
+ <xsd:element name="comment" type="xsd:string"/>
+ <xsd:element name="time" type="xsd:string"/>
+ <xsd:element name="error" type="xsd:string"/>
+ <xsd:element name="status" type="xsd:string"/>
+ </xsd:all>
+ </xsd:complexType>
+
+ <xsd:complexType name="dedicatedBasicInstallProgressReturn">
+ <xsd:all>
+ <xsd:element name="progress" type="typens:MyArrayOfDedicatedBasicInstallProgressStructType"/>
+ </xsd:all>
+ </xsd:complexType>
+
+ <xsd:complexType name="dedicatedInstallationTemplateStruct">
+ <xsd:all>
+ <xsd:element name="name" type="xsd:string"/>
+ <xsd:element name="os" type="xsd:string"/>
+ </xsd:all>
+ </xsd:complexType>
+
+ <xsd:complexType name="dedicatedIPForUDPStruct">
+ <xsd:all>
+ <xsd:element name="ip" type="xsd:string"/>
+ <xsd:element name="routedTo" type="xsd:string"/>
+ <xsd:element name="status" type="xsd:string"/>
+ <xsd:element name="mac" type="xsd:string"/>
+ <xsd:element name="reverse" type="xsd:string"/>
+ </xsd:all>
+ </xsd:complexType>
+
+ <xsd:complexType name="IPForUDPServerListStruct">
+ <xsd:all>
+ <xsd:element name="server" type="xsd:string"/>
+ <xsd:element name="reverse" type="xsd:string"/>
+ <xsd:element name="ipList" type="typens:MyArrayOfDedicatedIPForUDPStructType"/>
+ </xsd:all>
+ </xsd:complexType>
+
+ <xsd:complexType name="MyArrayOfDedicatedCapabilitiesStructType">
+ <xsd:complexContent>
+ <xsd:restriction base="soapenc:Array">
+ <xsd:attribute ref="soapenc:arrayType" wsdl:arrayType="typens:dedicatedCapabilitiesStruct[]"/>
+ </xsd:restriction>
+ </xsd:complexContent>
+ </xsd:complexType>
+
+ <xsd:complexType name="MyArrayOfDedicatedNetbootStructType">
+ <xsd:complexContent>
+ <xsd:restriction base="soapenc:Array">
+ <xsd:attribute ref="soapenc:arrayType" wsdl:arrayType="typens:dedicatedNetbootStruct[]"/>
+ </xsd:restriction>
+ </xsd:complexContent>
+ </xsd:complexType>
+
+ <xsd:complexType name="MyArrayOfDedicatedReverseStructType">
+ <xsd:complexContent>
+ <xsd:restriction base="soapenc:Array">
+ <xsd:attribute ref="soapenc:arrayType" wsdl:arrayType="typens:dedicatedReverseStruct[]"/>
+ </xsd:restriction>
+ </xsd:complexContent>
+ </xsd:complexType>
+
+ <xsd:complexType name="MyArrayOfSecondaryDNSStructType">
+ <xsd:complexContent>
+ <xsd:restriction base="soapenc:Array">
+ <xsd:attribute ref="soapenc:arrayType" wsdl:arrayType="typens:secondaryDNSStruct[]"/>
+ </xsd:restriction>
+ </xsd:complexContent>
+ </xsd:complexType>
+
+ <xsd:complexType name="MyArrayOfAllSecondaryDNSStructType">
+ <xsd:complexContent>
+ <xsd:restriction base="soapenc:Array">
+ <xsd:attribute ref="soapenc:arrayType" wsdl:arrayType="typens:allSecondaryDNSStruct[]"/>
+ </xsd:restriction>
+ </xsd:complexContent>
+ </xsd:complexType>
+
+ <xsd:complexType name="MyArrayOfDedicatedMonitoringStructType">
+ <xsd:complexContent>
+ <xsd:restriction base="soapenc:Array">
+ <xsd:attribute ref="soapenc:arrayType" wsdl:arrayType="typens:dedicatedMonitoringStruct[]"/>
+ </xsd:restriction>
+ </xsd:complexContent>
+ </xsd:complexType>
+
+ <xsd:complexType name="MyArrayOfDedicatedMonitoringServiceStructType">
+ <xsd:complexContent>
+ <xsd:restriction base="soapenc:Array">
+ <xsd:attribute ref="soapenc:arrayType" wsdl:arrayType="typens:dedicatedMonitoringServiceStruct[]"/>
+ </xsd:restriction>
+ </xsd:complexContent>
+ </xsd:complexType>
+
+ <xsd:complexType name="MyArrayOfDedicatedOperationStructType">
+ <xsd:complexContent>
+ <xsd:restriction base="soapenc:Array">
+ <xsd:attribute ref="soapenc:arrayType" wsdl:arrayType="typens:dedicatedOperationStruct[]"/>
+ </xsd:restriction>
+ </xsd:complexContent>
+ </xsd:complexType>
+
+ <xsd:complexType name="MyArrayOfDedicatedFailoverStructType">
+ <xsd:complexContent>
+ <xsd:restriction base="soapenc:Array">
+ <xsd:attribute ref="soapenc:arrayType" wsdl:arrayType="typens:dedicatedFailoverStruct[]"/>
+ </xsd:restriction>
+ </xsd:complexContent>
+ </xsd:complexType>
+
+ <xsd:complexType name="MyArrayOfDedicatedFailoverRipeStructType">
+ <xsd:complexContent>
+ <xsd:restriction base="soapenc:Array">
+ <xsd:attribute ref="soapenc:arrayType" wsdl:arrayType="typens:dedicatedFailoverRipeStruct[]"/>
+ </xsd:restriction>
+ </xsd:complexContent>
+ </xsd:complexType>
+
+ <xsd:complexType name="MyArrayOfDedicatedRipeGetIpStructType">
+ <xsd:complexContent>
+ <xsd:restriction base="soapenc:Array">
+ <xsd:attribute ref="soapenc:arrayType" wsdl:arrayType="typens:dedicatedRipeGetIpStruct[]"/>
+ </xsd:restriction>
+ </xsd:complexContent>
+ </xsd:complexType>
+
+ <xsd:complexType name="MyArrayOfDedicatedFilterIrcRuleStructType">
+ <xsd:complexContent>
+ <xsd:restriction base="soapenc:Array">
+ <xsd:attribute ref="soapenc:arrayType" wsdl:arrayType="typens:dedicatedFilterIrcRuleStruct[]"/>
+ </xsd:restriction>
+ </xsd:complexContent>
+ </xsd:complexType>
+
+ <xsd:complexType name="MyArrayOfDedicatedBackupListStructType">
+ <xsd:complexContent>
+ <xsd:restriction base="soapenc:Array">
+ <xsd:attribute ref="soapenc:arrayType" wsdl:arrayType="typens:dedicatedBackupListStruct[]"/>
+ </xsd:restriction>
+ </xsd:complexContent>
+ </xsd:complexType>
+
+ <xsd:complexType name="MyArrayOfDedicatedBackupDateStructType">
+ <xsd:complexContent>
+ <xsd:restriction base="soapenc:Array">
+ <xsd:attribute ref="soapenc:arrayType" wsdl:arrayType="typens:dedicatedBackupDateStruct[]"/>
+ </xsd:restriction>
+ </xsd:complexContent>
+ </xsd:complexType>
+
+ <xsd:complexType name="MyArrayOfDedicatedBackupHistoStructType">
+ <xsd:complexContent>
+ <xsd:restriction base="soapenc:Array">
+ <xsd:attribute ref="soapenc:arrayType" wsdl:arrayType="typens:dedicatedBackupHistoStruct[]"/>
+ </xsd:restriction>
+ </xsd:complexContent>
+ </xsd:complexType>
+
+ <xsd:complexType name="MyArrayOfDedicatedBackupGetPlanningStructType">
+ <xsd:complexContent>
+ <xsd:restriction base="soapenc:Array">
+ <xsd:attribute ref="soapenc:arrayType" wsdl:arrayType="typens:dedicatedBackupGetPlanningStruct[]"/>
+ </xsd:restriction>
+ </xsd:complexContent>
+ </xsd:complexType>
+
+ <xsd:complexType name="MyArrayOfDedicatedIpLoadBalancingStructType">
+ <xsd:complexContent>
+ <xsd:restriction base="soapenc:Array">
+ <xsd:attribute ref="soapenc:arrayType" wsdl:arrayType="typens:dedicatedIpLoadBalancingStruct[]"/>
+ </xsd:restriction>
+ </xsd:complexContent>
+ </xsd:complexType>
+
+ <xsd:complexType name="MyArrayOfDedicatedRtmListBackdoorStructType">
+ <xsd:complexContent>
+ <xsd:restriction base="soapenc:Array">
+ <xsd:attribute ref="soapenc:arrayType" wsdl:arrayType="typens:dedicatedRtmListBackdoorStruct[]"/>
+ </xsd:restriction>
+ </xsd:complexContent>
+ </xsd:complexType>
+
+ <xsd:complexType name="MyArrayOfDedicatedIpVirtualMacUsedStructType">
+ <xsd:complexContent>
+ <xsd:restriction base="soapenc:Array">
+ <xsd:attribute ref="soapenc:arrayType" wsdl:arrayType="typens:dedicatedIpVirtualMacUsedStruct[]"/>
+ </xsd:restriction>
+ </xsd:complexContent>
+ </xsd:complexType>
+
+ <xsd:complexType name="MyArrayOfDedicatedInstallationTemplateStructType">
+ <xsd:complexContent>
+ <xsd:restriction base="soapenc:Array">
+ <xsd:attribute ref="soapenc:arrayType" wsdl:arrayType="typens:dedicatedInstallationTemplateStruct[]"/>
+ </xsd:restriction>
+ </xsd:complexContent>
+ </xsd:complexType>
+
+ <xsd:complexType name="MyArrayOfDedicatedIPForUDPStructType">
+ <xsd:complexContent>
+ <xsd:restriction base="soapenc:Array">
+ <xsd:attribute ref="soapenc:arrayType" wsdl:arrayType="typens:dedicatedIPForUDPStruct[]"/>
+ </xsd:restriction>
+ </xsd:complexContent>
+ </xsd:complexType>
+
+ <xsd:complexType name="MyArrayOfIPForUDPServerListStructType">
+ <xsd:complexContent>
+ <xsd:restriction base="soapenc:Array">
+ <xsd:attribute ref="soapenc:arrayType" wsdl:arrayType="typens:IPForUDPServerListStruct[]"/>
+ </xsd:restriction>
+ </xsd:complexContent>
+ </xsd:complexType>
+
+ <xsd:complexType name="MyArrayOfDedicatedNetworkInterfaceStructType">
+ <xsd:complexContent>
+ <xsd:restriction base="soapenc:Array">
+ <xsd:attribute ref="soapenc:arrayType" wsdl:arrayType="typens:dedicatedNetworkInterfaceStruct[]"/>
+ </xsd:restriction>
+ </xsd:complexContent>
+ </xsd:complexType>
+
+ <xsd:complexType name="MyArrayOfDedicatedIpLoadBalancingServerStructType">
+ <xsd:complexContent>
+ <xsd:restriction base="soapenc:Array">
+ <xsd:attribute ref="soapenc:arrayType" wsdl:arrayType="typens:dedicatedIpLoadBalancingServerStruct[]"/>
+ </xsd:restriction>
+ </xsd:complexContent>
+ </xsd:complexType>
+
+ <xsd:complexType name="MyArrayOfRtmHddStructType">
+ <xsd:complexContent>
+ <xsd:restriction base="soapenc:Array">
+ <xsd:attribute ref="soapenc:arrayType" wsdl:arrayType="typens:rtmHddStruct[]"/>
+ </xsd:restriction>
+ </xsd:complexContent>
+ </xsd:complexType>
+
+ <xsd:complexType name="MyArrayOfRtmLspciStructType">
+ <xsd:complexContent>
+ <xsd:restriction base="soapenc:Array">
+ <xsd:attribute ref="soapenc:arrayType" wsdl:arrayType="typens:rtmLspciStruct[]"/>
+ </xsd:restriction>
+ </xsd:complexContent>
+ </xsd:complexType>
+
+ <xsd:complexType name="MyArrayOfRtmHddPartitionStructType">
+ <xsd:complexContent>
+ <xsd:restriction base="soapenc:Array">
+ <xsd:attribute ref="soapenc:arrayType" wsdl:arrayType="typens:rtmHddPartitionStruct[]"/>
+ </xsd:restriction>
+ </xsd:complexContent>
+ </xsd:complexType>
+
+ <xsd:complexType name="MyArrayOfRtmMemoryModuleStructType">
+ <xsd:complexContent>
+ <xsd:restriction base="soapenc:Array">
+ <xsd:attribute ref="soapenc:arrayType" wsdl:arrayType="typens:rtmMemoryModuleStruct[]"/>
+ </xsd:restriction>
+ </xsd:complexContent>
+ </xsd:complexType>
+
+ <xsd:complexType name="MyArrayOfRtmPortsIfaceStructType">
+ <xsd:complexContent>
+ <xsd:restriction base="soapenc:Array">
+ <xsd:attribute ref="soapenc:arrayType" wsdl:arrayType="typens:rtmPortsIfaceStruct[]"/>
+ </xsd:restriction>
+ </xsd:complexContent>
+ </xsd:complexType>
+
+ <xsd:complexType name="MyArrayOfRtmPortsIfaceDetailStructType">
+ <xsd:complexContent>
+ <xsd:restriction base="soapenc:Array">
+ <xsd:attribute ref="soapenc:arrayType" wsdl:arrayType="typens:rtmPortsIfaceDetailStruct[]"/>
+ </xsd:restriction>
+ </xsd:complexContent>
+ </xsd:complexType>
+
+ <xsd:complexType name="MyArrayOfRtmRaidPartitionStructType">
+ <xsd:complexContent>
+ <xsd:restriction base="soapenc:Array">
+ <xsd:attribute ref="soapenc:arrayType" wsdl:arrayType="typens:rtmRaidPartitionStruct[]"/>
+ </xsd:restriction>
+ </xsd:complexContent>
+ </xsd:complexType>
+
+ <xsd:complexType name="MyArrayOfRtmRaidPartitionVolumeStructType">
+ <xsd:complexContent>
+ <xsd:restriction base="soapenc:Array">
+ <xsd:attribute ref="soapenc:arrayType" wsdl:arrayType="typens:rtmRaidPartitionVolumeStruct[]"/>
+ </xsd:restriction>
+ </xsd:complexContent>
+ </xsd:complexType>
+
+ <xsd:complexType name="MyArrayOfRtmRaidPartitionVolumeMemberStructType">
+ <xsd:complexContent>
+ <xsd:restriction base="soapenc:Array">
+ <xsd:attribute ref="soapenc:arrayType" wsdl:arrayType="typens:rtmRaidPartitionVolumeMemberStruct[]"/>
+ </xsd:restriction>
+ </xsd:complexContent>
+ </xsd:complexType>
+
+ <xsd:complexType name="MyArrayOfDedicatedServerPartioningDetailStructType">
+ <xsd:complexContent>
+ <xsd:restriction base="soapenc:Array">
+ <xsd:attribute ref="soapenc:arrayType" wsdl:arrayType="typens:dedicatedServerPartioningDetailStruct[]"/>
+ </xsd:restriction>
+ </xsd:complexContent>
+ </xsd:complexType>
+
+ <xsd:complexType name="MyArrayOfDedicatedAllowedDistributionLanguageStructType">
+ <xsd:complexContent>
+ <xsd:restriction base="soapenc:Array">
+ <xsd:attribute ref="soapenc:arrayType" wsdl:arrayType="typens:dedicatedAllowedDistributionLanguageStruct[]"/>
+ </xsd:restriction>
+ </xsd:complexContent>
+ </xsd:complexType>
+
+ <xsd:complexType name="MyArrayOfDedicatedAllowedDistributionBitFormatStructType">
+ <xsd:complexContent>
+ <xsd:restriction base="soapenc:Array">
+ <xsd:attribute ref="soapenc:arrayType" wsdl:arrayType="typens:dedicatedAllowedDistributionBitFormatStruct[]"/>
+ </xsd:restriction>
+ </xsd:complexContent>
+ </xsd:complexType>
+
+ <xsd:complexType name="MyArrayOfDedicatedAllowedDistributionDetailsStructType">
+ <xsd:complexContent>
+ <xsd:restriction base="soapenc:Array">
+ <xsd:attribute ref="soapenc:arrayType" wsdl:arrayType="typens:dedicatedAllowedDistributionDetailsStruct[]"/>
+ </xsd:restriction>
+ </xsd:complexContent>
+ </xsd:complexType>
+
+ <xsd:complexType name="MyArrayOfDedicatedAllowedDistributionMoreStructType">
+ <xsd:complexContent>
+ <xsd:restriction base="soapenc:Array">
+ <xsd:attribute ref="soapenc:arrayType" wsdl:arrayType="typens:dedicatedAllowedDistributionMoreStruct[]"/>
+ </xsd:restriction>
+ </xsd:complexContent>
+ </xsd:complexType>
+
+ <xsd:complexType name="MyArrayOfDedicatedBasicInstallProgressStructType">
+ <xsd:complexContent>
+ <xsd:restriction base="soapenc:Array">
+ <xsd:attribute ref="soapenc:arrayType" wsdl:arrayType="typens:dedicatedBasicInstallProgressStruct[]"/>
+ </xsd:restriction>
+ </xsd:complexContent>
+ </xsd:complexType>
+
+ <xsd:complexType name="ticketStruct">
+ <xsd:all>
+ <xsd:element name="id" type="xsd:int"/>
+ <xsd:element name="creationDate" type="xsd:string"/>
+ <xsd:element name="requestStatus" type="xsd:string"/>
+ <xsd:element name="subject" type="xsd:string"/>
+ <xsd:element name="nic" type="xsd:string"/>
+ <xsd:element name="level" type="xsd:string"/>
+ <xsd:element name="domain" type="xsd:string"/>
+ <xsd:element name="orderId" type="xsd:int"/>
+ <xsd:element name="componentType" type="xsd:string"/>
+ </xsd:all>
+ </xsd:complexType>
+
+ <xsd:complexType name="fullTicketReturn">
+ <xsd:all>
+ <xsd:element name="ticketId" type="xsd:int"/>
+ <xsd:element name="requestStatus" type="xsd:string"/>
+ <xsd:element name="status" type="xsd:string"/>
+ <xsd:element name="subject" type="xsd:string"/>
+ <xsd:element name="nic" type="xsd:string"/>
+ <xsd:element name="phone" type="xsd:string"/>
+ <xsd:element name="email" type="xsd:string"/>
+ <xsd:element name="level" type="xsd:string"/>
+ <xsd:element name="domain" type="xsd:string"/>
+ <xsd:element name="orderId" type="xsd:int"/>
+ <xsd:element name="componentType" type="xsd:string"/>
+ <xsd:element name="messages" type="typens:MyArrayOfMessageDetailStructType"/>
+ </xsd:all>
+ </xsd:complexType>
+
+ <xsd:complexType name="messageDetailStruct">
+ <xsd:all>
+ <xsd:element name="to" type="xsd:string"/>
+ <xsd:element name="from" type="xsd:string"/>
+ <xsd:element name="date" type="xsd:string"/>
+ <xsd:element name="ip" type="xsd:string"/>
+ <xsd:element name="type" type="xsd:string"/>
+ <xsd:element name="message" type="xsd:string"/>
+ </xsd:all>
+ </xsd:complexType>
+
+ <xsd:complexType name="ticketContactStruct">
+ <xsd:all>
+ <xsd:element name="componentType" type="xsd:string"/>
+ <xsd:element name="domains" type="typens:MyArrayOfTicketContactDomainStructType"/>
+ </xsd:all>
+ </xsd:complexType>
+
+ <xsd:complexType name="ticketContactDomainStruct">
+ <xsd:all>
+ <xsd:element name="domain" type="xsd:string"/>
+ <xsd:element name="state" type="xsd:string"/>
+ <xsd:element name="reverse" type="xsd:string"/>
+ </xsd:all>
+ </xsd:complexType>
+
+ <xsd:complexType name="supportCapabilitiesReturn">
+ <xsd:all>
+ <xsd:element name="hasSupportPlus" type="xsd:boolean"/>
+ </xsd:all>
+ </xsd:complexType>
+
+ <xsd:complexType name="MyArrayOfTicketStructType">
+ <xsd:complexContent>
+ <xsd:restriction base="soapenc:Array">
+ <xsd:attribute ref="soapenc:arrayType" wsdl:arrayType="typens:ticketStruct[]"/>
+ </xsd:restriction>
+ </xsd:complexContent>
+ </xsd:complexType>
+
+ <xsd:complexType name="MyArrayOfTicketContactStructType">
+ <xsd:complexContent>
+ <xsd:restriction base="soapenc:Array">
+ <xsd:attribute ref="soapenc:arrayType" wsdl:arrayType="typens:ticketContactStruct[]"/>
+ </xsd:restriction>
+ </xsd:complexContent>
+ </xsd:complexType>
+
+ <xsd:complexType name="MyArrayOfMessageDetailStructType">
+ <xsd:complexContent>
+ <xsd:restriction base="soapenc:Array">
+ <xsd:attribute ref="soapenc:arrayType" wsdl:arrayType="typens:messageDetailStruct[]"/>
+ </xsd:restriction>
+ </xsd:complexContent>
+ </xsd:complexType>
+
+ <xsd:complexType name="MyArrayOfTicketContactDomainStructType">
+ <xsd:complexContent>
+ <xsd:restriction base="soapenc:Array">
+ <xsd:attribute ref="soapenc:arrayType" wsdl:arrayType="typens:ticketContactDomainStruct[]"/>
+ </xsd:restriction>
+ </xsd:complexContent>
+ </xsd:complexType>
+
+ <xsd:complexType name="sqlpriveStruct">
+ <xsd:all>
+ <xsd:element name="server" type="xsd:string"/>
+ <xsd:element name="expiration" type="xsd:string"/>
+ <xsd:element name="memory" type="xsd:string"/>
+ <xsd:element name="ip" type="xsd:string"/>
+ <xsd:element name="type" type="xsd:string"/>
+ <xsd:element name="version" type="xsd:string"/>
+ </xsd:all>
+ </xsd:complexType>
+
+ <xsd:complexType name="sqlpriveMysqlProcessStruct">
+ <xsd:all>
+ <xsd:element name="id" type="xsd:int"/>
+ <xsd:element name="user" type="xsd:string"/>
+ <xsd:element name="host" type="xsd:string"/>
+ <xsd:element name="database" type="xsd:string"/>
+ <xsd:element name="query" type="xsd:string"/>
+ <xsd:element name="time" type="xsd:string"/>
+ <xsd:element name="state" type="xsd:string"/>
+ <xsd:element name="request" type="xsd:string"/>
+ </xsd:all>
+ </xsd:complexType>
+
+ <xsd:complexType name="sqlpriveMysqlDatabasePrivilegeStruct">
+ <xsd:all>
+ <xsd:element name="databaseName" type="xsd:string"/>
+ <xsd:element name="databaseUsers" type="typens:MyArrayOfSqlpriveMysqlDatabaseUserPrivilegeStructType"/>
+ </xsd:all>
+ </xsd:complexType>
+
+ <xsd:complexType name="sqlpriveMysqlDatabaseUserPrivilegeStruct">
+ <xsd:all>
+ <xsd:element name="userName" type="xsd:string"/>
+ <xsd:element name="userPriv" type="xsd:string"/>
+ </xsd:all>
+ </xsd:complexType>
+
+ <xsd:complexType name="sqlpriveGetPossibleDumpStruct">
+ <xsd:all>
+ <xsd:element name="date" type="xsd:string"/>
+ <xsd:element name="file" type="typens:MyArrayOfStringType"/>
+ <xsd:element name="comment" type="xsd:string"/>
+ </xsd:all>
+ </xsd:complexType>
+
+ <xsd:complexType name="sqlpriveAlertInfotReturn">
+ <xsd:all>
+ <xsd:element name="email" type="xsd:string"/>
+ <xsd:element name="alert" type="typens:MyArrayOfStringType"/>
+ <xsd:element name="smsNumber" type="xsd:string"/>
+ <xsd:element name="smsAccount" type="xsd:string"/>
+ </xsd:all>
+ </xsd:complexType>
+
+ <xsd:complexType name="sqlpriveCronStruct">
+ <xsd:all>
+ <xsd:element name="id" type="xsd:int"/>
+ <xsd:element name="active" type="xsd:string"/>
+ <xsd:element name="days" type="xsd:string"/>
+ <xsd:element name="hours" type="xsd:string"/>
+ <xsd:element name="operation" type="xsd:string"/>
+ <xsd:element name="endDate" type="xsd:string"/>
+ <xsd:element name="comment" type="xsd:string"/>
+ </xsd:all>
+ </xsd:complexType>
+
+ <xsd:complexType name="MyArrayOfSqlpriveStructType">
+ <xsd:complexContent>
+ <xsd:restriction base="soapenc:Array">
+ <xsd:attribute ref="soapenc:arrayType" wsdl:arrayType="typens:sqlpriveStruct[]"/>
+ </xsd:restriction>
+ </xsd:complexContent>
+ </xsd:complexType>
+
+ <xsd:complexType name="MyArrayOfSqlpriveMysqlDatabasePrivilegeStructType">
+ <xsd:complexContent>
+ <xsd:restriction base="soapenc:Array">
+ <xsd:attribute ref="soapenc:arrayType" wsdl:arrayType="typens:sqlpriveMysqlDatabasePrivilegeStruct[]"/>
+ </xsd:restriction>
+ </xsd:complexContent>
+ </xsd:complexType>
+
+ <xsd:complexType name="MyArrayOfSqlpriveGetPossibleDumpStructType">
+ <xsd:complexContent>
+ <xsd:restriction base="soapenc:Array">
+ <xsd:attribute ref="soapenc:arrayType" wsdl:arrayType="typens:sqlpriveGetPossibleDumpStruct[]"/>
+ </xsd:restriction>
+ </xsd:complexContent>
+ </xsd:complexType>
+
+ <xsd:complexType name="MyArrayOfSqlpriveMysqlProcessStructType">
+ <xsd:complexContent>
+ <xsd:restriction base="soapenc:Array">
+ <xsd:attribute ref="soapenc:arrayType" wsdl:arrayType="typens:sqlpriveMysqlProcessStruct[]"/>
+ </xsd:restriction>
+ </xsd:complexContent>
+ </xsd:complexType>
+
+ <xsd:complexType name="MyArrayOfSqlpriveCronStructType">
+ <xsd:complexContent>
+ <xsd:restriction base="soapenc:Array">
+ <xsd:attribute ref="soapenc:arrayType" wsdl:arrayType="typens:sqlpriveCronStruct[]"/>
+ </xsd:restriction>
+ </xsd:complexContent>
+ </xsd:complexType>
+
+ <xsd:complexType name="MyArrayOfSqlpriveMysqlDatabaseUserPrivilegeStructType">
+ <xsd:complexContent>
+ <xsd:restriction base="soapenc:Array">
+ <xsd:attribute ref="soapenc:arrayType" wsdl:arrayType="typens:sqlpriveMysqlDatabaseUserPrivilegeStruct[]"/>
+ </xsd:restriction>
+ </xsd:complexContent>
+ </xsd:complexType>
+
+ <xsd:complexType name="resellerAccountMovementStruct">
+ <xsd:all>
+ <xsd:element name="amount" type="xsd:int"/>
+ <xsd:element name="balance" type="xsd:int"/>
+ <xsd:element name="previousBalance" type="xsd:int"/>
+ <xsd:element name="date" type="xsd:string"/>
+ <xsd:element name="description" type="xsd:string"/>
+ <xsd:element name="operation" type="xsd:string"/>
+ <xsd:element name="order" type="xsd:int"/>
+ </xsd:all>
+ </xsd:complexType>
+
+ <xsd:complexType name="resellerAccountHistoryReturn">
+ <xsd:all>
+ <xsd:element name="month" type="xsd:int"/>
+ <xsd:element name="year" type="xsd:int"/>
+ <xsd:element name="movements" type="typens:MyArrayOfResellerAccountMovementStructType"/>
+ </xsd:all>
+ </xsd:complexType>
+
+ <xsd:complexType name="resellerAccountSummaryReturn">
+ <xsd:all>
+ <xsd:element name="nic" type="xsd:string"/>
+ <xsd:element name="account" type="xsd:string"/>
+ <xsd:element name="country" type="xsd:string"/>
+ <xsd:element name="description" type="xsd:string"/>
+ <xsd:element name="balance" type="xsd:int"/>
+ <xsd:element name="alertThreshold" type="xsd:int"/>
+ <xsd:element name="limitThreshold" type="xsd:int"/>
+ <xsd:element name="openDate" type="xsd:string"/>
+ <xsd:element name="date" type="xsd:string"/>
+ <xsd:element name="closeDate" type="xsd:string"/>
+ </xsd:all>
+ </xsd:complexType>
+
+ <xsd:complexType name="MyArrayOfResellerAccountMovementStructType">
+ <xsd:complexContent>
+ <xsd:restriction base="soapenc:Array">
+ <xsd:attribute ref="soapenc:arrayType" wsdl:arrayType="typens:resellerAccountMovementStruct[]"/>
+ </xsd:restriction>
+ </xsd:complexContent>
+ </xsd:complexType>
+
+ <xsd:complexType name="InfrastructureIpStruct">
+ <xsd:all>
+ <xsd:element name="country" type="xsd:string"/>
+ <xsd:element name="netname" type="xsd:string"/>
+ <xsd:element name="routedTo" type="xsd:string"/>
+ <xsd:element name="status" type="xsd:string"/>
+ <xsd:element name="addressesNumber" type="xsd:int"/>
+ <xsd:element name="networkIp" type="xsd:string"/>
+ <xsd:element name="ipAddressFromBlock" type="typens:MyArrayOfStringType"/>
+ </xsd:all>
+ </xsd:complexType>
+
+ <xsd:complexType name="ripeReturn">
+ <xsd:all>
+ <xsd:element name="inetnum" type="typens:ripeInetnumStruct"/>
+ <xsd:element name="organisation" type="typens:ripeOrganisationStruct"/>
+ </xsd:all>
+ </xsd:complexType>
+
+ <xsd:complexType name="ripeInetnumStruct">
+ <xsd:all>
+ <xsd:element name="inetnum" type="xsd:string"/>
+ <xsd:element name="netname" type="xsd:string"/>
+ <xsd:element name="descr" type="typens:MyArrayOfStringType"/>
+ <xsd:element name="org" type="xsd:string"/>
+ <xsd:element name="country" type="xsd:string"/>
+ <xsd:element name="adminc" type="xsd:string"/>
+ <xsd:element name="techc" type="xsd:string"/>
+ <xsd:element name="status" type="xsd:string"/>
+ <xsd:element name="mntby" type="xsd:string"/>
+ <xsd:element name="changed" type="xsd:string"/>
+ <xsd:element name="source" type="xsd:string"/>
+ </xsd:all>
+ </xsd:complexType>
+
+ <xsd:complexType name="ripeOrganisationStruct">
+ <xsd:all>
+ <xsd:element name="organisation" type="xsd:string"/>
+ <xsd:element name="orgname" type="xsd:string"/>
+ <xsd:element name="orgtype" type="xsd:string"/>
+ <xsd:element name="address" type="typens:MyArrayOfStringType"/>
+ <xsd:element name="email" type="xsd:string"/>
+ <xsd:element name="abusemailbox" type="xsd:string"/>
+ <xsd:element name="mntref" type="xsd:string"/>
+ <xsd:element name="mntby" type="xsd:string"/>
+ <xsd:element name="changed" type="xsd:string"/>
+ <xsd:element name="source" type="xsd:string"/>
+ </xsd:all>
+ </xsd:complexType>
+
+ <xsd:complexType name="ripeUpdateReturn">
+ <xsd:all>
+ <xsd:element name="object" type="xsd:string"/>
+ <xsd:element name="value" type="xsd:string"/>
+ <xsd:element name="operation" type="xsd:string"/>
+ <xsd:element name="result" type="xsd:string"/>
+ </xsd:all>
+ </xsd:complexType>
+
+ <xsd:complexType name="MyArrayOfInfrastructureIpStructType">
+ <xsd:complexContent>
+ <xsd:restriction base="soapenc:Array">
+ <xsd:attribute ref="soapenc:arrayType" wsdl:arrayType="typens:InfrastructureIpStruct[]"/>
+ </xsd:restriction>
+ </xsd:complexContent>
+ </xsd:complexType>
+
+ <xsd:complexType name="accountMovementStruct">
+ <xsd:all>
+ <xsd:element name="amount" type="xsd:int"/>
+ <xsd:element name="balance" type="xsd:int"/>
+ <xsd:element name="previousBalance" type="xsd:int"/>
+ <xsd:element name="date" type="xsd:string"/>
+ <xsd:element name="description" type="xsd:string"/>
+ <xsd:element name="operation" type="xsd:string"/>
+ <xsd:element name="order" type="xsd:int"/>
+ </xsd:all>
+ </xsd:complexType>
+
+ <xsd:complexType name="accountHistoryReturn">
+ <xsd:all>
+ <xsd:element name="month" type="xsd:int"/>
+ <xsd:element name="year" type="xsd:int"/>
+ <xsd:element name="movements" type="typens:MyArrayOfAccountMovementStructType"/>
+ </xsd:all>
+ </xsd:complexType>
+
+ <xsd:complexType name="accountSummaryReturn">
+ <xsd:all>
+ <xsd:element name="nic" type="xsd:string"/>
+ <xsd:element name="account" type="xsd:string"/>
+ <xsd:element name="country" type="xsd:string"/>
+ <xsd:element name="description" type="xsd:string"/>
+ <xsd:element name="balance" type="xsd:int"/>
+ <xsd:element name="alertThreshold" type="xsd:int"/>
+ <xsd:element name="limitThreshold" type="xsd:int"/>
+ <xsd:element name="openDate" type="xsd:string"/>
+ <xsd:element name="date" type="xsd:string"/>
+ <xsd:element name="closeDate" type="xsd:string"/>
+ </xsd:all>
+ </xsd:complexType>
+
+ <xsd:complexType name="MyArrayOfAccountMovementStructType">
+ <xsd:complexContent>
+ <xsd:restriction base="soapenc:Array">
+ <xsd:attribute ref="soapenc:arrayType" wsdl:arrayType="typens:accountMovementStruct[]"/>
+ </xsd:restriction>
+ </xsd:complexContent>
+ </xsd:complexType>
+
+ <xsd:complexType name="hostingChangeMainDomainReturn">
+ <xsd:all>
+ <xsd:element name="id" type="xsd:int"/>
+ <xsd:element name="country" type="xsd:string"/>
+ <xsd:element name="password" type="xsd:string"/>
+ <xsd:element name="totalPriceWithVat" type="xsd:float"/>
+ <xsd:element name="totalPrice" type="xsd:float"/>
+ <xsd:element name="url" type="xsd:string"/>
+ <xsd:element name="vatRate" type="xsd:float"/>
+ </xsd:all>
+ </xsd:complexType>
+
+ <xsd:complexType name="hostingGetCapabilitiesReturn">
+ <xsd:all>
+ <xsd:element name="name" type="xsd:string"/>
+ <xsd:element name="webspace" type="xsd:int"/>
+ <xsd:element name="traffic" type="xsd:string"/>
+ <xsd:element name="databases" type="xsd:int"/>
+ <xsd:element name="databaseSpace" type="xsd:int"/>
+ <xsd:element name="multidomains" type="xsd:int"/>
+ <xsd:element name="subdomains" type="xsd:int"/>
+ <xsd:element name="streaming" type="xsd:int"/>
+ <xsd:element name="multiftp" type="xsd:int"/>
+ <xsd:element name="anonymousftp" type="xsd:int"/>
+ <xsd:element name="freeDomPerYear" type="xsd:int"/>
+ <xsd:element name="freeDomMax" type="xsd:int"/>
+ <xsd:element name="sharedSSL" type="xsd:boolean"/>
+ <xsd:element name="ssh" type="xsd:boolean"/>
+ <xsd:element name="geoloc" type="xsd:boolean"/>
+ <xsd:element name="cgi" type="xsd:boolean"/>
+ <xsd:element name="crontab" type="xsd:boolean"/>
+ <xsd:element name="sip" type="xsd:boolean"/>
+ <xsd:element name="vpn" type="xsd:boolean"/>
+ <xsd:element name="jabber" type="xsd:boolean"/>
+ </xsd:all>
+ </xsd:complexType>
+
+ <xsd:complexType name="hostingListStruct">
+ <xsd:all>
+ <xsd:element name="domain" type="xsd:string"/>
+ <xsd:element name="hosting" type="xsd:string"/>
+ </xsd:all>
+ </xsd:complexType>
+
+ <xsd:complexType name="hostingSummaryReturn">
+ <xsd:all>
+ <xsd:element name="country" type="xsd:string"/>
+ <xsd:element name="webspace" type="xsd:string"/>
+ <xsd:element name="maxWebspace" type="xsd:string"/>
+ <xsd:element name="subdomains" type="xsd:string"/>
+ <xsd:element name="multidomains" type="xsd:string"/>
+ <xsd:element name="multiftps" type="xsd:string"/>
+ <xsd:element name="anonymousftp" type="xsd:string"/>
+ <xsd:element name="databases" type="xsd:string"/>
+ <xsd:element name="freedom_remaining" type="xsd:string"/>
+ <xsd:element name="freedom_assigned" type="xsd:string"/>
+ <xsd:element name="freedom_total" type="xsd:string"/>
+ <xsd:element name="highCapacity" type="xsd:boolean"/>
+ <xsd:element name="highSecurity" type="xsd:boolean"/>
+ <xsd:element name="state" type="xsd:string"/>
+ </xsd:all>
+ </xsd:complexType>
+
+ <xsd:complexType name="ftpInfoReturn">
+ <xsd:all>
+ <xsd:element name="login" type="xsd:string"/>
+ <xsd:element name="quota" type="xsd:int"/>
+ <xsd:element name="maxQuota" type="xsd:int"/>
+ <xsd:element name="url" type="xsd:string"/>
+ <xsd:element name="hostedOn" type="xsd:string"/>
+ <xsd:element name="isTodo" type="xsd:string"/>
+ <xsd:element name="highCapacity" type="xsd:boolean"/>
+ <xsd:element name="highSecurity" type="xsd:boolean"/>
+ </xsd:all>
+ </xsd:complexType>
+
+ <xsd:complexType name="databaseStruct">
+ <xsd:all>
+ <xsd:element name="db" type="xsd:string"/>
+ <xsd:element name="quota" type="xsd:float"/>
+ <xsd:element name="limit" type="xsd:float"/>
+ <xsd:element name="version" type="xsd:string"/>
+ <xsd:element name="date" type="xsd:string"/>
+ <xsd:element name="state" type="xsd:string"/>
+ <xsd:element name="type" type="xsd:string"/>
+ <xsd:element name="server" type="xsd:string"/>
+ <xsd:element name="todo" type="xsd:boolean"/>
+ <xsd:element name="quota_warning" type="xsd:boolean"/>
+ </xsd:all>
+ </xsd:complexType>
+
+ <xsd:complexType name="anonymousFtpInfoReturn">
+ <xsd:all>
+ <xsd:element name="login" type="xsd:string"/>
+ <xsd:element name="url" type="xsd:string"/>
+ <xsd:element name="max" type="xsd:int"/>
+ <xsd:element name="quota" type="xsd:int"/>
+ <xsd:element name="active" type="xsd:boolean"/>
+ <xsd:element name="todo" type="xsd:boolean"/>
+ </xsd:all>
+ </xsd:complexType>
+
+ <xsd:complexType name="subDomainStruct">
+ <xsd:all>
+ <xsd:element name="subdomain" type="xsd:string"/>
+ <xsd:element name="target" type="xsd:string"/>
+ <xsd:element name="country" type="xsd:string"/>
+ </xsd:all>
+ </xsd:complexType>
+
+ <xsd:complexType name="multiDomainStruct">
+ <xsd:all>
+ <xsd:element name="multidomain" type="xsd:string"/>
+ <xsd:element name="target" type="xsd:string"/>
+ <xsd:element name="country" type="xsd:string"/>
+ </xsd:all>
+ </xsd:complexType>
+
+ <xsd:complexType name="multiFtpStruct">
+ <xsd:all>
+ <xsd:element name="subdir" type="xsd:string"/>
+ <xsd:element name="login" type="xsd:string"/>
+ </xsd:all>
+ </xsd:complexType>
+
+ <xsd:complexType name="overquotaInfoDayStruct">
+ <xsd:all>
+ <xsd:element name="day" type="xsd:int"/>
+ <xsd:element name="value" type="xsd:int"/>
+ </xsd:all>
+ </xsd:complexType>
+
+ <xsd:complexType name="overquotaInfoStruct">
+ <xsd:all>
+ <xsd:element name="month" type="xsd:string"/>
+ <xsd:element name="traffic" type="xsd:int"/>
+ <xsd:element name="hits" type="xsd:int"/>
+ </xsd:all>
+ </xsd:complexType>
+
+ <xsd:complexType name="overquotaInfoReturn">
+ <xsd:all>
+ <xsd:element name="domain" type="xsd:string"/>
+ <xsd:element name="quota" type="typens:MyArrayOfOverquotaInfoStructType"/>
+ <xsd:element name="capacities" type="xsd:int"/>
+ <xsd:element name="order" type="xsd:int"/>
+ </xsd:all>
+ </xsd:complexType>
+
+ <xsd:complexType name="logsAccessStruct">
+ <xsd:all>
+ <xsd:element name="user" type="xsd:string"/>
+ <xsd:element name="lastUpdate" type="xsd:string"/>
+ </xsd:all>
+ </xsd:complexType>
+
+ <xsd:complexType name="automatedMailGetStateReturn">
+ <xsd:all>
+ <xsd:element name="bounce" type="xsd:int"/>
+ <xsd:element name="sent" type="xsd:int"/>
+ <xsd:element name="return" type="xsd:string"/>
+ <xsd:element name="state" type="xsd:string"/>
+ </xsd:all>
+ </xsd:complexType>
+
+ <xsd:complexType name="automatedMailGetVolumeHistoryStruct">
+ <xsd:all>
+ <xsd:element name="volume" type="xsd:int"/>
+ <xsd:element name="date" type="xsd:string"/>
+ </xsd:all>
+ </xsd:complexType>
+
+ <xsd:complexType name="automatedMailGetErrorsStruct">
+ <xsd:all>
+ <xsd:element name="to" type="xsd:string"/>
+ <xsd:element name="total" type="xsd:int"/>
+ <xsd:element name="date" type="xsd:string"/>
+ <xsd:element name="message" type="xsd:string"/>
+ </xsd:all>
+ </xsd:complexType>
+
+ <xsd:complexType name="cmsAvailableStruct">
+ <xsd:all>
+ <xsd:element name="name" type="xsd:string"/>
+ <xsd:element name="version" type="xsd:string"/>
+ <xsd:element name="language" type="typens:MyArrayOfStringType"/>
+ <xsd:element name="category" type="xsd:string"/>
+ <xsd:element name="dbPrefix" type="xsd:string"/>
+ <xsd:element name="enable" type="xsd:boolean"/>
+ </xsd:all>
+ </xsd:complexType>
+
+ <xsd:complexType name="cmsStruct">
+ <xsd:all>
+ <xsd:element name="id" type="xsd:int"/>
+ <xsd:element name="name" type="xsd:string"/>
+ <xsd:element name="version" type="xsd:string"/>
+ <xsd:element name="language" type="xsd:string"/>
+ <xsd:element name="url" type="xsd:string"/>
+ <xsd:element name="path" type="xsd:string"/>
+ <xsd:element name="adminLogin" type="xsd:string"/>
+ </xsd:all>
+ </xsd:complexType>
+
+ <xsd:complexType name="crontabStruct">
+ <xsd:all>
+ <xsd:element name="id" type="xsd:int"/>
+ <xsd:element name="path" type="xsd:string"/>
+ <xsd:element name="desc" type="xsd:string"/>
+ <xsd:element name="email" type="xsd:string"/>
+ <xsd:element name="enabled" type="xsd:boolean"/>
+ </xsd:all>
+ </xsd:complexType>
+
+ <xsd:complexType name="crontabInfoReturn">
+ <xsd:all>
+ <xsd:element name="id" type="xsd:int"/>
+ <xsd:element name="path" type="xsd:string"/>
+ <xsd:element name="desc" type="xsd:string"/>
+ <xsd:element name="email" type="xsd:string"/>
+ <xsd:element name="enabled" type="xsd:boolean"/>
+ <xsd:element name="programLanguage" type="xsd:string"/>
+ <xsd:element name="weekDay" type="xsd:string"/>
+ <xsd:element name="days" type="typens:MyArrayOfIntType"/>
+ <xsd:element name="hours" type="typens:MyArrayOfIntType"/>
+ </xsd:all>
+ </xsd:complexType>
+
+ <xsd:complexType name="MyArrayOfHostingListStructType">
+ <xsd:complexContent>
+ <xsd:restriction base="soapenc:Array">
+ <xsd:attribute ref="soapenc:arrayType" wsdl:arrayType="typens:hostingListStruct[]"/>
+ </xsd:restriction>
+ </xsd:complexContent>
+ </xsd:complexType>
+
+ <xsd:complexType name="MyArrayOfDatabaseStructType">
+ <xsd:complexContent>
+ <xsd:restriction base="soapenc:Array">
+ <xsd:attribute ref="soapenc:arrayType" wsdl:arrayType="typens:databaseStruct[]"/>
+ </xsd:restriction>
+ </xsd:complexContent>
+ </xsd:complexType>
+
+ <xsd:complexType name="MyArrayOfSubDomainStructType">
+ <xsd:complexContent>
+ <xsd:restriction base="soapenc:Array">
+ <xsd:attribute ref="soapenc:arrayType" wsdl:arrayType="typens:subDomainStruct[]"/>
+ </xsd:restriction>
+ </xsd:complexContent>
+ </xsd:complexType>
+
+ <xsd:complexType name="MyArrayOfMultiDomainStructType">
+ <xsd:complexContent>
+ <xsd:restriction base="soapenc:Array">
+ <xsd:attribute ref="soapenc:arrayType" wsdl:arrayType="typens:multiDomainStruct[]"/>
+ </xsd:restriction>
+ </xsd:complexContent>
+ </xsd:complexType>
+
+ <xsd:complexType name="MyArrayOfMultiFtpStructType">
+ <xsd:complexContent>
+ <xsd:restriction base="soapenc:Array">
+ <xsd:attribute ref="soapenc:arrayType" wsdl:arrayType="typens:multiFtpStruct[]"/>
+ </xsd:restriction>
+ </xsd:complexContent>
+ </xsd:complexType>
+
+ <xsd:complexType name="MyArrayOfLogsAccessStructType">
+ <xsd:complexContent>
+ <xsd:restriction base="soapenc:Array">
+ <xsd:attribute ref="soapenc:arrayType" wsdl:arrayType="typens:logsAccessStruct[]"/>
+ </xsd:restriction>
+ </xsd:complexContent>
+ </xsd:complexType>
+
+ <xsd:complexType name="MyArrayOfCrontabStructType">
+ <xsd:complexContent>
+ <xsd:restriction base="soapenc:Array">
+ <xsd:attribute ref="soapenc:arrayType" wsdl:arrayType="typens:crontabStruct[]"/>
+ </xsd:restriction>
+ </xsd:complexContent>
+ </xsd:complexType>
+
+ <xsd:complexType name="MyArrayOfAutomatedMailGetErrorsStructType">
+ <xsd:complexContent>
+ <xsd:restriction base="soapenc:Array">
+ <xsd:attribute ref="soapenc:arrayType" wsdl:arrayType="typens:automatedMailGetErrorsStruct[]"/>
+ </xsd:restriction>
+ </xsd:complexContent>
+ </xsd:complexType>
+
+ <xsd:complexType name="MyArrayOfAutomatedMailGetVolumeHistoryStructType">
+ <xsd:complexContent>
+ <xsd:restriction base="soapenc:Array">
+ <xsd:attribute ref="soapenc:arrayType" wsdl:arrayType="typens:automatedMailGetVolumeHistoryStruct[]"/>
+ </xsd:restriction>
+ </xsd:complexContent>
+ </xsd:complexType>
+
+ <xsd:complexType name="MyArrayOfCmsAvailableStructType">
+ <xsd:complexContent>
+ <xsd:restriction base="soapenc:Array">
+ <xsd:attribute ref="soapenc:arrayType" wsdl:arrayType="typens:cmsAvailableStruct[]"/>
+ </xsd:restriction>
+ </xsd:complexContent>
+ </xsd:complexType>
+
+ <xsd:complexType name="MyArrayOfCmsStructType">
+ <xsd:complexContent>
+ <xsd:restriction base="soapenc:Array">
+ <xsd:attribute ref="soapenc:arrayType" wsdl:arrayType="typens:cmsStruct[]"/>
+ </xsd:restriction>
+ </xsd:complexContent>
+ </xsd:complexType>
+
+ <xsd:complexType name="MyArrayOfOverquotaInfoStructType">
+ <xsd:complexContent>
+ <xsd:restriction base="soapenc:Array">
+ <xsd:attribute ref="soapenc:arrayType" wsdl:arrayType="typens:overquotaInfoStruct[]"/>
+ </xsd:restriction>
+ </xsd:complexContent>
+ </xsd:complexType>
+
+ <xsd:complexType name="serviceStruct">
+ <xsd:all>
+ <xsd:element name="domain" type="xsd:string"/>
+ <xsd:element name="component" type="xsd:string"/>
+ <xsd:element name="componentSubType" type="xsd:string"/>
+ <xsd:element name="creation" type="xsd:string"/>
+ <xsd:element name="modification" type="xsd:string"/>
+ <xsd:element name="expiry" type="xsd:string"/>
+ <xsd:element name="nicowner" type="xsd:string"/>
+ <xsd:element name="nicadmin" type="xsd:string"/>
+ <xsd:element name="nictech" type="xsd:string"/>
+ <xsd:element name="nicbilling" type="xsd:string"/>
+ <xsd:element name="nicreseller" type="xsd:string"/>
+ <xsd:element name="autorenew" type="xsd:string"/>
+ <xsd:element name="reverse" type="xsd:string"/>
+ </xsd:all>
+ </xsd:complexType>
+
+ <xsd:complexType name="serviceLightStruct">
+ <xsd:all>
+ <xsd:element name="domain" type="xsd:string"/>
+ <xsd:element name="expiry" type="xsd:string"/>
+ <xsd:element name="nicadmin" type="xsd:string"/>
+ <xsd:element name="nictech" type="xsd:string"/>
+ <xsd:element name="nicbilling" type="xsd:string"/>
+ <xsd:element name="autorenew" type="xsd:string"/>
+ <xsd:element name="reverse" type="xsd:string"/>
+ </xsd:all>
+ </xsd:complexType>
+
+ <xsd:complexType name="serviceListPaginatedStruct">
+ <xsd:all>
+ <xsd:element name="total" type="xsd:int"/>
+ <xsd:element name="results" type="typens:MyArrayOfServiceLightStructType"/>
+ </xsd:all>
+ </xsd:complexType>
+
+ <xsd:complexType name="freedomStruct">
+ <xsd:all>
+ <xsd:element name="referenceReferer" type="xsd:string"/>
+ <xsd:element name="creationDate" type="xsd:string"/>
+ <xsd:element name="status" type="xsd:string"/>
+ <xsd:element name="freeDom" type="xsd:string"/>
+ <xsd:element name="useDate" type="xsd:string"/>
+ <xsd:element name="domainReferer" type="xsd:string"/>
+ </xsd:all>
+ </xsd:complexType>
+
+ <xsd:complexType name="serviceGroupStruct">
+ <xsd:all>
+ <xsd:element name="name" type="xsd:string"/>
+ <xsd:element name="comment" type="xsd:string"/>
+ <xsd:element name="details" type="typens:MyArrayOfServiceStructType"/>
+ </xsd:all>
+ </xsd:complexType>
+
+ <xsd:complexType name="MyArrayOfServiceStructType">
+ <xsd:complexContent>
+ <xsd:restriction base="soapenc:Array">
+ <xsd:attribute ref="soapenc:arrayType" wsdl:arrayType="typens:serviceStruct[]"/>
+ </xsd:restriction>
+ </xsd:complexContent>
+ </xsd:complexType>
+
+ <xsd:complexType name="MyArrayOfFreedomStructType">
+ <xsd:complexContent>
+ <xsd:restriction base="soapenc:Array">
+ <xsd:attribute ref="soapenc:arrayType" wsdl:arrayType="typens:freedomStruct[]"/>
+ </xsd:restriction>
+ </xsd:complexContent>
+ </xsd:complexType>
+
+ <xsd:complexType name="MyArrayOfServiceGroupStructType">
+ <xsd:complexContent>
+ <xsd:restriction base="soapenc:Array">
+ <xsd:attribute ref="soapenc:arrayType" wsdl:arrayType="typens:serviceGroupStruct[]"/>
+ </xsd:restriction>
+ </xsd:complexContent>
+ </xsd:complexType>
+
+ <xsd:complexType name="MyArrayOfServiceLightStructType">
+ <xsd:complexContent>
+ <xsd:restriction base="soapenc:Array">
+ <xsd:attribute ref="soapenc:arrayType" wsdl:arrayType="typens:serviceLightStruct[]"/>
+ </xsd:restriction>
+ </xsd:complexContent>
+ </xsd:complexType>
+
+ <xsd:complexType name="domainInfoReturn">
+ <xsd:all>
+ <xsd:element name="domain" type="xsd:string"/>
+ <xsd:element name="creation" type="xsd:string"/>
+ <xsd:element name="modification" type="xsd:string"/>
+ <xsd:element name="expiration" type="xsd:string"/>
+ <xsd:element name="nicowner" type="xsd:string"/>
+ <xsd:element name="nicadmin" type="xsd:string"/>
+ <xsd:element name="nictech" type="xsd:string"/>
+ <xsd:element name="nicbilling" type="xsd:string"/>
+ <xsd:element name="authinfo" type="xsd:string"/>
+ <xsd:element name="dns" type="typens:MyArrayOfNsStructType"/>
+ </xsd:all>
+ </xsd:complexType>
+
+ <xsd:complexType name="domainCheckStruct">
+ <xsd:all>
+ <xsd:element name="predicate" type="xsd:string"/>
+ <xsd:element name="value" type="xsd:boolean"/>
+ <xsd:element name="reason" type="xsd:string"/>
+ </xsd:all>
+ </xsd:complexType>
+
+ <xsd:complexType name="domainCapabilitiesReturn">
+ <xsd:all>
+ <xsd:element name="needAuthInfo" type="xsd:boolean"/>
+ <xsd:element name="needZoneCheck" type="xsd:boolean"/>
+ <xsd:element name="owo" type="xsd:boolean"/>
+ <xsd:element name="hostIPv4" type="xsd:boolean"/>
+ <xsd:element name="hostIPv6" type="xsd:boolean"/>
+ <xsd:element name="hostmultiIp" type="xsd:boolean"/>
+ <xsd:element name="ownerUpdateAllowed" type="xsd:boolean"/>
+ <xsd:element name="ownerTradeAllowed" type="xsd:boolean"/>
+ </xsd:all>
+ </xsd:complexType>
+
+ <xsd:complexType name="nsStruct">
+ <xsd:all>
+ <xsd:element name="name" type="xsd:string"/>
+ <xsd:element name="ip" type="xsd:string"/>
+ </xsd:all>
+ </xsd:complexType>
+
+ <xsd:complexType name="zoneStruct">
+ <xsd:all>
+ <xsd:element name="subdomain" type="xsd:string"/>
+ <xsd:element name="fieldtype" type="xsd:string"/>
+ <xsd:element name="target" type="xsd:string"/>
+ </xsd:all>
+ </xsd:complexType>
+
+ <xsd:complexType name="ortStruct">
+ <xsd:all>
+ <xsd:element name="subdomain" type="xsd:string"/>
+ <xsd:element name="target" type="xsd:string"/>
+ <xsd:element name="type" type="xsd:string"/>
+ </xsd:all>
+ </xsd:complexType>
+
+ <xsd:complexType name="domainHostInfoReturn">
+ <xsd:all>
+ <xsd:element name="hostname" type="xsd:string"/>
+ <xsd:element name="ipv4" type="xsd:string"/>
+ <xsd:element name="ipv6" type="xsd:string"/>
+ </xsd:all>
+ </xsd:complexType>
+
+ <xsd:complexType name="operationStruct">
+ <xsd:all>
+ <xsd:element name="id" type="xsd:int"/>
+ <xsd:element name="domain" type="xsd:string"/>
+ <xsd:element name="function" type="xsd:string"/>
+ <xsd:element name="status" type="xsd:string"/>
+ <xsd:element name="internalStatus" type="xsd:string"/>
+ <xsd:element name="comment" type="xsd:string"/>
+ <xsd:element name="users" type="typens:MyArrayOfStringType"/>
+ <xsd:element name="retry" type="xsd:int"/>
+ <xsd:element name="todoDate" type="xsd:string"/>
+ <xsd:element name="lastUpdate" type="xsd:string"/>
+ <xsd:element name="doneDate" type="xsd:string"/>
+ <xsd:element name="canCancel" type="xsd:boolean"/>
+ <xsd:element name="canCorrect" type="xsd:boolean"/>
+ <xsd:element name="canRelaunch" type="xsd:boolean"/>
+ <xsd:element name="restartStep" type="xsd:string"/>
+ </xsd:all>
+ </xsd:complexType>
+
+ <xsd:complexType name="domainWhoisObfuscatorStruct">
+ <xsd:all>
+ <xsd:element name="domain" type="xsd:string"/>
+ <xsd:element name="email" type="xsd:boolean"/>
+ <xsd:element name="address" type="xsd:boolean"/>
+ <xsd:element name="phone" type="xsd:boolean"/>
+ </xsd:all>
+ </xsd:complexType>
+
+ <xsd:complexType name="MyArrayOfDomainCheckStructType">
+ <xsd:complexContent>
+ <xsd:restriction base="soapenc:Array">
+ <xsd:attribute ref="soapenc:arrayType" wsdl:arrayType="typens:domainCheckStruct[]"/>
+ </xsd:restriction>
+ </xsd:complexContent>
+ </xsd:complexType>
+
+ <xsd:complexType name="MyArrayOfNsStructType">
+ <xsd:complexContent>
+ <xsd:restriction base="soapenc:Array">
+ <xsd:attribute ref="soapenc:arrayType" wsdl:arrayType="typens:nsStruct[]"/>
+ </xsd:restriction>
+ </xsd:complexContent>
+ </xsd:complexType>
+
+ <xsd:complexType name="MyArrayOfZoneStructType">
+ <xsd:complexContent>
+ <xsd:restriction base="soapenc:Array">
+ <xsd:attribute ref="soapenc:arrayType" wsdl:arrayType="typens:zoneStruct[]"/>
+ </xsd:restriction>
+ </xsd:complexContent>
+ </xsd:complexType>
+
+ <xsd:complexType name="MyArrayOfOrtStructType">
+ <xsd:complexContent>
+ <xsd:restriction base="soapenc:Array">
+ <xsd:attribute ref="soapenc:arrayType" wsdl:arrayType="typens:ortStruct[]"/>
+ </xsd:restriction>
+ </xsd:complexContent>
+ </xsd:complexType>
+
+ <xsd:complexType name="MyArrayOfOperationStructType">
+ <xsd:complexContent>
+ <xsd:restriction base="soapenc:Array">
+ <xsd:attribute ref="soapenc:arrayType" wsdl:arrayType="typens:operationStruct[]"/>
+ </xsd:restriction>
+ </xsd:complexContent>
+ </xsd:complexType>
+
+ <xsd:complexType name="MyArrayOfDomainWhoisObfuscatorStructType">
+ <xsd:complexContent>
+ <xsd:restriction base="soapenc:Array">
+ <xsd:attribute ref="soapenc:arrayType" wsdl:arrayType="typens:domainWhoisObfuscatorStruct[]"/>
+ </xsd:restriction>
+ </xsd:complexContent>
+ </xsd:complexType>
+
+ <xsd:complexType name="emailRedirectionStruct">
+ <xsd:all>
+ <xsd:element name="target" type="xsd:string"/>
+ <xsd:element name="local" type="xsd:string"/>
+ <xsd:element name="subdomain" type="xsd:string"/>
+ <xsd:element name="dnsRedirection" type="xsd:boolean"/>
+ </xsd:all>
+ </xsd:complexType>
+
+ <xsd:complexType name="popStruct">
+ <xsd:all>
+ <xsd:element name="nic" type="xsd:string"/>
+ <xsd:element name="domain" type="xsd:string"/>
+ <xsd:element name="name" type="xsd:string"/>
+ <xsd:element name="description" type="xsd:string"/>
+ <xsd:element name="size" type="xsd:string"/>
+ </xsd:all>
+ </xsd:complexType>
+
+ <xsd:complexType name="popGetQuotaReturn">
+ <xsd:all>
+ <xsd:element name="emailCount" type="xsd:int"/>
+ <xsd:element name="quota" type="xsd:int"/>
+ <xsd:element name="maxQuota" type="xsd:int"/>
+ </xsd:all>
+ </xsd:complexType>
+
+ <xsd:complexType name="mailingListStruct">
+ <xsd:all>
+ <xsd:element name="domain" type="xsd:string"/>
+ <xsd:element name="ml" type="xsd:string"/>
+ <xsd:element name="owner" type="xsd:string"/>
+ <xsd:element name="nbSubscribers" type="xsd:int"/>
+ <xsd:element name="message_moderation" type="xsd:boolean"/>
+ <xsd:element name="users_post_only" type="xsd:boolean"/>
+ <xsd:element name="subscription_moderation" type="xsd:boolean"/>
+ <xsd:element name="replyto" type="xsd:string"/>
+ <xsd:element name="lang" type="xsd:string"/>
+ </xsd:all>
+ </xsd:complexType>
+
+ <xsd:complexType name="mailingListFullInfoReturn">
+ <xsd:all>
+ <xsd:element name="domain" type="xsd:string"/>
+ <xsd:element name="ml" type="xsd:string"/>
+ <xsd:element name="owner" type="xsd:string"/>
+ <xsd:element name="nbSubscribers" type="xsd:int"/>
+ <xsd:element name="message_moderation" type="xsd:boolean"/>
+ <xsd:element name="users_post_only" type="xsd:boolean"/>
+ <xsd:element name="subscription_moderation" type="xsd:boolean"/>
+ <xsd:element name="replyto" type="xsd:string"/>
+ <xsd:element name="lang" type="xsd:string"/>
+ <xsd:element name="moderators" type="typens:MyArrayOfStringType"/>
+ <xsd:element name="subscribers" type="typens:MyArrayOfStringType"/>
+ </xsd:all>
+ </xsd:complexType>
+
+ <xsd:complexType name="responderEmailStruct">
+ <xsd:all>
+ <xsd:element name="domain" type="xsd:string"/>
+ <xsd:element name="responder" type="xsd:string"/>
+ <xsd:element name="content" type="xsd:string"/>
+ <xsd:element name="hasPop" type="xsd:boolean"/>
+ <xsd:element name="hasAlias" type="xsd:boolean"/>
+ </xsd:all>
+ </xsd:complexType>
+
+ <xsd:complexType name="catchAllGetReturn">
+ <xsd:all>
+ <xsd:element name="domain" type="xsd:string"/>
+ <xsd:element name="type" type="xsd:string"/>
+ <xsd:element name="destination" type="xsd:string"/>
+ </xsd:all>
+ </xsd:complexType>
+
+ <xsd:complexType name="emailDomainSummaryReturn">
+ <xsd:all>
+ <xsd:element name="masterNic" type="xsd:string"/>
+ <xsd:element name="nbpops" type="xsd:int"/>
+ <xsd:element name="nbforwards" type="xsd:int"/>
+ <xsd:element name="nbaliases" type="xsd:int"/>
+ <xsd:element name="nbresponders" type="xsd:int"/>
+ <xsd:element name="nbmls" type="xsd:int"/>
+ </xsd:all>
+ </xsd:complexType>
+
+ <xsd:complexType name="emailGetCapabilitiesReturn">
+ <xsd:all>
+ <xsd:element name="name" type="xsd:string"/>
+ <xsd:element name="nbpops" type="xsd:int"/>
+ <xsd:element name="nbforwards" type="xsd:int"/>
+ <xsd:element name="nbaliases" type="xsd:int"/>
+ <xsd:element name="nbresponders" type="xsd:int"/>
+ <xsd:element name="nbmls" type="xsd:int"/>
+ </xsd:all>
+ </xsd:complexType>
+
+ <xsd:complexType name="emailFilterStruct">
+ <xsd:all>
+ <xsd:element name="filter" type="xsd:string"/>
+ <xsd:element name="action" type="xsd:string"/>
+ <xsd:element name="action_param" type="xsd:string"/>
+ <xsd:element name="active" type="xsd:boolean"/>
+ <xsd:element name="priority" type="xsd:string"/>
+ <xsd:element name="nbRules" type="xsd:int"/>
+ <xsd:element name="rules" type="typens:MyArrayOfEmailFilterRuleStructType"/>
+ </xsd:all>
+ </xsd:complexType>
+
+ <xsd:complexType name="emailFilterRuleStruct">
+ <xsd:all>
+ <xsd:element name="id" type="xsd:int"/>
+ <xsd:element name="header" type="xsd:string"/>
+ <xsd:element name="rule" type="xsd:string"/>
+ <xsd:element name="rule_param" type="xsd:string"/>
+ </xsd:all>
+ </xsd:complexType>
+
+ <xsd:complexType name="MyArrayOfEmailRedirectionStructType">
+ <xsd:complexContent>
+ <xsd:restriction base="soapenc:Array">
+ <xsd:attribute ref="soapenc:arrayType" wsdl:arrayType="typens:emailRedirectionStruct[]"/>
+ </xsd:restriction>
+ </xsd:complexContent>
+ </xsd:complexType>
+
+ <xsd:complexType name="MyArrayOfPopStructType">
+ <xsd:complexContent>
+ <xsd:restriction base="soapenc:Array">
+ <xsd:attribute ref="soapenc:arrayType" wsdl:arrayType="typens:popStruct[]"/>
+ </xsd:restriction>
+ </xsd:complexContent>
+ </xsd:complexType>
+
+ <xsd:complexType name="MyArrayOfMailingListStructType">
+ <xsd:complexContent>
+ <xsd:restriction base="soapenc:Array">
+ <xsd:attribute ref="soapenc:arrayType" wsdl:arrayType="typens:mailingListStruct[]"/>
+ </xsd:restriction>
+ </xsd:complexContent>
+ </xsd:complexType>
+
+ <xsd:complexType name="MyArrayOfResponderEmailStructType">
+ <xsd:complexContent>
+ <xsd:restriction base="soapenc:Array">
+ <xsd:attribute ref="soapenc:arrayType" wsdl:arrayType="typens:responderEmailStruct[]"/>
+ </xsd:restriction>
+ </xsd:complexContent>
+ </xsd:complexType>
+
+ <xsd:complexType name="MyArrayOfEmailFilterStructType">
+ <xsd:complexContent>
+ <xsd:restriction base="soapenc:Array">
+ <xsd:attribute ref="soapenc:arrayType" wsdl:arrayType="typens:emailFilterStruct[]"/>
+ </xsd:restriction>
+ </xsd:complexContent>
+ </xsd:complexType>
+
+ <xsd:complexType name="MyArrayOfEmailFilterRuleStructType">
+ <xsd:complexContent>
+ <xsd:restriction base="soapenc:Array">
+ <xsd:attribute ref="soapenc:arrayType" wsdl:arrayType="typens:emailFilterRuleStruct[]"/>
+ </xsd:restriction>
+ </xsd:complexContent>
+ </xsd:complexType>
+
+ <xsd:complexType name="globalAccessStruct">
+ <xsd:all>
+ <xsd:element name="name" type="xsd:string"/>
+ <xsd:element name="domain" type="xsd:boolean"/>
+ <xsd:element name="hosting" type="xsd:boolean"/>
+ <xsd:element name="email" type="xsd:boolean"/>
+ <xsd:element name="pop" type="xsd:boolean"/>
+ <xsd:element name="dedicated" type="xsd:boolean"/>
+ <xsd:element name="reverse" type="xsd:string"/>
+ <xsd:element name="alldom" type="xsd:boolean"/>
+ <xsd:element name="ssl" type="xsd:boolean"/>
+ <xsd:element name="rps" type="xsd:boolean"/>
+ <xsd:element name="rpsOrphan" type="xsd:boolean"/>
+ <xsd:element name="vs" type="xsd:boolean"/>
+ <xsd:element name="voip" type="xsd:boolean"/>
+ <xsd:element name="housing" type="xsd:boolean"/>
+ <xsd:element name="sqlpriv" type="xsd:boolean"/>
+ </xsd:all>
+ </xsd:complexType>
+
+ <xsd:complexType name="momVersionReturn">
+ <xsd:all>
+ <xsd:element name="version" type="xsd:string"/>
+ <xsd:element name="build" type="xsd:string"/>
+ </xsd:all>
+ </xsd:complexType>
+
+ <xsd:complexType name="MyArrayOfGlobalAccessStructType">
+ <xsd:complexContent>
+ <xsd:restriction base="soapenc:Array">
+ <xsd:attribute ref="soapenc:arrayType" wsdl:arrayType="typens:globalAccessStruct[]"/>
+ </xsd:restriction>
+ </xsd:complexContent>
+ </xsd:complexType>
+
+ <xsd:complexType name="prepaidOperationStruct">
+ <xsd:all>
+ <xsd:element name="balance_forward" type="xsd:float"/>
+ <xsd:element name="date" type="xsd:string"/>
+ <xsd:element name="nic" type="xsd:string"/>
+ <xsd:element name="account_name" type="xsd:string"/>
+ <xsd:element name="description" type="xsd:string"/>
+ <xsd:element name="amount" type="xsd:float"/>
+ <xsd:element name="balance" type="xsd:float"/>
+ <xsd:element name="order" type="xsd:int"/>
+ <xsd:element name="id" type="xsd:int"/>
+ <xsd:element name="operation" type="xsd:string"/>
+ </xsd:all>
+ </xsd:complexType>
+
+ <xsd:complexType name="prepaidGetHistoryReturn">
+ <xsd:all>
+ <xsd:element name="page" type="xsd:int"/>
+ <xsd:element name="total" type="xsd:int"/>
+ <xsd:element name="start" type="xsd:int"/>
+ <xsd:element name="end" type="xsd:int"/>
+ <xsd:element name="operations" type="typens:MyArrayOfPrepaidOperationStructType"/>
+ </xsd:all>
+ </xsd:complexType>
+
+ <xsd:complexType name="prepaidGetSummaryReturn">
+ <xsd:all>
+ <xsd:element name="contract" type="xsd:string"/>
+ <xsd:element name="threshold" type="xsd:int"/>
+ <xsd:element name="balance" type="xsd:float"/>
+ <xsd:element name="md5" type="xsd:string"/>
+ </xsd:all>
+ </xsd:complexType>
+
+ <xsd:complexType name="MyArrayOfPrepaidOperationStructType">
+ <xsd:complexContent>
+ <xsd:restriction base="soapenc:Array">
+ <xsd:attribute ref="soapenc:arrayType" wsdl:arrayType="typens:prepaidOperationStruct[]"/>
+ </xsd:restriction>
+ </xsd:complexContent>
+ </xsd:complexType>
+
+ <xsd:complexType name="billingInvoiceDetailStruct">
+ <xsd:all>
+ <xsd:element name="domain" type="xsd:string"/>
+ <xsd:element name="reference" type="xsd:string"/>
+ <xsd:element name="description" type="xsd:string"/>
+ </xsd:all>
+ </xsd:complexType>
+
+ <xsd:complexType name="billingInvoiceStruct">
+ <xsd:all>
+ <xsd:element name="vat" type="xsd:float"/>
+ <xsd:element name="totalPrice" type="xsd:float"/>
+ <xsd:element name="totalPriceWithVat" type="xsd:float"/>
+ <xsd:element name="date" type="xsd:string"/>
+ <xsd:element name="nic" type="xsd:string"/>
+ <xsd:element name="billnum" type="xsd:string"/>
+ <xsd:element name="details" type="typens:MyArrayOfBillingInvoiceDetailStructType"/>
+ <xsd:element name="domains" type="typens:MyArrayOfStringType"/>
+ <xsd:element name="billingCountry" type="xsd:string"/>
+ <xsd:element name="ordernum" type="xsd:string"/>
+ </xsd:all>
+ </xsd:complexType>
+
+ <xsd:complexType name="billingInvoiceInfoDetailStruct">
+ <xsd:all>
+ <xsd:element name="quantity" type="xsd:int"/>
+ <xsd:element name="service" type="xsd:string"/>
+ <xsd:element name="description" type="xsd:string"/>
+ <xsd:element name="end" type="xsd:string"/>
+ <xsd:element name="domain" type="xsd:string"/>
+ <xsd:element name="baseprice" type="xsd:float"/>
+ <xsd:element name="totalprice" type="xsd:float"/>
+ <xsd:element name="start" type="xsd:string"/>
+ </xsd:all>
+ </xsd:complexType>
+
+ <xsd:complexType name="billingInvoiceInfoPayementStruct">
+ <xsd:all>
+ <xsd:element name="finaldate" type="xsd:string"/>
+ <xsd:element name="deposit_date" type="xsd:string"/>
+ <xsd:element name="status" type="xsd:string"/>
+ <xsd:element name="customerid" type="xsd:string"/>
+ <xsd:element name="paymentmean" type="xsd:string"/>
+ <xsd:element name="paymentdate" type="xsd:string"/>
+ <xsd:element name="orderid" type="xsd:int"/>
+ </xsd:all>
+ </xsd:complexType>
+
+ <xsd:complexType name="billingGetReferencesToExpiredStruct">
+ <xsd:all>
+ <xsd:element name="name" type="xsd:string"/>
+ <xsd:element name="type" type="xsd:string"/>
+ <xsd:element name="expired" type="xsd:string"/>
+ </xsd:all>
+ </xsd:complexType>
+
+ <xsd:complexType name="billingInvoiceInfoReturn">
+ <xsd:all>
+ <xsd:element name="billnum" type="xsd:string"/>
+ <xsd:element name="date" type="xsd:string"/>
+ <xsd:element name="nicbilling" type="xsd:string"/>
+ <xsd:element name="baseprice" type="xsd:string"/>
+ <xsd:element name="finalprice" type="xsd:float"/>
+ <xsd:element name="password" type="xsd:string"/>
+ <xsd:element name="order" type="xsd:string"/>
+ <xsd:element name="nicorder" type="xsd:string"/>
+ <xsd:element name="country" type="xsd:string"/>
+ <xsd:element name="taxrate" type="xsd:float"/>
+ <xsd:element name="tax" type="xsd:float"/>
+ <xsd:element name="type" type="xsd:string"/>
+ <xsd:element name="details" type="typens:MyArrayOfBillingInvoiceInfoDetailStructType"/>
+ <xsd:element name="payment" type="typens:billingInvoiceInfoPayementStruct"/>
+ </xsd:all>
+ </xsd:complexType>
+
+ <xsd:complexType name="MyArrayOfBillingInvoiceStructType">
+ <xsd:complexContent>
+ <xsd:restriction base="soapenc:Array">
+ <xsd:attribute ref="soapenc:arrayType" wsdl:arrayType="typens:billingInvoiceStruct[]"/>
+ </xsd:restriction>
+ </xsd:complexContent>
+ </xsd:complexType>
+
+ <xsd:complexType name="MyArrayOfBillingGetReferencesToExpiredStructType">
+ <xsd:complexContent>
+ <xsd:restriction base="soapenc:Array">
+ <xsd:attribute ref="soapenc:arrayType" wsdl:arrayType="typens:billingGetReferencesToExpiredStruct[]"/>
+ </xsd:restriction>
+ </xsd:complexContent>
+ </xsd:complexType>
+
+ <xsd:complexType name="MyArrayOfBillingInvoiceDetailStructType">
+ <xsd:complexContent>
+ <xsd:restriction base="soapenc:Array">
+ <xsd:attribute ref="soapenc:arrayType" wsdl:arrayType="typens:billingInvoiceDetailStruct[]"/>
+ </xsd:restriction>
+ </xsd:complexContent>
+ </xsd:complexType>
+
+ <xsd:complexType name="MyArrayOfBillingInvoiceInfoDetailStructType">
+ <xsd:complexContent>
+ <xsd:restriction base="soapenc:Array">
+ <xsd:attribute ref="soapenc:arrayType" wsdl:arrayType="typens:billingInvoiceInfoDetailStruct[]"/>
+ </xsd:restriction>
+ </xsd:complexContent>
+ </xsd:complexType>
+
+ <xsd:complexType name="FailureType">
+ <xsd:all>
+ <xsd:element name="faultcode" type="xsd:int" />
+ <xsd:element name="faultstring" type="xsd:string" />
+ <xsd:element name="faultdetail" type="xsd:string" />
+ </xsd:all>
+ </xsd:complexType>
+
+ </xsd:schema>
+ </wsdl:types>
+
+ <wsdl:message name="mailingListModeratorDelRequest">
+ <wsdl:part name="session" type="xsd:string" />
+ <wsdl:part name="domain" type="xsd:string" />
+ <wsdl:part name="ml" type="xsd:string" />
+ <wsdl:part name="email" type="xsd:string" />
+ </wsdl:message>
+
+ <wsdl:message name="mailingListModeratorDelResponse" />
+
+ <wsdl:message name="telephonyNumberInfoRequest">
+ <wsdl:part name="session" type="xsd:string" />
+ <wsdl:part name="number" type="xsd:string" />
+ <wsdl:part name="country" type="xsd:string" />
+ </wsdl:message>
+
+ <wsdl:message name="telephonyNumberInfoResponse">
+ <wsdl:part name="return" type="xsd:string" />
+ </wsdl:message>
+
+ <wsdl:message name="sqlpriveMysqlRestartRequest">
+ <wsdl:part name="session" type="xsd:string" />
+ <wsdl:part name="server" type="xsd:string" />
+ </wsdl:message>
+
+ <wsdl:message name="sqlpriveMysqlRestartResponse">
+ <wsdl:part name="return" type="xsd:int" />
+ </wsdl:message>
+
+ <wsdl:message name="logoutRequest">
+ <wsdl:part name="session" type="xsd:string" />
+ </wsdl:message>
+
+ <wsdl:message name="logoutResponse" />
+
+ <wsdl:message name="multiFtpChangeDirectoryRequest">
+ <wsdl:part name="session" type="xsd:string" />
+ <wsdl:part name="domain" type="xsd:string" />
+ <wsdl:part name="login" type="xsd:string" />
+ <wsdl:part name="directory" type="xsd:string" />
+ </wsdl:message>
+
+ <wsdl:message name="multiFtpChangeDirectoryResponse" />
+
+ <wsdl:message name="sqlpriveMysqlVersionRequest">
+ <wsdl:part name="session" type="xsd:string" />
+ <wsdl:part name="server" type="xsd:string" />
+ <wsdl:part name="version" type="xsd:string" />
+ </wsdl:message>
+
+ <wsdl:message name="sqlpriveMysqlVersionResponse" />
+
+ <wsdl:message name="dedicatedReverseDelRequest">
+ <wsdl:part name="session" type="xsd:string" />
+ <wsdl:part name="hostname" type="xsd:string" />
+ <wsdl:part name="ip" type="xsd:string" />
+ </wsdl:message>
+
+ <wsdl:message name="dedicatedReverseDelResponse" />
+
+ <wsdl:message name="dedicatedDelServiceMonitoringAlertRequest">
+ <wsdl:part name="session" type="xsd:string" />
+ <wsdl:part name="ip" type="xsd:string" />
+ <wsdl:part name="port" type="xsd:int" />
+ <wsdl:part name="itemId" type="xsd:int" />
+ <wsdl:part name="media" type="xsd:string" />
+ <wsdl:part name="destination" type="xsd:string" />
+ </wsdl:message>
+
+ <wsdl:message name="dedicatedDelServiceMonitoringAlertResponse" />
+
+ <wsdl:message name="telephonyVoicemailOptionsListRequest">
+ <wsdl:part name="session" type="xsd:string" />
+ <wsdl:part name="number" type="xsd:string" />
+ <wsdl:part name="country" type="xsd:string" />
+ </wsdl:message>
+
+ <wsdl:message name="telephonyVoicemailOptionsListResponse">
+ <wsdl:part name="return" type="typens:telephonyVoicemailOptionsListReturn" />
+ </wsdl:message>
+
+ <wsdl:message name="telephonyPhonebookSharePeerListRequest">
+ <wsdl:part name="session" type="xsd:string" />
+ <wsdl:part name="number" type="xsd:string" />
+ <wsdl:part name="country" type="xsd:string" />
+ <wsdl:part name="id" type="xsd:int" />
+ </wsdl:message>
+
+ <wsdl:message name="telephonyPhonebookSharePeerListResponse">
+ <wsdl:part name="return" type="typens:MyArrayOfTelephonyPhonebookSharePeerStructType" />
+ </wsdl:message>
+
+ <wsdl:message name="serviceGroupGetAllInfoRequest">
+ <wsdl:part name="session" type="xsd:string" />
+ </wsdl:message>
+
+ <wsdl:message name="serviceGroupGetAllInfoResponse">
+ <wsdl:part name="return" type="typens:MyArrayOfServiceGroupStructType" />
+ </wsdl:message>
+
+ <wsdl:message name="redirectedEmailAddRequest">
+ <wsdl:part name="session" type="xsd:string" />
+ <wsdl:part name="domain" type="xsd:string" />
+ <wsdl:part name="redirected" type="xsd:string" />
+ <wsdl:part name="target" type="xsd:string" />
+ <wsdl:part name="subdomain" type="xsd:string" />
+ <wsdl:part name="localCopy" type="xsd:boolean" />
+ </wsdl:message>
+
+ <wsdl:message name="redirectedEmailAddResponse" />
+
+ <wsdl:message name="nicModifyInfosRequest">
+ <wsdl:part name="session" type="xsd:string" />
+ <wsdl:part name="name" type="xsd:string" />
+ <wsdl:part name="firstname" type="xsd:string" />
+ <wsdl:part name="legalform" type="xsd:string" />
+ <wsdl:part name="organisation" type="xsd:string" />
+ <wsdl:part name="address" type="xsd:string" />
+ <wsdl:part name="zip" type="xsd:string" />
+ <wsdl:part name="city" type="xsd:string" />
+ <wsdl:part name="country" type="xsd:string" />
+ <wsdl:part name="phone" type="xsd:string" />
+ <wsdl:part name="fax" type="xsd:string" />
+ <wsdl:part name="email" type="xsd:string" />
+ <wsdl:part name="spareEmail" type="xsd:string" />
+ <wsdl:part name="language" type="xsd:string" />
+ <wsdl:part name="vat" type="xsd:string" />
+ <wsdl:part name="area" type="xsd:string" />
+ </wsdl:message>
+
+ <wsdl:message name="nicModifyInfosResponse" />
+
+ <wsdl:message name="ripeGetRipeIdsRequest">
+ <wsdl:part name="session" type="xsd:string" />
+ </wsdl:message>
+
+ <wsdl:message name="ripeGetRipeIdsResponse">
+ <wsdl:part name="return" type="typens:MyArrayOfStringType" />
+ </wsdl:message>
+
+ <wsdl:message name="telephonyRedirectModifyRequest">
+ <wsdl:part name="session" type="xsd:string" />
+ <wsdl:part name="number" type="xsd:string" />
+ <wsdl:part name="country" type="xsd:string" />
+ <wsdl:part name="destination" type="xsd:string" />
+ </wsdl:message>
+
+ <wsdl:message name="telephonyRedirectModifyResponse" />
+
+ <wsdl:message name="sqlpriveMysqlDatabaseImportFromFileRequest">
+ <wsdl:part name="session" type="xsd:string" />
+ <wsdl:part name="server" type="xsd:string" />
+ <wsdl:part name="database" type="xsd:string" />
+ <wsdl:part name="filename" type="xsd:string" />
+ </wsdl:message>
+
+ <wsdl:message name="sqlpriveMysqlDatabaseImportFromFileResponse" />
+
+ <wsdl:message name="telephonyNumberModifyRequest">
+ <wsdl:part name="session" type="xsd:string" />
+ <wsdl:part name="number" type="xsd:string" />
+ <wsdl:part name="country" type="xsd:string" />
+ <wsdl:part name="billingAccount" type="xsd:string" />
+ <wsdl:part name="newType" type="xsd:string" />
+ </wsdl:message>
+
+ <wsdl:message name="telephonyNumberModifyResponse" />
+
+ <wsdl:message name="dedicatedAddServiceMonitoringAlertSMSRequest">
+ <wsdl:part name="session" type="xsd:string" />
+ <wsdl:part name="ip" type="xsd:string" />
+ <wsdl:part name="port" type="xsd:int" />
+ <wsdl:part name="itemId" type="xsd:int" />
+ <wsdl:part name="smsAccount" type="xsd:string" />
+ <wsdl:part name="phoneNumberTo" type="xsd:string" />
+ </wsdl:message>
+
+ <wsdl:message name="dedicatedAddServiceMonitoringAlertSMSResponse" />
+
+ <wsdl:message name="telephonyGetCitiesFromZipRequest">
+ <wsdl:part name="session" type="xsd:string" />
+ <wsdl:part name="country" type="xsd:string" />
+ <wsdl:part name="zip" type="xsd:string" />
+ </wsdl:message>
+
+ <wsdl:message name="telephonyGetCitiesFromZipResponse">
+ <wsdl:part name="return" type="typens:MyArrayOfTelephonyCitiesFromZipStructType" />
+ </wsdl:message>
+
+ <wsdl:message name="automatedMailGetVolumeHistoryRequest">
+ <wsdl:part name="session" type="xsd:string" />
+ <wsdl:part name="domain" type="xsd:string" />
+ </wsdl:message>
+
+ <wsdl:message name="automatedMailGetVolumeHistoryResponse">
+ <wsdl:part name="return" type="typens:MyArrayOfAutomatedMailGetVolumeHistoryStructType" />
+ </wsdl:message>
+
+ <wsdl:message name="automatedMailGetTodoRequest">
+ <wsdl:part name="session" type="xsd:string" />
+ <wsdl:part name="domain" type="xsd:string" />
+ </wsdl:message>
+
+ <wsdl:message name="automatedMailGetTodoResponse" />
+
+ <wsdl:message name="telephonySmsplusSendSmsMtRequest">
+ <wsdl:part name="session" type="xsd:string" />
+ <wsdl:part name="shortCode" type="xsd:string" />
+ <wsdl:part name="keyword" type="xsd:string" />
+ <wsdl:part name="message" type="xsd:string" />
+ <wsdl:part name="idsList" type="typens:MyArrayOfIntType" />
+ </wsdl:message>
+
+ <wsdl:message name="telephonySmsplusSendSmsMtResponse" />
+
+ <wsdl:message name="dedicatedIpLoadBalancingListRequest">
+ <wsdl:part name="session" type="xsd:string" />
+ </wsdl:message>
+
+ <wsdl:message name="dedicatedIpLoadBalancingListResponse">
+ <wsdl:part name="return" type="typens:MyArrayOfDedicatedIpLoadBalancingStructType" />
+ </wsdl:message>
+
+ <wsdl:message name="dedicatedBackupReinstallConfigurationRequest">
+ <wsdl:part name="session" type="xsd:string" />
+ <wsdl:part name="hostname" type="xsd:string" />
+ </wsdl:message>
+
+ <wsdl:message name="dedicatedBackupReinstallConfigurationResponse" />
+
+ <wsdl:message name="telephonySmsUserGetCsvAttachmentRequest">
+ <wsdl:part name="smsAccount" type="xsd:string" />
+ <wsdl:part name="login" type="xsd:string" />
+ <wsdl:part name="password" type="xsd:string" />
+ <wsdl:part name="id" type="xsd:string" />
+ </wsdl:message>
+
+ <wsdl:message name="telephonySmsUserGetCsvAttachmentResponse">
+ <wsdl:part name="return" type="xsd:string" />
+ </wsdl:message>
+
+ <wsdl:message name="dedicatedBackupGetHistoRequest">
+ <wsdl:part name="session" type="xsd:string" />
+ <wsdl:part name="hostname" type="xsd:string" />
+ <wsdl:part name="backupId" type="xsd:string" />
+ </wsdl:message>
+
+ <wsdl:message name="dedicatedBackupGetHistoResponse">
+ <wsdl:part name="return" type="typens:MyArrayOfDedicatedBackupHistoStructType" />
+ </wsdl:message>
+
+ <wsdl:message name="domainHostUpdateRequest">
+ <wsdl:part name="session" type="xsd:string" />
+ <wsdl:part name="domain" type="xsd:string" />
+ <wsdl:part name="host" type="xsd:string" />
+ <wsdl:part name="ip" type="xsd:string" />
+ </wsdl:message>
+
+ <wsdl:message name="domainHostUpdateResponse">
+ <wsdl:part name="return" type="xsd:int" />
+ </wsdl:message>
+
+ <wsdl:message name="dedicatedBackupUpdateRequest">
+ <wsdl:part name="session" type="xsd:string" />
+ <wsdl:part name="hostname" type="xsd:string" />
+ <wsdl:part name="backupId" type="xsd:string" />
+ <wsdl:part name="email" type="xsd:string" />
+ <wsdl:part name="snapshot" type="xsd:int" />
+ <wsdl:part name="sshPort" type="xsd:int" />
+ <wsdl:part name="status" type="xsd:int" />
+ <wsdl:part name="language" type="xsd:string" />
+ <wsdl:part name="src" type="xsd:string" />
+ </wsdl:message>
+
+ <wsdl:message name="dedicatedBackupUpdateResponse" />
+
+ <wsdl:message name="telephonyPhonebookOnSmsListRequest">
+ <wsdl:part name="session" type="xsd:string" />
+ <wsdl:part name="smsAccount" type="xsd:string" />
+ </wsdl:message>
+
+ <wsdl:message name="telephonyPhonebookOnSmsListResponse">
+ <wsdl:part name="return" type="typens:MyArrayOfTelephonyPhonebookStructType" />
+ </wsdl:message>
+
+ <wsdl:message name="serviceGroupListRequest">
+ <wsdl:part name="session" type="xsd:string" />
+ </wsdl:message>
+
+ <wsdl:message name="serviceGroupListResponse">
+ <wsdl:part name="return" type="typens:MyArrayOfServiceGroupStructType" />
+ </wsdl:message>
+
+ <wsdl:message name="databaseChangePasswordRequest">
+ <wsdl:part name="session" type="xsd:string" />
+ <wsdl:part name="domain" type="xsd:string" />
+ <wsdl:part name="db" type="xsd:string" />
+ <wsdl:part name="password" type="xsd:string" />
+ </wsdl:message>
+
+ <wsdl:message name="databaseChangePasswordResponse" />
+
+ <wsdl:message name="billingInvoiceListRequest">
+ <wsdl:part name="session" type="xsd:string" />
+ </wsdl:message>
+
+ <wsdl:message name="billingInvoiceListResponse">
+ <wsdl:part name="return" type="typens:MyArrayOfBillingInvoiceStructType" />
+ </wsdl:message>
+
+ <wsdl:message name="telephonySetClosureEventsRequest">
+ <wsdl:part name="session" type="xsd:string" />
+ <wsdl:part name="number" type="xsd:string" />
+ <wsdl:part name="country" type="xsd:string" />
+ <wsdl:part name="events" type="xsd:string" />
+ </wsdl:message>
+
+ <wsdl:message name="telephonySetClosureEventsResponse" />
+
+ <wsdl:message name="telephonyNicSetSipDomainRequest">
+ <wsdl:part name="session" type="xsd:string" />
+ <wsdl:part name="fr" type="xsd:string" />
+ <wsdl:part name="de" type="xsd:string" />
+ <wsdl:part name="es" type="xsd:string" />
+ <wsdl:part name="uk" type="xsd:string" />
+ <wsdl:part name="be" type="xsd:string" />
+ </wsdl:message>
+
+ <wsdl:message name="telephonyNicSetSipDomainResponse" />
+
+ <wsdl:message name="globalAccessByNicRequest">
+ <wsdl:part name="session" type="xsd:string" />
+ </wsdl:message>
+
+ <wsdl:message name="globalAccessByNicResponse">
+ <wsdl:part name="return" type="typens:MyArrayOfGlobalAccessStructType" />
+ </wsdl:message>
+
+ <wsdl:message name="dedicatedNetbootGetRescueEmailRequest">
+ <wsdl:part name="session" type="xsd:string" />
+ <wsdl:part name="hostname" type="xsd:string" />
+ </wsdl:message>
+
+ <wsdl:message name="dedicatedNetbootGetRescueEmailResponse">
+ <wsdl:part name="return" type="xsd:string" />
+ </wsdl:message>
+
+ <wsdl:message name="ticketListIncidentsByDomainRequest">
+ <wsdl:part name="session" type="xsd:string" />
+ <wsdl:part name="domain" type="xsd:string" />
+ </wsdl:message>
+
+ <wsdl:message name="ticketListIncidentsByDomainResponse">
+ <wsdl:part name="return" type="typens:MyArrayOfTicketStructType" />
+ </wsdl:message>
+
+ <wsdl:message name="telephonySmsMultiSendRequest">
+ <wsdl:part name="session" type="xsd:string" />
+ <wsdl:part name="smsAccount" type="xsd:string" />
+ <wsdl:part name="numberFrom" type="xsd:string" />
+ <wsdl:part name="numberTo" type="typens:MyArrayOfStringType" />
+ <wsdl:part name="message" type="xsd:string" />
+ <wsdl:part name="smsValidity" type="xsd:int" />
+ <wsdl:part name="smsClass" type="xsd:int" />
+ <wsdl:part name="smsDeferred" type="xsd:int" />
+ <wsdl:part name="smsPriority" type="xsd:int" />
+ <wsdl:part name="smsCoding" type="xsd:int" />
+ <wsdl:part name="tag" type="xsd:string" />
+ <wsdl:part name="numberToCsv" type="xsd:string" />
+ <wsdl:part name="noStop" type="xsd:boolean" />
+ </wsdl:message>
+
+ <wsdl:message name="telephonySmsMultiSendResponse">
+ <wsdl:part name="return" type="typens:MyArrayOfIntType" />
+ </wsdl:message>
+
+ <wsdl:message name="serviceListPaginatedRequest">
+ <wsdl:part name="session" type="xsd:string" />
+ <wsdl:part name="start" type="xsd:int" />
+ <wsdl:part name="limit" type="xsd:int" />
+ <wsdl:part name="domain" type="xsd:string" />
+ <wsdl:part name="component" type="xsd:string" />
+ <wsdl:part name="group" type="xsd:string" />
+ </wsdl:message>
+
+ <wsdl:message name="serviceListPaginatedResponse">
+ <wsdl:part name="return" type="typens:serviceListPaginatedStruct" />
+ </wsdl:message>
+
+ <wsdl:message name="dedicatedRtmListBackdoorRequest">
+ <wsdl:part name="session" type="xsd:string" />
+ <wsdl:part name="hostname" type="xsd:string" />
+ </wsdl:message>
+
+ <wsdl:message name="dedicatedRtmListBackdoorResponse">
+ <wsdl:part name="return" type="typens:MyArrayOfDedicatedRtmListBackdoorStructType" />
+ </wsdl:message>
+
+ <wsdl:message name="telephonySmsUserAddCsvAttachmentRequest">
+ <wsdl:part name="smsAccount" type="xsd:string" />
+ <wsdl:part name="login" type="xsd:string" />
+ <wsdl:part name="password" type="xsd:string" />
+ <wsdl:part name="csvUrl" type="xsd:string" />
+ <wsdl:part name="id" type="xsd:string" />
+ <wsdl:part name="name" type="xsd:string" />
+ </wsdl:message>
+
+ <wsdl:message name="telephonySmsUserAddCsvAttachmentResponse">
+ <wsdl:part name="return" type="typens:telephonySmsCsvSlotStruct" />
+ </wsdl:message>
+
+ <wsdl:message name="zoneEntryListRequest">
+ <wsdl:part name="session" type="xsd:string" />
+ <wsdl:part name="domain" type="xsd:string" />
+ </wsdl:message>
+
+ <wsdl:message name="zoneEntryListResponse">
+ <wsdl:part name="return" type="typens:MyArrayOfZoneStructType" />
+ </wsdl:message>
+
+ <wsdl:message name="telephonySpareDelRequest">
+ <wsdl:part name="session" type="xsd:string" />
+ <wsdl:part name="type" type="xsd:string" />
+ <wsdl:part name="spare" type="xsd:string" />
+ </wsdl:message>
+
+ <wsdl:message name="telephonySpareDelResponse" />
+
+ <wsdl:message name="dnsDefaultInstallCustomRequest">
+ <wsdl:part name="session" type="xsd:string" />
+ <wsdl:part name="domain" type="xsd:string" />
+ <wsdl:part name="subdomain" type="xsd:string" />
+ <wsdl:part name="hostingtype" type="xsd:string" />
+ <wsdl:part name="hosting" type="xsd:string" />
+ <wsdl:part name="mxtype" type="xsd:string" />
+ <wsdl:part name="mx" type="xsd:string" />
+ <wsdl:part name="country" type="xsd:string" />
+ <wsdl:part name="minimized" type="xsd:boolean" />
+ </wsdl:message>
+
+ <wsdl:message name="dnsDefaultInstallCustomResponse" />
+
+ <wsdl:message name="telephonyFaxHistoryRequest">
+ <wsdl:part name="session" type="xsd:string" />
+ <wsdl:part name="number" type="xsd:string" />
+ <wsdl:part name="country" type="xsd:string" />
+ <wsdl:part name="state" type="xsd:string" />
+ </wsdl:message>
+
+ <wsdl:message name="telephonyFaxHistoryResponse">
+ <wsdl:part name="return" type="typens:MyArrayOfTelephonyFaxHistoryStructType" />
+ </wsdl:message>
+
+ <wsdl:message name="multiFtpChangePasswordRequest">
+ <wsdl:part name="session" type="xsd:string" />
+ <wsdl:part name="domain" type="xsd:string" />
+ <wsdl:part name="login" type="xsd:string" />
+ <wsdl:part name="password" type="xsd:string" />
+ </wsdl:message>
+
+ <wsdl:message name="multiFtpChangePasswordResponse" />
+
+ <wsdl:message name="telephonyFreefaxToVoicefaxRequest">
+ <wsdl:part name="session" type="xsd:string" />
+ <wsdl:part name="billingAccount" type="xsd:string" />
+ <wsdl:part name="number" type="xsd:string" />
+ <wsdl:part name="country" type="xsd:string" />
+ </wsdl:message>
+
+ <wsdl:message name="telephonyFreefaxToVoicefaxResponse">
+ <wsdl:part name="return" type="typens:orderStruct" />
+ </wsdl:message>
+
+ <wsdl:message name="sqlpriveMysqlUserListRequest">
+ <wsdl:part name="session" type="xsd:string" />
+ <wsdl:part name="server" type="xsd:string" />
+ </wsdl:message>
+
+ <wsdl:message name="sqlpriveMysqlUserListResponse">
+ <wsdl:part name="return" type="typens:MyArrayOfStringType" />
+ </wsdl:message>
+
+ <wsdl:message name="telephonyFaxSendRequest">
+ <wsdl:part name="session" type="xsd:string" />
+ <wsdl:part name="number" type="xsd:string" />
+ <wsdl:part name="country" type="xsd:string" />
+ <wsdl:part name="pdfUrl" type="xsd:string" />
+ <wsdl:part name="recipients" type="typens:MyArrayOfStringType" />
+ <wsdl:part name="quality" type="xsd:string" />
+ <wsdl:part name="email" type="xsd:string" />
+ <wsdl:part name="referer" type="xsd:string" />
+ </wsdl:message>
+
+ <wsdl:message name="telephonyFaxSendResponse" />
+
+ <wsdl:message name="domainUnlockRequest">
+ <wsdl:part name="session" type="xsd:string" />
+ <wsdl:part name="domain" type="xsd:string" />
+ </wsdl:message>
+
+ <wsdl:message name="domainUnlockResponse" />
+
+ <wsdl:message name="telephonyRestrictionListRequest">
+ <wsdl:part name="session" type="xsd:string" />
+ <wsdl:part name="number" type="xsd:string" />
+ <wsdl:part name="country" type="xsd:string" />
+ </wsdl:message>
+
+ <wsdl:message name="telephonyRestrictionListResponse">
+ <wsdl:part name="return" type="typens:MyArrayOfStringType" />
+ </wsdl:message>
+
+ <wsdl:message name="domainWhoisObfuscatorSetAllRequest">
+ <wsdl:part name="session" type="xsd:string" />
+ </wsdl:message>
+
+ <wsdl:message name="domainWhoisObfuscatorSetAllResponse" />
+
+ <wsdl:message name="popDetachMasterNicRequest">
+ <wsdl:part name="session" type="xsd:string" />
+ <wsdl:part name="domain" type="xsd:string" />
+ <wsdl:part name="pop" type="xsd:string" />
+ </wsdl:message>
+
+ <wsdl:message name="popDetachMasterNicResponse" />
+
+ <wsdl:message name="telephonyBillListRequest">
+ <wsdl:part name="session" type="xsd:string" />
+ <wsdl:part name="billingAccount" type="xsd:string" />
+ <wsdl:part name="date" type="xsd:string" />
+ </wsdl:message>
+
+ <wsdl:message name="telephonyBillListResponse">
+ <wsdl:part name="return" type="typens:MyArrayOfTelephonyBillStructType" />
+ </wsdl:message>
+
+ <wsdl:message name="telephonyNumberCustomListRequest">
+ <wsdl:part name="session" type="xsd:string" />
+ <wsdl:part name="country" type="xsd:string" />
+ <wsdl:part name="prefix" type="xsd:string" />
+ </wsdl:message>
+
+ <wsdl:message name="telephonyNumberCustomListResponse">
+ <wsdl:part name="return" type="typens:telephonySpecialNumberCustomListReturn" />
+ </wsdl:message>
+
+ <wsdl:message name="dedicatedMonitoringNotificationCreateRequest">
+ <wsdl:part name="session" type="xsd:string" />
+ <wsdl:part name="hostname" type="xsd:string" />
+ <wsdl:part name="nicAlert" type="xsd:string" />
+ <wsdl:part name="language" type="xsd:string" />
+ <wsdl:part name="status" type="xsd:string" />
+ </wsdl:message>
+
+ <wsdl:message name="dedicatedMonitoringNotificationCreateResponse">
+ <wsdl:part name="return" type="xsd:string" />
+ </wsdl:message>
+
+ <wsdl:message name="telephonyPlugAndPhoneSkinModifyRequest">
+ <wsdl:part name="session" type="xsd:string" />
+ <wsdl:part name="number" type="xsd:string" />
+ <wsdl:part name="country" type="xsd:string" />
+ <wsdl:part name="skin" type="xsd:string" />
+ </wsdl:message>
+
+ <wsdl:message name="telephonyPlugAndPhoneSkinModifyResponse" />
+
+ <wsdl:message name="domainListRequest">
+ <wsdl:part name="session" type="xsd:string" />
+ </wsdl:message>
+
+ <wsdl:message name="domainListResponse">
+ <wsdl:part name="return" type="typens:MyArrayOfStringType" />
+ </wsdl:message>
+
+ <wsdl:message name="telephonyFaxOptionsModifyRequest">
+ <wsdl:part name="session" type="xsd:string" />
+ <wsdl:part name="number" type="xsd:string" />
+ <wsdl:part name="country" type="xsd:string" />
+ <wsdl:part name="fromName" type="xsd:string" />
+ <wsdl:part name="fromEmail" type="xsd:string" />
+ <wsdl:part name="faxQuality" type="xsd:string" />
+ <wsdl:part name="faxTagLine" type="xsd:string" />
+ <wsdl:part name="faxMaxCall" type="xsd:int" />
+ <wsdl:part name="receivId" type="xsd:string" />
+ <wsdl:part name="senderId" type="xsd:string" />
+ <wsdl:part name="redirection1Email" type="xsd:string" />
+ <wsdl:part name="redirection2Email" type="xsd:string" />
+ <wsdl:part name="redirection3Email" type="xsd:string" />
+ <wsdl:part name="redirection4Email" type="xsd:string" />
+ <wsdl:part name="redirection5Email" type="xsd:string" />
+ </wsdl:message>
+
+ <wsdl:message name="telephonyFaxOptionsModifyResponse" />
+
+ <wsdl:message name="telephonyBillingAccountSummaryRequest">
+ <wsdl:part name="session" type="xsd:string" />
+ <wsdl:part name="billingAccount" type="xsd:string" />
+ </wsdl:message>
+
+ <wsdl:message name="telephonyBillingAccountSummaryResponse">
+ <wsdl:part name="return" type="typens:telephonyBillingAccountSummaryReturn" />
+ </wsdl:message>
+
+ <wsdl:message name="overquotaInfoRequest">
+ <wsdl:part name="session" type="xsd:string" />
+ <wsdl:part name="domain" type="xsd:string" />
+ </wsdl:message>
+
+ <wsdl:message name="overquotaInfoResponse">
+ <wsdl:part name="return" type="typens:overquotaInfoReturn" />
+ </wsdl:message>
+
+ <wsdl:message name="telephonyConferenceSetAnnounceFileRequest">
+ <wsdl:part name="session" type="xsd:string" />
+ <wsdl:part name="number" type="xsd:string" />
+ <wsdl:part name="country" type="xsd:string" />
+ <wsdl:part name="filename" type="xsd:string" />
+ <wsdl:part name="filedata" type="xsd:string" />
+ <wsdl:part name="md5sum" type="xsd:string" />
+ </wsdl:message>
+
+ <wsdl:message name="telephonyConferenceSetAnnounceFileResponse" />
+
+ <wsdl:message name="automatedMailGetErrorsRequest">
+ <wsdl:part name="session" type="xsd:string" />
+ <wsdl:part name="domain" type="xsd:string" />
+ <wsdl:part name="deep" type="xsd:int" />
+ <wsdl:part name="limit" type="xsd:int" />
+ </wsdl:message>
+
+ <wsdl:message name="automatedMailGetErrorsResponse">
+ <wsdl:part name="return" type="typens:MyArrayOfAutomatedMailGetErrorsStructType" />
+ </wsdl:message>
+
+ <wsdl:message name="telephonyPhonebookOnSmsAddRequest">
+ <wsdl:part name="session" type="xsd:string" />
+ <wsdl:part name="smsAccount" type="xsd:string" />
+ <wsdl:part name="name" type="xsd:string" />
+ </wsdl:message>
+
+ <wsdl:message name="telephonyPhonebookOnSmsAddResponse">
+ <wsdl:part name="return" type="xsd:int" />
+ </wsdl:message>
+
+ <wsdl:message name="telephonyClick2CallUserDelRequest">
+ <wsdl:part name="session" type="xsd:string" />
+ <wsdl:part name="number" type="xsd:string" />
+ <wsdl:part name="country" type="xsd:string" />
+ <wsdl:part name="login" type="xsd:string" />
+ </wsdl:message>
+
+ <wsdl:message name="telephonyClick2CallUserDelResponse" />
+
+ <wsdl:message name="emailGetCapabilitiesRequest">
+ <wsdl:part name="session" type="xsd:string" />
+ <wsdl:part name="domain" type="xsd:string" />
+ </wsdl:message>
+
+ <wsdl:message name="emailGetCapabilitiesResponse">
+ <wsdl:part name="return" type="typens:emailGetCapabilitiesReturn" />
+ </wsdl:message>
+
+ <wsdl:message name="telephonySmsAccountListRequest">
+ <wsdl:part name="session" type="xsd:string" />
+ </wsdl:message>
+
+ <wsdl:message name="telephonySmsAccountListResponse">
+ <wsdl:part name="return" type="typens:MyArrayOfStringType" />
+ </wsdl:message>
+
+ <wsdl:message name="telephonyBillingAccountConsumptionCSVByMailRequest">
+ <wsdl:part name="session" type="xsd:string" />
+ <wsdl:part name="billingAccount" type="xsd:string" />
+ <wsdl:part name="date" type="xsd:string" />
+ </wsdl:message>
+
+ <wsdl:message name="telephonyBillingAccountConsumptionCSVByMailResponse" />
+
+ <wsdl:message name="telephonyFMHuntingModificationVoicemailRequest">
+ <wsdl:part name="session" type="xsd:string" />
+ <wsdl:part name="number" type="xsd:string" />
+ <wsdl:part name="country" type="xsd:string" />
+ <wsdl:part name="billingAccount" type="xsd:string" />
+ <wsdl:part name="noReplyTimer" type="xsd:int" />
+ <wsdl:part name="mainVoicemail" type="xsd:string" />
+ </wsdl:message>
+
+ <wsdl:message name="telephonyFMHuntingModificationVoicemailResponse" />
+
+ <wsdl:message name="dedicatedBackupListRequest">
+ <wsdl:part name="session" type="xsd:string" />
+ <wsdl:part name="hostname" type="xsd:string" />
+ <wsdl:part name="backupId" type="xsd:string" />
+ <wsdl:part name="backupName" type="xsd:string" />
+ </wsdl:message>
+
+ <wsdl:message name="dedicatedBackupListResponse">
+ <wsdl:part name="return" type="typens:MyArrayOfDedicatedBackupListStructType" />
+ </wsdl:message>
+
+ <wsdl:message name="telephonyOrdersFollowingUpRequest">
+ <wsdl:part name="session" type="xsd:string" />
+ <wsdl:part name="isOrderDone" type="xsd:boolean" />
+ </wsdl:message>
+
+ <wsdl:message name="telephonyOrdersFollowingUpResponse">
+ <wsdl:part name="return" type="typens:MyArrayOfOrderFollowingUpStructType" />
+ </wsdl:message>
+
+ <wsdl:message name="telephonyPhonebookOnGroupContactAddRequest">
+ <wsdl:part name="session" type="xsd:string" />
+ <wsdl:part name="group" type="xsd:string" />
+ <wsdl:part name="id" type="xsd:int" />
+ <wsdl:part name="name" type="xsd:string" />
+ <wsdl:part name="surname" type="xsd:string" />
+ <wsdl:part name="workPhone" type="xsd:string" />
+ <wsdl:part name="workMobile" type="xsd:string" />
+ <wsdl:part name="homePhone" type="xsd:string" />
+ <wsdl:part name="homeMobile" type="xsd:string" />
+ <wsdl:part name="groupName" type="xsd:string" />
+ </wsdl:message>
+
+ <wsdl:message name="telephonyPhonebookOnGroupContactAddResponse">
+ <wsdl:part name="return" type="xsd:int" />
+ </wsdl:message>
+
+ <wsdl:message name="ortDomainDelRequest">
+ <wsdl:part name="session" type="xsd:string" />
+ <wsdl:part name="domain" type="xsd:string" />
+ <wsdl:part name="subdomain" type="xsd:string" />
+ <wsdl:part name="target" type="xsd:string" />
+ </wsdl:message>
+
+ <wsdl:message name="ortDomainDelResponse" />
+
+ <wsdl:message name="mailingListModeratorListRequest">
+ <wsdl:part name="session" type="xsd:string" />
+ <wsdl:part name="domain" type="xsd:string" />
+ <wsdl:part name="ml" type="xsd:string" />
+ </wsdl:message>
+
+ <wsdl:message name="mailingListModeratorListResponse">
+ <wsdl:part name="return" type="typens:MyArrayOfStringType" />
+ </wsdl:message>
+
+ <wsdl:message name="telephonyBillDetailsCSVRequest">
+ <wsdl:part name="session" type="xsd:string" />
+ <wsdl:part name="billingAccount" type="xsd:string" />
+ <wsdl:part name="date" type="xsd:string" />
+ <wsdl:part name="received" type="xsd:boolean" />
+ </wsdl:message>
+
+ <wsdl:message name="telephonyBillDetailsCSVResponse">
+ <wsdl:part name="return" type="xsd:string" />
+ </wsdl:message>
+
+ <wsdl:message name="popListRequest">
+ <wsdl:part name="session" type="xsd:string" />
+ <wsdl:part name="domain" type="xsd:string" />
+ </wsdl:message>
+
+ <wsdl:message name="popListResponse">
+ <wsdl:part name="return" type="typens:MyArrayOfPopStructType" />
+ </wsdl:message>
+
+ <wsdl:message name="sqlpriveMysqlRamUsedRequest">
+ <wsdl:part name="session" type="xsd:string" />
+ <wsdl:part name="server" type="xsd:string" />
+ </wsdl:message>
+
+ <wsdl:message name="sqlpriveMysqlRamUsedResponse">
+ <wsdl:part name="return" type="xsd:string" />
+ </wsdl:message>
+
+ <wsdl:message name="telephonySmsCreditLeftRequest">
+ <wsdl:part name="session" type="xsd:string" />
+ <wsdl:part name="smsAccount" type="xsd:string" />
+ </wsdl:message>
+
+ <wsdl:message name="telephonySmsCreditLeftResponse">
+ <wsdl:part name="return" type="xsd:string" />
+ </wsdl:message>
+
+ <wsdl:message name="prepaidDomainCreateRequest">
+ <wsdl:part name="session" type="xsd:string" />
+ <wsdl:part name="domain" type="xsd:string" />
+ <wsdl:part name="nicowner" type="xsd:string" />
+ <wsdl:part name="nicadmin" type="xsd:string" />
+ <wsdl:part name="nictech" type="xsd:string" />
+ <wsdl:part name="nicbilling" type="xsd:string" />
+ <wsdl:part name="dns1" type="xsd:string" />
+ <wsdl:part name="dns2" type="xsd:string" />
+ <wsdl:part name="dns3" type="xsd:string" />
+ <wsdl:part name="dns4" type="xsd:string" />
+ <wsdl:part name="dns5" type="xsd:string" />
+ <wsdl:part name="frpartBirthday" type="xsd:string" />
+ <wsdl:part name="frpartBirthCountry" type="xsd:string" />
+ <wsdl:part name="frpartBirthDepartment" type="xsd:string" />
+ <wsdl:part name="frpartBirthTown" type="xsd:string" />
+ <wsdl:part name="dryRun" type="xsd:boolean" />
+ </wsdl:message>
+
+ <wsdl:message name="prepaidDomainCreateResponse" />
+
+ <wsdl:message name="telephonyDirectoryPJCodeRequest">
+ <wsdl:part name="session" type="xsd:string" />
+ <wsdl:part name="ape" type="xsd:string" />
+ <wsdl:part name="PJCode" type="xsd:string" />
+ <wsdl:part name="showOnlyAssociatedWithAPE" type="xsd:boolean" />
+ </wsdl:message>
+
+ <wsdl:message name="telephonyDirectoryPJCodeResponse">
+ <wsdl:part name="return" type="typens:MyArrayOfTelephonyDirectoryPJHeadingStructType" />
+ </wsdl:message>
+
+ <wsdl:message name="telephonyListSummationCallsFromBillingAccountRequest">
+ <wsdl:part name="session" type="xsd:string" />
+ <wsdl:part name="billingAccount" type="xsd:string" />
+ <wsdl:part name="reversableDelay" type="xsd:string" />
+ </wsdl:message>
+
+ <wsdl:message name="telephonyListSummationCallsFromBillingAccountResponse">
+ <wsdl:part name="return" type="typens:MyArrayOfTelephonyReversmentsSummationNumbersStructType" />
+ </wsdl:message>
+
+ <wsdl:message name="rpsMigrationGetProgressStatusRequest">
+ <wsdl:part name="session" type="xsd:string" />
+ <wsdl:part name="hostname" type="xsd:string" />
+ </wsdl:message>
+
+ <wsdl:message name="rpsMigrationGetProgressStatusResponse">
+ <wsdl:part name="return" type="typens:rpsMigrationGetProgressStatusReturn" />
+ </wsdl:message>
+
+ <wsdl:message name="telephonyBillingAccountDescriptionModifyRequest">
+ <wsdl:part name="session" type="xsd:string" />
+ <wsdl:part name="billingAccount" type="xsd:string" />
+ <wsdl:part name="description" type="xsd:string" />
+ </wsdl:message>
+
+ <wsdl:message name="telephonyBillingAccountDescriptionModifyResponse" />
+
+ <wsdl:message name="dedicatedNetbootGetAllRequest">
+ <wsdl:part name="session" type="xsd:string" />
+ <wsdl:part name="hostname" type="xsd:string" />
+ </wsdl:message>
+
+ <wsdl:message name="dedicatedNetbootGetAllResponse">
+ <wsdl:part name="return" type="typens:MyArrayOfDedicatedNetbootStructType" />
+ </wsdl:message>
+
+ <wsdl:message name="emailDomainListByMasterNicRequest">
+ <wsdl:part name="session" type="xsd:string" />
+ </wsdl:message>
+
+ <wsdl:message name="emailDomainListByMasterNicResponse">
+ <wsdl:part name="return" type="typens:MyArrayOfStringType" />
+ </wsdl:message>
+
+ <wsdl:message name="telephonyAbbreviatedNumberDelRequest">
+ <wsdl:part name="session" type="xsd:string" />
+ <wsdl:part name="number" type="xsd:string" />
+ <wsdl:part name="country" type="xsd:string" />
+ <wsdl:part name="abbreviatedNumber" type="xsd:string" />
+ </wsdl:message>
+
+ <wsdl:message name="telephonyAbbreviatedNumberDelResponse" />
+
+ <wsdl:message name="resellerDomainTransferITRequest">
+ <wsdl:part name="session" type="xsd:string" />
+ <wsdl:part name="domain" type="xsd:string" />
+ <wsdl:part name="authinfo" type="xsd:string" />
+ <wsdl:part name="hosting" type="xsd:string" />
+ <wsdl:part name="offer" type="xsd:string" />
+ <wsdl:part name="profile" type="xsd:string" />
+ <wsdl:part name="owo" type="xsd:string" />
+ <wsdl:part name="owner" type="xsd:string" />
+ <wsdl:part name="admin" type="xsd:string" />
+ <wsdl:part name="tech" type="xsd:string" />
+ <wsdl:part name="billing" type="xsd:string" />
+ <wsdl:part name="dns1" type="xsd:string" />
+ <wsdl:part name="dns2" type="xsd:string" />
+ <wsdl:part name="dns3" type="xsd:string" />
+ <wsdl:part name="dns4" type="xsd:string" />
+ <wsdl:part name="dns5" type="xsd:string" />
+ <wsdl:part name="legalRepresentantFirstName" type="xsd:string" />
+ <wsdl:part name="legalRepresentantLastName" type="xsd:string" />
+ <wsdl:part name="legalNumber" type="xsd:string" />
+ <wsdl:part name="vat" type="xsd:string" />
+ <wsdl:part name="birthDate" type="xsd:string" />
+ <wsdl:part name="birthCity" type="xsd:string" />
+ <wsdl:part name="birthDepartement" type="xsd:string" />
+ <wsdl:part name="birthCountry" type="xsd:string" />
+ <wsdl:part name="nationality" type="xsd:string" />
+ <wsdl:part name="dryRun" type="xsd:boolean" />
+ </wsdl:message>
+
+ <wsdl:message name="resellerDomainTransferITResponse" />
+
+ <wsdl:message name="dedicatedVirtualMacIpAvailableGetListRequest">
+ <wsdl:part name="session" type="xsd:string" />
+ <wsdl:part name="hostname" type="xsd:string" />
+ </wsdl:message>
+
+ <wsdl:message name="dedicatedVirtualMacIpAvailableGetListResponse">
+ <wsdl:part name="return" type="typens:dedicatedIpVirtualMacAvailableReturn" />
+ </wsdl:message>
+
+ <wsdl:message name="telephonyFaxOptionsListRequest">
+ <wsdl:part name="session" type="xsd:string" />
+ <wsdl:part name="number" type="xsd:string" />
+ <wsdl:part name="country" type="xsd:string" />
+ </wsdl:message>
+
+ <wsdl:message name="telephonyFaxOptionsListResponse">
+ <wsdl:part name="return" type="typens:telephonyFaxOptionsListReturn" />
+ </wsdl:message>
+
+ <wsdl:message name="ticketListIncidentsRequest">
+ <wsdl:part name="session" type="xsd:string" />
+ <wsdl:part name="status" type="xsd:string" />
+ </wsdl:message>
+
+ <wsdl:message name="ticketListIncidentsResponse">
+ <wsdl:part name="return" type="typens:MyArrayOfTicketStructType" />
+ </wsdl:message>
+
+ <wsdl:message name="infrastructureReverseModifyRequest">
+ <wsdl:part name="session" type="xsd:string" />
+ <wsdl:part name="hostname" type="xsd:string" />
+ <wsdl:part name="ip" type="xsd:string" />
+ <wsdl:part name="reverse" type="xsd:string" />
+ </wsdl:message>
+
+ <wsdl:message name="infrastructureReverseModifyResponse" />
+
+ <wsdl:message name="dedicatedMonitoringSMSCreateRequest">
+ <wsdl:part name="session" type="xsd:string" />
+ <wsdl:part name="hostname" type="xsd:string" />
+ <wsdl:part name="smsAccount" type="xsd:string" />
+ <wsdl:part name="phoneNumberTo" type="xsd:string" />
+ <wsdl:part name="language" type="xsd:string" />
+ <wsdl:part name="status" type="xsd:string" />
+ </wsdl:message>
+
+ <wsdl:message name="dedicatedMonitoringSMSCreateResponse">
+ <wsdl:part name="return" type="xsd:string" />
+ </wsdl:message>
+
+ <wsdl:message name="telephonyTrunkExternalDisplayedNumberAddRequest">
+ <wsdl:part name="session" type="xsd:string" />
+ <wsdl:part name="number" type="xsd:string" />
+ <wsdl:part name="country" type="xsd:string" />
+ <wsdl:part name="externalDisplayedNumber" type="xsd:string" />
+ <wsdl:part name="whiteLabel" type="xsd:boolean" />
+ </wsdl:message>
+
+ <wsdl:message name="telephonyTrunkExternalDisplayedNumberAddResponse">
+ <wsdl:part name="return" type="xsd:string" />
+ </wsdl:message>
+
+ <wsdl:message name="dedicatedRipeQueryRequest">
+ <wsdl:part name="session" type="xsd:string" />
+ <wsdl:part name="search" type="xsd:string" />
+ <wsdl:part name="type" type="xsd:string" />
+ </wsdl:message>
+
+ <wsdl:message name="dedicatedRipeQueryResponse">
+ <wsdl:part name="return" type="typens:ripeReturn" />
+ </wsdl:message>
+
+ <wsdl:message name="responderEmailListRequest">
+ <wsdl:part name="session" type="xsd:string" />
+ <wsdl:part name="domain" type="xsd:string" />
+ </wsdl:message>
+
+ <wsdl:message name="responderEmailListResponse">
+ <wsdl:part name="return" type="typens:MyArrayOfResponderEmailStructType" />
+ </wsdl:message>
+
+ <wsdl:message name="telephonyBillingAccountSetRequest">
+ <wsdl:part name="session" type="xsd:string" />
+ <wsdl:part name="billingAccount" type="xsd:string" />
+ <wsdl:part name="numbers" type="typens:MyArrayOfStringType" />
+ </wsdl:message>
+
+ <wsdl:message name="telephonyBillingAccountSetResponse" />
+
+ <wsdl:message name="telephonyDepositMovementModifyRequest">
+ <wsdl:part name="session" type="xsd:string" />
+ <wsdl:part name="billingAccountSource" type="xsd:string" />
+ <wsdl:part name="billingAccountDestination" type="xsd:string" />
+ <wsdl:part name="amount" type="xsd:int" />
+ </wsdl:message>
+
+ <wsdl:message name="telephonyDepositMovementModifyResponse" />
+
+ <wsdl:message name="telephonyClick2CallDoRequest">
+ <wsdl:part name="login" type="xsd:string" />
+ <wsdl:part name="password" type="xsd:string" />
+ <wsdl:part name="calling" type="xsd:string" />
+ <wsdl:part name="called" type="xsd:string" />
+ <wsdl:part name="billingNumber" type="xsd:string" />
+ </wsdl:message>
+
+ <wsdl:message name="telephonyClick2CallDoResponse" />
+
+ <wsdl:message name="telephonySpecialNumberOrderRequest">
+ <wsdl:part name="session" type="xsd:string" />
+ <wsdl:part name="billingAccount" type="xsd:string" />
+ <wsdl:part name="country" type="xsd:string" />
+ <wsdl:part name="aliasNumber" type="xsd:string" />
+ <wsdl:part name="prefix" type="xsd:string" />
+ <wsdl:part name="category" type="xsd:string" />
+ <wsdl:part name="numberToReserve" type="xsd:string" />
+ <wsdl:part name="name" type="xsd:string" />
+ <wsdl:part name="firstname" type="xsd:string" />
+ <wsdl:part name="streetName" type="xsd:string" />
+ <wsdl:part name="streetNumber" type="xsd:string" />
+ <wsdl:part name="zip" type="xsd:string" />
+ <wsdl:part name="city" type="xsd:string" />
+ <wsdl:part name="email" type="xsd:string" />
+ <wsdl:part name="procedureId" type="xsd:int" />
+ <wsdl:part name="legalForm" type="xsd:string" />
+ <wsdl:part name="siret" type="xsd:string" />
+ <wsdl:part name="ape" type="xsd:string" />
+ <wsdl:part name="socialNomination" type="xsd:string" />
+ <wsdl:part name="displayUniversalDirectory" type="xsd:string" />
+ <wsdl:part name="retractation" type="xsd:string" />
+ </wsdl:message>
+
+ <wsdl:message name="telephonySpecialNumberOrderResponse">
+ <wsdl:part name="return" type="typens:orderStruct" />
+ </wsdl:message>
+
+ <wsdl:message name="telephonyVoicemailOptionsModifyRequest">
+ <wsdl:part name="session" type="xsd:string" />
+ <wsdl:part name="number" type="xsd:string" />
+ <wsdl:part name="country" type="xsd:string" />
+ <wsdl:part name="redirection1" type="xsd:string" />
+ <wsdl:part name="redirection1Email" type="xsd:string" />
+ <wsdl:part name="redirection2" type="xsd:string" />
+ <wsdl:part name="redirection2Email" type="xsd:string" />
+ <wsdl:part name="redirection3" type="xsd:string" />
+ <wsdl:part name="redirection3Email" type="xsd:string" />
+ <wsdl:part name="redirection4" type="xsd:string" />
+ <wsdl:part name="redirection4Email" type="xsd:string" />
+ <wsdl:part name="redirection5" type="xsd:string" />
+ <wsdl:part name="redirection5Email" type="xsd:string" />
+ <wsdl:part name="announceMessage" type="xsd:string" />
+ <wsdl:part name="keepMessage" type="xsd:boolean" />
+ <wsdl:part name="audioformat" type="xsd:string" />
+ <wsdl:part name="fromEmail" type="xsd:string" />
+ <wsdl:part name="fromName" type="xsd:string" />
+ <wsdl:part name="doNotRecord" type="xsd:boolean" />
+ <wsdl:part name="forcePassword" type="xsd:boolean" />
+ </wsdl:message>
+
+ <wsdl:message name="telephonyVoicemailOptionsModifyResponse" />
+
+ <wsdl:message name="telephonyLineSwitchOldOfferRequest">
+ <wsdl:part name="session" type="xsd:string" />
+ <wsdl:part name="numbers" type="typens:MyArrayOfStringType" />
+ <wsdl:part name="offers" type="typens:MyArrayOfStringType" />
+ <wsdl:part name="billingAccount" type="xsd:string" />
+ </wsdl:message>
+
+ <wsdl:message name="telephonyLineSwitchOldOfferResponse" />
+
+ <wsdl:message name="zoneEntryAddCustomRequest">
+ <wsdl:part name="session" type="xsd:string" />
+ <wsdl:part name="domain" type="xsd:string" />
+ <wsdl:part name="fieldtype" type="xsd:string" />
+ <wsdl:part name="hostingtype" type="xsd:string" />
+ <wsdl:part name="hosting" type="xsd:string" />
+ <wsdl:part name="subdomain" type="xsd:string" />
+ <wsdl:part name="priority" type="xsd:string" />
+ <wsdl:part name="target" type="xsd:string" />
+ <wsdl:part name="country" type="xsd:string" />
+ </wsdl:message>
+
+ <wsdl:message name="zoneEntryAddCustomResponse" />
+
+ <wsdl:message name="domainWhoisObfuscatorInfoRequest">
+ <wsdl:part name="session" type="xsd:string" />
+ <wsdl:part name="domain" type="xsd:string" />
+ </wsdl:message>
+
+ <wsdl:message name="domainWhoisObfuscatorInfoResponse">
+ <wsdl:part name="return" type="typens:domainWhoisObfuscatorStruct" />
+ </wsdl:message>
+
+ <wsdl:message name="telephonyPhonebookOnGroupContactDelRequest">
+ <wsdl:part name="session" type="xsd:string" />
+ <wsdl:part name="group" type="xsd:string" />
+ <wsdl:part name="id" type="xsd:int" />
+ </wsdl:message>
+
+ <wsdl:message name="telephonyPhonebookOnGroupContactDelResponse" />
+
+ <wsdl:message name="ticketReopenRequest">
+ <wsdl:part name="session" type="xsd:string" />
+ <wsdl:part name="ticketId" type="xsd:int" />
+ </wsdl:message>
+
+ <wsdl:message name="ticketReopenResponse" />
+
+ <wsdl:message name="telephonySpareAddRequest">
+ <wsdl:part name="session" type="xsd:string" />
+ <wsdl:part name="type" type="xsd:string" />
+ <wsdl:part name="model" type="xsd:string" />
+ <wsdl:part name="mac" type="xsd:string" />
+ </wsdl:message>
+
+ <wsdl:message name="telephonySpareAddResponse" />
+
+ <wsdl:message name="telephonySmsAddCsvAttachmentRequest">
+ <wsdl:part name="session" type="xsd:string" />
+ <wsdl:part name="smsAccount" type="xsd:string" />
+ <wsdl:part name="csvUrl" type="xsd:string" />
+ <wsdl:part name="id" type="xsd:string" />
+ <wsdl:part name="name" type="xsd:string" />
+ </wsdl:message>
+
+ <wsdl:message name="telephonySmsAddCsvAttachmentResponse">
+ <wsdl:part name="return" type="typens:telephonySmsCsvSlotStruct" />
+ </wsdl:message>
+
+ <wsdl:message name="dedicatedBackupFtpPasswordRequest">
+ <wsdl:part name="session" type="xsd:string" />
+ <wsdl:part name="hostname" type="xsd:string" />
+ <wsdl:part name="email" type="xsd:string" />
+ <wsdl:part name="language" type="xsd:string" />
+ </wsdl:message>
+
+ <wsdl:message name="dedicatedBackupFtpPasswordResponse" />
+
+ <wsdl:message name="telephonyDefaultPrivateHolidaysEventsRequest">
+ <wsdl:part name="session" type="xsd:string" />
+ </wsdl:message>
+
+ <wsdl:message name="telephonyDefaultPrivateHolidaysEventsResponse">
+ <wsdl:part name="return" type="typens:telephonyGetDefaultPrivateHolidaysEventsReturn" />
+ </wsdl:message>
+
+ <wsdl:message name="hostingAccessByNicRequest">
+ <wsdl:part name="session" type="xsd:string" />
+ <wsdl:part name="domain" type="xsd:string" />
+ </wsdl:message>
+
+ <wsdl:message name="hostingAccessByNicResponse">
+ <wsdl:part name="return" type="typens:MyArrayOfStringType" />
+ </wsdl:message>
+
+ <wsdl:message name="sqlpriveAlertInfoRequest">
+ <wsdl:part name="session" type="xsd:string" />
+ <wsdl:part name="server" type="xsd:string" />
+ </wsdl:message>
+
+ <wsdl:message name="sqlpriveAlertInfoResponse">
+ <wsdl:part name="return" type="typens:sqlpriveAlertInfotReturn" />
+ </wsdl:message>
+
+ <wsdl:message name="mailingListFullInfoRequest">
+ <wsdl:part name="session" type="xsd:string" />
+ <wsdl:part name="domain" type="xsd:string" />
+ <wsdl:part name="ml" type="xsd:string" />
+ </wsdl:message>
+
+ <wsdl:message name="mailingListFullInfoResponse">
+ <wsdl:part name="return" type="typens:mailingListFullInfoReturn" />
+ </wsdl:message>
+
+ <wsdl:message name="dedicatedRtmBackdoorUpdateAlertRequest">
+ <wsdl:part name="session" type="xsd:string" />
+ <wsdl:part name="hostname" type="xsd:string" />
+ <wsdl:part name="backdoorId" type="xsd:int" />
+ <wsdl:part name="do_not_mail" type="xsd:boolean" />
+ </wsdl:message>
+
+ <wsdl:message name="dedicatedRtmBackdoorUpdateAlertResponse" />
+
+ <wsdl:message name="responderEmailInfoRequest">
+ <wsdl:part name="session" type="xsd:string" />
+ <wsdl:part name="domain" type="xsd:string" />
+ <wsdl:part name="responder" type="xsd:string" />
+ </wsdl:message>
+
+ <wsdl:message name="responderEmailInfoResponse">
+ <wsdl:part name="return" type="typens:responderEmailStruct" />
+ </wsdl:message>
+
+ <wsdl:message name="telephonyToneRemoteUploadRequest">
+ <wsdl:part name="session" type="xsd:string" />
+ <wsdl:part name="number" type="xsd:string" />
+ <wsdl:part name="country" type="xsd:string" />
+ <wsdl:part name="toneType" type="xsd:string" />
+ <wsdl:part name="filename" type="xsd:string" />
+ <wsdl:part name="url" type="xsd:string" />
+ </wsdl:message>
+
+ <wsdl:message name="telephonyToneRemoteUploadResponse" />
+
+ <wsdl:message name="telephonyNumberGetFrWayNamesFromInseeRequest">
+ <wsdl:part name="session" type="xsd:string" />
+ <wsdl:part name="insee" type="xsd:string" />
+ <wsdl:part name="wayName" type="xsd:string" />
+ </wsdl:message>
+
+ <wsdl:message name="telephonyNumberGetFrWayNamesFromInseeResponse">
+ <wsdl:part name="return" type="typens:MyArrayOfTelephonyNumberWayNameStructType" />
+ </wsdl:message>
+
+ <wsdl:message name="dedicatedSecondaryDNSAddRequest">
+ <wsdl:part name="session" type="xsd:string" />
+ <wsdl:part name="hostname" type="xsd:string" />
+ <wsdl:part name="ip" type="xsd:string" />
+ <wsdl:part name="domain" type="xsd:string" />
+ <wsdl:part name="nameserver" type="xsd:string" />
+ <wsdl:part name="nameserverIp" type="xsd:string" />
+ </wsdl:message>
+
+ <wsdl:message name="dedicatedSecondaryDNSAddResponse" />
+
+ <wsdl:message name="popUpgradeQuotaRequest">
+ <wsdl:part name="session" type="xsd:string" />
+ <wsdl:part name="domain" type="xsd:string" />
+ <wsdl:part name="pop" type="xsd:string" />
+ <wsdl:part name="size" type="xsd:int" />
+ </wsdl:message>
+
+ <wsdl:message name="popUpgradeQuotaResponse" />
+
+ <wsdl:message name="telephonyFMHuntingModificationModeRequest">
+ <wsdl:part name="session" type="xsd:string" />
+ <wsdl:part name="number" type="xsd:string" />
+ <wsdl:part name="country" type="xsd:string" />
+ <wsdl:part name="billingAccount" type="xsd:string" />
+ <wsdl:part name="strategy" type="xsd:string" />
+ <wsdl:part name="pattern" type="xsd:string" />
+ </wsdl:message>
+
+ <wsdl:message name="telephonyFMHuntingModificationModeResponse" />
+
+ <wsdl:message name="sqlpriveListRequest">
+ <wsdl:part name="session" type="xsd:string" />
+ </wsdl:message>
+
+ <wsdl:message name="sqlpriveListResponse">
+ <wsdl:part name="return" type="typens:MyArrayOfSqlpriveStructType" />
+ </wsdl:message>
+
+ <wsdl:message name="dnsInstallRequest">
+ <wsdl:part name="session" type="xsd:string" />
+ <wsdl:part name="domain" type="xsd:string" />
+ <wsdl:part name="hosting" type="xsd:string" />
+ <wsdl:part name="minimized" type="xsd:boolean" />
+ </wsdl:message>
+
+ <wsdl:message name="dnsInstallResponse" />
+
+ <wsdl:message name="telephonyAliasToSipOfferRequest">
+ <wsdl:part name="session" type="xsd:string" />
+ <wsdl:part name="number" type="xsd:string" />
+ <wsdl:part name="country" type="xsd:string" />
+ <wsdl:part name="offer" type="xsd:string" />
+ <wsdl:part name="delete" type="xsd:boolean" />
+ </wsdl:message>
+
+ <wsdl:message name="telephonyAliasToSipOfferResponse" />
+
+ <wsdl:message name="hostingSummaryRequest">
+ <wsdl:part name="session" type="xsd:string" />
+ <wsdl:part name="domain" type="xsd:string" />
+ </wsdl:message>
+
+ <wsdl:message name="hostingSummaryResponse">
+ <wsdl:part name="return" type="typens:hostingSummaryReturn" />
+ </wsdl:message>
+
+ <wsdl:message name="emailDomainSummaryRequest">
+ <wsdl:part name="session" type="xsd:string" />
+ <wsdl:part name="domain" type="xsd:string" />
+ </wsdl:message>
+
+ <wsdl:message name="emailDomainSummaryResponse">
+ <wsdl:part name="return" type="typens:emailDomainSummaryReturn" />
+ </wsdl:message>
+
+ <wsdl:message name="dedicatedRtmGetStatusRequest">
+ <wsdl:part name="session" type="xsd:string" />
+ <wsdl:part name="hostname" type="xsd:string" />
+ </wsdl:message>
+
+ <wsdl:message name="dedicatedRtmGetStatusResponse">
+ <wsdl:part name="return" type="typens:dedicatedRtmStatusReturn" />
+ </wsdl:message>
+
+ <wsdl:message name="managedServicesPartitionQuotaUsedRequest">
+ <wsdl:part name="session" type="xsd:string" />
+ <wsdl:part name="storage" type="xsd:string" />
+ <wsdl:part name="partitionName" type="xsd:string" />
+ </wsdl:message>
+
+ <wsdl:message name="managedServicesPartitionQuotaUsedResponse">
+ <wsdl:part name="return" type="xsd:string" />
+ </wsdl:message>
+
+ <wsdl:message name="dedicatedNetbootGetAvailableRequest">
+ <wsdl:part name="session" type="xsd:string" />
+ <wsdl:part name="hostname" type="xsd:string" />
+ </wsdl:message>
+
+ <wsdl:message name="dedicatedNetbootGetAvailableResponse">
+ <wsdl:part name="return" type="typens:MyArrayOfDedicatedNetbootStructType" />
+ </wsdl:message>
+
+ <wsdl:message name="telephonySmsUserMultiSendRequest">
+ <wsdl:part name="login" type="xsd:string" />
+ <wsdl:part name="password" type="xsd:string" />
+ <wsdl:part name="smsAccount" type="xsd:string" />
+ <wsdl:part name="numberFrom" type="xsd:string" />
+ <wsdl:part name="numberTo" type="typens:MyArrayOfStringType" />
+ <wsdl:part name="message" type="xsd:string" />
+ <wsdl:part name="smsValidity" type="xsd:int" />
+ <wsdl:part name="smsClass" type="xsd:int" />
+ <wsdl:part name="smsDeferred" type="xsd:int" />
+ <wsdl:part name="smsPriority" type="xsd:int" />
+ <wsdl:part name="smsCoding" type="xsd:int" />
+ <wsdl:part name="tag" type="xsd:string" />
+ <wsdl:part name="numberToCsv" type="xsd:string" />
+ <wsdl:part name="noStop" type="xsd:boolean" />
+ </wsdl:message>
+
+ <wsdl:message name="telephonySmsUserMultiSendResponse">
+ <wsdl:part name="return" type="typens:MyArrayOfIntType" />
+ </wsdl:message>
+
+ <wsdl:message name="telephonySmsGetCsvAttachmentRequest">
+ <wsdl:part name="session" type="xsd:string" />
+ <wsdl:part name="smsAccount" type="xsd:string" />
+ <wsdl:part name="id" type="xsd:string" />
+ </wsdl:message>
+
+ <wsdl:message name="telephonySmsGetCsvAttachmentResponse">
+ <wsdl:part name="return" type="xsd:string" />
+ </wsdl:message>
+
+ <wsdl:message name="telephonySmsHistoryRequest">
+ <wsdl:part name="session" type="xsd:string" />
+ <wsdl:part name="smsAccount" type="xsd:string" />
+ <wsdl:part name="smsId" type="xsd:int" />
+ <wsdl:part name="user" type="xsd:string" />
+ <wsdl:part name="pagingStart" type="xsd:int" />
+ <wsdl:part name="pagingLimit" type="xsd:int" />
+ <wsdl:part name="sortField" type="xsd:string" />
+ <wsdl:part name="sortOrder" type="xsd:string" />
+ <wsdl:part name="tag" type="xsd:string" />
+ <wsdl:part name="filter" type="xsd:string" />
+ </wsdl:message>
+
+ <wsdl:message name="telephonySmsHistoryResponse">
+ <wsdl:part name="return" type="typens:MyArrayOfTelephonySmsHistoryStructType" />
+ </wsdl:message>
+
+ <wsdl:message name="zoneEntryModifyRequest">
+ <wsdl:part name="session" type="xsd:string" />
+ <wsdl:part name="domain" type="xsd:string" />
+ <wsdl:part name="subdomain" type="xsd:string" />
+ <wsdl:part name="fieldtype" type="xsd:string" />
+ <wsdl:part name="target" type="xsd:string" />
+ <wsdl:part name="newTarget" type="xsd:string" />
+ </wsdl:message>
+
+ <wsdl:message name="zoneEntryModifyResponse" />
+
+ <wsdl:message name="ticketListContactRequest">
+ <wsdl:part name="session" type="xsd:string" />
+ </wsdl:message>
+
+ <wsdl:message name="ticketListContactResponse">
+ <wsdl:part name="return" type="typens:MyArrayOfTicketContactStructType" />
+ </wsdl:message>
+
+ <wsdl:message name="dedicatedMailinglistGetAllowedRequest">
+ <wsdl:part name="session" type="xsd:string" />
+ </wsdl:message>
+
+ <wsdl:message name="dedicatedMailinglistGetAllowedResponse">
+ <wsdl:part name="return" type="typens:MyArrayOfStringType" />
+ </wsdl:message>
+
+ <wsdl:message name="dedicatedBackupInfoRequest">
+ <wsdl:part name="session" type="xsd:string" />
+ <wsdl:part name="hostname" type="xsd:string" />
+ <wsdl:part name="backupId" type="xsd:string" />
+ </wsdl:message>
+
+ <wsdl:message name="dedicatedBackupInfoResponse">
+ <wsdl:part name="return" type="typens:dedicatedBackupListReturn" />
+ </wsdl:message>
+
+ <wsdl:message name="telephonyAbbreviatedNumberOnGroupModifyRequest">
+ <wsdl:part name="session" type="xsd:string" />
+ <wsdl:part name="group" type="xsd:string" />
+ <wsdl:part name="abbreviatedNumber" type="xsd:string" />
+ <wsdl:part name="relatedNumber" type="xsd:string" />
+ <wsdl:part name="name" type="xsd:string" />
+ <wsdl:part name="surname" type="xsd:string" />
+ </wsdl:message>
+
+ <wsdl:message name="telephonyAbbreviatedNumberOnGroupModifyResponse" />
+
+ <wsdl:message name="accountSummaryRequest">
+ <wsdl:part name="session" type="xsd:string" />
+ </wsdl:message>
+
+ <wsdl:message name="accountSummaryResponse">
+ <wsdl:part name="return" type="typens:accountSummaryReturn" />
+ </wsdl:message>
+
+ <wsdl:message name="subDomainDelRequest">
+ <wsdl:part name="session" type="xsd:string" />
+ <wsdl:part name="domain" type="xsd:string" />
+ <wsdl:part name="subdomain" type="xsd:string" />
+ </wsdl:message>
+
+ <wsdl:message name="subDomainDelResponse" />
+
+ <wsdl:message name="telephonyHuntingGenericScreenListRequest">
+ <wsdl:part name="session" type="xsd:string" />
+ <wsdl:part name="number" type="xsd:string" />
+ <wsdl:part name="country" type="xsd:string" />
+ </wsdl:message>
+
+ <wsdl:message name="telephonyHuntingGenericScreenListResponse">
+ <wsdl:part name="return" type="typens:MyArrayOfTelephonyHuntingGenericScreenStructType" />
+ </wsdl:message>
+
+ <wsdl:message name="emailFilterAddRequest">
+ <wsdl:part name="session" type="xsd:string" />
+ <wsdl:part name="domain" type="xsd:string" />
+ <wsdl:part name="pop" type="xsd:string" />
+ <wsdl:part name="filter" type="xsd:string" />
+ <wsdl:part name="priority" type="xsd:int" />
+ <wsdl:part name="active" type="xsd:boolean" />
+ <wsdl:part name="action" type="xsd:string" />
+ <wsdl:part name="action_param" type="xsd:string" />
+ <wsdl:part name="header" type="xsd:string" />
+ <wsdl:part name="rule" type="xsd:string" />
+ <wsdl:part name="rule_param" type="xsd:string" />
+ </wsdl:message>
+
+ <wsdl:message name="emailFilterAddResponse" />
+
+ <wsdl:message name="telephonyHuntingGenericScreenStatusRequest">
+ <wsdl:part name="session" type="xsd:string" />
+ <wsdl:part name="number" type="xsd:string" />
+ <wsdl:part name="country" type="xsd:string" />
+ </wsdl:message>
+
+ <wsdl:message name="telephonyHuntingGenericScreenStatusResponse">
+ <wsdl:part name="return" type="xsd:boolean" />
+ </wsdl:message>
+
+ <wsdl:message name="telephonyHuntingModificationMembersRequest">
+ <wsdl:part name="session" type="xsd:string" />
+ <wsdl:part name="number" type="xsd:string" />
+ <wsdl:part name="country" type="xsd:string" />
+ <wsdl:part name="billingAccount" type="xsd:string" />
+ <wsdl:part name="list_destinations" type="typens:MyArrayOfStringType" />
+ <wsdl:part name="list_noReplyTimer" type="typens:MyArrayOfIntType" />
+ <wsdl:part name="list_logged" type="typens:MyArrayOfBooleanType" />
+ </wsdl:message>
+
+ <wsdl:message name="telephonyHuntingModificationMembersResponse" />
+
+ <wsdl:message name="rpsMigrationStatusRequest">
+ <wsdl:part name="session" type="xsd:string" />
+ <wsdl:part name="hostname" type="xsd:string" />
+ </wsdl:message>
+
+ <wsdl:message name="rpsMigrationStatusResponse">
+ <wsdl:part name="return" type="typens:rpsMigrationStatusReturn" />
+ </wsdl:message>
+
+ <wsdl:message name="dnsResetRequest">
+ <wsdl:part name="session" type="xsd:string" />
+ <wsdl:part name="domain" type="xsd:string" />
+ <wsdl:part name="hosting" type="xsd:string" />
+ <wsdl:part name="minimized" type="xsd:boolean" />
+ </wsdl:message>
+
+ <wsdl:message name="dnsResetResponse" />
+
+ <wsdl:message name="telephonyVoicemailMessagesDownloadRequest">
+ <wsdl:part name="session" type="xsd:string" />
+ <wsdl:part name="number" type="xsd:string" />
+ <wsdl:part name="country" type="xsd:string" />
+ <wsdl:part name="messType" type="xsd:string" />
+ <wsdl:part name="format" type="xsd:string" />
+ </wsdl:message>
+
+ <wsdl:message name="telephonyVoicemailMessagesDownloadResponse">
+ <wsdl:part name="return" type="typens:telephonyVoicemailMessagesDownloadReturn" />
+ </wsdl:message>
+
+ <wsdl:message name="supportGetNicDomainsRequest">
+ <wsdl:part name="session" type="xsd:string" />
+ </wsdl:message>
+
+ <wsdl:message name="supportGetNicDomainsResponse">
+ <wsdl:part name="return" type="typens:MyArrayOfSupportDomainStructType" />
+ </wsdl:message>
+
+ <wsdl:message name="telephonyFaxCampaignCreationRequest">
+ <wsdl:part name="session" type="xsd:string" />
+ <wsdl:part name="number" type="xsd:string" />
+ <wsdl:part name="country" type="xsd:string" />
+ <wsdl:part name="campaignName" type="xsd:string" />
+ <wsdl:part name="pdfUrl" type="xsd:string" />
+ <wsdl:part name="pdfName" type="xsd:string" />
+ <wsdl:part name="recipients" type="typens:MyArrayOfStringType" />
+ <wsdl:part name="faxQuality" type="xsd:string" />
+ <wsdl:part name="initialStatus" type="xsd:string" />
+ <wsdl:part name="launchDate" type="xsd:string" />
+ <wsdl:part name="remoteRecipients" type="xsd:boolean" />
+ </wsdl:message>
+
+ <wsdl:message name="telephonyFaxCampaignCreationResponse" />
+
+ <wsdl:message name="supportGetThreadsRequest">
+ <wsdl:part name="session" type="xsd:string" />
+ <wsdl:part name="page" type="xsd:int" />
+ <wsdl:part name="view" type="xsd:string" />
+ <wsdl:part name="unread" type="xsd:boolean" />
+ <wsdl:part name="sortDir" type="xsd:string" />
+ <wsdl:part name="sortBy" type="xsd:string" />
+ <wsdl:part name="limit" type="xsd:int" />
+ </wsdl:message>
+
+ <wsdl:message name="supportGetThreadsResponse">
+ <wsdl:part name="return" type="typens:MyArrayOfSupportThreadDetailStructType" />
+ </wsdl:message>
+
+ <wsdl:message name="mailingListDelRequest">
+ <wsdl:part name="session" type="xsd:string" />
+ <wsdl:part name="domain" type="xsd:string" />
+ <wsdl:part name="ml" type="xsd:string" />
+ </wsdl:message>
+
+ <wsdl:message name="mailingListDelResponse" />
+
+ <wsdl:message name="dedicatedFailoverRipeAddRequest">
+ <wsdl:part name="session" type="xsd:string" />
+ <wsdl:part name="hostname" type="xsd:string" />
+ <wsdl:part name="netname" type="xsd:string" />
+ <wsdl:part name="description" type="xsd:string" />
+ <wsdl:part name="country" type="xsd:string" />
+ <wsdl:part name="addressesNumber" type="xsd:int" />
+ <wsdl:part name="comment" type="xsd:string" />
+ <wsdl:part name="routedToInterface" type="xsd:string" />
+ </wsdl:message>
+
+ <wsdl:message name="dedicatedFailoverRipeAddResponse" />
+
+ <wsdl:message name="mailingListSubscriberAddRequest">
+ <wsdl:part name="session" type="xsd:string" />
+ <wsdl:part name="domain" type="xsd:string" />
+ <wsdl:part name="ml" type="xsd:string" />
+ <wsdl:part name="email" type="xsd:string" />
+ </wsdl:message>
+
+ <wsdl:message name="mailingListSubscriberAddResponse" />
+
+ <wsdl:message name="dedicatedFilterIrcClientRuleAddRequest">
+ <wsdl:part name="session" type="xsd:string" />
+ <wsdl:part name="hostname" type="xsd:string" />
+ <wsdl:part name="fromIp" type="xsd:string" />
+ <wsdl:part name="toIp" type="xsd:string" />
+ </wsdl:message>
+
+ <wsdl:message name="dedicatedFilterIrcClientRuleAddResponse" />
+
+ <wsdl:message name="telephonyLineLogsNotificationOptionsRequest">
+ <wsdl:part name="session" type="xsd:string" />
+ <wsdl:part name="number" type="xsd:string" />
+ <wsdl:part name="country" type="xsd:string" />
+ </wsdl:message>
+
+ <wsdl:message name="telephonyLineLogsNotificationOptionsResponse">
+ <wsdl:part name="return" type="typens:telephonyLineLogsNotificationOptionsReturn" />
+ </wsdl:message>
+
+ <wsdl:message name="telephonyLineGetIpRestrictionRequest">
+ <wsdl:part name="session" type="xsd:string" />
+ <wsdl:part name="number" type="xsd:string" />
+ <wsdl:part name="country" type="xsd:string" />
+ </wsdl:message>
+
+ <wsdl:message name="telephonyLineGetIpRestrictionResponse">
+ <wsdl:part name="return" type="typens:MyArrayOfStringType" />
+ </wsdl:message>
+
+ <wsdl:message name="dedicatedInstallationTemplateListRequest">
+ <wsdl:part name="session" type="xsd:string" />
+ </wsdl:message>
+
+ <wsdl:message name="dedicatedInstallationTemplateListResponse">
+ <wsdl:part name="return" type="typens:MyArrayOfDedicatedInstallationTemplateStructType" />
+ </wsdl:message>
+
+ <wsdl:message name="telephonyGetTimeZoneNumberRequest">
+ <wsdl:part name="session" type="xsd:string" />
+ <wsdl:part name="number" type="xsd:string" />
+ <wsdl:part name="countryCode" type="xsd:string" />
+ </wsdl:message>
+
+ <wsdl:message name="telephonyGetTimeZoneNumberResponse">
+ <wsdl:part name="return" type="xsd:string" />
+ </wsdl:message>
+
+ <wsdl:message name="dedicatedBackupGetCalendarRequest">
+ <wsdl:part name="session" type="xsd:string" />
+ </wsdl:message>
+
+ <wsdl:message name="dedicatedBackupGetCalendarResponse">
+ <wsdl:part name="return" type="typens:MyArrayOfDedicatedBackupGetPlanningStructType" />
+ </wsdl:message>
+
+ <wsdl:message name="telephonyFMHuntingModificationMembersRequest">
+ <wsdl:part name="session" type="xsd:string" />
+ <wsdl:part name="number" type="xsd:string" />
+ <wsdl:part name="country" type="xsd:string" />
+ <wsdl:part name="billingAccount" type="xsd:string" />
+ <wsdl:part name="list_destinations" type="typens:MyArrayOfStringType" />
+ <wsdl:part name="list_noReplyTimer" type="typens:MyArrayOfIntType" />
+ <wsdl:part name="list_logged" type="typens:MyArrayOfBooleanType" />
+ </wsdl:message>
+
+ <wsdl:message name="telephonyFMHuntingModificationMembersResponse" />
+
+ <wsdl:message name="telephonyPhonebookAddRequest">
+ <wsdl:part name="session" type="xsd:string" />
+ <wsdl:part name="number" type="xsd:string" />
+ <wsdl:part name="country" type="xsd:string" />
+ <wsdl:part name="name" type="xsd:string" />
+ </wsdl:message>
+
+ <wsdl:message name="telephonyPhonebookAddResponse">
+ <wsdl:part name="return" type="xsd:int" />
+ </wsdl:message>
+
+ <wsdl:message name="telephonyRestrictionModifyRequest">
+ <wsdl:part name="session" type="xsd:string" />
+ <wsdl:part name="number" type="xsd:string" />
+ <wsdl:part name="country" type="xsd:string" />
+ <wsdl:part name="restrictions" type="typens:MyArrayOfStringType" />
+ </wsdl:message>
+
+ <wsdl:message name="telephonyRestrictionModifyResponse" />
+
+ <wsdl:message name="telephonyRatesListRequest">
+ <wsdl:part name="session" type="xsd:string" />
+ <wsdl:part name="countryCode" type="xsd:string" />
+ <wsdl:part name="type" type="xsd:string" />
+ </wsdl:message>
+
+ <wsdl:message name="telephonyRatesListResponse">
+ <wsdl:part name="return" type="typens:MyArrayOfTelephonyRateStructType" />
+ </wsdl:message>
+
+ <wsdl:message name="crontabDelRequest">
+ <wsdl:part name="session" type="xsd:string" />
+ <wsdl:part name="domain" type="xsd:string" />
+ <wsdl:part name="id" type="xsd:int" />
+ </wsdl:message>
+
+ <wsdl:message name="crontabDelResponse" />
+
+ <wsdl:message name="telephonyHuntingGenericScreenOptionsRequest">
+ <wsdl:part name="session" type="xsd:string" />
+ <wsdl:part name="number" type="xsd:string" />
+ <wsdl:part name="country" type="xsd:string" />
+ </wsdl:message>
+
+ <wsdl:message name="telephonyHuntingGenericScreenOptionsResponse">
+ <wsdl:part name="return" type="typens:MyArrayOfTelephonyHuntingGenericScreenOptionsStructType" />
+ </wsdl:message>
+
+ <wsdl:message name="telephonyBillingAccountAddRequest">
+ <wsdl:part name="session" type="xsd:string" />
+ </wsdl:message>
+
+ <wsdl:message name="telephonyBillingAccountAddResponse" />
+
+ <wsdl:message name="managedServicesIpAccessChangeRequest">
+ <wsdl:part name="session" type="xsd:string" />
+ <wsdl:part name="storage" type="xsd:string" />
+ <wsdl:part name="value" type="xsd:string" />
+ <wsdl:part name="server" type="xsd:string" />
+ <wsdl:part name="idZfs" type="xsd:string" />
+ </wsdl:message>
+
+ <wsdl:message name="managedServicesIpAccessChangeResponse" />
+
+ <wsdl:message name="accountHistoryRequest">
+ <wsdl:part name="session" type="xsd:string" />
+ <wsdl:part name="month" type="xsd:int" />
+ <wsdl:part name="year" type="xsd:int" />
+ </wsdl:message>
+
+ <wsdl:message name="accountHistoryResponse">
+ <wsdl:part name="return" type="typens:accountHistoryReturn" />
+ </wsdl:message>
+
+ <wsdl:message name="dedicatedIpLoadBalancingServerDelRequest">
+ <wsdl:part name="session" type="xsd:string" />
+ <wsdl:part name="ipLoadBalancing" type="xsd:string" />
+ <wsdl:part name="hostname" type="xsd:string" />
+ </wsdl:message>
+
+ <wsdl:message name="dedicatedIpLoadBalancingServerDelResponse" />
+
+ <wsdl:message name="domainCheckRequest">
+ <wsdl:part name="session" type="xsd:string" />
+ <wsdl:part name="domain" type="xsd:string" />
+ </wsdl:message>
+
+ <wsdl:message name="domainCheckResponse">
+ <wsdl:part name="return" type="typens:MyArrayOfDomainCheckStructType" />
+ </wsdl:message>
+
+ <wsdl:message name="prepaidDomainTransferRequest">
+ <wsdl:part name="session" type="xsd:string" />
+ <wsdl:part name="domain" type="xsd:string" />
+ <wsdl:part name="nicowner" type="xsd:string" />
+ <wsdl:part name="nicadmin" type="xsd:string" />
+ <wsdl:part name="nictech" type="xsd:string" />
+ <wsdl:part name="nicbilling" type="xsd:string" />
+ <wsdl:part name="dns1" type="xsd:string" />
+ <wsdl:part name="dns2" type="xsd:string" />
+ <wsdl:part name="dns3" type="xsd:string" />
+ <wsdl:part name="dns4" type="xsd:string" />
+ <wsdl:part name="dns5" type="xsd:string" />
+ <wsdl:part name="frpartBirthday" type="xsd:string" />
+ <wsdl:part name="frpartBirthCountry" type="xsd:string" />
+ <wsdl:part name="frpartBirthDepartment" type="xsd:string" />
+ <wsdl:part name="frpartBirthTown" type="xsd:string" />
+ <wsdl:part name="dryRun" type="xsd:boolean" />
+ </wsdl:message>
+
+ <wsdl:message name="prepaidDomainTransferResponse" />
+
+ <wsdl:message name="dedicatedEditServiceMonitoringItemRequest">
+ <wsdl:part name="session" type="xsd:string" />
+ <wsdl:part name="ip" type="xsd:string" />
+ <wsdl:part name="itemId" type="xsd:int" />
+ <wsdl:part name="period" type="xsd:string" />
+ <wsdl:part name="string" type="xsd:string" />
+ </wsdl:message>
+
+ <wsdl:message name="dedicatedEditServiceMonitoringItemResponse" />
+
+ <wsdl:message name="telephonySmsplusIsFreeKeywordRequest">
+ <wsdl:part name="session" type="xsd:string" />
+ <wsdl:part name="shortCode" type="xsd:string" />
+ <wsdl:part name="keyword" type="xsd:string" />
+ </wsdl:message>
+
+ <wsdl:message name="telephonySmsplusIsFreeKeywordResponse" />
+
+ <wsdl:message name="telephonyLineGetCodecsRequest">
+ <wsdl:part name="session" type="xsd:string" />
+ <wsdl:part name="number" type="xsd:string" />
+ <wsdl:part name="countryCode" type="xsd:string" />
+ </wsdl:message>
+
+ <wsdl:message name="telephonyLineGetCodecsResponse">
+ <wsdl:part name="return" type="typens:telephonyLineGetCodecsReturn" />
+ </wsdl:message>
+
+ <wsdl:message name="telephonySmsSenderValidateRequest">
+ <wsdl:part name="session" type="xsd:string" />
+ <wsdl:part name="smsAccount" type="xsd:string" />
+ <wsdl:part name="number" type="xsd:string" />
+ <wsdl:part name="code" type="xsd:int" />
+ </wsdl:message>
+
+ <wsdl:message name="telephonySmsSenderValidateResponse" />
+
+ <wsdl:message name="dedicatedIPForUDPServerListRequest">
+ <wsdl:part name="session" type="xsd:string" />
+ <wsdl:part name="hostname" type="xsd:string" />
+ </wsdl:message>
+
+ <wsdl:message name="dedicatedIPForUDPServerListResponse">
+ <wsdl:part name="return" type="typens:MyArrayOfIPForUDPServerListStructType" />
+ </wsdl:message>
+
+ <wsdl:message name="telephonyHuntingModificationSimultaneousCallsRequest">
+ <wsdl:part name="session" type="xsd:string" />
+ <wsdl:part name="number" type="xsd:string" />
+ <wsdl:part name="country" type="xsd:string" />
+ <wsdl:part name="billingAccount" type="xsd:string" />
+ <wsdl:part name="numberOfCalls" type="xsd:int" />
+ </wsdl:message>
+
+ <wsdl:message name="telephonyHuntingModificationSimultaneousCallsResponse" />
+
+ <wsdl:message name="telephonyDirectoryInfoGetSameSiretRequest">
+ <wsdl:part name="session" type="xsd:string" />
+ <wsdl:part name="callNumber" type="xsd:string" />
+ <wsdl:part name="country" type="xsd:string" />
+ </wsdl:message>
+
+ <wsdl:message name="telephonyDirectoryInfoGetSameSiretResponse">
+ <wsdl:part name="return" type="typens:MyArrayOfStringType" />
+ </wsdl:message>
+
+ <wsdl:message name="serviceGroupCreateRequest">
+ <wsdl:part name="session" type="xsd:string" />
+ <wsdl:part name="name" type="xsd:string" />
+ <wsdl:part name="comment" type="xsd:string" />
+ </wsdl:message>
+
+ <wsdl:message name="serviceGroupCreateResponse" />
+
+ <wsdl:message name="telephonyConferenceSetParamsRequest">
+ <wsdl:part name="session" type="xsd:string" />
+ <wsdl:part name="number" type="xsd:string" />
+ <wsdl:part name="country" type="xsd:string" />
+ <wsdl:part name="lang" type="xsd:string" />
+ <wsdl:part name="pin" type="xsd:string" />
+ <wsdl:part name="enterMuted" type="xsd:boolean" />
+ <wsdl:part name="announceStatus" type="xsd:boolean" />
+ <wsdl:part name="recordStatus" type="xsd:boolean" />
+ <wsdl:part name="reportStatus" type="xsd:string" />
+ <wsdl:part name="reportMail" type="xsd:string" />
+ </wsdl:message>
+
+ <wsdl:message name="telephonyConferenceSetParamsResponse" />
+
+ <wsdl:message name="orderTelephonySmsCreditRequest">
+ <wsdl:part name="session" type="xsd:string" />
+ <wsdl:part name="smsAccount" type="xsd:string" />
+ <wsdl:part name="quantity" type="xsd:string" />
+ <wsdl:part name="payWithPoints" type="xsd:boolean" />
+ </wsdl:message>
+
+ <wsdl:message name="orderTelephonySmsCreditResponse">
+ <wsdl:part name="return" type="typens:orderStruct" />
+ </wsdl:message>
+
+ <wsdl:message name="dedicatedBackupSetRequest">
+ <wsdl:part name="session" type="xsd:string" />
+ <wsdl:part name="hostname" type="xsd:string" />
+ <wsdl:part name="backupId" type="xsd:string" />
+ <wsdl:part name="email" type="xsd:string" />
+ <wsdl:part name="backupType" type="xsd:string" />
+ <wsdl:part name="snapshot" type="xsd:int" />
+ <wsdl:part name="sshPort" type="xsd:int" />
+ <wsdl:part name="status" type="xsd:int" />
+ <wsdl:part name="language" type="xsd:string" />
+ <wsdl:part name="src" type="xsd:string" />
+ </wsdl:message>
+
+ <wsdl:message name="dedicatedBackupSetResponse" />
+
+ <wsdl:message name="dedicatedVirtualMacIpDeleteRequest">
+ <wsdl:part name="session" type="xsd:string" />
+ <wsdl:part name="hostname" type="xsd:string" />
+ <wsdl:part name="ip" type="xsd:string" />
+ </wsdl:message>
+
+ <wsdl:message name="dedicatedVirtualMacIpDeleteResponse" />
+
+ <wsdl:message name="dedicatedFailoverRipeSplitRequest">
+ <wsdl:part name="session" type="xsd:string" />
+ <wsdl:part name="hostname" type="xsd:string" />
+ <wsdl:part name="netname" type="xsd:string" />
+ <wsdl:part name="networkIp" type="xsd:string" />
+ </wsdl:message>
+
+ <wsdl:message name="dedicatedFailoverRipeSplitResponse" />
+
+ <wsdl:message name="dedicatedReverseInfoRequest">
+ <wsdl:part name="session" type="xsd:string" />
+ <wsdl:part name="hostname" type="xsd:string" />
+ <wsdl:part name="ip" type="xsd:string" />
+ </wsdl:message>
+
+ <wsdl:message name="dedicatedReverseInfoResponse">
+ <wsdl:part name="return" type="xsd:string" />
+ </wsdl:message>
+
+ <wsdl:message name="dedicatedCapabilitiesGetAllRequest">
+ <wsdl:part name="session" type="xsd:string" />
+ </wsdl:message>
+
+ <wsdl:message name="dedicatedCapabilitiesGetAllResponse">
+ <wsdl:part name="return" type="typens:MyArrayOfDedicatedCapabilitiesStructType" />
+ </wsdl:message>
+
+ <wsdl:message name="telephonySparePurchaseRequest">
+ <wsdl:part name="session" type="xsd:string" />
+ <wsdl:part name="type" type="xsd:string" />
+ <wsdl:part name="offers" type="typens:MyArrayOfStringType" />
+ <wsdl:part name="quantities" type="typens:MyArrayOfIntType" />
+ <wsdl:part name="nicShipping" type="xsd:string" />
+ <wsdl:part name="name" type="xsd:string" />
+ <wsdl:part name="address" type="xsd:string" />
+ <wsdl:part name="zip" type="xsd:string" />
+ <wsdl:part name="city" type="xsd:string" />
+ <wsdl:part name="country" type="xsd:string" />
+ </wsdl:message>
+
+ <wsdl:message name="telephonySparePurchaseResponse">
+ <wsdl:part name="return" type="typens:orderStruct" />
+ </wsdl:message>
+
+ <wsdl:message name="nicRequest">
+ <wsdl:part name="session" type="xsd:string" />
+ </wsdl:message>
+
+ <wsdl:message name="nicResponse">
+ <wsdl:part name="return" type="xsd:string" />
+ </wsdl:message>
+
+ <wsdl:message name="telephonyFaxCampaignListRequest">
+ <wsdl:part name="session" type="xsd:string" />
+ <wsdl:part name="number" type="xsd:string" />
+ <wsdl:part name="country" type="xsd:string" />
+ <wsdl:part name="campaignStatus" type="xsd:string" />
+ <wsdl:part name="pagingStart" type="xsd:int" />
+ <wsdl:part name="pagingLimit" type="xsd:int" />
+ <wsdl:part name="sortField" type="xsd:string" />
+ <wsdl:part name="sortOrder" type="xsd:string" />
+ </wsdl:message>
+
+ <wsdl:message name="telephonyFaxCampaignListResponse">
+ <wsdl:part name="return" type="typens:telephonyFaxCampaignListReturn" />
+ </wsdl:message>
+
+ <wsdl:message name="dedicatedBackupIncludeAddRequest">
+ <wsdl:part name="session" type="xsd:string" />
+ <wsdl:part name="hostname" type="xsd:string" />
+ <wsdl:part name="backupId" type="xsd:string" />
+ <wsdl:part name="include" type="xsd:string" />
+ </wsdl:message>
+
+ <wsdl:message name="dedicatedBackupIncludeAddResponse" />
+
+ <wsdl:message name="ticketGetRequest">
+ <wsdl:part name="session" type="xsd:string" />
+ <wsdl:part name="ticketId" type="xsd:int" />
+ </wsdl:message>
+
+ <wsdl:message name="ticketGetResponse">
+ <wsdl:part name="return" type="typens:fullTicketReturn" />
+ </wsdl:message>
+
+ <wsdl:message name="supportSendMessageRequest">
+ <wsdl:part name="session" type="xsd:string" />
+ <wsdl:part name="messagePrevious" type="xsd:int" />
+ <wsdl:part name="category" type="xsd:int" />
+ <wsdl:part name="domain" type="xsd:string" />
+ <wsdl:part name="subject" type="xsd:string" />
+ <wsdl:part name="body" type="xsd:string" />
+ </wsdl:message>
+
+ <wsdl:message name="supportSendMessageResponse">
+ <wsdl:part name="return" type="typens:supportSendMessageReturn" />
+ </wsdl:message>
+
+ <wsdl:message name="notepadSetRequest">
+ <wsdl:part name="session" type="xsd:string" />
+ <wsdl:part name="content" type="xsd:string" />
+ </wsdl:message>
+
+ <wsdl:message name="notepadSetResponse" />
+
+ <wsdl:message name="dedicatedFailoverRipeListRequest">
+ <wsdl:part name="session" type="xsd:string" />
+ <wsdl:part name="hostname" type="xsd:string" />
+ </wsdl:message>
+
+ <wsdl:message name="dedicatedFailoverRipeListResponse">
+ <wsdl:part name="return" type="typens:MyArrayOfDedicatedFailoverRipeStructType" />
+ </wsdl:message>
+
+ <wsdl:message name="telephonyNicGetMgcpIpRestrictionRequest">
+ <wsdl:part name="session" type="xsd:string" />
+ </wsdl:message>
+
+ <wsdl:message name="telephonyNicGetMgcpIpRestrictionResponse">
+ <wsdl:part name="return" type="typens:MyArrayOfStringType" />
+ </wsdl:message>
+
+ <wsdl:message name="telephonySmsGetUserQuotaForUserRequest">
+ <wsdl:part name="smsAccount" type="xsd:string" />
+ <wsdl:part name="login" type="xsd:string" />
+ <wsdl:part name="password" type="xsd:string" />
+ </wsdl:message>
+
+ <wsdl:message name="telephonySmsGetUserQuotaForUserResponse">
+ <wsdl:part name="return" type="typens:telephonySmsUserQuotaStruct" />
+ </wsdl:message>
+
+ <wsdl:message name="telephonyDirectoryInfoGetSiretRequest">
+ <wsdl:part name="session" type="xsd:string" />
+ <wsdl:part name="siret" type="xsd:int" />
+ </wsdl:message>
+
+ <wsdl:message name="telephonyDirectoryInfoGetSiretResponse">
+ <wsdl:part name="return" type="typens:telephonyDirectoryInfoGetSiretReturn" />
+ </wsdl:message>
+
+ <wsdl:message name="dedicatedMonitoringServiceAddRequest">
+ <wsdl:part name="session" type="xsd:string" />
+ <wsdl:part name="hostname" type="xsd:string" />
+ <wsdl:part name="ip" type="xsd:string" />
+ <wsdl:part name="port" type="xsd:int" />
+ <wsdl:part name="protocol" type="xsd:string" />
+ <wsdl:part name="period" type="xsd:string" />
+ <wsdl:part name="string" type="xsd:string" />
+ <wsdl:part name="url" type="xsd:string" />
+ <wsdl:part name="email" type="xsd:string" />
+ </wsdl:message>
+
+ <wsdl:message name="dedicatedMonitoringServiceAddResponse">
+ <wsdl:part name="return" type="xsd:string" />
+ </wsdl:message>
+
+ <wsdl:message name="dedicatedHardRebootDoRequest">
+ <wsdl:part name="session" type="xsd:string" />
+ <wsdl:part name="hostname" type="xsd:string" />
+ <wsdl:part name="reason" type="xsd:string" />
+ <wsdl:part name="email" type="xsd:string" />
+ <wsdl:part name="emailLanguage" type="xsd:string" />
+ </wsdl:message>
+
+ <wsdl:message name="dedicatedHardRebootDoResponse" />
+
+ <wsdl:message name="dedicatedReverseListRequest">
+ <wsdl:part name="session" type="xsd:string" />
+ <wsdl:part name="hostname" type="xsd:string" />
+ </wsdl:message>
+
+ <wsdl:message name="dedicatedReverseListResponse">
+ <wsdl:part name="return" type="typens:MyArrayOfDedicatedReverseStructType" />
+ </wsdl:message>
+
+ <wsdl:message name="domainWhoisObfuscatorSetRequest">
+ <wsdl:part name="session" type="xsd:string" />
+ <wsdl:part name="domain" type="xsd:string" />
+ <wsdl:part name="field" type="xsd:string" />
+ </wsdl:message>
+
+ <wsdl:message name="domainWhoisObfuscatorSetResponse" />
+
+ <wsdl:message name="rpsMigrationTodoRequest">
+ <wsdl:part name="session" type="xsd:string" />
+ <wsdl:part name="logicalRpsName" type="xsd:string" />
+ <wsdl:part name="physicalRpsTo" type="xsd:string" />
+ </wsdl:message>
+
+ <wsdl:message name="rpsMigrationTodoResponse">
+ <wsdl:part name="return" type="xsd:string" />
+ </wsdl:message>
+
+ <wsdl:message name="telephonyFunctionKeyModifyRequest">
+ <wsdl:part name="session" type="xsd:string" />
+ <wsdl:part name="number" type="xsd:string" />
+ <wsdl:part name="country" type="xsd:string" />
+ <wsdl:part name="keyNum" type="xsd:int" />
+ <wsdl:part name="function" type="xsd:string" />
+ <wsdl:part name="relatedNumber" type="xsd:string" />
+ </wsdl:message>
+
+ <wsdl:message name="telephonyFunctionKeyModifyResponse" />
+
+ <wsdl:message name="nicTldEligibilityRequest">
+ <wsdl:part name="session" type="xsd:string" />
+ <wsdl:part name="nic" type="xsd:string" />
+ <wsdl:part name="tld" type="xsd:string" />
+ </wsdl:message>
+
+ <wsdl:message name="nicTldEligibilityResponse">
+ <wsdl:part name="return" type="xsd:boolean" />
+ </wsdl:message>
+
+ <wsdl:message name="automatedMailGetStateRequest">
+ <wsdl:part name="session" type="xsd:string" />
+ <wsdl:part name="domain" type="xsd:string" />
+ </wsdl:message>
+
+ <wsdl:message name="automatedMailGetStateResponse">
+ <wsdl:part name="return" type="typens:automatedMailGetStateReturn" />
+ </wsdl:message>
+
+ <wsdl:message name="telephonyAbbreviatedNumberListRequest">
+ <wsdl:part name="session" type="xsd:string" />
+ <wsdl:part name="number" type="xsd:string" />
+ <wsdl:part name="country" type="xsd:string" />
+ </wsdl:message>
+
+ <wsdl:message name="telephonyAbbreviatedNumberListResponse">
+ <wsdl:part name="return" type="typens:MyArrayOfTelephonyAbbreviatedNumberStructType" />
+ </wsdl:message>
+
+ <wsdl:message name="sqlpriveMysqlLogsRequest">
+ <wsdl:part name="session" type="xsd:string" />
+ <wsdl:part name="server" type="xsd:string" />
+ </wsdl:message>
+
+ <wsdl:message name="sqlpriveMysqlLogsResponse">
+ <wsdl:part name="return" type="xsd:string" />
+ </wsdl:message>
+
+ <wsdl:message name="telephonyFaxModifyPasswordRequest">
+ <wsdl:part name="session" type="xsd:string" />
+ <wsdl:part name="number" type="xsd:string" />
+ <wsdl:part name="country" type="xsd:string" />
+ <wsdl:part name="password" type="xsd:string" />
+ </wsdl:message>
+
+ <wsdl:message name="telephonyFaxModifyPasswordResponse" />
+
+ <wsdl:message name="dedicatedBackupFtpAddRequest">
+ <wsdl:part name="session" type="xsd:string" />
+ <wsdl:part name="hostname" type="xsd:string" />
+ </wsdl:message>
+
+ <wsdl:message name="dedicatedBackupFtpAddResponse" />
+
+ <wsdl:message name="databaseDumpRequest">
+ <wsdl:part name="session" type="xsd:string" />
+ <wsdl:part name="domain" type="xsd:string" />
+ <wsdl:part name="db" type="xsd:string" />
+ <wsdl:part name="backup" type="xsd:string" />
+ </wsdl:message>
+
+ <wsdl:message name="databaseDumpResponse" />
+
+ <wsdl:message name="telephonySmsDeleteRequest">
+ <wsdl:part name="session" type="xsd:string" />
+ <wsdl:part name="smsAccount" type="xsd:string" />
+ <wsdl:part name="smsIds" type="typens:MyArrayOfIntType" />
+ </wsdl:message>
+
+ <wsdl:message name="telephonySmsDeleteResponse" />
+
+ <wsdl:message name="telephonyDirectoryModifyPublicationRequest">
+ <wsdl:part name="session" type="xsd:string" />
+ <wsdl:part name="callNumber" type="xsd:string" />
+ <wsdl:part name="countryCode" type="xsd:string" />
+ <wsdl:part name="lineDescription" type="xsd:string" />
+ <wsdl:part name="displayFirstName" type="xsd:string" />
+ <wsdl:part name="displayOnlyCity" type="xsd:string" />
+ <wsdl:part name="displayUniversalDirectory" type="xsd:string" />
+ <wsdl:part name="displayMarketingDirectory" type="xsd:string" />
+ <wsdl:part name="displaySearchReverse" type="xsd:string" />
+ <wsdl:part name="receivePJDirectory" type="xsd:string" />
+ </wsdl:message>
+
+ <wsdl:message name="telephonyDirectoryModifyPublicationResponse" />
+
+ <wsdl:message name="domainResellerSetRequest">
+ <wsdl:part name="session" type="xsd:string" />
+ <wsdl:part name="domain" type="xsd:string" />
+ <wsdl:part name="profile" type="xsd:string" />
+ </wsdl:message>
+
+ <wsdl:message name="domainResellerSetResponse" />
+
+ <wsdl:message name="crontabListRequest">
+ <wsdl:part name="session" type="xsd:string" />
+ <wsdl:part name="domain" type="xsd:string" />
+ </wsdl:message>
+
+ <wsdl:message name="crontabListResponse">
+ <wsdl:part name="return" type="typens:MyArrayOfCrontabStructType" />
+ </wsdl:message>
+
+ <wsdl:message name="telephonyPhonebookOnGroupAddRequest">
+ <wsdl:part name="session" type="xsd:string" />
+ <wsdl:part name="group" type="xsd:string" />
+ <wsdl:part name="name" type="xsd:string" />
+ </wsdl:message>
+
+ <wsdl:message name="telephonyPhonebookOnGroupAddResponse">
+ <wsdl:part name="return" type="xsd:int" />
+ </wsdl:message>
+
+ <wsdl:message name="dedicatedVirtualMacIpUsedGetListRequest">
+ <wsdl:part name="session" type="xsd:string" />
+ <wsdl:part name="hostname" type="xsd:string" />
+ </wsdl:message>
+
+ <wsdl:message name="dedicatedVirtualMacIpUsedGetListResponse">
+ <wsdl:part name="return" type="typens:MyArrayOfDedicatedIpVirtualMacUsedStructType" />
+ </wsdl:message>
+
+ <wsdl:message name="telephonyLineSwitchOfferPossibilityRequest">
+ <wsdl:part name="session" type="xsd:string" />
+ <wsdl:part name="number" type="xsd:string" />
+ <wsdl:part name="country" type="xsd:string" />
+ </wsdl:message>
+
+ <wsdl:message name="telephonyLineSwitchOfferPossibilityResponse">
+ <wsdl:part name="return" type="typens:MyArrayOfTelephonyLineSwitchPossibilityPriceStructType" />
+ </wsdl:message>
+
+ <wsdl:message name="telephonySmsSenderListRequest">
+ <wsdl:part name="session" type="xsd:string" />
+ <wsdl:part name="smsAccount" type="xsd:string" />
+ </wsdl:message>
+
+ <wsdl:message name="telephonySmsSenderListResponse">
+ <wsdl:part name="return" type="typens:MyArrayOfTelephonySmsSenderStructType" />
+ </wsdl:message>
+
+ <wsdl:message name="resellerDomainRestoreRequest">
+ <wsdl:part name="session" type="xsd:string" />
+ <wsdl:part name="domain" type="xsd:string" />
+ <wsdl:part name="dryRun" type="xsd:boolean" />
+ </wsdl:message>
+
+ <wsdl:message name="resellerDomainRestoreResponse" />
+
+ <wsdl:message name="ticketAnswerRequest">
+ <wsdl:part name="session" type="xsd:string" />
+ <wsdl:part name="ticketId" type="xsd:int" />
+ <wsdl:part name="message" type="xsd:string" />
+ </wsdl:message>
+
+ <wsdl:message name="ticketAnswerResponse" />
+
+ <wsdl:message name="sqlpriveCronSetRequest">
+ <wsdl:part name="session" type="xsd:string" />
+ <wsdl:part name="server" type="xsd:string" />
+ <wsdl:part name="operation" type="xsd:string" />
+ <wsdl:part name="recursivityDays" type="typens:MyArrayOfStringType" />
+ <wsdl:part name="recursivityHours" type="typens:MyArrayOfStringType" />
+ <wsdl:part name="endDate" type="xsd:string" />
+ <wsdl:part name="comment" type="xsd:string" />
+ </wsdl:message>
+
+ <wsdl:message name="sqlpriveCronSetResponse" />
+
+ <wsdl:message name="telephonySipToAliasOfferRequest">
+ <wsdl:part name="session" type="xsd:string" />
+ <wsdl:part name="number" type="xsd:string" />
+ <wsdl:part name="country" type="xsd:string" />
+ <wsdl:part name="delete" type="xsd:boolean" />
+ </wsdl:message>
+
+ <wsdl:message name="telephonySipToAliasOfferResponse" />
+
+ <wsdl:message name="telephonyFunctionKeyListRequest">
+ <wsdl:part name="session" type="xsd:string" />
+ <wsdl:part name="number" type="xsd:string" />
+ <wsdl:part name="country" type="xsd:string" />
+ </wsdl:message>
+
+ <wsdl:message name="telephonyFunctionKeyListResponse">
+ <wsdl:part name="return" type="typens:MyArrayOfTelephonyFunctionKeyStructType" />
+ </wsdl:message>
+
+ <wsdl:message name="dedicatedNetbootInfoRequest">
+ <wsdl:part name="session" type="xsd:string" />
+ <wsdl:part name="hostname" type="xsd:string" />
+ </wsdl:message>
+
+ <wsdl:message name="dedicatedNetbootInfoResponse">
+ <wsdl:part name="return" type="typens:dedicatedNetbootStruct" />
+ </wsdl:message>
+
+ <wsdl:message name="telephonySmsGetCallBackRequest">
+ <wsdl:part name="session" type="xsd:string" />
+ <wsdl:part name="smsAccount" type="xsd:string" />
+ </wsdl:message>
+
+ <wsdl:message name="telephonySmsGetCallBackResponse">
+ <wsdl:part name="return" type="xsd:string" />
+ </wsdl:message>
+
+ <wsdl:message name="telephonySviModifyRequest">
+ <wsdl:part name="session" type="xsd:string" />
+ <wsdl:part name="number" type="xsd:string" />
+ <wsdl:part name="country" type="xsd:string" />
+ <wsdl:part name="url" type="xsd:string" />
+ <wsdl:part name="recordinfo" type="xsd:string" />
+ </wsdl:message>
+
+ <wsdl:message name="telephonySviModifyResponse" />
+
+ <wsdl:message name="telephonySmsplusServiceDeleteRequest">
+ <wsdl:part name="session" type="xsd:string" />
+ <wsdl:part name="shortCode" type="xsd:string" />
+ <wsdl:part name="keyword" type="xsd:string" />
+ <wsdl:part name="cancelDelete" type="xsd:boolean" />
+ </wsdl:message>
+
+ <wsdl:message name="telephonySmsplusServiceDeleteResponse" />
+
+ <wsdl:message name="domainOperationRelaunchRequest">
+ <wsdl:part name="session" type="xsd:string" />
+ <wsdl:part name="id" type="xsd:int" />
+ </wsdl:message>
+
+ <wsdl:message name="domainOperationRelaunchResponse" />
+
+ <wsdl:message name="telephonyLineSwitchOfferRequest">
+ <wsdl:part name="session" type="xsd:string" />
+ <wsdl:part name="number" type="xsd:string" />
+ <wsdl:part name="country" type="xsd:string" />
+ <wsdl:part name="offer" type="xsd:string" />
+ </wsdl:message>
+
+ <wsdl:message name="telephonyLineSwitchOfferResponse" />
+
+ <wsdl:message name="telephonyTrunkExternalDisplayedNumberCheckRequest">
+ <wsdl:part name="session" type="xsd:string" />
+ <wsdl:part name="number" type="xsd:string" />
+ <wsdl:part name="country" type="xsd:string" />
+ <wsdl:part name="externalDisplayedNumber" type="xsd:string" />
+ </wsdl:message>
+
+ <wsdl:message name="telephonyTrunkExternalDisplayedNumberCheckResponse" />
+
+ <wsdl:message name="telephonyDelClosureEventsRequest">
+ <wsdl:part name="session" type="xsd:string" />
+ <wsdl:part name="number" type="xsd:string" />
+ <wsdl:part name="country" type="xsd:string" />
+ <wsdl:part name="deleteAll" type="xsd:int" />
+ <wsdl:part name="uids" type="typens:MyArrayOfStringType" />
+ </wsdl:message>
+
+ <wsdl:message name="telephonyDelClosureEventsResponse" />
+
+ <wsdl:message name="telephonyFreefaxToVoicefaxCheckListRequest">
+ <wsdl:part name="session" type="xsd:string" />
+ <wsdl:part name="billingAccount" type="xsd:string" />
+ </wsdl:message>
+
+ <wsdl:message name="telephonyFreefaxToVoicefaxCheckListResponse">
+ <wsdl:part name="return" type="typens:MyArrayOfTelephonyFreefaxToVoicefaxCheckStructType" />
+ </wsdl:message>
+
+ <wsdl:message name="telephonyVoicemailModifyPasswordRequest">
+ <wsdl:part name="session" type="xsd:string" />
+ <wsdl:part name="number" type="xsd:string" />
+ <wsdl:part name="country" type="xsd:string" />
+ <wsdl:part name="password" type="xsd:string" />
+ <wsdl:part name="forcePassword" type="xsd:boolean" />
+ </wsdl:message>
+
+ <wsdl:message name="telephonyVoicemailModifyPasswordResponse" />
+
+ <wsdl:message name="telephonySpareCapabilitiesRequest">
+ <wsdl:part name="session" type="xsd:string" />
+ <wsdl:part name="type" type="xsd:string" />
+ <wsdl:part name="family" type="xsd:string" />
+ <wsdl:part name="model" type="xsd:string" />
+ </wsdl:message>
+
+ <wsdl:message name="telephonySpareCapabilitiesResponse">
+ <wsdl:part name="return" type="typens:MyArrayOfTelephonySpareFamilyStructType" />
+ </wsdl:message>
+
+ <wsdl:message name="dnsSoaModifyRequest">
+ <wsdl:part name="session" type="xsd:string" />
+ <wsdl:part name="domain" type="xsd:string" />
+ <wsdl:part name="ttl" type="xsd:int" />
+ </wsdl:message>
+
+ <wsdl:message name="dnsSoaModifyResponse" />
+
+ <wsdl:message name="telephonyPhonebookOnSmsDelRequest">
+ <wsdl:part name="session" type="xsd:string" />
+ <wsdl:part name="smsAccount" type="xsd:string" />
+ <wsdl:part name="id" type="xsd:int" />
+ </wsdl:message>
+
+ <wsdl:message name="telephonyPhonebookOnSmsDelResponse" />
+
+ <wsdl:message name="telephonyPhonebookShareRequest">
+ <wsdl:part name="session" type="xsd:string" />
+ <wsdl:part name="number" type="xsd:string" />
+ <wsdl:part name="country" type="xsd:string" />
+ <wsdl:part name="id" type="xsd:int" />
+ <wsdl:part name="targetNumber" type="xsd:string" />
+ <wsdl:part name="name" type="xsd:string" />
+ <wsdl:part name="mode" type="xsd:string" />
+ </wsdl:message>
+
+ <wsdl:message name="telephonyPhonebookShareResponse">
+ <wsdl:part name="return" type="xsd:int" />
+ </wsdl:message>
+
+ <wsdl:message name="telephonySmsSetUserQuotaRequest">
+ <wsdl:part name="session" type="xsd:string" />
+ <wsdl:part name="smsAccount" type="xsd:string" />
+ <wsdl:part name="login" type="xsd:string" />
+ <wsdl:part name="status" type="xsd:string" />
+ <wsdl:part name="quotaDiff" type="xsd:string" />
+ </wsdl:message>
+
+ <wsdl:message name="telephonySmsSetUserQuotaResponse" />
+
+ <wsdl:message name="cmsInstallRequest">
+ <wsdl:part name="session" type="xsd:string" />
+ <wsdl:part name="domain" type="xsd:string" />
+ <wsdl:part name="cmsName" type="xsd:string" />
+ <wsdl:part name="path" type="xsd:string" />
+ <wsdl:part name="language" type="xsd:string" />
+ </wsdl:message>
+
+ <wsdl:message name="cmsInstallResponse" />
+
+ <wsdl:message name="dedicatedIpLoadBalancingAddRequest">
+ <wsdl:part name="session" type="xsd:string" />
+ <wsdl:part name="name" type="xsd:string" />
+ <wsdl:part name="ipLoadBalancing" type="xsd:string" />
+ <wsdl:part name="serverList" type="typens:MyArrayOfStringType" />
+ </wsdl:message>
+
+ <wsdl:message name="dedicatedIpLoadBalancingAddResponse" />
+
+ <wsdl:message name="supportGetAllVisibleCategoriesRequest">
+ <wsdl:part name="session" type="xsd:string" />
+ </wsdl:message>
+
+ <wsdl:message name="supportGetAllVisibleCategoriesResponse">
+ <wsdl:part name="return" type="typens:MyArrayOfSupportCategoryStructType" />
+ </wsdl:message>
+
+ <wsdl:message name="telephonySmsHistoryCsvRequest">
+ <wsdl:part name="session" type="xsd:string" />
+ <wsdl:part name="smsAccount" type="xsd:string" />
+ <wsdl:part name="smsId" type="xsd:int" />
+ <wsdl:part name="user" type="xsd:string" />
+ <wsdl:part name="pagingStart" type="xsd:int" />
+ <wsdl:part name="pagingLimit" type="xsd:int" />
+ <wsdl:part name="sortField" type="xsd:string" />
+ <wsdl:part name="sortOrder" type="xsd:string" />
+ <wsdl:part name="tag" type="xsd:string" />
+ <wsdl:part name="filter" type="xsd:string" />
+ </wsdl:message>
+
+ <wsdl:message name="telephonySmsHistoryCsvResponse">
+ <wsdl:part name="return" type="xsd:string" />
+ </wsdl:message>
+
+ <wsdl:message name="telephonyAbbreviatedNumberOnGroupListRequest">
+ <wsdl:part name="session" type="xsd:string" />
+ <wsdl:part name="group" type="xsd:string" />
+ </wsdl:message>
+
+ <wsdl:message name="telephonyAbbreviatedNumberOnGroupListResponse">
+ <wsdl:part name="return" type="typens:MyArrayOfTelephonyAbbreviatedNumberStructType" />
+ </wsdl:message>
+
+ <wsdl:message name="dedicatedAvailableNotificationNicsGetRequest">
+ <wsdl:part name="session" type="xsd:string" />
+ <wsdl:part name="hostname" type="xsd:string" />
+ </wsdl:message>
+
+ <wsdl:message name="dedicatedAvailableNotificationNicsGetResponse">
+ <wsdl:part name="return" type="typens:MyArrayOfStringType" />
+ </wsdl:message>
+
+ <wsdl:message name="telephonyLineLogsRequest">
+ <wsdl:part name="session" type="xsd:string" />
+ <wsdl:part name="number" type="xsd:string" />
+ <wsdl:part name="country" type="xsd:string" />
+ <wsdl:part name="pagingStart" type="xsd:int" />
+ <wsdl:part name="pagingLimit" type="xsd:int" />
+ </wsdl:message>
+
+ <wsdl:message name="telephonyLineLogsResponse">
+ <wsdl:part name="return" type="typens:telephonyLineLogsStruct" />
+ </wsdl:message>
+
+ <wsdl:message name="multiFtpListRequest">
+ <wsdl:part name="session" type="xsd:string" />
+ <wsdl:part name="domain" type="xsd:string" />
+ </wsdl:message>
+
+ <wsdl:message name="multiFtpListResponse">
+ <wsdl:part name="return" type="typens:MyArrayOfMultiFtpStructType" />
+ </wsdl:message>
+
+ <wsdl:message name="telephonySpareReplaceRequest">
+ <wsdl:part name="session" type="xsd:string" />
+ <wsdl:part name="type" type="xsd:string" />
+ <wsdl:part name="service" type="xsd:string" />
+ <wsdl:part name="spare" type="xsd:string" />
+ <wsdl:part name="action" type="xsd:string" />
+ <wsdl:part name="ip" type="xsd:string" />
+ </wsdl:message>
+
+ <wsdl:message name="telephonySpareReplaceResponse">
+ <wsdl:part name="return" type="typens:telephonyPlugAndPhoneReinitConfigurationReturn" />
+ </wsdl:message>
+
+ <wsdl:message name="multiFtpAddRequest">
+ <wsdl:part name="session" type="xsd:string" />
+ <wsdl:part name="domain" type="xsd:string" />
+ <wsdl:part name="subdir" type="xsd:string" />
+ <wsdl:part name="loginsuffix" type="xsd:string" />
+ <wsdl:part name="password" type="xsd:string" />
+ </wsdl:message>
+
+ <wsdl:message name="multiFtpAddResponse" />
+
+ <wsdl:message name="sqlpriveMysqlDatabasePrivilegeListRequest">
+ <wsdl:part name="session" type="xsd:string" />
+ <wsdl:part name="server" type="xsd:string" />
+ </wsdl:message>
+
+ <wsdl:message name="sqlpriveMysqlDatabasePrivilegeListResponse">
+ <wsdl:part name="return" type="typens:MyArrayOfSqlpriveMysqlDatabasePrivilegeStructType" />
+ </wsdl:message>
+
+ <wsdl:message name="emailAccessByNicRequest">
+ <wsdl:part name="session" type="xsd:string" />
+ </wsdl:message>
+
+ <wsdl:message name="emailAccessByNicResponse">
+ <wsdl:part name="return" type="typens:MyArrayOfStringType" />
+ </wsdl:message>
+
+ <wsdl:message name="telephonyClick2CallUserListRequest">
+ <wsdl:part name="session" type="xsd:string" />
+ <wsdl:part name="number" type="xsd:string" />
+ <wsdl:part name="country" type="xsd:string" />
+ </wsdl:message>
+
+ <wsdl:message name="telephonyClick2CallUserListResponse">
+ <wsdl:part name="return" type="typens:MyArrayOfStringType" />
+ </wsdl:message>
+
+ <wsdl:message name="zoneEntryDelRequest">
+ <wsdl:part name="session" type="xsd:string" />
+ <wsdl:part name="domain" type="xsd:string" />
+ <wsdl:part name="subdomain" type="xsd:string" />
+ <wsdl:part name="fieldtype" type="xsd:string" />
+ <wsdl:part name="target" type="xsd:string" />
+ </wsdl:message>
+
+ <wsdl:message name="zoneEntryDelResponse" />
+
+ <wsdl:message name="prepaidSetThresholdRequest">
+ <wsdl:part name="session" type="xsd:string" />
+ <wsdl:part name="nic" type="xsd:string" />
+ <wsdl:part name="threshold" type="xsd:int" />
+ </wsdl:message>
+
+ <wsdl:message name="prepaidSetThresholdResponse" />
+
+ <wsdl:message name="telephonyVoicemailMailboxListRequest">
+ <wsdl:part name="session" type="xsd:string" />
+ <wsdl:part name="number" type="xsd:string" />
+ <wsdl:part name="country" type="xsd:string" />
+ <wsdl:part name="pagingStart" type="xsd:int" />
+ <wsdl:part name="pagingLimit" type="xsd:int" />
+ <wsdl:part name="sortField" type="xsd:string" />
+ <wsdl:part name="sortOrder" type="xsd:string" />
+ </wsdl:message>
+
+ <wsdl:message name="telephonyVoicemailMailboxListResponse">
+ <wsdl:part name="return" type="typens:MyArrayOfTelephonyVoicemailMailboxStructType" />
+ </wsdl:message>
+
+ <wsdl:message name="resellerDomainRenewRequest">
+ <wsdl:part name="session" type="xsd:string" />
+ <wsdl:part name="domain" type="xsd:string" />
+ <wsdl:part name="dryRun" type="xsd:boolean" />
+ </wsdl:message>
+
+ <wsdl:message name="resellerDomainRenewResponse" />
+
+ <wsdl:message name="popDelRequest">
+ <wsdl:part name="session" type="xsd:string" />
+ <wsdl:part name="domain" type="xsd:string" />
+ <wsdl:part name="pop" type="xsd:string" />
+ </wsdl:message>
+
+ <wsdl:message name="popDelResponse" />
+
+ <wsdl:message name="telephonyFaxCampaignDetailsRequest">
+ <wsdl:part name="session" type="xsd:string" />
+ <wsdl:part name="number" type="xsd:string" />
+ <wsdl:part name="country" type="xsd:string" />
+ <wsdl:part name="reference" type="xsd:string" />
+ <wsdl:part name="sendRecipients" type="xsd:boolean" />
+ </wsdl:message>
+
+ <wsdl:message name="telephonyFaxCampaignDetailsResponse">
+ <wsdl:part name="return" type="typens:telephonyFaxCampaignDetailsStruct" />
+ </wsdl:message>
+
+ <wsdl:message name="emailFilterRuleDelRequest">
+ <wsdl:part name="session" type="xsd:string" />
+ <wsdl:part name="domain" type="xsd:string" />
+ <wsdl:part name="pop" type="xsd:string" />
+ <wsdl:part name="filter" type="xsd:string" />
+ <wsdl:part name="id" type="xsd:int" />
+ </wsdl:message>
+
+ <wsdl:message name="emailFilterRuleDelResponse" />
+
+ <wsdl:message name="telephonyPhonebookOnGroupDelRequest">
+ <wsdl:part name="session" type="xsd:string" />
+ <wsdl:part name="group" type="xsd:string" />
+ <wsdl:part name="id" type="xsd:int" />
+ </wsdl:message>
+
+ <wsdl:message name="telephonyPhonebookOnGroupDelResponse" />
+
+ <wsdl:message name="telephonyPhonebookOnGroupListRequest">
+ <wsdl:part name="session" type="xsd:string" />
+ <wsdl:part name="group" type="xsd:string" />
+ </wsdl:message>
+
+ <wsdl:message name="telephonyPhonebookOnGroupListResponse">
+ <wsdl:part name="return" type="typens:MyArrayOfTelephonyPhonebookStructType" />
+ </wsdl:message>
+
+ <wsdl:message name="telephonySpecialNumberCustomListRequest">
+ <wsdl:part name="session" type="xsd:string" />
+ <wsdl:part name="country" type="xsd:string" />
+ <wsdl:part name="prefix" type="xsd:string" />
+ </wsdl:message>
+
+ <wsdl:message name="telephonySpecialNumberCustomListResponse">
+ <wsdl:part name="return" type="typens:telephonySpecialNumberCustomListReturn" />
+ </wsdl:message>
+
+ <wsdl:message name="dedicatedMonitoringServiceDelRequest">
+ <wsdl:part name="session" type="xsd:string" />
+ <wsdl:part name="hostname" type="xsd:string" />
+ <wsdl:part name="itemsIdTable" type="typens:MyArrayOfStringType" />
+ </wsdl:message>
+
+ <wsdl:message name="dedicatedMonitoringServiceDelResponse" />
+
+ <wsdl:message name="telephonyFMHuntingModificationSimultaneousCallsRequest">
+ <wsdl:part name="session" type="xsd:string" />
+ <wsdl:part name="number" type="xsd:string" />
+ <wsdl:part name="country" type="xsd:string" />
+ <wsdl:part name="billingAccount" type="xsd:string" />
+ <wsdl:part name="numberOfCalls" type="xsd:int" />
+ </wsdl:message>
+
+ <wsdl:message name="telephonyFMHuntingModificationSimultaneousCallsResponse" />
+
+ <wsdl:message name="emailFilterPriorityRequest">
+ <wsdl:part name="session" type="xsd:string" />
+ <wsdl:part name="domain" type="xsd:string" />
+ <wsdl:part name="pop" type="xsd:string" />
+ <wsdl:part name="filter" type="xsd:string" />
+ <wsdl:part name="priority" type="xsd:string" />
+ </wsdl:message>
+
+ <wsdl:message name="emailFilterPriorityResponse" />
+
+ <wsdl:message name="accountAlertThresholdSetRequest">
+ <wsdl:part name="session" type="xsd:string" />
+ <wsdl:part name="threshold" type="xsd:int" />
+ </wsdl:message>
+
+ <wsdl:message name="accountAlertThresholdSetResponse" />
+
+ <wsdl:message name="emailFilterDelRequest">
+ <wsdl:part name="session" type="xsd:string" />
+ <wsdl:part name="domain" type="xsd:string" />
+ <wsdl:part name="pop" type="xsd:string" />
+ <wsdl:part name="filter" type="xsd:string" />
+ </wsdl:message>
+
+ <wsdl:message name="emailFilterDelResponse" />
+
+ <wsdl:message name="resellerDomainCreateRequest">
+ <wsdl:part name="session" type="xsd:string" />
+ <wsdl:part name="domain" type="xsd:string" />
+ <wsdl:part name="hosting" type="xsd:string" />
+ <wsdl:part name="offer" type="xsd:string" />
+ <wsdl:part name="profile" type="xsd:string" />
+ <wsdl:part name="owo" type="xsd:string" />
+ <wsdl:part name="owner" type="xsd:string" />
+ <wsdl:part name="admin" type="xsd:string" />
+ <wsdl:part name="tech" type="xsd:string" />
+ <wsdl:part name="billing" type="xsd:string" />
+ <wsdl:part name="dns1" type="xsd:string" />
+ <wsdl:part name="dns2" type="xsd:string" />
+ <wsdl:part name="dns3" type="xsd:string" />
+ <wsdl:part name="dns4" type="xsd:string" />
+ <wsdl:part name="dns5" type="xsd:string" />
+ <wsdl:part name="method" type="xsd:string" />
+ <wsdl:part name="legalName" type="xsd:string" />
+ <wsdl:part name="legalNumber" type="xsd:string" />
+ <wsdl:part name="afnicIdent" type="xsd:string" />
+ <wsdl:part name="birthDate" type="xsd:string" />
+ <wsdl:part name="birthCity" type="xsd:string" />
+ <wsdl:part name="birthDepartement" type="xsd:string" />
+ <wsdl:part name="birthCountry" type="xsd:string" />
+ <wsdl:part name="dryRun" type="xsd:boolean" />
+ </wsdl:message>
+
+ <wsdl:message name="resellerDomainCreateResponse" />
+
+ <wsdl:message name="managedServicesSnapshotUpdateRequest">
+ <wsdl:part name="session" type="xsd:string" />
+ <wsdl:part name="domain" type="xsd:string" />
+ <wsdl:part name="snapShotList" type="xsd:string" />
+ </wsdl:message>
+
+ <wsdl:message name="managedServicesSnapshotUpdateResponse" />
+
+ <wsdl:message name="supportGetThreadTreeRequest">
+ <wsdl:part name="session" type="xsd:string" />
+ <wsdl:part name="threadId" type="xsd:int" />
+ </wsdl:message>
+
+ <wsdl:message name="supportGetThreadTreeResponse">
+ <wsdl:part name="return" type="typens:supportThreadTreeReturn" />
+ </wsdl:message>
+
+ <wsdl:message name="emailSetDomainCatchAllRequest">
+ <wsdl:part name="session" type="xsd:string" />
+ <wsdl:part name="domain" type="xsd:string" />
+ <wsdl:part name="type" type="xsd:string" />
+ <wsdl:part name="pop" type="xsd:string" />
+ <wsdl:part name="address" type="xsd:string" />
+ </wsdl:message>
+
+ <wsdl:message name="emailSetDomainCatchAllResponse" />
+
+ <wsdl:message name="domainCapabilitiesRequest">
+ <wsdl:part name="session" type="xsd:string" />
+ <wsdl:part name="domain" type="xsd:string" />
+ </wsdl:message>
+
+ <wsdl:message name="domainCapabilitiesResponse">
+ <wsdl:part name="return" type="typens:domainCapabilitiesReturn" />
+ </wsdl:message>
+
+ <wsdl:message name="dedicatedIpLoadBalancingServerStateModifyRequest">
+ <wsdl:part name="session" type="xsd:string" />
+ <wsdl:part name="ipLoadBalancing" type="xsd:string" />
+ <wsdl:part name="hostname" type="xsd:string" />
+ <wsdl:part name="state" type="xsd:string" />
+ </wsdl:message>
+
+ <wsdl:message name="dedicatedIpLoadBalancingServerStateModifyResponse" />
+
+ <wsdl:message name="telephonyVoicemailMailboxDownloadRequest">
+ <wsdl:part name="session" type="xsd:string" />
+ <wsdl:part name="number" type="xsd:string" />
+ <wsdl:part name="country" type="xsd:string" />
+ <wsdl:part name="id" type="xsd:int" />
+ <wsdl:part name="format" type="xsd:string" />
+ <wsdl:part name="folder" type="xsd:string" />
+ </wsdl:message>
+
+ <wsdl:message name="telephonyVoicemailMailboxDownloadResponse">
+ <wsdl:part name="return" type="typens:telephonyVoicemailMailboxDownloadReturn" />
+ </wsdl:message>
+
+ <wsdl:message name="dedicatedReverseModifyRequest">
+ <wsdl:part name="session" type="xsd:string" />
+ <wsdl:part name="hostname" type="xsd:string" />
+ <wsdl:part name="ip" type="xsd:string" />
+ <wsdl:part name="reverse" type="xsd:string" />
+ </wsdl:message>
+
+ <wsdl:message name="dedicatedReverseModifyResponse" />
+
+ <wsdl:message name="telephonyNicGetIpRestrictionRequest">
+ <wsdl:part name="session" type="xsd:string" />
+ </wsdl:message>
+
+ <wsdl:message name="telephonyNicGetIpRestrictionResponse">
+ <wsdl:part name="return" type="typens:MyArrayOfStringType" />
+ </wsdl:message>
+
+ <wsdl:message name="telephonyGetClosureEventsAsArrayRequest">
+ <wsdl:part name="session" type="xsd:string" />
+ <wsdl:part name="number" type="xsd:string" />
+ <wsdl:part name="country" type="xsd:string" />
+ <wsdl:part name="dateStart" type="xsd:string" />
+ <wsdl:part name="dateEnd" type="xsd:string" />
+ <wsdl:part name="categories" type="typens:MyArrayOfStringType" />
+ </wsdl:message>
+
+ <wsdl:message name="telephonyGetClosureEventsAsArrayResponse">
+ <wsdl:part name="return" type="typens:telephonyGetClosureEventsAsArrayStruct" />
+ </wsdl:message>
+
+ <wsdl:message name="telephonyPhonebookOnSmsContactDelRequest">
+ <wsdl:part name="session" type="xsd:string" />
+ <wsdl:part name="smsAccount" type="xsd:string" />
+ <wsdl:part name="id" type="xsd:int" />
+ </wsdl:message>
+
+ <wsdl:message name="telephonyPhonebookOnSmsContactDelResponse" />
+
+ <wsdl:message name="telephonyReversmentsRefundIsPendingRequest">
+ <wsdl:part name="session" type="xsd:string" />
+ <wsdl:part name="billingAccount" type="xsd:string" />
+ </wsdl:message>
+
+ <wsdl:message name="telephonyReversmentsRefundIsPendingResponse" />
+
+ <wsdl:message name="serviceModifyContactRequest">
+ <wsdl:part name="session" type="xsd:string" />
+ <wsdl:part name="domain" type="xsd:string" />
+ <wsdl:part name="component" type="xsd:string" />
+ <wsdl:part name="contact" type="xsd:string" />
+ <wsdl:part name="nic" type="xsd:string" />
+ <wsdl:part name="componentSubType" type="xsd:string" />
+ </wsdl:message>
+
+ <wsdl:message name="serviceModifyContactResponse" />
+
+ <wsdl:message name="telephonyScreenListInfoModifyRequest">
+ <wsdl:part name="session" type="xsd:string" />
+ <wsdl:part name="number" type="xsd:string" />
+ <wsdl:part name="country" type="xsd:string" />
+ <wsdl:part name="screenListType" type="xsd:string" />
+ <wsdl:part name="numbersScreen" type="typens:MyArrayOfStringType" />
+ <wsdl:part name="naturesScreen" type="typens:MyArrayOfStringType" />
+ </wsdl:message>
+
+ <wsdl:message name="telephonyScreenListInfoModifyResponse" />
+
+ <wsdl:message name="domainDnsListRequest">
+ <wsdl:part name="session" type="xsd:string" />
+ <wsdl:part name="domain" type="xsd:string" />
+ </wsdl:message>
+
+ <wsdl:message name="domainDnsListResponse">
+ <wsdl:part name="return" type="typens:MyArrayOfNsStructType" />
+ </wsdl:message>
+
+ <wsdl:message name="dedicatedFailoverListRequest">
+ <wsdl:part name="session" type="xsd:string" />
+ <wsdl:part name="hostname" type="xsd:string" />
+ </wsdl:message>
+
+ <wsdl:message name="dedicatedFailoverListResponse">
+ <wsdl:part name="return" type="typens:MyArrayOfDedicatedFailoverStructType" />
+ </wsdl:message>
+
+ <wsdl:message name="emailDomainMxListRequest">
+ <wsdl:part name="session" type="xsd:string" />
+ <wsdl:part name="domain" type="xsd:string" />
+ </wsdl:message>
+
+ <wsdl:message name="emailDomainMxListResponse">
+ <wsdl:part name="return" type="typens:MyArrayOfZoneStructType" />
+ </wsdl:message>
+
+ <wsdl:message name="managedServicesHostMasterIpGetRequest">
+ <wsdl:part name="session" type="xsd:string" />
+ <wsdl:part name="domain" type="xsd:string" />
+ </wsdl:message>
+
+ <wsdl:message name="managedServicesHostMasterIpGetResponse">
+ <wsdl:part name="return" type="xsd:string" />
+ </wsdl:message>
+
+ <wsdl:message name="dedicatedSecondaryDNSInfoRequest">
+ <wsdl:part name="session" type="xsd:string" />
+ <wsdl:part name="hostname" type="xsd:string" />
+ <wsdl:part name="ip" type="xsd:string" />
+ </wsdl:message>
+
+ <wsdl:message name="dedicatedSecondaryDNSInfoResponse">
+ <wsdl:part name="return" type="typens:MyArrayOfSecondaryDNSStructType" />
+ </wsdl:message>
+
+ <wsdl:message name="telephonySmsplusServiceReversableTicketsListRequest">
+ <wsdl:part name="session" type="xsd:string" />
+ <wsdl:part name="shortCode" type="xsd:string" />
+ <wsdl:part name="keyword" type="xsd:string" />
+ <wsdl:part name="reversableDelay" type="xsd:string" />
+ <wsdl:part name="limit" type="xsd:int" />
+ <wsdl:part name="limitOffset" type="xsd:int" />
+ <wsdl:part name="sort" type="xsd:string" />
+ <wsdl:part name="filter" type="xsd:string" />
+ </wsdl:message>
+
+ <wsdl:message name="telephonySmsplusServiceReversableTicketsListResponse">
+ <wsdl:part name="return" type="typens:MyArrayOfTelephonySmsplusTicketsStructType" />
+ </wsdl:message>
+
+ <wsdl:message name="dedicatedRipeUpdateInetnumRequest">
+ <wsdl:part name="session" type="xsd:string" />
+ <wsdl:part name="block" type="xsd:string" />
+ <wsdl:part name="netname" type="xsd:string" />
+ <wsdl:part name="descr" type="xsd:string" />
+ <wsdl:part name="ripeId" type="xsd:string" />
+ </wsdl:message>
+
+ <wsdl:message name="dedicatedRipeUpdateInetnumResponse">
+ <wsdl:part name="return" type="typens:ripeUpdateReturn" />
+ </wsdl:message>
+
+ <wsdl:message name="ortDomainListRequest">
+ <wsdl:part name="session" type="xsd:string" />
+ <wsdl:part name="domain" type="xsd:string" />
+ </wsdl:message>
+
+ <wsdl:message name="ortDomainListResponse">
+ <wsdl:part name="return" type="typens:MyArrayOfOrtStructType" />
+ </wsdl:message>
+
+ <wsdl:message name="telephonyHuntingGenericScreenStatusModifyRequest">
+ <wsdl:part name="session" type="xsd:string" />
+ <wsdl:part name="number" type="xsd:string" />
+ <wsdl:part name="country" type="xsd:string" />
+ <wsdl:part name="status" type="xsd:boolean" />
+ </wsdl:message>
+
+ <wsdl:message name="telephonyHuntingGenericScreenStatusModifyResponse" />
+
+ <wsdl:message name="telephonySmsBlacklistedSendersListRequest">
+ <wsdl:part name="session" type="xsd:string" />
+ <wsdl:part name="smsAccount" type="xsd:string" />
+ <wsdl:part name="pagingStart" type="xsd:int" />
+ <wsdl:part name="pagingLimit" type="xsd:int" />
+ <wsdl:part name="sortField" type="xsd:string" />
+ <wsdl:part name="sortOrder" type="xsd:string" />
+ </wsdl:message>
+
+ <wsdl:message name="telephonySmsBlacklistedSendersListResponse">
+ <wsdl:part name="return" type="typens:telephonySmsBlacklistedSendersListReturn" />
+ </wsdl:message>
+
+ <wsdl:message name="telephonyPhonebookContactAddRequest">
+ <wsdl:part name="session" type="xsd:string" />
+ <wsdl:part name="number" type="xsd:string" />
+ <wsdl:part name="country" type="xsd:string" />
+ <wsdl:part name="id" type="xsd:int" />
+ <wsdl:part name="name" type="xsd:string" />
+ <wsdl:part name="surname" type="xsd:string" />
+ <wsdl:part name="workPhone" type="xsd:string" />
+ <wsdl:part name="workMobile" type="xsd:string" />
+ <wsdl:part name="homePhone" type="xsd:string" />
+ <wsdl:part name="homeMobile" type="xsd:string" />
+ <wsdl:part name="group" type="xsd:string" />
+ </wsdl:message>
+
+ <wsdl:message name="telephonyPhonebookContactAddResponse">
+ <wsdl:part name="return" type="xsd:int" />
+ </wsdl:message>
+
+ <wsdl:message name="domainOperationInfoRequest">
+ <wsdl:part name="session" type="xsd:string" />
+ <wsdl:part name="id" type="xsd:int" />
+ </wsdl:message>
+
+ <wsdl:message name="domainOperationInfoResponse">
+ <wsdl:part name="return" type="typens:operationStruct" />
+ </wsdl:message>
+
+ <wsdl:message name="dedicatedGetAvailableNetworkFromCountryRequest">
+ <wsdl:part name="session" type="xsd:string" />
+ <wsdl:part name="hostname" type="xsd:string" />
+ <wsdl:part name="country" type="xsd:string" />
+ </wsdl:message>
+
+ <wsdl:message name="dedicatedGetAvailableNetworkFromCountryResponse">
+ <wsdl:part name="return" type="typens:MyArrayOfStringType" />
+ </wsdl:message>
+
+ <wsdl:message name="telephonyPortabilityOrderSpecialNumberRequest">
+ <wsdl:part name="session" type="xsd:string" />
+ <wsdl:part name="billingAccount" type="xsd:string" />
+ <wsdl:part name="offer" type="xsd:string" />
+ <wsdl:part name="desireDate" type="xsd:string" />
+ <wsdl:part name="callNumber" type="xsd:string" />
+ <wsdl:part name="extraNumbers" type="typens:MyArrayOfStringType" />
+ <wsdl:part name="legalForm" type="xsd:string" />
+ <wsdl:part name="name" type="xsd:string" />
+ <wsdl:part name="firstName" type="xsd:string" />
+ <wsdl:part name="siret" type="xsd:string" />
+ <wsdl:part name="streetNumber" type="xsd:string" />
+ <wsdl:part name="streetNumberExtra" type="xsd:string" />
+ <wsdl:part name="streetType" type="xsd:string" />
+ <wsdl:part name="streetName" type="xsd:string" />
+ <wsdl:part name="building" type="xsd:string" />
+ <wsdl:part name="stair" type="xsd:string" />
+ <wsdl:part name="floor" type="xsd:string" />
+ <wsdl:part name="door" type="xsd:string" />
+ <wsdl:part name="zip" type="xsd:string" />
+ <wsdl:part name="city" type="xsd:string" />
+ <wsdl:part name="country" type="xsd:string" />
+ <wsdl:part name="displayUniversalDirectory" type="xsd:string" />
+ <wsdl:part name="category" type="xsd:string" />
+ <wsdl:part name="contactName" type="xsd:string" />
+ <wsdl:part name="contactNumber" type="xsd:string" />
+ </wsdl:message>
+
+ <wsdl:message name="telephonyPortabilityOrderSpecialNumberResponse">
+ <wsdl:part name="return" type="typens:telephonyNumberOrderReturn" />
+ </wsdl:message>
+
+ <wsdl:message name="billingGetReferencesToExpiredRequest">
+ <wsdl:part name="session" type="xsd:string" />
+ <wsdl:part name="delay" type="xsd:int" />
+ </wsdl:message>
+
+ <wsdl:message name="billingGetReferencesToExpiredResponse">
+ <wsdl:part name="return" type="typens:MyArrayOfBillingGetReferencesToExpiredStructType" />
+ </wsdl:message>
+
+ <wsdl:message name="dedicatedFailoverAddRequest">
+ <wsdl:part name="session" type="xsd:string" />
+ <wsdl:part name="hostname" type="xsd:string" />
+ <wsdl:part name="comment" type="xsd:string" />
+ <wsdl:part name="wantedIp" type="xsd:string" />
+ <wsdl:part name="routedTo" type="xsd:string" />
+ <wsdl:part name="country" type="xsd:string" />
+ </wsdl:message>
+
+ <wsdl:message name="dedicatedFailoverAddResponse" />
+
+ <wsdl:message name="telephonySmsUserSetCallBackRequest">
+ <wsdl:part name="session" type="xsd:string" />
+ <wsdl:part name="smsAccount" type="xsd:string" />
+ <wsdl:part name="login" type="xsd:string" />
+ <wsdl:part name="callBack" type="xsd:string" />
+ </wsdl:message>
+
+ <wsdl:message name="telephonySmsUserSetCallBackResponse" />
+
+ <wsdl:message name="prepaidGetSummaryRequest">
+ <wsdl:part name="session" type="xsd:string" />
+ <wsdl:part name="nic" type="xsd:string" />
+ </wsdl:message>
+
+ <wsdl:message name="prepaidGetSummaryResponse">
+ <wsdl:part name="return" type="typens:prepaidGetSummaryReturn" />
+ </wsdl:message>
+
+ <wsdl:message name="domainDnsUpdateRequest">
+ <wsdl:part name="session" type="xsd:string" />
+ <wsdl:part name="domain" type="xsd:string" />
+ <wsdl:part name="dns1" type="xsd:string" />
+ <wsdl:part name="ip1" type="xsd:string" />
+ <wsdl:part name="dns2" type="xsd:string" />
+ <wsdl:part name="ip2" type="xsd:string" />
+ <wsdl:part name="dns3" type="xsd:string" />
+ <wsdl:part name="ip3" type="xsd:string" />
+ <wsdl:part name="dns4" type="xsd:string" />
+ <wsdl:part name="ip4" type="xsd:string" />
+ <wsdl:part name="dns5" type="xsd:string" />
+ <wsdl:part name="ip5" type="xsd:string" />
+ </wsdl:message>
+
+ <wsdl:message name="domainDnsUpdateResponse">
+ <wsdl:part name="return" type="xsd:int" />
+ </wsdl:message>
+
+ <wsdl:message name="emailFilterRuleAddRequest">
+ <wsdl:part name="session" type="xsd:string" />
+ <wsdl:part name="domain" type="xsd:string" />
+ <wsdl:part name="pop" type="xsd:string" />
+ <wsdl:part name="filter" type="xsd:string" />
+ <wsdl:part name="header" type="xsd:string" />
+ <wsdl:part name="rule" type="xsd:string" />
+ <wsdl:part name="rule_param" type="xsd:string" />
+ </wsdl:message>
+
+ <wsdl:message name="emailFilterRuleAddResponse" />
+
+ <wsdl:message name="ripeUpdateInetnumRequest">
+ <wsdl:part name="session" type="xsd:string" />
+ <wsdl:part name="block" type="xsd:string" />
+ <wsdl:part name="netname" type="xsd:string" />
+ <wsdl:part name="descr" type="xsd:string" />
+ <wsdl:part name="ripeId" type="xsd:string" />
+ </wsdl:message>
+
+ <wsdl:message name="ripeUpdateInetnumResponse">
+ <wsdl:part name="return" type="typens:ripeUpdateReturn" />
+ </wsdl:message>
+
+ <wsdl:message name="domainResellerDelRequest">
+ <wsdl:part name="session" type="xsd:string" />
+ <wsdl:part name="domain" type="xsd:string" />
+ </wsdl:message>
+
+ <wsdl:message name="domainResellerDelResponse" />
+
+ <wsdl:message name="telephonyPhonebookOnGroupModifyRequest">
+ <wsdl:part name="session" type="xsd:string" />
+ <wsdl:part name="group" type="xsd:string" />
+ <wsdl:part name="id" type="xsd:int" />
+ <wsdl:part name="name" type="xsd:string" />
+ </wsdl:message>
+
+ <wsdl:message name="telephonyPhonebookOnGroupModifyResponse" />
+
+ <wsdl:message name="telephonyLineSwitchOldOfferPossibilityRequest">
+ <wsdl:part name="session" type="xsd:string" />
+ <wsdl:part name="numbers" type="typens:MyArrayOfStringType" />
+ <wsdl:part name="country" type="xsd:string" />
+ </wsdl:message>
+
+ <wsdl:message name="telephonyLineSwitchOldOfferPossibilityResponse">
+ <wsdl:part name="return" type="typens:MyArrayOfTelephonyLineSwitchOldOfferStructType" />
+ </wsdl:message>
+
+ <wsdl:message name="resellerDomainCreateITRequest">
+ <wsdl:part name="session" type="xsd:string" />
+ <wsdl:part name="domain" type="xsd:string" />
+ <wsdl:part name="hosting" type="xsd:string" />
+ <wsdl:part name="offer" type="xsd:string" />
+ <wsdl:part name="profile" type="xsd:string" />
+ <wsdl:part name="owo" type="xsd:string" />
+ <wsdl:part name="owner" type="xsd:string" />
+ <wsdl:part name="admin" type="xsd:string" />
+ <wsdl:part name="tech" type="xsd:string" />
+ <wsdl:part name="billing" type="xsd:string" />
+ <wsdl:part name="dns1" type="xsd:string" />
+ <wsdl:part name="dns2" type="xsd:string" />
+ <wsdl:part name="dns3" type="xsd:string" />
+ <wsdl:part name="dns4" type="xsd:string" />
+ <wsdl:part name="dns5" type="xsd:string" />
+ <wsdl:part name="legalRepresentantFirstName" type="xsd:string" />
+ <wsdl:part name="legalRepresentantLastName" type="xsd:string" />
+ <wsdl:part name="legalNumber" type="xsd:string" />
+ <wsdl:part name="vat" type="xsd:string" />
+ <wsdl:part name="birthDate" type="xsd:string" />
+ <wsdl:part name="birthCity" type="xsd:string" />
+ <wsdl:part name="birthDepartement" type="xsd:string" />
+ <wsdl:part name="birthCountry" type="xsd:string" />
+ <wsdl:part name="nationality" type="xsd:string" />
+ <wsdl:part name="dryRun" type="xsd:boolean" />
+ </wsdl:message>
+
+ <wsdl:message name="resellerDomainCreateITResponse" />
+
+ <wsdl:message name="notepadGetRequest">
+ <wsdl:part name="session" type="xsd:string" />
+ </wsdl:message>
+
+ <wsdl:message name="notepadGetResponse">
+ <wsdl:part name="return" type="xsd:string" />
+ </wsdl:message>
+
+ <wsdl:message name="telephonySmsplusServiceListRequest">
+ <wsdl:part name="session" type="xsd:string" />
+ <wsdl:part name="billingAccount" type="xsd:string" />
+ </wsdl:message>
+
+ <wsdl:message name="telephonySmsplusServiceListResponse">
+ <wsdl:part name="return" type="typens:MyArrayOfTelephonySmsplusDetailsStructType" />
+ </wsdl:message>
+
+ <wsdl:message name="telephonyHuntingModificationAnonymousCallRejectionRequest">
+ <wsdl:part name="session" type="xsd:string" />
+ <wsdl:part name="number" type="xsd:string" />
+ <wsdl:part name="country" type="xsd:string" />
+ <wsdl:part name="billingAccount" type="xsd:string" />
+ <wsdl:part name="anonymousCallRejection" type="xsd:boolean" />
+ </wsdl:message>
+
+ <wsdl:message name="telephonyHuntingModificationAnonymousCallRejectionResponse" />
+
+ <wsdl:message name="dedicatedFilterIrcServerRuleListRequest">
+ <wsdl:part name="session" type="xsd:string" />
+ <wsdl:part name="hostname" type="xsd:string" />
+ </wsdl:message>
+
+ <wsdl:message name="dedicatedFilterIrcServerRuleListResponse">
+ <wsdl:part name="return" type="typens:MyArrayOfDedicatedFilterIrcRuleStructType" />
+ </wsdl:message>
+
+ <wsdl:message name="telephonyNumberGetBillingAccountRequest">
+ <wsdl:part name="session" type="xsd:string" />
+ <wsdl:part name="number" type="xsd:string" />
+ <wsdl:part name="country" type="xsd:string" />
+ </wsdl:message>
+
+ <wsdl:message name="telephonyNumberGetBillingAccountResponse">
+ <wsdl:part name="return" type="xsd:string" />
+ </wsdl:message>
+
+ <wsdl:message name="managedServicesPartitionDeleteRequest">
+ <wsdl:part name="session" type="xsd:string" />
+ <wsdl:part name="storage" type="xsd:string" />
+ <wsdl:part name="name" type="xsd:string" />
+ </wsdl:message>
+
+ <wsdl:message name="managedServicesPartitionDeleteResponse" />
+
+ <wsdl:message name="telephonyTonesOptionsListRequest">
+ <wsdl:part name="session" type="xsd:string" />
+ <wsdl:part name="number" type="xsd:string" />
+ <wsdl:part name="country" type="xsd:string" />
+ </wsdl:message>
+
+ <wsdl:message name="telephonyTonesOptionsListResponse">
+ <wsdl:part name="return" type="typens:telephonyTonesOptionsListReturn" />
+ </wsdl:message>
+
+ <wsdl:message name="telephonySpareListRequest">
+ <wsdl:part name="session" type="xsd:string" />
+ <wsdl:part name="type" type="xsd:string" />
+ <wsdl:part name="service" type="xsd:string" />
+ </wsdl:message>
+
+ <wsdl:message name="telephonySpareListResponse">
+ <wsdl:part name="return" type="typens:telephonySpareListReturn" />
+ </wsdl:message>
+
+ <wsdl:message name="supportReportAnswerProblemRequest">
+ <wsdl:part name="session" type="xsd:string" />
+ <wsdl:part name="messageId" type="xsd:int" />
+ <wsdl:part name="reportReason" type="xsd:string" />
+ </wsdl:message>
+
+ <wsdl:message name="supportReportAnswerProblemResponse" />
+
+ <wsdl:message name="multiDomainListRequest">
+ <wsdl:part name="session" type="xsd:string" />
+ <wsdl:part name="domain" type="xsd:string" />
+ </wsdl:message>
+
+ <wsdl:message name="multiDomainListResponse">
+ <wsdl:part name="return" type="typens:MyArrayOfMultiDomainStructType" />
+ </wsdl:message>
+
+ <wsdl:message name="ticketCloseRequest">
+ <wsdl:part name="session" type="xsd:string" />
+ <wsdl:part name="ticketId" type="xsd:int" />
+ </wsdl:message>
+
+ <wsdl:message name="ticketCloseResponse" />
+
+ <wsdl:message name="dedicatedRipeCreateOrganisationRequest">
+ <wsdl:part name="session" type="xsd:string" />
+ <wsdl:part name="name" type="xsd:string" />
+ <wsdl:part name="address" type="xsd:string" />
+ <wsdl:part name="email" type="xsd:string" />
+ <wsdl:part name="abuse" type="xsd:string" />
+ <wsdl:part name="descr" type="xsd:string" />
+ <wsdl:part name="phone" type="xsd:string" />
+ <wsdl:part name="fax" type="xsd:string" />
+ <wsdl:part name="remarks" type="xsd:string" />
+ </wsdl:message>
+
+ <wsdl:message name="dedicatedRipeCreateOrganisationResponse">
+ <wsdl:part name="return" type="typens:ripeUpdateReturn" />
+ </wsdl:message>
+
+ <wsdl:message name="telephonyListSummationCallsFromNumberRequest">
+ <wsdl:part name="session" type="xsd:string" />
+ <wsdl:part name="number" type="xsd:string" />
+ <wsdl:part name="country" type="xsd:string" />
+ <wsdl:part name="reversableDelay" type="xsd:string" />
+ <wsdl:part name="sortOrder" type="xsd:string" />
+ <wsdl:part name="sortField" type="xsd:string" />
+ </wsdl:message>
+
+ <wsdl:message name="telephonyListSummationCallsFromNumberResponse">
+ <wsdl:part name="return" type="typens:MyArrayOfTelephonyReversmentsSummationStructType" />
+ </wsdl:message>
+
+ <wsdl:message name="telephonyConferenceGetParamsRequest">
+ <wsdl:part name="session" type="xsd:string" />
+ <wsdl:part name="number" type="xsd:string" />
+ <wsdl:part name="country" type="xsd:string" />
+ </wsdl:message>
+
+ <wsdl:message name="telephonyConferenceGetParamsResponse">
+ <wsdl:part name="return" type="typens:telephonyConferenceParamsReturn" />
+ </wsdl:message>
+
+ <wsdl:message name="telephonyPhonebookContactModifyRequest">
+ <wsdl:part name="session" type="xsd:string" />
+ <wsdl:part name="number" type="xsd:string" />
+ <wsdl:part name="country" type="xsd:string" />
+ <wsdl:part name="id" type="xsd:int" />
+ <wsdl:part name="name" type="xsd:string" />
+ <wsdl:part name="surname" type="xsd:string" />
+ <wsdl:part name="workPhone" type="xsd:string" />
+ <wsdl:part name="workMobile" type="xsd:string" />
+ <wsdl:part name="homePhone" type="xsd:string" />
+ <wsdl:part name="homeMobile" type="xsd:string" />
+ <wsdl:part name="group" type="xsd:string" />
+ </wsdl:message>
+
+ <wsdl:message name="telephonyPhonebookContactModifyResponse" />
+
+ <wsdl:message name="domainDnsGetOvhDefaultRequest">
+ <wsdl:part name="session" type="xsd:string" />
+ </wsdl:message>
+
+ <wsdl:message name="domainDnsGetOvhDefaultResponse">
+ <wsdl:part name="return" type="typens:MyArrayOfNsStructType" />
+ </wsdl:message>
+
+ <wsdl:message name="telephonyLineListRequest">
+ <wsdl:part name="session" type="xsd:string" />
+ <wsdl:part name="billingAccount" type="xsd:string" />
+ </wsdl:message>
+
+ <wsdl:message name="telephonyLineListResponse">
+ <wsdl:part name="return" type="typens:telephonyLineListReturn" />
+ </wsdl:message>
+
+ <wsdl:message name="databaseCreateRequest">
+ <wsdl:part name="session" type="xsd:string" />
+ <wsdl:part name="domain" type="xsd:string" />
+ <wsdl:part name="db" type="xsd:string" />
+ <wsdl:part name="password" type="xsd:string" />
+ <wsdl:part name="dbType" type="xsd:string" />
+ </wsdl:message>
+
+ <wsdl:message name="databaseCreateResponse" />
+
+ <wsdl:message name="billingGetAccessByNicRequest">
+ <wsdl:part name="session" type="xsd:string" />
+ </wsdl:message>
+
+ <wsdl:message name="billingGetAccessByNicResponse">
+ <wsdl:part name="return" type="typens:MyArrayOfStringType" />
+ </wsdl:message>
+
+ <wsdl:message name="dedicatedBackupExcludeAddRequest">
+ <wsdl:part name="session" type="xsd:string" />
+ <wsdl:part name="hostname" type="xsd:string" />
+ <wsdl:part name="backupId" type="xsd:string" />
+ <wsdl:part name="exclude" type="xsd:string" />
+ </wsdl:message>
+
+ <wsdl:message name="dedicatedBackupExcludeAddResponse" />
+
+ <wsdl:message name="serviceModifyOwnerRequest">
+ <wsdl:part name="session" type="xsd:string" />
+ <wsdl:part name="domain" type="xsd:string" />
+ <wsdl:part name="component" type="xsd:string" />
+ <wsdl:part name="legalform" type="xsd:string" />
+ <wsdl:part name="organisation" type="xsd:string" />
+ <wsdl:part name="name" type="xsd:string" />
+ <wsdl:part name="firstname" type="xsd:string" />
+ <wsdl:part name="address" type="xsd:string" />
+ <wsdl:part name="city" type="xsd:string" />
+ <wsdl:part name="zip" type="xsd:string" />
+ <wsdl:part name="area" type="xsd:string" />
+ <wsdl:part name="country" type="xsd:string" />
+ <wsdl:part name="phone" type="xsd:string" />
+ <wsdl:part name="fax" type="xsd:string" />
+ <wsdl:part name="email" type="xsd:string" />
+ <wsdl:part name="identityConfirmation" type="xsd:boolean" />
+ <wsdl:part name="acceptanceConfirmation" type="xsd:boolean" />
+ </wsdl:message>
+
+ <wsdl:message name="serviceModifyOwnerResponse" />
+
+ <wsdl:message name="telephonyLineOptionsModifyRequest">
+ <wsdl:part name="session" type="xsd:string" />
+ <wsdl:part name="number" type="xsd:string" />
+ <wsdl:part name="country" type="xsd:string" />
+ <wsdl:part name="identificationRestriction" type="xsd:boolean" />
+ <wsdl:part name="anonymousCallRejection" type="xsd:boolean" />
+ <wsdl:part name="doNotDisturb" type="xsd:boolean" />
+ <wsdl:part name="absentSuscriber" type="xsd:boolean" />
+ <wsdl:part name="lockOutCall" type="xsd:boolean" />
+ <wsdl:part name="lockOutCallPassword" type="xsd:string" />
+ <wsdl:part name="forwardUnconditional" type="xsd:boolean" />
+ <wsdl:part name="forwardUnconditionalNumber" type="xsd:string" />
+ <wsdl:part name="forwardNoReply" type="xsd:boolean" />
+ <wsdl:part name="forwardNoReplyDelay" type="xsd:int" />
+ <wsdl:part name="forwardNoReplyNumber" type="xsd:string" />
+ <wsdl:part name="forwardBusy" type="xsd:boolean" />
+ <wsdl:part name="forwardBusyNumber" type="xsd:string" />
+ <wsdl:part name="forwardBackup" type="xsd:boolean" />
+ <wsdl:part name="forwardBackupNumber" type="xsd:string" />
+ <wsdl:part name="displayCallNumber" type="xsd:string" />
+ <wsdl:part name="callWaiting" type="xsd:boolean" />
+ <wsdl:part name="forwardNoReplyNature" type="xsd:string" />
+ <wsdl:part name="forwardBackupNature" type="xsd:string" />
+ <wsdl:part name="forwardUnconditionalNature" type="xsd:string" />
+ <wsdl:part name="forwardBusyNature" type="xsd:string" />
+ </wsdl:message>
+
+ <wsdl:message name="telephonyLineOptionsModifyResponse" />
+
+ <wsdl:message name="telephonyHuntingGenericScreenSetRequest">
+ <wsdl:part name="session" type="xsd:string" />
+ <wsdl:part name="number" type="xsd:string" />
+ <wsdl:part name="country" type="xsd:string" />
+ <wsdl:part name="timesStart" type="typens:MyArrayOfStringType" />
+ <wsdl:part name="timesEnd" type="typens:MyArrayOfStringType" />
+ <wsdl:part name="daysType" type="typens:MyArrayOfStringType" />
+ <wsdl:part name="forwardPolicyIndex" type="typens:MyArrayOfStringType" />
+ </wsdl:message>
+
+ <wsdl:message name="telephonyHuntingGenericScreenSetResponse" />
+
+ <wsdl:message name="sqlpriveCronDelRequest">
+ <wsdl:part name="session" type="xsd:string" />
+ <wsdl:part name="server" type="xsd:string" />
+ <wsdl:part name="cronId" type="xsd:string" />
+ </wsdl:message>
+
+ <wsdl:message name="sqlpriveCronDelResponse" />
+
+ <wsdl:message name="telephonyFaxCampaignStartStopRequest">
+ <wsdl:part name="session" type="xsd:string" />
+ <wsdl:part name="number" type="xsd:string" />
+ <wsdl:part name="country" type="xsd:string" />
+ <wsdl:part name="reference" type="xsd:string" />
+ <wsdl:part name="forceStart" type="xsd:boolean" />
+ </wsdl:message>
+
+ <wsdl:message name="telephonyFaxCampaignStartStopResponse" />
+
+ <wsdl:message name="dedicatedFilterIrcServerRuleDelRequest">
+ <wsdl:part name="session" type="xsd:string" />
+ <wsdl:part name="hostname" type="xsd:string" />
+ <wsdl:part name="toIp" type="xsd:string" />
+ </wsdl:message>
+
+ <wsdl:message name="dedicatedFilterIrcServerRuleDelResponse" />
+
+ <wsdl:message name="hostingGetCapabilitiesRequest">
+ <wsdl:part name="session" type="xsd:string" />
+ <wsdl:part name="domain" type="xsd:string" />
+ </wsdl:message>
+
+ <wsdl:message name="hostingGetCapabilitiesResponse">
+ <wsdl:part name="return" type="typens:hostingGetCapabilitiesReturn" />
+ </wsdl:message>
+
+ <wsdl:message name="domainWhoisObfuscatorUnsetRequest">
+ <wsdl:part name="session" type="xsd:string" />
+ <wsdl:part name="domain" type="xsd:string" />
+ <wsdl:part name="field" type="xsd:string" />
+ </wsdl:message>
+
+ <wsdl:message name="domainWhoisObfuscatorUnsetResponse" />
+
+ <wsdl:message name="domainHostDelRequest">
+ <wsdl:part name="session" type="xsd:string" />
+ <wsdl:part name="domain" type="xsd:string" />
+ <wsdl:part name="host" type="xsd:string" />
+ </wsdl:message>
+
+ <wsdl:message name="domainHostDelResponse">
+ <wsdl:part name="return" type="xsd:int" />
+ </wsdl:message>
+
+ <wsdl:message name="dedicatedFailoverRipeModifyRequest">
+ <wsdl:part name="session" type="xsd:string" />
+ <wsdl:part name="hostname" type="xsd:string" />
+ <wsdl:part name="hostnameNew" type="xsd:string" />
+ <wsdl:part name="networkIp" type="xsd:string" />
+ <wsdl:part name="suffix" type="xsd:int" />
+ <wsdl:part name="ip" type="xsd:string" />
+ </wsdl:message>
+
+ <wsdl:message name="dedicatedFailoverRipeModifyResponse" />
+
+ <wsdl:message name="responderEmailDelRequest">
+ <wsdl:part name="session" type="xsd:string" />
+ <wsdl:part name="domain" type="xsd:string" />
+ <wsdl:part name="responder" type="xsd:string" />
+ </wsdl:message>
+
+ <wsdl:message name="responderEmailDelResponse" />
+
+ <wsdl:message name="dedicatedMonitoringListRequest">
+ <wsdl:part name="session" type="xsd:string" />
+ <wsdl:part name="hostname" type="xsd:string" />
+ </wsdl:message>
+
+ <wsdl:message name="dedicatedMonitoringListResponse">
+ <wsdl:part name="return" type="typens:MyArrayOfDedicatedMonitoringStructType" />
+ </wsdl:message>
+
+ <wsdl:message name="telephonyDirectoryModifyAddressRequest">
+ <wsdl:part name="session" type="xsd:string" />
+ <wsdl:part name="callNumber" type="xsd:string" />
+ <wsdl:part name="countryCode" type="xsd:string" />
+ <wsdl:part name="name" type="xsd:string" />
+ <wsdl:part name="firstName" type="xsd:string" />
+ <wsdl:part name="wayNumber" type="xsd:string" />
+ <wsdl:part name="wayNumberExtra" type="xsd:string" />
+ <wsdl:part name="wayType" type="xsd:string" />
+ <wsdl:part name="wayName" type="xsd:string" />
+ <wsdl:part name="addressExtra" type="xsd:string" />
+ <wsdl:part name="urbanDistrict" type="xsd:string" />
+ <wsdl:part name="postBox" type="xsd:string" />
+ <wsdl:part name="cedex" type="xsd:string" />
+ <wsdl:part name="postCode" type="xsd:string" />
+ <wsdl:part name="city" type="xsd:string" />
+ <wsdl:part name="country" type="xsd:string" />
+ <wsdl:part name="email" type="xsd:string" />
+ <wsdl:part name="legalForm" type="xsd:string" />
+ <wsdl:part name="socialNomination" type="xsd:string" />
+ <wsdl:part name="PJSocialNomination" type="xsd:string" />
+ <wsdl:part name="socialNominationExtra" type="xsd:string" />
+ <wsdl:part name="occupation" type="xsd:string" />
+ <wsdl:part name="siret" type="xsd:string" />
+ <wsdl:part name="ape" type="xsd:string" />
+ <wsdl:part name="PJCode" type="xsd:string" />
+ <wsdl:part name="address" type="xsd:string" />
+ </wsdl:message>
+
+ <wsdl:message name="telephonyDirectoryModifyAddressResponse" />
+
+ <wsdl:message name="managedServicesPartitionStatusCheckRequest">
+ <wsdl:part name="session" type="xsd:string" />
+ <wsdl:part name="storage" type="xsd:string" />
+ <wsdl:part name="partitionName" type="xsd:string" />
+ </wsdl:message>
+
+ <wsdl:message name="managedServicesPartitionStatusCheckResponse">
+ <wsdl:part name="return" type="xsd:string" />
+ </wsdl:message>
+
+ <wsdl:message name="cmsAvailableListRequest">
+ <wsdl:part name="session" type="xsd:string" />
+ <wsdl:part name="domain" type="xsd:string" />
+ </wsdl:message>
+
+ <wsdl:message name="cmsAvailableListResponse">
+ <wsdl:part name="return" type="typens:MyArrayOfCmsAvailableStructType" />
+ </wsdl:message>
+
+ <wsdl:message name="telephonyNicSetMgcpIpRestrictionRequest">
+ <wsdl:part name="session" type="xsd:string" />
+ <wsdl:part name="ips" type="typens:MyArrayOfStringType" />
+ </wsdl:message>
+
+ <wsdl:message name="telephonyNicSetMgcpIpRestrictionResponse" />
+
+ <wsdl:message name="telephonySecurityDepositCreditRequest">
+ <wsdl:part name="session" type="xsd:string" />
+ <wsdl:part name="billingAccount" type="xsd:string" />
+ <wsdl:part name="amount" type="xsd:int" />
+ </wsdl:message>
+
+ <wsdl:message name="telephonySecurityDepositCreditResponse">
+ <wsdl:part name="return" type="typens:telephonySecurityDepositCreditReturn" />
+ </wsdl:message>
+
+ <wsdl:message name="nicModifyLanguageRequest">
+ <wsdl:part name="session" type="xsd:string" />
+ <wsdl:part name="nic" type="xsd:string" />
+ <wsdl:part name="language" type="xsd:string" />
+ </wsdl:message>
+
+ <wsdl:message name="nicModifyLanguageResponse">
+ <wsdl:part name="return" type="xsd:string" />
+ </wsdl:message>
+
+ <wsdl:message name="telephonyLineOrderRequest">
+ <wsdl:part name="session" type="xsd:string" />
+ <wsdl:part name="billingAccount" type="xsd:string" />
+ <wsdl:part name="offer" type="xsd:string" />
+ <wsdl:part name="prefix" type="xsd:string" />
+ <wsdl:part name="quantity" type="xsd:int" />
+ <wsdl:part name="payWithPoints" type="xsd:boolean" />
+ </wsdl:message>
+
+ <wsdl:message name="telephonyLineOrderResponse">
+ <wsdl:part name="return" type="typens:orderStruct" />
+ </wsdl:message>
+
+ <wsdl:message name="telephonyConferenceActionRequest">
+ <wsdl:part name="session" type="xsd:string" />
+ <wsdl:part name="number" type="xsd:string" />
+ <wsdl:part name="country" type="xsd:string" />
+ <wsdl:part name="action" type="xsd:string" />
+ <wsdl:part name="memberid" type="xsd:string" />
+ </wsdl:message>
+
+ <wsdl:message name="telephonyConferenceActionResponse" />
+
+ <wsdl:message name="dedicatedBackupExcludeDelRequest">
+ <wsdl:part name="session" type="xsd:string" />
+ <wsdl:part name="hostname" type="xsd:string" />
+ <wsdl:part name="backupId" type="xsd:string" />
+ <wsdl:part name="exclude" type="xsd:string" />
+ </wsdl:message>
+
+ <wsdl:message name="dedicatedBackupExcludeDelResponse" />
+
+ <wsdl:message name="automatedMailUnlockRequest">
+ <wsdl:part name="session" type="xsd:string" />
+ <wsdl:part name="domain" type="xsd:string" />
+ </wsdl:message>
+
+ <wsdl:message name="automatedMailUnlockResponse" />
+
+ <wsdl:message name="ripeQueryRequest">
+ <wsdl:part name="session" type="xsd:string" />
+ <wsdl:part name="search" type="xsd:string" />
+ <wsdl:part name="type" type="xsd:string" />
+ </wsdl:message>
+
+ <wsdl:message name="ripeQueryResponse">
+ <wsdl:part name="return" type="typens:ripeReturn" />
+ </wsdl:message>
+
+ <wsdl:message name="loginRequest">
+ <wsdl:part name="nic" type="xsd:string" />
+ <wsdl:part name="password" type="xsd:string" />
+ <wsdl:part name="language" type="xsd:string" />
+ <wsdl:part name="multisession" type="xsd:boolean" />
+ </wsdl:message>
+
+ <wsdl:message name="loginResponse">
+ <wsdl:part name="return" type="xsd:string" />
+ </wsdl:message>
+
+ <wsdl:message name="telephonyFunctionKeyDelRequest">
+ <wsdl:part name="session" type="xsd:string" />
+ <wsdl:part name="number" type="xsd:string" />
+ <wsdl:part name="country" type="xsd:string" />
+ <wsdl:part name="keyNum" type="xsd:int" />
+ </wsdl:message>
+
+ <wsdl:message name="telephonyFunctionKeyDelResponse" />
+
+ <wsdl:message name="popListByMasterNicRequest">
+ <wsdl:part name="session" type="xsd:string" />
+ </wsdl:message>
+
+ <wsdl:message name="popListByMasterNicResponse">
+ <wsdl:part name="return" type="typens:MyArrayOfPopStructType" />
+ </wsdl:message>
+
+ <wsdl:message name="serviceModifyOwnerInfosRequest">
+ <wsdl:part name="session" type="xsd:string" />
+ <wsdl:part name="owner" type="xsd:string" />
+ <wsdl:part name="domain" type="xsd:string" />
+ <wsdl:part name="component" type="xsd:string" />
+ <wsdl:part name="address" type="xsd:string" />
+ <wsdl:part name="city" type="xsd:string" />
+ <wsdl:part name="zip" type="xsd:string" />
+ <wsdl:part name="country" type="xsd:string" />
+ <wsdl:part name="phone" type="xsd:string" />
+ <wsdl:part name="fax" type="xsd:string" />
+ <wsdl:part name="email" type="xsd:string" />
+ </wsdl:message>
+
+ <wsdl:message name="serviceModifyOwnerInfosResponse" />
+
+ <wsdl:message name="dedicatedHardRebootStatusRequest">
+ <wsdl:part name="session" type="xsd:string" />
+ <wsdl:part name="hostname" type="xsd:string" />
+ </wsdl:message>
+
+ <wsdl:message name="dedicatedHardRebootStatusResponse">
+ <wsdl:part name="return" type="typens:dedicatedHardRebootStatusReturn" />
+ </wsdl:message>
+
+ <wsdl:message name="domainInfoRequest">
+ <wsdl:part name="session" type="xsd:string" />
+ <wsdl:part name="domain" type="xsd:string" />
+ </wsdl:message>
+
+ <wsdl:message name="domainInfoResponse">
+ <wsdl:part name="return" type="typens:domainInfoReturn" />
+ </wsdl:message>
+
+ <wsdl:message name="dedicatedGetServiceMonitoringItemRequest">
+ <wsdl:part name="session" type="xsd:string" />
+ <wsdl:part name="ip" type="xsd:string" />
+ <wsdl:part name="itemId" type="xsd:int" />
+ </wsdl:message>
+
+ <wsdl:message name="dedicatedGetServiceMonitoringItemResponse">
+ <wsdl:part name="return" type="typens:dedicatedGetServiceMonitoringItemStruct" />
+ </wsdl:message>
+
+ <wsdl:message name="telephonyNicGetSipDomainRequest">
+ <wsdl:part name="session" type="xsd:string" />
+ </wsdl:message>
+
+ <wsdl:message name="telephonyNicGetSipDomainResponse">
+ <wsdl:part name="return" type="typens:MyArrayOfTelephonySipDomainStructType" />
+ </wsdl:message>
+
+ <wsdl:message name="telephonyGetClosureEventsAsICSRequest">
+ <wsdl:part name="session" type="xsd:string" />
+ <wsdl:part name="number" type="xsd:string" />
+ <wsdl:part name="country" type="xsd:string" />
+ <wsdl:part name="dateStart" type="xsd:string" />
+ <wsdl:part name="dateEnd" type="xsd:string" />
+ <wsdl:part name="categories" type="xsd:string" />
+ </wsdl:message>
+
+ <wsdl:message name="telephonyGetClosureEventsAsICSResponse">
+ <wsdl:part name="return" type="typens:telephonyGetClosureEventsAsIcsStruct" />
+ </wsdl:message>
+
+ <wsdl:message name="telephonySmsUserCreditLeftRequest">
+ <wsdl:part name="smsAccount" type="xsd:string" />
+ <wsdl:part name="login" type="xsd:string" />
+ <wsdl:part name="password" type="xsd:string" />
+ </wsdl:message>
+
+ <wsdl:message name="telephonySmsUserCreditLeftResponse">
+ <wsdl:part name="return" type="xsd:string" />
+ </wsdl:message>
+
+ <wsdl:message name="telephonyPortabilityOrderRequest">
+ <wsdl:part name="session" type="xsd:string" />
+ <wsdl:part name="billingAccount" type="xsd:string" />
+ <wsdl:part name="offer" type="xsd:string" />
+ <wsdl:part name="desireDate" type="xsd:string" />
+ <wsdl:part name="callNumber" type="xsd:string" />
+ <wsdl:part name="extraNumbers" type="typens:MyArrayOfStringType" />
+ <wsdl:part name="legalForm" type="xsd:string" />
+ <wsdl:part name="name" type="xsd:string" />
+ <wsdl:part name="firstName" type="xsd:string" />
+ <wsdl:part name="siret" type="xsd:string" />
+ <wsdl:part name="streetNumber" type="xsd:string" />
+ <wsdl:part name="streetNumberExtra" type="xsd:string" />
+ <wsdl:part name="streetType" type="xsd:string" />
+ <wsdl:part name="streetName" type="xsd:string" />
+ <wsdl:part name="building" type="xsd:string" />
+ <wsdl:part name="stair" type="xsd:string" />
+ <wsdl:part name="floor" type="xsd:string" />
+ <wsdl:part name="door" type="xsd:string" />
+ <wsdl:part name="zip" type="xsd:string" />
+ <wsdl:part name="city" type="xsd:string" />
+ <wsdl:part name="country" type="xsd:string" />
+ <wsdl:part name="displayUniversalDirectory" type="xsd:string" />
+ <wsdl:part name="contactName" type="xsd:string" />
+ <wsdl:part name="contactNumber" type="xsd:string" />
+ </wsdl:message>
+
+ <wsdl:message name="telephonyPortabilityOrderResponse" />
+
+ <wsdl:message name="passwordSoapiRequest">
+ <wsdl:part name="session" type="xsd:string" />
+ <wsdl:part name="currentPassword" type="xsd:string" />
+ <wsdl:part name="password" type="xsd:string" />
+ </wsdl:message>
+
+ <wsdl:message name="passwordSoapiResponse" />
+
+ <wsdl:message name="nicCreateRequest">
+ <wsdl:part name="session" type="xsd:string" />
+ <wsdl:part name="name" type="xsd:string" />
+ <wsdl:part name="firstname" type="xsd:string" />
+ <wsdl:part name="password" type="xsd:string" />
+ <wsdl:part name="email" type="xsd:string" />
+ <wsdl:part name="phone" type="xsd:string" />
+ <wsdl:part name="fax" type="xsd:string" />
+ <wsdl:part name="address" type="xsd:string" />
+ <wsdl:part name="city" type="xsd:string" />
+ <wsdl:part name="area" type="xsd:string" />
+ <wsdl:part name="zip" type="xsd:string" />
+ <wsdl:part name="country" type="xsd:string" />
+ <wsdl:part name="language" type="xsd:string" />
+ <wsdl:part name="isOwner" type="xsd:boolean" />
+ <wsdl:part name="legalform" type="xsd:string" />
+ <wsdl:part name="organisation" type="xsd:string" />
+ <wsdl:part name="legalName" type="xsd:string" />
+ <wsdl:part name="legalNumber" type="xsd:string" />
+ <wsdl:part name="vat" type="xsd:string" />
+ </wsdl:message>
+
+ <wsdl:message name="nicCreateResponse">
+ <wsdl:part name="return" type="xsd:string" />
+ </wsdl:message>
+
+ <wsdl:message name="cmsRemoveRequest">
+ <wsdl:part name="session" type="xsd:string" />
+ <wsdl:part name="id" type="xsd:int" />
+ </wsdl:message>
+
+ <wsdl:message name="cmsRemoveResponse" />
+
+ <wsdl:message name="telephonyVoicemailMailboxDeleteRequest">
+ <wsdl:part name="session" type="xsd:string" />
+ <wsdl:part name="number" type="xsd:string" />
+ <wsdl:part name="country" type="xsd:string" />
+ <wsdl:part name="ids" type="xsd:string" />
+ <wsdl:part name="folder" type="xsd:string" />
+ </wsdl:message>
+
+ <wsdl:message name="telephonyVoicemailMailboxDeleteResponse" />
+
+ <wsdl:message name="sqlpriveMysqlDatabaseImportFromHostRequest">
+ <wsdl:part name="session" type="xsd:string" />
+ <wsdl:part name="server" type="xsd:string" />
+ <wsdl:part name="database" type="xsd:string" />
+ <wsdl:part name="foreignHost" type="xsd:string" />
+ <wsdl:part name="foreignUser" type="xsd:string" />
+ <wsdl:part name="foreignPassword" type="xsd:string" />
+ <wsdl:part name="foreignDatabase" type="xsd:string" />
+ </wsdl:message>
+
+ <wsdl:message name="sqlpriveMysqlDatabaseImportFromHostResponse" />
+
+ <wsdl:message name="billingInvoiceInfoRequest">
+ <wsdl:part name="session" type="xsd:string" />
+ <wsdl:part name="number" type="xsd:string" />
+ <wsdl:part name="password" type="xsd:string" />
+ <wsdl:part name="country" type="xsd:string" />
+ </wsdl:message>
+
+ <wsdl:message name="billingInvoiceInfoResponse">
+ <wsdl:part name="return" type="typens:billingInvoiceInfoReturn" />
+ </wsdl:message>
+
+ <wsdl:message name="telephonyBillingAccountDelRequest">
+ <wsdl:part name="session" type="xsd:string" />
+ <wsdl:part name="billingAccount" type="xsd:string" />
+ <wsdl:part name="cancelDelete" type="xsd:boolean" />
+ </wsdl:message>
+
+ <wsdl:message name="telephonyBillingAccountDelResponse" />
+
+ <wsdl:message name="versionRequest">
+ </wsdl:message>
+
+ <wsdl:message name="versionResponse">
+ <wsdl:part name="return" type="xsd:string" />
+ </wsdl:message>
+
+ <wsdl:message name="orderAccountCreditRequest">
+ <wsdl:part name="session" type="xsd:string" />
+ <wsdl:part name="amount" type="xsd:int" />
+ </wsdl:message>
+
+ <wsdl:message name="orderAccountCreditResponse">
+ <wsdl:part name="return" type="typens:orderStruct" />
+ </wsdl:message>
+
+ <wsdl:message name="telephonyNumberCleanRequest">
+ <wsdl:part name="session" type="xsd:string" />
+ <wsdl:part name="number" type="xsd:string" />
+ <wsdl:part name="country" type="xsd:string" />
+ </wsdl:message>
+
+ <wsdl:message name="telephonyNumberCleanResponse" />
+
+ <wsdl:message name="dedicatedReverseAddRequest">
+ <wsdl:part name="session" type="xsd:string" />
+ <wsdl:part name="hostname" type="xsd:string" />
+ <wsdl:part name="ip" type="xsd:string" />
+ <wsdl:part name="reverse" type="xsd:string" />
+ </wsdl:message>
+
+ <wsdl:message name="dedicatedReverseAddResponse" />
+
+ <wsdl:message name="dedicatedBackupGetFreePlanningRequest">
+ <wsdl:part name="session" type="xsd:string" />
+ <wsdl:part name="hostname" type="xsd:string" />
+ <wsdl:part name="backupId" type="xsd:string" />
+ </wsdl:message>
+
+ <wsdl:message name="dedicatedBackupGetFreePlanningResponse">
+ <wsdl:part name="return" type="typens:MyArrayOfDedicatedBackupGetPlanningStructType" />
+ </wsdl:message>
+
+ <wsdl:message name="dedicatedInstallAllowedDistributionGetRequest">
+ <wsdl:part name="session" type="xsd:string" />
+ <wsdl:part name="hostname" type="xsd:string" />
+ </wsdl:message>
+
+ <wsdl:message name="dedicatedInstallAllowedDistributionGetResponse">
+ <wsdl:part name="return" type="typens:dedicatedAllowedDistributionReturn" />
+ </wsdl:message>
+
+ <wsdl:message name="subDomainModifyRequest">
+ <wsdl:part name="session" type="xsd:string" />
+ <wsdl:part name="domain" type="xsd:string" />
+ <wsdl:part name="subdomain" type="xsd:string" />
+ <wsdl:part name="target" type="xsd:string" />
+ <wsdl:part name="country" type="xsd:string" />
+ </wsdl:message>
+
+ <wsdl:message name="subDomainModifyResponse" />
+
+ <wsdl:message name="telephonyPlugAndPhoneOperationRequest">
+ <wsdl:part name="session" type="xsd:string" />
+ <wsdl:part name="number" type="xsd:string" />
+ <wsdl:part name="country" type="xsd:string" />
+ <wsdl:part name="operation" type="xsd:string" />
+ </wsdl:message>
+
+ <wsdl:message name="telephonyPlugAndPhoneOperationResponse" />
+
+ <wsdl:message name="nicInfoRequest">
+ <wsdl:part name="session" type="xsd:string" />
+ <wsdl:part name="nic" type="xsd:string" />
+ </wsdl:message>
+
+ <wsdl:message name="nicInfoResponse">
+ <wsdl:part name="return" type="typens:nicInfoReturn" />
+ </wsdl:message>
+
+ <wsdl:message name="anonymousFtpInfoRequest">
+ <wsdl:part name="session" type="xsd:string" />
+ <wsdl:part name="domain" type="xsd:string" />
+ </wsdl:message>
+
+ <wsdl:message name="anonymousFtpInfoResponse">
+ <wsdl:part name="return" type="typens:anonymousFtpInfoReturn" />
+ </wsdl:message>
+
+ <wsdl:message name="dedicatedCapabilitiesGetRequest">
+ <wsdl:part name="session" type="xsd:string" />
+ <wsdl:part name="hostname" type="xsd:string" />
+ </wsdl:message>
+
+ <wsdl:message name="dedicatedCapabilitiesGetResponse">
+ <wsdl:part name="return" type="typens:dedicatedCapabilitiesStruct" />
+ </wsdl:message>
+
+ <wsdl:message name="telephonyPhonebookOnSmsContactModifyRequest">
+ <wsdl:part name="session" type="xsd:string" />
+ <wsdl:part name="smsAccount" type="xsd:string" />
+ <wsdl:part name="id" type="xsd:int" />
+ <wsdl:part name="name" type="xsd:string" />
+ <wsdl:part name="surname" type="xsd:string" />
+ <wsdl:part name="workPhone" type="xsd:string" />
+ <wsdl:part name="workMobile" type="xsd:string" />
+ <wsdl:part name="homePhone" type="xsd:string" />
+ <wsdl:part name="homeMobile" type="xsd:string" />
+ <wsdl:part name="groupName" type="xsd:string" />
+ </wsdl:message>
+
+ <wsdl:message name="telephonyPhonebookOnSmsContactModifyResponse" />
+
+ <wsdl:message name="telephonyPhonebookOnSmsModifyRequest">
+ <wsdl:part name="session" type="xsd:string" />
+ <wsdl:part name="smsAccount" type="xsd:string" />
+ <wsdl:part name="id" type="xsd:int" />
+ <wsdl:part name="name" type="xsd:string" />
+ </wsdl:message>
+
+ <wsdl:message name="telephonyPhonebookOnSmsModifyResponse" />
+
+ <wsdl:message name="cmsListRequest">
+ <wsdl:part name="session" type="xsd:string" />
+ <wsdl:part name="domain" type="xsd:string" />
+ </wsdl:message>
+
+ <wsdl:message name="cmsListResponse">
+ <wsdl:part name="return" type="typens:MyArrayOfCmsStructType" />
+ </wsdl:message>
+
+ <wsdl:message name="telephonySmsSetQuotaNotificationRequest">
+ <wsdl:part name="session" type="xsd:string" />
+ <wsdl:part name="smsAccount" type="xsd:string" />
+ <wsdl:part name="login" type="xsd:string" />
+ <wsdl:part name="support" type="xsd:string" />
+ <wsdl:part name="alertNumber" type="xsd:string" />
+ <wsdl:part name="alertThreshold" type="xsd:string" />
+ </wsdl:message>
+
+ <wsdl:message name="telephonySmsSetQuotaNotificationResponse" />
+
+ <wsdl:message name="dedicatedMonitoringSMSDelRequest">
+ <wsdl:part name="session" type="xsd:string" />
+ <wsdl:part name="hostname" type="xsd:string" />
+ <wsdl:part name="id" type="xsd:string" />
+ </wsdl:message>
+
+ <wsdl:message name="dedicatedMonitoringSMSDelResponse" />
+
+ <wsdl:message name="telephonySmsUserListRequest">
+ <wsdl:part name="session" type="xsd:string" />
+ <wsdl:part name="smsAccount" type="xsd:string" />
+ </wsdl:message>
+
+ <wsdl:message name="telephonySmsUserListResponse">
+ <wsdl:part name="return" type="typens:MyArrayOfStringType" />
+ </wsdl:message>
+
+ <wsdl:message name="ripeDeleteOrganisationRequest">
+ <wsdl:part name="session" type="xsd:string" />
+ <wsdl:part name="ripeId" type="xsd:string" />
+ <wsdl:part name="comment" type="xsd:string" />
+ </wsdl:message>
+
+ <wsdl:message name="ripeDeleteOrganisationResponse">
+ <wsdl:part name="return" type="typens:ripeUpdateReturn" />
+ </wsdl:message>
+
+ <wsdl:message name="logsAccessListRequest">
+ <wsdl:part name="session" type="xsd:string" />
+ <wsdl:part name="domain" type="xsd:string" />
+ </wsdl:message>
+
+ <wsdl:message name="logsAccessListResponse">
+ <wsdl:part name="return" type="typens:MyArrayOfLogsAccessStructType" />
+ </wsdl:message>
+
+ <wsdl:message name="telephonyHuntingInfoRequest">
+ <wsdl:part name="session" type="xsd:string" />
+ <wsdl:part name="number" type="xsd:string" />
+ <wsdl:part name="country" type="xsd:string" />
+ </wsdl:message>
+
+ <wsdl:message name="telephonyHuntingInfoResponse">
+ <wsdl:part name="return" type="typens:telephonyHuntingInfoReturn" />
+ </wsdl:message>
+
+ <wsdl:message name="dedicatedMonitoringAddRequest">
+ <wsdl:part name="session" type="xsd:string" />
+ <wsdl:part name="hostname" type="xsd:string" />
+ <wsdl:part name="email" type="xsd:string" />
+ <wsdl:part name="language" type="xsd:string" />
+ <wsdl:part name="status" type="xsd:string" />
+ </wsdl:message>
+
+ <wsdl:message name="dedicatedMonitoringAddResponse">
+ <wsdl:part name="return" type="xsd:string" />
+ </wsdl:message>
+
+ <wsdl:message name="telephonyPhonebookContactListRequest">
+ <wsdl:part name="session" type="xsd:string" />
+ <wsdl:part name="number" type="xsd:string" />
+ <wsdl:part name="country" type="xsd:string" />
+ <wsdl:part name="id" type="xsd:int" />
+ <wsdl:part name="group" type="xsd:string" />
+ </wsdl:message>
+
+ <wsdl:message name="telephonyPhonebookContactListResponse">
+ <wsdl:part name="return" type="typens:MyArrayOfTelephonyPhonebookContactStructType" />
+ </wsdl:message>
+
+ <wsdl:message name="resellerDomainTransferASIARequest">
+ <wsdl:part name="session" type="xsd:string" />
+ <wsdl:part name="domain" type="xsd:string" />
+ <wsdl:part name="authinfo" type="xsd:string" />
+ <wsdl:part name="hosting" type="xsd:string" />
+ <wsdl:part name="offer" type="xsd:string" />
+ <wsdl:part name="profile" type="xsd:string" />
+ <wsdl:part name="owo" type="xsd:string" />
+ <wsdl:part name="owner" type="xsd:string" />
+ <wsdl:part name="admin" type="xsd:string" />
+ <wsdl:part name="tech" type="xsd:string" />
+ <wsdl:part name="billing" type="xsd:string" />
+ <wsdl:part name="dns1" type="xsd:string" />
+ <wsdl:part name="dns2" type="xsd:string" />
+ <wsdl:part name="dns3" type="xsd:string" />
+ <wsdl:part name="dns4" type="xsd:string" />
+ <wsdl:part name="dns5" type="xsd:string" />
+ <wsdl:part name="CedCea" type="xsd:string" />
+ <wsdl:part name="contactCED" type="xsd:string" />
+ <wsdl:part name="localityCity" type="xsd:string" />
+ <wsdl:part name="localitySp" type="xsd:string" />
+ <wsdl:part name="ccLocality" type="xsd:string" />
+ <wsdl:part name="legalEntityType" type="xsd:string" />
+ <wsdl:part name="otherLEType" type="xsd:string" />
+ <wsdl:part name="identForm" type="xsd:string" />
+ <wsdl:part name="otherIdentForm" type="xsd:string" />
+ <wsdl:part name="identNumber" type="xsd:string" />
+ <wsdl:part name="dryRun" type="xsd:boolean" />
+ </wsdl:message>
+
+ <wsdl:message name="resellerDomainTransferASIAResponse" />
+
+ <wsdl:message name="telephonySmsUserPasswordRequest">
+ <wsdl:part name="session" type="xsd:string" />
+ <wsdl:part name="smsAccount" type="xsd:string" />
+ <wsdl:part name="login" type="xsd:string" />
+ <wsdl:part name="password" type="xsd:string" />
+ </wsdl:message>
+
+ <wsdl:message name="telephonySmsUserPasswordResponse" />
+
+ <wsdl:message name="domainHostListRequest">
+ <wsdl:part name="session" type="xsd:string" />
+ <wsdl:part name="domain" type="xsd:string" />
+ </wsdl:message>
+
+ <wsdl:message name="domainHostListResponse">
+ <wsdl:part name="return" type="typens:MyArrayOfStringType" />
+ </wsdl:message>
+
+ <wsdl:message name="hostingChangeMainDomainRequest">
+ <wsdl:part name="session" type="xsd:string" />
+ <wsdl:part name="domain" type="xsd:string" />
+ <wsdl:part name="newDomain" type="xsd:string" />
+ <wsdl:part name="mxAction" type="xsd:string" />
+ <wsdl:part name="mxOffer" type="xsd:string" />
+ </wsdl:message>
+
+ <wsdl:message name="hostingChangeMainDomainResponse">
+ <wsdl:part name="return" type="typens:hostingChangeMainDomainReturn" />
+ </wsdl:message>
+
+ <wsdl:message name="telephonyLineGetOfferPricesRequest">
+ <wsdl:part name="session" type="xsd:string" />
+ <wsdl:part name="billingAccount" type="xsd:string" />
+ </wsdl:message>
+
+ <wsdl:message name="telephonyLineGetOfferPricesResponse">
+ <wsdl:part name="return" type="typens:MyArrayOfTelephonyLineSwitchPossibilityPriceStructType" />
+ </wsdl:message>
+
+ <wsdl:message name="telephonySmsGetQuotaNotificationRequest">
+ <wsdl:part name="session" type="xsd:string" />
+ <wsdl:part name="smsAccount" type="xsd:string" />
+ <wsdl:part name="login" type="xsd:string" />
+ </wsdl:message>
+
+ <wsdl:message name="telephonySmsGetQuotaNotificationResponse">
+ <wsdl:part name="return" type="typens:telephonyNotificationSmsUserStruct" />
+ </wsdl:message>
+
+ <wsdl:message name="telephonyHuntingModificationModeRequest">
+ <wsdl:part name="session" type="xsd:string" />
+ <wsdl:part name="number" type="xsd:string" />
+ <wsdl:part name="country" type="xsd:string" />
+ <wsdl:part name="billingAccount" type="xsd:string" />
+ <wsdl:part name="strategy" type="xsd:string" />
+ <wsdl:part name="pattern" type="xsd:string" />
+ </wsdl:message>
+
+ <wsdl:message name="telephonyHuntingModificationModeResponse" />
+
+ <wsdl:message name="telephonyScreenListBlackWhiteChoiceRequest">
+ <wsdl:part name="session" type="xsd:string" />
+ <wsdl:part name="number" type="xsd:string" />
+ <wsdl:part name="country" type="xsd:string" />
+ </wsdl:message>
+
+ <wsdl:message name="telephonyScreenListBlackWhiteChoiceResponse">
+ <wsdl:part name="return" type="typens:telephonyScreenBlackWhiteChoiceReturn" />
+ </wsdl:message>
+
+ <wsdl:message name="telephonySmsDeleteCsvAttachmentRequest">
+ <wsdl:part name="session" type="xsd:string" />
+ <wsdl:part name="smsAccount" type="xsd:string" />
+ <wsdl:part name="ids" type="typens:MyArrayOfIntType" />
+ </wsdl:message>
+
+ <wsdl:message name="telephonySmsDeleteCsvAttachmentResponse" />
+
+ <wsdl:message name="telephonyNumberZoneAndPrefixListRequest">
+ <wsdl:part name="session" type="xsd:string" />
+ <wsdl:part name="country" type="xsd:string" />
+ <wsdl:part name="types" type="typens:MyArrayOfStringType" />
+ </wsdl:message>
+
+ <wsdl:message name="telephonyNumberZoneAndPrefixListResponse">
+ <wsdl:part name="return" type="typens:MyArrayOfTelephonyNumberZoneAndPrefixStructType" />
+ </wsdl:message>
+
+ <wsdl:message name="serviceGroupDeleteRequest">
+ <wsdl:part name="session" type="xsd:string" />
+ <wsdl:part name="name" type="xsd:string" />
+ </wsdl:message>
+
+ <wsdl:message name="serviceGroupDeleteResponse" />
+
+ <wsdl:message name="dedicatedOperationListRequest">
+ <wsdl:part name="session" type="xsd:string" />
+ <wsdl:part name="hostname" type="xsd:string" />
+ </wsdl:message>
+
+ <wsdl:message name="dedicatedOperationListResponse">
+ <wsdl:part name="return" type="typens:MyArrayOfDedicatedOperationStructType" />
+ </wsdl:message>
+
+ <wsdl:message name="telephonyLineSetSipDomainRequest">
+ <wsdl:part name="session" type="xsd:string" />
+ <wsdl:part name="number" type="xsd:string" />
+ <wsdl:part name="country" type="xsd:string" />
+ <wsdl:part name="domain" type="xsd:string" />
+ </wsdl:message>
+
+ <wsdl:message name="telephonyLineSetSipDomainResponse" />
+
+ <wsdl:message name="telephonyTrunkExternalDisplayedNumberDelRequest">
+ <wsdl:part name="session" type="xsd:string" />
+ <wsdl:part name="number" type="xsd:string" />
+ <wsdl:part name="country" type="xsd:string" />
+ <wsdl:part name="externalDisplayedNumber" type="xsd:string" />
+ </wsdl:message>
+
+ <wsdl:message name="telephonyTrunkExternalDisplayedNumberDelResponse" />
+
+ <wsdl:message name="mailingListModeratorAddRequest">
+ <wsdl:part name="session" type="xsd:string" />
+ <wsdl:part name="domain" type="xsd:string" />
+ <wsdl:part name="ml" type="xsd:string" />
+ <wsdl:part name="email" type="xsd:string" />
+ </wsdl:message>
+
+ <wsdl:message name="mailingListModeratorAddResponse" />
+
+ <wsdl:message name="telephonyPhonebookOnGroupContactListRequest">
+ <wsdl:part name="session" type="xsd:string" />
+ <wsdl:part name="group" type="xsd:string" />
+ <wsdl:part name="id" type="xsd:int" />
+ <wsdl:part name="groupName" type="xsd:string" />
+ </wsdl:message>
+
+ <wsdl:message name="telephonyPhonebookOnGroupContactListResponse">
+ <wsdl:part name="return" type="typens:MyArrayOfTelephonyPhonebookContactStructType" />
+ </wsdl:message>
+
+ <wsdl:message name="telephonySmsplusServiceReversableTicketsSummaryRequest">
+ <wsdl:part name="session" type="xsd:string" />
+ <wsdl:part name="shortCode" type="xsd:string" />
+ <wsdl:part name="keyword" type="xsd:string" />
+ <wsdl:part name="reversableDelay" type="xsd:string" />
+ <wsdl:part name="limit" type="xsd:int" />
+ <wsdl:part name="limitOffset" type="xsd:int" />
+ <wsdl:part name="sort" type="xsd:string" />
+ <wsdl:part name="filter" type="xsd:string" />
+ </wsdl:message>
+
+ <wsdl:message name="telephonySmsplusServiceReversableTicketsSummaryResponse">
+ <wsdl:part name="return" type="typens:telephonySmsplusSummaryInfosStruct" />
+ </wsdl:message>
+
+ <wsdl:message name="anonymousFtpActivateRequest">
+ <wsdl:part name="session" type="xsd:string" />
+ <wsdl:part name="domain" type="xsd:string" />
+ </wsdl:message>
+
+ <wsdl:message name="anonymousFtpActivateResponse" />
+
+ <wsdl:message name="telephonyDeleteLineRequest">
+ <wsdl:part name="session" type="xsd:string" />
+ <wsdl:part name="number" type="xsd:string" />
+ <wsdl:part name="country" type="xsd:string" />
+ <wsdl:part name="cancelDelete" type="xsd:boolean" />
+ </wsdl:message>
+
+ <wsdl:message name="telephonyDeleteLineResponse" />
+
+ <wsdl:message name="nicModifyInfosITRequest">
+ <wsdl:part name="session" type="xsd:string" />
+ <wsdl:part name="name" type="xsd:string" />
+ <wsdl:part name="firstname" type="xsd:string" />
+ <wsdl:part name="sex" type="xsd:string" />
+ <wsdl:part name="legalform" type="xsd:string" />
+ <wsdl:part name="organisation" type="xsd:string" />
+ <wsdl:part name="address" type="xsd:string" />
+ <wsdl:part name="area" type="xsd:string" />
+ <wsdl:part name="zip" type="xsd:string" />
+ <wsdl:part name="city" type="xsd:string" />
+ <wsdl:part name="country" type="xsd:string" />
+ <wsdl:part name="phone" type="xsd:string" />
+ <wsdl:part name="fax" type="xsd:string" />
+ <wsdl:part name="email" type="xsd:string" />
+ <wsdl:part name="spareEmail" type="xsd:string" />
+ <wsdl:part name="language" type="xsd:string" />
+ <wsdl:part name="vat" type="xsd:string" />
+ <wsdl:part name="birthDay" type="xsd:string" />
+ <wsdl:part name="birthCity" type="xsd:string" />
+ <wsdl:part name="nationalIdentificationNumber" type="xsd:string" />
+ <wsdl:part name="companyNationalIdentificationNumber" type="xsd:string" />
+ <wsdl:part name="corporationType" type="xsd:string" />
+ </wsdl:message>
+
+ <wsdl:message name="nicModifyInfosITResponse">
+ <wsdl:part name="return" type="xsd:string" />
+ </wsdl:message>
+
+ <wsdl:message name="telephonySetTimeZoneNumberRequest">
+ <wsdl:part name="session" type="xsd:string" />
+ <wsdl:part name="number" type="xsd:string" />
+ <wsdl:part name="countryCode" type="xsd:string" />
+ <wsdl:part name="timeZone" type="xsd:string" />
+ </wsdl:message>
+
+ <wsdl:message name="telephonySetTimeZoneNumberResponse" />
+
+ <wsdl:message name="ortDomainAddRequest">
+ <wsdl:part name="session" type="xsd:string" />
+ <wsdl:part name="domain" type="xsd:string" />
+ <wsdl:part name="subdomain" type="xsd:string" />
+ <wsdl:part name="target" type="xsd:string" />
+ <wsdl:part name="type" type="xsd:string" />
+ <wsdl:part name="overwrite" type="xsd:int" />
+ </wsdl:message>
+
+ <wsdl:message name="ortDomainAddResponse" />
+
+ <wsdl:message name="nicPublicInfoRequest">
+ <wsdl:part name="session" type="xsd:string" />
+ <wsdl:part name="nic" type="xsd:string" />
+ </wsdl:message>
+
+ <wsdl:message name="nicPublicInfoResponse">
+ <wsdl:part name="return" type="typens:nicPublicInfoReturn" />
+ </wsdl:message>
+
+ <wsdl:message name="sqlpriveAlertSetRequest">
+ <wsdl:part name="session" type="xsd:string" />
+ <wsdl:part name="server" type="xsd:string" />
+ <wsdl:part name="email" type="xsd:string" />
+ <wsdl:part name="smsAccount" type="xsd:string" />
+ <wsdl:part name="smsNumber" type="xsd:string" />
+ <wsdl:part name="alert" type="typens:MyArrayOfStringType" />
+ </wsdl:message>
+
+ <wsdl:message name="sqlpriveAlertSetResponse" />
+
+ <wsdl:message name="telephonyNicSetIpRestrictionRequest">
+ <wsdl:part name="session" type="xsd:string" />
+ <wsdl:part name="ips" type="typens:MyArrayOfStringType" />
+ </wsdl:message>
+
+ <wsdl:message name="telephonyNicSetIpRestrictionResponse" />
+
+ <wsdl:message name="dedicatedBackupIncludeDelRequest">
+ <wsdl:part name="session" type="xsd:string" />
+ <wsdl:part name="hostname" type="xsd:string" />
+ <wsdl:part name="backupId" type="xsd:string" />
+ <wsdl:part name="include" type="xsd:string" />
+ </wsdl:message>
+
+ <wsdl:message name="dedicatedBackupIncludeDelResponse" />
+
+ <wsdl:message name="dedicatedBandwidthSwitchingRequest">
+ <wsdl:part name="session" type="xsd:string" />
+ <wsdl:part name="hostname" type="xsd:string" />
+ <wsdl:part name="oldBandwidth" type="xsd:string" />
+ <wsdl:part name="newBandwidth" type="xsd:string" />
+ </wsdl:message>
+
+ <wsdl:message name="dedicatedBandwidthSwitchingResponse" />
+
+ <wsdl:message name="dedicatedIpLoadBalancingDelRequest">
+ <wsdl:part name="session" type="xsd:string" />
+ <wsdl:part name="ipLoadBalancing" type="xsd:string" />
+ </wsdl:message>
+
+ <wsdl:message name="dedicatedIpLoadBalancingDelResponse" />
+
+ <wsdl:message name="sqlpriveMysqlOvhMyAdminRequest">
+ <wsdl:part name="session" type="xsd:string" />
+ <wsdl:part name="server" type="xsd:string" />
+ <wsdl:part name="function" type="xsd:string" />
+ <wsdl:part name="database" type="xsd:string" />
+ <wsdl:part name="username" type="xsd:string" />
+ <wsdl:part name="password" type="xsd:string" />
+ </wsdl:message>
+
+ <wsdl:message name="sqlpriveMysqlOvhMyAdminResponse" />
+
+ <wsdl:message name="ftpInfoRequest">
+ <wsdl:part name="session" type="xsd:string" />
+ <wsdl:part name="domain" type="xsd:string" />
+ </wsdl:message>
+
+ <wsdl:message name="ftpInfoResponse">
+ <wsdl:part name="return" type="typens:ftpInfoReturn" />
+ </wsdl:message>
+
+ <wsdl:message name="telephonyPortabilityStatusRequest">
+ <wsdl:part name="session" type="xsd:string" />
+ <wsdl:part name="billingAccount" type="xsd:string" />
+ </wsdl:message>
+
+ <wsdl:message name="telephonyPortabilityStatusResponse">
+ <wsdl:part name="return" type="typens:MyArrayOfTelephonyPortabilityStructType" />
+ </wsdl:message>
+
+ <wsdl:message name="hostingListRequest">
+ <wsdl:part name="session" type="xsd:string" />
+ </wsdl:message>
+
+ <wsdl:message name="hostingListResponse">
+ <wsdl:part name="return" type="typens:MyArrayOfHostingListStructType" />
+ </wsdl:message>
+
+ <wsdl:message name="orderEmailMxPlanRequest">
+ <wsdl:part name="session" type="xsd:string" />
+ <wsdl:part name="domain" type="xsd:string" />
+ <wsdl:part name="type" type="xsd:string" />
+ <wsdl:part name="payWithPoints" type="xsd:boolean" />
+ </wsdl:message>
+
+ <wsdl:message name="orderEmailMxPlanResponse">
+ <wsdl:part name="return" type="typens:orderStruct" />
+ </wsdl:message>
+
+ <wsdl:message name="dedicatedInstallationTemplateUseRequest">
+ <wsdl:part name="session" type="xsd:string" />
+ <wsdl:part name="hostname" type="xsd:string" />
+ <wsdl:part name="template" type="xsd:string" />
+ </wsdl:message>
+
+ <wsdl:message name="dedicatedInstallationTemplateUseResponse" />
+
+ <wsdl:message name="mailingListSubscriberListRequest">
+ <wsdl:part name="session" type="xsd:string" />
+ <wsdl:part name="domain" type="xsd:string" />
+ <wsdl:part name="ml" type="xsd:string" />
+ </wsdl:message>
+
+ <wsdl:message name="mailingListSubscriberListResponse">
+ <wsdl:part name="return" type="typens:MyArrayOfStringType" />
+ </wsdl:message>
+
+ <wsdl:message name="mailingListSubscriberDelRequest">
+ <wsdl:part name="session" type="xsd:string" />
+ <wsdl:part name="domain" type="xsd:string" />
+ <wsdl:part name="ml" type="xsd:string" />
+ <wsdl:part name="email" type="xsd:string" />
+ </wsdl:message>
+
+ <wsdl:message name="mailingListSubscriberDelResponse" />
+
+ <wsdl:message name="domainLockStatusRequest">
+ <wsdl:part name="session" type="xsd:string" />
+ <wsdl:part name="domain" type="xsd:string" />
+ </wsdl:message>
+
+ <wsdl:message name="domainLockStatusResponse">
+ <wsdl:part name="return" type="xsd:string" />
+ </wsdl:message>
+
+ <wsdl:message name="prepaidDomainRenewRequest">
+ <wsdl:part name="session" type="xsd:string" />
+ <wsdl:part name="domain" type="xsd:string" />
+ <wsdl:part name="dryRun" type="xsd:boolean" />
+ </wsdl:message>
+
+ <wsdl:message name="prepaidDomainRenewResponse" />
+
+ <wsdl:message name="orderEmailMxLargeRequest">
+ <wsdl:part name="session" type="xsd:string" />
+ <wsdl:part name="domain" type="xsd:string" />
+ <wsdl:part name="type" type="xsd:string" />
+ <wsdl:part name="payWithPoints" type="xsd:boolean" />
+ </wsdl:message>
+
+ <wsdl:message name="orderEmailMxLargeResponse">
+ <wsdl:part name="return" type="typens:orderStruct" />
+ </wsdl:message>
+
+ <wsdl:message name="emailFilterActiveRequest">
+ <wsdl:part name="session" type="xsd:string" />
+ <wsdl:part name="domain" type="xsd:string" />
+ <wsdl:part name="pop" type="xsd:string" />
+ <wsdl:part name="filter" type="xsd:string" />
+ <wsdl:part name="active" type="xsd:boolean" />
+ </wsdl:message>
+
+ <wsdl:message name="emailFilterActiveResponse" />
+
+ <wsdl:message name="telephonySecurityDepositInfoRequest">
+ <wsdl:part name="session" type="xsd:string" />
+ <wsdl:part name="billingAccount" type="xsd:string" />
+ </wsdl:message>
+
+ <wsdl:message name="telephonySecurityDepositInfoResponse">
+ <wsdl:part name="return" type="xsd:float" />
+ </wsdl:message>
+
+ <wsdl:message name="databaseListRequest">
+ <wsdl:part name="session" type="xsd:string" />
+ <wsdl:part name="domain" type="xsd:string" />
+ </wsdl:message>
+
+ <wsdl:message name="databaseListResponse">
+ <wsdl:part name="return" type="typens:MyArrayOfDatabaseStructType" />
+ </wsdl:message>
+
+ <wsdl:message name="dedicatedIpLoadBalancingServerAddRequest">
+ <wsdl:part name="session" type="xsd:string" />
+ <wsdl:part name="ipLoadBalancing" type="xsd:string" />
+ <wsdl:part name="hostname" type="xsd:string" />
+ </wsdl:message>
+
+ <wsdl:message name="dedicatedIpLoadBalancingServerAddResponse" />
+
+ <wsdl:message name="resellerDomainCreateCATRequest">
+ <wsdl:part name="session" type="xsd:string" />
+ <wsdl:part name="domain" type="xsd:string" />
+ <wsdl:part name="hosting" type="xsd:string" />
+ <wsdl:part name="offer" type="xsd:string" />
+ <wsdl:part name="profile" type="xsd:string" />
+ <wsdl:part name="owo" type="xsd:string" />
+ <wsdl:part name="owner" type="xsd:string" />
+ <wsdl:part name="admin" type="xsd:string" />
+ <wsdl:part name="tech" type="xsd:string" />
+ <wsdl:part name="billing" type="xsd:string" />
+ <wsdl:part name="dns1" type="xsd:string" />
+ <wsdl:part name="dns2" type="xsd:string" />
+ <wsdl:part name="dns3" type="xsd:string" />
+ <wsdl:part name="dns4" type="xsd:string" />
+ <wsdl:part name="dns5" type="xsd:string" />
+ <wsdl:part name="reason" type="xsd:string" />
+ <wsdl:part name="dryRun" type="xsd:boolean" />
+ </wsdl:message>
+
+ <wsdl:message name="resellerDomainCreateCATResponse" />
+
+ <wsdl:message name="telephonySmsListCsvAttachmentRequest">
+ <wsdl:part name="session" type="xsd:string" />
+ <wsdl:part name="smsAccount" type="xsd:string" />
+ <wsdl:part name="id" type="xsd:string" />
+ </wsdl:message>
+
+ <wsdl:message name="telephonySmsListCsvAttachmentResponse">
+ <wsdl:part name="return" type="typens:MyArrayOfTelephonySmsCsvSlotStructType" />
+ </wsdl:message>
+
+ <wsdl:message name="ftpChangePasswordRequest">
+ <wsdl:part name="session" type="xsd:string" />
+ <wsdl:part name="domain" type="xsd:string" />
+ <wsdl:part name="password" type="xsd:string" />
+ <wsdl:part name="oldstate" type="xsd:string" />
+ <wsdl:part name="newstate" type="xsd:string" />
+ </wsdl:message>
+
+ <wsdl:message name="ftpChangePasswordResponse" />
+
+ <wsdl:message name="orderDedicatedFailoverRequest">
+ <wsdl:part name="session" type="xsd:string" />
+ <wsdl:part name="domain" type="xsd:string" />
+ <wsdl:part name="orderIps" type="xsd:int" />
+ <wsdl:part name="payWithPoints" type="xsd:boolean" />
+ </wsdl:message>
+
+ <wsdl:message name="orderDedicatedFailoverResponse">
+ <wsdl:part name="return" type="typens:orderStruct" />
+ </wsdl:message>
+
+ <wsdl:message name="rpsGetIoStatsRequest">
+ <wsdl:part name="session" type="xsd:string" />
+ <wsdl:part name="domain" type="xsd:string" />
+ <wsdl:part name="type" type="xsd:string" />
+ <wsdl:part name="duration" type="xsd:string" />
+ </wsdl:message>
+
+ <wsdl:message name="rpsGetIoStatsResponse">
+ <wsdl:part name="return" type="typens:rpsGetIoStatsReturn" />
+ </wsdl:message>
+
+ <wsdl:message name="dedicatedRipeUpdateOrganisationRequest">
+ <wsdl:part name="session" type="xsd:string" />
+ <wsdl:part name="ripeId" type="xsd:string" />
+ <wsdl:part name="name" type="xsd:string" />
+ <wsdl:part name="address" type="xsd:string" />
+ <wsdl:part name="email" type="xsd:string" />
+ <wsdl:part name="abuse" type="xsd:string" />
+ <wsdl:part name="descr" type="xsd:string" />
+ <wsdl:part name="phone" type="xsd:string" />
+ <wsdl:part name="fax" type="xsd:string" />
+ <wsdl:part name="remarks" type="xsd:string" />
+ </wsdl:message>
+
+ <wsdl:message name="dedicatedRipeUpdateOrganisationResponse">
+ <wsdl:part name="return" type="typens:ripeUpdateReturn" />
+ </wsdl:message>
+
+ <wsdl:message name="cmsRenewAdminPasswordRequest">
+ <wsdl:part name="session" type="xsd:string" />
+ <wsdl:part name="id" type="xsd:int" />
+ </wsdl:message>
+
+ <wsdl:message name="cmsRenewAdminPasswordResponse" />
+
+ <wsdl:message name="dedicatedNetbootModifyByIdRequest">
+ <wsdl:part name="session" type="xsd:string" />
+ <wsdl:part name="hostname" type="xsd:string" />
+ <wsdl:part name="id" type="xsd:string" />
+ <wsdl:part name="root" type="xsd:string" />
+ <wsdl:part name="rescueEmail" type="xsd:string" />
+ </wsdl:message>
+
+ <wsdl:message name="dedicatedNetbootModifyByIdResponse" />
+
+ <wsdl:message name="telephonySmsCancelSendingRequest">
+ <wsdl:part name="session" type="xsd:string" />
+ <wsdl:part name="smsAccount" type="xsd:string" />
+ <wsdl:part name="smsIds" type="typens:MyArrayOfIntType" />
+ </wsdl:message>
+
+ <wsdl:message name="telephonySmsCancelSendingResponse" />
+
+ <wsdl:message name="telephonyScreenListInfoRequest">
+ <wsdl:part name="session" type="xsd:string" />
+ <wsdl:part name="number" type="xsd:string" />
+ <wsdl:part name="country" type="xsd:string" />
+ <wsdl:part name="screenListType" type="xsd:string" />
+ </wsdl:message>
+
+ <wsdl:message name="telephonyScreenListInfoResponse">
+ <wsdl:part name="return" type="typens:MyArrayOfTelephonyScreenStructType" />
+ </wsdl:message>
+
+ <wsdl:message name="telephonyLineLogsOnGroupRequest">
+ <wsdl:part name="group" type="xsd:string" />
+ <wsdl:part name="pagingStart" type="xsd:int" />
+ <wsdl:part name="pagingLimit" type="xsd:int" />
+ </wsdl:message>
+
+ <wsdl:message name="telephonyLineLogsOnGroupResponse">
+ <wsdl:part name="return" type="typens:MyArrayOfTelephonyLineLogsStructType" />
+ </wsdl:message>
+
+ <wsdl:message name="telephonyLineGetMgcpIpRestrictionRequest">
+ <wsdl:part name="session" type="xsd:string" />
+ <wsdl:part name="number" type="xsd:string" />
+ <wsdl:part name="country" type="xsd:string" />
+ </wsdl:message>
+
+ <wsdl:message name="telephonyLineGetMgcpIpRestrictionResponse">
+ <wsdl:part name="return" type="xsd:string" />
+ </wsdl:message>
+
+ <wsdl:message name="databaseDeleteRequest">
+ <wsdl:part name="session" type="xsd:string" />
+ <wsdl:part name="domain" type="xsd:string" />
+ <wsdl:part name="db" type="xsd:string" />
+ </wsdl:message>
+
+ <wsdl:message name="databaseDeleteResponse" />
+
+ <wsdl:message name="resellerDomainCreateASIARequest">
+ <wsdl:part name="session" type="xsd:string" />
+ <wsdl:part name="domain" type="xsd:string" />
+ <wsdl:part name="hosting" type="xsd:string" />
+ <wsdl:part name="offer" type="xsd:string" />
+ <wsdl:part name="profile" type="xsd:string" />
+ <wsdl:part name="owo" type="xsd:string" />
+ <wsdl:part name="owner" type="xsd:string" />
+ <wsdl:part name="admin" type="xsd:string" />
+ <wsdl:part name="tech" type="xsd:string" />
+ <wsdl:part name="billing" type="xsd:string" />
+ <wsdl:part name="dns1" type="xsd:string" />
+ <wsdl:part name="dns2" type="xsd:string" />
+ <wsdl:part name="dns3" type="xsd:string" />
+ <wsdl:part name="dns4" type="xsd:string" />
+ <wsdl:part name="dns5" type="xsd:string" />
+ <wsdl:part name="CedCea" type="xsd:string" />
+ <wsdl:part name="contactCED" type="xsd:string" />
+ <wsdl:part name="localityCity" type="xsd:string" />
+ <wsdl:part name="localitySp" type="xsd:string" />
+ <wsdl:part name="ccLocality" type="xsd:string" />
+ <wsdl:part name="legalEntityType" type="xsd:string" />
+ <wsdl:part name="otherLEType" type="xsd:string" />
+ <wsdl:part name="identForm" type="xsd:string" />
+ <wsdl:part name="otherIdentForm" type="xsd:string" />
+ <wsdl:part name="identNumber" type="xsd:string" />
+ <wsdl:part name="dryRun" type="xsd:boolean" />
+ </wsdl:message>
+
+ <wsdl:message name="resellerDomainCreateASIAResponse" />
+
+ <wsdl:message name="telephonyLineDetailsRequest">
+ <wsdl:part name="session" type="xsd:string" />
+ <wsdl:part name="number" type="xsd:string" />
+ <wsdl:part name="countryCode" type="xsd:string" />
+ </wsdl:message>
+
+ <wsdl:message name="telephonyLineDetailsResponse">
+ <wsdl:part name="return" type="typens:telephonyLineStruct" />
+ </wsdl:message>
+
+ <wsdl:message name="telephonyPhonebookContactDelRequest">
+ <wsdl:part name="session" type="xsd:string" />
+ <wsdl:part name="number" type="xsd:string" />
+ <wsdl:part name="country" type="xsd:string" />
+ <wsdl:part name="id" type="xsd:int" />
+ </wsdl:message>
+
+ <wsdl:message name="telephonyPhonebookContactDelResponse" />
+
+ <wsdl:message name="ticketCreateRequest">
+ <wsdl:part name="session" type="xsd:string" />
+ <wsdl:part name="componentType" type="xsd:string" />
+ <wsdl:part name="domain" type="xsd:string" />
+ <wsdl:part name="email" type="xsd:string" />
+ <wsdl:part name="phone" type="xsd:string" />
+ <wsdl:part name="subject" type="xsd:string" />
+ <wsdl:part name="incidentSummary" type="xsd:string" />
+ <wsdl:part name="incidentDetails" type="xsd:string" />
+ <wsdl:part name="incidentManip" type="xsd:string" />
+ <wsdl:part name="level" type="xsd:string" />
+ </wsdl:message>
+
+ <wsdl:message name="ticketCreateResponse">
+ <wsdl:part name="return" type="xsd:int" />
+ </wsdl:message>
+
+ <wsdl:message name="notepadAddRequest">
+ <wsdl:part name="session" type="xsd:string" />
+ <wsdl:part name="content" type="xsd:string" />
+ <wsdl:part name="offset" type="xsd:string" />
+ </wsdl:message>
+
+ <wsdl:message name="notepadAddResponse" />
+
+ <wsdl:message name="subDomainAddRequest">
+ <wsdl:part name="session" type="xsd:string" />
+ <wsdl:part name="domain" type="xsd:string" />
+ <wsdl:part name="subdomain" type="xsd:string" />
+ <wsdl:part name="target" type="xsd:string" />
+ <wsdl:part name="country" type="xsd:string" />
+ </wsdl:message>
+
+ <wsdl:message name="subDomainAddResponse" />
+
+ <wsdl:message name="dedicatedBackupGetDateRequest">
+ <wsdl:part name="session" type="xsd:string" />
+ <wsdl:part name="hostname" type="xsd:string" />
+ <wsdl:part name="backupId" type="xsd:string" />
+ </wsdl:message>
+
+ <wsdl:message name="dedicatedBackupGetDateResponse">
+ <wsdl:part name="return" type="typens:MyArrayOfDedicatedBackupDateStructType" />
+ </wsdl:message>
+
+ <wsdl:message name="dedicatedSecondaryDNSDelRequest">
+ <wsdl:part name="session" type="xsd:string" />
+ <wsdl:part name="hostname" type="xsd:string" />
+ <wsdl:part name="ip" type="xsd:string" />
+ <wsdl:part name="domain" type="xsd:string" />
+ <wsdl:part name="nameserver" type="xsd:string" />
+ </wsdl:message>
+
+ <wsdl:message name="dedicatedSecondaryDNSDelResponse" />
+
+ <wsdl:message name="domainLockRequest">
+ <wsdl:part name="session" type="xsd:string" />
+ <wsdl:part name="domain" type="xsd:string" />
+ </wsdl:message>
+
+ <wsdl:message name="domainLockResponse" />
+
+ <wsdl:message name="telephonyRatesListCsvRequest">
+ <wsdl:part name="session" type="xsd:string" />
+ <wsdl:part name="countryCode" type="xsd:string" />
+ <wsdl:part name="type" type="xsd:string" />
+ </wsdl:message>
+
+ <wsdl:message name="telephonyRatesListCsvResponse">
+ <wsdl:part name="return" type="xsd:string" />
+ </wsdl:message>
+
+ <wsdl:message name="emailFilterListRequest">
+ <wsdl:part name="session" type="xsd:string" />
+ <wsdl:part name="domain" type="xsd:string" />
+ <wsdl:part name="pop" type="xsd:string" />
+ </wsdl:message>
+
+ <wsdl:message name="emailFilterListResponse">
+ <wsdl:part name="return" type="typens:MyArrayOfEmailFilterStructType" />
+ </wsdl:message>
+
+ <wsdl:message name="zoneEntryAddRequest">
+ <wsdl:part name="session" type="xsd:string" />
+ <wsdl:part name="domain" type="xsd:string" />
+ <wsdl:part name="subdomain" type="xsd:string" />
+ <wsdl:part name="fieldtype" type="xsd:string" />
+ <wsdl:part name="target" type="xsd:string" />
+ <wsdl:part name="overwrite" type="xsd:boolean" />
+ </wsdl:message>
+
+ <wsdl:message name="zoneEntryAddResponse" />
+
+ <wsdl:message name="telephonyConferenceGetInfosRequest">
+ <wsdl:part name="session" type="xsd:string" />
+ <wsdl:part name="number" type="xsd:string" />
+ <wsdl:part name="country" type="xsd:string" />
+ </wsdl:message>
+
+ <wsdl:message name="telephonyConferenceGetInfosResponse">
+ <wsdl:part name="return" type="typens:telephonyConferenceGetInfosReturn" />
+ </wsdl:message>
+
+ <wsdl:message name="dedicatedSecondaryDNSGetAllRequest">
+ <wsdl:part name="session" type="xsd:string" />
+ <wsdl:part name="hostname" type="xsd:string" />
+ </wsdl:message>
+
+ <wsdl:message name="dedicatedSecondaryDNSGetAllResponse">
+ <wsdl:part name="return" type="typens:MyArrayOfAllSecondaryDNSStructType" />
+ </wsdl:message>
+
+ <wsdl:message name="infrastructureIpListGetRequest">
+ <wsdl:part name="session" type="xsd:string" />
+ <wsdl:part name="hostname" type="xsd:string" />
+ </wsdl:message>
+
+ <wsdl:message name="infrastructureIpListGetResponse">
+ <wsdl:part name="return" type="typens:MyArrayOfInfrastructureIpStructType" />
+ </wsdl:message>
+
+ <wsdl:message name="mailingListInfoRequest">
+ <wsdl:part name="session" type="xsd:string" />
+ <wsdl:part name="domain" type="xsd:string" />
+ <wsdl:part name="ml" type="xsd:string" />
+ </wsdl:message>
+
+ <wsdl:message name="mailingListInfoResponse">
+ <wsdl:part name="return" type="typens:mailingListStruct" />
+ </wsdl:message>
+
+ <wsdl:message name="serviceListRequest">
+ <wsdl:part name="session" type="xsd:string" />
+ <wsdl:part name="domain" type="xsd:string" />
+ <wsdl:part name="component" type="xsd:string" />
+ <wsdl:part name="group" type="xsd:string" />
+ <wsdl:part name="componentSubType" type="xsd:string" />
+ </wsdl:message>
+
+ <wsdl:message name="serviceListResponse">
+ <wsdl:part name="return" type="typens:MyArrayOfServiceStructType" />
+ </wsdl:message>
+
+ <wsdl:message name="serviceGroupSetCommentRequest">
+ <wsdl:part name="session" type="xsd:string" />
+ <wsdl:part name="name" type="xsd:string" />
+ <wsdl:part name="comment" type="xsd:string" />
+ </wsdl:message>
+
+ <wsdl:message name="serviceGroupSetCommentResponse" />
+
+ <wsdl:message name="telephonyPhonebookOnSmsContactListRequest">
+ <wsdl:part name="session" type="xsd:string" />
+ <wsdl:part name="smsAccount" type="xsd:string" />
+ <wsdl:part name="id" type="xsd:int" />
+ <wsdl:part name="groupName" type="xsd:string" />
+ </wsdl:message>
+
+ <wsdl:message name="telephonyPhonebookOnSmsContactListResponse">
+ <wsdl:part name="return" type="typens:MyArrayOfTelephonyPhonebookContactStructType" />
+ </wsdl:message>
+
+ <wsdl:message name="nicCreateITRequest">
+ <wsdl:part name="session" type="xsd:string" />
+ <wsdl:part name="name" type="xsd:string" />
+ <wsdl:part name="firstname" type="xsd:string" />
+ <wsdl:part name="sex" type="xsd:string" />
+ <wsdl:part name="password" type="xsd:string" />
+ <wsdl:part name="email" type="xsd:string" />
+ <wsdl:part name="phone" type="xsd:string" />
+ <wsdl:part name="fax" type="xsd:string" />
+ <wsdl:part name="address" type="xsd:string" />
+ <wsdl:part name="city" type="xsd:string" />
+ <wsdl:part name="area" type="xsd:string" />
+ <wsdl:part name="zip" type="xsd:string" />
+ <wsdl:part name="country" type="xsd:string" />
+ <wsdl:part name="language" type="xsd:string" />
+ <wsdl:part name="isOwner" type="xsd:boolean" />
+ <wsdl:part name="legalform" type="xsd:string" />
+ <wsdl:part name="organisation" type="xsd:string" />
+ <wsdl:part name="legalName" type="xsd:string" />
+ <wsdl:part name="legalNumber" type="xsd:string" />
+ <wsdl:part name="vat" type="xsd:string" />
+ <wsdl:part name="birthDay" type="xsd:string" />
+ <wsdl:part name="birthCity" type="xsd:string" />
+ <wsdl:part name="nationalIdentificationNumber" type="xsd:string" />
+ <wsdl:part name="companyNationalIdentificationNumber" type="xsd:string" />
+ <wsdl:part name="corporationType" type="xsd:string" />
+ </wsdl:message>
+
+ <wsdl:message name="nicCreateITResponse">
+ <wsdl:part name="return" type="xsd:string" />
+ </wsdl:message>
+
+ <wsdl:message name="telephonyPhonebookOnSmsContactAddRequest">
+ <wsdl:part name="session" type="xsd:string" />
+ <wsdl:part name="smsAccount" type="xsd:string" />
+ <wsdl:part name="id" type="xsd:int" />
+ <wsdl:part name="name" type="xsd:string" />
+ <wsdl:part name="surname" type="xsd:string" />
+ <wsdl:part name="workPhone" type="xsd:string" />
+ <wsdl:part name="workMobile" type="xsd:string" />
+ <wsdl:part name="homePhone" type="xsd:string" />
+ <wsdl:part name="homeMobile" type="xsd:string" />
+ <wsdl:part name="groupName" type="xsd:string" />
+ </wsdl:message>
+
+ <wsdl:message name="telephonyPhonebookOnSmsContactAddResponse">
+ <wsdl:part name="return" type="xsd:int" />
+ </wsdl:message>
+
+ <wsdl:message name="dedicatedMonitoringNotificationDelRequest">
+ <wsdl:part name="session" type="xsd:string" />
+ <wsdl:part name="hostname" type="xsd:string" />
+ <wsdl:part name="id" type="xsd:string" />
+ </wsdl:message>
+
+ <wsdl:message name="dedicatedMonitoringNotificationDelResponse" />
+
+ <wsdl:message name="domainOperationCancelRequest">
+ <wsdl:part name="session" type="xsd:string" />
+ <wsdl:part name="id" type="xsd:int" />
+ </wsdl:message>
+
+ <wsdl:message name="domainOperationCancelResponse" />
+
+ <wsdl:message name="telephonyFMHuntingModificationAnonymousCallRejectionRequest">
+ <wsdl:part name="session" type="xsd:string" />
+ <wsdl:part name="number" type="xsd:string" />
+ <wsdl:part name="country" type="xsd:string" />
+ <wsdl:part name="billingAccount" type="xsd:string" />
+ <wsdl:part name="anonymousCallRejection" type="xsd:boolean" />
+ </wsdl:message>
+
+ <wsdl:message name="telephonyFMHuntingModificationAnonymousCallRejectionResponse" />
+
+ <wsdl:message name="dedicatedBandwidthManagementGetRequest">
+ <wsdl:part name="session" type="xsd:string" />
+ <wsdl:part name="hostname" type="xsd:string" />
+ </wsdl:message>
+
+ <wsdl:message name="dedicatedBandwidthManagementGetResponse">
+ <wsdl:part name="return" type="typens:dedicatedBandwidthManagementReturn" />
+ </wsdl:message>
+
+ <wsdl:message name="telephonyDdiModifyRequest">
+ <wsdl:part name="session" type="xsd:string" />
+ <wsdl:part name="number" type="xsd:string" />
+ <wsdl:part name="country" type="xsd:string" />
+ <wsdl:part name="billingAccount" type="xsd:string" />
+ <wsdl:part name="destination" type="xsd:string" />
+ </wsdl:message>
+
+ <wsdl:message name="telephonyDdiModifyResponse" />
+
+ <wsdl:message name="dedicatedMonitoringStatusUpdateRequest">
+ <wsdl:part name="session" type="xsd:string" />
+ <wsdl:part name="hostname" type="xsd:string" />
+ <wsdl:part name="disabled" type="xsd:boolean" />
+ </wsdl:message>
+
+ <wsdl:message name="dedicatedMonitoringStatusUpdateResponse" />
+
+ <wsdl:message name="dedicatedIPForUDPMoveGetStatusRequest">
+ <wsdl:part name="session" type="xsd:string" />
+ <wsdl:part name="hostname" type="xsd:string" />
+ <wsdl:part name="ip" type="xsd:string" />
+ </wsdl:message>
+
+ <wsdl:message name="dedicatedIPForUDPMoveGetStatusResponse" />
+
+ <wsdl:message name="telephonyRedirectInfoRequest">
+ <wsdl:part name="session" type="xsd:string" />
+ <wsdl:part name="number" type="xsd:string" />
+ <wsdl:part name="country" type="xsd:string" />
+ </wsdl:message>
+
+ <wsdl:message name="telephonyRedirectInfoResponse">
+ <wsdl:part name="return" type="typens:telephonyRedirectInfoReturn" />
+ </wsdl:message>
+
+ <wsdl:message name="anonymousFtpChangePasswordRequest">
+ <wsdl:part name="session" type="xsd:string" />
+ <wsdl:part name="domain" type="xsd:string" />
+ <wsdl:part name="password" type="xsd:string" />
+ </wsdl:message>
+
+ <wsdl:message name="anonymousFtpChangePasswordResponse" />
+
+ <wsdl:message name="telephonySmsSendRequest">
+ <wsdl:part name="session" type="xsd:string" />
+ <wsdl:part name="smsAccount" type="xsd:string" />
+ <wsdl:part name="numberFrom" type="xsd:string" />
+ <wsdl:part name="numberTo" type="xsd:string" />
+ <wsdl:part name="message" type="xsd:string" />
+ <wsdl:part name="smsValidity" type="xsd:int" />
+ <wsdl:part name="smsClass" type="xsd:int" />
+ <wsdl:part name="smsDeferred" type="xsd:int" />
+ <wsdl:part name="smsPriority" type="xsd:int" />
+ <wsdl:part name="smsCoding" type="xsd:int" />
+ <wsdl:part name="tag" type="xsd:string" />
+ <wsdl:part name="noStop" type="xsd:boolean" />
+ </wsdl:message>
+
+ <wsdl:message name="telephonySmsSendResponse">
+ <wsdl:part name="return" type="xsd:int" />
+ </wsdl:message>
+
+ <wsdl:message name="automatedMailLockRequest">
+ <wsdl:part name="session" type="xsd:string" />
+ <wsdl:part name="domain" type="xsd:string" />
+ </wsdl:message>
+
+ <wsdl:message name="automatedMailLockResponse" />
+
+ <wsdl:message name="dedicatedRipeDeleteOrganisationRequest">
+ <wsdl:part name="session" type="xsd:string" />
+ <wsdl:part name="ripeId" type="xsd:string" />
+ <wsdl:part name="comment" type="xsd:string" />
+ </wsdl:message>
+
+ <wsdl:message name="dedicatedRipeDeleteOrganisationResponse">
+ <wsdl:part name="return" type="typens:ripeUpdateReturn" />
+ </wsdl:message>
+
+ <wsdl:message name="dedicatedFailoverRipeGetIpRequest">
+ <wsdl:part name="session" type="xsd:string" />
+ <wsdl:part name="hostname" type="xsd:string" />
+ </wsdl:message>
+
+ <wsdl:message name="dedicatedFailoverRipeGetIpResponse">
+ <wsdl:part name="return" type="typens:MyArrayOfDedicatedRipeGetIpStructType" />
+ </wsdl:message>
+
+ <wsdl:message name="responderEmailModifyRequest">
+ <wsdl:part name="session" type="xsd:string" />
+ <wsdl:part name="domain" type="xsd:string" />
+ <wsdl:part name="responder" type="xsd:string" />
+ <wsdl:part name="content" type="xsd:string" />
+ <wsdl:part name="delivered_to" type="xsd:string" />
+ <wsdl:part name="nic" type="xsd:string" />
+ </wsdl:message>
+
+ <wsdl:message name="responderEmailModifyResponse" />
+
+ <wsdl:message name="dedicatedInstallBasicRequest">
+ <wsdl:part name="session" type="xsd:string" />
+ <wsdl:part name="hostname" type="xsd:string" />
+ <wsdl:part name="status" type="xsd:string" />
+ <wsdl:part name="language" type="xsd:string" />
+ <wsdl:part name="bitFormat" type="xsd:string" />
+ <wsdl:part name="os" type="xsd:string" />
+ <wsdl:part name="sql" type="xsd:string" />
+ <wsdl:part name="customerScriptLink" type="xsd:string" />
+ <wsdl:part name="customerScriptReturn" type="xsd:string" />
+ </wsdl:message>
+
+ <wsdl:message name="dedicatedInstallBasicResponse" />
+
+ <wsdl:message name="emailGetDomainMxFilteringRequest">
+ <wsdl:part name="session" type="xsd:string" />
+ <wsdl:part name="domain" type="xsd:string" />
+ <wsdl:part name="subdomain" type="xsd:string" />
+ </wsdl:message>
+
+ <wsdl:message name="emailGetDomainMxFilteringResponse">
+ <wsdl:part name="return" type="xsd:string" />
+ </wsdl:message>
+
+ <wsdl:message name="managedServicesPartitionCreateRequest">
+ <wsdl:part name="session" type="xsd:string" />
+ <wsdl:part name="storage" type="xsd:string" />
+ <wsdl:part name="name" type="xsd:string" />
+ <wsdl:part name="size" type="xsd:int" />
+ <wsdl:part name="protocol" type="xsd:string" />
+ </wsdl:message>
+
+ <wsdl:message name="managedServicesPartitionCreateResponse" />
+
+ <wsdl:message name="telephonyLineGetSipDomainRequest">
+ <wsdl:part name="session" type="xsd:string" />
+ <wsdl:part name="number" type="xsd:string" />
+ <wsdl:part name="country" type="xsd:string" />
+ </wsdl:message>
+
+ <wsdl:message name="telephonyLineGetSipDomainResponse">
+ <wsdl:part name="return" type="typens:telephonySipDomainStruct" />
+ </wsdl:message>
+
+ <wsdl:message name="nicModifyEmailRequest">
+ <wsdl:part name="session" type="xsd:string" />
+ <wsdl:part name="nic" type="xsd:string" />
+ <wsdl:part name="email" type="xsd:string" />
+ </wsdl:message>
+
+ <wsdl:message name="nicModifyEmailResponse">
+ <wsdl:part name="return" type="xsd:string" />
+ </wsdl:message>
+
+ <wsdl:message name="telephonyToneDeleteRequest">
+ <wsdl:part name="session" type="xsd:string" />
+ <wsdl:part name="number" type="xsd:string" />
+ <wsdl:part name="country" type="xsd:string" />
+ <wsdl:part name="toneType" type="xsd:string" />
+ </wsdl:message>
+
+ <wsdl:message name="telephonyToneDeleteResponse" />
+
+ <wsdl:message name="telephonyLineSetMgcpIpRestrictionRequest">
+ <wsdl:part name="session" type="xsd:string" />
+ <wsdl:part name="number" type="xsd:string" />
+ <wsdl:part name="country" type="xsd:string" />
+ <wsdl:part name="ips" type="typens:MyArrayOfStringType" />
+ </wsdl:message>
+
+ <wsdl:message name="telephonyLineSetMgcpIpRestrictionResponse" />
+
+ <wsdl:message name="dedicatedInstallResetRequest">
+ <wsdl:part name="session" type="xsd:string" />
+ <wsdl:part name="hostname" type="xsd:string" />
+ </wsdl:message>
+
+ <wsdl:message name="dedicatedInstallResetResponse" />
+
+ <wsdl:message name="dedicatedMonitoringServiceAddNotificationRequest">
+ <wsdl:part name="session" type="xsd:string" />
+ <wsdl:part name="hostname" type="xsd:string" />
+ <wsdl:part name="ip" type="xsd:string" />
+ <wsdl:part name="port" type="xsd:int" />
+ <wsdl:part name="protocol" type="xsd:string" />
+ <wsdl:part name="period" type="xsd:string" />
+ <wsdl:part name="string" type="xsd:string" />
+ <wsdl:part name="url" type="xsd:string" />
+ <wsdl:part name="nicAlert" type="xsd:string" />
+ </wsdl:message>
+
+ <wsdl:message name="dedicatedMonitoringServiceAddNotificationResponse">
+ <wsdl:part name="return" type="xsd:string" />
+ </wsdl:message>
+
+ <wsdl:message name="orderDedicatedFailoverRipeRequest">
+ <wsdl:part name="session" type="xsd:string" />
+ <wsdl:part name="hostname" type="xsd:string" />
+ <wsdl:part name="address" type="xsd:int" />
+ <wsdl:part name="period" type="xsd:int" />
+ <wsdl:part name="payWithPoints" type="xsd:boolean" />
+ </wsdl:message>
+
+ <wsdl:message name="orderDedicatedFailoverRipeResponse">
+ <wsdl:part name="return" type="typens:orderStruct" />
+ </wsdl:message>
+
+ <wsdl:message name="telephonyPhonebookOnGroupContactModifyRequest">
+ <wsdl:part name="session" type="xsd:string" />
+ <wsdl:part name="group" type="xsd:string" />
+ <wsdl:part name="id" type="xsd:int" />
+ <wsdl:part name="name" type="xsd:string" />
+ <wsdl:part name="surname" type="xsd:string" />
+ <wsdl:part name="workPhone" type="xsd:string" />
+ <wsdl:part name="workMobile" type="xsd:string" />
+ <wsdl:part name="homePhone" type="xsd:string" />
+ <wsdl:part name="homeMobile" type="xsd:string" />
+ <wsdl:part name="groupName" type="xsd:string" />
+ </wsdl:message>
+
+ <wsdl:message name="telephonyPhonebookOnGroupContactModifyResponse" />
+
+ <wsdl:message name="serviceGroupRemoveServiceRequest">
+ <wsdl:part name="session" type="xsd:string" />
+ <wsdl:part name="name" type="xsd:string" />
+ <wsdl:part name="service" type="xsd:string" />
+ <wsdl:part name="component" type="xsd:string" />
+ </wsdl:message>
+
+ <wsdl:message name="serviceGroupRemoveServiceResponse" />
+
+ <wsdl:message name="telephonyScreenListBlackWhiteChoiceModifyRequest">
+ <wsdl:part name="session" type="xsd:string" />
+ <wsdl:part name="number" type="xsd:string" />
+ <wsdl:part name="country" type="xsd:string" />
+ <wsdl:part name="screenList" type="xsd:string" />
+ <wsdl:part name="outgoingCodeUnlock" type="xsd:string" />
+ <wsdl:part name="incomingOoutgoing" type="xsd:string" />
+ </wsdl:message>
+
+ <wsdl:message name="telephonyScreenListBlackWhiteChoiceModifyResponse" />
+
+ <wsdl:message name="telephonySmsplusServiceDetailsRequest">
+ <wsdl:part name="session" type="xsd:string" />
+ <wsdl:part name="shortCode" type="xsd:string" />
+ <wsdl:part name="keyword" type="xsd:string" />
+ </wsdl:message>
+
+ <wsdl:message name="telephonySmsplusServiceDetailsResponse">
+ <wsdl:part name="return" type="typens:telephonySmsplusDetailsStruct" />
+ </wsdl:message>
+
+ <wsdl:message name="dedicatedFilterIrcClientRuleDelRequest">
+ <wsdl:part name="session" type="xsd:string" />
+ <wsdl:part name="hostname" type="xsd:string" />
+ <wsdl:part name="fromIp" type="xsd:string" />
+ <wsdl:part name="toIp" type="xsd:string" />
+ </wsdl:message>
+
+ <wsdl:message name="dedicatedFilterIrcClientRuleDelResponse" />
+
+ <wsdl:message name="domainHostAddRequest">
+ <wsdl:part name="session" type="xsd:string" />
+ <wsdl:part name="domain" type="xsd:string" />
+ <wsdl:part name="host" type="xsd:string" />
+ <wsdl:part name="ip" type="xsd:string" />
+ </wsdl:message>
+
+ <wsdl:message name="domainHostAddResponse">
+ <wsdl:part name="return" type="xsd:int" />
+ </wsdl:message>
+
+ <wsdl:message name="popModifyDescriptionRequest">
+ <wsdl:part name="session" type="xsd:string" />
+ <wsdl:part name="domain" type="xsd:string" />
+ <wsdl:part name="pop" type="xsd:string" />
+ <wsdl:part name="description" type="xsd:string" />
+ </wsdl:message>
+
+ <wsdl:message name="popModifyDescriptionResponse" />
+
+ <wsdl:message name="telephonyAbbreviatedNumberOnGroupDelRequest">
+ <wsdl:part name="session" type="xsd:string" />
+ <wsdl:part name="group" type="xsd:string" />
+ <wsdl:part name="abbreviatedNumber" type="xsd:string" />
+ </wsdl:message>
+
+ <wsdl:message name="telephonyAbbreviatedNumberOnGroupDelResponse" />
+
+ <wsdl:message name="crontabAddRequest">
+ <wsdl:part name="session" type="xsd:string" />
+ <wsdl:part name="domain" type="xsd:string" />
+ <wsdl:part name="path" type="xsd:string" />
+ <wsdl:part name="programLanguage" type="xsd:string" />
+ <wsdl:part name="weekDay" type="xsd:string" />
+ <wsdl:part name="days" type="xsd:string" />
+ <wsdl:part name="hours" type="xsd:string" />
+ <wsdl:part name="desc" type="xsd:string" />
+ <wsdl:part name="email" type="xsd:string" />
+ <wsdl:part name="otherEmail" type="xsd:string" />
+ </wsdl:message>
+
+ <wsdl:message name="crontabAddResponse">
+ <wsdl:part name="return" type="xsd:int" />
+ </wsdl:message>
+
+ <wsdl:message name="telephonySmsSenderDescriptionRequest">
+ <wsdl:part name="session" type="xsd:string" />
+ <wsdl:part name="smsAccount" type="xsd:string" />
+ <wsdl:part name="number" type="xsd:string" />
+ <wsdl:part name="description" type="xsd:string" />
+ </wsdl:message>
+
+ <wsdl:message name="telephonySmsSenderDescriptionResponse" />
+
+ <wsdl:message name="mailingListModifyRequest">
+ <wsdl:part name="session" type="xsd:string" />
+ <wsdl:part name="domain" type="xsd:string" />
+ <wsdl:part name="ml" type="xsd:string" />
+ <wsdl:part name="owner" type="xsd:string" />
+ <wsdl:part name="lang" type="xsd:string" />
+ <wsdl:part name="replyto" type="xsd:string" />
+ <wsdl:part name="message_moderation" type="xsd:boolean" />
+ <wsdl:part name="users_post_only" type="xsd:boolean" />
+ <wsdl:part name="subscription_moderation" type="xsd:boolean" />
+ </wsdl:message>
+
+ <wsdl:message name="mailingListModifyResponse" />
+
+ <wsdl:message name="managedServicesPartitionGetRequest">
+ <wsdl:part name="session" type="xsd:string" />
+ <wsdl:part name="domain" type="xsd:string" />
+ </wsdl:message>
+
+ <wsdl:message name="managedServicesPartitionGetResponse">
+ <wsdl:part name="return" type="typens:MyArrayOfManagedServicesPartitionStructType" />
+ </wsdl:message>
+
+ <wsdl:message name="telephonyAbbreviatedNumberListPaginatedRequest">
+ <wsdl:part name="session" type="xsd:string" />
+ <wsdl:part name="number" type="xsd:string" />
+ <wsdl:part name="country" type="xsd:string" />
+ <wsdl:part name="pagingStart" type="xsd:int" />
+ <wsdl:part name="pagingLimit" type="xsd:int" />
+ <wsdl:part name="sortField" type="xsd:string" />
+ <wsdl:part name="sortOrder" type="xsd:string" />
+ </wsdl:message>
+
+ <wsdl:message name="telephonyAbbreviatedNumberListPaginatedResponse">
+ <wsdl:part name="return" type="typens:telephonyAbbreviatedNumberListPaginatedReturn" />
+ </wsdl:message>
+
+ <wsdl:message name="telephonySetDefaultPrivateHolidaysEventsRequest">
+ <wsdl:part name="session" type="xsd:string" />
+ <wsdl:part name="number" type="xsd:string" />
+ <wsdl:part name="country" type="xsd:string" />
+ <wsdl:part name="defaultPublicHolidaysCountry" type="xsd:string" />
+ </wsdl:message>
+
+ <wsdl:message name="telephonySetDefaultPrivateHolidaysEventsResponse" />
+
+ <wsdl:message name="emailDelMasterNicRequest">
+ <wsdl:part name="session" type="xsd:string" />
+ <wsdl:part name="domain" type="xsd:string" />
+ </wsdl:message>
+
+ <wsdl:message name="emailDelMasterNicResponse" />
+
+ <wsdl:message name="redirectedEmailModifyRequest">
+ <wsdl:part name="session" type="xsd:string" />
+ <wsdl:part name="domain" type="xsd:string" />
+ <wsdl:part name="redirected" type="xsd:string" />
+ <wsdl:part name="old_target" type="xsd:string" />
+ <wsdl:part name="target" type="xsd:string" />
+ <wsdl:part name="subdomain" type="xsd:string" />
+ </wsdl:message>
+
+ <wsdl:message name="redirectedEmailModifyResponse" />
+
+ <wsdl:message name="telephonySpareServiceListRequest">
+ <wsdl:part name="session" type="xsd:string" />
+ <wsdl:part name="type" type="xsd:string" />
+ <wsdl:part name="spare" type="xsd:string" />
+ </wsdl:message>
+
+ <wsdl:message name="telephonySpareServiceListResponse">
+ <wsdl:part name="return" type="typens:MyArrayOfTelephonySpareServiceInfoStructType" />
+ </wsdl:message>
+
+ <wsdl:message name="popInfoRequest">
+ <wsdl:part name="session" type="xsd:string" />
+ <wsdl:part name="domain" type="xsd:string" />
+ <wsdl:part name="pop" type="xsd:string" />
+ </wsdl:message>
+
+ <wsdl:message name="popInfoResponse">
+ <wsdl:part name="return" type="typens:popStruct" />
+ </wsdl:message>
+
+ <wsdl:message name="zoneExportRequest">
+ <wsdl:part name="session" type="xsd:string" />
+ <wsdl:part name="domain" type="xsd:string" />
+ </wsdl:message>
+
+ <wsdl:message name="zoneExportResponse">
+ <wsdl:part name="return" type="xsd:string" />
+ </wsdl:message>
+
+ <wsdl:message name="dedicatedMrtgInfoRequest">
+ <wsdl:part name="session" type="xsd:string" />
+ <wsdl:part name="hostname" type="xsd:string" />
+ <wsdl:part name="type" type="xsd:string" />
+ <wsdl:part name="duration" type="xsd:string" />
+ <wsdl:part name="ip" type="xsd:string" />
+ </wsdl:message>
+
+ <wsdl:message name="dedicatedMrtgInfoResponse">
+ <wsdl:part name="return" type="typens:dedicatedMrtgInfoReturn" />
+ </wsdl:message>
+
+ <wsdl:message name="dedicatedBackupReinstallDataRequest">
+ <wsdl:part name="session" type="xsd:string" />
+ <wsdl:part name="hostname" type="xsd:string" />
+ <wsdl:part name="backupId" type="xsd:string" />
+ </wsdl:message>
+
+ <wsdl:message name="dedicatedBackupReinstallDataResponse" />
+
+ <wsdl:message name="serviceFreedomListRequest">
+ <wsdl:part name="session" type="xsd:string" />
+ <wsdl:part name="domain" type="xsd:string" />
+ <wsdl:part name="component" type="xsd:string" />
+ </wsdl:message>
+
+ <wsdl:message name="serviceFreedomListResponse">
+ <wsdl:part name="return" type="typens:MyArrayOfFreedomStructType" />
+ </wsdl:message>
+
+ <wsdl:message name="supportGetFullMessageRequest">
+ <wsdl:part name="session" type="xsd:string" />
+ <wsdl:part name="messageId" type="xsd:int" />
+ </wsdl:message>
+
+ <wsdl:message name="supportGetFullMessageResponse">
+ <wsdl:part name="return" type="typens:supportMessageDetailReturn" />
+ </wsdl:message>
+
+ <wsdl:message name="telephonySmsUserListCsvAttachmentRequest">
+ <wsdl:part name="smsAccount" type="xsd:string" />
+ <wsdl:part name="login" type="xsd:string" />
+ <wsdl:part name="password" type="xsd:string" />
+ <wsdl:part name="id" type="xsd:string" />
+ </wsdl:message>
+
+ <wsdl:message name="telephonySmsUserListCsvAttachmentResponse">
+ <wsdl:part name="return" type="typens:MyArrayOfTelephonySmsCsvSlotStructType" />
+ </wsdl:message>
+
+ <wsdl:message name="emailGetDomainCatchAllRequest">
+ <wsdl:part name="session" type="xsd:string" />
+ <wsdl:part name="domain" type="xsd:string" />
+ </wsdl:message>
+
+ <wsdl:message name="emailGetDomainCatchAllResponse">
+ <wsdl:part name="return" type="typens:catchAllGetReturn" />
+ </wsdl:message>
+
+ <wsdl:message name="telephonyFaxCallListRequest">
+ <wsdl:part name="session" type="xsd:string" />
+ <wsdl:part name="number" type="xsd:string" />
+ <wsdl:part name="country" type="xsd:string" />
+ <wsdl:part name="listBegin" type="xsd:int" />
+ <wsdl:part name="listLimit" type="xsd:int" />
+ <wsdl:part name="faxReceived" type="xsd:boolean" />
+ </wsdl:message>
+
+ <wsdl:message name="telephonyFaxCallListResponse">
+ <wsdl:part name="return" type="typens:telephonyFaxCallListReturn" />
+ </wsdl:message>
+
+ <wsdl:message name="telephonySmsUserSendRequest">
+ <wsdl:part name="login" type="xsd:string" />
+ <wsdl:part name="password" type="xsd:string" />
+ <wsdl:part name="smsAccount" type="xsd:string" />
+ <wsdl:part name="numberFrom" type="xsd:string" />
+ <wsdl:part name="numberTo" type="xsd:string" />
+ <wsdl:part name="message" type="xsd:string" />
+ <wsdl:part name="smsValidity" type="xsd:int" />
+ <wsdl:part name="smsClass" type="xsd:int" />
+ <wsdl:part name="smsDeferred" type="xsd:int" />
+ <wsdl:part name="smsPriority" type="xsd:int" />
+ <wsdl:part name="smsCoding" type="xsd:int" />
+ <wsdl:part name="tag" type="xsd:string" />
+ <wsdl:part name="noStop" type="xsd:boolean" />
+ </wsdl:message>
+
+ <wsdl:message name="telephonySmsUserSendResponse">
+ <wsdl:part name="return" type="xsd:int" />
+ </wsdl:message>
+
+ <wsdl:message name="mailingListAddRequest">
+ <wsdl:part name="session" type="xsd:string" />
+ <wsdl:part name="domain" type="xsd:string" />
+ <wsdl:part name="ml" type="xsd:string" />
+ <wsdl:part name="owner" type="xsd:string" />
+ <wsdl:part name="lang" type="xsd:string" />
+ <wsdl:part name="replyto" type="xsd:string" />
+ <wsdl:part name="message_moderation" type="xsd:boolean" />
+ <wsdl:part name="users_post_only" type="xsd:boolean" />
+ <wsdl:part name="subscription_moderation" type="xsd:boolean" />
+ </wsdl:message>
+
+ <wsdl:message name="mailingListAddResponse" />
+
+ <wsdl:message name="dedicatedBackupFtpInfoRequest">
+ <wsdl:part name="session" type="xsd:string" />
+ <wsdl:part name="hostname" type="xsd:string" />
+ </wsdl:message>
+
+ <wsdl:message name="dedicatedBackupFtpInfoResponse">
+ <wsdl:part name="return" type="typens:dedicatedBackupFtpInfoReturn" />
+ </wsdl:message>
+
+ <wsdl:message name="telephonyPhonebookOnGroupGroupListRequest">
+ <wsdl:part name="session" type="xsd:string" />
+ <wsdl:part name="group" type="xsd:string" />
+ <wsdl:part name="id" type="xsd:int" />
+ </wsdl:message>
+
+ <wsdl:message name="telephonyPhonebookOnGroupGroupListResponse">
+ <wsdl:part name="return" type="typens:MyArrayOfTelephonyPhonebookGroupStructType" />
+ </wsdl:message>
+
+ <wsdl:message name="telephonyClick2CallUserPasswordRequest">
+ <wsdl:part name="session" type="xsd:string" />
+ <wsdl:part name="number" type="xsd:string" />
+ <wsdl:part name="country" type="xsd:string" />
+ <wsdl:part name="login" type="xsd:string" />
+ <wsdl:part name="password" type="xsd:string" />
+ </wsdl:message>
+
+ <wsdl:message name="telephonyClick2CallUserPasswordResponse" />
+
+ <wsdl:message name="dedicatedMonitoringModifyRequest">
+ <wsdl:part name="session" type="xsd:string" />
+ <wsdl:part name="hostname" type="xsd:string" />
+ <wsdl:part name="id" type="xsd:string" />
+ <wsdl:part name="email" type="xsd:string" />
+ <wsdl:part name="language" type="xsd:string" />
+ <wsdl:part name="status" type="xsd:string" />
+ </wsdl:message>
+
+ <wsdl:message name="dedicatedMonitoringModifyResponse" />
+
+ <wsdl:message name="emailSetMasterNicRequest">
+ <wsdl:part name="session" type="xsd:string" />
+ <wsdl:part name="domain" type="xsd:string" />
+ <wsdl:part name="nic" type="xsd:string" />
+ </wsdl:message>
+
+ <wsdl:message name="emailSetMasterNicResponse" />
+
+ <wsdl:message name="sqlpriveMysqlDatabaseListRequest">
+ <wsdl:part name="session" type="xsd:string" />
+ <wsdl:part name="server" type="xsd:string" />
+ </wsdl:message>
+
+ <wsdl:message name="sqlpriveMysqlDatabaseListResponse">
+ <wsdl:part name="return" type="typens:MyArrayOfStringType" />
+ </wsdl:message>
+
+ <wsdl:message name="automatedMailReturnSetRequest">
+ <wsdl:part name="session" type="xsd:string" />
+ <wsdl:part name="domain" type="xsd:string" />
+ <wsdl:part name="email" type="xsd:string" />
+ </wsdl:message>
+
+ <wsdl:message name="automatedMailReturnSetResponse" />
+
+ <wsdl:message name="databaseRecreateRequest">
+ <wsdl:part name="session" type="xsd:string" />
+ <wsdl:part name="domain" type="xsd:string" />
+ <wsdl:part name="db" type="xsd:string" />
+ </wsdl:message>
+
+ <wsdl:message name="databaseRecreateResponse" />
+
+ <wsdl:message name="popModifyPasswordRequest">
+ <wsdl:part name="session" type="xsd:string" />
+ <wsdl:part name="domain" type="xsd:string" />
+ <wsdl:part name="pop" type="xsd:string" />
+ <wsdl:part name="password" type="xsd:string" />
+ <wsdl:part name="doNotSendMail" type="xsd:boolean" />
+ </wsdl:message>
+
+ <wsdl:message name="popModifyPasswordResponse" />
+
+ <wsdl:message name="responderEmailAddRequest">
+ <wsdl:part name="session" type="xsd:string" />
+ <wsdl:part name="domain" type="xsd:string" />
+ <wsdl:part name="responder" type="xsd:string" />
+ <wsdl:part name="content" type="xsd:string" />
+ <wsdl:part name="delivered_to" type="xsd:string" />
+ <wsdl:part name="nic" type="xsd:string" />
+ </wsdl:message>
+
+ <wsdl:message name="responderEmailAddResponse" />
+
+ <wsdl:message name="sqlpriveMysqlProcessListRequest">
+ <wsdl:part name="session" type="xsd:string" />
+ <wsdl:part name="server" type="xsd:string" />
+ </wsdl:message>
+
+ <wsdl:message name="sqlpriveMysqlProcessListResponse">
+ <wsdl:part name="return" type="typens:MyArrayOfSqlpriveMysqlProcessStructType" />
+ </wsdl:message>
+
+ <wsdl:message name="telephonySmsGetUserQuotaRequest">
+ <wsdl:part name="session" type="xsd:string" />
+ <wsdl:part name="smsAccount" type="xsd:string" />
+ <wsdl:part name="login" type="xsd:string" />
+ </wsdl:message>
+
+ <wsdl:message name="telephonySmsGetUserQuotaResponse">
+ <wsdl:part name="return" type="xsd:string" />
+ </wsdl:message>
+
+ <wsdl:message name="dedicatedGetRandomAvailableIpFromCountryRequest">
+ <wsdl:part name="session" type="xsd:string" />
+ <wsdl:part name="hostname" type="xsd:string" />
+ <wsdl:part name="country" type="xsd:string" />
+ </wsdl:message>
+
+ <wsdl:message name="dedicatedGetRandomAvailableIpFromCountryResponse">
+ <wsdl:part name="return" type="xsd:string" />
+ </wsdl:message>
+
+ <wsdl:message name="telephonySmsSenderDeleteRequest">
+ <wsdl:part name="session" type="xsd:string" />
+ <wsdl:part name="smsAccount" type="xsd:string" />
+ <wsdl:part name="number" type="xsd:string" />
+ </wsdl:message>
+
+ <wsdl:message name="telephonySmsSenderDeleteResponse" />
+
+ <wsdl:message name="telephonyToneStatusRequest">
+ <wsdl:part name="session" type="xsd:string" />
+ <wsdl:part name="number" type="xsd:string" />
+ <wsdl:part name="country" type="xsd:string" />
+ </wsdl:message>
+
+ <wsdl:message name="telephonyToneStatusResponse">
+ <wsdl:part name="return" type="typens:telephonyToneStatusReturn" />
+ </wsdl:message>
+
+ <wsdl:message name="telephonyDdiInfoRequest">
+ <wsdl:part name="session" type="xsd:string" />
+ <wsdl:part name="number" type="xsd:string" />
+ <wsdl:part name="country" type="xsd:string" />
+ </wsdl:message>
+
+ <wsdl:message name="telephonyDdiInfoResponse">
+ <wsdl:part name="return" type="typens:telephonyDdiInfoReturn" />
+ </wsdl:message>
+
+ <wsdl:message name="dedicatedInstallBasicProgressRequest">
+ <wsdl:part name="session" type="xsd:string" />
+ <wsdl:part name="hostname" type="xsd:string" />
+ </wsdl:message>
+
+ <wsdl:message name="dedicatedInstallBasicProgressResponse">
+ <wsdl:part name="return" type="typens:dedicatedBasicInstallProgressReturn" />
+ </wsdl:message>
+
+ <wsdl:message name="dedicatedAddServiceMonitoringAlertEmailRequest">
+ <wsdl:part name="session" type="xsd:string" />
+ <wsdl:part name="ip" type="xsd:string" />
+ <wsdl:part name="port" type="xsd:int" />
+ <wsdl:part name="itemId" type="xsd:int" />
+ <wsdl:part name="email" type="xsd:string" />
+ </wsdl:message>
+
+ <wsdl:message name="dedicatedAddServiceMonitoringAlertEmailResponse" />
+
+ <wsdl:message name="telephonyHuntingGroupListRequest">
+ <wsdl:part name="session" type="xsd:string" />
+ <wsdl:part name="number" type="xsd:string" />
+ <wsdl:part name="country" type="xsd:string" />
+ </wsdl:message>
+
+ <wsdl:message name="telephonyHuntingGroupListResponse">
+ <wsdl:part name="return" type="typens:MyArrayOfStringType" />
+ </wsdl:message>
+
+ <wsdl:message name="dedicatedFailoverUpdateRequest">
+ <wsdl:part name="session" type="xsd:string" />
+ <wsdl:part name="hostname" type="xsd:string" />
+ <wsdl:part name="ip" type="xsd:string" />
+ <wsdl:part name="routedTo" type="xsd:string" />
+ </wsdl:message>
+
+ <wsdl:message name="dedicatedFailoverUpdateResponse" />
+
+ <wsdl:message name="telephonyTrunkExternalDisplayedNumberListRequest">
+ <wsdl:part name="session" type="xsd:string" />
+ <wsdl:part name="number" type="xsd:string" />
+ <wsdl:part name="country" type="xsd:string" />
+ </wsdl:message>
+
+ <wsdl:message name="telephonyTrunkExternalDisplayedNumberListResponse">
+ <wsdl:part name="return" type="typens:MyArrayOfTelephonyTrunkExternalDisplayedNumberStructType" />
+ </wsdl:message>
+
+ <wsdl:message name="telephonyDirectoryListWayTypeRequest">
+ <wsdl:part name="session" type="xsd:string" />
+ </wsdl:message>
+
+ <wsdl:message name="telephonyDirectoryListWayTypeResponse">
+ <wsdl:part name="return" type="typens:MyArrayOfTelephonyDirectoryWayTypeStructType" />
+ </wsdl:message>
+
+ <wsdl:message name="telephonySmsUserHistoryCsvRequest">
+ <wsdl:part name="login" type="xsd:string" />
+ <wsdl:part name="password" type="xsd:string" />
+ <wsdl:part name="smsAccount" type="xsd:string" />
+ <wsdl:part name="smsId" type="xsd:int" />
+ <wsdl:part name="user" type="xsd:string" />
+ <wsdl:part name="pagingStart" type="xsd:int" />
+ <wsdl:part name="pagingLimit" type="xsd:int" />
+ <wsdl:part name="sortField" type="xsd:string" />
+ <wsdl:part name="sortOrder" type="xsd:string" />
+ <wsdl:part name="tag" type="xsd:string" />
+ <wsdl:part name="filter" type="xsd:string" />
+ </wsdl:message>
+
+ <wsdl:message name="telephonySmsUserHistoryCsvResponse">
+ <wsdl:part name="return" type="xsd:string" />
+ </wsdl:message>
+
+ <wsdl:message name="telephonyCallListRequest">
+ <wsdl:part name="session" type="xsd:string" />
+ <wsdl:part name="number" type="xsd:string" />
+ <wsdl:part name="country" type="xsd:string" />
+ <wsdl:part name="listBegin" type="xsd:int" />
+ <wsdl:part name="listLimit" type="xsd:int" />
+ <wsdl:part name="listType" type="xsd:string" />
+ <wsdl:part name="date" type="xsd:string" />
+ <wsdl:part name="callReceived" type="xsd:boolean" />
+ <wsdl:part name="filterSearch" type="xsd:string" />
+ <wsdl:part name="filterValue" type="xsd:string" />
+ <wsdl:part name="planType" type="xsd:string" />
+ </wsdl:message>
+
+ <wsdl:message name="telephonyCallListResponse">
+ <wsdl:part name="return" type="typens:telephonyCallListReturn" />
+ </wsdl:message>
+
+ <wsdl:message name="managedServicesPartitionUpdateRequest">
+ <wsdl:part name="session" type="xsd:string" />
+ <wsdl:part name="storage" type="xsd:string" />
+ <wsdl:part name="name" type="xsd:string" />
+ <wsdl:part name="size" type="xsd:int" />
+ </wsdl:message>
+
+ <wsdl:message name="managedServicesPartitionUpdateResponse" />
+
+ <wsdl:message name="telephonyGetDefaultPrivateHolidaysEventsRequest">
+ <wsdl:part name="session" type="xsd:string" />
+ </wsdl:message>
+
+ <wsdl:message name="telephonyGetDefaultPrivateHolidaysEventsResponse">
+ <wsdl:part name="return" type="typens:telephonyGetDefaultPrivateHolidaysEventsReturn" />
+ </wsdl:message>
+
+ <wsdl:message name="telephonySmsplusShortCodesListRequest">
+ <wsdl:part name="session" type="xsd:string" />
+ <wsdl:part name="shortCode" type="xsd:string" />
+ <wsdl:part name="shortCodeCategory" type="xsd:int" />
+ <wsdl:part name="publicType" type="xsd:string" />
+ <wsdl:part name="price" type="xsd:float" />
+ <wsdl:part name="rates" type="xsd:string" />
+ </wsdl:message>
+
+ <wsdl:message name="telephonySmsplusShortCodesListResponse">
+ <wsdl:part name="return" type="typens:MyArrayOfTelephonySmsplusChoicesStructType" />
+ </wsdl:message>
+
+ <wsdl:message name="dedicatedFilterIrcServerRuleAddRequest">
+ <wsdl:part name="session" type="xsd:string" />
+ <wsdl:part name="hostname" type="xsd:string" />
+ <wsdl:part name="toIp" type="xsd:string" />
+ </wsdl:message>
+
+ <wsdl:message name="dedicatedFilterIrcServerRuleAddResponse" />
+
+ <wsdl:message name="dedicatedVirtualMacIpAddRequest">
+ <wsdl:part name="session" type="xsd:string" />
+ <wsdl:part name="hostname" type="xsd:string" />
+ <wsdl:part name="ip" type="xsd:string" />
+ <wsdl:part name="newMac" type="xsd:string" />
+ <wsdl:part name="typeMac" type="xsd:string" />
+ <wsdl:part name="macName" type="xsd:string" />
+ <wsdl:part name="mac" type="xsd:string" />
+ </wsdl:message>
+
+ <wsdl:message name="dedicatedVirtualMacIpAddResponse">
+ <wsdl:part name="return" type="xsd:string" />
+ </wsdl:message>
+
+ <wsdl:message name="telephonyAliasToSipPossibilitiesRequest">
+ <wsdl:part name="session" type="xsd:string" />
+ <wsdl:part name="number" type="xsd:string" />
+ <wsdl:part name="country" type="xsd:string" />
+ </wsdl:message>
+
+ <wsdl:message name="telephonyAliasToSipPossibilitiesResponse">
+ <wsdl:part name="return" type="typens:MyArrayOfTelephonyAliasToLinePossibilityPriceStructType" />
+ </wsdl:message>
+
+ <wsdl:message name="telephonyAbbreviatedNumberOnGroupAddRequest">
+ <wsdl:part name="session" type="xsd:string" />
+ <wsdl:part name="group" type="xsd:string" />
+ <wsdl:part name="abbreviatedNumber" type="xsd:string" />
+ <wsdl:part name="relatedNumber" type="xsd:string" />
+ <wsdl:part name="name" type="xsd:string" />
+ <wsdl:part name="surname" type="xsd:string" />
+ </wsdl:message>
+
+ <wsdl:message name="telephonyAbbreviatedNumberOnGroupAddResponse" />
+
+ <wsdl:message name="telephonyHuntingModificationQueueRequest">
+ <wsdl:part name="session" type="xsd:string" />
+ <wsdl:part name="number" type="xsd:string" />
+ <wsdl:part name="country" type="xsd:string" />
+ <wsdl:part name="billingAccount" type="xsd:string" />
+ <wsdl:part name="onHoldTimer" type="xsd:int" />
+ <wsdl:part name="queueSize" type="xsd:int" />
+ </wsdl:message>
+
+ <wsdl:message name="telephonyHuntingModificationQueueResponse" />
+
+ <wsdl:message name="telephonyDirectoryInfoRequest">
+ <wsdl:part name="session" type="xsd:string" />
+ <wsdl:part name="callNumber" type="xsd:string" />
+ <wsdl:part name="countryCode" type="xsd:string" />
+ </wsdl:message>
+
+ <wsdl:message name="telephonyDirectoryInfoResponse">
+ <wsdl:part name="return" type="typens:telephonyDirectoryInfoReturn" />
+ </wsdl:message>
+
+ <wsdl:message name="telephonyBillDetailsRequest">
+ <wsdl:part name="session" type="xsd:string" />
+ <wsdl:part name="billingAccount" type="xsd:string" />
+ <wsdl:part name="date" type="xsd:string" />
+ </wsdl:message>
+
+ <wsdl:message name="telephonyBillDetailsResponse">
+ <wsdl:part name="return" type="typens:telephonyBillDetailsReturn" />
+ </wsdl:message>
+
+ <wsdl:message name="dedicatedRipeGetRipeIdsRequest">
+ <wsdl:part name="session" type="xsd:string" />
+ </wsdl:message>
+
+ <wsdl:message name="dedicatedRipeGetRipeIdsResponse">
+ <wsdl:part name="return" type="typens:MyArrayOfStringType" />
+ </wsdl:message>
+
+ <wsdl:message name="telephonyLineLogsNotificationOptionsModifyRequest">
+ <wsdl:part name="session" type="xsd:string" />
+ <wsdl:part name="number" type="xsd:string" />
+ <wsdl:part name="country" type="xsd:string" />
+ <wsdl:part name="frequency" type="xsd:string" />
+ <wsdl:part name="sendIfNull" type="xsd:boolean" />
+ <wsdl:part name="email" type="xsd:string" />
+ </wsdl:message>
+
+ <wsdl:message name="telephonyLineLogsNotificationOptionsModifyResponse" />
+
+ <wsdl:message name="dnsInstallCustomRequest">
+ <wsdl:part name="session" type="xsd:string" />
+ <wsdl:part name="domain" type="xsd:string" />
+ <wsdl:part name="subdomain" type="xsd:string" />
+ <wsdl:part name="hostingtype" type="xsd:string" />
+ <wsdl:part name="hosting" type="xsd:string" />
+ <wsdl:part name="mxtype" type="xsd:string" />
+ <wsdl:part name="mx" type="xsd:string" />
+ <wsdl:part name="country" type="xsd:string" />
+ <wsdl:part name="minimized" type="xsd:boolean" />
+ </wsdl:message>
+
+ <wsdl:message name="dnsInstallCustomResponse" />
+
+ <wsdl:message name="sqlpriveMysqlActivateOvhManagementRequest">
+ <wsdl:part name="session" type="xsd:string" />
+ <wsdl:part name="server" type="xsd:string" />
+ </wsdl:message>
+
+ <wsdl:message name="sqlpriveMysqlActivateOvhManagementResponse" />
+
+ <wsdl:message name="telephonyClick2CallDoBySessionRequest">
+ <wsdl:part name="session" type="xsd:string" />
+ <wsdl:part name="calling" type="xsd:string" />
+ <wsdl:part name="called" type="xsd:string" />
+ <wsdl:part name="billingNumber" type="xsd:string" />
+ </wsdl:message>
+
+ <wsdl:message name="telephonyClick2CallDoBySessionResponse" />
+
+ <wsdl:message name="telephonyAbbreviatedNumberAddRequest">
+ <wsdl:part name="session" type="xsd:string" />
+ <wsdl:part name="number" type="xsd:string" />
+ <wsdl:part name="country" type="xsd:string" />
+ <wsdl:part name="abbreviatedNumber" type="xsd:string" />
+ <wsdl:part name="relatedNumber" type="xsd:string" />
+ <wsdl:part name="name" type="xsd:string" />
+ <wsdl:part name="surname" type="xsd:string" />
+ </wsdl:message>
+
+ <wsdl:message name="telephonyAbbreviatedNumberAddResponse" />
+
+ <wsdl:message name="prepaidGetThresholdRequest">
+ <wsdl:part name="session" type="xsd:string" />
+ <wsdl:part name="nic" type="xsd:string" />
+ </wsdl:message>
+
+ <wsdl:message name="prepaidGetThresholdResponse">
+ <wsdl:part name="return" type="xsd:int" />
+ </wsdl:message>
+
+ <wsdl:message name="domainWhoisObfuscatorUnsetAllRequest">
+ <wsdl:part name="session" type="xsd:string" />
+ </wsdl:message>
+
+ <wsdl:message name="domainWhoisObfuscatorUnsetAllResponse" />
+
+ <wsdl:message name="multiFtpDelRequest">
+ <wsdl:part name="session" type="xsd:string" />
+ <wsdl:part name="domain" type="xsd:string" />
+ <wsdl:part name="login" type="xsd:string" />
+ </wsdl:message>
+
+ <wsdl:message name="multiFtpDelResponse" />
+
+ <wsdl:message name="sqlpriveMysqlGetPossibleDumpRequest">
+ <wsdl:part name="session" type="xsd:string" />
+ <wsdl:part name="server" type="xsd:string" />
+ <wsdl:part name="directory" type="xsd:string" />
+ </wsdl:message>
+
+ <wsdl:message name="sqlpriveMysqlGetPossibleDumpResponse">
+ <wsdl:part name="return" type="typens:MyArrayOfSqlpriveGetPossibleDumpStructType" />
+ </wsdl:message>
+
+ <wsdl:message name="telephonyNumberOrderRequest">
+ <wsdl:part name="session" type="xsd:string" />
+ <wsdl:part name="billingAccount" type="xsd:string" />
+ <wsdl:part name="aliasNumber" type="xsd:string" />
+ <wsdl:part name="prefix" type="xsd:string" />
+ <wsdl:part name="country" type="xsd:string" />
+ <wsdl:part name="name" type="xsd:string" />
+ <wsdl:part name="firstname" type="xsd:string" />
+ <wsdl:part name="streetName" type="xsd:string" />
+ <wsdl:part name="streetNumber" type="xsd:string" />
+ <wsdl:part name="zip" type="xsd:string" />
+ <wsdl:part name="city" type="xsd:string" />
+ <wsdl:part name="email" type="xsd:string" />
+ <wsdl:part name="numberToReserve" type="xsd:string" />
+ <wsdl:part name="procedureId" type="xsd:int" />
+ <wsdl:part name="legalForm" type="xsd:string" />
+ <wsdl:part name="siret" type="xsd:string" />
+ <wsdl:part name="ape" type="xsd:string" />
+ <wsdl:part name="socialNomination" type="xsd:string" />
+ <wsdl:part name="displayUniversalDirectory" type="xsd:string" />
+ <wsdl:part name="retractation" type="xsd:string" />
+ </wsdl:message>
+
+ <wsdl:message name="telephonyNumberOrderResponse">
+ <wsdl:part name="return" type="typens:telephonyNumberOrderReturn" />
+ </wsdl:message>
+
+ <wsdl:message name="telephonyLineSetIpRestrictionRequest">
+ <wsdl:part name="session" type="xsd:string" />
+ <wsdl:part name="number" type="xsd:string" />
+ <wsdl:part name="country" type="xsd:string" />
+ <wsdl:part name="ips" type="typens:MyArrayOfStringType" />
+ </wsdl:message>
+
+ <wsdl:message name="telephonyLineSetIpRestrictionResponse" />
+
+ <wsdl:message name="prepaidGetHistoryRequest">
+ <wsdl:part name="session" type="xsd:string" />
+ <wsdl:part name="nic" type="xsd:string" />
+ <wsdl:part name="page" type="xsd:int" />
+ </wsdl:message>
+
+ <wsdl:message name="prepaidGetHistoryResponse">
+ <wsdl:part name="return" type="typens:prepaidGetHistoryReturn" />
+ </wsdl:message>
+
+ <wsdl:message name="telephonyLineSetCodecsRequest">
+ <wsdl:part name="session" type="xsd:string" />
+ <wsdl:part name="number" type="xsd:string" />
+ <wsdl:part name="country" type="xsd:string" />
+ <wsdl:part name="codecs" type="xsd:string" />
+ </wsdl:message>
+
+ <wsdl:message name="telephonyLineSetCodecsResponse" />
+
+ <wsdl:message name="telephonyNumberCityForZoneListRequest">
+ <wsdl:part name="session" type="xsd:string" />
+ <wsdl:part name="zone" type="xsd:string" />
+ </wsdl:message>
+
+ <wsdl:message name="telephonyNumberCityForZoneListResponse">
+ <wsdl:part name="return" type="typens:MyArrayOfTelephonyNumberCityForZoneStructType" />
+ </wsdl:message>
+
+ <wsdl:message name="redirectedEmailDelRequest">
+ <wsdl:part name="session" type="xsd:string" />
+ <wsdl:part name="domain" type="xsd:string" />
+ <wsdl:part name="redirected" type="xsd:string" />
+ <wsdl:part name="target" type="xsd:string" />
+ <wsdl:part name="subdomain" type="xsd:string" />
+ </wsdl:message>
+
+ <wsdl:message name="redirectedEmailDelResponse" />
+
+ <wsdl:message name="dedicatedInfoRequest">
+ <wsdl:part name="session" type="xsd:string" />
+ <wsdl:part name="hostname" type="xsd:string" />
+ </wsdl:message>
+
+ <wsdl:message name="dedicatedInfoResponse">
+ <wsdl:part name="return" type="typens:dedicatedInfoReturn" />
+ </wsdl:message>
+
+ <wsdl:message name="dedicatedBackupUpdateDateRequest">
+ <wsdl:part name="session" type="xsd:string" />
+ <wsdl:part name="hostname" type="xsd:string" />
+ <wsdl:part name="backupId" type="xsd:string" />
+ <wsdl:part name="monday" type="xsd:string" />
+ <wsdl:part name="tuesday" type="xsd:string" />
+ <wsdl:part name="wednesday" type="xsd:string" />
+ <wsdl:part name="thursday" type="xsd:string" />
+ <wsdl:part name="friday" type="xsd:string" />
+ <wsdl:part name="saturday" type="xsd:string" />
+ <wsdl:part name="sunday" type="xsd:string" />
+ </wsdl:message>
+
+ <wsdl:message name="dedicatedBackupUpdateDateResponse" />
+
+ <wsdl:message name="domainOperationListRequest">
+ <wsdl:part name="session" type="xsd:string" />
+ <wsdl:part name="domain" type="xsd:string" />
+ <wsdl:part name="status" type="xsd:string" />
+ </wsdl:message>
+
+ <wsdl:message name="domainOperationListResponse">
+ <wsdl:part name="return" type="typens:MyArrayOfOperationStructType" />
+ </wsdl:message>
+
+ <wsdl:message name="telephonyTonesOptionsModifyRequest">
+ <wsdl:part name="session" type="xsd:string" />
+ <wsdl:part name="number" type="xsd:string" />
+ <wsdl:part name="country" type="xsd:string" />
+ <wsdl:part name="toneRingback" type="xsd:string" />
+ <wsdl:part name="toneOnHold" type="xsd:string" />
+ <wsdl:part name="toneOnClosure" type="xsd:string" />
+ <wsdl:part name="toneOnCallWaiting" type="xsd:string" />
+ </wsdl:message>
+
+ <wsdl:message name="telephonyTonesOptionsModifyResponse" />
+
+ <wsdl:message name="popAttachMasterNicRequest">
+ <wsdl:part name="session" type="xsd:string" />
+ <wsdl:part name="domain" type="xsd:string" />
+ <wsdl:part name="pop" type="xsd:string" />
+ <wsdl:part name="nic" type="xsd:string" />
+ </wsdl:message>
+
+ <wsdl:message name="popAttachMasterNicResponse" />
+
+ <wsdl:message name="telephonyVoicemailMessagesRemoteUploadRequest">
+ <wsdl:part name="session" type="xsd:string" />
+ <wsdl:part name="number" type="xsd:string" />
+ <wsdl:part name="country" type="xsd:string" />
+ <wsdl:part name="messType" type="xsd:string" />
+ <wsdl:part name="filename" type="xsd:string" />
+ <wsdl:part name="url" type="xsd:string" />
+ </wsdl:message>
+
+ <wsdl:message name="telephonyVoicemailMessagesRemoteUploadResponse" />
+
+ <wsdl:message name="crontabInfoRequest">
+ <wsdl:part name="session" type="xsd:string" />
+ <wsdl:part name="domain" type="xsd:string" />
+ <wsdl:part name="id" type="xsd:int" />
+ </wsdl:message>
+
+ <wsdl:message name="crontabInfoResponse">
+ <wsdl:part name="return" type="typens:crontabInfoReturn" />
+ </wsdl:message>
+
+ <wsdl:message name="serviceGroupSetNameRequest">
+ <wsdl:part name="session" type="xsd:string" />
+ <wsdl:part name="name" type="xsd:string" />
+ <wsdl:part name="newName" type="xsd:string" />
+ </wsdl:message>
+
+ <wsdl:message name="serviceGroupSetNameResponse" />
+
+ <wsdl:message name="telephonyOfferInfoRequest">
+ <wsdl:part name="session" type="xsd:string" />
+ <wsdl:part name="number" type="xsd:string" />
+ <wsdl:part name="country" type="xsd:string" />
+ </wsdl:message>
+
+ <wsdl:message name="telephonyOfferInfoResponse">
+ <wsdl:part name="return" type="typens:telephonyOfferInfoReturn" />
+ </wsdl:message>
+
+ <wsdl:message name="multiDomainAddRequest">
+ <wsdl:part name="session" type="xsd:string" />
+ <wsdl:part name="domain" type="xsd:string" />
+ <wsdl:part name="multidomain" type="xsd:string" />
+ <wsdl:part name="target" type="xsd:string" />
+ <wsdl:part name="country" type="xsd:string" />
+ <wsdl:part name="ownLog" type="xsd:boolean" />
+ </wsdl:message>
+
+ <wsdl:message name="multiDomainAddResponse" />
+
+ <wsdl:message name="telephonyPhonebookDelRequest">
+ <wsdl:part name="session" type="xsd:string" />
+ <wsdl:part name="number" type="xsd:string" />
+ <wsdl:part name="country" type="xsd:string" />
+ <wsdl:part name="id" type="xsd:int" />
+ </wsdl:message>
+
+ <wsdl:message name="telephonyPhonebookDelResponse" />
+
+ <wsdl:message name="redirectedEmailListRequest">
+ <wsdl:part name="session" type="xsd:string" />
+ <wsdl:part name="domain" type="xsd:string" />
+ </wsdl:message>
+
+ <wsdl:message name="redirectedEmailListResponse">
+ <wsdl:part name="return" type="typens:MyArrayOfEmailRedirectionStructType" />
+ </wsdl:message>
+
+ <wsdl:message name="telephonySmsUserAddRequest">
+ <wsdl:part name="session" type="xsd:string" />
+ <wsdl:part name="smsAccount" type="xsd:string" />
+ <wsdl:part name="login" type="xsd:string" />
+ <wsdl:part name="password" type="xsd:string" />
+ </wsdl:message>
+
+ <wsdl:message name="telephonySmsUserAddResponse" />
+
+ <wsdl:message name="nicUpdateITRequest">
+ <wsdl:part name="session" type="xsd:string" />
+ <wsdl:part name="nic" type="xsd:string" />
+ <wsdl:part name="name" type="xsd:string" />
+ <wsdl:part name="firstname" type="xsd:string" />
+ <wsdl:part name="sex" type="xsd:string" />
+ <wsdl:part name="legalForm" type="xsd:string" />
+ <wsdl:part name="organisation" type="xsd:string" />
+ <wsdl:part name="legalName" type="xsd:string" />
+ <wsdl:part name="legalNumber" type="xsd:string" />
+ <wsdl:part name="vat" type="xsd:string" />
+ <wsdl:part name="birthDay" type="xsd:string" />
+ <wsdl:part name="birthCity" type="xsd:string" />
+ <wsdl:part name="nationalIdentificationNumber" type="xsd:string" />
+ <wsdl:part name="companyNationalIdentificationNumber" type="xsd:string" />
+ <wsdl:part name="corporationType" type="xsd:string" />
+ </wsdl:message>
+
+ <wsdl:message name="nicUpdateITResponse" />
+
+ <wsdl:message name="telephonySmsUserHistoryRequest">
+ <wsdl:part name="login" type="xsd:string" />
+ <wsdl:part name="password" type="xsd:string" />
+ <wsdl:part name="smsAccount" type="xsd:string" />
+ <wsdl:part name="smsId" type="xsd:int" />
+ <wsdl:part name="user" type="xsd:string" />
+ <wsdl:part name="pagingStart" type="xsd:int" />
+ <wsdl:part name="pagingLimit" type="xsd:int" />
+ <wsdl:part name="sortField" type="xsd:string" />
+ <wsdl:part name="sortOrder" type="xsd:string" />
+ <wsdl:part name="tag" type="xsd:string" />
+ <wsdl:part name="filter" type="xsd:string" />
+ </wsdl:message>
+
+ <wsdl:message name="telephonySmsUserHistoryResponse">
+ <wsdl:part name="return" type="typens:MyArrayOfTelephonySmsHistoryStructType" />
+ </wsdl:message>
+
+ <wsdl:message name="dedicatedMonitoringStatusGetRequest">
+ <wsdl:part name="session" type="xsd:string" />
+ <wsdl:part name="hostname" type="xsd:string" />
+ </wsdl:message>
+
+ <wsdl:message name="dedicatedMonitoringStatusGetResponse">
+ <wsdl:part name="return" type="typens:dedicatedMonitoringStatusReturn" />
+ </wsdl:message>
+
+ <wsdl:message name="ripeUpdateOrganisationRequest">
+ <wsdl:part name="session" type="xsd:string" />
+ <wsdl:part name="ripeId" type="xsd:string" />
+ <wsdl:part name="name" type="xsd:string" />
+ <wsdl:part name="address" type="xsd:string" />
+ <wsdl:part name="email" type="xsd:string" />
+ <wsdl:part name="abuse" type="xsd:string" />
+ <wsdl:part name="descr" type="xsd:string" />
+ <wsdl:part name="phone" type="xsd:string" />
+ <wsdl:part name="fax" type="xsd:string" />
+ <wsdl:part name="remarks" type="xsd:string" />
+ </wsdl:message>
+
+ <wsdl:message name="ripeUpdateOrganisationResponse">
+ <wsdl:part name="return" type="typens:ripeUpdateReturn" />
+ </wsdl:message>
+
+ <wsdl:message name="telephonySmsUserGetCallBackRequest">
+ <wsdl:part name="login" type="xsd:string" />
+ <wsdl:part name="password" type="xsd:string" />
+ <wsdl:part name="smsAccount" type="xsd:string" />
+ </wsdl:message>
+
+ <wsdl:message name="telephonySmsUserGetCallBackResponse">
+ <wsdl:part name="return" type="xsd:string" />
+ </wsdl:message>
+
+ <wsdl:message name="dedicatedNetbootModifyRequest">
+ <wsdl:part name="session" type="xsd:string" />
+ <wsdl:part name="hostname" type="xsd:string" />
+ <wsdl:part name="kernel" type="xsd:string" />
+ <wsdl:part name="cpufamily" type="xsd:string" />
+ <wsdl:part name="grsec" type="xsd:boolean" />
+ <wsdl:part name="smp" type="xsd:boolean" />
+ <wsdl:part name="ipv6" type="xsd:boolean" />
+ <wsdl:part name="root" type="xsd:string" />
+ <wsdl:part name="rescueEmail" type="xsd:string" />
+ <wsdl:part name="hz" type="xsd:string" />
+ </wsdl:message>
+
+ <wsdl:message name="dedicatedNetbootModifyResponse" />
+
+ <wsdl:message name="subDomainListRequest">
+ <wsdl:part name="session" type="xsd:string" />
+ <wsdl:part name="domain" type="xsd:string" />
+ </wsdl:message>
+
+ <wsdl:message name="subDomainListResponse">
+ <wsdl:part name="return" type="typens:MyArrayOfSubDomainStructType" />
+ </wsdl:message>
+
+ <wsdl:message name="sqlpriveFtpPasswordRequest">
+ <wsdl:part name="session" type="xsd:string" />
+ <wsdl:part name="server" type="xsd:string" />
+ <wsdl:part name="password" type="xsd:string" />
+ </wsdl:message>
+
+ <wsdl:message name="sqlpriveFtpPasswordResponse" />
+
+ <wsdl:message name="telephonyOfferModifyPasswordRequest">
+ <wsdl:part name="session" type="xsd:string" />
+ <wsdl:part name="number" type="xsd:string" />
+ <wsdl:part name="country" type="xsd:string" />
+ <wsdl:part name="password" type="xsd:string" />
+ </wsdl:message>
+
+ <wsdl:message name="telephonyOfferModifyPasswordResponse" />
+
+ <wsdl:message name="dnsUninstallRequest">
+ <wsdl:part name="session" type="xsd:string" />
+ <wsdl:part name="domain" type="xsd:string" />
+ </wsdl:message>
+
+ <wsdl:message name="dnsUninstallResponse" />
+
+ <wsdl:message name="dedicatedFilterIrcClientRuleListRequest">
+ <wsdl:part name="session" type="xsd:string" />
+ <wsdl:part name="hostname" type="xsd:string" />
+ </wsdl:message>
+
+ <wsdl:message name="dedicatedFilterIrcClientRuleListResponse">
+ <wsdl:part name="return" type="typens:MyArrayOfDedicatedFilterIrcRuleStructType" />
+ </wsdl:message>
+
+ <wsdl:message name="telephonyFunctionKeyAddRequest">
+ <wsdl:part name="session" type="xsd:string" />
+ <wsdl:part name="number" type="xsd:string" />
+ <wsdl:part name="country" type="xsd:string" />
+ <wsdl:part name="keyNum" type="xsd:int" />
+ <wsdl:part name="function" type="xsd:string" />
+ <wsdl:part name="relatedNumber" type="xsd:string" />
+ </wsdl:message>
+
+ <wsdl:message name="telephonyFunctionKeyAddResponse" />
+
+ <wsdl:message name="telephonyPhonebookListRequest">
+ <wsdl:part name="session" type="xsd:string" />
+ <wsdl:part name="number" type="xsd:string" />
+ <wsdl:part name="country" type="xsd:string" />
+ </wsdl:message>
+
+ <wsdl:message name="telephonyPhonebookListResponse">
+ <wsdl:part name="return" type="typens:MyArrayOfTelephonyPhonebookStructType" />
+ </wsdl:message>
+
+ <wsdl:message name="telephonyPlugAndPhoneResetRequest">
+ <wsdl:part name="session" type="xsd:string" />
+ <wsdl:part name="number" type="xsd:string" />
+ <wsdl:part name="country" type="xsd:string" />
+ <wsdl:part name="ip" type="xsd:string" />
+ </wsdl:message>
+
+ <wsdl:message name="telephonyPlugAndPhoneResetResponse">
+ <wsdl:part name="return" type="typens:telephonyPlugAndPhoneReinitConfigurationReturn" />
+ </wsdl:message>
+
+ <wsdl:message name="sqlpriveMysqlRootPasswordRequest">
+ <wsdl:part name="session" type="xsd:string" />
+ <wsdl:part name="server" type="xsd:string" />
+ <wsdl:part name="password" type="xsd:string" />
+ </wsdl:message>
+
+ <wsdl:message name="sqlpriveMysqlRootPasswordResponse" />
+
+ <wsdl:message name="telephonySpareInfoRequest">
+ <wsdl:part name="session" type="xsd:string" />
+ <wsdl:part name="type" type="xsd:string" />
+ <wsdl:part name="spare" type="xsd:string" />
+ </wsdl:message>
+
+ <wsdl:message name="telephonySpareInfoResponse">
+ <wsdl:part name="return" type="typens:telephonySpareInfoStruct" />
+ </wsdl:message>
+
+ <wsdl:message name="telephonySmsUserDelRequest">
+ <wsdl:part name="session" type="xsd:string" />
+ <wsdl:part name="smsAccount" type="xsd:string" />
+ <wsdl:part name="login" type="xsd:string" />
+ </wsdl:message>
+
+ <wsdl:message name="telephonySmsUserDelResponse" />
+
+ <wsdl:message name="emailSetDomainMxFilteringRequest">
+ <wsdl:part name="session" type="xsd:string" />
+ <wsdl:part name="domain" type="xsd:string" />
+ <wsdl:part name="subdomain" type="xsd:string" />
+ <wsdl:part name="type" type="xsd:string" />
+ <wsdl:part name="mx" type="xsd:string" />
+ </wsdl:message>
+
+ <wsdl:message name="emailSetDomainMxFilteringResponse" />
+
+ <wsdl:message name="telephonyVoicemailMessagesStatusRequest">
+ <wsdl:part name="session" type="xsd:string" />
+ <wsdl:part name="number" type="xsd:string" />
+ <wsdl:part name="country" type="xsd:string" />
+ </wsdl:message>
+
+ <wsdl:message name="telephonyVoicemailMessagesStatusResponse">
+ <wsdl:part name="return" type="typens:telephonyVoicemailMessagesStatusReturn" />
+ </wsdl:message>
+
+ <wsdl:message name="telephonyPhonebookModifyRequest">
+ <wsdl:part name="session" type="xsd:string" />
+ <wsdl:part name="number" type="xsd:string" />
+ <wsdl:part name="country" type="xsd:string" />
+ <wsdl:part name="id" type="xsd:int" />
+ <wsdl:part name="name" type="xsd:string" />
+ </wsdl:message>
+
+ <wsdl:message name="telephonyPhonebookModifyResponse" />
+
+ <wsdl:message name="dedicatedIPForUDPMoveRequest">
+ <wsdl:part name="session" type="xsd:string" />
+ <wsdl:part name="hostname" type="xsd:string" />
+ <wsdl:part name="hostnameTo" type="xsd:string" />
+ <wsdl:part name="ip" type="xsd:string" />
+ </wsdl:message>
+
+ <wsdl:message name="dedicatedIPForUDPMoveResponse" />
+
+ <wsdl:message name="nicUpdateRequest">
+ <wsdl:part name="session" type="xsd:string" />
+ <wsdl:part name="nic" type="xsd:string" />
+ <wsdl:part name="name" type="xsd:string" />
+ <wsdl:part name="firstname" type="xsd:string" />
+ <wsdl:part name="legalForm" type="xsd:string" />
+ <wsdl:part name="organisation" type="xsd:string" />
+ <wsdl:part name="legalName" type="xsd:string" />
+ <wsdl:part name="legalNumber" type="xsd:string" />
+ <wsdl:part name="vat" type="xsd:string" />
+ </wsdl:message>
+
+ <wsdl:message name="nicUpdateResponse" />
+
+ <wsdl:message name="passwordManagerRequest">
+ <wsdl:part name="session" type="xsd:string" />
+ <wsdl:part name="currentPassword" type="xsd:string" />
+ <wsdl:part name="password" type="xsd:string" />
+ </wsdl:message>
+
+ <wsdl:message name="passwordManagerResponse" />
+
+ <wsdl:message name="telephonyOfferModifyNameRequest">
+ <wsdl:part name="session" type="xsd:string" />
+ <wsdl:part name="number" type="xsd:string" />
+ <wsdl:part name="country" type="xsd:string" />
+ <wsdl:part name="name" type="xsd:string" />
+ </wsdl:message>
+
+ <wsdl:message name="telephonyOfferModifyNameResponse" />
+
+ <wsdl:message name="notepadFlushRequest">
+ <wsdl:part name="session" type="xsd:string" />
+ </wsdl:message>
+
+ <wsdl:message name="notepadFlushResponse" />
+
+ <wsdl:message name="telephonySmsSetCallBackRequest">
+ <wsdl:part name="session" type="xsd:string" />
+ <wsdl:part name="smsAccount" type="xsd:string" />
+ <wsdl:part name="callBack" type="xsd:string" />
+ </wsdl:message>
+
+ <wsdl:message name="telephonySmsSetCallBackResponse" />
+
+ <wsdl:message name="multiDomainModifyRequest">
+ <wsdl:part name="session" type="xsd:string" />
+ <wsdl:part name="domain" type="xsd:string" />
+ <wsdl:part name="multidomain" type="xsd:string" />
+ <wsdl:part name="target" type="xsd:string" />
+ <wsdl:part name="country" type="xsd:string" />
+ <wsdl:part name="ownLog" type="xsd:boolean" />
+ </wsdl:message>
+
+ <wsdl:message name="multiDomainModifyResponse" />
+
+ <wsdl:message name="languageRequest">
+ <wsdl:part name="session" type="xsd:string" />
+ <wsdl:part name="language" type="xsd:string" />
+ </wsdl:message>
+
+ <wsdl:message name="languageResponse">
+ <wsdl:part name="return" type="xsd:string" />
+ </wsdl:message>
+
+ <wsdl:message name="dedicatedMonitoringSMSModifyRequest">
+ <wsdl:part name="session" type="xsd:string" />
+ <wsdl:part name="hostname" type="xsd:string" />
+ <wsdl:part name="id" type="xsd:string" />
+ <wsdl:part name="smsAccount" type="xsd:string" />
+ <wsdl:part name="phoneNumberTo" type="xsd:string" />
+ <wsdl:part name="language" type="xsd:string" />
+ <wsdl:part name="status" type="xsd:string" />
+ </wsdl:message>
+
+ <wsdl:message name="dedicatedMonitoringSMSModifyResponse" />
+
+ <wsdl:message name="telephonyPhonebookGroupListRequest">
+ <wsdl:part name="session" type="xsd:string" />
+ <wsdl:part name="number" type="xsd:string" />
+ <wsdl:part name="country" type="xsd:string" />
+ <wsdl:part name="id" type="xsd:int" />
+ </wsdl:message>
+
+ <wsdl:message name="telephonyPhonebookGroupListResponse">
+ <wsdl:part name="return" type="typens:MyArrayOfTelephonyPhonebookGroupStructType" />
+ </wsdl:message>
+
+ <wsdl:message name="logsAccessDelRequest">
+ <wsdl:part name="session" type="xsd:string" />
+ <wsdl:part name="domain" type="xsd:string" />
+ <wsdl:part name="user" type="xsd:string" />
+ </wsdl:message>
+
+ <wsdl:message name="logsAccessDelResponse" />
+
+ <wsdl:message name="logsAccessAddRequest">
+ <wsdl:part name="session" type="xsd:string" />
+ <wsdl:part name="domain" type="xsd:string" />
+ <wsdl:part name="user" type="xsd:string" />
+ <wsdl:part name="password" type="xsd:string" />
+ </wsdl:message>
+
+ <wsdl:message name="logsAccessAddResponse" />
+
+ <wsdl:message name="multiDomainInfoRequest">
+ <wsdl:part name="session" type="xsd:string" />
+ <wsdl:part name="domain" type="xsd:string" />
+ <wsdl:part name="multidomain" type="xsd:string" />
+ </wsdl:message>
+
+ <wsdl:message name="multiDomainInfoResponse">
+ <wsdl:part name="return" type="typens:multiDomainStruct" />
+ </wsdl:message>
+
+ <wsdl:message name="domainWhoisObfuscatorListRequest">
+ <wsdl:part name="session" type="xsd:string" />
+ </wsdl:message>
+
+ <wsdl:message name="domainWhoisObfuscatorListResponse">
+ <wsdl:part name="return" type="typens:MyArrayOfDomainWhoisObfuscatorStructType" />
+ </wsdl:message>
+
+ <wsdl:message name="sqlpriveMysqlProcessKillRequest">
+ <wsdl:part name="session" type="xsd:string" />
+ <wsdl:part name="server" type="xsd:string" />
+ <wsdl:part name="process" type="xsd:int" />
+ </wsdl:message>
+
+ <wsdl:message name="sqlpriveMysqlProcessKillResponse" />
+
+ <wsdl:message name="telephonyBillingAccountInfoRequest">
+ <wsdl:part name="session" type="xsd:string" />
+ <wsdl:part name="billingAccount" type="xsd:string" />
+ </wsdl:message>
+
+ <wsdl:message name="telephonyBillingAccountInfoResponse">
+ <wsdl:part name="return" type="typens:telephonyBillingAccountInfoReturn" />
+ </wsdl:message>
+
+ <wsdl:message name="mailingListListRequest">
+ <wsdl:part name="session" type="xsd:string" />
+ <wsdl:part name="domain" type="xsd:string" />
+ </wsdl:message>
+
+ <wsdl:message name="mailingListListResponse">
+ <wsdl:part name="return" type="typens:MyArrayOfMailingListStructType" />
+ </wsdl:message>
+
+ <wsdl:message name="telephonySmsSenderAddRequest">
+ <wsdl:part name="session" type="xsd:string" />
+ <wsdl:part name="smsAccount" type="xsd:string" />
+ <wsdl:part name="sender" type="xsd:string" />
+ <wsdl:part name="reason" type="xsd:string" />
+ </wsdl:message>
+
+ <wsdl:message name="telephonySmsSenderAddResponse">
+ <wsdl:part name="return" type="xsd:int" />
+ </wsdl:message>
+
+ <wsdl:message name="telephonyLineConsumptionCSVByMailRequest">
+ <wsdl:part name="session" type="xsd:string" />
+ <wsdl:part name="number" type="xsd:string" />
+ <wsdl:part name="country" type="xsd:string" />
+ <wsdl:part name="date" type="xsd:string" />
+ </wsdl:message>
+
+ <wsdl:message name="telephonyLineConsumptionCSVByMailResponse" />
+
+ <wsdl:message name="telephonySmsUserDeleteCsvAttachmentRequest">
+ <wsdl:part name="smsAccount" type="xsd:string" />
+ <wsdl:part name="login" type="xsd:string" />
+ <wsdl:part name="password" type="xsd:string" />
+ <wsdl:part name="ids" type="typens:MyArrayOfIntType" />
+ </wsdl:message>
+
+ <wsdl:message name="telephonySmsUserDeleteCsvAttachmentResponse" />
+
+ <wsdl:message name="mailingListSubscriberListByEmailRequest">
+ <wsdl:part name="session" type="xsd:string" />
+ <wsdl:part name="domain" type="xsd:string" />
+ <wsdl:part name="ml" type="xsd:string" />
+ <wsdl:part name="email" type="xsd:string" />
+ </wsdl:message>
+
+ <wsdl:message name="mailingListSubscriberListByEmailResponse" />
+
+ <wsdl:message name="supportCloseThreadsRequest">
+ <wsdl:part name="session" type="xsd:string" />
+ <wsdl:part name="threads" type="xsd:string" />
+ </wsdl:message>
+
+ <wsdl:message name="supportCloseThreadsResponse" />
+
+ <wsdl:message name="sqlpriveMysqlDatabaseSaveRequest">
+ <wsdl:part name="session" type="xsd:string" />
+ <wsdl:part name="server" type="xsd:string" />
+ <wsdl:part name="database" type="xsd:string" />
+ <wsdl:part name="comment" type="xsd:string" />
+ <wsdl:part name="compress" type="xsd:boolean" />
+ </wsdl:message>
+
+ <wsdl:message name="sqlpriveMysqlDatabaseSaveResponse">
+ <wsdl:part name="return" type="xsd:int" />
+ </wsdl:message>
+
+ <wsdl:message name="telephonyListReversableCallsFromNumberRequest">
+ <wsdl:part name="session" type="xsd:string" />
+ <wsdl:part name="number" type="xsd:string" />
+ <wsdl:part name="country" type="xsd:string" />
+ <wsdl:part name="reversableDelay" type="xsd:string" />
+ <wsdl:part name="pagingStart" type="xsd:int" />
+ <wsdl:part name="pagingLimit" type="xsd:int" />
+ <wsdl:part name="sortOrder" type="xsd:string" />
+ <wsdl:part name="sortField" type="xsd:string" />
+ </wsdl:message>
+
+ <wsdl:message name="telephonyListReversableCallsFromNumberResponse">
+ <wsdl:part name="return" type="typens:telephonyListReversableCallsFromNumberReturn" />
+ </wsdl:message>
+
+ <wsdl:message name="telephonyBillingAccountListRequest">
+ <wsdl:part name="session" type="xsd:string" />
+ </wsdl:message>
+
+ <wsdl:message name="telephonyBillingAccountListResponse">
+ <wsdl:part name="return" type="typens:MyArrayOfTelephonyBillingAccountStructType" />
+ </wsdl:message>
+
+ <wsdl:message name="telephonySmsGetQuotaNotificationForUserRequest">
+ <wsdl:part name="smsAccount" type="xsd:string" />
+ <wsdl:part name="login" type="xsd:string" />
+ <wsdl:part name="password" type="xsd:string" />
+ </wsdl:message>
+
+ <wsdl:message name="telephonySmsGetQuotaNotificationForUserResponse">
+ <wsdl:part name="return" type="typens:telephonyNotificationSmsUserStruct" />
+ </wsdl:message>
+
+ <wsdl:message name="dedicatedMonitoringDelRequest">
+ <wsdl:part name="session" type="xsd:string" />
+ <wsdl:part name="hostname" type="xsd:string" />
+ <wsdl:part name="id" type="xsd:string" />
+ </wsdl:message>
+
+ <wsdl:message name="dedicatedMonitoringDelResponse" />
+
+ <wsdl:message name="telephonyChangeNicModifyRequest">
+ <wsdl:part name="session" type="xsd:string" />
+ <wsdl:part name="nicNames" type="typens:MyArrayOfStringType" />
+ <wsdl:part name="nicPasswords" type="typens:MyArrayOfStringType" />
+ <wsdl:part name="nicTypes" type="typens:MyArrayOfStringType" />
+ <wsdl:part name="changeTypes" type="typens:MyArrayOfStringType" />
+ <wsdl:part name="changeElts" type="typens:MyArrayOfStringType" />
+ </wsdl:message>
+
+ <wsdl:message name="telephonyChangeNicModifyResponse" />
+
+ <wsdl:message name="dedicatedMonitoringServiceAddSMSRequest">
+ <wsdl:part name="session" type="xsd:string" />
+ <wsdl:part name="hostname" type="xsd:string" />
+ <wsdl:part name="ip" type="xsd:string" />
+ <wsdl:part name="port" type="xsd:int" />
+ <wsdl:part name="protocol" type="xsd:string" />
+ <wsdl:part name="period" type="xsd:string" />
+ <wsdl:part name="string" type="xsd:string" />
+ <wsdl:part name="url" type="xsd:string" />
+ <wsdl:part name="smsAccount" type="xsd:string" />
+ <wsdl:part name="phoneNumberTo" type="xsd:string" />
+ </wsdl:message>
+
+ <wsdl:message name="dedicatedMonitoringServiceAddSMSResponse">
+ <wsdl:part name="return" type="xsd:string" />
+ </wsdl:message>
+
+ <wsdl:message name="prepaidGetBalanceRequest">
+ <wsdl:part name="session" type="xsd:string" />
+ <wsdl:part name="nic" type="xsd:string" />
+ </wsdl:message>
+
+ <wsdl:message name="prepaidGetBalanceResponse">
+ <wsdl:part name="return" type="xsd:float" />
+ </wsdl:message>
+
+ <wsdl:message name="telephonySviInfoRequest">
+ <wsdl:part name="session" type="xsd:string" />
+ <wsdl:part name="number" type="xsd:string" />
+ <wsdl:part name="country" type="xsd:string" />
+ </wsdl:message>
+
+ <wsdl:message name="telephonySviInfoResponse">
+ <wsdl:part name="return" type="typens:telephonySviInfoReturn" />
+ </wsdl:message>
+
+ <wsdl:message name="dnsGeolocalizeHostingRequest">
+ <wsdl:part name="session" type="xsd:string" />
+ <wsdl:part name="domain" type="xsd:string" />
+ <wsdl:part name="hosting" type="xsd:string" />
+ <wsdl:part name="country" type="xsd:string" />
+ </wsdl:message>
+
+ <wsdl:message name="dnsGeolocalizeHostingResponse" />
+
+ <wsdl:message name="popAddRequest">
+ <wsdl:part name="session" type="xsd:string" />
+ <wsdl:part name="domain" type="xsd:string" />
+ <wsdl:part name="pop" type="xsd:string" />
+ <wsdl:part name="password" type="xsd:string" />
+ <wsdl:part name="description" type="xsd:string" />
+ <wsdl:part name="nic" type="xsd:string" />
+ <wsdl:part name="quota" type="xsd:int" />
+ </wsdl:message>
+
+ <wsdl:message name="popAddResponse" />
+
+ <wsdl:message name="telephonyClick2CallUserAddRequest">
+ <wsdl:part name="session" type="xsd:string" />
+ <wsdl:part name="number" type="xsd:string" />
+ <wsdl:part name="country" type="xsd:string" />
+ <wsdl:part name="login" type="xsd:string" />
+ <wsdl:part name="password" type="xsd:string" />
+ </wsdl:message>
+
+ <wsdl:message name="telephonyClick2CallUserAddResponse" />
+
+ <wsdl:message name="domainHostInfoRequest">
+ <wsdl:part name="session" type="xsd:string" />
+ <wsdl:part name="domain" type="xsd:string" />
+ <wsdl:part name="host" type="xsd:string" />
+ </wsdl:message>
+
+ <wsdl:message name="domainHostInfoResponse">
+ <wsdl:part name="return" type="typens:domainHostInfoReturn" />
+ </wsdl:message>
+
+ <wsdl:message name="dedicatedListRequest">
+ <wsdl:part name="session" type="xsd:string" />
+ </wsdl:message>
+
+ <wsdl:message name="dedicatedListResponse">
+ <wsdl:part name="return" type="typens:MyArrayOfStringType" />
+ </wsdl:message>
+
+ <wsdl:message name="dedicatedIPForUDPGetRequest">
+ <wsdl:part name="session" type="xsd:string" />
+ <wsdl:part name="hostname" type="xsd:string" />
+ </wsdl:message>
+
+ <wsdl:message name="dedicatedIPForUDPGetResponse">
+ <wsdl:part name="return" type="typens:MyArrayOfDedicatedIPForUDPStructType" />
+ </wsdl:message>
+
+ <wsdl:message name="dedicatedGetAvailableIpFromNetworkRequest">
+ <wsdl:part name="session" type="xsd:string" />
+ <wsdl:part name="hostname" type="xsd:string" />
+ <wsdl:part name="network" type="xsd:string" />
+ </wsdl:message>
+
+ <wsdl:message name="dedicatedGetAvailableIpFromNetworkResponse">
+ <wsdl:part name="return" type="typens:MyArrayOfStringType" />
+ </wsdl:message>
+
+ <wsdl:message name="crontabModifyRequest">
+ <wsdl:part name="session" type="xsd:string" />
+ <wsdl:part name="domain" type="xsd:string" />
+ <wsdl:part name="id" type="xsd:int" />
+ <wsdl:part name="path" type="xsd:string" />
+ <wsdl:part name="programLanguage" type="xsd:string" />
+ <wsdl:part name="weekDay" type="xsd:string" />
+ <wsdl:part name="days" type="xsd:string" />
+ <wsdl:part name="hours" type="xsd:string" />
+ <wsdl:part name="desc" type="xsd:string" />
+ <wsdl:part name="email" type="xsd:string" />
+ <wsdl:part name="otherEmail" type="xsd:string" />
+ <wsdl:part name="enable" type="xsd:boolean" />
+ </wsdl:message>
+
+ <wsdl:message name="crontabModifyResponse" />
+
+ <wsdl:message name="sqlpriveCronGetRequest">
+ <wsdl:part name="session" type="xsd:string" />
+ <wsdl:part name="server" type="xsd:string" />
+ </wsdl:message>
+
+ <wsdl:message name="sqlpriveCronGetResponse">
+ <wsdl:part name="return" type="typens:MyArrayOfSqlpriveCronStructType" />
+ </wsdl:message>
+
+ <wsdl:message name="supportReactivateThreadRequest">
+ <wsdl:part name="session" type="xsd:string" />
+ <wsdl:part name="threadId" type="xsd:int" />
+ </wsdl:message>
+
+ <wsdl:message name="supportReactivateThreadResponse" />
+
+ <wsdl:message name="telephonySmsBlacklistedSendersDeleteRequest">
+ <wsdl:part name="session" type="xsd:string" />
+ <wsdl:part name="smsAccount" type="xsd:string" />
+ <wsdl:part name="ids" type="typens:MyArrayOfIntType" />
+ </wsdl:message>
+
+ <wsdl:message name="telephonySmsBlacklistedSendersDeleteResponse" />
+
+ <wsdl:message name="zoneImportRequest">
+ <wsdl:part name="session" type="xsd:string" />
+ <wsdl:part name="domain" type="xsd:string" />
+ <wsdl:part name="zone" type="xsd:string" />
+ </wsdl:message>
+
+ <wsdl:message name="zoneImportResponse" />
+
+ <wsdl:message name="telephonySmsplusServiceAddRequest">
+ <wsdl:part name="session" type="xsd:string" />
+ <wsdl:part name="billingAccount" type="xsd:string" />
+ <wsdl:part name="shortCode" type="xsd:string" />
+ <wsdl:part name="keyword" type="xsd:string" />
+ <wsdl:part name="procedureId" type="xsd:int" />
+ <wsdl:part name="applicationType" type="xsd:string" />
+ <wsdl:part name="applicationDescription" type="xsd:string" />
+ <wsdl:part name="company" type="xsd:string" />
+ <wsdl:part name="acceptedContract" type="xsd:boolean" />
+ </wsdl:message>
+
+ <wsdl:message name="telephonySmsplusServiceAddResponse">
+ <wsdl:part name="return" type="typens:orderStruct" />
+ </wsdl:message>
+
+ <wsdl:message name="multiDomainDelRequest">
+ <wsdl:part name="session" type="xsd:string" />
+ <wsdl:part name="domain" type="xsd:string" />
+ <wsdl:part name="multidomain" type="xsd:string" />
+ </wsdl:message>
+
+ <wsdl:message name="multiDomainDelResponse" />
+
+ <wsdl:message name="telephonySpareCreateRMARequest">
+ <wsdl:part name="session" type="xsd:string" />
+ <wsdl:part name="type" type="xsd:string" />
+ <wsdl:part name="spare" type="xsd:string" />
+ </wsdl:message>
+
+ <wsdl:message name="telephonySpareCreateRMAResponse" />
+
+ <wsdl:message name="telephonySmsplusServiceEditRequest">
+ <wsdl:part name="session" type="xsd:string" />
+ <wsdl:part name="shortCode" type="xsd:string" />
+ <wsdl:part name="keyword" type="xsd:string" />
+ <wsdl:part name="description" type="xsd:string" />
+ <wsdl:part name="cgiActivation" type="xsd:boolean" />
+ <wsdl:part name="cgiUrl" type="xsd:string" />
+ <wsdl:part name="text" type="xsd:string" />
+ <wsdl:part name="trackingMedias" type="typens:MyArrayOfStringType" />
+ <wsdl:part name="trackingTargets" type="typens:MyArrayOfStringType" />
+ <wsdl:part name="trackingDefaultSmsAccount" type="xsd:string" />
+ <wsdl:part name="trackingDefaultSmsSender" type="xsd:string" />
+ <wsdl:part name="sendingDefaultSmsAccountMtBilling" type="xsd:string" />
+ <wsdl:part name="sendingNoSmsMt" type="xsd:boolean" />
+ </wsdl:message>
+
+ <wsdl:message name="telephonySmsplusServiceEditResponse" />
+
+ <wsdl:message name="dedicatedMailinglistSubscribeRequest">
+ <wsdl:part name="session" type="xsd:string" />
+ <wsdl:part name="email" type="xsd:string" />
+ <wsdl:part name="mailingList" type="xsd:string" />
+ </wsdl:message>
+
+ <wsdl:message name="dedicatedMailinglistSubscribeResponse" />
+
+ <wsdl:message name="serviceGroupInfoRequest">
+ <wsdl:part name="session" type="xsd:string" />
+ <wsdl:part name="name" type="xsd:string" />
+ </wsdl:message>
+
+ <wsdl:message name="serviceGroupInfoResponse">
+ <wsdl:part name="return" type="typens:serviceGroupStruct" />
+ </wsdl:message>
+
+ <wsdl:message name="automatedMailFlushRequest">
+ <wsdl:part name="session" type="xsd:string" />
+ <wsdl:part name="domain" type="xsd:string" />
+ </wsdl:message>
+
+ <wsdl:message name="automatedMailFlushResponse" />
+
+ <wsdl:message name="managedServicesNameUpdateRequest">
+ <wsdl:part name="session" type="xsd:string" />
+ <wsdl:part name="storage" type="xsd:string" />
+ <wsdl:part name="customName" type="xsd:string" />
+ </wsdl:message>
+
+ <wsdl:message name="managedServicesNameUpdateResponse" />
+
+ <wsdl:message name="popGetQuotaRequest">
+ <wsdl:part name="session" type="xsd:string" />
+ <wsdl:part name="domain" type="xsd:string" />
+ <wsdl:part name="pop" type="xsd:string" />
+ </wsdl:message>
+
+ <wsdl:message name="popGetQuotaResponse">
+ <wsdl:part name="return" type="typens:popGetQuotaReturn" />
+ </wsdl:message>
+
+ <wsdl:message name="telephonyHuntingGenericScreenOptionsModifyRequest">
+ <wsdl:part name="session" type="xsd:string" />
+ <wsdl:part name="number" type="xsd:string" />
+ <wsdl:part name="country" type="xsd:string" />
+ <wsdl:part name="forwardUnconditionalNumber" type="xsd:string" />
+ <wsdl:part name="mainVoicemail" type="xsd:string" />
+ <wsdl:part name="forwardPolicyIndex" type="xsd:string" />
+ <wsdl:part name="timeout" type="xsd:int" />
+ </wsdl:message>
+
+ <wsdl:message name="telephonyHuntingGenericScreenOptionsModifyResponse" />
+
+ <wsdl:message name="ripeCreateOrganisationRequest">
+ <wsdl:part name="session" type="xsd:string" />
+ <wsdl:part name="name" type="xsd:string" />
+ <wsdl:part name="address" type="xsd:string" />
+ <wsdl:part name="email" type="xsd:string" />
+ <wsdl:part name="abuse" type="xsd:string" />
+ <wsdl:part name="descr" type="xsd:string" />
+ <wsdl:part name="phone" type="xsd:string" />
+ <wsdl:part name="fax" type="xsd:string" />
+ <wsdl:part name="remarks" type="xsd:string" />
+ </wsdl:message>
+
+ <wsdl:message name="ripeCreateOrganisationResponse">
+ <wsdl:part name="return" type="typens:ripeUpdateReturn" />
+ </wsdl:message>
+
+ <wsdl:message name="telephonyPlugAndPhoneInfoRequest">
+ <wsdl:part name="session" type="xsd:string" />
+ <wsdl:part name="number" type="xsd:string" />
+ <wsdl:part name="country" type="xsd:string" />
+ </wsdl:message>
+
+ <wsdl:message name="telephonyPlugAndPhoneInfoResponse">
+ <wsdl:part name="return" type="typens:telephonyPlugAndPhoneInfoReturn" />
+ </wsdl:message>
+
+ <wsdl:message name="telephonyFaxCampaignDeleteRequest">
+ <wsdl:part name="session" type="xsd:string" />
+ <wsdl:part name="number" type="xsd:string" />
+ <wsdl:part name="country" type="xsd:string" />
+ <wsdl:part name="reference" type="xsd:string" />
+ </wsdl:message>
+
+ <wsdl:message name="telephonyFaxCampaignDeleteResponse" />
+
+ <wsdl:message name="telephonyReversmentsRefundFromBillingAccountRequest">
+ <wsdl:part name="session" type="xsd:string" />
+ <wsdl:part name="billingAccount" type="xsd:string" />
+ </wsdl:message>
+
+ <wsdl:message name="telephonyReversmentsRefundFromBillingAccountResponse" />
+
+ <wsdl:message name="telephonyVoicemailMessageDeleteRequest">
+ <wsdl:part name="session" type="xsd:string" />
+ <wsdl:part name="number" type="xsd:string" />
+ <wsdl:part name="country" type="xsd:string" />
+ <wsdl:part name="messageType" type="xsd:string" />
+ </wsdl:message>
+
+ <wsdl:message name="telephonyVoicemailMessageDeleteResponse" />
+
+ <wsdl:message name="dedicatedIpLoadBalancingNameModifyRequest">
+ <wsdl:part name="session" type="xsd:string" />
+ <wsdl:part name="ipLoadBalancing" type="xsd:string" />
+ <wsdl:part name="name" type="xsd:string" />
+ </wsdl:message>
+
+ <wsdl:message name="dedicatedIpLoadBalancingNameModifyResponse" />
+
+ <wsdl:message name="telephonyLineOptionsListRequest">
+ <wsdl:part name="session" type="xsd:string" />
+ <wsdl:part name="number" type="xsd:string" />
+ <wsdl:part name="country" type="xsd:string" />
+ </wsdl:message>
+
+ <wsdl:message name="telephonyLineOptionsListResponse">
+ <wsdl:part name="return" type="typens:telephonyLineOptionsListReturn" />
+ </wsdl:message>
+
+ <wsdl:message name="telephonySpareServiceInfoRequest">
+ <wsdl:part name="session" type="xsd:string" />
+ <wsdl:part name="type" type="xsd:string" />
+ <wsdl:part name="service" type="xsd:string" />
+ </wsdl:message>
+
+ <wsdl:message name="telephonySpareServiceInfoResponse">
+ <wsdl:part name="return" type="typens:telephonySpareServiceInfoStruct" />
+ </wsdl:message>
+
+ <wsdl:message name="telephonyAbbreviatedNumberModifyRequest">
+ <wsdl:part name="session" type="xsd:string" />
+ <wsdl:part name="number" type="xsd:string" />
+ <wsdl:part name="country" type="xsd:string" />
+ <wsdl:part name="abbreviatedNumber" type="xsd:string" />
+ <wsdl:part name="relatedNumber" type="xsd:string" />
+ <wsdl:part name="name" type="xsd:string" />
+ <wsdl:part name="surname" type="xsd:string" />
+ </wsdl:message>
+
+ <wsdl:message name="telephonyAbbreviatedNumberModifyResponse" />
+
+ <wsdl:message name="telephonyOfferSimultaneousLinesModifyRequest">
+ <wsdl:part name="session" type="xsd:string" />
+ <wsdl:part name="number" type="xsd:string" />
+ <wsdl:part name="country" type="xsd:string" />
+ <wsdl:part name="simultaneousLines" type="xsd:int" />
+ </wsdl:message>
+
+ <wsdl:message name="telephonyOfferSimultaneousLinesModifyResponse">
+ <wsdl:part name="return" type="typens:orderStruct" />
+ </wsdl:message>
+
+ <wsdl:message name="dedicatedMonitoringServiceListRequest">
+ <wsdl:part name="session" type="xsd:string" />
+ <wsdl:part name="hostname" type="xsd:string" />
+ </wsdl:message>
+
+ <wsdl:message name="dedicatedMonitoringServiceListResponse">
+ <wsdl:part name="return" type="typens:MyArrayOfDedicatedMonitoringServiceStructType" />
+ </wsdl:message>
+
+ <wsdl:message name="resellerDomainTransferRequest">
+ <wsdl:part name="session" type="xsd:string" />
+ <wsdl:part name="domain" type="xsd:string" />
+ <wsdl:part name="authinfo" type="xsd:string" />
+ <wsdl:part name="hosting" type="xsd:string" />
+ <wsdl:part name="offer" type="xsd:string" />
+ <wsdl:part name="profile" type="xsd:string" />
+ <wsdl:part name="owo" type="xsd:string" />
+ <wsdl:part name="owner" type="xsd:string" />
+ <wsdl:part name="admin" type="xsd:string" />
+ <wsdl:part name="tech" type="xsd:string" />
+ <wsdl:part name="billing" type="xsd:string" />
+ <wsdl:part name="dns1" type="xsd:string" />
+ <wsdl:part name="dns2" type="xsd:string" />
+ <wsdl:part name="dns3" type="xsd:string" />
+ <wsdl:part name="dns4" type="xsd:string" />
+ <wsdl:part name="dns5" type="xsd:string" />
+ <wsdl:part name="method" type="xsd:string" />
+ <wsdl:part name="legalName" type="xsd:string" />
+ <wsdl:part name="legalNumber" type="xsd:string" />
+ <wsdl:part name="afnicIdent" type="xsd:string" />
+ <wsdl:part name="birthDate" type="xsd:string" />
+ <wsdl:part name="birthCity" type="xsd:string" />
+ <wsdl:part name="birthDepartement" type="xsd:string" />
+ <wsdl:part name="birthCountry" type="xsd:string" />
+ <wsdl:part name="dryRun" type="xsd:boolean" />
+ </wsdl:message>
+
+ <wsdl:message name="resellerDomainTransferResponse" />
+
+ <wsdl:message name="serviceGroupAddServiceRequest">
+ <wsdl:part name="session" type="xsd:string" />
+ <wsdl:part name="name" type="xsd:string" />
+ <wsdl:part name="service" type="xsd:string" />
+ <wsdl:part name="component" type="xsd:string" />
+ </wsdl:message>
+
+ <wsdl:message name="serviceGroupAddServiceResponse" />
+
+ <wsdl:message name="FailureMsg">
+ <part name="error" type="typens:FailureType" />
+ </wsdl:message>
+
+ <wsdl:portType name="managerPortType">
+
+ <wsdl:operation name="mailingListModeratorDel">
+ <wsdl:input message="wsdlns:mailingListModeratorDelRequest"/>
+ <wsdl:output message="wsdlns:mailingListModeratorDelResponse"/>
+ <wsdl:fault name="failure" message="wsdlns:FailureMsg" />
+ </wsdl:operation>
+
+ <wsdl:operation name="telephonyNumberInfo">
+ <wsdl:input message="wsdlns:telephonyNumberInfoRequest"/>
+ <wsdl:output message="wsdlns:telephonyNumberInfoResponse"/>
+ <wsdl:fault name="failure" message="wsdlns:FailureMsg" />
+ </wsdl:operation>
+
+ <wsdl:operation name="sqlpriveMysqlRestart">
+ <wsdl:input message="wsdlns:sqlpriveMysqlRestartRequest"/>
+ <wsdl:output message="wsdlns:sqlpriveMysqlRestartResponse"/>
+ <wsdl:fault name="failure" message="wsdlns:FailureMsg" />
+ </wsdl:operation>
+
+ <wsdl:operation name="logout">
+ <wsdl:input message="wsdlns:logoutRequest"/>
+ <wsdl:output message="wsdlns:logoutResponse"/>
+ <wsdl:fault name="failure" message="wsdlns:FailureMsg" />
+ </wsdl:operation>
+
+ <wsdl:operation name="multiFtpChangeDirectory">
+ <wsdl:input message="wsdlns:multiFtpChangeDirectoryRequest"/>
+ <wsdl:output message="wsdlns:multiFtpChangeDirectoryResponse"/>
+ <wsdl:fault name="failure" message="wsdlns:FailureMsg" />
+ </wsdl:operation>
+
+ <wsdl:operation name="sqlpriveMysqlVersion">
+ <wsdl:input message="wsdlns:sqlpriveMysqlVersionRequest"/>
+ <wsdl:output message="wsdlns:sqlpriveMysqlVersionResponse"/>
+ <wsdl:fault name="failure" message="wsdlns:FailureMsg" />
+ </wsdl:operation>
+
+ <wsdl:operation name="dedicatedReverseDel">
+ <wsdl:input message="wsdlns:dedicatedReverseDelRequest"/>
+ <wsdl:output message="wsdlns:dedicatedReverseDelResponse"/>
+ <wsdl:fault name="failure" message="wsdlns:FailureMsg" />
+ </wsdl:operation>
+
+ <wsdl:operation name="dedicatedDelServiceMonitoringAlert">
+ <wsdl:input message="wsdlns:dedicatedDelServiceMonitoringAlertRequest"/>
+ <wsdl:output message="wsdlns:dedicatedDelServiceMonitoringAlertResponse"/>
+ <wsdl:fault name="failure" message="wsdlns:FailureMsg" />
+ </wsdl:operation>
+
+ <wsdl:operation name="telephonyVoicemailOptionsList">
+ <wsdl:input message="wsdlns:telephonyVoicemailOptionsListRequest"/>
+ <wsdl:output message="wsdlns:telephonyVoicemailOptionsListResponse"/>
+ <wsdl:fault name="failure" message="wsdlns:FailureMsg" />
+ </wsdl:operation>
+
+ <wsdl:operation name="telephonyPhonebookSharePeerList">
+ <wsdl:input message="wsdlns:telephonyPhonebookSharePeerListRequest"/>
+ <wsdl:output message="wsdlns:telephonyPhonebookSharePeerListResponse"/>
+ <wsdl:fault name="failure" message="wsdlns:FailureMsg" />
+ </wsdl:operation>
+
+ <wsdl:operation name="serviceGroupGetAllInfo">
+ <wsdl:input message="wsdlns:serviceGroupGetAllInfoRequest"/>
+ <wsdl:output message="wsdlns:serviceGroupGetAllInfoResponse"/>
+ <wsdl:fault name="failure" message="wsdlns:FailureMsg" />
+ </wsdl:operation>
+
+ <wsdl:operation name="redirectedEmailAdd">
+ <wsdl:input message="wsdlns:redirectedEmailAddRequest"/>
+ <wsdl:output message="wsdlns:redirectedEmailAddResponse"/>
+ <wsdl:fault name="failure" message="wsdlns:FailureMsg" />
+ </wsdl:operation>
+
+ <wsdl:operation name="nicModifyInfos">
+ <wsdl:input message="wsdlns:nicModifyInfosRequest"/>
+ <wsdl:output message="wsdlns:nicModifyInfosResponse"/>
+ <wsdl:fault name="failure" message="wsdlns:FailureMsg" />
+ </wsdl:operation>
+
+ <wsdl:operation name="ripeGetRipeIds">
+ <wsdl:input message="wsdlns:ripeGetRipeIdsRequest"/>
+ <wsdl:output message="wsdlns:ripeGetRipeIdsResponse"/>
+ <wsdl:fault name="failure" message="wsdlns:FailureMsg" />
+ </wsdl:operation>
+
+ <wsdl:operation name="telephonyRedirectModify">
+ <wsdl:input message="wsdlns:telephonyRedirectModifyRequest"/>
+ <wsdl:output message="wsdlns:telephonyRedirectModifyResponse"/>
+ <wsdl:fault name="failure" message="wsdlns:FailureMsg" />
+ </wsdl:operation>
+
+ <wsdl:operation name="sqlpriveMysqlDatabaseImportFromFile">
+ <wsdl:input message="wsdlns:sqlpriveMysqlDatabaseImportFromFileRequest"/>
+ <wsdl:output message="wsdlns:sqlpriveMysqlDatabaseImportFromFileResponse"/>
+ <wsdl:fault name="failure" message="wsdlns:FailureMsg" />
+ </wsdl:operation>
+
+ <wsdl:operation name="telephonyNumberModify">
+ <wsdl:input message="wsdlns:telephonyNumberModifyRequest"/>
+ <wsdl:output message="wsdlns:telephonyNumberModifyResponse"/>
+ <wsdl:fault name="failure" message="wsdlns:FailureMsg" />
+ </wsdl:operation>
+
+ <wsdl:operation name="dedicatedAddServiceMonitoringAlertSMS">
+ <wsdl:input message="wsdlns:dedicatedAddServiceMonitoringAlertSMSRequest"/>
+ <wsdl:output message="wsdlns:dedicatedAddServiceMonitoringAlertSMSResponse"/>
+ <wsdl:fault name="failure" message="wsdlns:FailureMsg" />
+ </wsdl:operation>
+
+ <wsdl:operation name="telephonyGetCitiesFromZip">
+ <wsdl:input message="wsdlns:telephonyGetCitiesFromZipRequest"/>
+ <wsdl:output message="wsdlns:telephonyGetCitiesFromZipResponse"/>
+ <wsdl:fault name="failure" message="wsdlns:FailureMsg" />
+ </wsdl:operation>
+
+ <wsdl:operation name="automatedMailGetVolumeHistory">
+ <wsdl:input message="wsdlns:automatedMailGetVolumeHistoryRequest"/>
+ <wsdl:output message="wsdlns:automatedMailGetVolumeHistoryResponse"/>
+ <wsdl:fault name="failure" message="wsdlns:FailureMsg" />
+ </wsdl:operation>
+
+ <wsdl:operation name="automatedMailGetTodo">
+ <wsdl:input message="wsdlns:automatedMailGetTodoRequest"/>
+ <wsdl:output message="wsdlns:automatedMailGetTodoResponse"/>
+ <wsdl:fault name="failure" message="wsdlns:FailureMsg" />
+ </wsdl:operation>
+
+ <wsdl:operation name="telephonySmsplusSendSmsMt">
+ <wsdl:input message="wsdlns:telephonySmsplusSendSmsMtRequest"/>
+ <wsdl:output message="wsdlns:telephonySmsplusSendSmsMtResponse"/>
+ <wsdl:fault name="failure" message="wsdlns:FailureMsg" />
+ </wsdl:operation>
+
+ <wsdl:operation name="dedicatedIpLoadBalancingList">
+ <wsdl:input message="wsdlns:dedicatedIpLoadBalancingListRequest"/>
+ <wsdl:output message="wsdlns:dedicatedIpLoadBalancingListResponse"/>
+ <wsdl:fault name="failure" message="wsdlns:FailureMsg" />
+ </wsdl:operation>
+
+ <wsdl:operation name="dedicatedBackupReinstallConfiguration">
+ <wsdl:input message="wsdlns:dedicatedBackupReinstallConfigurationRequest"/>
+ <wsdl:output message="wsdlns:dedicatedBackupReinstallConfigurationResponse"/>
+ <wsdl:fault name="failure" message="wsdlns:FailureMsg" />
+ </wsdl:operation>
+
+ <wsdl:operation name="telephonySmsUserGetCsvAttachment">
+ <wsdl:input message="wsdlns:telephonySmsUserGetCsvAttachmentRequest"/>
+ <wsdl:output message="wsdlns:telephonySmsUserGetCsvAttachmentResponse"/>
+ <wsdl:fault name="failure" message="wsdlns:FailureMsg" />
+ </wsdl:operation>
+
+ <wsdl:operation name="dedicatedBackupGetHisto">
+ <wsdl:input message="wsdlns:dedicatedBackupGetHistoRequest"/>
+ <wsdl:output message="wsdlns:dedicatedBackupGetHistoResponse"/>
+ <wsdl:fault name="failure" message="wsdlns:FailureMsg" />
+ </wsdl:operation>
+
+ <wsdl:operation name="domainHostUpdate">
+ <wsdl:input message="wsdlns:domainHostUpdateRequest"/>
+ <wsdl:output message="wsdlns:domainHostUpdateResponse"/>
+ <wsdl:fault name="failure" message="wsdlns:FailureMsg" />
+ </wsdl:operation>
+
+ <wsdl:operation name="dedicatedBackupUpdate">
+ <wsdl:input message="wsdlns:dedicatedBackupUpdateRequest"/>
+ <wsdl:output message="wsdlns:dedicatedBackupUpdateResponse"/>
+ <wsdl:fault name="failure" message="wsdlns:FailureMsg" />
+ </wsdl:operation>
+
+ <wsdl:operation name="telephonyPhonebookOnSmsList">
+ <wsdl:input message="wsdlns:telephonyPhonebookOnSmsListRequest"/>
+ <wsdl:output message="wsdlns:telephonyPhonebookOnSmsListResponse"/>
+ <wsdl:fault name="failure" message="wsdlns:FailureMsg" />
+ </wsdl:operation>
+
+ <wsdl:operation name="serviceGroupList">
+ <wsdl:input message="wsdlns:serviceGroupListRequest"/>
+ <wsdl:output message="wsdlns:serviceGroupListResponse"/>
+ <wsdl:fault name="failure" message="wsdlns:FailureMsg" />
+ </wsdl:operation>
+
+ <wsdl:operation name="databaseChangePassword">
+ <wsdl:input message="wsdlns:databaseChangePasswordRequest"/>
+ <wsdl:output message="wsdlns:databaseChangePasswordResponse"/>
+ <wsdl:fault name="failure" message="wsdlns:FailureMsg" />
+ </wsdl:operation>
+
+ <wsdl:operation name="billingInvoiceList">
+ <wsdl:input message="wsdlns:billingInvoiceListRequest"/>
+ <wsdl:output message="wsdlns:billingInvoiceListResponse"/>
+ <wsdl:fault name="failure" message="wsdlns:FailureMsg" />
+ </wsdl:operation>
+
+ <wsdl:operation name="telephonySetClosureEvents">
+ <wsdl:input message="wsdlns:telephonySetClosureEventsRequest"/>
+ <wsdl:output message="wsdlns:telephonySetClosureEventsResponse"/>
+ <wsdl:fault name="failure" message="wsdlns:FailureMsg" />
+ </wsdl:operation>
+
+ <wsdl:operation name="telephonyNicSetSipDomain">
+ <wsdl:input message="wsdlns:telephonyNicSetSipDomainRequest"/>
+ <wsdl:output message="wsdlns:telephonyNicSetSipDomainResponse"/>
+ <wsdl:fault name="failure" message="wsdlns:FailureMsg" />
+ </wsdl:operation>
+
+ <wsdl:operation name="globalAccessByNic">
+ <wsdl:input message="wsdlns:globalAccessByNicRequest"/>
+ <wsdl:output message="wsdlns:globalAccessByNicResponse"/>
+ <wsdl:fault name="failure" message="wsdlns:FailureMsg" />
+ </wsdl:operation>
+
+ <wsdl:operation name="dedicatedNetbootGetRescueEmail">
+ <wsdl:input message="wsdlns:dedicatedNetbootGetRescueEmailRequest"/>
+ <wsdl:output message="wsdlns:dedicatedNetbootGetRescueEmailResponse"/>
+ <wsdl:fault name="failure" message="wsdlns:FailureMsg" />
+ </wsdl:operation>
+
+ <wsdl:operation name="ticketListIncidentsByDomain">
+ <wsdl:input message="wsdlns:ticketListIncidentsByDomainRequest"/>
+ <wsdl:output message="wsdlns:ticketListIncidentsByDomainResponse"/>
+ <wsdl:fault name="failure" message="wsdlns:FailureMsg" />
+ </wsdl:operation>
+
+ <wsdl:operation name="telephonySmsMultiSend">
+ <wsdl:input message="wsdlns:telephonySmsMultiSendRequest"/>
+ <wsdl:output message="wsdlns:telephonySmsMultiSendResponse"/>
+ <wsdl:fault name="failure" message="wsdlns:FailureMsg" />
+ </wsdl:operation>
+
+ <wsdl:operation name="serviceListPaginated">
+ <wsdl:input message="wsdlns:serviceListPaginatedRequest"/>
+ <wsdl:output message="wsdlns:serviceListPaginatedResponse"/>
+ <wsdl:fault name="failure" message="wsdlns:FailureMsg" />
+ </wsdl:operation>
+
+ <wsdl:operation name="dedicatedRtmListBackdoor">
+ <wsdl:input message="wsdlns:dedicatedRtmListBackdoorRequest"/>
+ <wsdl:output message="wsdlns:dedicatedRtmListBackdoorResponse"/>
+ <wsdl:fault name="failure" message="wsdlns:FailureMsg" />
+ </wsdl:operation>
+
+ <wsdl:operation name="telephonySmsUserAddCsvAttachment">
+ <wsdl:input message="wsdlns:telephonySmsUserAddCsvAttachmentRequest"/>
+ <wsdl:output message="wsdlns:telephonySmsUserAddCsvAttachmentResponse"/>
+ <wsdl:fault name="failure" message="wsdlns:FailureMsg" />
+ </wsdl:operation>
+
+ <wsdl:operation name="zoneEntryList">
+ <wsdl:input message="wsdlns:zoneEntryListRequest"/>
+ <wsdl:output message="wsdlns:zoneEntryListResponse"/>
+ <wsdl:fault name="failure" message="wsdlns:FailureMsg" />
+ </wsdl:operation>
+
+ <wsdl:operation name="telephonySpareDel">
+ <wsdl:input message="wsdlns:telephonySpareDelRequest"/>
+ <wsdl:output message="wsdlns:telephonySpareDelResponse"/>
+ <wsdl:fault name="failure" message="wsdlns:FailureMsg" />
+ </wsdl:operation>
+
+ <wsdl:operation name="dnsDefaultInstallCustom">
+ <wsdl:input message="wsdlns:dnsDefaultInstallCustomRequest"/>
+ <wsdl:output message="wsdlns:dnsDefaultInstallCustomResponse"/>
+ <wsdl:fault name="failure" message="wsdlns:FailureMsg" />
+ </wsdl:operation>
+
+ <wsdl:operation name="telephonyFaxHistory">
+ <wsdl:input message="wsdlns:telephonyFaxHistoryRequest"/>
+ <wsdl:output message="wsdlns:telephonyFaxHistoryResponse"/>
+ <wsdl:fault name="failure" message="wsdlns:FailureMsg" />
+ </wsdl:operation>
+
+ <wsdl:operation name="multiFtpChangePassword">
+ <wsdl:input message="wsdlns:multiFtpChangePasswordRequest"/>
+ <wsdl:output message="wsdlns:multiFtpChangePasswordResponse"/>
+ <wsdl:fault name="failure" message="wsdlns:FailureMsg" />
+ </wsdl:operation>
+
+ <wsdl:operation name="telephonyFreefaxToVoicefax">
+ <wsdl:input message="wsdlns:telephonyFreefaxToVoicefaxRequest"/>
+ <wsdl:output message="wsdlns:telephonyFreefaxToVoicefaxResponse"/>
+ <wsdl:fault name="failure" message="wsdlns:FailureMsg" />
+ </wsdl:operation>
+
+ <wsdl:operation name="sqlpriveMysqlUserList">
+ <wsdl:input message="wsdlns:sqlpriveMysqlUserListRequest"/>
+ <wsdl:output message="wsdlns:sqlpriveMysqlUserListResponse"/>
+ <wsdl:fault name="failure" message="wsdlns:FailureMsg" />
+ </wsdl:operation>
+
+ <wsdl:operation name="telephonyFaxSend">
+ <wsdl:input message="wsdlns:telephonyFaxSendRequest"/>
+ <wsdl:output message="wsdlns:telephonyFaxSendResponse"/>
+ <wsdl:fault name="failure" message="wsdlns:FailureMsg" />
+ </wsdl:operation>
+
+ <wsdl:operation name="domainUnlock">
+ <wsdl:input message="wsdlns:domainUnlockRequest"/>
+ <wsdl:output message="wsdlns:domainUnlockResponse"/>
+ <wsdl:fault name="failure" message="wsdlns:FailureMsg" />
+ </wsdl:operation>
+
+ <wsdl:operation name="telephonyRestrictionList">
+ <wsdl:input message="wsdlns:telephonyRestrictionListRequest"/>
+ <wsdl:output message="wsdlns:telephonyRestrictionListResponse"/>
+ <wsdl:fault name="failure" message="wsdlns:FailureMsg" />
+ </wsdl:operation>
+
+ <wsdl:operation name="domainWhoisObfuscatorSetAll">
+ <wsdl:input message="wsdlns:domainWhoisObfuscatorSetAllRequest"/>
+ <wsdl:output message="wsdlns:domainWhoisObfuscatorSetAllResponse"/>
+ <wsdl:fault name="failure" message="wsdlns:FailureMsg" />
+ </wsdl:operation>
+
+ <wsdl:operation name="popDetachMasterNic">
+ <wsdl:input message="wsdlns:popDetachMasterNicRequest"/>
+ <wsdl:output message="wsdlns:popDetachMasterNicResponse"/>
+ <wsdl:fault name="failure" message="wsdlns:FailureMsg" />
+ </wsdl:operation>
+
+ <wsdl:operation name="telephonyBillList">
+ <wsdl:input message="wsdlns:telephonyBillListRequest"/>
+ <wsdl:output message="wsdlns:telephonyBillListResponse"/>
+ <wsdl:fault name="failure" message="wsdlns:FailureMsg" />
+ </wsdl:operation>
+
+ <wsdl:operation name="telephonyNumberCustomList">
+ <wsdl:input message="wsdlns:telephonyNumberCustomListRequest"/>
+ <wsdl:output message="wsdlns:telephonyNumberCustomListResponse"/>
+ <wsdl:fault name="failure" message="wsdlns:FailureMsg" />
+ </wsdl:operation>
+
+ <wsdl:operation name="dedicatedMonitoringNotificationCreate">
+ <wsdl:input message="wsdlns:dedicatedMonitoringNotificationCreateRequest"/>
+ <wsdl:output message="wsdlns:dedicatedMonitoringNotificationCreateResponse"/>
+ <wsdl:fault name="failure" message="wsdlns:FailureMsg" />
+ </wsdl:operation>
+
+ <wsdl:operation name="telephonyPlugAndPhoneSkinModify">
+ <wsdl:input message="wsdlns:telephonyPlugAndPhoneSkinModifyRequest"/>
+ <wsdl:output message="wsdlns:telephonyPlugAndPhoneSkinModifyResponse"/>
+ <wsdl:fault name="failure" message="wsdlns:FailureMsg" />
+ </wsdl:operation>
+
+ <wsdl:operation name="domainList">
+ <wsdl:input message="wsdlns:domainListRequest"/>
+ <wsdl:output message="wsdlns:domainListResponse"/>
+ <wsdl:fault name="failure" message="wsdlns:FailureMsg" />
+ </wsdl:operation>
+
+ <wsdl:operation name="telephonyFaxOptionsModify">
+ <wsdl:input message="wsdlns:telephonyFaxOptionsModifyRequest"/>
+ <wsdl:output message="wsdlns:telephonyFaxOptionsModifyResponse"/>
+ <wsdl:fault name="failure" message="wsdlns:FailureMsg" />
+ </wsdl:operation>
+
+ <wsdl:operation name="telephonyBillingAccountSummary">
+ <wsdl:input message="wsdlns:telephonyBillingAccountSummaryRequest"/>
+ <wsdl:output message="wsdlns:telephonyBillingAccountSummaryResponse"/>
+ <wsdl:fault name="failure" message="wsdlns:FailureMsg" />
+ </wsdl:operation>
+
+ <wsdl:operation name="overquotaInfo">
+ <wsdl:input message="wsdlns:overquotaInfoRequest"/>
+ <wsdl:output message="wsdlns:overquotaInfoResponse"/>
+ <wsdl:fault name="failure" message="wsdlns:FailureMsg" />
+ </wsdl:operation>
+
+ <wsdl:operation name="telephonyConferenceSetAnnounceFile">
+ <wsdl:input message="wsdlns:telephonyConferenceSetAnnounceFileRequest"/>
+ <wsdl:output message="wsdlns:telephonyConferenceSetAnnounceFileResponse"/>
+ <wsdl:fault name="failure" message="wsdlns:FailureMsg" />
+ </wsdl:operation>
+
+ <wsdl:operation name="automatedMailGetErrors">
+ <wsdl:input message="wsdlns:automatedMailGetErrorsRequest"/>
+ <wsdl:output message="wsdlns:automatedMailGetErrorsResponse"/>
+ <wsdl:fault name="failure" message="wsdlns:FailureMsg" />
+ </wsdl:operation>
+
+ <wsdl:operation name="telephonyPhonebookOnSmsAdd">
+ <wsdl:input message="wsdlns:telephonyPhonebookOnSmsAddRequest"/>
+ <wsdl:output message="wsdlns:telephonyPhonebookOnSmsAddResponse"/>
+ <wsdl:fault name="failure" message="wsdlns:FailureMsg" />
+ </wsdl:operation>
+
+ <wsdl:operation name="telephonyClick2CallUserDel">
+ <wsdl:input message="wsdlns:telephonyClick2CallUserDelRequest"/>
+ <wsdl:output message="wsdlns:telephonyClick2CallUserDelResponse"/>
+ <wsdl:fault name="failure" message="wsdlns:FailureMsg" />
+ </wsdl:operation>
+
+ <wsdl:operation name="emailGetCapabilities">
+ <wsdl:input message="wsdlns:emailGetCapabilitiesRequest"/>
+ <wsdl:output message="wsdlns:emailGetCapabilitiesResponse"/>
+ <wsdl:fault name="failure" message="wsdlns:FailureMsg" />
+ </wsdl:operation>
+
+ <wsdl:operation name="telephonySmsAccountList">
+ <wsdl:input message="wsdlns:telephonySmsAccountListRequest"/>
+ <wsdl:output message="wsdlns:telephonySmsAccountListResponse"/>
+ <wsdl:fault name="failure" message="wsdlns:FailureMsg" />
+ </wsdl:operation>
+
+ <wsdl:operation name="telephonyBillingAccountConsumptionCSVByMail">
+ <wsdl:input message="wsdlns:telephonyBillingAccountConsumptionCSVByMailRequest"/>
+ <wsdl:output message="wsdlns:telephonyBillingAccountConsumptionCSVByMailResponse"/>
+ <wsdl:fault name="failure" message="wsdlns:FailureMsg" />
+ </wsdl:operation>
+
+ <wsdl:operation name="telephonyFMHuntingModificationVoicemail">
+ <wsdl:input message="wsdlns:telephonyFMHuntingModificationVoicemailRequest"/>
+ <wsdl:output message="wsdlns:telephonyFMHuntingModificationVoicemailResponse"/>
+ <wsdl:fault name="failure" message="wsdlns:FailureMsg" />
+ </wsdl:operation>
+
+ <wsdl:operation name="dedicatedBackupList">
+ <wsdl:input message="wsdlns:dedicatedBackupListRequest"/>
+ <wsdl:output message="wsdlns:dedicatedBackupListResponse"/>
+ <wsdl:fault name="failure" message="wsdlns:FailureMsg" />
+ </wsdl:operation>
+
+ <wsdl:operation name="telephonyOrdersFollowingUp">
+ <wsdl:input message="wsdlns:telephonyOrdersFollowingUpRequest"/>
+ <wsdl:output message="wsdlns:telephonyOrdersFollowingUpResponse"/>
+ <wsdl:fault name="failure" message="wsdlns:FailureMsg" />
+ </wsdl:operation>
+
+ <wsdl:operation name="telephonyPhonebookOnGroupContactAdd">
+ <wsdl:input message="wsdlns:telephonyPhonebookOnGroupContactAddRequest"/>
+ <wsdl:output message="wsdlns:telephonyPhonebookOnGroupContactAddResponse"/>
+ <wsdl:fault name="failure" message="wsdlns:FailureMsg" />
+ </wsdl:operation>
+
+ <wsdl:operation name="ortDomainDel">
+ <wsdl:input message="wsdlns:ortDomainDelRequest"/>
+ <wsdl:output message="wsdlns:ortDomainDelResponse"/>
+ <wsdl:fault name="failure" message="wsdlns:FailureMsg" />
+ </wsdl:operation>
+
+ <wsdl:operation name="mailingListModeratorList">
+ <wsdl:input message="wsdlns:mailingListModeratorListRequest"/>
+ <wsdl:output message="wsdlns:mailingListModeratorListResponse"/>
+ <wsdl:fault name="failure" message="wsdlns:FailureMsg" />
+ </wsdl:operation>
+
+ <wsdl:operation name="telephonyBillDetailsCSV">
+ <wsdl:input message="wsdlns:telephonyBillDetailsCSVRequest"/>
+ <wsdl:output message="wsdlns:telephonyBillDetailsCSVResponse"/>
+ <wsdl:fault name="failure" message="wsdlns:FailureMsg" />
+ </wsdl:operation>
+
+ <wsdl:operation name="popList">
+ <wsdl:input message="wsdlns:popListRequest"/>
+ <wsdl:output message="wsdlns:popListResponse"/>
+ <wsdl:fault name="failure" message="wsdlns:FailureMsg" />
+ </wsdl:operation>
+
+ <wsdl:operation name="sqlpriveMysqlRamUsed">
+ <wsdl:input message="wsdlns:sqlpriveMysqlRamUsedRequest"/>
+ <wsdl:output message="wsdlns:sqlpriveMysqlRamUsedResponse"/>
+ <wsdl:fault name="failure" message="wsdlns:FailureMsg" />
+ </wsdl:operation>
+
+ <wsdl:operation name="telephonySmsCreditLeft">
+ <wsdl:input message="wsdlns:telephonySmsCreditLeftRequest"/>
+ <wsdl:output message="wsdlns:telephonySmsCreditLeftResponse"/>
+ <wsdl:fault name="failure" message="wsdlns:FailureMsg" />
+ </wsdl:operation>
+
+ <wsdl:operation name="prepaidDomainCreate">
+ <wsdl:input message="wsdlns:prepaidDomainCreateRequest"/>
+ <wsdl:output message="wsdlns:prepaidDomainCreateResponse"/>
+ <wsdl:fault name="failure" message="wsdlns:FailureMsg" />
+ </wsdl:operation>
+
+ <wsdl:operation name="telephonyDirectoryPJCode">
+ <wsdl:input message="wsdlns:telephonyDirectoryPJCodeRequest"/>
+ <wsdl:output message="wsdlns:telephonyDirectoryPJCodeResponse"/>
+ <wsdl:fault name="failure" message="wsdlns:FailureMsg" />
+ </wsdl:operation>
+
+ <wsdl:operation name="telephonyListSummationCallsFromBillingAccount">
+ <wsdl:input message="wsdlns:telephonyListSummationCallsFromBillingAccountRequest"/>
+ <wsdl:output message="wsdlns:telephonyListSummationCallsFromBillingAccountResponse"/>
+ <wsdl:fault name="failure" message="wsdlns:FailureMsg" />
+ </wsdl:operation>
+
+ <wsdl:operation name="rpsMigrationGetProgressStatus">
+ <wsdl:input message="wsdlns:rpsMigrationGetProgressStatusRequest"/>
+ <wsdl:output message="wsdlns:rpsMigrationGetProgressStatusResponse"/>
+ <wsdl:fault name="failure" message="wsdlns:FailureMsg" />
+ </wsdl:operation>
+
+ <wsdl:operation name="telephonyBillingAccountDescriptionModify">
+ <wsdl:input message="wsdlns:telephonyBillingAccountDescriptionModifyRequest"/>
+ <wsdl:output message="wsdlns:telephonyBillingAccountDescriptionModifyResponse"/>
+ <wsdl:fault name="failure" message="wsdlns:FailureMsg" />
+ </wsdl:operation>
+
+ <wsdl:operation name="dedicatedNetbootGetAll">
+ <wsdl:input message="wsdlns:dedicatedNetbootGetAllRequest"/>
+ <wsdl:output message="wsdlns:dedicatedNetbootGetAllResponse"/>
+ <wsdl:fault name="failure" message="wsdlns:FailureMsg" />
+ </wsdl:operation>
+
+ <wsdl:operation name="emailDomainListByMasterNic">
+ <wsdl:input message="wsdlns:emailDomainListByMasterNicRequest"/>
+ <wsdl:output message="wsdlns:emailDomainListByMasterNicResponse"/>
+ <wsdl:fault name="failure" message="wsdlns:FailureMsg" />
+ </wsdl:operation>
+
+ <wsdl:operation name="telephonyAbbreviatedNumberDel">
+ <wsdl:input message="wsdlns:telephonyAbbreviatedNumberDelRequest"/>
+ <wsdl:output message="wsdlns:telephonyAbbreviatedNumberDelResponse"/>
+ <wsdl:fault name="failure" message="wsdlns:FailureMsg" />
+ </wsdl:operation>
+
+ <wsdl:operation name="resellerDomainTransferIT">
+ <wsdl:input message="wsdlns:resellerDomainTransferITRequest"/>
+ <wsdl:output message="wsdlns:resellerDomainTransferITResponse"/>
+ <wsdl:fault name="failure" message="wsdlns:FailureMsg" />
+ </wsdl:operation>
+
+ <wsdl:operation name="dedicatedVirtualMacIpAvailableGetList">
+ <wsdl:input message="wsdlns:dedicatedVirtualMacIpAvailableGetListRequest"/>
+ <wsdl:output message="wsdlns:dedicatedVirtualMacIpAvailableGetListResponse"/>
+ <wsdl:fault name="failure" message="wsdlns:FailureMsg" />
+ </wsdl:operation>
+
+ <wsdl:operation name="telephonyFaxOptionsList">
+ <wsdl:input message="wsdlns:telephonyFaxOptionsListRequest"/>
+ <wsdl:output message="wsdlns:telephonyFaxOptionsListResponse"/>
+ <wsdl:fault name="failure" message="wsdlns:FailureMsg" />
+ </wsdl:operation>
+
+ <wsdl:operation name="ticketListIncidents">
+ <wsdl:input message="wsdlns:ticketListIncidentsRequest"/>
+ <wsdl:output message="wsdlns:ticketListIncidentsResponse"/>
+ <wsdl:fault name="failure" message="wsdlns:FailureMsg" />
+ </wsdl:operation>
+
+ <wsdl:operation name="infrastructureReverseModify">
+ <wsdl:input message="wsdlns:infrastructureReverseModifyRequest"/>
+ <wsdl:output message="wsdlns:infrastructureReverseModifyResponse"/>
+ <wsdl:fault name="failure" message="wsdlns:FailureMsg" />
+ </wsdl:operation>
+
+ <wsdl:operation name="dedicatedMonitoringSMSCreate">
+ <wsdl:input message="wsdlns:dedicatedMonitoringSMSCreateRequest"/>
+ <wsdl:output message="wsdlns:dedicatedMonitoringSMSCreateResponse"/>
+ <wsdl:fault name="failure" message="wsdlns:FailureMsg" />
+ </wsdl:operation>
+
+ <wsdl:operation name="telephonyTrunkExternalDisplayedNumberAdd">
+ <wsdl:input message="wsdlns:telephonyTrunkExternalDisplayedNumberAddRequest"/>
+ <wsdl:output message="wsdlns:telephonyTrunkExternalDisplayedNumberAddResponse"/>
+ <wsdl:fault name="failure" message="wsdlns:FailureMsg" />
+ </wsdl:operation>
+
+ <wsdl:operation name="dedicatedRipeQuery">
+ <wsdl:input message="wsdlns:dedicatedRipeQueryRequest"/>
+ <wsdl:output message="wsdlns:dedicatedRipeQueryResponse"/>
+ <wsdl:fault name="failure" message="wsdlns:FailureMsg" />
+ </wsdl:operation>
+
+ <wsdl:operation name="responderEmailList">
+ <wsdl:input message="wsdlns:responderEmailListRequest"/>
+ <wsdl:output message="wsdlns:responderEmailListResponse"/>
+ <wsdl:fault name="failure" message="wsdlns:FailureMsg" />
+ </wsdl:operation>
+
+ <wsdl:operation name="telephonyBillingAccountSet">
+ <wsdl:input message="wsdlns:telephonyBillingAccountSetRequest"/>
+ <wsdl:output message="wsdlns:telephonyBillingAccountSetResponse"/>
+ <wsdl:fault name="failure" message="wsdlns:FailureMsg" />
+ </wsdl:operation>
+
+ <wsdl:operation name="telephonyDepositMovementModify">
+ <wsdl:input message="wsdlns:telephonyDepositMovementModifyRequest"/>
+ <wsdl:output message="wsdlns:telephonyDepositMovementModifyResponse"/>
+ <wsdl:fault name="failure" message="wsdlns:FailureMsg" />
+ </wsdl:operation>
+
+ <wsdl:operation name="telephonyClick2CallDo">
+ <wsdl:input message="wsdlns:telephonyClick2CallDoRequest"/>
+ <wsdl:output message="wsdlns:telephonyClick2CallDoResponse"/>
+ <wsdl:fault name="failure" message="wsdlns:FailureMsg" />
+ </wsdl:operation>
+
+ <wsdl:operation name="telephonySpecialNumberOrder">
+ <wsdl:input message="wsdlns:telephonySpecialNumberOrderRequest"/>
+ <wsdl:output message="wsdlns:telephonySpecialNumberOrderResponse"/>
+ <wsdl:fault name="failure" message="wsdlns:FailureMsg" />
+ </wsdl:operation>
+
+ <wsdl:operation name="telephonyVoicemailOptionsModify">
+ <wsdl:input message="wsdlns:telephonyVoicemailOptionsModifyRequest"/>
+ <wsdl:output message="wsdlns:telephonyVoicemailOptionsModifyResponse"/>
+ <wsdl:fault name="failure" message="wsdlns:FailureMsg" />
+ </wsdl:operation>
+
+ <wsdl:operation name="telephonyLineSwitchOldOffer">
+ <wsdl:input message="wsdlns:telephonyLineSwitchOldOfferRequest"/>
+ <wsdl:output message="wsdlns:telephonyLineSwitchOldOfferResponse"/>
+ <wsdl:fault name="failure" message="wsdlns:FailureMsg" />
+ </wsdl:operation>
+
+ <wsdl:operation name="zoneEntryAddCustom">
+ <wsdl:input message="wsdlns:zoneEntryAddCustomRequest"/>
+ <wsdl:output message="wsdlns:zoneEntryAddCustomResponse"/>
+ <wsdl:fault name="failure" message="wsdlns:FailureMsg" />
+ </wsdl:operation>
+
+ <wsdl:operation name="domainWhoisObfuscatorInfo">
+ <wsdl:input message="wsdlns:domainWhoisObfuscatorInfoRequest"/>
+ <wsdl:output message="wsdlns:domainWhoisObfuscatorInfoResponse"/>
+ <wsdl:fault name="failure" message="wsdlns:FailureMsg" />
+ </wsdl:operation>
+
+ <wsdl:operation name="telephonyPhonebookOnGroupContactDel">
+ <wsdl:input message="wsdlns:telephonyPhonebookOnGroupContactDelRequest"/>
+ <wsdl:output message="wsdlns:telephonyPhonebookOnGroupContactDelResponse"/>
+ <wsdl:fault name="failure" message="wsdlns:FailureMsg" />
+ </wsdl:operation>
+
+ <wsdl:operation name="ticketReopen">
+ <wsdl:input message="wsdlns:ticketReopenRequest"/>
+ <wsdl:output message="wsdlns:ticketReopenResponse"/>
+ <wsdl:fault name="failure" message="wsdlns:FailureMsg" />
+ </wsdl:operation>
+
+ <wsdl:operation name="telephonySpareAdd">
+ <wsdl:input message="wsdlns:telephonySpareAddRequest"/>
+ <wsdl:output message="wsdlns:telephonySpareAddResponse"/>
+ <wsdl:fault name="failure" message="wsdlns:FailureMsg" />
+ </wsdl:operation>
+
+ <wsdl:operation name="telephonySmsAddCsvAttachment">
+ <wsdl:input message="wsdlns:telephonySmsAddCsvAttachmentRequest"/>
+ <wsdl:output message="wsdlns:telephonySmsAddCsvAttachmentResponse"/>
+ <wsdl:fault name="failure" message="wsdlns:FailureMsg" />
+ </wsdl:operation>
+
+ <wsdl:operation name="dedicatedBackupFtpPassword">
+ <wsdl:input message="wsdlns:dedicatedBackupFtpPasswordRequest"/>
+ <wsdl:output message="wsdlns:dedicatedBackupFtpPasswordResponse"/>
+ <wsdl:fault name="failure" message="wsdlns:FailureMsg" />
+ </wsdl:operation>
+
+ <wsdl:operation name="telephonyDefaultPrivateHolidaysEvents">
+ <wsdl:input message="wsdlns:telephonyDefaultPrivateHolidaysEventsRequest"/>
+ <wsdl:output message="wsdlns:telephonyDefaultPrivateHolidaysEventsResponse"/>
+ <wsdl:fault name="failure" message="wsdlns:FailureMsg" />
+ </wsdl:operation>
+
+ <wsdl:operation name="hostingAccessByNic">
+ <wsdl:input message="wsdlns:hostingAccessByNicRequest"/>
+ <wsdl:output message="wsdlns:hostingAccessByNicResponse"/>
+ <wsdl:fault name="failure" message="wsdlns:FailureMsg" />
+ </wsdl:operation>
+
+ <wsdl:operation name="sqlpriveAlertInfo">
+ <wsdl:input message="wsdlns:sqlpriveAlertInfoRequest"/>
+ <wsdl:output message="wsdlns:sqlpriveAlertInfoResponse"/>
+ <wsdl:fault name="failure" message="wsdlns:FailureMsg" />
+ </wsdl:operation>
+
+ <wsdl:operation name="mailingListFullInfo">
+ <wsdl:input message="wsdlns:mailingListFullInfoRequest"/>
+ <wsdl:output message="wsdlns:mailingListFullInfoResponse"/>
+ <wsdl:fault name="failure" message="wsdlns:FailureMsg" />
+ </wsdl:operation>
+
+ <wsdl:operation name="dedicatedRtmBackdoorUpdateAlert">
+ <wsdl:input message="wsdlns:dedicatedRtmBackdoorUpdateAlertRequest"/>
+ <wsdl:output message="wsdlns:dedicatedRtmBackdoorUpdateAlertResponse"/>
+ <wsdl:fault name="failure" message="wsdlns:FailureMsg" />
+ </wsdl:operation>
+
+ <wsdl:operation name="responderEmailInfo">
+ <wsdl:input message="wsdlns:responderEmailInfoRequest"/>
+ <wsdl:output message="wsdlns:responderEmailInfoResponse"/>
+ <wsdl:fault name="failure" message="wsdlns:FailureMsg" />
+ </wsdl:operation>
+
+ <wsdl:operation name="telephonyToneRemoteUpload">
+ <wsdl:input message="wsdlns:telephonyToneRemoteUploadRequest"/>
+ <wsdl:output message="wsdlns:telephonyToneRemoteUploadResponse"/>
+ <wsdl:fault name="failure" message="wsdlns:FailureMsg" />
+ </wsdl:operation>
+
+ <wsdl:operation name="telephonyNumberGetFrWayNamesFromInsee">
+ <wsdl:input message="wsdlns:telephonyNumberGetFrWayNamesFromInseeRequest"/>
+ <wsdl:output message="wsdlns:telephonyNumberGetFrWayNamesFromInseeResponse"/>
+ <wsdl:fault name="failure" message="wsdlns:FailureMsg" />
+ </wsdl:operation>
+
+ <wsdl:operation name="dedicatedSecondaryDNSAdd">
+ <wsdl:input message="wsdlns:dedicatedSecondaryDNSAddRequest"/>
+ <wsdl:output message="wsdlns:dedicatedSecondaryDNSAddResponse"/>
+ <wsdl:fault name="failure" message="wsdlns:FailureMsg" />
+ </wsdl:operation>
+
+ <wsdl:operation name="popUpgradeQuota">
+ <wsdl:input message="wsdlns:popUpgradeQuotaRequest"/>
+ <wsdl:output message="wsdlns:popUpgradeQuotaResponse"/>
+ <wsdl:fault name="failure" message="wsdlns:FailureMsg" />
+ </wsdl:operation>
+
+ <wsdl:operation name="telephonyFMHuntingModificationMode">
+ <wsdl:input message="wsdlns:telephonyFMHuntingModificationModeRequest"/>
+ <wsdl:output message="wsdlns:telephonyFMHuntingModificationModeResponse"/>
+ <wsdl:fault name="failure" message="wsdlns:FailureMsg" />
+ </wsdl:operation>
+
+ <wsdl:operation name="sqlpriveList">
+ <wsdl:input message="wsdlns:sqlpriveListRequest"/>
+ <wsdl:output message="wsdlns:sqlpriveListResponse"/>
+ <wsdl:fault name="failure" message="wsdlns:FailureMsg" />
+ </wsdl:operation>
+
+ <wsdl:operation name="dnsInstall">
+ <wsdl:input message="wsdlns:dnsInstallRequest"/>
+ <wsdl:output message="wsdlns:dnsInstallResponse"/>
+ <wsdl:fault name="failure" message="wsdlns:FailureMsg" />
+ </wsdl:operation>
+
+ <wsdl:operation name="telephonyAliasToSipOffer">
+ <wsdl:input message="wsdlns:telephonyAliasToSipOfferRequest"/>
+ <wsdl:output message="wsdlns:telephonyAliasToSipOfferResponse"/>
+ <wsdl:fault name="failure" message="wsdlns:FailureMsg" />
+ </wsdl:operation>
+
+ <wsdl:operation name="hostingSummary">
+ <wsdl:input message="wsdlns:hostingSummaryRequest"/>
+ <wsdl:output message="wsdlns:hostingSummaryResponse"/>
+ <wsdl:fault name="failure" message="wsdlns:FailureMsg" />
+ </wsdl:operation>
+
+ <wsdl:operation name="emailDomainSummary">
+ <wsdl:input message="wsdlns:emailDomainSummaryRequest"/>
+ <wsdl:output message="wsdlns:emailDomainSummaryResponse"/>
+ <wsdl:fault name="failure" message="wsdlns:FailureMsg" />
+ </wsdl:operation>
+
+ <wsdl:operation name="dedicatedRtmGetStatus">
+ <wsdl:input message="wsdlns:dedicatedRtmGetStatusRequest"/>
+ <wsdl:output message="wsdlns:dedicatedRtmGetStatusResponse"/>
+ <wsdl:fault name="failure" message="wsdlns:FailureMsg" />
+ </wsdl:operation>
+
+ <wsdl:operation name="managedServicesPartitionQuotaUsed">
+ <wsdl:input message="wsdlns:managedServicesPartitionQuotaUsedRequest"/>
+ <wsdl:output message="wsdlns:managedServicesPartitionQuotaUsedResponse"/>
+ <wsdl:fault name="failure" message="wsdlns:FailureMsg" />
+ </wsdl:operation>
+
+ <wsdl:operation name="dedicatedNetbootGetAvailable">
+ <wsdl:input message="wsdlns:dedicatedNetbootGetAvailableRequest"/>
+ <wsdl:output message="wsdlns:dedicatedNetbootGetAvailableResponse"/>
+ <wsdl:fault name="failure" message="wsdlns:FailureMsg" />
+ </wsdl:operation>
+
+ <wsdl:operation name="telephonySmsUserMultiSend">
+ <wsdl:input message="wsdlns:telephonySmsUserMultiSendRequest"/>
+ <wsdl:output message="wsdlns:telephonySmsUserMultiSendResponse"/>
+ <wsdl:fault name="failure" message="wsdlns:FailureMsg" />
+ </wsdl:operation>
+
+ <wsdl:operation name="telephonySmsGetCsvAttachment">
+ <wsdl:input message="wsdlns:telephonySmsGetCsvAttachmentRequest"/>
+ <wsdl:output message="wsdlns:telephonySmsGetCsvAttachmentResponse"/>
+ <wsdl:fault name="failure" message="wsdlns:FailureMsg" />
+ </wsdl:operation>
+
+ <wsdl:operation name="telephonySmsHistory">
+ <wsdl:input message="wsdlns:telephonySmsHistoryRequest"/>
+ <wsdl:output message="wsdlns:telephonySmsHistoryResponse"/>
+ <wsdl:fault name="failure" message="wsdlns:FailureMsg" />
+ </wsdl:operation>
+
+ <wsdl:operation name="zoneEntryModify">
+ <wsdl:input message="wsdlns:zoneEntryModifyRequest"/>
+ <wsdl:output message="wsdlns:zoneEntryModifyResponse"/>
+ <wsdl:fault name="failure" message="wsdlns:FailureMsg" />
+ </wsdl:operation>
+
+ <wsdl:operation name="ticketListContact">
+ <wsdl:input message="wsdlns:ticketListContactRequest"/>
+ <wsdl:output message="wsdlns:ticketListContactResponse"/>
+ <wsdl:fault name="failure" message="wsdlns:FailureMsg" />
+ </wsdl:operation>
+
+ <wsdl:operation name="dedicatedMailinglistGetAllowed">
+ <wsdl:input message="wsdlns:dedicatedMailinglistGetAllowedRequest"/>
+ <wsdl:output message="wsdlns:dedicatedMailinglistGetAllowedResponse"/>
+ <wsdl:fault name="failure" message="wsdlns:FailureMsg" />
+ </wsdl:operation>
+
+ <wsdl:operation name="dedicatedBackupInfo">
+ <wsdl:input message="wsdlns:dedicatedBackupInfoRequest"/>
+ <wsdl:output message="wsdlns:dedicatedBackupInfoResponse"/>
+ <wsdl:fault name="failure" message="wsdlns:FailureMsg" />
+ </wsdl:operation>
+
+ <wsdl:operation name="telephonyAbbreviatedNumberOnGroupModify">
+ <wsdl:input message="wsdlns:telephonyAbbreviatedNumberOnGroupModifyRequest"/>
+ <wsdl:output message="wsdlns:telephonyAbbreviatedNumberOnGroupModifyResponse"/>
+ <wsdl:fault name="failure" message="wsdlns:FailureMsg" />
+ </wsdl:operation>
+
+ <wsdl:operation name="accountSummary">
+ <wsdl:input message="wsdlns:accountSummaryRequest"/>
+ <wsdl:output message="wsdlns:accountSummaryResponse"/>
+ <wsdl:fault name="failure" message="wsdlns:FailureMsg" />
+ </wsdl:operation>
+
+ <wsdl:operation name="subDomainDel">
+ <wsdl:input message="wsdlns:subDomainDelRequest"/>
+ <wsdl:output message="wsdlns:subDomainDelResponse"/>
+ <wsdl:fault name="failure" message="wsdlns:FailureMsg" />
+ </wsdl:operation>
+
+ <wsdl:operation name="telephonyHuntingGenericScreenList">
+ <wsdl:input message="wsdlns:telephonyHuntingGenericScreenListRequest"/>
+ <wsdl:output message="wsdlns:telephonyHuntingGenericScreenListResponse"/>
+ <wsdl:fault name="failure" message="wsdlns:FailureMsg" />
+ </wsdl:operation>
+
+ <wsdl:operation name="emailFilterAdd">
+ <wsdl:input message="wsdlns:emailFilterAddRequest"/>
+ <wsdl:output message="wsdlns:emailFilterAddResponse"/>
+ <wsdl:fault name="failure" message="wsdlns:FailureMsg" />
+ </wsdl:operation>
+
+ <wsdl:operation name="telephonyHuntingGenericScreenStatus">
+ <wsdl:input message="wsdlns:telephonyHuntingGenericScreenStatusRequest"/>
+ <wsdl:output message="wsdlns:telephonyHuntingGenericScreenStatusResponse"/>
+ <wsdl:fault name="failure" message="wsdlns:FailureMsg" />
+ </wsdl:operation>
+
+ <wsdl:operation name="telephonyHuntingModificationMembers">
+ <wsdl:input message="wsdlns:telephonyHuntingModificationMembersRequest"/>
+ <wsdl:output message="wsdlns:telephonyHuntingModificationMembersResponse"/>
+ <wsdl:fault name="failure" message="wsdlns:FailureMsg" />
+ </wsdl:operation>
+
+ <wsdl:operation name="rpsMigrationStatus">
+ <wsdl:input message="wsdlns:rpsMigrationStatusRequest"/>
+ <wsdl:output message="wsdlns:rpsMigrationStatusResponse"/>
+ <wsdl:fault name="failure" message="wsdlns:FailureMsg" />
+ </wsdl:operation>
+
+ <wsdl:operation name="dnsReset">
+ <wsdl:input message="wsdlns:dnsResetRequest"/>
+ <wsdl:output message="wsdlns:dnsResetResponse"/>
+ <wsdl:fault name="failure" message="wsdlns:FailureMsg" />
+ </wsdl:operation>
+
+ <wsdl:operation name="telephonyVoicemailMessagesDownload">
+ <wsdl:input message="wsdlns:telephonyVoicemailMessagesDownloadRequest"/>
+ <wsdl:output message="wsdlns:telephonyVoicemailMessagesDownloadResponse"/>
+ <wsdl:fault name="failure" message="wsdlns:FailureMsg" />
+ </wsdl:operation>
+
+ <wsdl:operation name="supportGetNicDomains">
+ <wsdl:input message="wsdlns:supportGetNicDomainsRequest"/>
+ <wsdl:output message="wsdlns:supportGetNicDomainsResponse"/>
+ <wsdl:fault name="failure" message="wsdlns:FailureMsg" />
+ </wsdl:operation>
+
+ <wsdl:operation name="telephonyFaxCampaignCreation">
+ <wsdl:input message="wsdlns:telephonyFaxCampaignCreationRequest"/>
+ <wsdl:output message="wsdlns:telephonyFaxCampaignCreationResponse"/>
+ <wsdl:fault name="failure" message="wsdlns:FailureMsg" />
+ </wsdl:operation>
+
+ <wsdl:operation name="supportGetThreads">
+ <wsdl:input message="wsdlns:supportGetThreadsRequest"/>
+ <wsdl:output message="wsdlns:supportGetThreadsResponse"/>
+ <wsdl:fault name="failure" message="wsdlns:FailureMsg" />
+ </wsdl:operation>
+
+ <wsdl:operation name="mailingListDel">
+ <wsdl:input message="wsdlns:mailingListDelRequest"/>
+ <wsdl:output message="wsdlns:mailingListDelResponse"/>
+ <wsdl:fault name="failure" message="wsdlns:FailureMsg" />
+ </wsdl:operation>
+
+ <wsdl:operation name="dedicatedFailoverRipeAdd">
+ <wsdl:input message="wsdlns:dedicatedFailoverRipeAddRequest"/>
+ <wsdl:output message="wsdlns:dedicatedFailoverRipeAddResponse"/>
+ <wsdl:fault name="failure" message="wsdlns:FailureMsg" />
+ </wsdl:operation>
+
+ <wsdl:operation name="mailingListSubscriberAdd">
+ <wsdl:input message="wsdlns:mailingListSubscriberAddRequest"/>
+ <wsdl:output message="wsdlns:mailingListSubscriberAddResponse"/>
+ <wsdl:fault name="failure" message="wsdlns:FailureMsg" />
+ </wsdl:operation>
+
+ <wsdl:operation name="dedicatedFilterIrcClientRuleAdd">
+ <wsdl:input message="wsdlns:dedicatedFilterIrcClientRuleAddRequest"/>
+ <wsdl:output message="wsdlns:dedicatedFilterIrcClientRuleAddResponse"/>
+ <wsdl:fault name="failure" message="wsdlns:FailureMsg" />
+ </wsdl:operation>
+
+ <wsdl:operation name="telephonyLineLogsNotificationOptions">
+ <wsdl:input message="wsdlns:telephonyLineLogsNotificationOptionsRequest"/>
+ <wsdl:output message="wsdlns:telephonyLineLogsNotificationOptionsResponse"/>
+ <wsdl:fault name="failure" message="wsdlns:FailureMsg" />
+ </wsdl:operation>
+
+ <wsdl:operation name="telephonyLineGetIpRestriction">
+ <wsdl:input message="wsdlns:telephonyLineGetIpRestrictionRequest"/>
+ <wsdl:output message="wsdlns:telephonyLineGetIpRestrictionResponse"/>
+ <wsdl:fault name="failure" message="wsdlns:FailureMsg" />
+ </wsdl:operation>
+
+ <wsdl:operation name="dedicatedInstallationTemplateList">
+ <wsdl:input message="wsdlns:dedicatedInstallationTemplateListRequest"/>
+ <wsdl:output message="wsdlns:dedicatedInstallationTemplateListResponse"/>
+ <wsdl:fault name="failure" message="wsdlns:FailureMsg" />
+ </wsdl:operation>
+
+ <wsdl:operation name="telephonyGetTimeZoneNumber">
+ <wsdl:input message="wsdlns:telephonyGetTimeZoneNumberRequest"/>
+ <wsdl:output message="wsdlns:telephonyGetTimeZoneNumberResponse"/>
+ <wsdl:fault name="failure" message="wsdlns:FailureMsg" />
+ </wsdl:operation>
+
+ <wsdl:operation name="dedicatedBackupGetCalendar">
+ <wsdl:input message="wsdlns:dedicatedBackupGetCalendarRequest"/>
+ <wsdl:output message="wsdlns:dedicatedBackupGetCalendarResponse"/>
+ <wsdl:fault name="failure" message="wsdlns:FailureMsg" />
+ </wsdl:operation>
+
+ <wsdl:operation name="telephonyFMHuntingModificationMembers">
+ <wsdl:input message="wsdlns:telephonyFMHuntingModificationMembersRequest"/>
+ <wsdl:output message="wsdlns:telephonyFMHuntingModificationMembersResponse"/>
+ <wsdl:fault name="failure" message="wsdlns:FailureMsg" />
+ </wsdl:operation>
+
+ <wsdl:operation name="telephonyPhonebookAdd">
+ <wsdl:input message="wsdlns:telephonyPhonebookAddRequest"/>
+ <wsdl:output message="wsdlns:telephonyPhonebookAddResponse"/>
+ <wsdl:fault name="failure" message="wsdlns:FailureMsg" />
+ </wsdl:operation>
+
+ <wsdl:operation name="telephonyRestrictionModify">
+ <wsdl:input message="wsdlns:telephonyRestrictionModifyRequest"/>
+ <wsdl:output message="wsdlns:telephonyRestrictionModifyResponse"/>
+ <wsdl:fault name="failure" message="wsdlns:FailureMsg" />
+ </wsdl:operation>
+
+ <wsdl:operation name="telephonyRatesList">
+ <wsdl:input message="wsdlns:telephonyRatesListRequest"/>
+ <wsdl:output message="wsdlns:telephonyRatesListResponse"/>
+ <wsdl:fault name="failure" message="wsdlns:FailureMsg" />
+ </wsdl:operation>
+
+ <wsdl:operation name="crontabDel">
+ <wsdl:input message="wsdlns:crontabDelRequest"/>
+ <wsdl:output message="wsdlns:crontabDelResponse"/>
+ <wsdl:fault name="failure" message="wsdlns:FailureMsg" />
+ </wsdl:operation>
+
+ <wsdl:operation name="telephonyHuntingGenericScreenOptions">
+ <wsdl:input message="wsdlns:telephonyHuntingGenericScreenOptionsRequest"/>
+ <wsdl:output message="wsdlns:telephonyHuntingGenericScreenOptionsResponse"/>
+ <wsdl:fault name="failure" message="wsdlns:FailureMsg" />
+ </wsdl:operation>
+
+ <wsdl:operation name="telephonyBillingAccountAdd">
+ <wsdl:input message="wsdlns:telephonyBillingAccountAddRequest"/>
+ <wsdl:output message="wsdlns:telephonyBillingAccountAddResponse"/>
+ <wsdl:fault name="failure" message="wsdlns:FailureMsg" />
+ </wsdl:operation>
+
+ <wsdl:operation name="managedServicesIpAccessChange">
+ <wsdl:input message="wsdlns:managedServicesIpAccessChangeRequest"/>
+ <wsdl:output message="wsdlns:managedServicesIpAccessChangeResponse"/>
+ <wsdl:fault name="failure" message="wsdlns:FailureMsg" />
+ </wsdl:operation>
+
+ <wsdl:operation name="accountHistory">
+ <wsdl:input message="wsdlns:accountHistoryRequest"/>
+ <wsdl:output message="wsdlns:accountHistoryResponse"/>
+ <wsdl:fault name="failure" message="wsdlns:FailureMsg" />
+ </wsdl:operation>
+
+ <wsdl:operation name="dedicatedIpLoadBalancingServerDel">
+ <wsdl:input message="wsdlns:dedicatedIpLoadBalancingServerDelRequest"/>
+ <wsdl:output message="wsdlns:dedicatedIpLoadBalancingServerDelResponse"/>
+ <wsdl:fault name="failure" message="wsdlns:FailureMsg" />
+ </wsdl:operation>
+
+ <wsdl:operation name="domainCheck">
+ <wsdl:input message="wsdlns:domainCheckRequest"/>
+ <wsdl:output message="wsdlns:domainCheckResponse"/>
+ <wsdl:fault name="failure" message="wsdlns:FailureMsg" />
+ </wsdl:operation>
+
+ <wsdl:operation name="prepaidDomainTransfer">
+ <wsdl:input message="wsdlns:prepaidDomainTransferRequest"/>
+ <wsdl:output message="wsdlns:prepaidDomainTransferResponse"/>
+ <wsdl:fault name="failure" message="wsdlns:FailureMsg" />
+ </wsdl:operation>
+
+ <wsdl:operation name="dedicatedEditServiceMonitoringItem">
+ <wsdl:input message="wsdlns:dedicatedEditServiceMonitoringItemRequest"/>
+ <wsdl:output message="wsdlns:dedicatedEditServiceMonitoringItemResponse"/>
+ <wsdl:fault name="failure" message="wsdlns:FailureMsg" />
+ </wsdl:operation>
+
+ <wsdl:operation name="telephonySmsplusIsFreeKeyword">
+ <wsdl:input message="wsdlns:telephonySmsplusIsFreeKeywordRequest"/>
+ <wsdl:output message="wsdlns:telephonySmsplusIsFreeKeywordResponse"/>
+ <wsdl:fault name="failure" message="wsdlns:FailureMsg" />
+ </wsdl:operation>
+
+ <wsdl:operation name="telephonyLineGetCodecs">
+ <wsdl:input message="wsdlns:telephonyLineGetCodecsRequest"/>
+ <wsdl:output message="wsdlns:telephonyLineGetCodecsResponse"/>
+ <wsdl:fault name="failure" message="wsdlns:FailureMsg" />
+ </wsdl:operation>
+
+ <wsdl:operation name="telephonySmsSenderValidate">
+ <wsdl:input message="wsdlns:telephonySmsSenderValidateRequest"/>
+ <wsdl:output message="wsdlns:telephonySmsSenderValidateResponse"/>
+ <wsdl:fault name="failure" message="wsdlns:FailureMsg" />
+ </wsdl:operation>
+
+ <wsdl:operation name="dedicatedIPForUDPServerList">
+ <wsdl:input message="wsdlns:dedicatedIPForUDPServerListRequest"/>
+ <wsdl:output message="wsdlns:dedicatedIPForUDPServerListResponse"/>
+ <wsdl:fault name="failure" message="wsdlns:FailureMsg" />
+ </wsdl:operation>
+
+ <wsdl:operation name="telephonyHuntingModificationSimultaneousCalls">
+ <wsdl:input message="wsdlns:telephonyHuntingModificationSimultaneousCallsRequest"/>
+ <wsdl:output message="wsdlns:telephonyHuntingModificationSimultaneousCallsResponse"/>
+ <wsdl:fault name="failure" message="wsdlns:FailureMsg" />
+ </wsdl:operation>
+
+ <wsdl:operation name="telephonyDirectoryInfoGetSameSiret">
+ <wsdl:input message="wsdlns:telephonyDirectoryInfoGetSameSiretRequest"/>
+ <wsdl:output message="wsdlns:telephonyDirectoryInfoGetSameSiretResponse"/>
+ <wsdl:fault name="failure" message="wsdlns:FailureMsg" />
+ </wsdl:operation>
+
+ <wsdl:operation name="serviceGroupCreate">
+ <wsdl:input message="wsdlns:serviceGroupCreateRequest"/>
+ <wsdl:output message="wsdlns:serviceGroupCreateResponse"/>
+ <wsdl:fault name="failure" message="wsdlns:FailureMsg" />
+ </wsdl:operation>
+
+ <wsdl:operation name="telephonyConferenceSetParams">
+ <wsdl:input message="wsdlns:telephonyConferenceSetParamsRequest"/>
+ <wsdl:output message="wsdlns:telephonyConferenceSetParamsResponse"/>
+ <wsdl:fault name="failure" message="wsdlns:FailureMsg" />
+ </wsdl:operation>
+
+ <wsdl:operation name="orderTelephonySmsCredit">
+ <wsdl:input message="wsdlns:orderTelephonySmsCreditRequest"/>
+ <wsdl:output message="wsdlns:orderTelephonySmsCreditResponse"/>
+ <wsdl:fault name="failure" message="wsdlns:FailureMsg" />
+ </wsdl:operation>
+
+ <wsdl:operation name="dedicatedBackupSet">
+ <wsdl:input message="wsdlns:dedicatedBackupSetRequest"/>
+ <wsdl:output message="wsdlns:dedicatedBackupSetResponse"/>
+ <wsdl:fault name="failure" message="wsdlns:FailureMsg" />
+ </wsdl:operation>
+
+ <wsdl:operation name="dedicatedVirtualMacIpDelete">
+ <wsdl:input message="wsdlns:dedicatedVirtualMacIpDeleteRequest"/>
+ <wsdl:output message="wsdlns:dedicatedVirtualMacIpDeleteResponse"/>
+ <wsdl:fault name="failure" message="wsdlns:FailureMsg" />
+ </wsdl:operation>
+
+ <wsdl:operation name="dedicatedFailoverRipeSplit">
+ <wsdl:input message="wsdlns:dedicatedFailoverRipeSplitRequest"/>
+ <wsdl:output message="wsdlns:dedicatedFailoverRipeSplitResponse"/>
+ <wsdl:fault name="failure" message="wsdlns:FailureMsg" />
+ </wsdl:operation>
+
+ <wsdl:operation name="dedicatedReverseInfo">
+ <wsdl:input message="wsdlns:dedicatedReverseInfoRequest"/>
+ <wsdl:output message="wsdlns:dedicatedReverseInfoResponse"/>
+ <wsdl:fault name="failure" message="wsdlns:FailureMsg" />
+ </wsdl:operation>
+
+ <wsdl:operation name="dedicatedCapabilitiesGetAll">
+ <wsdl:input message="wsdlns:dedicatedCapabilitiesGetAllRequest"/>
+ <wsdl:output message="wsdlns:dedicatedCapabilitiesGetAllResponse"/>
+ <wsdl:fault name="failure" message="wsdlns:FailureMsg" />
+ </wsdl:operation>
+
+ <wsdl:operation name="telephonySparePurchase">
+ <wsdl:input message="wsdlns:telephonySparePurchaseRequest"/>
+ <wsdl:output message="wsdlns:telephonySparePurchaseResponse"/>
+ <wsdl:fault name="failure" message="wsdlns:FailureMsg" />
+ </wsdl:operation>
+
+ <wsdl:operation name="nic">
+ <wsdl:input message="wsdlns:nicRequest"/>
+ <wsdl:output message="wsdlns:nicResponse"/>
+ <wsdl:fault name="failure" message="wsdlns:FailureMsg" />
+ </wsdl:operation>
+
+ <wsdl:operation name="telephonyFaxCampaignList">
+ <wsdl:input message="wsdlns:telephonyFaxCampaignListRequest"/>
+ <wsdl:output message="wsdlns:telephonyFaxCampaignListResponse"/>
+ <wsdl:fault name="failure" message="wsdlns:FailureMsg" />
+ </wsdl:operation>
+
+ <wsdl:operation name="dedicatedBackupIncludeAdd">
+ <wsdl:input message="wsdlns:dedicatedBackupIncludeAddRequest"/>
+ <wsdl:output message="wsdlns:dedicatedBackupIncludeAddResponse"/>
+ <wsdl:fault name="failure" message="wsdlns:FailureMsg" />
+ </wsdl:operation>
+
+ <wsdl:operation name="ticketGet">
+ <wsdl:input message="wsdlns:ticketGetRequest"/>
+ <wsdl:output message="wsdlns:ticketGetResponse"/>
+ <wsdl:fault name="failure" message="wsdlns:FailureMsg" />
+ </wsdl:operation>
+
+ <wsdl:operation name="supportSendMessage">
+ <wsdl:input message="wsdlns:supportSendMessageRequest"/>
+ <wsdl:output message="wsdlns:supportSendMessageResponse"/>
+ <wsdl:fault name="failure" message="wsdlns:FailureMsg" />
+ </wsdl:operation>
+
+ <wsdl:operation name="notepadSet">
+ <wsdl:input message="wsdlns:notepadSetRequest"/>
+ <wsdl:output message="wsdlns:notepadSetResponse"/>
+ <wsdl:fault name="failure" message="wsdlns:FailureMsg" />
+ </wsdl:operation>
+
+ <wsdl:operation name="dedicatedFailoverRipeList">
+ <wsdl:input message="wsdlns:dedicatedFailoverRipeListRequest"/>
+ <wsdl:output message="wsdlns:dedicatedFailoverRipeListResponse"/>
+ <wsdl:fault name="failure" message="wsdlns:FailureMsg" />
+ </wsdl:operation>
+
+ <wsdl:operation name="telephonyNicGetMgcpIpRestriction">
+ <wsdl:input message="wsdlns:telephonyNicGetMgcpIpRestrictionRequest"/>
+ <wsdl:output message="wsdlns:telephonyNicGetMgcpIpRestrictionResponse"/>
+ <wsdl:fault name="failure" message="wsdlns:FailureMsg" />
+ </wsdl:operation>
+
+ <wsdl:operation name="telephonySmsGetUserQuotaForUser">
+ <wsdl:input message="wsdlns:telephonySmsGetUserQuotaForUserRequest"/>
+ <wsdl:output message="wsdlns:telephonySmsGetUserQuotaForUserResponse"/>
+ <wsdl:fault name="failure" message="wsdlns:FailureMsg" />
+ </wsdl:operation>
+
+ <wsdl:operation name="telephonyDirectoryInfoGetSiret">
+ <wsdl:input message="wsdlns:telephonyDirectoryInfoGetSiretRequest"/>
+ <wsdl:output message="wsdlns:telephonyDirectoryInfoGetSiretResponse"/>
+ <wsdl:fault name="failure" message="wsdlns:FailureMsg" />
+ </wsdl:operation>
+
+ <wsdl:operation name="dedicatedMonitoringServiceAdd">
+ <wsdl:input message="wsdlns:dedicatedMonitoringServiceAddRequest"/>
+ <wsdl:output message="wsdlns:dedicatedMonitoringServiceAddResponse"/>
+ <wsdl:fault name="failure" message="wsdlns:FailureMsg" />
+ </wsdl:operation>
+
+ <wsdl:operation name="dedicatedHardRebootDo">
+ <wsdl:input message="wsdlns:dedicatedHardRebootDoRequest"/>
+ <wsdl:output message="wsdlns:dedicatedHardRebootDoResponse"/>
+ <wsdl:fault name="failure" message="wsdlns:FailureMsg" />
+ </wsdl:operation>
+
+ <wsdl:operation name="dedicatedReverseList">
+ <wsdl:input message="wsdlns:dedicatedReverseListRequest"/>
+ <wsdl:output message="wsdlns:dedicatedReverseListResponse"/>
+ <wsdl:fault name="failure" message="wsdlns:FailureMsg" />
+ </wsdl:operation>
+
+ <wsdl:operation name="domainWhoisObfuscatorSet">
+ <wsdl:input message="wsdlns:domainWhoisObfuscatorSetRequest"/>
+ <wsdl:output message="wsdlns:domainWhoisObfuscatorSetResponse"/>
+ <wsdl:fault name="failure" message="wsdlns:FailureMsg" />
+ </wsdl:operation>
+
+ <wsdl:operation name="rpsMigrationTodo">
+ <wsdl:input message="wsdlns:rpsMigrationTodoRequest"/>
+ <wsdl:output message="wsdlns:rpsMigrationTodoResponse"/>
+ <wsdl:fault name="failure" message="wsdlns:FailureMsg" />
+ </wsdl:operation>
+
+ <wsdl:operation name="telephonyFunctionKeyModify">
+ <wsdl:input message="wsdlns:telephonyFunctionKeyModifyRequest"/>
+ <wsdl:output message="wsdlns:telephonyFunctionKeyModifyResponse"/>
+ <wsdl:fault name="failure" message="wsdlns:FailureMsg" />
+ </wsdl:operation>
+
+ <wsdl:operation name="nicTldEligibility">
+ <wsdl:input message="wsdlns:nicTldEligibilityRequest"/>
+ <wsdl:output message="wsdlns:nicTldEligibilityResponse"/>
+ <wsdl:fault name="failure" message="wsdlns:FailureMsg" />
+ </wsdl:operation>
+
+ <wsdl:operation name="automatedMailGetState">
+ <wsdl:input message="wsdlns:automatedMailGetStateRequest"/>
+ <wsdl:output message="wsdlns:automatedMailGetStateResponse"/>
+ <wsdl:fault name="failure" message="wsdlns:FailureMsg" />
+ </wsdl:operation>
+
+ <wsdl:operation name="telephonyAbbreviatedNumberList">
+ <wsdl:input message="wsdlns:telephonyAbbreviatedNumberListRequest"/>
+ <wsdl:output message="wsdlns:telephonyAbbreviatedNumberListResponse"/>
+ <wsdl:fault name="failure" message="wsdlns:FailureMsg" />
+ </wsdl:operation>
+
+ <wsdl:operation name="sqlpriveMysqlLogs">
+ <wsdl:input message="wsdlns:sqlpriveMysqlLogsRequest"/>
+ <wsdl:output message="wsdlns:sqlpriveMysqlLogsResponse"/>
+ <wsdl:fault name="failure" message="wsdlns:FailureMsg" />
+ </wsdl:operation>
+
+ <wsdl:operation name="telephonyFaxModifyPassword">
+ <wsdl:input message="wsdlns:telephonyFaxModifyPasswordRequest"/>
+ <wsdl:output message="wsdlns:telephonyFaxModifyPasswordResponse"/>
+ <wsdl:fault name="failure" message="wsdlns:FailureMsg" />
+ </wsdl:operation>
+
+ <wsdl:operation name="dedicatedBackupFtpAdd">
+ <wsdl:input message="wsdlns:dedicatedBackupFtpAddRequest"/>
+ <wsdl:output message="wsdlns:dedicatedBackupFtpAddResponse"/>
+ <wsdl:fault name="failure" message="wsdlns:FailureMsg" />
+ </wsdl:operation>
+
+ <wsdl:operation name="databaseDump">
+ <wsdl:input message="wsdlns:databaseDumpRequest"/>
+ <wsdl:output message="wsdlns:databaseDumpResponse"/>
+ <wsdl:fault name="failure" message="wsdlns:FailureMsg" />
+ </wsdl:operation>
+
+ <wsdl:operation name="telephonySmsDelete">
+ <wsdl:input message="wsdlns:telephonySmsDeleteRequest"/>
+ <wsdl:output message="wsdlns:telephonySmsDeleteResponse"/>
+ <wsdl:fault name="failure" message="wsdlns:FailureMsg" />
+ </wsdl:operation>
+
+ <wsdl:operation name="telephonyDirectoryModifyPublication">
+ <wsdl:input message="wsdlns:telephonyDirectoryModifyPublicationRequest"/>
+ <wsdl:output message="wsdlns:telephonyDirectoryModifyPublicationResponse"/>
+ <wsdl:fault name="failure" message="wsdlns:FailureMsg" />
+ </wsdl:operation>
+
+ <wsdl:operation name="domainResellerSet">
+ <wsdl:input message="wsdlns:domainResellerSetRequest"/>
+ <wsdl:output message="wsdlns:domainResellerSetResponse"/>
+ <wsdl:fault name="failure" message="wsdlns:FailureMsg" />
+ </wsdl:operation>
+
+ <wsdl:operation name="crontabList">
+ <wsdl:input message="wsdlns:crontabListRequest"/>
+ <wsdl:output message="wsdlns:crontabListResponse"/>
+ <wsdl:fault name="failure" message="wsdlns:FailureMsg" />
+ </wsdl:operation>
+
+ <wsdl:operation name="telephonyPhonebookOnGroupAdd">
+ <wsdl:input message="wsdlns:telephonyPhonebookOnGroupAddRequest"/>
+ <wsdl:output message="wsdlns:telephonyPhonebookOnGroupAddResponse"/>
+ <wsdl:fault name="failure" message="wsdlns:FailureMsg" />
+ </wsdl:operation>
+
+ <wsdl:operation name="dedicatedVirtualMacIpUsedGetList">
+ <wsdl:input message="wsdlns:dedicatedVirtualMacIpUsedGetListRequest"/>
+ <wsdl:output message="wsdlns:dedicatedVirtualMacIpUsedGetListResponse"/>
+ <wsdl:fault name="failure" message="wsdlns:FailureMsg" />
+ </wsdl:operation>
+
+ <wsdl:operation name="telephonyLineSwitchOfferPossibility">
+ <wsdl:input message="wsdlns:telephonyLineSwitchOfferPossibilityRequest"/>
+ <wsdl:output message="wsdlns:telephonyLineSwitchOfferPossibilityResponse"/>
+ <wsdl:fault name="failure" message="wsdlns:FailureMsg" />
+ </wsdl:operation>
+
+ <wsdl:operation name="telephonySmsSenderList">
+ <wsdl:input message="wsdlns:telephonySmsSenderListRequest"/>
+ <wsdl:output message="wsdlns:telephonySmsSenderListResponse"/>
+ <wsdl:fault name="failure" message="wsdlns:FailureMsg" />
+ </wsdl:operation>
+
+ <wsdl:operation name="resellerDomainRestore">
+ <wsdl:input message="wsdlns:resellerDomainRestoreRequest"/>
+ <wsdl:output message="wsdlns:resellerDomainRestoreResponse"/>
+ <wsdl:fault name="failure" message="wsdlns:FailureMsg" />
+ </wsdl:operation>
+
+ <wsdl:operation name="ticketAnswer">
+ <wsdl:input message="wsdlns:ticketAnswerRequest"/>
+ <wsdl:output message="wsdlns:ticketAnswerResponse"/>
+ <wsdl:fault name="failure" message="wsdlns:FailureMsg" />
+ </wsdl:operation>
+
+ <wsdl:operation name="sqlpriveCronSet">
+ <wsdl:input message="wsdlns:sqlpriveCronSetRequest"/>
+ <wsdl:output message="wsdlns:sqlpriveCronSetResponse"/>
+ <wsdl:fault name="failure" message="wsdlns:FailureMsg" />
+ </wsdl:operation>
+
+ <wsdl:operation name="telephonySipToAliasOffer">
+ <wsdl:input message="wsdlns:telephonySipToAliasOfferRequest"/>
+ <wsdl:output message="wsdlns:telephonySipToAliasOfferResponse"/>
+ <wsdl:fault name="failure" message="wsdlns:FailureMsg" />
+ </wsdl:operation>
+
+ <wsdl:operation name="telephonyFunctionKeyList">
+ <wsdl:input message="wsdlns:telephonyFunctionKeyListRequest"/>
+ <wsdl:output message="wsdlns:telephonyFunctionKeyListResponse"/>
+ <wsdl:fault name="failure" message="wsdlns:FailureMsg" />
+ </wsdl:operation>
+
+ <wsdl:operation name="dedicatedNetbootInfo">
+ <wsdl:input message="wsdlns:dedicatedNetbootInfoRequest"/>
+ <wsdl:output message="wsdlns:dedicatedNetbootInfoResponse"/>
+ <wsdl:fault name="failure" message="wsdlns:FailureMsg" />
+ </wsdl:operation>
+
+ <wsdl:operation name="telephonySmsGetCallBack">
+ <wsdl:input message="wsdlns:telephonySmsGetCallBackRequest"/>
+ <wsdl:output message="wsdlns:telephonySmsGetCallBackResponse"/>
+ <wsdl:fault name="failure" message="wsdlns:FailureMsg" />
+ </wsdl:operation>
+
+ <wsdl:operation name="telephonySviModify">
+ <wsdl:input message="wsdlns:telephonySviModifyRequest"/>
+ <wsdl:output message="wsdlns:telephonySviModifyResponse"/>
+ <wsdl:fault name="failure" message="wsdlns:FailureMsg" />
+ </wsdl:operation>
+
+ <wsdl:operation name="telephonySmsplusServiceDelete">
+ <wsdl:input message="wsdlns:telephonySmsplusServiceDeleteRequest"/>
+ <wsdl:output message="wsdlns:telephonySmsplusServiceDeleteResponse"/>
+ <wsdl:fault name="failure" message="wsdlns:FailureMsg" />
+ </wsdl:operation>
+
+ <wsdl:operation name="domainOperationRelaunch">
+ <wsdl:input message="wsdlns:domainOperationRelaunchRequest"/>
+ <wsdl:output message="wsdlns:domainOperationRelaunchResponse"/>
+ <wsdl:fault name="failure" message="wsdlns:FailureMsg" />
+ </wsdl:operation>
+
+ <wsdl:operation name="telephonyLineSwitchOffer">
+ <wsdl:input message="wsdlns:telephonyLineSwitchOfferRequest"/>
+ <wsdl:output message="wsdlns:telephonyLineSwitchOfferResponse"/>
+ <wsdl:fault name="failure" message="wsdlns:FailureMsg" />
+ </wsdl:operation>
+
+ <wsdl:operation name="telephonyTrunkExternalDisplayedNumberCheck">
+ <wsdl:input message="wsdlns:telephonyTrunkExternalDisplayedNumberCheckRequest"/>
+ <wsdl:output message="wsdlns:telephonyTrunkExternalDisplayedNumberCheckResponse"/>
+ <wsdl:fault name="failure" message="wsdlns:FailureMsg" />
+ </wsdl:operation>
+
+ <wsdl:operation name="telephonyDelClosureEvents">
+ <wsdl:input message="wsdlns:telephonyDelClosureEventsRequest"/>
+ <wsdl:output message="wsdlns:telephonyDelClosureEventsResponse"/>
+ <wsdl:fault name="failure" message="wsdlns:FailureMsg" />
+ </wsdl:operation>
+
+ <wsdl:operation name="telephonyFreefaxToVoicefaxCheckList">
+ <wsdl:input message="wsdlns:telephonyFreefaxToVoicefaxCheckListRequest"/>
+ <wsdl:output message="wsdlns:telephonyFreefaxToVoicefaxCheckListResponse"/>
+ <wsdl:fault name="failure" message="wsdlns:FailureMsg" />
+ </wsdl:operation>
+
+ <wsdl:operation name="telephonyVoicemailModifyPassword">
+ <wsdl:input message="wsdlns:telephonyVoicemailModifyPasswordRequest"/>
+ <wsdl:output message="wsdlns:telephonyVoicemailModifyPasswordResponse"/>
+ <wsdl:fault name="failure" message="wsdlns:FailureMsg" />
+ </wsdl:operation>
+
+ <wsdl:operation name="telephonySpareCapabilities">
+ <wsdl:input message="wsdlns:telephonySpareCapabilitiesRequest"/>
+ <wsdl:output message="wsdlns:telephonySpareCapabilitiesResponse"/>
+ <wsdl:fault name="failure" message="wsdlns:FailureMsg" />
+ </wsdl:operation>
+
+ <wsdl:operation name="dnsSoaModify">
+ <wsdl:input message="wsdlns:dnsSoaModifyRequest"/>
+ <wsdl:output message="wsdlns:dnsSoaModifyResponse"/>
+ <wsdl:fault name="failure" message="wsdlns:FailureMsg" />
+ </wsdl:operation>
+
+ <wsdl:operation name="telephonyPhonebookOnSmsDel">
+ <wsdl:input message="wsdlns:telephonyPhonebookOnSmsDelRequest"/>
+ <wsdl:output message="wsdlns:telephonyPhonebookOnSmsDelResponse"/>
+ <wsdl:fault name="failure" message="wsdlns:FailureMsg" />
+ </wsdl:operation>
+
+ <wsdl:operation name="telephonyPhonebookShare">
+ <wsdl:input message="wsdlns:telephonyPhonebookShareRequest"/>
+ <wsdl:output message="wsdlns:telephonyPhonebookShareResponse"/>
+ <wsdl:fault name="failure" message="wsdlns:FailureMsg" />
+ </wsdl:operation>
+
+ <wsdl:operation name="telephonySmsSetUserQuota">
+ <wsdl:input message="wsdlns:telephonySmsSetUserQuotaRequest"/>
+ <wsdl:output message="wsdlns:telephonySmsSetUserQuotaResponse"/>
+ <wsdl:fault name="failure" message="wsdlns:FailureMsg" />
+ </wsdl:operation>
+
+ <wsdl:operation name="cmsInstall">
+ <wsdl:input message="wsdlns:cmsInstallRequest"/>
+ <wsdl:output message="wsdlns:cmsInstallResponse"/>
+ <wsdl:fault name="failure" message="wsdlns:FailureMsg" />
+ </wsdl:operation>
+
+ <wsdl:operation name="dedicatedIpLoadBalancingAdd">
+ <wsdl:input message="wsdlns:dedicatedIpLoadBalancingAddRequest"/>
+ <wsdl:output message="wsdlns:dedicatedIpLoadBalancingAddResponse"/>
+ <wsdl:fault name="failure" message="wsdlns:FailureMsg" />
+ </wsdl:operation>
+
+ <wsdl:operation name="supportGetAllVisibleCategories">
+ <wsdl:input message="wsdlns:supportGetAllVisibleCategoriesRequest"/>
+ <wsdl:output message="wsdlns:supportGetAllVisibleCategoriesResponse"/>
+ <wsdl:fault name="failure" message="wsdlns:FailureMsg" />
+ </wsdl:operation>
+
+ <wsdl:operation name="telephonySmsHistoryCsv">
+ <wsdl:input message="wsdlns:telephonySmsHistoryCsvRequest"/>
+ <wsdl:output message="wsdlns:telephonySmsHistoryCsvResponse"/>
+ <wsdl:fault name="failure" message="wsdlns:FailureMsg" />
+ </wsdl:operation>
+
+ <wsdl:operation name="telephonyAbbreviatedNumberOnGroupList">
+ <wsdl:input message="wsdlns:telephonyAbbreviatedNumberOnGroupListRequest"/>
+ <wsdl:output message="wsdlns:telephonyAbbreviatedNumberOnGroupListResponse"/>
+ <wsdl:fault name="failure" message="wsdlns:FailureMsg" />
+ </wsdl:operation>
+
+ <wsdl:operation name="dedicatedAvailableNotificationNicsGet">
+ <wsdl:input message="wsdlns:dedicatedAvailableNotificationNicsGetRequest"/>
+ <wsdl:output message="wsdlns:dedicatedAvailableNotificationNicsGetResponse"/>
+ <wsdl:fault name="failure" message="wsdlns:FailureMsg" />
+ </wsdl:operation>
+
+ <wsdl:operation name="telephonyLineLogs">
+ <wsdl:input message="wsdlns:telephonyLineLogsRequest"/>
+ <wsdl:output message="wsdlns:telephonyLineLogsResponse"/>
+ <wsdl:fault name="failure" message="wsdlns:FailureMsg" />
+ </wsdl:operation>
+
+ <wsdl:operation name="multiFtpList">
+ <wsdl:input message="wsdlns:multiFtpListRequest"/>
+ <wsdl:output message="wsdlns:multiFtpListResponse"/>
+ <wsdl:fault name="failure" message="wsdlns:FailureMsg" />
+ </wsdl:operation>
+
+ <wsdl:operation name="telephonySpareReplace">
+ <wsdl:input message="wsdlns:telephonySpareReplaceRequest"/>
+ <wsdl:output message="wsdlns:telephonySpareReplaceResponse"/>
+ <wsdl:fault name="failure" message="wsdlns:FailureMsg" />
+ </wsdl:operation>
+
+ <wsdl:operation name="multiFtpAdd">
+ <wsdl:input message="wsdlns:multiFtpAddRequest"/>
+ <wsdl:output message="wsdlns:multiFtpAddResponse"/>
+ <wsdl:fault name="failure" message="wsdlns:FailureMsg" />
+ </wsdl:operation>
+
+ <wsdl:operation name="sqlpriveMysqlDatabasePrivilegeList">
+ <wsdl:input message="wsdlns:sqlpriveMysqlDatabasePrivilegeListRequest"/>
+ <wsdl:output message="wsdlns:sqlpriveMysqlDatabasePrivilegeListResponse"/>
+ <wsdl:fault name="failure" message="wsdlns:FailureMsg" />
+ </wsdl:operation>
+
+ <wsdl:operation name="emailAccessByNic">
+ <wsdl:input message="wsdlns:emailAccessByNicRequest"/>
+ <wsdl:output message="wsdlns:emailAccessByNicResponse"/>
+ <wsdl:fault name="failure" message="wsdlns:FailureMsg" />
+ </wsdl:operation>
+
+ <wsdl:operation name="telephonyClick2CallUserList">
+ <wsdl:input message="wsdlns:telephonyClick2CallUserListRequest"/>
+ <wsdl:output message="wsdlns:telephonyClick2CallUserListResponse"/>
+ <wsdl:fault name="failure" message="wsdlns:FailureMsg" />
+ </wsdl:operation>
+
+ <wsdl:operation name="zoneEntryDel">
+ <wsdl:input message="wsdlns:zoneEntryDelRequest"/>
+ <wsdl:output message="wsdlns:zoneEntryDelResponse"/>
+ <wsdl:fault name="failure" message="wsdlns:FailureMsg" />
+ </wsdl:operation>
+
+ <wsdl:operation name="prepaidSetThreshold">
+ <wsdl:input message="wsdlns:prepaidSetThresholdRequest"/>
+ <wsdl:output message="wsdlns:prepaidSetThresholdResponse"/>
+ <wsdl:fault name="failure" message="wsdlns:FailureMsg" />
+ </wsdl:operation>
+
+ <wsdl:operation name="telephonyVoicemailMailboxList">
+ <wsdl:input message="wsdlns:telephonyVoicemailMailboxListRequest"/>
+ <wsdl:output message="wsdlns:telephonyVoicemailMailboxListResponse"/>
+ <wsdl:fault name="failure" message="wsdlns:FailureMsg" />
+ </wsdl:operation>
+
+ <wsdl:operation name="resellerDomainRenew">
+ <wsdl:input message="wsdlns:resellerDomainRenewRequest"/>
+ <wsdl:output message="wsdlns:resellerDomainRenewResponse"/>
+ <wsdl:fault name="failure" message="wsdlns:FailureMsg" />
+ </wsdl:operation>
+
+ <wsdl:operation name="popDel">
+ <wsdl:input message="wsdlns:popDelRequest"/>
+ <wsdl:output message="wsdlns:popDelResponse"/>
+ <wsdl:fault name="failure" message="wsdlns:FailureMsg" />
+ </wsdl:operation>
+
+ <wsdl:operation name="telephonyFaxCampaignDetails">
+ <wsdl:input message="wsdlns:telephonyFaxCampaignDetailsRequest"/>
+ <wsdl:output message="wsdlns:telephonyFaxCampaignDetailsResponse"/>
+ <wsdl:fault name="failure" message="wsdlns:FailureMsg" />
+ </wsdl:operation>
+
+ <wsdl:operation name="emailFilterRuleDel">
+ <wsdl:input message="wsdlns:emailFilterRuleDelRequest"/>
+ <wsdl:output message="wsdlns:emailFilterRuleDelResponse"/>
+ <wsdl:fault name="failure" message="wsdlns:FailureMsg" />
+ </wsdl:operation>
+
+ <wsdl:operation name="telephonyPhonebookOnGroupDel">
+ <wsdl:input message="wsdlns:telephonyPhonebookOnGroupDelRequest"/>
+ <wsdl:output message="wsdlns:telephonyPhonebookOnGroupDelResponse"/>
+ <wsdl:fault name="failure" message="wsdlns:FailureMsg" />
+ </wsdl:operation>
+
+ <wsdl:operation name="telephonyPhonebookOnGroupList">
+ <wsdl:input message="wsdlns:telephonyPhonebookOnGroupListRequest"/>
+ <wsdl:output message="wsdlns:telephonyPhonebookOnGroupListResponse"/>
+ <wsdl:fault name="failure" message="wsdlns:FailureMsg" />
+ </wsdl:operation>
+
+ <wsdl:operation name="telephonySpecialNumberCustomList">
+ <wsdl:input message="wsdlns:telephonySpecialNumberCustomListRequest"/>
+ <wsdl:output message="wsdlns:telephonySpecialNumberCustomListResponse"/>
+ <wsdl:fault name="failure" message="wsdlns:FailureMsg" />
+ </wsdl:operation>
+
+ <wsdl:operation name="dedicatedMonitoringServiceDel">
+ <wsdl:input message="wsdlns:dedicatedMonitoringServiceDelRequest"/>
+ <wsdl:output message="wsdlns:dedicatedMonitoringServiceDelResponse"/>
+ <wsdl:fault name="failure" message="wsdlns:FailureMsg" />
+ </wsdl:operation>
+
+ <wsdl:operation name="telephonyFMHuntingModificationSimultaneousCalls">
+ <wsdl:input message="wsdlns:telephonyFMHuntingModificationSimultaneousCallsRequest"/>
+ <wsdl:output message="wsdlns:telephonyFMHuntingModificationSimultaneousCallsResponse"/>
+ <wsdl:fault name="failure" message="wsdlns:FailureMsg" />
+ </wsdl:operation>
+
+ <wsdl:operation name="emailFilterPriority">
+ <wsdl:input message="wsdlns:emailFilterPriorityRequest"/>
+ <wsdl:output message="wsdlns:emailFilterPriorityResponse"/>
+ <wsdl:fault name="failure" message="wsdlns:FailureMsg" />
+ </wsdl:operation>
+
+ <wsdl:operation name="accountAlertThresholdSet">
+ <wsdl:input message="wsdlns:accountAlertThresholdSetRequest"/>
+ <wsdl:output message="wsdlns:accountAlertThresholdSetResponse"/>
+ <wsdl:fault name="failure" message="wsdlns:FailureMsg" />
+ </wsdl:operation>
+
+ <wsdl:operation name="emailFilterDel">
+ <wsdl:input message="wsdlns:emailFilterDelRequest"/>
+ <wsdl:output message="wsdlns:emailFilterDelResponse"/>
+ <wsdl:fault name="failure" message="wsdlns:FailureMsg" />
+ </wsdl:operation>
+
+ <wsdl:operation name="resellerDomainCreate">
+ <wsdl:input message="wsdlns:resellerDomainCreateRequest"/>
+ <wsdl:output message="wsdlns:resellerDomainCreateResponse"/>
+ <wsdl:fault name="failure" message="wsdlns:FailureMsg" />
+ </wsdl:operation>
+
+ <wsdl:operation name="managedServicesSnapshotUpdate">
+ <wsdl:input message="wsdlns:managedServicesSnapshotUpdateRequest"/>
+ <wsdl:output message="wsdlns:managedServicesSnapshotUpdateResponse"/>
+ <wsdl:fault name="failure" message="wsdlns:FailureMsg" />
+ </wsdl:operation>
+
+ <wsdl:operation name="supportGetThreadTree">
+ <wsdl:input message="wsdlns:supportGetThreadTreeRequest"/>
+ <wsdl:output message="wsdlns:supportGetThreadTreeResponse"/>
+ <wsdl:fault name="failure" message="wsdlns:FailureMsg" />
+ </wsdl:operation>
+
+ <wsdl:operation name="emailSetDomainCatchAll">
+ <wsdl:input message="wsdlns:emailSetDomainCatchAllRequest"/>
+ <wsdl:output message="wsdlns:emailSetDomainCatchAllResponse"/>
+ <wsdl:fault name="failure" message="wsdlns:FailureMsg" />
+ </wsdl:operation>
+
+ <wsdl:operation name="domainCapabilities">
+ <wsdl:input message="wsdlns:domainCapabilitiesRequest"/>
+ <wsdl:output message="wsdlns:domainCapabilitiesResponse"/>
+ <wsdl:fault name="failure" message="wsdlns:FailureMsg" />
+ </wsdl:operation>
+
+ <wsdl:operation name="dedicatedIpLoadBalancingServerStateModify">
+ <wsdl:input message="wsdlns:dedicatedIpLoadBalancingServerStateModifyRequest"/>
+ <wsdl:output message="wsdlns:dedicatedIpLoadBalancingServerStateModifyResponse"/>
+ <wsdl:fault name="failure" message="wsdlns:FailureMsg" />
+ </wsdl:operation>
+
+ <wsdl:operation name="telephonyVoicemailMailboxDownload">
+ <wsdl:input message="wsdlns:telephonyVoicemailMailboxDownloadRequest"/>
+ <wsdl:output message="wsdlns:telephonyVoicemailMailboxDownloadResponse"/>
+ <wsdl:fault name="failure" message="wsdlns:FailureMsg" />
+ </wsdl:operation>
+
+ <wsdl:operation name="dedicatedReverseModify">
+ <wsdl:input message="wsdlns:dedicatedReverseModifyRequest"/>
+ <wsdl:output message="wsdlns:dedicatedReverseModifyResponse"/>
+ <wsdl:fault name="failure" message="wsdlns:FailureMsg" />
+ </wsdl:operation>
+
+ <wsdl:operation name="telephonyNicGetIpRestriction">
+ <wsdl:input message="wsdlns:telephonyNicGetIpRestrictionRequest"/>
+ <wsdl:output message="wsdlns:telephonyNicGetIpRestrictionResponse"/>
+ <wsdl:fault name="failure" message="wsdlns:FailureMsg" />
+ </wsdl:operation>
+
+ <wsdl:operation name="telephonyGetClosureEventsAsArray">
+ <wsdl:input message="wsdlns:telephonyGetClosureEventsAsArrayRequest"/>
+ <wsdl:output message="wsdlns:telephonyGetClosureEventsAsArrayResponse"/>
+ <wsdl:fault name="failure" message="wsdlns:FailureMsg" />
+ </wsdl:operation>
+
+ <wsdl:operation name="telephonyPhonebookOnSmsContactDel">
+ <wsdl:input message="wsdlns:telephonyPhonebookOnSmsContactDelRequest"/>
+ <wsdl:output message="wsdlns:telephonyPhonebookOnSmsContactDelResponse"/>
+ <wsdl:fault name="failure" message="wsdlns:FailureMsg" />
+ </wsdl:operation>
+
+ <wsdl:operation name="telephonyReversmentsRefundIsPending">
+ <wsdl:input message="wsdlns:telephonyReversmentsRefundIsPendingRequest"/>
+ <wsdl:output message="wsdlns:telephonyReversmentsRefundIsPendingResponse"/>
+ <wsdl:fault name="failure" message="wsdlns:FailureMsg" />
+ </wsdl:operation>
+
+ <wsdl:operation name="serviceModifyContact">
+ <wsdl:input message="wsdlns:serviceModifyContactRequest"/>
+ <wsdl:output message="wsdlns:serviceModifyContactResponse"/>
+ <wsdl:fault name="failure" message="wsdlns:FailureMsg" />
+ </wsdl:operation>
+
+ <wsdl:operation name="telephonyScreenListInfoModify">
+ <wsdl:input message="wsdlns:telephonyScreenListInfoModifyRequest"/>
+ <wsdl:output message="wsdlns:telephonyScreenListInfoModifyResponse"/>
+ <wsdl:fault name="failure" message="wsdlns:FailureMsg" />
+ </wsdl:operation>
+
+ <wsdl:operation name="domainDnsList">
+ <wsdl:input message="wsdlns:domainDnsListRequest"/>
+ <wsdl:output message="wsdlns:domainDnsListResponse"/>
+ <wsdl:fault name="failure" message="wsdlns:FailureMsg" />
+ </wsdl:operation>
+
+ <wsdl:operation name="dedicatedFailoverList">
+ <wsdl:input message="wsdlns:dedicatedFailoverListRequest"/>
+ <wsdl:output message="wsdlns:dedicatedFailoverListResponse"/>
+ <wsdl:fault name="failure" message="wsdlns:FailureMsg" />
+ </wsdl:operation>
+
+ <wsdl:operation name="emailDomainMxList">
+ <wsdl:input message="wsdlns:emailDomainMxListRequest"/>
+ <wsdl:output message="wsdlns:emailDomainMxListResponse"/>
+ <wsdl:fault name="failure" message="wsdlns:FailureMsg" />
+ </wsdl:operation>
+
+ <wsdl:operation name="managedServicesHostMasterIpGet">
+ <wsdl:input message="wsdlns:managedServicesHostMasterIpGetRequest"/>
+ <wsdl:output message="wsdlns:managedServicesHostMasterIpGetResponse"/>
+ <wsdl:fault name="failure" message="wsdlns:FailureMsg" />
+ </wsdl:operation>
+
+ <wsdl:operation name="dedicatedSecondaryDNSInfo">
+ <wsdl:input message="wsdlns:dedicatedSecondaryDNSInfoRequest"/>
+ <wsdl:output message="wsdlns:dedicatedSecondaryDNSInfoResponse"/>
+ <wsdl:fault name="failure" message="wsdlns:FailureMsg" />
+ </wsdl:operation>
+
+ <wsdl:operation name="telephonySmsplusServiceReversableTicketsList">
+ <wsdl:input message="wsdlns:telephonySmsplusServiceReversableTicketsListRequest"/>
+ <wsdl:output message="wsdlns:telephonySmsplusServiceReversableTicketsListResponse"/>
+ <wsdl:fault name="failure" message="wsdlns:FailureMsg" />
+ </wsdl:operation>
+
+ <wsdl:operation name="dedicatedRipeUpdateInetnum">
+ <wsdl:input message="wsdlns:dedicatedRipeUpdateInetnumRequest"/>
+ <wsdl:output message="wsdlns:dedicatedRipeUpdateInetnumResponse"/>
+ <wsdl:fault name="failure" message="wsdlns:FailureMsg" />
+ </wsdl:operation>
+
+ <wsdl:operation name="ortDomainList">
+ <wsdl:input message="wsdlns:ortDomainListRequest"/>
+ <wsdl:output message="wsdlns:ortDomainListResponse"/>
+ <wsdl:fault name="failure" message="wsdlns:FailureMsg" />
+ </wsdl:operation>
+
+ <wsdl:operation name="telephonyHuntingGenericScreenStatusModify">
+ <wsdl:input message="wsdlns:telephonyHuntingGenericScreenStatusModifyRequest"/>
+ <wsdl:output message="wsdlns:telephonyHuntingGenericScreenStatusModifyResponse"/>
+ <wsdl:fault name="failure" message="wsdlns:FailureMsg" />
+ </wsdl:operation>
+
+ <wsdl:operation name="telephonySmsBlacklistedSendersList">
+ <wsdl:input message="wsdlns:telephonySmsBlacklistedSendersListRequest"/>
+ <wsdl:output message="wsdlns:telephonySmsBlacklistedSendersListResponse"/>
+ <wsdl:fault name="failure" message="wsdlns:FailureMsg" />
+ </wsdl:operation>
+
+ <wsdl:operation name="telephonyPhonebookContactAdd">
+ <wsdl:input message="wsdlns:telephonyPhonebookContactAddRequest"/>
+ <wsdl:output message="wsdlns:telephonyPhonebookContactAddResponse"/>
+ <wsdl:fault name="failure" message="wsdlns:FailureMsg" />
+ </wsdl:operation>
+
+ <wsdl:operation name="domainOperationInfo">
+ <wsdl:input message="wsdlns:domainOperationInfoRequest"/>
+ <wsdl:output message="wsdlns:domainOperationInfoResponse"/>
+ <wsdl:fault name="failure" message="wsdlns:FailureMsg" />
+ </wsdl:operation>
+
+ <wsdl:operation name="dedicatedGetAvailableNetworkFromCountry">
+ <wsdl:input message="wsdlns:dedicatedGetAvailableNetworkFromCountryRequest"/>
+ <wsdl:output message="wsdlns:dedicatedGetAvailableNetworkFromCountryResponse"/>
+ <wsdl:fault name="failure" message="wsdlns:FailureMsg" />
+ </wsdl:operation>
+
+ <wsdl:operation name="telephonyPortabilityOrderSpecialNumber">
+ <wsdl:input message="wsdlns:telephonyPortabilityOrderSpecialNumberRequest"/>
+ <wsdl:output message="wsdlns:telephonyPortabilityOrderSpecialNumberResponse"/>
+ <wsdl:fault name="failure" message="wsdlns:FailureMsg" />
+ </wsdl:operation>
+
+ <wsdl:operation name="billingGetReferencesToExpired">
+ <wsdl:input message="wsdlns:billingGetReferencesToExpiredRequest"/>
+ <wsdl:output message="wsdlns:billingGetReferencesToExpiredResponse"/>
+ <wsdl:fault name="failure" message="wsdlns:FailureMsg" />
+ </wsdl:operation>
+
+ <wsdl:operation name="dedicatedFailoverAdd">
+ <wsdl:input message="wsdlns:dedicatedFailoverAddRequest"/>
+ <wsdl:output message="wsdlns:dedicatedFailoverAddResponse"/>
+ <wsdl:fault name="failure" message="wsdlns:FailureMsg" />
+ </wsdl:operation>
+
+ <wsdl:operation name="telephonySmsUserSetCallBack">
+ <wsdl:input message="wsdlns:telephonySmsUserSetCallBackRequest"/>
+ <wsdl:output message="wsdlns:telephonySmsUserSetCallBackResponse"/>
+ <wsdl:fault name="failure" message="wsdlns:FailureMsg" />
+ </wsdl:operation>
+
+ <wsdl:operation name="prepaidGetSummary">
+ <wsdl:input message="wsdlns:prepaidGetSummaryRequest"/>
+ <wsdl:output message="wsdlns:prepaidGetSummaryResponse"/>
+ <wsdl:fault name="failure" message="wsdlns:FailureMsg" />
+ </wsdl:operation>
+
+ <wsdl:operation name="domainDnsUpdate">
+ <wsdl:input message="wsdlns:domainDnsUpdateRequest"/>
+ <wsdl:output message="wsdlns:domainDnsUpdateResponse"/>
+ <wsdl:fault name="failure" message="wsdlns:FailureMsg" />
+ </wsdl:operation>
+
+ <wsdl:operation name="emailFilterRuleAdd">
+ <wsdl:input message="wsdlns:emailFilterRuleAddRequest"/>
+ <wsdl:output message="wsdlns:emailFilterRuleAddResponse"/>
+ <wsdl:fault name="failure" message="wsdlns:FailureMsg" />
+ </wsdl:operation>
+
+ <wsdl:operation name="ripeUpdateInetnum">
+ <wsdl:input message="wsdlns:ripeUpdateInetnumRequest"/>
+ <wsdl:output message="wsdlns:ripeUpdateInetnumResponse"/>
+ <wsdl:fault name="failure" message="wsdlns:FailureMsg" />
+ </wsdl:operation>
+
+ <wsdl:operation name="domainResellerDel">
+ <wsdl:input message="wsdlns:domainResellerDelRequest"/>
+ <wsdl:output message="wsdlns:domainResellerDelResponse"/>
+ <wsdl:fault name="failure" message="wsdlns:FailureMsg" />
+ </wsdl:operation>
+
+ <wsdl:operation name="telephonyPhonebookOnGroupModify">
+ <wsdl:input message="wsdlns:telephonyPhonebookOnGroupModifyRequest"/>
+ <wsdl:output message="wsdlns:telephonyPhonebookOnGroupModifyResponse"/>
+ <wsdl:fault name="failure" message="wsdlns:FailureMsg" />
+ </wsdl:operation>
+
+ <wsdl:operation name="telephonyLineSwitchOldOfferPossibility">
+ <wsdl:input message="wsdlns:telephonyLineSwitchOldOfferPossibilityRequest"/>
+ <wsdl:output message="wsdlns:telephonyLineSwitchOldOfferPossibilityResponse"/>
+ <wsdl:fault name="failure" message="wsdlns:FailureMsg" />
+ </wsdl:operation>
+
+ <wsdl:operation name="resellerDomainCreateIT">
+ <wsdl:input message="wsdlns:resellerDomainCreateITRequest"/>
+ <wsdl:output message="wsdlns:resellerDomainCreateITResponse"/>
+ <wsdl:fault name="failure" message="wsdlns:FailureMsg" />
+ </wsdl:operation>
+
+ <wsdl:operation name="notepadGet">
+ <wsdl:input message="wsdlns:notepadGetRequest"/>
+ <wsdl:output message="wsdlns:notepadGetResponse"/>
+ <wsdl:fault name="failure" message="wsdlns:FailureMsg" />
+ </wsdl:operation>
+
+ <wsdl:operation name="telephonySmsplusServiceList">
+ <wsdl:input message="wsdlns:telephonySmsplusServiceListRequest"/>
+ <wsdl:output message="wsdlns:telephonySmsplusServiceListResponse"/>
+ <wsdl:fault name="failure" message="wsdlns:FailureMsg" />
+ </wsdl:operation>
+
+ <wsdl:operation name="telephonyHuntingModificationAnonymousCallRejection">
+ <wsdl:input message="wsdlns:telephonyHuntingModificationAnonymousCallRejectionRequest"/>
+ <wsdl:output message="wsdlns:telephonyHuntingModificationAnonymousCallRejectionResponse"/>
+ <wsdl:fault name="failure" message="wsdlns:FailureMsg" />
+ </wsdl:operation>
+
+ <wsdl:operation name="dedicatedFilterIrcServerRuleList">
+ <wsdl:input message="wsdlns:dedicatedFilterIrcServerRuleListRequest"/>
+ <wsdl:output message="wsdlns:dedicatedFilterIrcServerRuleListResponse"/>
+ <wsdl:fault name="failure" message="wsdlns:FailureMsg" />
+ </wsdl:operation>
+
+ <wsdl:operation name="telephonyNumberGetBillingAccount">
+ <wsdl:input message="wsdlns:telephonyNumberGetBillingAccountRequest"/>
+ <wsdl:output message="wsdlns:telephonyNumberGetBillingAccountResponse"/>
+ <wsdl:fault name="failure" message="wsdlns:FailureMsg" />
+ </wsdl:operation>
+
+ <wsdl:operation name="managedServicesPartitionDelete">
+ <wsdl:input message="wsdlns:managedServicesPartitionDeleteRequest"/>
+ <wsdl:output message="wsdlns:managedServicesPartitionDeleteResponse"/>
+ <wsdl:fault name="failure" message="wsdlns:FailureMsg" />
+ </wsdl:operation>
+
+ <wsdl:operation name="telephonyTonesOptionsList">
+ <wsdl:input message="wsdlns:telephonyTonesOptionsListRequest"/>
+ <wsdl:output message="wsdlns:telephonyTonesOptionsListResponse"/>
+ <wsdl:fault name="failure" message="wsdlns:FailureMsg" />
+ </wsdl:operation>
+
+ <wsdl:operation name="telephonySpareList">
+ <wsdl:input message="wsdlns:telephonySpareListRequest"/>
+ <wsdl:output message="wsdlns:telephonySpareListResponse"/>
+ <wsdl:fault name="failure" message="wsdlns:FailureMsg" />
+ </wsdl:operation>
+
+ <wsdl:operation name="supportReportAnswerProblem">
+ <wsdl:input message="wsdlns:supportReportAnswerProblemRequest"/>
+ <wsdl:output message="wsdlns:supportReportAnswerProblemResponse"/>
+ <wsdl:fault name="failure" message="wsdlns:FailureMsg" />
+ </wsdl:operation>
+
+ <wsdl:operation name="multiDomainList">
+ <wsdl:input message="wsdlns:multiDomainListRequest"/>
+ <wsdl:output message="wsdlns:multiDomainListResponse"/>
+ <wsdl:fault name="failure" message="wsdlns:FailureMsg" />
+ </wsdl:operation>
+
+ <wsdl:operation name="ticketClose">
+ <wsdl:input message="wsdlns:ticketCloseRequest"/>
+ <wsdl:output message="wsdlns:ticketCloseResponse"/>
+ <wsdl:fault name="failure" message="wsdlns:FailureMsg" />
+ </wsdl:operation>
+
+ <wsdl:operation name="dedicatedRipeCreateOrganisation">
+ <wsdl:input message="wsdlns:dedicatedRipeCreateOrganisationRequest"/>
+ <wsdl:output message="wsdlns:dedicatedRipeCreateOrganisationResponse"/>
+ <wsdl:fault name="failure" message="wsdlns:FailureMsg" />
+ </wsdl:operation>
+
+ <wsdl:operation name="telephonyListSummationCallsFromNumber">
+ <wsdl:input message="wsdlns:telephonyListSummationCallsFromNumberRequest"/>
+ <wsdl:output message="wsdlns:telephonyListSummationCallsFromNumberResponse"/>
+ <wsdl:fault name="failure" message="wsdlns:FailureMsg" />
+ </wsdl:operation>
+
+ <wsdl:operation name="telephonyConferenceGetParams">
+ <wsdl:input message="wsdlns:telephonyConferenceGetParamsRequest"/>
+ <wsdl:output message="wsdlns:telephonyConferenceGetParamsResponse"/>
+ <wsdl:fault name="failure" message="wsdlns:FailureMsg" />
+ </wsdl:operation>
+
+ <wsdl:operation name="telephonyPhonebookContactModify">
+ <wsdl:input message="wsdlns:telephonyPhonebookContactModifyRequest"/>
+ <wsdl:output message="wsdlns:telephonyPhonebookContactModifyResponse"/>
+ <wsdl:fault name="failure" message="wsdlns:FailureMsg" />
+ </wsdl:operation>
+
+ <wsdl:operation name="domainDnsGetOvhDefault">
+ <wsdl:input message="wsdlns:domainDnsGetOvhDefaultRequest"/>
+ <wsdl:output message="wsdlns:domainDnsGetOvhDefaultResponse"/>
+ <wsdl:fault name="failure" message="wsdlns:FailureMsg" />
+ </wsdl:operation>
+
+ <wsdl:operation name="telephonyLineList">
+ <wsdl:input message="wsdlns:telephonyLineListRequest"/>
+ <wsdl:output message="wsdlns:telephonyLineListResponse"/>
+ <wsdl:fault name="failure" message="wsdlns:FailureMsg" />
+ </wsdl:operation>
+
+ <wsdl:operation name="databaseCreate">
+ <wsdl:input message="wsdlns:databaseCreateRequest"/>
+ <wsdl:output message="wsdlns:databaseCreateResponse"/>
+ <wsdl:fault name="failure" message="wsdlns:FailureMsg" />
+ </wsdl:operation>
+
+ <wsdl:operation name="billingGetAccessByNic">
+ <wsdl:input message="wsdlns:billingGetAccessByNicRequest"/>
+ <wsdl:output message="wsdlns:billingGetAccessByNicResponse"/>
+ <wsdl:fault name="failure" message="wsdlns:FailureMsg" />
+ </wsdl:operation>
+
+ <wsdl:operation name="dedicatedBackupExcludeAdd">
+ <wsdl:input message="wsdlns:dedicatedBackupExcludeAddRequest"/>
+ <wsdl:output message="wsdlns:dedicatedBackupExcludeAddResponse"/>
+ <wsdl:fault name="failure" message="wsdlns:FailureMsg" />
+ </wsdl:operation>
+
+ <wsdl:operation name="serviceModifyOwner">
+ <wsdl:input message="wsdlns:serviceModifyOwnerRequest"/>
+ <wsdl:output message="wsdlns:serviceModifyOwnerResponse"/>
+ <wsdl:fault name="failure" message="wsdlns:FailureMsg" />
+ </wsdl:operation>
+
+ <wsdl:operation name="telephonyLineOptionsModify">
+ <wsdl:input message="wsdlns:telephonyLineOptionsModifyRequest"/>
+ <wsdl:output message="wsdlns:telephonyLineOptionsModifyResponse"/>
+ <wsdl:fault name="failure" message="wsdlns:FailureMsg" />
+ </wsdl:operation>
+
+ <wsdl:operation name="telephonyHuntingGenericScreenSet">
+ <wsdl:input message="wsdlns:telephonyHuntingGenericScreenSetRequest"/>
+ <wsdl:output message="wsdlns:telephonyHuntingGenericScreenSetResponse"/>
+ <wsdl:fault name="failure" message="wsdlns:FailureMsg" />
+ </wsdl:operation>
+
+ <wsdl:operation name="sqlpriveCronDel">
+ <wsdl:input message="wsdlns:sqlpriveCronDelRequest"/>
+ <wsdl:output message="wsdlns:sqlpriveCronDelResponse"/>
+ <wsdl:fault name="failure" message="wsdlns:FailureMsg" />
+ </wsdl:operation>
+
+ <wsdl:operation name="telephonyFaxCampaignStartStop">
+ <wsdl:input message="wsdlns:telephonyFaxCampaignStartStopRequest"/>
+ <wsdl:output message="wsdlns:telephonyFaxCampaignStartStopResponse"/>
+ <wsdl:fault name="failure" message="wsdlns:FailureMsg" />
+ </wsdl:operation>
+
+ <wsdl:operation name="dedicatedFilterIrcServerRuleDel">
+ <wsdl:input message="wsdlns:dedicatedFilterIrcServerRuleDelRequest"/>
+ <wsdl:output message="wsdlns:dedicatedFilterIrcServerRuleDelResponse"/>
+ <wsdl:fault name="failure" message="wsdlns:FailureMsg" />
+ </wsdl:operation>
+
+ <wsdl:operation name="hostingGetCapabilities">
+ <wsdl:input message="wsdlns:hostingGetCapabilitiesRequest"/>
+ <wsdl:output message="wsdlns:hostingGetCapabilitiesResponse"/>
+ <wsdl:fault name="failure" message="wsdlns:FailureMsg" />
+ </wsdl:operation>
+
+ <wsdl:operation name="domainWhoisObfuscatorUnset">
+ <wsdl:input message="wsdlns:domainWhoisObfuscatorUnsetRequest"/>
+ <wsdl:output message="wsdlns:domainWhoisObfuscatorUnsetResponse"/>
+ <wsdl:fault name="failure" message="wsdlns:FailureMsg" />
+ </wsdl:operation>
+
+ <wsdl:operation name="domainHostDel">
+ <wsdl:input message="wsdlns:domainHostDelRequest"/>
+ <wsdl:output message="wsdlns:domainHostDelResponse"/>
+ <wsdl:fault name="failure" message="wsdlns:FailureMsg" />
+ </wsdl:operation>
+
+ <wsdl:operation name="dedicatedFailoverRipeModify">
+ <wsdl:input message="wsdlns:dedicatedFailoverRipeModifyRequest"/>
+ <wsdl:output message="wsdlns:dedicatedFailoverRipeModifyResponse"/>
+ <wsdl:fault name="failure" message="wsdlns:FailureMsg" />
+ </wsdl:operation>
+
+ <wsdl:operation name="responderEmailDel">
+ <wsdl:input message="wsdlns:responderEmailDelRequest"/>
+ <wsdl:output message="wsdlns:responderEmailDelResponse"/>
+ <wsdl:fault name="failure" message="wsdlns:FailureMsg" />
+ </wsdl:operation>
+
+ <wsdl:operation name="dedicatedMonitoringList">
+ <wsdl:input message="wsdlns:dedicatedMonitoringListRequest"/>
+ <wsdl:output message="wsdlns:dedicatedMonitoringListResponse"/>
+ <wsdl:fault name="failure" message="wsdlns:FailureMsg" />
+ </wsdl:operation>
+
+ <wsdl:operation name="telephonyDirectoryModifyAddress">
+ <wsdl:input message="wsdlns:telephonyDirectoryModifyAddressRequest"/>
+ <wsdl:output message="wsdlns:telephonyDirectoryModifyAddressResponse"/>
+ <wsdl:fault name="failure" message="wsdlns:FailureMsg" />
+ </wsdl:operation>
+
+ <wsdl:operation name="managedServicesPartitionStatusCheck">
+ <wsdl:input message="wsdlns:managedServicesPartitionStatusCheckRequest"/>
+ <wsdl:output message="wsdlns:managedServicesPartitionStatusCheckResponse"/>
+ <wsdl:fault name="failure" message="wsdlns:FailureMsg" />
+ </wsdl:operation>
+
+ <wsdl:operation name="cmsAvailableList">
+ <wsdl:input message="wsdlns:cmsAvailableListRequest"/>
+ <wsdl:output message="wsdlns:cmsAvailableListResponse"/>
+ <wsdl:fault name="failure" message="wsdlns:FailureMsg" />
+ </wsdl:operation>
+
+ <wsdl:operation name="telephonyNicSetMgcpIpRestriction">
+ <wsdl:input message="wsdlns:telephonyNicSetMgcpIpRestrictionRequest"/>
+ <wsdl:output message="wsdlns:telephonyNicSetMgcpIpRestrictionResponse"/>
+ <wsdl:fault name="failure" message="wsdlns:FailureMsg" />
+ </wsdl:operation>
+
+ <wsdl:operation name="telephonySecurityDepositCredit">
+ <wsdl:input message="wsdlns:telephonySecurityDepositCreditRequest"/>
+ <wsdl:output message="wsdlns:telephonySecurityDepositCreditResponse"/>
+ <wsdl:fault name="failure" message="wsdlns:FailureMsg" />
+ </wsdl:operation>
+
+ <wsdl:operation name="nicModifyLanguage">
+ <wsdl:input message="wsdlns:nicModifyLanguageRequest"/>
+ <wsdl:output message="wsdlns:nicModifyLanguageResponse"/>
+ <wsdl:fault name="failure" message="wsdlns:FailureMsg" />
+ </wsdl:operation>
+
+ <wsdl:operation name="telephonyLineOrder">
+ <wsdl:input message="wsdlns:telephonyLineOrderRequest"/>
+ <wsdl:output message="wsdlns:telephonyLineOrderResponse"/>
+ <wsdl:fault name="failure" message="wsdlns:FailureMsg" />
+ </wsdl:operation>
+
+ <wsdl:operation name="telephonyConferenceAction">
+ <wsdl:input message="wsdlns:telephonyConferenceActionRequest"/>
+ <wsdl:output message="wsdlns:telephonyConferenceActionResponse"/>
+ <wsdl:fault name="failure" message="wsdlns:FailureMsg" />
+ </wsdl:operation>
+
+ <wsdl:operation name="dedicatedBackupExcludeDel">
+ <wsdl:input message="wsdlns:dedicatedBackupExcludeDelRequest"/>
+ <wsdl:output message="wsdlns:dedicatedBackupExcludeDelResponse"/>
+ <wsdl:fault name="failure" message="wsdlns:FailureMsg" />
+ </wsdl:operation>
+
+ <wsdl:operation name="automatedMailUnlock">
+ <wsdl:input message="wsdlns:automatedMailUnlockRequest"/>
+ <wsdl:output message="wsdlns:automatedMailUnlockResponse"/>
+ <wsdl:fault name="failure" message="wsdlns:FailureMsg" />
+ </wsdl:operation>
+
+ <wsdl:operation name="ripeQuery">
+ <wsdl:input message="wsdlns:ripeQueryRequest"/>
+ <wsdl:output message="wsdlns:ripeQueryResponse"/>
+ <wsdl:fault name="failure" message="wsdlns:FailureMsg" />
+ </wsdl:operation>
+
+ <wsdl:operation name="login">
+ <wsdl:input message="wsdlns:loginRequest"/>
+ <wsdl:output message="wsdlns:loginResponse"/>
+ <wsdl:fault name="failure" message="wsdlns:FailureMsg" />
+ </wsdl:operation>
+
+ <wsdl:operation name="telephonyFunctionKeyDel">
+ <wsdl:input message="wsdlns:telephonyFunctionKeyDelRequest"/>
+ <wsdl:output message="wsdlns:telephonyFunctionKeyDelResponse"/>
+ <wsdl:fault name="failure" message="wsdlns:FailureMsg" />
+ </wsdl:operation>
+
+ <wsdl:operation name="popListByMasterNic">
+ <wsdl:input message="wsdlns:popListByMasterNicRequest"/>
+ <wsdl:output message="wsdlns:popListByMasterNicResponse"/>
+ <wsdl:fault name="failure" message="wsdlns:FailureMsg" />
+ </wsdl:operation>
+
+ <wsdl:operation name="serviceModifyOwnerInfos">
+ <wsdl:input message="wsdlns:serviceModifyOwnerInfosRequest"/>
+ <wsdl:output message="wsdlns:serviceModifyOwnerInfosResponse"/>
+ <wsdl:fault name="failure" message="wsdlns:FailureMsg" />
+ </wsdl:operation>
+
+ <wsdl:operation name="dedicatedHardRebootStatus">
+ <wsdl:input message="wsdlns:dedicatedHardRebootStatusRequest"/>
+ <wsdl:output message="wsdlns:dedicatedHardRebootStatusResponse"/>
+ <wsdl:fault name="failure" message="wsdlns:FailureMsg" />
+ </wsdl:operation>
+
+ <wsdl:operation name="domainInfo">
+ <wsdl:input message="wsdlns:domainInfoRequest"/>
+ <wsdl:output message="wsdlns:domainInfoResponse"/>
+ <wsdl:fault name="failure" message="wsdlns:FailureMsg" />
+ </wsdl:operation>
+
+ <wsdl:operation name="dedicatedGetServiceMonitoringItem">
+ <wsdl:input message="wsdlns:dedicatedGetServiceMonitoringItemRequest"/>
+ <wsdl:output message="wsdlns:dedicatedGetServiceMonitoringItemResponse"/>
+ <wsdl:fault name="failure" message="wsdlns:FailureMsg" />
+ </wsdl:operation>
+
+ <wsdl:operation name="telephonyNicGetSipDomain">
+ <wsdl:input message="wsdlns:telephonyNicGetSipDomainRequest"/>
+ <wsdl:output message="wsdlns:telephonyNicGetSipDomainResponse"/>
+ <wsdl:fault name="failure" message="wsdlns:FailureMsg" />
+ </wsdl:operation>
+
+ <wsdl:operation name="telephonyGetClosureEventsAsICS">
+ <wsdl:input message="wsdlns:telephonyGetClosureEventsAsICSRequest"/>
+ <wsdl:output message="wsdlns:telephonyGetClosureEventsAsICSResponse"/>
+ <wsdl:fault name="failure" message="wsdlns:FailureMsg" />
+ </wsdl:operation>
+
+ <wsdl:operation name="telephonySmsUserCreditLeft">
+ <wsdl:input message="wsdlns:telephonySmsUserCreditLeftRequest"/>
+ <wsdl:output message="wsdlns:telephonySmsUserCreditLeftResponse"/>
+ <wsdl:fault name="failure" message="wsdlns:FailureMsg" />
+ </wsdl:operation>
+
+ <wsdl:operation name="telephonyPortabilityOrder">
+ <wsdl:input message="wsdlns:telephonyPortabilityOrderRequest"/>
+ <wsdl:output message="wsdlns:telephonyPortabilityOrderResponse"/>
+ <wsdl:fault name="failure" message="wsdlns:FailureMsg" />
+ </wsdl:operation>
+
+ <wsdl:operation name="passwordSoapi">
+ <wsdl:input message="wsdlns:passwordSoapiRequest"/>
+ <wsdl:output message="wsdlns:passwordSoapiResponse"/>
+ <wsdl:fault name="failure" message="wsdlns:FailureMsg" />
+ </wsdl:operation>
+
+ <wsdl:operation name="nicCreate">
+ <wsdl:input message="wsdlns:nicCreateRequest"/>
+ <wsdl:output message="wsdlns:nicCreateResponse"/>
+ <wsdl:fault name="failure" message="wsdlns:FailureMsg" />
+ </wsdl:operation>
+
+ <wsdl:operation name="cmsRemove">
+ <wsdl:input message="wsdlns:cmsRemoveRequest"/>
+ <wsdl:output message="wsdlns:cmsRemoveResponse"/>
+ <wsdl:fault name="failure" message="wsdlns:FailureMsg" />
+ </wsdl:operation>
+
+ <wsdl:operation name="telephonyVoicemailMailboxDelete">
+ <wsdl:input message="wsdlns:telephonyVoicemailMailboxDeleteRequest"/>
+ <wsdl:output message="wsdlns:telephonyVoicemailMailboxDeleteResponse"/>
+ <wsdl:fault name="failure" message="wsdlns:FailureMsg" />
+ </wsdl:operation>
+
+ <wsdl:operation name="sqlpriveMysqlDatabaseImportFromHost">
+ <wsdl:input message="wsdlns:sqlpriveMysqlDatabaseImportFromHostRequest"/>
+ <wsdl:output message="wsdlns:sqlpriveMysqlDatabaseImportFromHostResponse"/>
+ <wsdl:fault name="failure" message="wsdlns:FailureMsg" />
+ </wsdl:operation>
+
+ <wsdl:operation name="billingInvoiceInfo">
+ <wsdl:input message="wsdlns:billingInvoiceInfoRequest"/>
+ <wsdl:output message="wsdlns:billingInvoiceInfoResponse"/>
+ <wsdl:fault name="failure" message="wsdlns:FailureMsg" />
+ </wsdl:operation>
+
+ <wsdl:operation name="telephonyBillingAccountDel">
+ <wsdl:input message="wsdlns:telephonyBillingAccountDelRequest"/>
+ <wsdl:output message="wsdlns:telephonyBillingAccountDelResponse"/>
+ <wsdl:fault name="failure" message="wsdlns:FailureMsg" />
+ </wsdl:operation>
+
+ <wsdl:operation name="version">
+ <wsdl:input message="wsdlns:versionRequest"/>
+ <wsdl:output message="wsdlns:versionResponse"/>
+ <wsdl:fault name="failure" message="wsdlns:FailureMsg" />
+ </wsdl:operation>
+
+ <wsdl:operation name="orderAccountCredit">
+ <wsdl:input message="wsdlns:orderAccountCreditRequest"/>
+ <wsdl:output message="wsdlns:orderAccountCreditResponse"/>
+ <wsdl:fault name="failure" message="wsdlns:FailureMsg" />
+ </wsdl:operation>
+
+ <wsdl:operation name="telephonyNumberClean">
+ <wsdl:input message="wsdlns:telephonyNumberCleanRequest"/>
+ <wsdl:output message="wsdlns:telephonyNumberCleanResponse"/>
+ <wsdl:fault name="failure" message="wsdlns:FailureMsg" />
+ </wsdl:operation>
+
+ <wsdl:operation name="dedicatedReverseAdd">
+ <wsdl:input message="wsdlns:dedicatedReverseAddRequest"/>
+ <wsdl:output message="wsdlns:dedicatedReverseAddResponse"/>
+ <wsdl:fault name="failure" message="wsdlns:FailureMsg" />
+ </wsdl:operation>
+
+ <wsdl:operation name="dedicatedBackupGetFreePlanning">
+ <wsdl:input message="wsdlns:dedicatedBackupGetFreePlanningRequest"/>
+ <wsdl:output message="wsdlns:dedicatedBackupGetFreePlanningResponse"/>
+ <wsdl:fault name="failure" message="wsdlns:FailureMsg" />
+ </wsdl:operation>
+
+ <wsdl:operation name="dedicatedInstallAllowedDistributionGet">
+ <wsdl:input message="wsdlns:dedicatedInstallAllowedDistributionGetRequest"/>
+ <wsdl:output message="wsdlns:dedicatedInstallAllowedDistributionGetResponse"/>
+ <wsdl:fault name="failure" message="wsdlns:FailureMsg" />
+ </wsdl:operation>
+
+ <wsdl:operation name="subDomainModify">
+ <wsdl:input message="wsdlns:subDomainModifyRequest"/>
+ <wsdl:output message="wsdlns:subDomainModifyResponse"/>
+ <wsdl:fault name="failure" message="wsdlns:FailureMsg" />
+ </wsdl:operation>
+
+ <wsdl:operation name="telephonyPlugAndPhoneOperation">
+ <wsdl:input message="wsdlns:telephonyPlugAndPhoneOperationRequest"/>
+ <wsdl:output message="wsdlns:telephonyPlugAndPhoneOperationResponse"/>
+ <wsdl:fault name="failure" message="wsdlns:FailureMsg" />
+ </wsdl:operation>
+
+ <wsdl:operation name="nicInfo">
+ <wsdl:input message="wsdlns:nicInfoRequest"/>
+ <wsdl:output message="wsdlns:nicInfoResponse"/>
+ <wsdl:fault name="failure" message="wsdlns:FailureMsg" />
+ </wsdl:operation>
+
+ <wsdl:operation name="anonymousFtpInfo">
+ <wsdl:input message="wsdlns:anonymousFtpInfoRequest"/>
+ <wsdl:output message="wsdlns:anonymousFtpInfoResponse"/>
+ <wsdl:fault name="failure" message="wsdlns:FailureMsg" />
+ </wsdl:operation>
+
+ <wsdl:operation name="dedicatedCapabilitiesGet">
+ <wsdl:input message="wsdlns:dedicatedCapabilitiesGetRequest"/>
+ <wsdl:output message="wsdlns:dedicatedCapabilitiesGetResponse"/>
+ <wsdl:fault name="failure" message="wsdlns:FailureMsg" />
+ </wsdl:operation>
+
+ <wsdl:operation name="telephonyPhonebookOnSmsContactModify">
+ <wsdl:input message="wsdlns:telephonyPhonebookOnSmsContactModifyRequest"/>
+ <wsdl:output message="wsdlns:telephonyPhonebookOnSmsContactModifyResponse"/>
+ <wsdl:fault name="failure" message="wsdlns:FailureMsg" />
+ </wsdl:operation>
+
+ <wsdl:operation name="telephonyPhonebookOnSmsModify">
+ <wsdl:input message="wsdlns:telephonyPhonebookOnSmsModifyRequest"/>
+ <wsdl:output message="wsdlns:telephonyPhonebookOnSmsModifyResponse"/>
+ <wsdl:fault name="failure" message="wsdlns:FailureMsg" />
+ </wsdl:operation>
+
+ <wsdl:operation name="cmsList">
+ <wsdl:input message="wsdlns:cmsListRequest"/>
+ <wsdl:output message="wsdlns:cmsListResponse"/>
+ <wsdl:fault name="failure" message="wsdlns:FailureMsg" />
+ </wsdl:operation>
+
+ <wsdl:operation name="telephonySmsSetQuotaNotification">
+ <wsdl:input message="wsdlns:telephonySmsSetQuotaNotificationRequest"/>
+ <wsdl:output message="wsdlns:telephonySmsSetQuotaNotificationResponse"/>
+ <wsdl:fault name="failure" message="wsdlns:FailureMsg" />
+ </wsdl:operation>
+
+ <wsdl:operation name="dedicatedMonitoringSMSDel">
+ <wsdl:input message="wsdlns:dedicatedMonitoringSMSDelRequest"/>
+ <wsdl:output message="wsdlns:dedicatedMonitoringSMSDelResponse"/>
+ <wsdl:fault name="failure" message="wsdlns:FailureMsg" />
+ </wsdl:operation>
+
+ <wsdl:operation name="telephonySmsUserList">
+ <wsdl:input message="wsdlns:telephonySmsUserListRequest"/>
+ <wsdl:output message="wsdlns:telephonySmsUserListResponse"/>
+ <wsdl:fault name="failure" message="wsdlns:FailureMsg" />
+ </wsdl:operation>
+
+ <wsdl:operation name="ripeDeleteOrganisation">
+ <wsdl:input message="wsdlns:ripeDeleteOrganisationRequest"/>
+ <wsdl:output message="wsdlns:ripeDeleteOrganisationResponse"/>
+ <wsdl:fault name="failure" message="wsdlns:FailureMsg" />
+ </wsdl:operation>
+
+ <wsdl:operation name="logsAccessList">
+ <wsdl:input message="wsdlns:logsAccessListRequest"/>
+ <wsdl:output message="wsdlns:logsAccessListResponse"/>
+ <wsdl:fault name="failure" message="wsdlns:FailureMsg" />
+ </wsdl:operation>
+
+ <wsdl:operation name="telephonyHuntingInfo">
+ <wsdl:input message="wsdlns:telephonyHuntingInfoRequest"/>
+ <wsdl:output message="wsdlns:telephonyHuntingInfoResponse"/>
+ <wsdl:fault name="failure" message="wsdlns:FailureMsg" />
+ </wsdl:operation>
+
+ <wsdl:operation name="dedicatedMonitoringAdd">
+ <wsdl:input message="wsdlns:dedicatedMonitoringAddRequest"/>
+ <wsdl:output message="wsdlns:dedicatedMonitoringAddResponse"/>
+ <wsdl:fault name="failure" message="wsdlns:FailureMsg" />
+ </wsdl:operation>
+
+ <wsdl:operation name="telephonyPhonebookContactList">
+ <wsdl:input message="wsdlns:telephonyPhonebookContactListRequest"/>
+ <wsdl:output message="wsdlns:telephonyPhonebookContactListResponse"/>
+ <wsdl:fault name="failure" message="wsdlns:FailureMsg" />
+ </wsdl:operation>
+
+ <wsdl:operation name="resellerDomainTransferASIA">
+ <wsdl:input message="wsdlns:resellerDomainTransferASIARequest"/>
+ <wsdl:output message="wsdlns:resellerDomainTransferASIAResponse"/>
+ <wsdl:fault name="failure" message="wsdlns:FailureMsg" />
+ </wsdl:operation>
+
+ <wsdl:operation name="telephonySmsUserPassword">
+ <wsdl:input message="wsdlns:telephonySmsUserPasswordRequest"/>
+ <wsdl:output message="wsdlns:telephonySmsUserPasswordResponse"/>
+ <wsdl:fault name="failure" message="wsdlns:FailureMsg" />
+ </wsdl:operation>
+
+ <wsdl:operation name="domainHostList">
+ <wsdl:input message="wsdlns:domainHostListRequest"/>
+ <wsdl:output message="wsdlns:domainHostListResponse"/>
+ <wsdl:fault name="failure" message="wsdlns:FailureMsg" />
+ </wsdl:operation>
+
+ <wsdl:operation name="hostingChangeMainDomain">
+ <wsdl:input message="wsdlns:hostingChangeMainDomainRequest"/>
+ <wsdl:output message="wsdlns:hostingChangeMainDomainResponse"/>
+ <wsdl:fault name="failure" message="wsdlns:FailureMsg" />
+ </wsdl:operation>
+
+ <wsdl:operation name="telephonyLineGetOfferPrices">
+ <wsdl:input message="wsdlns:telephonyLineGetOfferPricesRequest"/>
+ <wsdl:output message="wsdlns:telephonyLineGetOfferPricesResponse"/>
+ <wsdl:fault name="failure" message="wsdlns:FailureMsg" />
+ </wsdl:operation>
+
+ <wsdl:operation name="telephonySmsGetQuotaNotification">
+ <wsdl:input message="wsdlns:telephonySmsGetQuotaNotificationRequest"/>
+ <wsdl:output message="wsdlns:telephonySmsGetQuotaNotificationResponse"/>
+ <wsdl:fault name="failure" message="wsdlns:FailureMsg" />
+ </wsdl:operation>
+
+ <wsdl:operation name="telephonyHuntingModificationMode">
+ <wsdl:input message="wsdlns:telephonyHuntingModificationModeRequest"/>
+ <wsdl:output message="wsdlns:telephonyHuntingModificationModeResponse"/>
+ <wsdl:fault name="failure" message="wsdlns:FailureMsg" />
+ </wsdl:operation>
+
+ <wsdl:operation name="telephonyScreenListBlackWhiteChoice">
+ <wsdl:input message="wsdlns:telephonyScreenListBlackWhiteChoiceRequest"/>
+ <wsdl:output message="wsdlns:telephonyScreenListBlackWhiteChoiceResponse"/>
+ <wsdl:fault name="failure" message="wsdlns:FailureMsg" />
+ </wsdl:operation>
+
+ <wsdl:operation name="telephonySmsDeleteCsvAttachment">
+ <wsdl:input message="wsdlns:telephonySmsDeleteCsvAttachmentRequest"/>
+ <wsdl:output message="wsdlns:telephonySmsDeleteCsvAttachmentResponse"/>
+ <wsdl:fault name="failure" message="wsdlns:FailureMsg" />
+ </wsdl:operation>
+
+ <wsdl:operation name="telephonyNumberZoneAndPrefixList">
+ <wsdl:input message="wsdlns:telephonyNumberZoneAndPrefixListRequest"/>
+ <wsdl:output message="wsdlns:telephonyNumberZoneAndPrefixListResponse"/>
+ <wsdl:fault name="failure" message="wsdlns:FailureMsg" />
+ </wsdl:operation>
+
+ <wsdl:operation name="serviceGroupDelete">
+ <wsdl:input message="wsdlns:serviceGroupDeleteRequest"/>
+ <wsdl:output message="wsdlns:serviceGroupDeleteResponse"/>
+ <wsdl:fault name="failure" message="wsdlns:FailureMsg" />
+ </wsdl:operation>
+
+ <wsdl:operation name="dedicatedOperationList">
+ <wsdl:input message="wsdlns:dedicatedOperationListRequest"/>
+ <wsdl:output message="wsdlns:dedicatedOperationListResponse"/>
+ <wsdl:fault name="failure" message="wsdlns:FailureMsg" />
+ </wsdl:operation>
+
+ <wsdl:operation name="telephonyLineSetSipDomain">
+ <wsdl:input message="wsdlns:telephonyLineSetSipDomainRequest"/>
+ <wsdl:output message="wsdlns:telephonyLineSetSipDomainResponse"/>
+ <wsdl:fault name="failure" message="wsdlns:FailureMsg" />
+ </wsdl:operation>
+
+ <wsdl:operation name="telephonyTrunkExternalDisplayedNumberDel">
+ <wsdl:input message="wsdlns:telephonyTrunkExternalDisplayedNumberDelRequest"/>
+ <wsdl:output message="wsdlns:telephonyTrunkExternalDisplayedNumberDelResponse"/>
+ <wsdl:fault name="failure" message="wsdlns:FailureMsg" />
+ </wsdl:operation>
+
+ <wsdl:operation name="mailingListModeratorAdd">
+ <wsdl:input message="wsdlns:mailingListModeratorAddRequest"/>
+ <wsdl:output message="wsdlns:mailingListModeratorAddResponse"/>
+ <wsdl:fault name="failure" message="wsdlns:FailureMsg" />
+ </wsdl:operation>
+
+ <wsdl:operation name="telephonyPhonebookOnGroupContactList">
+ <wsdl:input message="wsdlns:telephonyPhonebookOnGroupContactListRequest"/>
+ <wsdl:output message="wsdlns:telephonyPhonebookOnGroupContactListResponse"/>
+ <wsdl:fault name="failure" message="wsdlns:FailureMsg" />
+ </wsdl:operation>
+
+ <wsdl:operation name="telephonySmsplusServiceReversableTicketsSummary">
+ <wsdl:input message="wsdlns:telephonySmsplusServiceReversableTicketsSummaryRequest"/>
+ <wsdl:output message="wsdlns:telephonySmsplusServiceReversableTicketsSummaryResponse"/>
+ <wsdl:fault name="failure" message="wsdlns:FailureMsg" />
+ </wsdl:operation>
+
+ <wsdl:operation name="anonymousFtpActivate">
+ <wsdl:input message="wsdlns:anonymousFtpActivateRequest"/>
+ <wsdl:output message="wsdlns:anonymousFtpActivateResponse"/>
+ <wsdl:fault name="failure" message="wsdlns:FailureMsg" />
+ </wsdl:operation>
+
+ <wsdl:operation name="telephonyDeleteLine">
+ <wsdl:input message="wsdlns:telephonyDeleteLineRequest"/>
+ <wsdl:output message="wsdlns:telephonyDeleteLineResponse"/>
+ <wsdl:fault name="failure" message="wsdlns:FailureMsg" />
+ </wsdl:operation>
+
+ <wsdl:operation name="nicModifyInfosIT">
+ <wsdl:input message="wsdlns:nicModifyInfosITRequest"/>
+ <wsdl:output message="wsdlns:nicModifyInfosITResponse"/>
+ <wsdl:fault name="failure" message="wsdlns:FailureMsg" />
+ </wsdl:operation>
+
+ <wsdl:operation name="telephonySetTimeZoneNumber">
+ <wsdl:input message="wsdlns:telephonySetTimeZoneNumberRequest"/>
+ <wsdl:output message="wsdlns:telephonySetTimeZoneNumberResponse"/>
+ <wsdl:fault name="failure" message="wsdlns:FailureMsg" />
+ </wsdl:operation>
+
+ <wsdl:operation name="ortDomainAdd">
+ <wsdl:input message="wsdlns:ortDomainAddRequest"/>
+ <wsdl:output message="wsdlns:ortDomainAddResponse"/>
+ <wsdl:fault name="failure" message="wsdlns:FailureMsg" />
+ </wsdl:operation>
+
+ <wsdl:operation name="nicPublicInfo">
+ <wsdl:input message="wsdlns:nicPublicInfoRequest"/>
+ <wsdl:output message="wsdlns:nicPublicInfoResponse"/>
+ <wsdl:fault name="failure" message="wsdlns:FailureMsg" />
+ </wsdl:operation>
+
+ <wsdl:operation name="sqlpriveAlertSet">
+ <wsdl:input message="wsdlns:sqlpriveAlertSetRequest"/>
+ <wsdl:output message="wsdlns:sqlpriveAlertSetResponse"/>
+ <wsdl:fault name="failure" message="wsdlns:FailureMsg" />
+ </wsdl:operation>
+
+ <wsdl:operation name="telephonyNicSetIpRestriction">
+ <wsdl:input message="wsdlns:telephonyNicSetIpRestrictionRequest"/>
+ <wsdl:output message="wsdlns:telephonyNicSetIpRestrictionResponse"/>
+ <wsdl:fault name="failure" message="wsdlns:FailureMsg" />
+ </wsdl:operation>
+
+ <wsdl:operation name="dedicatedBackupIncludeDel">
+ <wsdl:input message="wsdlns:dedicatedBackupIncludeDelRequest"/>
+ <wsdl:output message="wsdlns:dedicatedBackupIncludeDelResponse"/>
+ <wsdl:fault name="failure" message="wsdlns:FailureMsg" />
+ </wsdl:operation>
+
+ <wsdl:operation name="dedicatedBandwidthSwitching">
+ <wsdl:input message="wsdlns:dedicatedBandwidthSwitchingRequest"/>
+ <wsdl:output message="wsdlns:dedicatedBandwidthSwitchingResponse"/>
+ <wsdl:fault name="failure" message="wsdlns:FailureMsg" />
+ </wsdl:operation>
+
+ <wsdl:operation name="dedicatedIpLoadBalancingDel">
+ <wsdl:input message="wsdlns:dedicatedIpLoadBalancingDelRequest"/>
+ <wsdl:output message="wsdlns:dedicatedIpLoadBalancingDelResponse"/>
+ <wsdl:fault name="failure" message="wsdlns:FailureMsg" />
+ </wsdl:operation>
+
+ <wsdl:operation name="sqlpriveMysqlOvhMyAdmin">
+ <wsdl:input message="wsdlns:sqlpriveMysqlOvhMyAdminRequest"/>
+ <wsdl:output message="wsdlns:sqlpriveMysqlOvhMyAdminResponse"/>
+ <wsdl:fault name="failure" message="wsdlns:FailureMsg" />
+ </wsdl:operation>
+
+ <wsdl:operation name="ftpInfo">
+ <wsdl:input message="wsdlns:ftpInfoRequest"/>
+ <wsdl:output message="wsdlns:ftpInfoResponse"/>
+ <wsdl:fault name="failure" message="wsdlns:FailureMsg" />
+ </wsdl:operation>
+
+ <wsdl:operation name="telephonyPortabilityStatus">
+ <wsdl:input message="wsdlns:telephonyPortabilityStatusRequest"/>
+ <wsdl:output message="wsdlns:telephonyPortabilityStatusResponse"/>
+ <wsdl:fault name="failure" message="wsdlns:FailureMsg" />
+ </wsdl:operation>
+
+ <wsdl:operation name="hostingList">
+ <wsdl:input message="wsdlns:hostingListRequest"/>
+ <wsdl:output message="wsdlns:hostingListResponse"/>
+ <wsdl:fault name="failure" message="wsdlns:FailureMsg" />
+ </wsdl:operation>
+
+ <wsdl:operation name="orderEmailMxPlan">
+ <wsdl:input message="wsdlns:orderEmailMxPlanRequest"/>
+ <wsdl:output message="wsdlns:orderEmailMxPlanResponse"/>
+ <wsdl:fault name="failure" message="wsdlns:FailureMsg" />
+ </wsdl:operation>
+
+ <wsdl:operation name="dedicatedInstallationTemplateUse">
+ <wsdl:input message="wsdlns:dedicatedInstallationTemplateUseRequest"/>
+ <wsdl:output message="wsdlns:dedicatedInstallationTemplateUseResponse"/>
+ <wsdl:fault name="failure" message="wsdlns:FailureMsg" />
+ </wsdl:operation>
+
+ <wsdl:operation name="mailingListSubscriberList">
+ <wsdl:input message="wsdlns:mailingListSubscriberListRequest"/>
+ <wsdl:output message="wsdlns:mailingListSubscriberListResponse"/>
+ <wsdl:fault name="failure" message="wsdlns:FailureMsg" />
+ </wsdl:operation>
+
+ <wsdl:operation name="mailingListSubscriberDel">
+ <wsdl:input message="wsdlns:mailingListSubscriberDelRequest"/>
+ <wsdl:output message="wsdlns:mailingListSubscriberDelResponse"/>
+ <wsdl:fault name="failure" message="wsdlns:FailureMsg" />
+ </wsdl:operation>
+
+ <wsdl:operation name="domainLockStatus">
+ <wsdl:input message="wsdlns:domainLockStatusRequest"/>
+ <wsdl:output message="wsdlns:domainLockStatusResponse"/>
+ <wsdl:fault name="failure" message="wsdlns:FailureMsg" />
+ </wsdl:operation>
+
+ <wsdl:operation name="prepaidDomainRenew">
+ <wsdl:input message="wsdlns:prepaidDomainRenewRequest"/>
+ <wsdl:output message="wsdlns:prepaidDomainRenewResponse"/>
+ <wsdl:fault name="failure" message="wsdlns:FailureMsg" />
+ </wsdl:operation>
+
+ <wsdl:operation name="orderEmailMxLarge">
+ <wsdl:input message="wsdlns:orderEmailMxLargeRequest"/>
+ <wsdl:output message="wsdlns:orderEmailMxLargeResponse"/>
+ <wsdl:fault name="failure" message="wsdlns:FailureMsg" />
+ </wsdl:operation>
+
+ <wsdl:operation name="emailFilterActive">
+ <wsdl:input message="wsdlns:emailFilterActiveRequest"/>
+ <wsdl:output message="wsdlns:emailFilterActiveResponse"/>
+ <wsdl:fault name="failure" message="wsdlns:FailureMsg" />
+ </wsdl:operation>
+
+ <wsdl:operation name="telephonySecurityDepositInfo">
+ <wsdl:input message="wsdlns:telephonySecurityDepositInfoRequest"/>
+ <wsdl:output message="wsdlns:telephonySecurityDepositInfoResponse"/>
+ <wsdl:fault name="failure" message="wsdlns:FailureMsg" />
+ </wsdl:operation>
+
+ <wsdl:operation name="databaseList">
+ <wsdl:input message="wsdlns:databaseListRequest"/>
+ <wsdl:output message="wsdlns:databaseListResponse"/>
+ <wsdl:fault name="failure" message="wsdlns:FailureMsg" />
+ </wsdl:operation>
+
+ <wsdl:operation name="dedicatedIpLoadBalancingServerAdd">
+ <wsdl:input message="wsdlns:dedicatedIpLoadBalancingServerAddRequest"/>
+ <wsdl:output message="wsdlns:dedicatedIpLoadBalancingServerAddResponse"/>
+ <wsdl:fault name="failure" message="wsdlns:FailureMsg" />
+ </wsdl:operation>
+
+ <wsdl:operation name="resellerDomainCreateCAT">
+ <wsdl:input message="wsdlns:resellerDomainCreateCATRequest"/>
+ <wsdl:output message="wsdlns:resellerDomainCreateCATResponse"/>
+ <wsdl:fault name="failure" message="wsdlns:FailureMsg" />
+ </wsdl:operation>
+
+ <wsdl:operation name="telephonySmsListCsvAttachment">
+ <wsdl:input message="wsdlns:telephonySmsListCsvAttachmentRequest"/>
+ <wsdl:output message="wsdlns:telephonySmsListCsvAttachmentResponse"/>
+ <wsdl:fault name="failure" message="wsdlns:FailureMsg" />
+ </wsdl:operation>
+
+ <wsdl:operation name="ftpChangePassword">
+ <wsdl:input message="wsdlns:ftpChangePasswordRequest"/>
+ <wsdl:output message="wsdlns:ftpChangePasswordResponse"/>
+ <wsdl:fault name="failure" message="wsdlns:FailureMsg" />
+ </wsdl:operation>
+
+ <wsdl:operation name="orderDedicatedFailover">
+ <wsdl:input message="wsdlns:orderDedicatedFailoverRequest"/>
+ <wsdl:output message="wsdlns:orderDedicatedFailoverResponse"/>
+ <wsdl:fault name="failure" message="wsdlns:FailureMsg" />
+ </wsdl:operation>
+
+ <wsdl:operation name="rpsGetIoStats">
+ <wsdl:input message="wsdlns:rpsGetIoStatsRequest"/>
+ <wsdl:output message="wsdlns:rpsGetIoStatsResponse"/>
+ <wsdl:fault name="failure" message="wsdlns:FailureMsg" />
+ </wsdl:operation>
+
+ <wsdl:operation name="dedicatedRipeUpdateOrganisation">
+ <wsdl:input message="wsdlns:dedicatedRipeUpdateOrganisationRequest"/>
+ <wsdl:output message="wsdlns:dedicatedRipeUpdateOrganisationResponse"/>
+ <wsdl:fault name="failure" message="wsdlns:FailureMsg" />
+ </wsdl:operation>
+
+ <wsdl:operation name="cmsRenewAdminPassword">
+ <wsdl:input message="wsdlns:cmsRenewAdminPasswordRequest"/>
+ <wsdl:output message="wsdlns:cmsRenewAdminPasswordResponse"/>
+ <wsdl:fault name="failure" message="wsdlns:FailureMsg" />
+ </wsdl:operation>
+
+ <wsdl:operation name="dedicatedNetbootModifyById">
+ <wsdl:input message="wsdlns:dedicatedNetbootModifyByIdRequest"/>
+ <wsdl:output message="wsdlns:dedicatedNetbootModifyByIdResponse"/>
+ <wsdl:fault name="failure" message="wsdlns:FailureMsg" />
+ </wsdl:operation>
+
+ <wsdl:operation name="telephonySmsCancelSending">
+ <wsdl:input message="wsdlns:telephonySmsCancelSendingRequest"/>
+ <wsdl:output message="wsdlns:telephonySmsCancelSendingResponse"/>
+ <wsdl:fault name="failure" message="wsdlns:FailureMsg" />
+ </wsdl:operation>
+
+ <wsdl:operation name="telephonyScreenListInfo">
+ <wsdl:input message="wsdlns:telephonyScreenListInfoRequest"/>
+ <wsdl:output message="wsdlns:telephonyScreenListInfoResponse"/>
+ <wsdl:fault name="failure" message="wsdlns:FailureMsg" />
+ </wsdl:operation>
+
+ <wsdl:operation name="telephonyLineLogsOnGroup">
+ <wsdl:input message="wsdlns:telephonyLineLogsOnGroupRequest"/>
+ <wsdl:output message="wsdlns:telephonyLineLogsOnGroupResponse"/>
+ <wsdl:fault name="failure" message="wsdlns:FailureMsg" />
+ </wsdl:operation>
+
+ <wsdl:operation name="telephonyLineGetMgcpIpRestriction">
+ <wsdl:input message="wsdlns:telephonyLineGetMgcpIpRestrictionRequest"/>
+ <wsdl:output message="wsdlns:telephonyLineGetMgcpIpRestrictionResponse"/>
+ <wsdl:fault name="failure" message="wsdlns:FailureMsg" />
+ </wsdl:operation>
+
+ <wsdl:operation name="databaseDelete">
+ <wsdl:input message="wsdlns:databaseDeleteRequest"/>
+ <wsdl:output message="wsdlns:databaseDeleteResponse"/>
+ <wsdl:fault name="failure" message="wsdlns:FailureMsg" />
+ </wsdl:operation>
+
+ <wsdl:operation name="resellerDomainCreateASIA">
+ <wsdl:input message="wsdlns:resellerDomainCreateASIARequest"/>
+ <wsdl:output message="wsdlns:resellerDomainCreateASIAResponse"/>
+ <wsdl:fault name="failure" message="wsdlns:FailureMsg" />
+ </wsdl:operation>
+
+ <wsdl:operation name="telephonyLineDetails">
+ <wsdl:input message="wsdlns:telephonyLineDetailsRequest"/>
+ <wsdl:output message="wsdlns:telephonyLineDetailsResponse"/>
+ <wsdl:fault name="failure" message="wsdlns:FailureMsg" />
+ </wsdl:operation>
+
+ <wsdl:operation name="telephonyPhonebookContactDel">
+ <wsdl:input message="wsdlns:telephonyPhonebookContactDelRequest"/>
+ <wsdl:output message="wsdlns:telephonyPhonebookContactDelResponse"/>
+ <wsdl:fault name="failure" message="wsdlns:FailureMsg" />
+ </wsdl:operation>
+
+ <wsdl:operation name="ticketCreate">
+ <wsdl:input message="wsdlns:ticketCreateRequest"/>
+ <wsdl:output message="wsdlns:ticketCreateResponse"/>
+ <wsdl:fault name="failure" message="wsdlns:FailureMsg" />
+ </wsdl:operation>
+
+ <wsdl:operation name="notepadAdd">
+ <wsdl:input message="wsdlns:notepadAddRequest"/>
+ <wsdl:output message="wsdlns:notepadAddResponse"/>
+ <wsdl:fault name="failure" message="wsdlns:FailureMsg" />
+ </wsdl:operation>
+
+ <wsdl:operation name="subDomainAdd">
+ <wsdl:input message="wsdlns:subDomainAddRequest"/>
+ <wsdl:output message="wsdlns:subDomainAddResponse"/>
+ <wsdl:fault name="failure" message="wsdlns:FailureMsg" />
+ </wsdl:operation>
+
+ <wsdl:operation name="dedicatedBackupGetDate">
+ <wsdl:input message="wsdlns:dedicatedBackupGetDateRequest"/>
+ <wsdl:output message="wsdlns:dedicatedBackupGetDateResponse"/>
+ <wsdl:fault name="failure" message="wsdlns:FailureMsg" />
+ </wsdl:operation>
+
+ <wsdl:operation name="dedicatedSecondaryDNSDel">
+ <wsdl:input message="wsdlns:dedicatedSecondaryDNSDelRequest"/>
+ <wsdl:output message="wsdlns:dedicatedSecondaryDNSDelResponse"/>
+ <wsdl:fault name="failure" message="wsdlns:FailureMsg" />
+ </wsdl:operation>
+
+ <wsdl:operation name="domainLock">
+ <wsdl:input message="wsdlns:domainLockRequest"/>
+ <wsdl:output message="wsdlns:domainLockResponse"/>
+ <wsdl:fault name="failure" message="wsdlns:FailureMsg" />
+ </wsdl:operation>
+
+ <wsdl:operation name="telephonyRatesListCsv">
+ <wsdl:input message="wsdlns:telephonyRatesListCsvRequest"/>
+ <wsdl:output message="wsdlns:telephonyRatesListCsvResponse"/>
+ <wsdl:fault name="failure" message="wsdlns:FailureMsg" />
+ </wsdl:operation>
+
+ <wsdl:operation name="emailFilterList">
+ <wsdl:input message="wsdlns:emailFilterListRequest"/>
+ <wsdl:output message="wsdlns:emailFilterListResponse"/>
+ <wsdl:fault name="failure" message="wsdlns:FailureMsg" />
+ </wsdl:operation>
+
+ <wsdl:operation name="zoneEntryAdd">
+ <wsdl:input message="wsdlns:zoneEntryAddRequest"/>
+ <wsdl:output message="wsdlns:zoneEntryAddResponse"/>
+ <wsdl:fault name="failure" message="wsdlns:FailureMsg" />
+ </wsdl:operation>
+
+ <wsdl:operation name="telephonyConferenceGetInfos">
+ <wsdl:input message="wsdlns:telephonyConferenceGetInfosRequest"/>
+ <wsdl:output message="wsdlns:telephonyConferenceGetInfosResponse"/>
+ <wsdl:fault name="failure" message="wsdlns:FailureMsg" />
+ </wsdl:operation>
+
+ <wsdl:operation name="dedicatedSecondaryDNSGetAll">
+ <wsdl:input message="wsdlns:dedicatedSecondaryDNSGetAllRequest"/>
+ <wsdl:output message="wsdlns:dedicatedSecondaryDNSGetAllResponse"/>
+ <wsdl:fault name="failure" message="wsdlns:FailureMsg" />
+ </wsdl:operation>
+
+ <wsdl:operation name="infrastructureIpListGet">
+ <wsdl:input message="wsdlns:infrastructureIpListGetRequest"/>
+ <wsdl:output message="wsdlns:infrastructureIpListGetResponse"/>
+ <wsdl:fault name="failure" message="wsdlns:FailureMsg" />
+ </wsdl:operation>
+
+ <wsdl:operation name="mailingListInfo">
+ <wsdl:input message="wsdlns:mailingListInfoRequest"/>
+ <wsdl:output message="wsdlns:mailingListInfoResponse"/>
+ <wsdl:fault name="failure" message="wsdlns:FailureMsg" />
+ </wsdl:operation>
+
+ <wsdl:operation name="serviceList">
+ <wsdl:input message="wsdlns:serviceListRequest"/>
+ <wsdl:output message="wsdlns:serviceListResponse"/>
+ <wsdl:fault name="failure" message="wsdlns:FailureMsg" />
+ </wsdl:operation>
+
+ <wsdl:operation name="serviceGroupSetComment">
+ <wsdl:input message="wsdlns:serviceGroupSetCommentRequest"/>
+ <wsdl:output message="wsdlns:serviceGroupSetCommentResponse"/>
+ <wsdl:fault name="failure" message="wsdlns:FailureMsg" />
+ </wsdl:operation>
+
+ <wsdl:operation name="telephonyPhonebookOnSmsContactList">
+ <wsdl:input message="wsdlns:telephonyPhonebookOnSmsContactListRequest"/>
+ <wsdl:output message="wsdlns:telephonyPhonebookOnSmsContactListResponse"/>
+ <wsdl:fault name="failure" message="wsdlns:FailureMsg" />
+ </wsdl:operation>
+
+ <wsdl:operation name="nicCreateIT">
+ <wsdl:input message="wsdlns:nicCreateITRequest"/>
+ <wsdl:output message="wsdlns:nicCreateITResponse"/>
+ <wsdl:fault name="failure" message="wsdlns:FailureMsg" />
+ </wsdl:operation>
+
+ <wsdl:operation name="telephonyPhonebookOnSmsContactAdd">
+ <wsdl:input message="wsdlns:telephonyPhonebookOnSmsContactAddRequest"/>
+ <wsdl:output message="wsdlns:telephonyPhonebookOnSmsContactAddResponse"/>
+ <wsdl:fault name="failure" message="wsdlns:FailureMsg" />
+ </wsdl:operation>
+
+ <wsdl:operation name="dedicatedMonitoringNotificationDel">
+ <wsdl:input message="wsdlns:dedicatedMonitoringNotificationDelRequest"/>
+ <wsdl:output message="wsdlns:dedicatedMonitoringNotificationDelResponse"/>
+ <wsdl:fault name="failure" message="wsdlns:FailureMsg" />
+ </wsdl:operation>
+
+ <wsdl:operation name="domainOperationCancel">
+ <wsdl:input message="wsdlns:domainOperationCancelRequest"/>
+ <wsdl:output message="wsdlns:domainOperationCancelResponse"/>
+ <wsdl:fault name="failure" message="wsdlns:FailureMsg" />
+ </wsdl:operation>
+
+ <wsdl:operation name="telephonyFMHuntingModificationAnonymousCallRejection">
+ <wsdl:input message="wsdlns:telephonyFMHuntingModificationAnonymousCallRejectionRequest"/>
+ <wsdl:output message="wsdlns:telephonyFMHuntingModificationAnonymousCallRejectionResponse"/>
+ <wsdl:fault name="failure" message="wsdlns:FailureMsg" />
+ </wsdl:operation>
+
+ <wsdl:operation name="dedicatedBandwidthManagementGet">
+ <wsdl:input message="wsdlns:dedicatedBandwidthManagementGetRequest"/>
+ <wsdl:output message="wsdlns:dedicatedBandwidthManagementGetResponse"/>
+ <wsdl:fault name="failure" message="wsdlns:FailureMsg" />
+ </wsdl:operation>
+
+ <wsdl:operation name="telephonyDdiModify">
+ <wsdl:input message="wsdlns:telephonyDdiModifyRequest"/>
+ <wsdl:output message="wsdlns:telephonyDdiModifyResponse"/>
+ <wsdl:fault name="failure" message="wsdlns:FailureMsg" />
+ </wsdl:operation>
+
+ <wsdl:operation name="dedicatedMonitoringStatusUpdate">
+ <wsdl:input message="wsdlns:dedicatedMonitoringStatusUpdateRequest"/>
+ <wsdl:output message="wsdlns:dedicatedMonitoringStatusUpdateResponse"/>
+ <wsdl:fault name="failure" message="wsdlns:FailureMsg" />
+ </wsdl:operation>
+
+ <wsdl:operation name="dedicatedIPForUDPMoveGetStatus">
+ <wsdl:input message="wsdlns:dedicatedIPForUDPMoveGetStatusRequest"/>
+ <wsdl:output message="wsdlns:dedicatedIPForUDPMoveGetStatusResponse"/>
+ <wsdl:fault name="failure" message="wsdlns:FailureMsg" />
+ </wsdl:operation>
+
+ <wsdl:operation name="telephonyRedirectInfo">
+ <wsdl:input message="wsdlns:telephonyRedirectInfoRequest"/>
+ <wsdl:output message="wsdlns:telephonyRedirectInfoResponse"/>
+ <wsdl:fault name="failure" message="wsdlns:FailureMsg" />
+ </wsdl:operation>
+
+ <wsdl:operation name="anonymousFtpChangePassword">
+ <wsdl:input message="wsdlns:anonymousFtpChangePasswordRequest"/>
+ <wsdl:output message="wsdlns:anonymousFtpChangePasswordResponse"/>
+ <wsdl:fault name="failure" message="wsdlns:FailureMsg" />
+ </wsdl:operation>
+
+ <wsdl:operation name="telephonySmsSend">
+ <wsdl:input message="wsdlns:telephonySmsSendRequest"/>
+ <wsdl:output message="wsdlns:telephonySmsSendResponse"/>
+ <wsdl:fault name="failure" message="wsdlns:FailureMsg" />
+ </wsdl:operation>
+
+ <wsdl:operation name="automatedMailLock">
+ <wsdl:input message="wsdlns:automatedMailLockRequest"/>
+ <wsdl:output message="wsdlns:automatedMailLockResponse"/>
+ <wsdl:fault name="failure" message="wsdlns:FailureMsg" />
+ </wsdl:operation>
+
+ <wsdl:operation name="dedicatedRipeDeleteOrganisation">
+ <wsdl:input message="wsdlns:dedicatedRipeDeleteOrganisationRequest"/>
+ <wsdl:output message="wsdlns:dedicatedRipeDeleteOrganisationResponse"/>
+ <wsdl:fault name="failure" message="wsdlns:FailureMsg" />
+ </wsdl:operation>
+
+ <wsdl:operation name="dedicatedFailoverRipeGetIp">
+ <wsdl:input message="wsdlns:dedicatedFailoverRipeGetIpRequest"/>
+ <wsdl:output message="wsdlns:dedicatedFailoverRipeGetIpResponse"/>
+ <wsdl:fault name="failure" message="wsdlns:FailureMsg" />
+ </wsdl:operation>
+
+ <wsdl:operation name="responderEmailModify">
+ <wsdl:input message="wsdlns:responderEmailModifyRequest"/>
+ <wsdl:output message="wsdlns:responderEmailModifyResponse"/>
+ <wsdl:fault name="failure" message="wsdlns:FailureMsg" />
+ </wsdl:operation>
+
+ <wsdl:operation name="dedicatedInstallBasic">
+ <wsdl:input message="wsdlns:dedicatedInstallBasicRequest"/>
+ <wsdl:output message="wsdlns:dedicatedInstallBasicResponse"/>
+ <wsdl:fault name="failure" message="wsdlns:FailureMsg" />
+ </wsdl:operation>
+
+ <wsdl:operation name="emailGetDomainMxFiltering">
+ <wsdl:input message="wsdlns:emailGetDomainMxFilteringRequest"/>
+ <wsdl:output message="wsdlns:emailGetDomainMxFilteringResponse"/>
+ <wsdl:fault name="failure" message="wsdlns:FailureMsg" />
+ </wsdl:operation>
+
+ <wsdl:operation name="managedServicesPartitionCreate">
+ <wsdl:input message="wsdlns:managedServicesPartitionCreateRequest"/>
+ <wsdl:output message="wsdlns:managedServicesPartitionCreateResponse"/>
+ <wsdl:fault name="failure" message="wsdlns:FailureMsg" />
+ </wsdl:operation>
+
+ <wsdl:operation name="telephonyLineGetSipDomain">
+ <wsdl:input message="wsdlns:telephonyLineGetSipDomainRequest"/>
+ <wsdl:output message="wsdlns:telephonyLineGetSipDomainResponse"/>
+ <wsdl:fault name="failure" message="wsdlns:FailureMsg" />
+ </wsdl:operation>
+
+ <wsdl:operation name="nicModifyEmail">
+ <wsdl:input message="wsdlns:nicModifyEmailRequest"/>
+ <wsdl:output message="wsdlns:nicModifyEmailResponse"/>
+ <wsdl:fault name="failure" message="wsdlns:FailureMsg" />
+ </wsdl:operation>
+
+ <wsdl:operation name="telephonyToneDelete">
+ <wsdl:input message="wsdlns:telephonyToneDeleteRequest"/>
+ <wsdl:output message="wsdlns:telephonyToneDeleteResponse"/>
+ <wsdl:fault name="failure" message="wsdlns:FailureMsg" />
+ </wsdl:operation>
+
+ <wsdl:operation name="telephonyLineSetMgcpIpRestriction">
+ <wsdl:input message="wsdlns:telephonyLineSetMgcpIpRestrictionRequest"/>
+ <wsdl:output message="wsdlns:telephonyLineSetMgcpIpRestrictionResponse"/>
+ <wsdl:fault name="failure" message="wsdlns:FailureMsg" />
+ </wsdl:operation>
+
+ <wsdl:operation name="dedicatedInstallReset">
+ <wsdl:input message="wsdlns:dedicatedInstallResetRequest"/>
+ <wsdl:output message="wsdlns:dedicatedInstallResetResponse"/>
+ <wsdl:fault name="failure" message="wsdlns:FailureMsg" />
+ </wsdl:operation>
+
+ <wsdl:operation name="dedicatedMonitoringServiceAddNotification">
+ <wsdl:input message="wsdlns:dedicatedMonitoringServiceAddNotificationRequest"/>
+ <wsdl:output message="wsdlns:dedicatedMonitoringServiceAddNotificationResponse"/>
+ <wsdl:fault name="failure" message="wsdlns:FailureMsg" />
+ </wsdl:operation>
+
+ <wsdl:operation name="orderDedicatedFailoverRipe">
+ <wsdl:input message="wsdlns:orderDedicatedFailoverRipeRequest"/>
+ <wsdl:output message="wsdlns:orderDedicatedFailoverRipeResponse"/>
+ <wsdl:fault name="failure" message="wsdlns:FailureMsg" />
+ </wsdl:operation>
+
+ <wsdl:operation name="telephonyPhonebookOnGroupContactModify">
+ <wsdl:input message="wsdlns:telephonyPhonebookOnGroupContactModifyRequest"/>
+ <wsdl:output message="wsdlns:telephonyPhonebookOnGroupContactModifyResponse"/>
+ <wsdl:fault name="failure" message="wsdlns:FailureMsg" />
+ </wsdl:operation>
+
+ <wsdl:operation name="serviceGroupRemoveService">
+ <wsdl:input message="wsdlns:serviceGroupRemoveServiceRequest"/>
+ <wsdl:output message="wsdlns:serviceGroupRemoveServiceResponse"/>
+ <wsdl:fault name="failure" message="wsdlns:FailureMsg" />
+ </wsdl:operation>
+
+ <wsdl:operation name="telephonyScreenListBlackWhiteChoiceModify">
+ <wsdl:input message="wsdlns:telephonyScreenListBlackWhiteChoiceModifyRequest"/>
+ <wsdl:output message="wsdlns:telephonyScreenListBlackWhiteChoiceModifyResponse"/>
+ <wsdl:fault name="failure" message="wsdlns:FailureMsg" />
+ </wsdl:operation>
+
+ <wsdl:operation name="telephonySmsplusServiceDetails">
+ <wsdl:input message="wsdlns:telephonySmsplusServiceDetailsRequest"/>
+ <wsdl:output message="wsdlns:telephonySmsplusServiceDetailsResponse"/>
+ <wsdl:fault name="failure" message="wsdlns:FailureMsg" />
+ </wsdl:operation>
+
+ <wsdl:operation name="dedicatedFilterIrcClientRuleDel">
+ <wsdl:input message="wsdlns:dedicatedFilterIrcClientRuleDelRequest"/>
+ <wsdl:output message="wsdlns:dedicatedFilterIrcClientRuleDelResponse"/>
+ <wsdl:fault name="failure" message="wsdlns:FailureMsg" />
+ </wsdl:operation>
+
+ <wsdl:operation name="domainHostAdd">
+ <wsdl:input message="wsdlns:domainHostAddRequest"/>
+ <wsdl:output message="wsdlns:domainHostAddResponse"/>
+ <wsdl:fault name="failure" message="wsdlns:FailureMsg" />
+ </wsdl:operation>
+
+ <wsdl:operation name="popModifyDescription">
+ <wsdl:input message="wsdlns:popModifyDescriptionRequest"/>
+ <wsdl:output message="wsdlns:popModifyDescriptionResponse"/>
+ <wsdl:fault name="failure" message="wsdlns:FailureMsg" />
+ </wsdl:operation>
+
+ <wsdl:operation name="telephonyAbbreviatedNumberOnGroupDel">
+ <wsdl:input message="wsdlns:telephonyAbbreviatedNumberOnGroupDelRequest"/>
+ <wsdl:output message="wsdlns:telephonyAbbreviatedNumberOnGroupDelResponse"/>
+ <wsdl:fault name="failure" message="wsdlns:FailureMsg" />
+ </wsdl:operation>
+
+ <wsdl:operation name="crontabAdd">
+ <wsdl:input message="wsdlns:crontabAddRequest"/>
+ <wsdl:output message="wsdlns:crontabAddResponse"/>
+ <wsdl:fault name="failure" message="wsdlns:FailureMsg" />
+ </wsdl:operation>
+
+ <wsdl:operation name="telephonySmsSenderDescription">
+ <wsdl:input message="wsdlns:telephonySmsSenderDescriptionRequest"/>
+ <wsdl:output message="wsdlns:telephonySmsSenderDescriptionResponse"/>
+ <wsdl:fault name="failure" message="wsdlns:FailureMsg" />
+ </wsdl:operation>
+
+ <wsdl:operation name="mailingListModify">
+ <wsdl:input message="wsdlns:mailingListModifyRequest"/>
+ <wsdl:output message="wsdlns:mailingListModifyResponse"/>
+ <wsdl:fault name="failure" message="wsdlns:FailureMsg" />
+ </wsdl:operation>
+
+ <wsdl:operation name="managedServicesPartitionGet">
+ <wsdl:input message="wsdlns:managedServicesPartitionGetRequest"/>
+ <wsdl:output message="wsdlns:managedServicesPartitionGetResponse"/>
+ <wsdl:fault name="failure" message="wsdlns:FailureMsg" />
+ </wsdl:operation>
+
+ <wsdl:operation name="telephonyAbbreviatedNumberListPaginated">
+ <wsdl:input message="wsdlns:telephonyAbbreviatedNumberListPaginatedRequest"/>
+ <wsdl:output message="wsdlns:telephonyAbbreviatedNumberListPaginatedResponse"/>
+ <wsdl:fault name="failure" message="wsdlns:FailureMsg" />
+ </wsdl:operation>
+
+ <wsdl:operation name="telephonySetDefaultPrivateHolidaysEvents">
+ <wsdl:input message="wsdlns:telephonySetDefaultPrivateHolidaysEventsRequest"/>
+ <wsdl:output message="wsdlns:telephonySetDefaultPrivateHolidaysEventsResponse"/>
+ <wsdl:fault name="failure" message="wsdlns:FailureMsg" />
+ </wsdl:operation>
+
+ <wsdl:operation name="emailDelMasterNic">
+ <wsdl:input message="wsdlns:emailDelMasterNicRequest"/>
+ <wsdl:output message="wsdlns:emailDelMasterNicResponse"/>
+ <wsdl:fault name="failure" message="wsdlns:FailureMsg" />
+ </wsdl:operation>
+
+ <wsdl:operation name="redirectedEmailModify">
+ <wsdl:input message="wsdlns:redirectedEmailModifyRequest"/>
+ <wsdl:output message="wsdlns:redirectedEmailModifyResponse"/>
+ <wsdl:fault name="failure" message="wsdlns:FailureMsg" />
+ </wsdl:operation>
+
+ <wsdl:operation name="telephonySpareServiceList">
+ <wsdl:input message="wsdlns:telephonySpareServiceListRequest"/>
+ <wsdl:output message="wsdlns:telephonySpareServiceListResponse"/>
+ <wsdl:fault name="failure" message="wsdlns:FailureMsg" />
+ </wsdl:operation>
+
+ <wsdl:operation name="popInfo">
+ <wsdl:input message="wsdlns:popInfoRequest"/>
+ <wsdl:output message="wsdlns:popInfoResponse"/>
+ <wsdl:fault name="failure" message="wsdlns:FailureMsg" />
+ </wsdl:operation>
+
+ <wsdl:operation name="zoneExport">
+ <wsdl:input message="wsdlns:zoneExportRequest"/>
+ <wsdl:output message="wsdlns:zoneExportResponse"/>
+ <wsdl:fault name="failure" message="wsdlns:FailureMsg" />
+ </wsdl:operation>
+
+ <wsdl:operation name="dedicatedMrtgInfo">
+ <wsdl:input message="wsdlns:dedicatedMrtgInfoRequest"/>
+ <wsdl:output message="wsdlns:dedicatedMrtgInfoResponse"/>
+ <wsdl:fault name="failure" message="wsdlns:FailureMsg" />
+ </wsdl:operation>
+
+ <wsdl:operation name="dedicatedBackupReinstallData">
+ <wsdl:input message="wsdlns:dedicatedBackupReinstallDataRequest"/>
+ <wsdl:output message="wsdlns:dedicatedBackupReinstallDataResponse"/>
+ <wsdl:fault name="failure" message="wsdlns:FailureMsg" />
+ </wsdl:operation>
+
+ <wsdl:operation name="serviceFreedomList">
+ <wsdl:input message="wsdlns:serviceFreedomListRequest"/>
+ <wsdl:output message="wsdlns:serviceFreedomListResponse"/>
+ <wsdl:fault name="failure" message="wsdlns:FailureMsg" />
+ </wsdl:operation>
+
+ <wsdl:operation name="supportGetFullMessage">
+ <wsdl:input message="wsdlns:supportGetFullMessageRequest"/>
+ <wsdl:output message="wsdlns:supportGetFullMessageResponse"/>
+ <wsdl:fault name="failure" message="wsdlns:FailureMsg" />
+ </wsdl:operation>
+
+ <wsdl:operation name="telephonySmsUserListCsvAttachment">
+ <wsdl:input message="wsdlns:telephonySmsUserListCsvAttachmentRequest"/>
+ <wsdl:output message="wsdlns:telephonySmsUserListCsvAttachmentResponse"/>
+ <wsdl:fault name="failure" message="wsdlns:FailureMsg" />
+ </wsdl:operation>
+
+ <wsdl:operation name="emailGetDomainCatchAll">
+ <wsdl:input message="wsdlns:emailGetDomainCatchAllRequest"/>
+ <wsdl:output message="wsdlns:emailGetDomainCatchAllResponse"/>
+ <wsdl:fault name="failure" message="wsdlns:FailureMsg" />
+ </wsdl:operation>
+
+ <wsdl:operation name="telephonyFaxCallList">
+ <wsdl:input message="wsdlns:telephonyFaxCallListRequest"/>
+ <wsdl:output message="wsdlns:telephonyFaxCallListResponse"/>
+ <wsdl:fault name="failure" message="wsdlns:FailureMsg" />
+ </wsdl:operation>
+
+ <wsdl:operation name="telephonySmsUserSend">
+ <wsdl:input message="wsdlns:telephonySmsUserSendRequest"/>
+ <wsdl:output message="wsdlns:telephonySmsUserSendResponse"/>
+ <wsdl:fault name="failure" message="wsdlns:FailureMsg" />
+ </wsdl:operation>
+
+ <wsdl:operation name="mailingListAdd">
+ <wsdl:input message="wsdlns:mailingListAddRequest"/>
+ <wsdl:output message="wsdlns:mailingListAddResponse"/>
+ <wsdl:fault name="failure" message="wsdlns:FailureMsg" />
+ </wsdl:operation>
+
+ <wsdl:operation name="dedicatedBackupFtpInfo">
+ <wsdl:input message="wsdlns:dedicatedBackupFtpInfoRequest"/>
+ <wsdl:output message="wsdlns:dedicatedBackupFtpInfoResponse"/>
+ <wsdl:fault name="failure" message="wsdlns:FailureMsg" />
+ </wsdl:operation>
+
+ <wsdl:operation name="telephonyPhonebookOnGroupGroupList">
+ <wsdl:input message="wsdlns:telephonyPhonebookOnGroupGroupListRequest"/>
+ <wsdl:output message="wsdlns:telephonyPhonebookOnGroupGroupListResponse"/>
+ <wsdl:fault name="failure" message="wsdlns:FailureMsg" />
+ </wsdl:operation>
+
+ <wsdl:operation name="telephonyClick2CallUserPassword">
+ <wsdl:input message="wsdlns:telephonyClick2CallUserPasswordRequest"/>
+ <wsdl:output message="wsdlns:telephonyClick2CallUserPasswordResponse"/>
+ <wsdl:fault name="failure" message="wsdlns:FailureMsg" />
+ </wsdl:operation>
+
+ <wsdl:operation name="dedicatedMonitoringModify">
+ <wsdl:input message="wsdlns:dedicatedMonitoringModifyRequest"/>
+ <wsdl:output message="wsdlns:dedicatedMonitoringModifyResponse"/>
+ <wsdl:fault name="failure" message="wsdlns:FailureMsg" />
+ </wsdl:operation>
+
+ <wsdl:operation name="emailSetMasterNic">
+ <wsdl:input message="wsdlns:emailSetMasterNicRequest"/>
+ <wsdl:output message="wsdlns:emailSetMasterNicResponse"/>
+ <wsdl:fault name="failure" message="wsdlns:FailureMsg" />
+ </wsdl:operation>
+
+ <wsdl:operation name="sqlpriveMysqlDatabaseList">
+ <wsdl:input message="wsdlns:sqlpriveMysqlDatabaseListRequest"/>
+ <wsdl:output message="wsdlns:sqlpriveMysqlDatabaseListResponse"/>
+ <wsdl:fault name="failure" message="wsdlns:FailureMsg" />
+ </wsdl:operation>
+
+ <wsdl:operation name="automatedMailReturnSet">
+ <wsdl:input message="wsdlns:automatedMailReturnSetRequest"/>
+ <wsdl:output message="wsdlns:automatedMailReturnSetResponse"/>
+ <wsdl:fault name="failure" message="wsdlns:FailureMsg" />
+ </wsdl:operation>
+
+ <wsdl:operation name="databaseRecreate">
+ <wsdl:input message="wsdlns:databaseRecreateRequest"/>
+ <wsdl:output message="wsdlns:databaseRecreateResponse"/>
+ <wsdl:fault name="failure" message="wsdlns:FailureMsg" />
+ </wsdl:operation>
+
+ <wsdl:operation name="popModifyPassword">
+ <wsdl:input message="wsdlns:popModifyPasswordRequest"/>
+ <wsdl:output message="wsdlns:popModifyPasswordResponse"/>
+ <wsdl:fault name="failure" message="wsdlns:FailureMsg" />
+ </wsdl:operation>
+
+ <wsdl:operation name="responderEmailAdd">
+ <wsdl:input message="wsdlns:responderEmailAddRequest"/>
+ <wsdl:output message="wsdlns:responderEmailAddResponse"/>
+ <wsdl:fault name="failure" message="wsdlns:FailureMsg" />
+ </wsdl:operation>
+
+ <wsdl:operation name="sqlpriveMysqlProcessList">
+ <wsdl:input message="wsdlns:sqlpriveMysqlProcessListRequest"/>
+ <wsdl:output message="wsdlns:sqlpriveMysqlProcessListResponse"/>
+ <wsdl:fault name="failure" message="wsdlns:FailureMsg" />
+ </wsdl:operation>
+
+ <wsdl:operation name="telephonySmsGetUserQuota">
+ <wsdl:input message="wsdlns:telephonySmsGetUserQuotaRequest"/>
+ <wsdl:output message="wsdlns:telephonySmsGetUserQuotaResponse"/>
+ <wsdl:fault name="failure" message="wsdlns:FailureMsg" />
+ </wsdl:operation>
+
+ <wsdl:operation name="dedicatedGetRandomAvailableIpFromCountry">
+ <wsdl:input message="wsdlns:dedicatedGetRandomAvailableIpFromCountryRequest"/>
+ <wsdl:output message="wsdlns:dedicatedGetRandomAvailableIpFromCountryResponse"/>
+ <wsdl:fault name="failure" message="wsdlns:FailureMsg" />
+ </wsdl:operation>
+
+ <wsdl:operation name="telephonySmsSenderDelete">
+ <wsdl:input message="wsdlns:telephonySmsSenderDeleteRequest"/>
+ <wsdl:output message="wsdlns:telephonySmsSenderDeleteResponse"/>
+ <wsdl:fault name="failure" message="wsdlns:FailureMsg" />
+ </wsdl:operation>
+
+ <wsdl:operation name="telephonyToneStatus">
+ <wsdl:input message="wsdlns:telephonyToneStatusRequest"/>
+ <wsdl:output message="wsdlns:telephonyToneStatusResponse"/>
+ <wsdl:fault name="failure" message="wsdlns:FailureMsg" />
+ </wsdl:operation>
+
+ <wsdl:operation name="telephonyDdiInfo">
+ <wsdl:input message="wsdlns:telephonyDdiInfoRequest"/>
+ <wsdl:output message="wsdlns:telephonyDdiInfoResponse"/>
+ <wsdl:fault name="failure" message="wsdlns:FailureMsg" />
+ </wsdl:operation>
+
+ <wsdl:operation name="dedicatedInstallBasicProgress">
+ <wsdl:input message="wsdlns:dedicatedInstallBasicProgressRequest"/>
+ <wsdl:output message="wsdlns:dedicatedInstallBasicProgressResponse"/>
+ <wsdl:fault name="failure" message="wsdlns:FailureMsg" />
+ </wsdl:operation>
+
+ <wsdl:operation name="dedicatedAddServiceMonitoringAlertEmail">
+ <wsdl:input message="wsdlns:dedicatedAddServiceMonitoringAlertEmailRequest"/>
+ <wsdl:output message="wsdlns:dedicatedAddServiceMonitoringAlertEmailResponse"/>
+ <wsdl:fault name="failure" message="wsdlns:FailureMsg" />
+ </wsdl:operation>
+
+ <wsdl:operation name="telephonyHuntingGroupList">
+ <wsdl:input message="wsdlns:telephonyHuntingGroupListRequest"/>
+ <wsdl:output message="wsdlns:telephonyHuntingGroupListResponse"/>
+ <wsdl:fault name="failure" message="wsdlns:FailureMsg" />
+ </wsdl:operation>
+
+ <wsdl:operation name="dedicatedFailoverUpdate">
+ <wsdl:input message="wsdlns:dedicatedFailoverUpdateRequest"/>
+ <wsdl:output message="wsdlns:dedicatedFailoverUpdateResponse"/>
+ <wsdl:fault name="failure" message="wsdlns:FailureMsg" />
+ </wsdl:operation>
+
+ <wsdl:operation name="telephonyTrunkExternalDisplayedNumberList">
+ <wsdl:input message="wsdlns:telephonyTrunkExternalDisplayedNumberListRequest"/>
+ <wsdl:output message="wsdlns:telephonyTrunkExternalDisplayedNumberListResponse"/>
+ <wsdl:fault name="failure" message="wsdlns:FailureMsg" />
+ </wsdl:operation>
+
+ <wsdl:operation name="telephonyDirectoryListWayType">
+ <wsdl:input message="wsdlns:telephonyDirectoryListWayTypeRequest"/>
+ <wsdl:output message="wsdlns:telephonyDirectoryListWayTypeResponse"/>
+ <wsdl:fault name="failure" message="wsdlns:FailureMsg" />
+ </wsdl:operation>
+
+ <wsdl:operation name="telephonySmsUserHistoryCsv">
+ <wsdl:input message="wsdlns:telephonySmsUserHistoryCsvRequest"/>
+ <wsdl:output message="wsdlns:telephonySmsUserHistoryCsvResponse"/>
+ <wsdl:fault name="failure" message="wsdlns:FailureMsg" />
+ </wsdl:operation>
+
+ <wsdl:operation name="telephonyCallList">
+ <wsdl:input message="wsdlns:telephonyCallListRequest"/>
+ <wsdl:output message="wsdlns:telephonyCallListResponse"/>
+ <wsdl:fault name="failure" message="wsdlns:FailureMsg" />
+ </wsdl:operation>
+
+ <wsdl:operation name="managedServicesPartitionUpdate">
+ <wsdl:input message="wsdlns:managedServicesPartitionUpdateRequest"/>
+ <wsdl:output message="wsdlns:managedServicesPartitionUpdateResponse"/>
+ <wsdl:fault name="failure" message="wsdlns:FailureMsg" />
+ </wsdl:operation>
+
+ <wsdl:operation name="telephonyGetDefaultPrivateHolidaysEvents">
+ <wsdl:input message="wsdlns:telephonyGetDefaultPrivateHolidaysEventsRequest"/>
+ <wsdl:output message="wsdlns:telephonyGetDefaultPrivateHolidaysEventsResponse"/>
+ <wsdl:fault name="failure" message="wsdlns:FailureMsg" />
+ </wsdl:operation>
+
+ <wsdl:operation name="telephonySmsplusShortCodesList">
+ <wsdl:input message="wsdlns:telephonySmsplusShortCodesListRequest"/>
+ <wsdl:output message="wsdlns:telephonySmsplusShortCodesListResponse"/>
+ <wsdl:fault name="failure" message="wsdlns:FailureMsg" />
+ </wsdl:operation>
+
+ <wsdl:operation name="dedicatedFilterIrcServerRuleAdd">
+ <wsdl:input message="wsdlns:dedicatedFilterIrcServerRuleAddRequest"/>
+ <wsdl:output message="wsdlns:dedicatedFilterIrcServerRuleAddResponse"/>
+ <wsdl:fault name="failure" message="wsdlns:FailureMsg" />
+ </wsdl:operation>
+
+ <wsdl:operation name="dedicatedVirtualMacIpAdd">
+ <wsdl:input message="wsdlns:dedicatedVirtualMacIpAddRequest"/>
+ <wsdl:output message="wsdlns:dedicatedVirtualMacIpAddResponse"/>
+ <wsdl:fault name="failure" message="wsdlns:FailureMsg" />
+ </wsdl:operation>
+
+ <wsdl:operation name="telephonyAliasToSipPossibilities">
+ <wsdl:input message="wsdlns:telephonyAliasToSipPossibilitiesRequest"/>
+ <wsdl:output message="wsdlns:telephonyAliasToSipPossibilitiesResponse"/>
+ <wsdl:fault name="failure" message="wsdlns:FailureMsg" />
+ </wsdl:operation>
+
+ <wsdl:operation name="telephonyAbbreviatedNumberOnGroupAdd">
+ <wsdl:input message="wsdlns:telephonyAbbreviatedNumberOnGroupAddRequest"/>
+ <wsdl:output message="wsdlns:telephonyAbbreviatedNumberOnGroupAddResponse"/>
+ <wsdl:fault name="failure" message="wsdlns:FailureMsg" />
+ </wsdl:operation>
+
+ <wsdl:operation name="telephonyHuntingModificationQueue">
+ <wsdl:input message="wsdlns:telephonyHuntingModificationQueueRequest"/>
+ <wsdl:output message="wsdlns:telephonyHuntingModificationQueueResponse"/>
+ <wsdl:fault name="failure" message="wsdlns:FailureMsg" />
+ </wsdl:operation>
+
+ <wsdl:operation name="telephonyDirectoryInfo">
+ <wsdl:input message="wsdlns:telephonyDirectoryInfoRequest"/>
+ <wsdl:output message="wsdlns:telephonyDirectoryInfoResponse"/>
+ <wsdl:fault name="failure" message="wsdlns:FailureMsg" />
+ </wsdl:operation>
+
+ <wsdl:operation name="telephonyBillDetails">
+ <wsdl:input message="wsdlns:telephonyBillDetailsRequest"/>
+ <wsdl:output message="wsdlns:telephonyBillDetailsResponse"/>
+ <wsdl:fault name="failure" message="wsdlns:FailureMsg" />
+ </wsdl:operation>
+
+ <wsdl:operation name="dedicatedRipeGetRipeIds">
+ <wsdl:input message="wsdlns:dedicatedRipeGetRipeIdsRequest"/>
+ <wsdl:output message="wsdlns:dedicatedRipeGetRipeIdsResponse"/>
+ <wsdl:fault name="failure" message="wsdlns:FailureMsg" />
+ </wsdl:operation>
+
+ <wsdl:operation name="telephonyLineLogsNotificationOptionsModify">
+ <wsdl:input message="wsdlns:telephonyLineLogsNotificationOptionsModifyRequest"/>
+ <wsdl:output message="wsdlns:telephonyLineLogsNotificationOptionsModifyResponse"/>
+ <wsdl:fault name="failure" message="wsdlns:FailureMsg" />
+ </wsdl:operation>
+
+ <wsdl:operation name="dnsInstallCustom">
+ <wsdl:input message="wsdlns:dnsInstallCustomRequest"/>
+ <wsdl:output message="wsdlns:dnsInstallCustomResponse"/>
+ <wsdl:fault name="failure" message="wsdlns:FailureMsg" />
+ </wsdl:operation>
+
+ <wsdl:operation name="sqlpriveMysqlActivateOvhManagement">
+ <wsdl:input message="wsdlns:sqlpriveMysqlActivateOvhManagementRequest"/>
+ <wsdl:output message="wsdlns:sqlpriveMysqlActivateOvhManagementResponse"/>
+ <wsdl:fault name="failure" message="wsdlns:FailureMsg" />
+ </wsdl:operation>
+
+ <wsdl:operation name="telephonyClick2CallDoBySession">
+ <wsdl:input message="wsdlns:telephonyClick2CallDoBySessionRequest"/>
+ <wsdl:output message="wsdlns:telephonyClick2CallDoBySessionResponse"/>
+ <wsdl:fault name="failure" message="wsdlns:FailureMsg" />
+ </wsdl:operation>
+
+ <wsdl:operation name="telephonyAbbreviatedNumberAdd">
+ <wsdl:input message="wsdlns:telephonyAbbreviatedNumberAddRequest"/>
+ <wsdl:output message="wsdlns:telephonyAbbreviatedNumberAddResponse"/>
+ <wsdl:fault name="failure" message="wsdlns:FailureMsg" />
+ </wsdl:operation>
+
+ <wsdl:operation name="prepaidGetThreshold">
+ <wsdl:input message="wsdlns:prepaidGetThresholdRequest"/>
+ <wsdl:output message="wsdlns:prepaidGetThresholdResponse"/>
+ <wsdl:fault name="failure" message="wsdlns:FailureMsg" />
+ </wsdl:operation>
+
+ <wsdl:operation name="domainWhoisObfuscatorUnsetAll">
+ <wsdl:input message="wsdlns:domainWhoisObfuscatorUnsetAllRequest"/>
+ <wsdl:output message="wsdlns:domainWhoisObfuscatorUnsetAllResponse"/>
+ <wsdl:fault name="failure" message="wsdlns:FailureMsg" />
+ </wsdl:operation>
+
+ <wsdl:operation name="multiFtpDel">
+ <wsdl:input message="wsdlns:multiFtpDelRequest"/>
+ <wsdl:output message="wsdlns:multiFtpDelResponse"/>
+ <wsdl:fault name="failure" message="wsdlns:FailureMsg" />
+ </wsdl:operation>
+
+ <wsdl:operation name="sqlpriveMysqlGetPossibleDump">
+ <wsdl:input message="wsdlns:sqlpriveMysqlGetPossibleDumpRequest"/>
+ <wsdl:output message="wsdlns:sqlpriveMysqlGetPossibleDumpResponse"/>
+ <wsdl:fault name="failure" message="wsdlns:FailureMsg" />
+ </wsdl:operation>
+
+ <wsdl:operation name="telephonyNumberOrder">
+ <wsdl:input message="wsdlns:telephonyNumberOrderRequest"/>
+ <wsdl:output message="wsdlns:telephonyNumberOrderResponse"/>
+ <wsdl:fault name="failure" message="wsdlns:FailureMsg" />
+ </wsdl:operation>
+
+ <wsdl:operation name="telephonyLineSetIpRestriction">
+ <wsdl:input message="wsdlns:telephonyLineSetIpRestrictionRequest"/>
+ <wsdl:output message="wsdlns:telephonyLineSetIpRestrictionResponse"/>
+ <wsdl:fault name="failure" message="wsdlns:FailureMsg" />
+ </wsdl:operation>
+
+ <wsdl:operation name="prepaidGetHistory">
+ <wsdl:input message="wsdlns:prepaidGetHistoryRequest"/>
+ <wsdl:output message="wsdlns:prepaidGetHistoryResponse"/>
+ <wsdl:fault name="failure" message="wsdlns:FailureMsg" />
+ </wsdl:operation>
+
+ <wsdl:operation name="telephonyLineSetCodecs">
+ <wsdl:input message="wsdlns:telephonyLineSetCodecsRequest"/>
+ <wsdl:output message="wsdlns:telephonyLineSetCodecsResponse"/>
+ <wsdl:fault name="failure" message="wsdlns:FailureMsg" />
+ </wsdl:operation>
+
+ <wsdl:operation name="telephonyNumberCityForZoneList">
+ <wsdl:input message="wsdlns:telephonyNumberCityForZoneListRequest"/>
+ <wsdl:output message="wsdlns:telephonyNumberCityForZoneListResponse"/>
+ <wsdl:fault name="failure" message="wsdlns:FailureMsg" />
+ </wsdl:operation>
+
+ <wsdl:operation name="redirectedEmailDel">
+ <wsdl:input message="wsdlns:redirectedEmailDelRequest"/>
+ <wsdl:output message="wsdlns:redirectedEmailDelResponse"/>
+ <wsdl:fault name="failure" message="wsdlns:FailureMsg" />
+ </wsdl:operation>
+
+ <wsdl:operation name="dedicatedInfo">
+ <wsdl:input message="wsdlns:dedicatedInfoRequest"/>
+ <wsdl:output message="wsdlns:dedicatedInfoResponse"/>
+ <wsdl:fault name="failure" message="wsdlns:FailureMsg" />
+ </wsdl:operation>
+
+ <wsdl:operation name="dedicatedBackupUpdateDate">
+ <wsdl:input message="wsdlns:dedicatedBackupUpdateDateRequest"/>
+ <wsdl:output message="wsdlns:dedicatedBackupUpdateDateResponse"/>
+ <wsdl:fault name="failure" message="wsdlns:FailureMsg" />
+ </wsdl:operation>
+
+ <wsdl:operation name="domainOperationList">
+ <wsdl:input message="wsdlns:domainOperationListRequest"/>
+ <wsdl:output message="wsdlns:domainOperationListResponse"/>
+ <wsdl:fault name="failure" message="wsdlns:FailureMsg" />
+ </wsdl:operation>
+
+ <wsdl:operation name="telephonyTonesOptionsModify">
+ <wsdl:input message="wsdlns:telephonyTonesOptionsModifyRequest"/>
+ <wsdl:output message="wsdlns:telephonyTonesOptionsModifyResponse"/>
+ <wsdl:fault name="failure" message="wsdlns:FailureMsg" />
+ </wsdl:operation>
+
+ <wsdl:operation name="popAttachMasterNic">
+ <wsdl:input message="wsdlns:popAttachMasterNicRequest"/>
+ <wsdl:output message="wsdlns:popAttachMasterNicResponse"/>
+ <wsdl:fault name="failure" message="wsdlns:FailureMsg" />
+ </wsdl:operation>
+
+ <wsdl:operation name="telephonyVoicemailMessagesRemoteUpload">
+ <wsdl:input message="wsdlns:telephonyVoicemailMessagesRemoteUploadRequest"/>
+ <wsdl:output message="wsdlns:telephonyVoicemailMessagesRemoteUploadResponse"/>
+ <wsdl:fault name="failure" message="wsdlns:FailureMsg" />
+ </wsdl:operation>
+
+ <wsdl:operation name="crontabInfo">
+ <wsdl:input message="wsdlns:crontabInfoRequest"/>
+ <wsdl:output message="wsdlns:crontabInfoResponse"/>
+ <wsdl:fault name="failure" message="wsdlns:FailureMsg" />
+ </wsdl:operation>
+
+ <wsdl:operation name="serviceGroupSetName">
+ <wsdl:input message="wsdlns:serviceGroupSetNameRequest"/>
+ <wsdl:output message="wsdlns:serviceGroupSetNameResponse"/>
+ <wsdl:fault name="failure" message="wsdlns:FailureMsg" />
+ </wsdl:operation>
+
+ <wsdl:operation name="telephonyOfferInfo">
+ <wsdl:input message="wsdlns:telephonyOfferInfoRequest"/>
+ <wsdl:output message="wsdlns:telephonyOfferInfoResponse"/>
+ <wsdl:fault name="failure" message="wsdlns:FailureMsg" />
+ </wsdl:operation>
+
+ <wsdl:operation name="multiDomainAdd">
+ <wsdl:input message="wsdlns:multiDomainAddRequest"/>
+ <wsdl:output message="wsdlns:multiDomainAddResponse"/>
+ <wsdl:fault name="failure" message="wsdlns:FailureMsg" />
+ </wsdl:operation>
+
+ <wsdl:operation name="telephonyPhonebookDel">
+ <wsdl:input message="wsdlns:telephonyPhonebookDelRequest"/>
+ <wsdl:output message="wsdlns:telephonyPhonebookDelResponse"/>
+ <wsdl:fault name="failure" message="wsdlns:FailureMsg" />
+ </wsdl:operation>
+
+ <wsdl:operation name="redirectedEmailList">
+ <wsdl:input message="wsdlns:redirectedEmailListRequest"/>
+ <wsdl:output message="wsdlns:redirectedEmailListResponse"/>
+ <wsdl:fault name="failure" message="wsdlns:FailureMsg" />
+ </wsdl:operation>
+
+ <wsdl:operation name="telephonySmsUserAdd">
+ <wsdl:input message="wsdlns:telephonySmsUserAddRequest"/>
+ <wsdl:output message="wsdlns:telephonySmsUserAddResponse"/>
+ <wsdl:fault name="failure" message="wsdlns:FailureMsg" />
+ </wsdl:operation>
+
+ <wsdl:operation name="nicUpdateIT">
+ <wsdl:input message="wsdlns:nicUpdateITRequest"/>
+ <wsdl:output message="wsdlns:nicUpdateITResponse"/>
+ <wsdl:fault name="failure" message="wsdlns:FailureMsg" />
+ </wsdl:operation>
+
+ <wsdl:operation name="telephonySmsUserHistory">
+ <wsdl:input message="wsdlns:telephonySmsUserHistoryRequest"/>
+ <wsdl:output message="wsdlns:telephonySmsUserHistoryResponse"/>
+ <wsdl:fault name="failure" message="wsdlns:FailureMsg" />
+ </wsdl:operation>
+
+ <wsdl:operation name="dedicatedMonitoringStatusGet">
+ <wsdl:input message="wsdlns:dedicatedMonitoringStatusGetRequest"/>
+ <wsdl:output message="wsdlns:dedicatedMonitoringStatusGetResponse"/>
+ <wsdl:fault name="failure" message="wsdlns:FailureMsg" />
+ </wsdl:operation>
+
+ <wsdl:operation name="ripeUpdateOrganisation">
+ <wsdl:input message="wsdlns:ripeUpdateOrganisationRequest"/>
+ <wsdl:output message="wsdlns:ripeUpdateOrganisationResponse"/>
+ <wsdl:fault name="failure" message="wsdlns:FailureMsg" />
+ </wsdl:operation>
+
+ <wsdl:operation name="telephonySmsUserGetCallBack">
+ <wsdl:input message="wsdlns:telephonySmsUserGetCallBackRequest"/>
+ <wsdl:output message="wsdlns:telephonySmsUserGetCallBackResponse"/>
+ <wsdl:fault name="failure" message="wsdlns:FailureMsg" />
+ </wsdl:operation>
+
+ <wsdl:operation name="dedicatedNetbootModify">
+ <wsdl:input message="wsdlns:dedicatedNetbootModifyRequest"/>
+ <wsdl:output message="wsdlns:dedicatedNetbootModifyResponse"/>
+ <wsdl:fault name="failure" message="wsdlns:FailureMsg" />
+ </wsdl:operation>
+
+ <wsdl:operation name="subDomainList">
+ <wsdl:input message="wsdlns:subDomainListRequest"/>
+ <wsdl:output message="wsdlns:subDomainListResponse"/>
+ <wsdl:fault name="failure" message="wsdlns:FailureMsg" />
+ </wsdl:operation>
+
+ <wsdl:operation name="sqlpriveFtpPassword">
+ <wsdl:input message="wsdlns:sqlpriveFtpPasswordRequest"/>
+ <wsdl:output message="wsdlns:sqlpriveFtpPasswordResponse"/>
+ <wsdl:fault name="failure" message="wsdlns:FailureMsg" />
+ </wsdl:operation>
+
+ <wsdl:operation name="telephonyOfferModifyPassword">
+ <wsdl:input message="wsdlns:telephonyOfferModifyPasswordRequest"/>
+ <wsdl:output message="wsdlns:telephonyOfferModifyPasswordResponse"/>
+ <wsdl:fault name="failure" message="wsdlns:FailureMsg" />
+ </wsdl:operation>
+
+ <wsdl:operation name="dnsUninstall">
+ <wsdl:input message="wsdlns:dnsUninstallRequest"/>
+ <wsdl:output message="wsdlns:dnsUninstallResponse"/>
+ <wsdl:fault name="failure" message="wsdlns:FailureMsg" />
+ </wsdl:operation>
+
+ <wsdl:operation name="dedicatedFilterIrcClientRuleList">
+ <wsdl:input message="wsdlns:dedicatedFilterIrcClientRuleListRequest"/>
+ <wsdl:output message="wsdlns:dedicatedFilterIrcClientRuleListResponse"/>
+ <wsdl:fault name="failure" message="wsdlns:FailureMsg" />
+ </wsdl:operation>
+
+ <wsdl:operation name="telephonyFunctionKeyAdd">
+ <wsdl:input message="wsdlns:telephonyFunctionKeyAddRequest"/>
+ <wsdl:output message="wsdlns:telephonyFunctionKeyAddResponse"/>
+ <wsdl:fault name="failure" message="wsdlns:FailureMsg" />
+ </wsdl:operation>
+
+ <wsdl:operation name="telephonyPhonebookList">
+ <wsdl:input message="wsdlns:telephonyPhonebookListRequest"/>
+ <wsdl:output message="wsdlns:telephonyPhonebookListResponse"/>
+ <wsdl:fault name="failure" message="wsdlns:FailureMsg" />
+ </wsdl:operation>
+
+ <wsdl:operation name="telephonyPlugAndPhoneReset">
+ <wsdl:input message="wsdlns:telephonyPlugAndPhoneResetRequest"/>
+ <wsdl:output message="wsdlns:telephonyPlugAndPhoneResetResponse"/>
+ <wsdl:fault name="failure" message="wsdlns:FailureMsg" />
+ </wsdl:operation>
+
+ <wsdl:operation name="sqlpriveMysqlRootPassword">
+ <wsdl:input message="wsdlns:sqlpriveMysqlRootPasswordRequest"/>
+ <wsdl:output message="wsdlns:sqlpriveMysqlRootPasswordResponse"/>
+ <wsdl:fault name="failure" message="wsdlns:FailureMsg" />
+ </wsdl:operation>
+
+ <wsdl:operation name="telephonySpareInfo">
+ <wsdl:input message="wsdlns:telephonySpareInfoRequest"/>
+ <wsdl:output message="wsdlns:telephonySpareInfoResponse"/>
+ <wsdl:fault name="failure" message="wsdlns:FailureMsg" />
+ </wsdl:operation>
+
+ <wsdl:operation name="telephonySmsUserDel">
+ <wsdl:input message="wsdlns:telephonySmsUserDelRequest"/>
+ <wsdl:output message="wsdlns:telephonySmsUserDelResponse"/>
+ <wsdl:fault name="failure" message="wsdlns:FailureMsg" />
+ </wsdl:operation>
+
+ <wsdl:operation name="emailSetDomainMxFiltering">
+ <wsdl:input message="wsdlns:emailSetDomainMxFilteringRequest"/>
+ <wsdl:output message="wsdlns:emailSetDomainMxFilteringResponse"/>
+ <wsdl:fault name="failure" message="wsdlns:FailureMsg" />
+ </wsdl:operation>
+
+ <wsdl:operation name="telephonyVoicemailMessagesStatus">
+ <wsdl:input message="wsdlns:telephonyVoicemailMessagesStatusRequest"/>
+ <wsdl:output message="wsdlns:telephonyVoicemailMessagesStatusResponse"/>
+ <wsdl:fault name="failure" message="wsdlns:FailureMsg" />
+ </wsdl:operation>
+
+ <wsdl:operation name="telephonyPhonebookModify">
+ <wsdl:input message="wsdlns:telephonyPhonebookModifyRequest"/>
+ <wsdl:output message="wsdlns:telephonyPhonebookModifyResponse"/>
+ <wsdl:fault name="failure" message="wsdlns:FailureMsg" />
+ </wsdl:operation>
+
+ <wsdl:operation name="dedicatedIPForUDPMove">
+ <wsdl:input message="wsdlns:dedicatedIPForUDPMoveRequest"/>
+ <wsdl:output message="wsdlns:dedicatedIPForUDPMoveResponse"/>
+ <wsdl:fault name="failure" message="wsdlns:FailureMsg" />
+ </wsdl:operation>
+
+ <wsdl:operation name="nicUpdate">
+ <wsdl:input message="wsdlns:nicUpdateRequest"/>
+ <wsdl:output message="wsdlns:nicUpdateResponse"/>
+ <wsdl:fault name="failure" message="wsdlns:FailureMsg" />
+ </wsdl:operation>
+
+ <wsdl:operation name="passwordManager">
+ <wsdl:input message="wsdlns:passwordManagerRequest"/>
+ <wsdl:output message="wsdlns:passwordManagerResponse"/>
+ <wsdl:fault name="failure" message="wsdlns:FailureMsg" />
+ </wsdl:operation>
+
+ <wsdl:operation name="telephonyOfferModifyName">
+ <wsdl:input message="wsdlns:telephonyOfferModifyNameRequest"/>
+ <wsdl:output message="wsdlns:telephonyOfferModifyNameResponse"/>
+ <wsdl:fault name="failure" message="wsdlns:FailureMsg" />
+ </wsdl:operation>
+
+ <wsdl:operation name="notepadFlush">
+ <wsdl:input message="wsdlns:notepadFlushRequest"/>
+ <wsdl:output message="wsdlns:notepadFlushResponse"/>
+ <wsdl:fault name="failure" message="wsdlns:FailureMsg" />
+ </wsdl:operation>
+
+ <wsdl:operation name="telephonySmsSetCallBack">
+ <wsdl:input message="wsdlns:telephonySmsSetCallBackRequest"/>
+ <wsdl:output message="wsdlns:telephonySmsSetCallBackResponse"/>
+ <wsdl:fault name="failure" message="wsdlns:FailureMsg" />
+ </wsdl:operation>
+
+ <wsdl:operation name="multiDomainModify">
+ <wsdl:input message="wsdlns:multiDomainModifyRequest"/>
+ <wsdl:output message="wsdlns:multiDomainModifyResponse"/>
+ <wsdl:fault name="failure" message="wsdlns:FailureMsg" />
+ </wsdl:operation>
+
+ <wsdl:operation name="language">
+ <wsdl:input message="wsdlns:languageRequest"/>
+ <wsdl:output message="wsdlns:languageResponse"/>
+ <wsdl:fault name="failure" message="wsdlns:FailureMsg" />
+ </wsdl:operation>
+
+ <wsdl:operation name="dedicatedMonitoringSMSModify">
+ <wsdl:input message="wsdlns:dedicatedMonitoringSMSModifyRequest"/>
+ <wsdl:output message="wsdlns:dedicatedMonitoringSMSModifyResponse"/>
+ <wsdl:fault name="failure" message="wsdlns:FailureMsg" />
+ </wsdl:operation>
+
+ <wsdl:operation name="telephonyPhonebookGroupList">
+ <wsdl:input message="wsdlns:telephonyPhonebookGroupListRequest"/>
+ <wsdl:output message="wsdlns:telephonyPhonebookGroupListResponse"/>
+ <wsdl:fault name="failure" message="wsdlns:FailureMsg" />
+ </wsdl:operation>
+
+ <wsdl:operation name="logsAccessDel">
+ <wsdl:input message="wsdlns:logsAccessDelRequest"/>
+ <wsdl:output message="wsdlns:logsAccessDelResponse"/>
+ <wsdl:fault name="failure" message="wsdlns:FailureMsg" />
+ </wsdl:operation>
+
+ <wsdl:operation name="logsAccessAdd">
+ <wsdl:input message="wsdlns:logsAccessAddRequest"/>
+ <wsdl:output message="wsdlns:logsAccessAddResponse"/>
+ <wsdl:fault name="failure" message="wsdlns:FailureMsg" />
+ </wsdl:operation>
+
+ <wsdl:operation name="multiDomainInfo">
+ <wsdl:input message="wsdlns:multiDomainInfoRequest"/>
+ <wsdl:output message="wsdlns:multiDomainInfoResponse"/>
+ <wsdl:fault name="failure" message="wsdlns:FailureMsg" />
+ </wsdl:operation>
+
+ <wsdl:operation name="domainWhoisObfuscatorList">
+ <wsdl:input message="wsdlns:domainWhoisObfuscatorListRequest"/>
+ <wsdl:output message="wsdlns:domainWhoisObfuscatorListResponse"/>
+ <wsdl:fault name="failure" message="wsdlns:FailureMsg" />
+ </wsdl:operation>
+
+ <wsdl:operation name="sqlpriveMysqlProcessKill">
+ <wsdl:input message="wsdlns:sqlpriveMysqlProcessKillRequest"/>
+ <wsdl:output message="wsdlns:sqlpriveMysqlProcessKillResponse"/>
+ <wsdl:fault name="failure" message="wsdlns:FailureMsg" />
+ </wsdl:operation>
+
+ <wsdl:operation name="telephonyBillingAccountInfo">
+ <wsdl:input message="wsdlns:telephonyBillingAccountInfoRequest"/>
+ <wsdl:output message="wsdlns:telephonyBillingAccountInfoResponse"/>
+ <wsdl:fault name="failure" message="wsdlns:FailureMsg" />
+ </wsdl:operation>
+
+ <wsdl:operation name="mailingListList">
+ <wsdl:input message="wsdlns:mailingListListRequest"/>
+ <wsdl:output message="wsdlns:mailingListListResponse"/>
+ <wsdl:fault name="failure" message="wsdlns:FailureMsg" />
+ </wsdl:operation>
+
+ <wsdl:operation name="telephonySmsSenderAdd">
+ <wsdl:input message="wsdlns:telephonySmsSenderAddRequest"/>
+ <wsdl:output message="wsdlns:telephonySmsSenderAddResponse"/>
+ <wsdl:fault name="failure" message="wsdlns:FailureMsg" />
+ </wsdl:operation>
+
+ <wsdl:operation name="telephonyLineConsumptionCSVByMail">
+ <wsdl:input message="wsdlns:telephonyLineConsumptionCSVByMailRequest"/>
+ <wsdl:output message="wsdlns:telephonyLineConsumptionCSVByMailResponse"/>
+ <wsdl:fault name="failure" message="wsdlns:FailureMsg" />
+ </wsdl:operation>
+
+ <wsdl:operation name="telephonySmsUserDeleteCsvAttachment">
+ <wsdl:input message="wsdlns:telephonySmsUserDeleteCsvAttachmentRequest"/>
+ <wsdl:output message="wsdlns:telephonySmsUserDeleteCsvAttachmentResponse"/>
+ <wsdl:fault name="failure" message="wsdlns:FailureMsg" />
+ </wsdl:operation>
+
+ <wsdl:operation name="mailingListSubscriberListByEmail">
+ <wsdl:input message="wsdlns:mailingListSubscriberListByEmailRequest"/>
+ <wsdl:output message="wsdlns:mailingListSubscriberListByEmailResponse"/>
+ <wsdl:fault name="failure" message="wsdlns:FailureMsg" />
+ </wsdl:operation>
+
+ <wsdl:operation name="supportCloseThreads">
+ <wsdl:input message="wsdlns:supportCloseThreadsRequest"/>
+ <wsdl:output message="wsdlns:supportCloseThreadsResponse"/>
+ <wsdl:fault name="failure" message="wsdlns:FailureMsg" />
+ </wsdl:operation>
+
+ <wsdl:operation name="sqlpriveMysqlDatabaseSave">
+ <wsdl:input message="wsdlns:sqlpriveMysqlDatabaseSaveRequest"/>
+ <wsdl:output message="wsdlns:sqlpriveMysqlDatabaseSaveResponse"/>
+ <wsdl:fault name="failure" message="wsdlns:FailureMsg" />
+ </wsdl:operation>
+
+ <wsdl:operation name="telephonyListReversableCallsFromNumber">
+ <wsdl:input message="wsdlns:telephonyListReversableCallsFromNumberRequest"/>
+ <wsdl:output message="wsdlns:telephonyListReversableCallsFromNumberResponse"/>
+ <wsdl:fault name="failure" message="wsdlns:FailureMsg" />
+ </wsdl:operation>
+
+ <wsdl:operation name="telephonyBillingAccountList">
+ <wsdl:input message="wsdlns:telephonyBillingAccountListRequest"/>
+ <wsdl:output message="wsdlns:telephonyBillingAccountListResponse"/>
+ <wsdl:fault name="failure" message="wsdlns:FailureMsg" />
+ </wsdl:operation>
+
+ <wsdl:operation name="telephonySmsGetQuotaNotificationForUser">
+ <wsdl:input message="wsdlns:telephonySmsGetQuotaNotificationForUserRequest"/>
+ <wsdl:output message="wsdlns:telephonySmsGetQuotaNotificationForUserResponse"/>
+ <wsdl:fault name="failure" message="wsdlns:FailureMsg" />
+ </wsdl:operation>
+
+ <wsdl:operation name="dedicatedMonitoringDel">
+ <wsdl:input message="wsdlns:dedicatedMonitoringDelRequest"/>
+ <wsdl:output message="wsdlns:dedicatedMonitoringDelResponse"/>
+ <wsdl:fault name="failure" message="wsdlns:FailureMsg" />
+ </wsdl:operation>
+
+ <wsdl:operation name="telephonyChangeNicModify">
+ <wsdl:input message="wsdlns:telephonyChangeNicModifyRequest"/>
+ <wsdl:output message="wsdlns:telephonyChangeNicModifyResponse"/>
+ <wsdl:fault name="failure" message="wsdlns:FailureMsg" />
+ </wsdl:operation>
+
+ <wsdl:operation name="dedicatedMonitoringServiceAddSMS">
+ <wsdl:input message="wsdlns:dedicatedMonitoringServiceAddSMSRequest"/>
+ <wsdl:output message="wsdlns:dedicatedMonitoringServiceAddSMSResponse"/>
+ <wsdl:fault name="failure" message="wsdlns:FailureMsg" />
+ </wsdl:operation>
+
+ <wsdl:operation name="prepaidGetBalance">
+ <wsdl:input message="wsdlns:prepaidGetBalanceRequest"/>
+ <wsdl:output message="wsdlns:prepaidGetBalanceResponse"/>
+ <wsdl:fault name="failure" message="wsdlns:FailureMsg" />
+ </wsdl:operation>
+
+ <wsdl:operation name="telephonySviInfo">
+ <wsdl:input message="wsdlns:telephonySviInfoRequest"/>
+ <wsdl:output message="wsdlns:telephonySviInfoResponse"/>
+ <wsdl:fault name="failure" message="wsdlns:FailureMsg" />
+ </wsdl:operation>
+
+ <wsdl:operation name="dnsGeolocalizeHosting">
+ <wsdl:input message="wsdlns:dnsGeolocalizeHostingRequest"/>
+ <wsdl:output message="wsdlns:dnsGeolocalizeHostingResponse"/>
+ <wsdl:fault name="failure" message="wsdlns:FailureMsg" />
+ </wsdl:operation>
+
+ <wsdl:operation name="popAdd">
+ <wsdl:input message="wsdlns:popAddRequest"/>
+ <wsdl:output message="wsdlns:popAddResponse"/>
+ <wsdl:fault name="failure" message="wsdlns:FailureMsg" />
+ </wsdl:operation>
+
+ <wsdl:operation name="telephonyClick2CallUserAdd">
+ <wsdl:input message="wsdlns:telephonyClick2CallUserAddRequest"/>
+ <wsdl:output message="wsdlns:telephonyClick2CallUserAddResponse"/>
+ <wsdl:fault name="failure" message="wsdlns:FailureMsg" />
+ </wsdl:operation>
+
+ <wsdl:operation name="domainHostInfo">
+ <wsdl:input message="wsdlns:domainHostInfoRequest"/>
+ <wsdl:output message="wsdlns:domainHostInfoResponse"/>
+ <wsdl:fault name="failure" message="wsdlns:FailureMsg" />
+ </wsdl:operation>
+
+ <wsdl:operation name="dedicatedList">
+ <wsdl:input message="wsdlns:dedicatedListRequest"/>
+ <wsdl:output message="wsdlns:dedicatedListResponse"/>
+ <wsdl:fault name="failure" message="wsdlns:FailureMsg" />
+ </wsdl:operation>
+
+ <wsdl:operation name="dedicatedIPForUDPGet">
+ <wsdl:input message="wsdlns:dedicatedIPForUDPGetRequest"/>
+ <wsdl:output message="wsdlns:dedicatedIPForUDPGetResponse"/>
+ <wsdl:fault name="failure" message="wsdlns:FailureMsg" />
+ </wsdl:operation>
+
+ <wsdl:operation name="dedicatedGetAvailableIpFromNetwork">
+ <wsdl:input message="wsdlns:dedicatedGetAvailableIpFromNetworkRequest"/>
+ <wsdl:output message="wsdlns:dedicatedGetAvailableIpFromNetworkResponse"/>
+ <wsdl:fault name="failure" message="wsdlns:FailureMsg" />
+ </wsdl:operation>
+
+ <wsdl:operation name="crontabModify">
+ <wsdl:input message="wsdlns:crontabModifyRequest"/>
+ <wsdl:output message="wsdlns:crontabModifyResponse"/>
+ <wsdl:fault name="failure" message="wsdlns:FailureMsg" />
+ </wsdl:operation>
+
+ <wsdl:operation name="sqlpriveCronGet">
+ <wsdl:input message="wsdlns:sqlpriveCronGetRequest"/>
+ <wsdl:output message="wsdlns:sqlpriveCronGetResponse"/>
+ <wsdl:fault name="failure" message="wsdlns:FailureMsg" />
+ </wsdl:operation>
+
+ <wsdl:operation name="supportReactivateThread">
+ <wsdl:input message="wsdlns:supportReactivateThreadRequest"/>
+ <wsdl:output message="wsdlns:supportReactivateThreadResponse"/>
+ <wsdl:fault name="failure" message="wsdlns:FailureMsg" />
+ </wsdl:operation>
+
+ <wsdl:operation name="telephonySmsBlacklistedSendersDelete">
+ <wsdl:input message="wsdlns:telephonySmsBlacklistedSendersDeleteRequest"/>
+ <wsdl:output message="wsdlns:telephonySmsBlacklistedSendersDeleteResponse"/>
+ <wsdl:fault name="failure" message="wsdlns:FailureMsg" />
+ </wsdl:operation>
+
+ <wsdl:operation name="zoneImport">
+ <wsdl:input message="wsdlns:zoneImportRequest"/>
+ <wsdl:output message="wsdlns:zoneImportResponse"/>
+ <wsdl:fault name="failure" message="wsdlns:FailureMsg" />
+ </wsdl:operation>
+
+ <wsdl:operation name="telephonySmsplusServiceAdd">
+ <wsdl:input message="wsdlns:telephonySmsplusServiceAddRequest"/>
+ <wsdl:output message="wsdlns:telephonySmsplusServiceAddResponse"/>
+ <wsdl:fault name="failure" message="wsdlns:FailureMsg" />
+ </wsdl:operation>
+
+ <wsdl:operation name="multiDomainDel">
+ <wsdl:input message="wsdlns:multiDomainDelRequest"/>
+ <wsdl:output message="wsdlns:multiDomainDelResponse"/>
+ <wsdl:fault name="failure" message="wsdlns:FailureMsg" />
+ </wsdl:operation>
+
+ <wsdl:operation name="telephonySpareCreateRMA">
+ <wsdl:input message="wsdlns:telephonySpareCreateRMARequest"/>
+ <wsdl:output message="wsdlns:telephonySpareCreateRMAResponse"/>
+ <wsdl:fault name="failure" message="wsdlns:FailureMsg" />
+ </wsdl:operation>
+
+ <wsdl:operation name="telephonySmsplusServiceEdit">
+ <wsdl:input message="wsdlns:telephonySmsplusServiceEditRequest"/>
+ <wsdl:output message="wsdlns:telephonySmsplusServiceEditResponse"/>
+ <wsdl:fault name="failure" message="wsdlns:FailureMsg" />
+ </wsdl:operation>
+
+ <wsdl:operation name="dedicatedMailinglistSubscribe">
+ <wsdl:input message="wsdlns:dedicatedMailinglistSubscribeRequest"/>
+ <wsdl:output message="wsdlns:dedicatedMailinglistSubscribeResponse"/>
+ <wsdl:fault name="failure" message="wsdlns:FailureMsg" />
+ </wsdl:operation>
+
+ <wsdl:operation name="serviceGroupInfo">
+ <wsdl:input message="wsdlns:serviceGroupInfoRequest"/>
+ <wsdl:output message="wsdlns:serviceGroupInfoResponse"/>
+ <wsdl:fault name="failure" message="wsdlns:FailureMsg" />
+ </wsdl:operation>
+
+ <wsdl:operation name="automatedMailFlush">
+ <wsdl:input message="wsdlns:automatedMailFlushRequest"/>
+ <wsdl:output message="wsdlns:automatedMailFlushResponse"/>
+ <wsdl:fault name="failure" message="wsdlns:FailureMsg" />
+ </wsdl:operation>
+
+ <wsdl:operation name="managedServicesNameUpdate">
+ <wsdl:input message="wsdlns:managedServicesNameUpdateRequest"/>
+ <wsdl:output message="wsdlns:managedServicesNameUpdateResponse"/>
+ <wsdl:fault name="failure" message="wsdlns:FailureMsg" />
+ </wsdl:operation>
+
+ <wsdl:operation name="popGetQuota">
+ <wsdl:input message="wsdlns:popGetQuotaRequest"/>
+ <wsdl:output message="wsdlns:popGetQuotaResponse"/>
+ <wsdl:fault name="failure" message="wsdlns:FailureMsg" />
+ </wsdl:operation>
+
+ <wsdl:operation name="telephonyHuntingGenericScreenOptionsModify">
+ <wsdl:input message="wsdlns:telephonyHuntingGenericScreenOptionsModifyRequest"/>
+ <wsdl:output message="wsdlns:telephonyHuntingGenericScreenOptionsModifyResponse"/>
+ <wsdl:fault name="failure" message="wsdlns:FailureMsg" />
+ </wsdl:operation>
+
+ <wsdl:operation name="ripeCreateOrganisation">
+ <wsdl:input message="wsdlns:ripeCreateOrganisationRequest"/>
+ <wsdl:output message="wsdlns:ripeCreateOrganisationResponse"/>
+ <wsdl:fault name="failure" message="wsdlns:FailureMsg" />
+ </wsdl:operation>
+
+ <wsdl:operation name="telephonyPlugAndPhoneInfo">
+ <wsdl:input message="wsdlns:telephonyPlugAndPhoneInfoRequest"/>
+ <wsdl:output message="wsdlns:telephonyPlugAndPhoneInfoResponse"/>
+ <wsdl:fault name="failure" message="wsdlns:FailureMsg" />
+ </wsdl:operation>
+
+ <wsdl:operation name="telephonyFaxCampaignDelete">
+ <wsdl:input message="wsdlns:telephonyFaxCampaignDeleteRequest"/>
+ <wsdl:output message="wsdlns:telephonyFaxCampaignDeleteResponse"/>
+ <wsdl:fault name="failure" message="wsdlns:FailureMsg" />
+ </wsdl:operation>
+
+ <wsdl:operation name="telephonyReversmentsRefundFromBillingAccount">
+ <wsdl:input message="wsdlns:telephonyReversmentsRefundFromBillingAccountRequest"/>
+ <wsdl:output message="wsdlns:telephonyReversmentsRefundFromBillingAccountResponse"/>
+ <wsdl:fault name="failure" message="wsdlns:FailureMsg" />
+ </wsdl:operation>
+
+ <wsdl:operation name="telephonyVoicemailMessageDelete">
+ <wsdl:input message="wsdlns:telephonyVoicemailMessageDeleteRequest"/>
+ <wsdl:output message="wsdlns:telephonyVoicemailMessageDeleteResponse"/>
+ <wsdl:fault name="failure" message="wsdlns:FailureMsg" />
+ </wsdl:operation>
+
+ <wsdl:operation name="dedicatedIpLoadBalancingNameModify">
+ <wsdl:input message="wsdlns:dedicatedIpLoadBalancingNameModifyRequest"/>
+ <wsdl:output message="wsdlns:dedicatedIpLoadBalancingNameModifyResponse"/>
+ <wsdl:fault name="failure" message="wsdlns:FailureMsg" />
+ </wsdl:operation>
+
+ <wsdl:operation name="telephonyLineOptionsList">
+ <wsdl:input message="wsdlns:telephonyLineOptionsListRequest"/>
+ <wsdl:output message="wsdlns:telephonyLineOptionsListResponse"/>
+ <wsdl:fault name="failure" message="wsdlns:FailureMsg" />
+ </wsdl:operation>
+
+ <wsdl:operation name="telephonySpareServiceInfo">
+ <wsdl:input message="wsdlns:telephonySpareServiceInfoRequest"/>
+ <wsdl:output message="wsdlns:telephonySpareServiceInfoResponse"/>
+ <wsdl:fault name="failure" message="wsdlns:FailureMsg" />
+ </wsdl:operation>
+
+ <wsdl:operation name="telephonyAbbreviatedNumberModify">
+ <wsdl:input message="wsdlns:telephonyAbbreviatedNumberModifyRequest"/>
+ <wsdl:output message="wsdlns:telephonyAbbreviatedNumberModifyResponse"/>
+ <wsdl:fault name="failure" message="wsdlns:FailureMsg" />
+ </wsdl:operation>
+
+ <wsdl:operation name="telephonyOfferSimultaneousLinesModify">
+ <wsdl:input message="wsdlns:telephonyOfferSimultaneousLinesModifyRequest"/>
+ <wsdl:output message="wsdlns:telephonyOfferSimultaneousLinesModifyResponse"/>
+ <wsdl:fault name="failure" message="wsdlns:FailureMsg" />
+ </wsdl:operation>
+
+ <wsdl:operation name="dedicatedMonitoringServiceList">
+ <wsdl:input message="wsdlns:dedicatedMonitoringServiceListRequest"/>
+ <wsdl:output message="wsdlns:dedicatedMonitoringServiceListResponse"/>
+ <wsdl:fault name="failure" message="wsdlns:FailureMsg" />
+ </wsdl:operation>
+
+ <wsdl:operation name="resellerDomainTransfer">
+ <wsdl:input message="wsdlns:resellerDomainTransferRequest"/>
+ <wsdl:output message="wsdlns:resellerDomainTransferResponse"/>
+ <wsdl:fault name="failure" message="wsdlns:FailureMsg" />
+ </wsdl:operation>
+
+ <wsdl:operation name="serviceGroupAddService">
+ <wsdl:input message="wsdlns:serviceGroupAddServiceRequest"/>
+ <wsdl:output message="wsdlns:serviceGroupAddServiceResponse"/>
+ <wsdl:fault name="failure" message="wsdlns:FailureMsg" />
+ </wsdl:operation>
+
+ </wsdl:portType>
+
+ <wsdl:binding name="managerBinding" type="wsdlns:managerPortType">
+ <soap:binding style="rpc" transport="http://schemas.xmlsoap.org/soap/http"/>
+
+ <wsdl:operation name="mailingListModeratorDel">
+ <soap:operation soapAction="http://soapi.ovh.com/manager#mailingListModeratorDel" />
+ <wsdl:input>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:output>
+ <wsdl:fault name="failure">
+ <soap:fault encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" name="failure" use="encoded" />
+ </wsdl:fault>
+ </wsdl:operation>
+
+ <wsdl:operation name="telephonyNumberInfo">
+ <soap:operation soapAction="http://soapi.ovh.com/manager#telephonyNumberInfo" />
+ <wsdl:input>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:output>
+ <wsdl:fault name="failure">
+ <soap:fault encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" name="failure" use="encoded" />
+ </wsdl:fault>
+ </wsdl:operation>
+
+ <wsdl:operation name="sqlpriveMysqlRestart">
+ <soap:operation soapAction="http://soapi.ovh.com/manager#sqlpriveMysqlRestart" />
+ <wsdl:input>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:output>
+ <wsdl:fault name="failure">
+ <soap:fault encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" name="failure" use="encoded" />
+ </wsdl:fault>
+ </wsdl:operation>
+
+ <wsdl:operation name="logout">
+ <soap:operation soapAction="http://soapi.ovh.com/manager#logout" />
+ <wsdl:input>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:output>
+ <wsdl:fault name="failure">
+ <soap:fault encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" name="failure" use="encoded" />
+ </wsdl:fault>
+ </wsdl:operation>
+
+ <wsdl:operation name="multiFtpChangeDirectory">
+ <soap:operation soapAction="http://soapi.ovh.com/manager#multiFtpChangeDirectory" />
+ <wsdl:input>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:output>
+ <wsdl:fault name="failure">
+ <soap:fault encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" name="failure" use="encoded" />
+ </wsdl:fault>
+ </wsdl:operation>
+
+ <wsdl:operation name="sqlpriveMysqlVersion">
+ <soap:operation soapAction="http://soapi.ovh.com/manager#sqlpriveMysqlVersion" />
+ <wsdl:input>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:output>
+ <wsdl:fault name="failure">
+ <soap:fault encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" name="failure" use="encoded" />
+ </wsdl:fault>
+ </wsdl:operation>
+
+ <wsdl:operation name="dedicatedReverseDel">
+ <soap:operation soapAction="http://soapi.ovh.com/manager#dedicatedReverseDel" />
+ <wsdl:input>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:output>
+ <wsdl:fault name="failure">
+ <soap:fault encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" name="failure" use="encoded" />
+ </wsdl:fault>
+ </wsdl:operation>
+
+ <wsdl:operation name="dedicatedDelServiceMonitoringAlert">
+ <soap:operation soapAction="http://soapi.ovh.com/manager#dedicatedDelServiceMonitoringAlert" />
+ <wsdl:input>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:output>
+ <wsdl:fault name="failure">
+ <soap:fault encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" name="failure" use="encoded" />
+ </wsdl:fault>
+ </wsdl:operation>
+
+ <wsdl:operation name="telephonyVoicemailOptionsList">
+ <soap:operation soapAction="http://soapi.ovh.com/manager#telephonyVoicemailOptionsList" />
+ <wsdl:input>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:output>
+ <wsdl:fault name="failure">
+ <soap:fault encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" name="failure" use="encoded" />
+ </wsdl:fault>
+ </wsdl:operation>
+
+ <wsdl:operation name="telephonyPhonebookSharePeerList">
+ <soap:operation soapAction="http://soapi.ovh.com/manager#telephonyPhonebookSharePeerList" />
+ <wsdl:input>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:output>
+ <wsdl:fault name="failure">
+ <soap:fault encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" name="failure" use="encoded" />
+ </wsdl:fault>
+ </wsdl:operation>
+
+ <wsdl:operation name="serviceGroupGetAllInfo">
+ <soap:operation soapAction="http://soapi.ovh.com/manager#serviceGroupGetAllInfo" />
+ <wsdl:input>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:output>
+ <wsdl:fault name="failure">
+ <soap:fault encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" name="failure" use="encoded" />
+ </wsdl:fault>
+ </wsdl:operation>
+
+ <wsdl:operation name="redirectedEmailAdd">
+ <soap:operation soapAction="http://soapi.ovh.com/manager#redirectedEmailAdd" />
+ <wsdl:input>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:output>
+ <wsdl:fault name="failure">
+ <soap:fault encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" name="failure" use="encoded" />
+ </wsdl:fault>
+ </wsdl:operation>
+
+ <wsdl:operation name="nicModifyInfos">
+ <soap:operation soapAction="http://soapi.ovh.com/manager#nicModifyInfos" />
+ <wsdl:input>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:output>
+ <wsdl:fault name="failure">
+ <soap:fault encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" name="failure" use="encoded" />
+ </wsdl:fault>
+ </wsdl:operation>
+
+ <wsdl:operation name="ripeGetRipeIds">
+ <soap:operation soapAction="http://soapi.ovh.com/manager#ripeGetRipeIds" />
+ <wsdl:input>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:output>
+ <wsdl:fault name="failure">
+ <soap:fault encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" name="failure" use="encoded" />
+ </wsdl:fault>
+ </wsdl:operation>
+
+ <wsdl:operation name="telephonyRedirectModify">
+ <soap:operation soapAction="http://soapi.ovh.com/manager#telephonyRedirectModify" />
+ <wsdl:input>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:output>
+ <wsdl:fault name="failure">
+ <soap:fault encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" name="failure" use="encoded" />
+ </wsdl:fault>
+ </wsdl:operation>
+
+ <wsdl:operation name="sqlpriveMysqlDatabaseImportFromFile">
+ <soap:operation soapAction="http://soapi.ovh.com/manager#sqlpriveMysqlDatabaseImportFromFile" />
+ <wsdl:input>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:output>
+ <wsdl:fault name="failure">
+ <soap:fault encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" name="failure" use="encoded" />
+ </wsdl:fault>
+ </wsdl:operation>
+
+ <wsdl:operation name="telephonyNumberModify">
+ <soap:operation soapAction="http://soapi.ovh.com/manager#telephonyNumberModify" />
+ <wsdl:input>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:output>
+ <wsdl:fault name="failure">
+ <soap:fault encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" name="failure" use="encoded" />
+ </wsdl:fault>
+ </wsdl:operation>
+
+ <wsdl:operation name="dedicatedAddServiceMonitoringAlertSMS">
+ <soap:operation soapAction="http://soapi.ovh.com/manager#dedicatedAddServiceMonitoringAlertSMS" />
+ <wsdl:input>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:output>
+ <wsdl:fault name="failure">
+ <soap:fault encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" name="failure" use="encoded" />
+ </wsdl:fault>
+ </wsdl:operation>
+
+ <wsdl:operation name="telephonyGetCitiesFromZip">
+ <soap:operation soapAction="http://soapi.ovh.com/manager#telephonyGetCitiesFromZip" />
+ <wsdl:input>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:output>
+ <wsdl:fault name="failure">
+ <soap:fault encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" name="failure" use="encoded" />
+ </wsdl:fault>
+ </wsdl:operation>
+
+ <wsdl:operation name="automatedMailGetVolumeHistory">
+ <soap:operation soapAction="http://soapi.ovh.com/manager#automatedMailGetVolumeHistory" />
+ <wsdl:input>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:output>
+ <wsdl:fault name="failure">
+ <soap:fault encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" name="failure" use="encoded" />
+ </wsdl:fault>
+ </wsdl:operation>
+
+ <wsdl:operation name="automatedMailGetTodo">
+ <soap:operation soapAction="http://soapi.ovh.com/manager#automatedMailGetTodo" />
+ <wsdl:input>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:output>
+ <wsdl:fault name="failure">
+ <soap:fault encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" name="failure" use="encoded" />
+ </wsdl:fault>
+ </wsdl:operation>
+
+ <wsdl:operation name="telephonySmsplusSendSmsMt">
+ <soap:operation soapAction="http://soapi.ovh.com/manager#telephonySmsplusSendSmsMt" />
+ <wsdl:input>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:output>
+ <wsdl:fault name="failure">
+ <soap:fault encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" name="failure" use="encoded" />
+ </wsdl:fault>
+ </wsdl:operation>
+
+ <wsdl:operation name="dedicatedIpLoadBalancingList">
+ <soap:operation soapAction="http://soapi.ovh.com/manager#dedicatedIpLoadBalancingList" />
+ <wsdl:input>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:output>
+ <wsdl:fault name="failure">
+ <soap:fault encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" name="failure" use="encoded" />
+ </wsdl:fault>
+ </wsdl:operation>
+
+ <wsdl:operation name="dedicatedBackupReinstallConfiguration">
+ <soap:operation soapAction="http://soapi.ovh.com/manager#dedicatedBackupReinstallConfiguration" />
+ <wsdl:input>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:output>
+ <wsdl:fault name="failure">
+ <soap:fault encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" name="failure" use="encoded" />
+ </wsdl:fault>
+ </wsdl:operation>
+
+ <wsdl:operation name="telephonySmsUserGetCsvAttachment">
+ <soap:operation soapAction="http://soapi.ovh.com/manager#telephonySmsUserGetCsvAttachment" />
+ <wsdl:input>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:output>
+ <wsdl:fault name="failure">
+ <soap:fault encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" name="failure" use="encoded" />
+ </wsdl:fault>
+ </wsdl:operation>
+
+ <wsdl:operation name="dedicatedBackupGetHisto">
+ <soap:operation soapAction="http://soapi.ovh.com/manager#dedicatedBackupGetHisto" />
+ <wsdl:input>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:output>
+ <wsdl:fault name="failure">
+ <soap:fault encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" name="failure" use="encoded" />
+ </wsdl:fault>
+ </wsdl:operation>
+
+ <wsdl:operation name="domainHostUpdate">
+ <soap:operation soapAction="http://soapi.ovh.com/manager#domainHostUpdate" />
+ <wsdl:input>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:output>
+ <wsdl:fault name="failure">
+ <soap:fault encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" name="failure" use="encoded" />
+ </wsdl:fault>
+ </wsdl:operation>
+
+ <wsdl:operation name="dedicatedBackupUpdate">
+ <soap:operation soapAction="http://soapi.ovh.com/manager#dedicatedBackupUpdate" />
+ <wsdl:input>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:output>
+ <wsdl:fault name="failure">
+ <soap:fault encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" name="failure" use="encoded" />
+ </wsdl:fault>
+ </wsdl:operation>
+
+ <wsdl:operation name="telephonyPhonebookOnSmsList">
+ <soap:operation soapAction="http://soapi.ovh.com/manager#telephonyPhonebookOnSmsList" />
+ <wsdl:input>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:output>
+ <wsdl:fault name="failure">
+ <soap:fault encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" name="failure" use="encoded" />
+ </wsdl:fault>
+ </wsdl:operation>
+
+ <wsdl:operation name="serviceGroupList">
+ <soap:operation soapAction="http://soapi.ovh.com/manager#serviceGroupList" />
+ <wsdl:input>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:output>
+ <wsdl:fault name="failure">
+ <soap:fault encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" name="failure" use="encoded" />
+ </wsdl:fault>
+ </wsdl:operation>
+
+ <wsdl:operation name="databaseChangePassword">
+ <soap:operation soapAction="http://soapi.ovh.com/manager#databaseChangePassword" />
+ <wsdl:input>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:output>
+ <wsdl:fault name="failure">
+ <soap:fault encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" name="failure" use="encoded" />
+ </wsdl:fault>
+ </wsdl:operation>
+
+ <wsdl:operation name="billingInvoiceList">
+ <soap:operation soapAction="http://soapi.ovh.com/manager#billingInvoiceList" />
+ <wsdl:input>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:output>
+ <wsdl:fault name="failure">
+ <soap:fault encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" name="failure" use="encoded" />
+ </wsdl:fault>
+ </wsdl:operation>
+
+ <wsdl:operation name="telephonySetClosureEvents">
+ <soap:operation soapAction="http://soapi.ovh.com/manager#telephonySetClosureEvents" />
+ <wsdl:input>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:output>
+ <wsdl:fault name="failure">
+ <soap:fault encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" name="failure" use="encoded" />
+ </wsdl:fault>
+ </wsdl:operation>
+
+ <wsdl:operation name="telephonyNicSetSipDomain">
+ <soap:operation soapAction="http://soapi.ovh.com/manager#telephonyNicSetSipDomain" />
+ <wsdl:input>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:output>
+ <wsdl:fault name="failure">
+ <soap:fault encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" name="failure" use="encoded" />
+ </wsdl:fault>
+ </wsdl:operation>
+
+ <wsdl:operation name="globalAccessByNic">
+ <soap:operation soapAction="http://soapi.ovh.com/manager#globalAccessByNic" />
+ <wsdl:input>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:output>
+ <wsdl:fault name="failure">
+ <soap:fault encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" name="failure" use="encoded" />
+ </wsdl:fault>
+ </wsdl:operation>
+
+ <wsdl:operation name="dedicatedNetbootGetRescueEmail">
+ <soap:operation soapAction="http://soapi.ovh.com/manager#dedicatedNetbootGetRescueEmail" />
+ <wsdl:input>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:output>
+ <wsdl:fault name="failure">
+ <soap:fault encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" name="failure" use="encoded" />
+ </wsdl:fault>
+ </wsdl:operation>
+
+ <wsdl:operation name="ticketListIncidentsByDomain">
+ <soap:operation soapAction="http://soapi.ovh.com/manager#ticketListIncidentsByDomain" />
+ <wsdl:input>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:output>
+ <wsdl:fault name="failure">
+ <soap:fault encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" name="failure" use="encoded" />
+ </wsdl:fault>
+ </wsdl:operation>
+
+ <wsdl:operation name="telephonySmsMultiSend">
+ <soap:operation soapAction="http://soapi.ovh.com/manager#telephonySmsMultiSend" />
+ <wsdl:input>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:output>
+ <wsdl:fault name="failure">
+ <soap:fault encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" name="failure" use="encoded" />
+ </wsdl:fault>
+ </wsdl:operation>
+
+ <wsdl:operation name="serviceListPaginated">
+ <soap:operation soapAction="http://soapi.ovh.com/manager#serviceListPaginated" />
+ <wsdl:input>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:output>
+ <wsdl:fault name="failure">
+ <soap:fault encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" name="failure" use="encoded" />
+ </wsdl:fault>
+ </wsdl:operation>
+
+ <wsdl:operation name="dedicatedRtmListBackdoor">
+ <soap:operation soapAction="http://soapi.ovh.com/manager#dedicatedRtmListBackdoor" />
+ <wsdl:input>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:output>
+ <wsdl:fault name="failure">
+ <soap:fault encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" name="failure" use="encoded" />
+ </wsdl:fault>
+ </wsdl:operation>
+
+ <wsdl:operation name="telephonySmsUserAddCsvAttachment">
+ <soap:operation soapAction="http://soapi.ovh.com/manager#telephonySmsUserAddCsvAttachment" />
+ <wsdl:input>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:output>
+ <wsdl:fault name="failure">
+ <soap:fault encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" name="failure" use="encoded" />
+ </wsdl:fault>
+ </wsdl:operation>
+
+ <wsdl:operation name="zoneEntryList">
+ <soap:operation soapAction="http://soapi.ovh.com/manager#zoneEntryList" />
+ <wsdl:input>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:output>
+ <wsdl:fault name="failure">
+ <soap:fault encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" name="failure" use="encoded" />
+ </wsdl:fault>
+ </wsdl:operation>
+
+ <wsdl:operation name="telephonySpareDel">
+ <soap:operation soapAction="http://soapi.ovh.com/manager#telephonySpareDel" />
+ <wsdl:input>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:output>
+ <wsdl:fault name="failure">
+ <soap:fault encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" name="failure" use="encoded" />
+ </wsdl:fault>
+ </wsdl:operation>
+
+ <wsdl:operation name="dnsDefaultInstallCustom">
+ <soap:operation soapAction="http://soapi.ovh.com/manager#dnsDefaultInstallCustom" />
+ <wsdl:input>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:output>
+ <wsdl:fault name="failure">
+ <soap:fault encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" name="failure" use="encoded" />
+ </wsdl:fault>
+ </wsdl:operation>
+
+ <wsdl:operation name="telephonyFaxHistory">
+ <soap:operation soapAction="http://soapi.ovh.com/manager#telephonyFaxHistory" />
+ <wsdl:input>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:output>
+ <wsdl:fault name="failure">
+ <soap:fault encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" name="failure" use="encoded" />
+ </wsdl:fault>
+ </wsdl:operation>
+
+ <wsdl:operation name="multiFtpChangePassword">
+ <soap:operation soapAction="http://soapi.ovh.com/manager#multiFtpChangePassword" />
+ <wsdl:input>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:output>
+ <wsdl:fault name="failure">
+ <soap:fault encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" name="failure" use="encoded" />
+ </wsdl:fault>
+ </wsdl:operation>
+
+ <wsdl:operation name="telephonyFreefaxToVoicefax">
+ <soap:operation soapAction="http://soapi.ovh.com/manager#telephonyFreefaxToVoicefax" />
+ <wsdl:input>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:output>
+ <wsdl:fault name="failure">
+ <soap:fault encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" name="failure" use="encoded" />
+ </wsdl:fault>
+ </wsdl:operation>
+
+ <wsdl:operation name="sqlpriveMysqlUserList">
+ <soap:operation soapAction="http://soapi.ovh.com/manager#sqlpriveMysqlUserList" />
+ <wsdl:input>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:output>
+ <wsdl:fault name="failure">
+ <soap:fault encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" name="failure" use="encoded" />
+ </wsdl:fault>
+ </wsdl:operation>
+
+ <wsdl:operation name="telephonyFaxSend">
+ <soap:operation soapAction="http://soapi.ovh.com/manager#telephonyFaxSend" />
+ <wsdl:input>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:output>
+ <wsdl:fault name="failure">
+ <soap:fault encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" name="failure" use="encoded" />
+ </wsdl:fault>
+ </wsdl:operation>
+
+ <wsdl:operation name="domainUnlock">
+ <soap:operation soapAction="http://soapi.ovh.com/manager#domainUnlock" />
+ <wsdl:input>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:output>
+ <wsdl:fault name="failure">
+ <soap:fault encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" name="failure" use="encoded" />
+ </wsdl:fault>
+ </wsdl:operation>
+
+ <wsdl:operation name="telephonyRestrictionList">
+ <soap:operation soapAction="http://soapi.ovh.com/manager#telephonyRestrictionList" />
+ <wsdl:input>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:output>
+ <wsdl:fault name="failure">
+ <soap:fault encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" name="failure" use="encoded" />
+ </wsdl:fault>
+ </wsdl:operation>
+
+ <wsdl:operation name="domainWhoisObfuscatorSetAll">
+ <soap:operation soapAction="http://soapi.ovh.com/manager#domainWhoisObfuscatorSetAll" />
+ <wsdl:input>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:output>
+ <wsdl:fault name="failure">
+ <soap:fault encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" name="failure" use="encoded" />
+ </wsdl:fault>
+ </wsdl:operation>
+
+ <wsdl:operation name="popDetachMasterNic">
+ <soap:operation soapAction="http://soapi.ovh.com/manager#popDetachMasterNic" />
+ <wsdl:input>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:output>
+ <wsdl:fault name="failure">
+ <soap:fault encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" name="failure" use="encoded" />
+ </wsdl:fault>
+ </wsdl:operation>
+
+ <wsdl:operation name="telephonyBillList">
+ <soap:operation soapAction="http://soapi.ovh.com/manager#telephonyBillList" />
+ <wsdl:input>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:output>
+ <wsdl:fault name="failure">
+ <soap:fault encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" name="failure" use="encoded" />
+ </wsdl:fault>
+ </wsdl:operation>
+
+ <wsdl:operation name="telephonyNumberCustomList">
+ <soap:operation soapAction="http://soapi.ovh.com/manager#telephonyNumberCustomList" />
+ <wsdl:input>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:output>
+ <wsdl:fault name="failure">
+ <soap:fault encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" name="failure" use="encoded" />
+ </wsdl:fault>
+ </wsdl:operation>
+
+ <wsdl:operation name="dedicatedMonitoringNotificationCreate">
+ <soap:operation soapAction="http://soapi.ovh.com/manager#dedicatedMonitoringNotificationCreate" />
+ <wsdl:input>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:output>
+ <wsdl:fault name="failure">
+ <soap:fault encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" name="failure" use="encoded" />
+ </wsdl:fault>
+ </wsdl:operation>
+
+ <wsdl:operation name="telephonyPlugAndPhoneSkinModify">
+ <soap:operation soapAction="http://soapi.ovh.com/manager#telephonyPlugAndPhoneSkinModify" />
+ <wsdl:input>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:output>
+ <wsdl:fault name="failure">
+ <soap:fault encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" name="failure" use="encoded" />
+ </wsdl:fault>
+ </wsdl:operation>
+
+ <wsdl:operation name="domainList">
+ <soap:operation soapAction="http://soapi.ovh.com/manager#domainList" />
+ <wsdl:input>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:output>
+ <wsdl:fault name="failure">
+ <soap:fault encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" name="failure" use="encoded" />
+ </wsdl:fault>
+ </wsdl:operation>
+
+ <wsdl:operation name="telephonyFaxOptionsModify">
+ <soap:operation soapAction="http://soapi.ovh.com/manager#telephonyFaxOptionsModify" />
+ <wsdl:input>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:output>
+ <wsdl:fault name="failure">
+ <soap:fault encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" name="failure" use="encoded" />
+ </wsdl:fault>
+ </wsdl:operation>
+
+ <wsdl:operation name="telephonyBillingAccountSummary">
+ <soap:operation soapAction="http://soapi.ovh.com/manager#telephonyBillingAccountSummary" />
+ <wsdl:input>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:output>
+ <wsdl:fault name="failure">
+ <soap:fault encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" name="failure" use="encoded" />
+ </wsdl:fault>
+ </wsdl:operation>
+
+ <wsdl:operation name="overquotaInfo">
+ <soap:operation soapAction="http://soapi.ovh.com/manager#overquotaInfo" />
+ <wsdl:input>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:output>
+ <wsdl:fault name="failure">
+ <soap:fault encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" name="failure" use="encoded" />
+ </wsdl:fault>
+ </wsdl:operation>
+
+ <wsdl:operation name="telephonyConferenceSetAnnounceFile">
+ <soap:operation soapAction="http://soapi.ovh.com/manager#telephonyConferenceSetAnnounceFile" />
+ <wsdl:input>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:output>
+ <wsdl:fault name="failure">
+ <soap:fault encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" name="failure" use="encoded" />
+ </wsdl:fault>
+ </wsdl:operation>
+
+ <wsdl:operation name="automatedMailGetErrors">
+ <soap:operation soapAction="http://soapi.ovh.com/manager#automatedMailGetErrors" />
+ <wsdl:input>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:output>
+ <wsdl:fault name="failure">
+ <soap:fault encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" name="failure" use="encoded" />
+ </wsdl:fault>
+ </wsdl:operation>
+
+ <wsdl:operation name="telephonyPhonebookOnSmsAdd">
+ <soap:operation soapAction="http://soapi.ovh.com/manager#telephonyPhonebookOnSmsAdd" />
+ <wsdl:input>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:output>
+ <wsdl:fault name="failure">
+ <soap:fault encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" name="failure" use="encoded" />
+ </wsdl:fault>
+ </wsdl:operation>
+
+ <wsdl:operation name="telephonyClick2CallUserDel">
+ <soap:operation soapAction="http://soapi.ovh.com/manager#telephonyClick2CallUserDel" />
+ <wsdl:input>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:output>
+ <wsdl:fault name="failure">
+ <soap:fault encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" name="failure" use="encoded" />
+ </wsdl:fault>
+ </wsdl:operation>
+
+ <wsdl:operation name="emailGetCapabilities">
+ <soap:operation soapAction="http://soapi.ovh.com/manager#emailGetCapabilities" />
+ <wsdl:input>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:output>
+ <wsdl:fault name="failure">
+ <soap:fault encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" name="failure" use="encoded" />
+ </wsdl:fault>
+ </wsdl:operation>
+
+ <wsdl:operation name="telephonySmsAccountList">
+ <soap:operation soapAction="http://soapi.ovh.com/manager#telephonySmsAccountList" />
+ <wsdl:input>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:output>
+ <wsdl:fault name="failure">
+ <soap:fault encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" name="failure" use="encoded" />
+ </wsdl:fault>
+ </wsdl:operation>
+
+ <wsdl:operation name="telephonyBillingAccountConsumptionCSVByMail">
+ <soap:operation soapAction="http://soapi.ovh.com/manager#telephonyBillingAccountConsumptionCSVByMail" />
+ <wsdl:input>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:output>
+ <wsdl:fault name="failure">
+ <soap:fault encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" name="failure" use="encoded" />
+ </wsdl:fault>
+ </wsdl:operation>
+
+ <wsdl:operation name="telephonyFMHuntingModificationVoicemail">
+ <soap:operation soapAction="http://soapi.ovh.com/manager#telephonyFMHuntingModificationVoicemail" />
+ <wsdl:input>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:output>
+ <wsdl:fault name="failure">
+ <soap:fault encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" name="failure" use="encoded" />
+ </wsdl:fault>
+ </wsdl:operation>
+
+ <wsdl:operation name="dedicatedBackupList">
+ <soap:operation soapAction="http://soapi.ovh.com/manager#dedicatedBackupList" />
+ <wsdl:input>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:output>
+ <wsdl:fault name="failure">
+ <soap:fault encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" name="failure" use="encoded" />
+ </wsdl:fault>
+ </wsdl:operation>
+
+ <wsdl:operation name="telephonyOrdersFollowingUp">
+ <soap:operation soapAction="http://soapi.ovh.com/manager#telephonyOrdersFollowingUp" />
+ <wsdl:input>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:output>
+ <wsdl:fault name="failure">
+ <soap:fault encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" name="failure" use="encoded" />
+ </wsdl:fault>
+ </wsdl:operation>
+
+ <wsdl:operation name="telephonyPhonebookOnGroupContactAdd">
+ <soap:operation soapAction="http://soapi.ovh.com/manager#telephonyPhonebookOnGroupContactAdd" />
+ <wsdl:input>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:output>
+ <wsdl:fault name="failure">
+ <soap:fault encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" name="failure" use="encoded" />
+ </wsdl:fault>
+ </wsdl:operation>
+
+ <wsdl:operation name="ortDomainDel">
+ <soap:operation soapAction="http://soapi.ovh.com/manager#ortDomainDel" />
+ <wsdl:input>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:output>
+ <wsdl:fault name="failure">
+ <soap:fault encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" name="failure" use="encoded" />
+ </wsdl:fault>
+ </wsdl:operation>
+
+ <wsdl:operation name="mailingListModeratorList">
+ <soap:operation soapAction="http://soapi.ovh.com/manager#mailingListModeratorList" />
+ <wsdl:input>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:output>
+ <wsdl:fault name="failure">
+ <soap:fault encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" name="failure" use="encoded" />
+ </wsdl:fault>
+ </wsdl:operation>
+
+ <wsdl:operation name="telephonyBillDetailsCSV">
+ <soap:operation soapAction="http://soapi.ovh.com/manager#telephonyBillDetailsCSV" />
+ <wsdl:input>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:output>
+ <wsdl:fault name="failure">
+ <soap:fault encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" name="failure" use="encoded" />
+ </wsdl:fault>
+ </wsdl:operation>
+
+ <wsdl:operation name="popList">
+ <soap:operation soapAction="http://soapi.ovh.com/manager#popList" />
+ <wsdl:input>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:output>
+ <wsdl:fault name="failure">
+ <soap:fault encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" name="failure" use="encoded" />
+ </wsdl:fault>
+ </wsdl:operation>
+
+ <wsdl:operation name="sqlpriveMysqlRamUsed">
+ <soap:operation soapAction="http://soapi.ovh.com/manager#sqlpriveMysqlRamUsed" />
+ <wsdl:input>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:output>
+ <wsdl:fault name="failure">
+ <soap:fault encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" name="failure" use="encoded" />
+ </wsdl:fault>
+ </wsdl:operation>
+
+ <wsdl:operation name="telephonySmsCreditLeft">
+ <soap:operation soapAction="http://soapi.ovh.com/manager#telephonySmsCreditLeft" />
+ <wsdl:input>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:output>
+ <wsdl:fault name="failure">
+ <soap:fault encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" name="failure" use="encoded" />
+ </wsdl:fault>
+ </wsdl:operation>
+
+ <wsdl:operation name="prepaidDomainCreate">
+ <soap:operation soapAction="http://soapi.ovh.com/manager#prepaidDomainCreate" />
+ <wsdl:input>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:output>
+ <wsdl:fault name="failure">
+ <soap:fault encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" name="failure" use="encoded" />
+ </wsdl:fault>
+ </wsdl:operation>
+
+ <wsdl:operation name="telephonyDirectoryPJCode">
+ <soap:operation soapAction="http://soapi.ovh.com/manager#telephonyDirectoryPJCode" />
+ <wsdl:input>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:output>
+ <wsdl:fault name="failure">
+ <soap:fault encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" name="failure" use="encoded" />
+ </wsdl:fault>
+ </wsdl:operation>
+
+ <wsdl:operation name="telephonyListSummationCallsFromBillingAccount">
+ <soap:operation soapAction="http://soapi.ovh.com/manager#telephonyListSummationCallsFromBillingAccount" />
+ <wsdl:input>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:output>
+ <wsdl:fault name="failure">
+ <soap:fault encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" name="failure" use="encoded" />
+ </wsdl:fault>
+ </wsdl:operation>
+
+ <wsdl:operation name="rpsMigrationGetProgressStatus">
+ <soap:operation soapAction="http://soapi.ovh.com/manager#rpsMigrationGetProgressStatus" />
+ <wsdl:input>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:output>
+ <wsdl:fault name="failure">
+ <soap:fault encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" name="failure" use="encoded" />
+ </wsdl:fault>
+ </wsdl:operation>
+
+ <wsdl:operation name="telephonyBillingAccountDescriptionModify">
+ <soap:operation soapAction="http://soapi.ovh.com/manager#telephonyBillingAccountDescriptionModify" />
+ <wsdl:input>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:output>
+ <wsdl:fault name="failure">
+ <soap:fault encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" name="failure" use="encoded" />
+ </wsdl:fault>
+ </wsdl:operation>
+
+ <wsdl:operation name="dedicatedNetbootGetAll">
+ <soap:operation soapAction="http://soapi.ovh.com/manager#dedicatedNetbootGetAll" />
+ <wsdl:input>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:output>
+ <wsdl:fault name="failure">
+ <soap:fault encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" name="failure" use="encoded" />
+ </wsdl:fault>
+ </wsdl:operation>
+
+ <wsdl:operation name="emailDomainListByMasterNic">
+ <soap:operation soapAction="http://soapi.ovh.com/manager#emailDomainListByMasterNic" />
+ <wsdl:input>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:output>
+ <wsdl:fault name="failure">
+ <soap:fault encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" name="failure" use="encoded" />
+ </wsdl:fault>
+ </wsdl:operation>
+
+ <wsdl:operation name="telephonyAbbreviatedNumberDel">
+ <soap:operation soapAction="http://soapi.ovh.com/manager#telephonyAbbreviatedNumberDel" />
+ <wsdl:input>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:output>
+ <wsdl:fault name="failure">
+ <soap:fault encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" name="failure" use="encoded" />
+ </wsdl:fault>
+ </wsdl:operation>
+
+ <wsdl:operation name="resellerDomainTransferIT">
+ <soap:operation soapAction="http://soapi.ovh.com/manager#resellerDomainTransferIT" />
+ <wsdl:input>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:output>
+ <wsdl:fault name="failure">
+ <soap:fault encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" name="failure" use="encoded" />
+ </wsdl:fault>
+ </wsdl:operation>
+
+ <wsdl:operation name="dedicatedVirtualMacIpAvailableGetList">
+ <soap:operation soapAction="http://soapi.ovh.com/manager#dedicatedVirtualMacIpAvailableGetList" />
+ <wsdl:input>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:output>
+ <wsdl:fault name="failure">
+ <soap:fault encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" name="failure" use="encoded" />
+ </wsdl:fault>
+ </wsdl:operation>
+
+ <wsdl:operation name="telephonyFaxOptionsList">
+ <soap:operation soapAction="http://soapi.ovh.com/manager#telephonyFaxOptionsList" />
+ <wsdl:input>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:output>
+ <wsdl:fault name="failure">
+ <soap:fault encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" name="failure" use="encoded" />
+ </wsdl:fault>
+ </wsdl:operation>
+
+ <wsdl:operation name="ticketListIncidents">
+ <soap:operation soapAction="http://soapi.ovh.com/manager#ticketListIncidents" />
+ <wsdl:input>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:output>
+ <wsdl:fault name="failure">
+ <soap:fault encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" name="failure" use="encoded" />
+ </wsdl:fault>
+ </wsdl:operation>
+
+ <wsdl:operation name="infrastructureReverseModify">
+ <soap:operation soapAction="http://soapi.ovh.com/manager#infrastructureReverseModify" />
+ <wsdl:input>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:output>
+ <wsdl:fault name="failure">
+ <soap:fault encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" name="failure" use="encoded" />
+ </wsdl:fault>
+ </wsdl:operation>
+
+ <wsdl:operation name="dedicatedMonitoringSMSCreate">
+ <soap:operation soapAction="http://soapi.ovh.com/manager#dedicatedMonitoringSMSCreate" />
+ <wsdl:input>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:output>
+ <wsdl:fault name="failure">
+ <soap:fault encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" name="failure" use="encoded" />
+ </wsdl:fault>
+ </wsdl:operation>
+
+ <wsdl:operation name="telephonyTrunkExternalDisplayedNumberAdd">
+ <soap:operation soapAction="http://soapi.ovh.com/manager#telephonyTrunkExternalDisplayedNumberAdd" />
+ <wsdl:input>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:output>
+ <wsdl:fault name="failure">
+ <soap:fault encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" name="failure" use="encoded" />
+ </wsdl:fault>
+ </wsdl:operation>
+
+ <wsdl:operation name="dedicatedRipeQuery">
+ <soap:operation soapAction="http://soapi.ovh.com/manager#dedicatedRipeQuery" />
+ <wsdl:input>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:output>
+ <wsdl:fault name="failure">
+ <soap:fault encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" name="failure" use="encoded" />
+ </wsdl:fault>
+ </wsdl:operation>
+
+ <wsdl:operation name="responderEmailList">
+ <soap:operation soapAction="http://soapi.ovh.com/manager#responderEmailList" />
+ <wsdl:input>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:output>
+ <wsdl:fault name="failure">
+ <soap:fault encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" name="failure" use="encoded" />
+ </wsdl:fault>
+ </wsdl:operation>
+
+ <wsdl:operation name="telephonyBillingAccountSet">
+ <soap:operation soapAction="http://soapi.ovh.com/manager#telephonyBillingAccountSet" />
+ <wsdl:input>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:output>
+ <wsdl:fault name="failure">
+ <soap:fault encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" name="failure" use="encoded" />
+ </wsdl:fault>
+ </wsdl:operation>
+
+ <wsdl:operation name="telephonyDepositMovementModify">
+ <soap:operation soapAction="http://soapi.ovh.com/manager#telephonyDepositMovementModify" />
+ <wsdl:input>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:output>
+ <wsdl:fault name="failure">
+ <soap:fault encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" name="failure" use="encoded" />
+ </wsdl:fault>
+ </wsdl:operation>
+
+ <wsdl:operation name="telephonyClick2CallDo">
+ <soap:operation soapAction="http://soapi.ovh.com/manager#telephonyClick2CallDo" />
+ <wsdl:input>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:output>
+ <wsdl:fault name="failure">
+ <soap:fault encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" name="failure" use="encoded" />
+ </wsdl:fault>
+ </wsdl:operation>
+
+ <wsdl:operation name="telephonySpecialNumberOrder">
+ <soap:operation soapAction="http://soapi.ovh.com/manager#telephonySpecialNumberOrder" />
+ <wsdl:input>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:output>
+ <wsdl:fault name="failure">
+ <soap:fault encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" name="failure" use="encoded" />
+ </wsdl:fault>
+ </wsdl:operation>
+
+ <wsdl:operation name="telephonyVoicemailOptionsModify">
+ <soap:operation soapAction="http://soapi.ovh.com/manager#telephonyVoicemailOptionsModify" />
+ <wsdl:input>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:output>
+ <wsdl:fault name="failure">
+ <soap:fault encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" name="failure" use="encoded" />
+ </wsdl:fault>
+ </wsdl:operation>
+
+ <wsdl:operation name="telephonyLineSwitchOldOffer">
+ <soap:operation soapAction="http://soapi.ovh.com/manager#telephonyLineSwitchOldOffer" />
+ <wsdl:input>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:output>
+ <wsdl:fault name="failure">
+ <soap:fault encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" name="failure" use="encoded" />
+ </wsdl:fault>
+ </wsdl:operation>
+
+ <wsdl:operation name="zoneEntryAddCustom">
+ <soap:operation soapAction="http://soapi.ovh.com/manager#zoneEntryAddCustom" />
+ <wsdl:input>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:output>
+ <wsdl:fault name="failure">
+ <soap:fault encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" name="failure" use="encoded" />
+ </wsdl:fault>
+ </wsdl:operation>
+
+ <wsdl:operation name="domainWhoisObfuscatorInfo">
+ <soap:operation soapAction="http://soapi.ovh.com/manager#domainWhoisObfuscatorInfo" />
+ <wsdl:input>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:output>
+ <wsdl:fault name="failure">
+ <soap:fault encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" name="failure" use="encoded" />
+ </wsdl:fault>
+ </wsdl:operation>
+
+ <wsdl:operation name="telephonyPhonebookOnGroupContactDel">
+ <soap:operation soapAction="http://soapi.ovh.com/manager#telephonyPhonebookOnGroupContactDel" />
+ <wsdl:input>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:output>
+ <wsdl:fault name="failure">
+ <soap:fault encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" name="failure" use="encoded" />
+ </wsdl:fault>
+ </wsdl:operation>
+
+ <wsdl:operation name="ticketReopen">
+ <soap:operation soapAction="http://soapi.ovh.com/manager#ticketReopen" />
+ <wsdl:input>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:output>
+ <wsdl:fault name="failure">
+ <soap:fault encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" name="failure" use="encoded" />
+ </wsdl:fault>
+ </wsdl:operation>
+
+ <wsdl:operation name="telephonySpareAdd">
+ <soap:operation soapAction="http://soapi.ovh.com/manager#telephonySpareAdd" />
+ <wsdl:input>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:output>
+ <wsdl:fault name="failure">
+ <soap:fault encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" name="failure" use="encoded" />
+ </wsdl:fault>
+ </wsdl:operation>
+
+ <wsdl:operation name="telephonySmsAddCsvAttachment">
+ <soap:operation soapAction="http://soapi.ovh.com/manager#telephonySmsAddCsvAttachment" />
+ <wsdl:input>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:output>
+ <wsdl:fault name="failure">
+ <soap:fault encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" name="failure" use="encoded" />
+ </wsdl:fault>
+ </wsdl:operation>
+
+ <wsdl:operation name="dedicatedBackupFtpPassword">
+ <soap:operation soapAction="http://soapi.ovh.com/manager#dedicatedBackupFtpPassword" />
+ <wsdl:input>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:output>
+ <wsdl:fault name="failure">
+ <soap:fault encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" name="failure" use="encoded" />
+ </wsdl:fault>
+ </wsdl:operation>
+
+ <wsdl:operation name="telephonyDefaultPrivateHolidaysEvents">
+ <soap:operation soapAction="http://soapi.ovh.com/manager#telephonyDefaultPrivateHolidaysEvents" />
+ <wsdl:input>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:output>
+ <wsdl:fault name="failure">
+ <soap:fault encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" name="failure" use="encoded" />
+ </wsdl:fault>
+ </wsdl:operation>
+
+ <wsdl:operation name="hostingAccessByNic">
+ <soap:operation soapAction="http://soapi.ovh.com/manager#hostingAccessByNic" />
+ <wsdl:input>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:output>
+ <wsdl:fault name="failure">
+ <soap:fault encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" name="failure" use="encoded" />
+ </wsdl:fault>
+ </wsdl:operation>
+
+ <wsdl:operation name="sqlpriveAlertInfo">
+ <soap:operation soapAction="http://soapi.ovh.com/manager#sqlpriveAlertInfo" />
+ <wsdl:input>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:output>
+ <wsdl:fault name="failure">
+ <soap:fault encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" name="failure" use="encoded" />
+ </wsdl:fault>
+ </wsdl:operation>
+
+ <wsdl:operation name="mailingListFullInfo">
+ <soap:operation soapAction="http://soapi.ovh.com/manager#mailingListFullInfo" />
+ <wsdl:input>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:output>
+ <wsdl:fault name="failure">
+ <soap:fault encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" name="failure" use="encoded" />
+ </wsdl:fault>
+ </wsdl:operation>
+
+ <wsdl:operation name="dedicatedRtmBackdoorUpdateAlert">
+ <soap:operation soapAction="http://soapi.ovh.com/manager#dedicatedRtmBackdoorUpdateAlert" />
+ <wsdl:input>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:output>
+ <wsdl:fault name="failure">
+ <soap:fault encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" name="failure" use="encoded" />
+ </wsdl:fault>
+ </wsdl:operation>
+
+ <wsdl:operation name="responderEmailInfo">
+ <soap:operation soapAction="http://soapi.ovh.com/manager#responderEmailInfo" />
+ <wsdl:input>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:output>
+ <wsdl:fault name="failure">
+ <soap:fault encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" name="failure" use="encoded" />
+ </wsdl:fault>
+ </wsdl:operation>
+
+ <wsdl:operation name="telephonyToneRemoteUpload">
+ <soap:operation soapAction="http://soapi.ovh.com/manager#telephonyToneRemoteUpload" />
+ <wsdl:input>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:output>
+ <wsdl:fault name="failure">
+ <soap:fault encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" name="failure" use="encoded" />
+ </wsdl:fault>
+ </wsdl:operation>
+
+ <wsdl:operation name="telephonyNumberGetFrWayNamesFromInsee">
+ <soap:operation soapAction="http://soapi.ovh.com/manager#telephonyNumberGetFrWayNamesFromInsee" />
+ <wsdl:input>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:output>
+ <wsdl:fault name="failure">
+ <soap:fault encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" name="failure" use="encoded" />
+ </wsdl:fault>
+ </wsdl:operation>
+
+ <wsdl:operation name="dedicatedSecondaryDNSAdd">
+ <soap:operation soapAction="http://soapi.ovh.com/manager#dedicatedSecondaryDNSAdd" />
+ <wsdl:input>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:output>
+ <wsdl:fault name="failure">
+ <soap:fault encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" name="failure" use="encoded" />
+ </wsdl:fault>
+ </wsdl:operation>
+
+ <wsdl:operation name="popUpgradeQuota">
+ <soap:operation soapAction="http://soapi.ovh.com/manager#popUpgradeQuota" />
+ <wsdl:input>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:output>
+ <wsdl:fault name="failure">
+ <soap:fault encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" name="failure" use="encoded" />
+ </wsdl:fault>
+ </wsdl:operation>
+
+ <wsdl:operation name="telephonyFMHuntingModificationMode">
+ <soap:operation soapAction="http://soapi.ovh.com/manager#telephonyFMHuntingModificationMode" />
+ <wsdl:input>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:output>
+ <wsdl:fault name="failure">
+ <soap:fault encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" name="failure" use="encoded" />
+ </wsdl:fault>
+ </wsdl:operation>
+
+ <wsdl:operation name="sqlpriveList">
+ <soap:operation soapAction="http://soapi.ovh.com/manager#sqlpriveList" />
+ <wsdl:input>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:output>
+ <wsdl:fault name="failure">
+ <soap:fault encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" name="failure" use="encoded" />
+ </wsdl:fault>
+ </wsdl:operation>
+
+ <wsdl:operation name="dnsInstall">
+ <soap:operation soapAction="http://soapi.ovh.com/manager#dnsInstall" />
+ <wsdl:input>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:output>
+ <wsdl:fault name="failure">
+ <soap:fault encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" name="failure" use="encoded" />
+ </wsdl:fault>
+ </wsdl:operation>
+
+ <wsdl:operation name="telephonyAliasToSipOffer">
+ <soap:operation soapAction="http://soapi.ovh.com/manager#telephonyAliasToSipOffer" />
+ <wsdl:input>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:output>
+ <wsdl:fault name="failure">
+ <soap:fault encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" name="failure" use="encoded" />
+ </wsdl:fault>
+ </wsdl:operation>
+
+ <wsdl:operation name="hostingSummary">
+ <soap:operation soapAction="http://soapi.ovh.com/manager#hostingSummary" />
+ <wsdl:input>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:output>
+ <wsdl:fault name="failure">
+ <soap:fault encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" name="failure" use="encoded" />
+ </wsdl:fault>
+ </wsdl:operation>
+
+ <wsdl:operation name="emailDomainSummary">
+ <soap:operation soapAction="http://soapi.ovh.com/manager#emailDomainSummary" />
+ <wsdl:input>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:output>
+ <wsdl:fault name="failure">
+ <soap:fault encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" name="failure" use="encoded" />
+ </wsdl:fault>
+ </wsdl:operation>
+
+ <wsdl:operation name="dedicatedRtmGetStatus">
+ <soap:operation soapAction="http://soapi.ovh.com/manager#dedicatedRtmGetStatus" />
+ <wsdl:input>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:output>
+ <wsdl:fault name="failure">
+ <soap:fault encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" name="failure" use="encoded" />
+ </wsdl:fault>
+ </wsdl:operation>
+
+ <wsdl:operation name="managedServicesPartitionQuotaUsed">
+ <soap:operation soapAction="http://soapi.ovh.com/manager#managedServicesPartitionQuotaUsed" />
+ <wsdl:input>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:output>
+ <wsdl:fault name="failure">
+ <soap:fault encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" name="failure" use="encoded" />
+ </wsdl:fault>
+ </wsdl:operation>
+
+ <wsdl:operation name="dedicatedNetbootGetAvailable">
+ <soap:operation soapAction="http://soapi.ovh.com/manager#dedicatedNetbootGetAvailable" />
+ <wsdl:input>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:output>
+ <wsdl:fault name="failure">
+ <soap:fault encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" name="failure" use="encoded" />
+ </wsdl:fault>
+ </wsdl:operation>
+
+ <wsdl:operation name="telephonySmsUserMultiSend">
+ <soap:operation soapAction="http://soapi.ovh.com/manager#telephonySmsUserMultiSend" />
+ <wsdl:input>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:output>
+ <wsdl:fault name="failure">
+ <soap:fault encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" name="failure" use="encoded" />
+ </wsdl:fault>
+ </wsdl:operation>
+
+ <wsdl:operation name="telephonySmsGetCsvAttachment">
+ <soap:operation soapAction="http://soapi.ovh.com/manager#telephonySmsGetCsvAttachment" />
+ <wsdl:input>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:output>
+ <wsdl:fault name="failure">
+ <soap:fault encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" name="failure" use="encoded" />
+ </wsdl:fault>
+ </wsdl:operation>
+
+ <wsdl:operation name="telephonySmsHistory">
+ <soap:operation soapAction="http://soapi.ovh.com/manager#telephonySmsHistory" />
+ <wsdl:input>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:output>
+ <wsdl:fault name="failure">
+ <soap:fault encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" name="failure" use="encoded" />
+ </wsdl:fault>
+ </wsdl:operation>
+
+ <wsdl:operation name="zoneEntryModify">
+ <soap:operation soapAction="http://soapi.ovh.com/manager#zoneEntryModify" />
+ <wsdl:input>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:output>
+ <wsdl:fault name="failure">
+ <soap:fault encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" name="failure" use="encoded" />
+ </wsdl:fault>
+ </wsdl:operation>
+
+ <wsdl:operation name="ticketListContact">
+ <soap:operation soapAction="http://soapi.ovh.com/manager#ticketListContact" />
+ <wsdl:input>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:output>
+ <wsdl:fault name="failure">
+ <soap:fault encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" name="failure" use="encoded" />
+ </wsdl:fault>
+ </wsdl:operation>
+
+ <wsdl:operation name="dedicatedMailinglistGetAllowed">
+ <soap:operation soapAction="http://soapi.ovh.com/manager#dedicatedMailinglistGetAllowed" />
+ <wsdl:input>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:output>
+ <wsdl:fault name="failure">
+ <soap:fault encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" name="failure" use="encoded" />
+ </wsdl:fault>
+ </wsdl:operation>
+
+ <wsdl:operation name="dedicatedBackupInfo">
+ <soap:operation soapAction="http://soapi.ovh.com/manager#dedicatedBackupInfo" />
+ <wsdl:input>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:output>
+ <wsdl:fault name="failure">
+ <soap:fault encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" name="failure" use="encoded" />
+ </wsdl:fault>
+ </wsdl:operation>
+
+ <wsdl:operation name="telephonyAbbreviatedNumberOnGroupModify">
+ <soap:operation soapAction="http://soapi.ovh.com/manager#telephonyAbbreviatedNumberOnGroupModify" />
+ <wsdl:input>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:output>
+ <wsdl:fault name="failure">
+ <soap:fault encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" name="failure" use="encoded" />
+ </wsdl:fault>
+ </wsdl:operation>
+
+ <wsdl:operation name="accountSummary">
+ <soap:operation soapAction="http://soapi.ovh.com/manager#accountSummary" />
+ <wsdl:input>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:output>
+ <wsdl:fault name="failure">
+ <soap:fault encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" name="failure" use="encoded" />
+ </wsdl:fault>
+ </wsdl:operation>
+
+ <wsdl:operation name="subDomainDel">
+ <soap:operation soapAction="http://soapi.ovh.com/manager#subDomainDel" />
+ <wsdl:input>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:output>
+ <wsdl:fault name="failure">
+ <soap:fault encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" name="failure" use="encoded" />
+ </wsdl:fault>
+ </wsdl:operation>
+
+ <wsdl:operation name="telephonyHuntingGenericScreenList">
+ <soap:operation soapAction="http://soapi.ovh.com/manager#telephonyHuntingGenericScreenList" />
+ <wsdl:input>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:output>
+ <wsdl:fault name="failure">
+ <soap:fault encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" name="failure" use="encoded" />
+ </wsdl:fault>
+ </wsdl:operation>
+
+ <wsdl:operation name="emailFilterAdd">
+ <soap:operation soapAction="http://soapi.ovh.com/manager#emailFilterAdd" />
+ <wsdl:input>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:output>
+ <wsdl:fault name="failure">
+ <soap:fault encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" name="failure" use="encoded" />
+ </wsdl:fault>
+ </wsdl:operation>
+
+ <wsdl:operation name="telephonyHuntingGenericScreenStatus">
+ <soap:operation soapAction="http://soapi.ovh.com/manager#telephonyHuntingGenericScreenStatus" />
+ <wsdl:input>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:output>
+ <wsdl:fault name="failure">
+ <soap:fault encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" name="failure" use="encoded" />
+ </wsdl:fault>
+ </wsdl:operation>
+
+ <wsdl:operation name="telephonyHuntingModificationMembers">
+ <soap:operation soapAction="http://soapi.ovh.com/manager#telephonyHuntingModificationMembers" />
+ <wsdl:input>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:output>
+ <wsdl:fault name="failure">
+ <soap:fault encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" name="failure" use="encoded" />
+ </wsdl:fault>
+ </wsdl:operation>
+
+ <wsdl:operation name="rpsMigrationStatus">
+ <soap:operation soapAction="http://soapi.ovh.com/manager#rpsMigrationStatus" />
+ <wsdl:input>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:output>
+ <wsdl:fault name="failure">
+ <soap:fault encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" name="failure" use="encoded" />
+ </wsdl:fault>
+ </wsdl:operation>
+
+ <wsdl:operation name="dnsReset">
+ <soap:operation soapAction="http://soapi.ovh.com/manager#dnsReset" />
+ <wsdl:input>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:output>
+ <wsdl:fault name="failure">
+ <soap:fault encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" name="failure" use="encoded" />
+ </wsdl:fault>
+ </wsdl:operation>
+
+ <wsdl:operation name="telephonyVoicemailMessagesDownload">
+ <soap:operation soapAction="http://soapi.ovh.com/manager#telephonyVoicemailMessagesDownload" />
+ <wsdl:input>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:output>
+ <wsdl:fault name="failure">
+ <soap:fault encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" name="failure" use="encoded" />
+ </wsdl:fault>
+ </wsdl:operation>
+
+ <wsdl:operation name="supportGetNicDomains">
+ <soap:operation soapAction="http://soapi.ovh.com/manager#supportGetNicDomains" />
+ <wsdl:input>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:output>
+ <wsdl:fault name="failure">
+ <soap:fault encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" name="failure" use="encoded" />
+ </wsdl:fault>
+ </wsdl:operation>
+
+ <wsdl:operation name="telephonyFaxCampaignCreation">
+ <soap:operation soapAction="http://soapi.ovh.com/manager#telephonyFaxCampaignCreation" />
+ <wsdl:input>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:output>
+ <wsdl:fault name="failure">
+ <soap:fault encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" name="failure" use="encoded" />
+ </wsdl:fault>
+ </wsdl:operation>
+
+ <wsdl:operation name="supportGetThreads">
+ <soap:operation soapAction="http://soapi.ovh.com/manager#supportGetThreads" />
+ <wsdl:input>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:output>
+ <wsdl:fault name="failure">
+ <soap:fault encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" name="failure" use="encoded" />
+ </wsdl:fault>
+ </wsdl:operation>
+
+ <wsdl:operation name="mailingListDel">
+ <soap:operation soapAction="http://soapi.ovh.com/manager#mailingListDel" />
+ <wsdl:input>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:output>
+ <wsdl:fault name="failure">
+ <soap:fault encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" name="failure" use="encoded" />
+ </wsdl:fault>
+ </wsdl:operation>
+
+ <wsdl:operation name="dedicatedFailoverRipeAdd">
+ <soap:operation soapAction="http://soapi.ovh.com/manager#dedicatedFailoverRipeAdd" />
+ <wsdl:input>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:output>
+ <wsdl:fault name="failure">
+ <soap:fault encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" name="failure" use="encoded" />
+ </wsdl:fault>
+ </wsdl:operation>
+
+ <wsdl:operation name="mailingListSubscriberAdd">
+ <soap:operation soapAction="http://soapi.ovh.com/manager#mailingListSubscriberAdd" />
+ <wsdl:input>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:output>
+ <wsdl:fault name="failure">
+ <soap:fault encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" name="failure" use="encoded" />
+ </wsdl:fault>
+ </wsdl:operation>
+
+ <wsdl:operation name="dedicatedFilterIrcClientRuleAdd">
+ <soap:operation soapAction="http://soapi.ovh.com/manager#dedicatedFilterIrcClientRuleAdd" />
+ <wsdl:input>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:output>
+ <wsdl:fault name="failure">
+ <soap:fault encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" name="failure" use="encoded" />
+ </wsdl:fault>
+ </wsdl:operation>
+
+ <wsdl:operation name="telephonyLineLogsNotificationOptions">
+ <soap:operation soapAction="http://soapi.ovh.com/manager#telephonyLineLogsNotificationOptions" />
+ <wsdl:input>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:output>
+ <wsdl:fault name="failure">
+ <soap:fault encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" name="failure" use="encoded" />
+ </wsdl:fault>
+ </wsdl:operation>
+
+ <wsdl:operation name="telephonyLineGetIpRestriction">
+ <soap:operation soapAction="http://soapi.ovh.com/manager#telephonyLineGetIpRestriction" />
+ <wsdl:input>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:output>
+ <wsdl:fault name="failure">
+ <soap:fault encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" name="failure" use="encoded" />
+ </wsdl:fault>
+ </wsdl:operation>
+
+ <wsdl:operation name="dedicatedInstallationTemplateList">
+ <soap:operation soapAction="http://soapi.ovh.com/manager#dedicatedInstallationTemplateList" />
+ <wsdl:input>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:output>
+ <wsdl:fault name="failure">
+ <soap:fault encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" name="failure" use="encoded" />
+ </wsdl:fault>
+ </wsdl:operation>
+
+ <wsdl:operation name="telephonyGetTimeZoneNumber">
+ <soap:operation soapAction="http://soapi.ovh.com/manager#telephonyGetTimeZoneNumber" />
+ <wsdl:input>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:output>
+ <wsdl:fault name="failure">
+ <soap:fault encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" name="failure" use="encoded" />
+ </wsdl:fault>
+ </wsdl:operation>
+
+ <wsdl:operation name="dedicatedBackupGetCalendar">
+ <soap:operation soapAction="http://soapi.ovh.com/manager#dedicatedBackupGetCalendar" />
+ <wsdl:input>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:output>
+ <wsdl:fault name="failure">
+ <soap:fault encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" name="failure" use="encoded" />
+ </wsdl:fault>
+ </wsdl:operation>
+
+ <wsdl:operation name="telephonyFMHuntingModificationMembers">
+ <soap:operation soapAction="http://soapi.ovh.com/manager#telephonyFMHuntingModificationMembers" />
+ <wsdl:input>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:output>
+ <wsdl:fault name="failure">
+ <soap:fault encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" name="failure" use="encoded" />
+ </wsdl:fault>
+ </wsdl:operation>
+
+ <wsdl:operation name="telephonyPhonebookAdd">
+ <soap:operation soapAction="http://soapi.ovh.com/manager#telephonyPhonebookAdd" />
+ <wsdl:input>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:output>
+ <wsdl:fault name="failure">
+ <soap:fault encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" name="failure" use="encoded" />
+ </wsdl:fault>
+ </wsdl:operation>
+
+ <wsdl:operation name="telephonyRestrictionModify">
+ <soap:operation soapAction="http://soapi.ovh.com/manager#telephonyRestrictionModify" />
+ <wsdl:input>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:output>
+ <wsdl:fault name="failure">
+ <soap:fault encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" name="failure" use="encoded" />
+ </wsdl:fault>
+ </wsdl:operation>
+
+ <wsdl:operation name="telephonyRatesList">
+ <soap:operation soapAction="http://soapi.ovh.com/manager#telephonyRatesList" />
+ <wsdl:input>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:output>
+ <wsdl:fault name="failure">
+ <soap:fault encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" name="failure" use="encoded" />
+ </wsdl:fault>
+ </wsdl:operation>
+
+ <wsdl:operation name="crontabDel">
+ <soap:operation soapAction="http://soapi.ovh.com/manager#crontabDel" />
+ <wsdl:input>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:output>
+ <wsdl:fault name="failure">
+ <soap:fault encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" name="failure" use="encoded" />
+ </wsdl:fault>
+ </wsdl:operation>
+
+ <wsdl:operation name="telephonyHuntingGenericScreenOptions">
+ <soap:operation soapAction="http://soapi.ovh.com/manager#telephonyHuntingGenericScreenOptions" />
+ <wsdl:input>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:output>
+ <wsdl:fault name="failure">
+ <soap:fault encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" name="failure" use="encoded" />
+ </wsdl:fault>
+ </wsdl:operation>
+
+ <wsdl:operation name="telephonyBillingAccountAdd">
+ <soap:operation soapAction="http://soapi.ovh.com/manager#telephonyBillingAccountAdd" />
+ <wsdl:input>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:output>
+ <wsdl:fault name="failure">
+ <soap:fault encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" name="failure" use="encoded" />
+ </wsdl:fault>
+ </wsdl:operation>
+
+ <wsdl:operation name="managedServicesIpAccessChange">
+ <soap:operation soapAction="http://soapi.ovh.com/manager#managedServicesIpAccessChange" />
+ <wsdl:input>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:output>
+ <wsdl:fault name="failure">
+ <soap:fault encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" name="failure" use="encoded" />
+ </wsdl:fault>
+ </wsdl:operation>
+
+ <wsdl:operation name="accountHistory">
+ <soap:operation soapAction="http://soapi.ovh.com/manager#accountHistory" />
+ <wsdl:input>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:output>
+ <wsdl:fault name="failure">
+ <soap:fault encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" name="failure" use="encoded" />
+ </wsdl:fault>
+ </wsdl:operation>
+
+ <wsdl:operation name="dedicatedIpLoadBalancingServerDel">
+ <soap:operation soapAction="http://soapi.ovh.com/manager#dedicatedIpLoadBalancingServerDel" />
+ <wsdl:input>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:output>
+ <wsdl:fault name="failure">
+ <soap:fault encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" name="failure" use="encoded" />
+ </wsdl:fault>
+ </wsdl:operation>
+
+ <wsdl:operation name="domainCheck">
+ <soap:operation soapAction="http://soapi.ovh.com/manager#domainCheck" />
+ <wsdl:input>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:output>
+ <wsdl:fault name="failure">
+ <soap:fault encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" name="failure" use="encoded" />
+ </wsdl:fault>
+ </wsdl:operation>
+
+ <wsdl:operation name="prepaidDomainTransfer">
+ <soap:operation soapAction="http://soapi.ovh.com/manager#prepaidDomainTransfer" />
+ <wsdl:input>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:output>
+ <wsdl:fault name="failure">
+ <soap:fault encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" name="failure" use="encoded" />
+ </wsdl:fault>
+ </wsdl:operation>
+
+ <wsdl:operation name="dedicatedEditServiceMonitoringItem">
+ <soap:operation soapAction="http://soapi.ovh.com/manager#dedicatedEditServiceMonitoringItem" />
+ <wsdl:input>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:output>
+ <wsdl:fault name="failure">
+ <soap:fault encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" name="failure" use="encoded" />
+ </wsdl:fault>
+ </wsdl:operation>
+
+ <wsdl:operation name="telephonySmsplusIsFreeKeyword">
+ <soap:operation soapAction="http://soapi.ovh.com/manager#telephonySmsplusIsFreeKeyword" />
+ <wsdl:input>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:output>
+ <wsdl:fault name="failure">
+ <soap:fault encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" name="failure" use="encoded" />
+ </wsdl:fault>
+ </wsdl:operation>
+
+ <wsdl:operation name="telephonyLineGetCodecs">
+ <soap:operation soapAction="http://soapi.ovh.com/manager#telephonyLineGetCodecs" />
+ <wsdl:input>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:output>
+ <wsdl:fault name="failure">
+ <soap:fault encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" name="failure" use="encoded" />
+ </wsdl:fault>
+ </wsdl:operation>
+
+ <wsdl:operation name="telephonySmsSenderValidate">
+ <soap:operation soapAction="http://soapi.ovh.com/manager#telephonySmsSenderValidate" />
+ <wsdl:input>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:output>
+ <wsdl:fault name="failure">
+ <soap:fault encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" name="failure" use="encoded" />
+ </wsdl:fault>
+ </wsdl:operation>
+
+ <wsdl:operation name="dedicatedIPForUDPServerList">
+ <soap:operation soapAction="http://soapi.ovh.com/manager#dedicatedIPForUDPServerList" />
+ <wsdl:input>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:output>
+ <wsdl:fault name="failure">
+ <soap:fault encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" name="failure" use="encoded" />
+ </wsdl:fault>
+ </wsdl:operation>
+
+ <wsdl:operation name="telephonyHuntingModificationSimultaneousCalls">
+ <soap:operation soapAction="http://soapi.ovh.com/manager#telephonyHuntingModificationSimultaneousCalls" />
+ <wsdl:input>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:output>
+ <wsdl:fault name="failure">
+ <soap:fault encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" name="failure" use="encoded" />
+ </wsdl:fault>
+ </wsdl:operation>
+
+ <wsdl:operation name="telephonyDirectoryInfoGetSameSiret">
+ <soap:operation soapAction="http://soapi.ovh.com/manager#telephonyDirectoryInfoGetSameSiret" />
+ <wsdl:input>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:output>
+ <wsdl:fault name="failure">
+ <soap:fault encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" name="failure" use="encoded" />
+ </wsdl:fault>
+ </wsdl:operation>
+
+ <wsdl:operation name="serviceGroupCreate">
+ <soap:operation soapAction="http://soapi.ovh.com/manager#serviceGroupCreate" />
+ <wsdl:input>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:output>
+ <wsdl:fault name="failure">
+ <soap:fault encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" name="failure" use="encoded" />
+ </wsdl:fault>
+ </wsdl:operation>
+
+ <wsdl:operation name="telephonyConferenceSetParams">
+ <soap:operation soapAction="http://soapi.ovh.com/manager#telephonyConferenceSetParams" />
+ <wsdl:input>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:output>
+ <wsdl:fault name="failure">
+ <soap:fault encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" name="failure" use="encoded" />
+ </wsdl:fault>
+ </wsdl:operation>
+
+ <wsdl:operation name="orderTelephonySmsCredit">
+ <soap:operation soapAction="http://soapi.ovh.com/manager#orderTelephonySmsCredit" />
+ <wsdl:input>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:output>
+ <wsdl:fault name="failure">
+ <soap:fault encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" name="failure" use="encoded" />
+ </wsdl:fault>
+ </wsdl:operation>
+
+ <wsdl:operation name="dedicatedBackupSet">
+ <soap:operation soapAction="http://soapi.ovh.com/manager#dedicatedBackupSet" />
+ <wsdl:input>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:output>
+ <wsdl:fault name="failure">
+ <soap:fault encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" name="failure" use="encoded" />
+ </wsdl:fault>
+ </wsdl:operation>
+
+ <wsdl:operation name="dedicatedVirtualMacIpDelete">
+ <soap:operation soapAction="http://soapi.ovh.com/manager#dedicatedVirtualMacIpDelete" />
+ <wsdl:input>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:output>
+ <wsdl:fault name="failure">
+ <soap:fault encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" name="failure" use="encoded" />
+ </wsdl:fault>
+ </wsdl:operation>
+
+ <wsdl:operation name="dedicatedFailoverRipeSplit">
+ <soap:operation soapAction="http://soapi.ovh.com/manager#dedicatedFailoverRipeSplit" />
+ <wsdl:input>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:output>
+ <wsdl:fault name="failure">
+ <soap:fault encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" name="failure" use="encoded" />
+ </wsdl:fault>
+ </wsdl:operation>
+
+ <wsdl:operation name="dedicatedReverseInfo">
+ <soap:operation soapAction="http://soapi.ovh.com/manager#dedicatedReverseInfo" />
+ <wsdl:input>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:output>
+ <wsdl:fault name="failure">
+ <soap:fault encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" name="failure" use="encoded" />
+ </wsdl:fault>
+ </wsdl:operation>
+
+ <wsdl:operation name="dedicatedCapabilitiesGetAll">
+ <soap:operation soapAction="http://soapi.ovh.com/manager#dedicatedCapabilitiesGetAll" />
+ <wsdl:input>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:output>
+ <wsdl:fault name="failure">
+ <soap:fault encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" name="failure" use="encoded" />
+ </wsdl:fault>
+ </wsdl:operation>
+
+ <wsdl:operation name="telephonySparePurchase">
+ <soap:operation soapAction="http://soapi.ovh.com/manager#telephonySparePurchase" />
+ <wsdl:input>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:output>
+ <wsdl:fault name="failure">
+ <soap:fault encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" name="failure" use="encoded" />
+ </wsdl:fault>
+ </wsdl:operation>
+
+ <wsdl:operation name="nic">
+ <soap:operation soapAction="http://soapi.ovh.com/manager#nic" />
+ <wsdl:input>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:output>
+ <wsdl:fault name="failure">
+ <soap:fault encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" name="failure" use="encoded" />
+ </wsdl:fault>
+ </wsdl:operation>
+
+ <wsdl:operation name="telephonyFaxCampaignList">
+ <soap:operation soapAction="http://soapi.ovh.com/manager#telephonyFaxCampaignList" />
+ <wsdl:input>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:output>
+ <wsdl:fault name="failure">
+ <soap:fault encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" name="failure" use="encoded" />
+ </wsdl:fault>
+ </wsdl:operation>
+
+ <wsdl:operation name="dedicatedBackupIncludeAdd">
+ <soap:operation soapAction="http://soapi.ovh.com/manager#dedicatedBackupIncludeAdd" />
+ <wsdl:input>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:output>
+ <wsdl:fault name="failure">
+ <soap:fault encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" name="failure" use="encoded" />
+ </wsdl:fault>
+ </wsdl:operation>
+
+ <wsdl:operation name="ticketGet">
+ <soap:operation soapAction="http://soapi.ovh.com/manager#ticketGet" />
+ <wsdl:input>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:output>
+ <wsdl:fault name="failure">
+ <soap:fault encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" name="failure" use="encoded" />
+ </wsdl:fault>
+ </wsdl:operation>
+
+ <wsdl:operation name="supportSendMessage">
+ <soap:operation soapAction="http://soapi.ovh.com/manager#supportSendMessage" />
+ <wsdl:input>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:output>
+ <wsdl:fault name="failure">
+ <soap:fault encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" name="failure" use="encoded" />
+ </wsdl:fault>
+ </wsdl:operation>
+
+ <wsdl:operation name="notepadSet">
+ <soap:operation soapAction="http://soapi.ovh.com/manager#notepadSet" />
+ <wsdl:input>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:output>
+ <wsdl:fault name="failure">
+ <soap:fault encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" name="failure" use="encoded" />
+ </wsdl:fault>
+ </wsdl:operation>
+
+ <wsdl:operation name="dedicatedFailoverRipeList">
+ <soap:operation soapAction="http://soapi.ovh.com/manager#dedicatedFailoverRipeList" />
+ <wsdl:input>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:output>
+ <wsdl:fault name="failure">
+ <soap:fault encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" name="failure" use="encoded" />
+ </wsdl:fault>
+ </wsdl:operation>
+
+ <wsdl:operation name="telephonyNicGetMgcpIpRestriction">
+ <soap:operation soapAction="http://soapi.ovh.com/manager#telephonyNicGetMgcpIpRestriction" />
+ <wsdl:input>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:output>
+ <wsdl:fault name="failure">
+ <soap:fault encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" name="failure" use="encoded" />
+ </wsdl:fault>
+ </wsdl:operation>
+
+ <wsdl:operation name="telephonySmsGetUserQuotaForUser">
+ <soap:operation soapAction="http://soapi.ovh.com/manager#telephonySmsGetUserQuotaForUser" />
+ <wsdl:input>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:output>
+ <wsdl:fault name="failure">
+ <soap:fault encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" name="failure" use="encoded" />
+ </wsdl:fault>
+ </wsdl:operation>
+
+ <wsdl:operation name="telephonyDirectoryInfoGetSiret">
+ <soap:operation soapAction="http://soapi.ovh.com/manager#telephonyDirectoryInfoGetSiret" />
+ <wsdl:input>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:output>
+ <wsdl:fault name="failure">
+ <soap:fault encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" name="failure" use="encoded" />
+ </wsdl:fault>
+ </wsdl:operation>
+
+ <wsdl:operation name="dedicatedMonitoringServiceAdd">
+ <soap:operation soapAction="http://soapi.ovh.com/manager#dedicatedMonitoringServiceAdd" />
+ <wsdl:input>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:output>
+ <wsdl:fault name="failure">
+ <soap:fault encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" name="failure" use="encoded" />
+ </wsdl:fault>
+ </wsdl:operation>
+
+ <wsdl:operation name="dedicatedHardRebootDo">
+ <soap:operation soapAction="http://soapi.ovh.com/manager#dedicatedHardRebootDo" />
+ <wsdl:input>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:output>
+ <wsdl:fault name="failure">
+ <soap:fault encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" name="failure" use="encoded" />
+ </wsdl:fault>
+ </wsdl:operation>
+
+ <wsdl:operation name="dedicatedReverseList">
+ <soap:operation soapAction="http://soapi.ovh.com/manager#dedicatedReverseList" />
+ <wsdl:input>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:output>
+ <wsdl:fault name="failure">
+ <soap:fault encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" name="failure" use="encoded" />
+ </wsdl:fault>
+ </wsdl:operation>
+
+ <wsdl:operation name="domainWhoisObfuscatorSet">
+ <soap:operation soapAction="http://soapi.ovh.com/manager#domainWhoisObfuscatorSet" />
+ <wsdl:input>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:output>
+ <wsdl:fault name="failure">
+ <soap:fault encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" name="failure" use="encoded" />
+ </wsdl:fault>
+ </wsdl:operation>
+
+ <wsdl:operation name="rpsMigrationTodo">
+ <soap:operation soapAction="http://soapi.ovh.com/manager#rpsMigrationTodo" />
+ <wsdl:input>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:output>
+ <wsdl:fault name="failure">
+ <soap:fault encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" name="failure" use="encoded" />
+ </wsdl:fault>
+ </wsdl:operation>
+
+ <wsdl:operation name="telephonyFunctionKeyModify">
+ <soap:operation soapAction="http://soapi.ovh.com/manager#telephonyFunctionKeyModify" />
+ <wsdl:input>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:output>
+ <wsdl:fault name="failure">
+ <soap:fault encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" name="failure" use="encoded" />
+ </wsdl:fault>
+ </wsdl:operation>
+
+ <wsdl:operation name="nicTldEligibility">
+ <soap:operation soapAction="http://soapi.ovh.com/manager#nicTldEligibility" />
+ <wsdl:input>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:output>
+ <wsdl:fault name="failure">
+ <soap:fault encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" name="failure" use="encoded" />
+ </wsdl:fault>
+ </wsdl:operation>
+
+ <wsdl:operation name="automatedMailGetState">
+ <soap:operation soapAction="http://soapi.ovh.com/manager#automatedMailGetState" />
+ <wsdl:input>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:output>
+ <wsdl:fault name="failure">
+ <soap:fault encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" name="failure" use="encoded" />
+ </wsdl:fault>
+ </wsdl:operation>
+
+ <wsdl:operation name="telephonyAbbreviatedNumberList">
+ <soap:operation soapAction="http://soapi.ovh.com/manager#telephonyAbbreviatedNumberList" />
+ <wsdl:input>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:output>
+ <wsdl:fault name="failure">
+ <soap:fault encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" name="failure" use="encoded" />
+ </wsdl:fault>
+ </wsdl:operation>
+
+ <wsdl:operation name="sqlpriveMysqlLogs">
+ <soap:operation soapAction="http://soapi.ovh.com/manager#sqlpriveMysqlLogs" />
+ <wsdl:input>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:output>
+ <wsdl:fault name="failure">
+ <soap:fault encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" name="failure" use="encoded" />
+ </wsdl:fault>
+ </wsdl:operation>
+
+ <wsdl:operation name="telephonyFaxModifyPassword">
+ <soap:operation soapAction="http://soapi.ovh.com/manager#telephonyFaxModifyPassword" />
+ <wsdl:input>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:output>
+ <wsdl:fault name="failure">
+ <soap:fault encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" name="failure" use="encoded" />
+ </wsdl:fault>
+ </wsdl:operation>
+
+ <wsdl:operation name="dedicatedBackupFtpAdd">
+ <soap:operation soapAction="http://soapi.ovh.com/manager#dedicatedBackupFtpAdd" />
+ <wsdl:input>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:output>
+ <wsdl:fault name="failure">
+ <soap:fault encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" name="failure" use="encoded" />
+ </wsdl:fault>
+ </wsdl:operation>
+
+ <wsdl:operation name="databaseDump">
+ <soap:operation soapAction="http://soapi.ovh.com/manager#databaseDump" />
+ <wsdl:input>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:output>
+ <wsdl:fault name="failure">
+ <soap:fault encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" name="failure" use="encoded" />
+ </wsdl:fault>
+ </wsdl:operation>
+
+ <wsdl:operation name="telephonySmsDelete">
+ <soap:operation soapAction="http://soapi.ovh.com/manager#telephonySmsDelete" />
+ <wsdl:input>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:output>
+ <wsdl:fault name="failure">
+ <soap:fault encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" name="failure" use="encoded" />
+ </wsdl:fault>
+ </wsdl:operation>
+
+ <wsdl:operation name="telephonyDirectoryModifyPublication">
+ <soap:operation soapAction="http://soapi.ovh.com/manager#telephonyDirectoryModifyPublication" />
+ <wsdl:input>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:output>
+ <wsdl:fault name="failure">
+ <soap:fault encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" name="failure" use="encoded" />
+ </wsdl:fault>
+ </wsdl:operation>
+
+ <wsdl:operation name="domainResellerSet">
+ <soap:operation soapAction="http://soapi.ovh.com/manager#domainResellerSet" />
+ <wsdl:input>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:output>
+ <wsdl:fault name="failure">
+ <soap:fault encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" name="failure" use="encoded" />
+ </wsdl:fault>
+ </wsdl:operation>
+
+ <wsdl:operation name="crontabList">
+ <soap:operation soapAction="http://soapi.ovh.com/manager#crontabList" />
+ <wsdl:input>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:output>
+ <wsdl:fault name="failure">
+ <soap:fault encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" name="failure" use="encoded" />
+ </wsdl:fault>
+ </wsdl:operation>
+
+ <wsdl:operation name="telephonyPhonebookOnGroupAdd">
+ <soap:operation soapAction="http://soapi.ovh.com/manager#telephonyPhonebookOnGroupAdd" />
+ <wsdl:input>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:output>
+ <wsdl:fault name="failure">
+ <soap:fault encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" name="failure" use="encoded" />
+ </wsdl:fault>
+ </wsdl:operation>
+
+ <wsdl:operation name="dedicatedVirtualMacIpUsedGetList">
+ <soap:operation soapAction="http://soapi.ovh.com/manager#dedicatedVirtualMacIpUsedGetList" />
+ <wsdl:input>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:output>
+ <wsdl:fault name="failure">
+ <soap:fault encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" name="failure" use="encoded" />
+ </wsdl:fault>
+ </wsdl:operation>
+
+ <wsdl:operation name="telephonyLineSwitchOfferPossibility">
+ <soap:operation soapAction="http://soapi.ovh.com/manager#telephonyLineSwitchOfferPossibility" />
+ <wsdl:input>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:output>
+ <wsdl:fault name="failure">
+ <soap:fault encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" name="failure" use="encoded" />
+ </wsdl:fault>
+ </wsdl:operation>
+
+ <wsdl:operation name="telephonySmsSenderList">
+ <soap:operation soapAction="http://soapi.ovh.com/manager#telephonySmsSenderList" />
+ <wsdl:input>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:output>
+ <wsdl:fault name="failure">
+ <soap:fault encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" name="failure" use="encoded" />
+ </wsdl:fault>
+ </wsdl:operation>
+
+ <wsdl:operation name="resellerDomainRestore">
+ <soap:operation soapAction="http://soapi.ovh.com/manager#resellerDomainRestore" />
+ <wsdl:input>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:output>
+ <wsdl:fault name="failure">
+ <soap:fault encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" name="failure" use="encoded" />
+ </wsdl:fault>
+ </wsdl:operation>
+
+ <wsdl:operation name="ticketAnswer">
+ <soap:operation soapAction="http://soapi.ovh.com/manager#ticketAnswer" />
+ <wsdl:input>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:output>
+ <wsdl:fault name="failure">
+ <soap:fault encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" name="failure" use="encoded" />
+ </wsdl:fault>
+ </wsdl:operation>
+
+ <wsdl:operation name="sqlpriveCronSet">
+ <soap:operation soapAction="http://soapi.ovh.com/manager#sqlpriveCronSet" />
+ <wsdl:input>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:output>
+ <wsdl:fault name="failure">
+ <soap:fault encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" name="failure" use="encoded" />
+ </wsdl:fault>
+ </wsdl:operation>
+
+ <wsdl:operation name="telephonySipToAliasOffer">
+ <soap:operation soapAction="http://soapi.ovh.com/manager#telephonySipToAliasOffer" />
+ <wsdl:input>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:output>
+ <wsdl:fault name="failure">
+ <soap:fault encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" name="failure" use="encoded" />
+ </wsdl:fault>
+ </wsdl:operation>
+
+ <wsdl:operation name="telephonyFunctionKeyList">
+ <soap:operation soapAction="http://soapi.ovh.com/manager#telephonyFunctionKeyList" />
+ <wsdl:input>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:output>
+ <wsdl:fault name="failure">
+ <soap:fault encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" name="failure" use="encoded" />
+ </wsdl:fault>
+ </wsdl:operation>
+
+ <wsdl:operation name="dedicatedNetbootInfo">
+ <soap:operation soapAction="http://soapi.ovh.com/manager#dedicatedNetbootInfo" />
+ <wsdl:input>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:output>
+ <wsdl:fault name="failure">
+ <soap:fault encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" name="failure" use="encoded" />
+ </wsdl:fault>
+ </wsdl:operation>
+
+ <wsdl:operation name="telephonySmsGetCallBack">
+ <soap:operation soapAction="http://soapi.ovh.com/manager#telephonySmsGetCallBack" />
+ <wsdl:input>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:output>
+ <wsdl:fault name="failure">
+ <soap:fault encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" name="failure" use="encoded" />
+ </wsdl:fault>
+ </wsdl:operation>
+
+ <wsdl:operation name="telephonySviModify">
+ <soap:operation soapAction="http://soapi.ovh.com/manager#telephonySviModify" />
+ <wsdl:input>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:output>
+ <wsdl:fault name="failure">
+ <soap:fault encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" name="failure" use="encoded" />
+ </wsdl:fault>
+ </wsdl:operation>
+
+ <wsdl:operation name="telephonySmsplusServiceDelete">
+ <soap:operation soapAction="http://soapi.ovh.com/manager#telephonySmsplusServiceDelete" />
+ <wsdl:input>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:output>
+ <wsdl:fault name="failure">
+ <soap:fault encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" name="failure" use="encoded" />
+ </wsdl:fault>
+ </wsdl:operation>
+
+ <wsdl:operation name="domainOperationRelaunch">
+ <soap:operation soapAction="http://soapi.ovh.com/manager#domainOperationRelaunch" />
+ <wsdl:input>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:output>
+ <wsdl:fault name="failure">
+ <soap:fault encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" name="failure" use="encoded" />
+ </wsdl:fault>
+ </wsdl:operation>
+
+ <wsdl:operation name="telephonyLineSwitchOffer">
+ <soap:operation soapAction="http://soapi.ovh.com/manager#telephonyLineSwitchOffer" />
+ <wsdl:input>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:output>
+ <wsdl:fault name="failure">
+ <soap:fault encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" name="failure" use="encoded" />
+ </wsdl:fault>
+ </wsdl:operation>
+
+ <wsdl:operation name="telephonyTrunkExternalDisplayedNumberCheck">
+ <soap:operation soapAction="http://soapi.ovh.com/manager#telephonyTrunkExternalDisplayedNumberCheck" />
+ <wsdl:input>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:output>
+ <wsdl:fault name="failure">
+ <soap:fault encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" name="failure" use="encoded" />
+ </wsdl:fault>
+ </wsdl:operation>
+
+ <wsdl:operation name="telephonyDelClosureEvents">
+ <soap:operation soapAction="http://soapi.ovh.com/manager#telephonyDelClosureEvents" />
+ <wsdl:input>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:output>
+ <wsdl:fault name="failure">
+ <soap:fault encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" name="failure" use="encoded" />
+ </wsdl:fault>
+ </wsdl:operation>
+
+ <wsdl:operation name="telephonyFreefaxToVoicefaxCheckList">
+ <soap:operation soapAction="http://soapi.ovh.com/manager#telephonyFreefaxToVoicefaxCheckList" />
+ <wsdl:input>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:output>
+ <wsdl:fault name="failure">
+ <soap:fault encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" name="failure" use="encoded" />
+ </wsdl:fault>
+ </wsdl:operation>
+
+ <wsdl:operation name="telephonyVoicemailModifyPassword">
+ <soap:operation soapAction="http://soapi.ovh.com/manager#telephonyVoicemailModifyPassword" />
+ <wsdl:input>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:output>
+ <wsdl:fault name="failure">
+ <soap:fault encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" name="failure" use="encoded" />
+ </wsdl:fault>
+ </wsdl:operation>
+
+ <wsdl:operation name="telephonySpareCapabilities">
+ <soap:operation soapAction="http://soapi.ovh.com/manager#telephonySpareCapabilities" />
+ <wsdl:input>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:output>
+ <wsdl:fault name="failure">
+ <soap:fault encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" name="failure" use="encoded" />
+ </wsdl:fault>
+ </wsdl:operation>
+
+ <wsdl:operation name="dnsSoaModify">
+ <soap:operation soapAction="http://soapi.ovh.com/manager#dnsSoaModify" />
+ <wsdl:input>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:output>
+ <wsdl:fault name="failure">
+ <soap:fault encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" name="failure" use="encoded" />
+ </wsdl:fault>
+ </wsdl:operation>
+
+ <wsdl:operation name="telephonyPhonebookOnSmsDel">
+ <soap:operation soapAction="http://soapi.ovh.com/manager#telephonyPhonebookOnSmsDel" />
+ <wsdl:input>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:output>
+ <wsdl:fault name="failure">
+ <soap:fault encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" name="failure" use="encoded" />
+ </wsdl:fault>
+ </wsdl:operation>
+
+ <wsdl:operation name="telephonyPhonebookShare">
+ <soap:operation soapAction="http://soapi.ovh.com/manager#telephonyPhonebookShare" />
+ <wsdl:input>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:output>
+ <wsdl:fault name="failure">
+ <soap:fault encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" name="failure" use="encoded" />
+ </wsdl:fault>
+ </wsdl:operation>
+
+ <wsdl:operation name="telephonySmsSetUserQuota">
+ <soap:operation soapAction="http://soapi.ovh.com/manager#telephonySmsSetUserQuota" />
+ <wsdl:input>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:output>
+ <wsdl:fault name="failure">
+ <soap:fault encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" name="failure" use="encoded" />
+ </wsdl:fault>
+ </wsdl:operation>
+
+ <wsdl:operation name="cmsInstall">
+ <soap:operation soapAction="http://soapi.ovh.com/manager#cmsInstall" />
+ <wsdl:input>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:output>
+ <wsdl:fault name="failure">
+ <soap:fault encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" name="failure" use="encoded" />
+ </wsdl:fault>
+ </wsdl:operation>
+
+ <wsdl:operation name="dedicatedIpLoadBalancingAdd">
+ <soap:operation soapAction="http://soapi.ovh.com/manager#dedicatedIpLoadBalancingAdd" />
+ <wsdl:input>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:output>
+ <wsdl:fault name="failure">
+ <soap:fault encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" name="failure" use="encoded" />
+ </wsdl:fault>
+ </wsdl:operation>
+
+ <wsdl:operation name="supportGetAllVisibleCategories">
+ <soap:operation soapAction="http://soapi.ovh.com/manager#supportGetAllVisibleCategories" />
+ <wsdl:input>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:output>
+ <wsdl:fault name="failure">
+ <soap:fault encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" name="failure" use="encoded" />
+ </wsdl:fault>
+ </wsdl:operation>
+
+ <wsdl:operation name="telephonySmsHistoryCsv">
+ <soap:operation soapAction="http://soapi.ovh.com/manager#telephonySmsHistoryCsv" />
+ <wsdl:input>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:output>
+ <wsdl:fault name="failure">
+ <soap:fault encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" name="failure" use="encoded" />
+ </wsdl:fault>
+ </wsdl:operation>
+
+ <wsdl:operation name="telephonyAbbreviatedNumberOnGroupList">
+ <soap:operation soapAction="http://soapi.ovh.com/manager#telephonyAbbreviatedNumberOnGroupList" />
+ <wsdl:input>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:output>
+ <wsdl:fault name="failure">
+ <soap:fault encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" name="failure" use="encoded" />
+ </wsdl:fault>
+ </wsdl:operation>
+
+ <wsdl:operation name="dedicatedAvailableNotificationNicsGet">
+ <soap:operation soapAction="http://soapi.ovh.com/manager#dedicatedAvailableNotificationNicsGet" />
+ <wsdl:input>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:output>
+ <wsdl:fault name="failure">
+ <soap:fault encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" name="failure" use="encoded" />
+ </wsdl:fault>
+ </wsdl:operation>
+
+ <wsdl:operation name="telephonyLineLogs">
+ <soap:operation soapAction="http://soapi.ovh.com/manager#telephonyLineLogs" />
+ <wsdl:input>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:output>
+ <wsdl:fault name="failure">
+ <soap:fault encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" name="failure" use="encoded" />
+ </wsdl:fault>
+ </wsdl:operation>
+
+ <wsdl:operation name="multiFtpList">
+ <soap:operation soapAction="http://soapi.ovh.com/manager#multiFtpList" />
+ <wsdl:input>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:output>
+ <wsdl:fault name="failure">
+ <soap:fault encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" name="failure" use="encoded" />
+ </wsdl:fault>
+ </wsdl:operation>
+
+ <wsdl:operation name="telephonySpareReplace">
+ <soap:operation soapAction="http://soapi.ovh.com/manager#telephonySpareReplace" />
+ <wsdl:input>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:output>
+ <wsdl:fault name="failure">
+ <soap:fault encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" name="failure" use="encoded" />
+ </wsdl:fault>
+ </wsdl:operation>
+
+ <wsdl:operation name="multiFtpAdd">
+ <soap:operation soapAction="http://soapi.ovh.com/manager#multiFtpAdd" />
+ <wsdl:input>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:output>
+ <wsdl:fault name="failure">
+ <soap:fault encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" name="failure" use="encoded" />
+ </wsdl:fault>
+ </wsdl:operation>
+
+ <wsdl:operation name="sqlpriveMysqlDatabasePrivilegeList">
+ <soap:operation soapAction="http://soapi.ovh.com/manager#sqlpriveMysqlDatabasePrivilegeList" />
+ <wsdl:input>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:output>
+ <wsdl:fault name="failure">
+ <soap:fault encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" name="failure" use="encoded" />
+ </wsdl:fault>
+ </wsdl:operation>
+
+ <wsdl:operation name="emailAccessByNic">
+ <soap:operation soapAction="http://soapi.ovh.com/manager#emailAccessByNic" />
+ <wsdl:input>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:output>
+ <wsdl:fault name="failure">
+ <soap:fault encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" name="failure" use="encoded" />
+ </wsdl:fault>
+ </wsdl:operation>
+
+ <wsdl:operation name="telephonyClick2CallUserList">
+ <soap:operation soapAction="http://soapi.ovh.com/manager#telephonyClick2CallUserList" />
+ <wsdl:input>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:output>
+ <wsdl:fault name="failure">
+ <soap:fault encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" name="failure" use="encoded" />
+ </wsdl:fault>
+ </wsdl:operation>
+
+ <wsdl:operation name="zoneEntryDel">
+ <soap:operation soapAction="http://soapi.ovh.com/manager#zoneEntryDel" />
+ <wsdl:input>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:output>
+ <wsdl:fault name="failure">
+ <soap:fault encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" name="failure" use="encoded" />
+ </wsdl:fault>
+ </wsdl:operation>
+
+ <wsdl:operation name="prepaidSetThreshold">
+ <soap:operation soapAction="http://soapi.ovh.com/manager#prepaidSetThreshold" />
+ <wsdl:input>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:output>
+ <wsdl:fault name="failure">
+ <soap:fault encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" name="failure" use="encoded" />
+ </wsdl:fault>
+ </wsdl:operation>
+
+ <wsdl:operation name="telephonyVoicemailMailboxList">
+ <soap:operation soapAction="http://soapi.ovh.com/manager#telephonyVoicemailMailboxList" />
+ <wsdl:input>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:output>
+ <wsdl:fault name="failure">
+ <soap:fault encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" name="failure" use="encoded" />
+ </wsdl:fault>
+ </wsdl:operation>
+
+ <wsdl:operation name="resellerDomainRenew">
+ <soap:operation soapAction="http://soapi.ovh.com/manager#resellerDomainRenew" />
+ <wsdl:input>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:output>
+ <wsdl:fault name="failure">
+ <soap:fault encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" name="failure" use="encoded" />
+ </wsdl:fault>
+ </wsdl:operation>
+
+ <wsdl:operation name="popDel">
+ <soap:operation soapAction="http://soapi.ovh.com/manager#popDel" />
+ <wsdl:input>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:output>
+ <wsdl:fault name="failure">
+ <soap:fault encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" name="failure" use="encoded" />
+ </wsdl:fault>
+ </wsdl:operation>
+
+ <wsdl:operation name="telephonyFaxCampaignDetails">
+ <soap:operation soapAction="http://soapi.ovh.com/manager#telephonyFaxCampaignDetails" />
+ <wsdl:input>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:output>
+ <wsdl:fault name="failure">
+ <soap:fault encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" name="failure" use="encoded" />
+ </wsdl:fault>
+ </wsdl:operation>
+
+ <wsdl:operation name="emailFilterRuleDel">
+ <soap:operation soapAction="http://soapi.ovh.com/manager#emailFilterRuleDel" />
+ <wsdl:input>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:output>
+ <wsdl:fault name="failure">
+ <soap:fault encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" name="failure" use="encoded" />
+ </wsdl:fault>
+ </wsdl:operation>
+
+ <wsdl:operation name="telephonyPhonebookOnGroupDel">
+ <soap:operation soapAction="http://soapi.ovh.com/manager#telephonyPhonebookOnGroupDel" />
+ <wsdl:input>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:output>
+ <wsdl:fault name="failure">
+ <soap:fault encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" name="failure" use="encoded" />
+ </wsdl:fault>
+ </wsdl:operation>
+
+ <wsdl:operation name="telephonyPhonebookOnGroupList">
+ <soap:operation soapAction="http://soapi.ovh.com/manager#telephonyPhonebookOnGroupList" />
+ <wsdl:input>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:output>
+ <wsdl:fault name="failure">
+ <soap:fault encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" name="failure" use="encoded" />
+ </wsdl:fault>
+ </wsdl:operation>
+
+ <wsdl:operation name="telephonySpecialNumberCustomList">
+ <soap:operation soapAction="http://soapi.ovh.com/manager#telephonySpecialNumberCustomList" />
+ <wsdl:input>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:output>
+ <wsdl:fault name="failure">
+ <soap:fault encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" name="failure" use="encoded" />
+ </wsdl:fault>
+ </wsdl:operation>
+
+ <wsdl:operation name="dedicatedMonitoringServiceDel">
+ <soap:operation soapAction="http://soapi.ovh.com/manager#dedicatedMonitoringServiceDel" />
+ <wsdl:input>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:output>
+ <wsdl:fault name="failure">
+ <soap:fault encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" name="failure" use="encoded" />
+ </wsdl:fault>
+ </wsdl:operation>
+
+ <wsdl:operation name="telephonyFMHuntingModificationSimultaneousCalls">
+ <soap:operation soapAction="http://soapi.ovh.com/manager#telephonyFMHuntingModificationSimultaneousCalls" />
+ <wsdl:input>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:output>
+ <wsdl:fault name="failure">
+ <soap:fault encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" name="failure" use="encoded" />
+ </wsdl:fault>
+ </wsdl:operation>
+
+ <wsdl:operation name="emailFilterPriority">
+ <soap:operation soapAction="http://soapi.ovh.com/manager#emailFilterPriority" />
+ <wsdl:input>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:output>
+ <wsdl:fault name="failure">
+ <soap:fault encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" name="failure" use="encoded" />
+ </wsdl:fault>
+ </wsdl:operation>
+
+ <wsdl:operation name="accountAlertThresholdSet">
+ <soap:operation soapAction="http://soapi.ovh.com/manager#accountAlertThresholdSet" />
+ <wsdl:input>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:output>
+ <wsdl:fault name="failure">
+ <soap:fault encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" name="failure" use="encoded" />
+ </wsdl:fault>
+ </wsdl:operation>
+
+ <wsdl:operation name="emailFilterDel">
+ <soap:operation soapAction="http://soapi.ovh.com/manager#emailFilterDel" />
+ <wsdl:input>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:output>
+ <wsdl:fault name="failure">
+ <soap:fault encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" name="failure" use="encoded" />
+ </wsdl:fault>
+ </wsdl:operation>
+
+ <wsdl:operation name="resellerDomainCreate">
+ <soap:operation soapAction="http://soapi.ovh.com/manager#resellerDomainCreate" />
+ <wsdl:input>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:output>
+ <wsdl:fault name="failure">
+ <soap:fault encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" name="failure" use="encoded" />
+ </wsdl:fault>
+ </wsdl:operation>
+
+ <wsdl:operation name="managedServicesSnapshotUpdate">
+ <soap:operation soapAction="http://soapi.ovh.com/manager#managedServicesSnapshotUpdate" />
+ <wsdl:input>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:output>
+ <wsdl:fault name="failure">
+ <soap:fault encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" name="failure" use="encoded" />
+ </wsdl:fault>
+ </wsdl:operation>
+
+ <wsdl:operation name="supportGetThreadTree">
+ <soap:operation soapAction="http://soapi.ovh.com/manager#supportGetThreadTree" />
+ <wsdl:input>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:output>
+ <wsdl:fault name="failure">
+ <soap:fault encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" name="failure" use="encoded" />
+ </wsdl:fault>
+ </wsdl:operation>
+
+ <wsdl:operation name="emailSetDomainCatchAll">
+ <soap:operation soapAction="http://soapi.ovh.com/manager#emailSetDomainCatchAll" />
+ <wsdl:input>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:output>
+ <wsdl:fault name="failure">
+ <soap:fault encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" name="failure" use="encoded" />
+ </wsdl:fault>
+ </wsdl:operation>
+
+ <wsdl:operation name="domainCapabilities">
+ <soap:operation soapAction="http://soapi.ovh.com/manager#domainCapabilities" />
+ <wsdl:input>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:output>
+ <wsdl:fault name="failure">
+ <soap:fault encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" name="failure" use="encoded" />
+ </wsdl:fault>
+ </wsdl:operation>
+
+ <wsdl:operation name="dedicatedIpLoadBalancingServerStateModify">
+ <soap:operation soapAction="http://soapi.ovh.com/manager#dedicatedIpLoadBalancingServerStateModify" />
+ <wsdl:input>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:output>
+ <wsdl:fault name="failure">
+ <soap:fault encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" name="failure" use="encoded" />
+ </wsdl:fault>
+ </wsdl:operation>
+
+ <wsdl:operation name="telephonyVoicemailMailboxDownload">
+ <soap:operation soapAction="http://soapi.ovh.com/manager#telephonyVoicemailMailboxDownload" />
+ <wsdl:input>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:output>
+ <wsdl:fault name="failure">
+ <soap:fault encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" name="failure" use="encoded" />
+ </wsdl:fault>
+ </wsdl:operation>
+
+ <wsdl:operation name="dedicatedReverseModify">
+ <soap:operation soapAction="http://soapi.ovh.com/manager#dedicatedReverseModify" />
+ <wsdl:input>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:output>
+ <wsdl:fault name="failure">
+ <soap:fault encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" name="failure" use="encoded" />
+ </wsdl:fault>
+ </wsdl:operation>
+
+ <wsdl:operation name="telephonyNicGetIpRestriction">
+ <soap:operation soapAction="http://soapi.ovh.com/manager#telephonyNicGetIpRestriction" />
+ <wsdl:input>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:output>
+ <wsdl:fault name="failure">
+ <soap:fault encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" name="failure" use="encoded" />
+ </wsdl:fault>
+ </wsdl:operation>
+
+ <wsdl:operation name="telephonyGetClosureEventsAsArray">
+ <soap:operation soapAction="http://soapi.ovh.com/manager#telephonyGetClosureEventsAsArray" />
+ <wsdl:input>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:output>
+ <wsdl:fault name="failure">
+ <soap:fault encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" name="failure" use="encoded" />
+ </wsdl:fault>
+ </wsdl:operation>
+
+ <wsdl:operation name="telephonyPhonebookOnSmsContactDel">
+ <soap:operation soapAction="http://soapi.ovh.com/manager#telephonyPhonebookOnSmsContactDel" />
+ <wsdl:input>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:output>
+ <wsdl:fault name="failure">
+ <soap:fault encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" name="failure" use="encoded" />
+ </wsdl:fault>
+ </wsdl:operation>
+
+ <wsdl:operation name="telephonyReversmentsRefundIsPending">
+ <soap:operation soapAction="http://soapi.ovh.com/manager#telephonyReversmentsRefundIsPending" />
+ <wsdl:input>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:output>
+ <wsdl:fault name="failure">
+ <soap:fault encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" name="failure" use="encoded" />
+ </wsdl:fault>
+ </wsdl:operation>
+
+ <wsdl:operation name="serviceModifyContact">
+ <soap:operation soapAction="http://soapi.ovh.com/manager#serviceModifyContact" />
+ <wsdl:input>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:output>
+ <wsdl:fault name="failure">
+ <soap:fault encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" name="failure" use="encoded" />
+ </wsdl:fault>
+ </wsdl:operation>
+
+ <wsdl:operation name="telephonyScreenListInfoModify">
+ <soap:operation soapAction="http://soapi.ovh.com/manager#telephonyScreenListInfoModify" />
+ <wsdl:input>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:output>
+ <wsdl:fault name="failure">
+ <soap:fault encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" name="failure" use="encoded" />
+ </wsdl:fault>
+ </wsdl:operation>
+
+ <wsdl:operation name="domainDnsList">
+ <soap:operation soapAction="http://soapi.ovh.com/manager#domainDnsList" />
+ <wsdl:input>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:output>
+ <wsdl:fault name="failure">
+ <soap:fault encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" name="failure" use="encoded" />
+ </wsdl:fault>
+ </wsdl:operation>
+
+ <wsdl:operation name="dedicatedFailoverList">
+ <soap:operation soapAction="http://soapi.ovh.com/manager#dedicatedFailoverList" />
+ <wsdl:input>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:output>
+ <wsdl:fault name="failure">
+ <soap:fault encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" name="failure" use="encoded" />
+ </wsdl:fault>
+ </wsdl:operation>
+
+ <wsdl:operation name="emailDomainMxList">
+ <soap:operation soapAction="http://soapi.ovh.com/manager#emailDomainMxList" />
+ <wsdl:input>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:output>
+ <wsdl:fault name="failure">
+ <soap:fault encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" name="failure" use="encoded" />
+ </wsdl:fault>
+ </wsdl:operation>
+
+ <wsdl:operation name="managedServicesHostMasterIpGet">
+ <soap:operation soapAction="http://soapi.ovh.com/manager#managedServicesHostMasterIpGet" />
+ <wsdl:input>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:output>
+ <wsdl:fault name="failure">
+ <soap:fault encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" name="failure" use="encoded" />
+ </wsdl:fault>
+ </wsdl:operation>
+
+ <wsdl:operation name="dedicatedSecondaryDNSInfo">
+ <soap:operation soapAction="http://soapi.ovh.com/manager#dedicatedSecondaryDNSInfo" />
+ <wsdl:input>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:output>
+ <wsdl:fault name="failure">
+ <soap:fault encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" name="failure" use="encoded" />
+ </wsdl:fault>
+ </wsdl:operation>
+
+ <wsdl:operation name="telephonySmsplusServiceReversableTicketsList">
+ <soap:operation soapAction="http://soapi.ovh.com/manager#telephonySmsplusServiceReversableTicketsList" />
+ <wsdl:input>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:output>
+ <wsdl:fault name="failure">
+ <soap:fault encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" name="failure" use="encoded" />
+ </wsdl:fault>
+ </wsdl:operation>
+
+ <wsdl:operation name="dedicatedRipeUpdateInetnum">
+ <soap:operation soapAction="http://soapi.ovh.com/manager#dedicatedRipeUpdateInetnum" />
+ <wsdl:input>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:output>
+ <wsdl:fault name="failure">
+ <soap:fault encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" name="failure" use="encoded" />
+ </wsdl:fault>
+ </wsdl:operation>
+
+ <wsdl:operation name="ortDomainList">
+ <soap:operation soapAction="http://soapi.ovh.com/manager#ortDomainList" />
+ <wsdl:input>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:output>
+ <wsdl:fault name="failure">
+ <soap:fault encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" name="failure" use="encoded" />
+ </wsdl:fault>
+ </wsdl:operation>
+
+ <wsdl:operation name="telephonyHuntingGenericScreenStatusModify">
+ <soap:operation soapAction="http://soapi.ovh.com/manager#telephonyHuntingGenericScreenStatusModify" />
+ <wsdl:input>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:output>
+ <wsdl:fault name="failure">
+ <soap:fault encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" name="failure" use="encoded" />
+ </wsdl:fault>
+ </wsdl:operation>
+
+ <wsdl:operation name="telephonySmsBlacklistedSendersList">
+ <soap:operation soapAction="http://soapi.ovh.com/manager#telephonySmsBlacklistedSendersList" />
+ <wsdl:input>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:output>
+ <wsdl:fault name="failure">
+ <soap:fault encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" name="failure" use="encoded" />
+ </wsdl:fault>
+ </wsdl:operation>
+
+ <wsdl:operation name="telephonyPhonebookContactAdd">
+ <soap:operation soapAction="http://soapi.ovh.com/manager#telephonyPhonebookContactAdd" />
+ <wsdl:input>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:output>
+ <wsdl:fault name="failure">
+ <soap:fault encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" name="failure" use="encoded" />
+ </wsdl:fault>
+ </wsdl:operation>
+
+ <wsdl:operation name="domainOperationInfo">
+ <soap:operation soapAction="http://soapi.ovh.com/manager#domainOperationInfo" />
+ <wsdl:input>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:output>
+ <wsdl:fault name="failure">
+ <soap:fault encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" name="failure" use="encoded" />
+ </wsdl:fault>
+ </wsdl:operation>
+
+ <wsdl:operation name="dedicatedGetAvailableNetworkFromCountry">
+ <soap:operation soapAction="http://soapi.ovh.com/manager#dedicatedGetAvailableNetworkFromCountry" />
+ <wsdl:input>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:output>
+ <wsdl:fault name="failure">
+ <soap:fault encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" name="failure" use="encoded" />
+ </wsdl:fault>
+ </wsdl:operation>
+
+ <wsdl:operation name="telephonyPortabilityOrderSpecialNumber">
+ <soap:operation soapAction="http://soapi.ovh.com/manager#telephonyPortabilityOrderSpecialNumber" />
+ <wsdl:input>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:output>
+ <wsdl:fault name="failure">
+ <soap:fault encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" name="failure" use="encoded" />
+ </wsdl:fault>
+ </wsdl:operation>
+
+ <wsdl:operation name="billingGetReferencesToExpired">
+ <soap:operation soapAction="http://soapi.ovh.com/manager#billingGetReferencesToExpired" />
+ <wsdl:input>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:output>
+ <wsdl:fault name="failure">
+ <soap:fault encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" name="failure" use="encoded" />
+ </wsdl:fault>
+ </wsdl:operation>
+
+ <wsdl:operation name="dedicatedFailoverAdd">
+ <soap:operation soapAction="http://soapi.ovh.com/manager#dedicatedFailoverAdd" />
+ <wsdl:input>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:output>
+ <wsdl:fault name="failure">
+ <soap:fault encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" name="failure" use="encoded" />
+ </wsdl:fault>
+ </wsdl:operation>
+
+ <wsdl:operation name="telephonySmsUserSetCallBack">
+ <soap:operation soapAction="http://soapi.ovh.com/manager#telephonySmsUserSetCallBack" />
+ <wsdl:input>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:output>
+ <wsdl:fault name="failure">
+ <soap:fault encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" name="failure" use="encoded" />
+ </wsdl:fault>
+ </wsdl:operation>
+
+ <wsdl:operation name="prepaidGetSummary">
+ <soap:operation soapAction="http://soapi.ovh.com/manager#prepaidGetSummary" />
+ <wsdl:input>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:output>
+ <wsdl:fault name="failure">
+ <soap:fault encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" name="failure" use="encoded" />
+ </wsdl:fault>
+ </wsdl:operation>
+
+ <wsdl:operation name="domainDnsUpdate">
+ <soap:operation soapAction="http://soapi.ovh.com/manager#domainDnsUpdate" />
+ <wsdl:input>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:output>
+ <wsdl:fault name="failure">
+ <soap:fault encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" name="failure" use="encoded" />
+ </wsdl:fault>
+ </wsdl:operation>
+
+ <wsdl:operation name="emailFilterRuleAdd">
+ <soap:operation soapAction="http://soapi.ovh.com/manager#emailFilterRuleAdd" />
+ <wsdl:input>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:output>
+ <wsdl:fault name="failure">
+ <soap:fault encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" name="failure" use="encoded" />
+ </wsdl:fault>
+ </wsdl:operation>
+
+ <wsdl:operation name="ripeUpdateInetnum">
+ <soap:operation soapAction="http://soapi.ovh.com/manager#ripeUpdateInetnum" />
+ <wsdl:input>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:output>
+ <wsdl:fault name="failure">
+ <soap:fault encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" name="failure" use="encoded" />
+ </wsdl:fault>
+ </wsdl:operation>
+
+ <wsdl:operation name="domainResellerDel">
+ <soap:operation soapAction="http://soapi.ovh.com/manager#domainResellerDel" />
+ <wsdl:input>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:output>
+ <wsdl:fault name="failure">
+ <soap:fault encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" name="failure" use="encoded" />
+ </wsdl:fault>
+ </wsdl:operation>
+
+ <wsdl:operation name="telephonyPhonebookOnGroupModify">
+ <soap:operation soapAction="http://soapi.ovh.com/manager#telephonyPhonebookOnGroupModify" />
+ <wsdl:input>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:output>
+ <wsdl:fault name="failure">
+ <soap:fault encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" name="failure" use="encoded" />
+ </wsdl:fault>
+ </wsdl:operation>
+
+ <wsdl:operation name="telephonyLineSwitchOldOfferPossibility">
+ <soap:operation soapAction="http://soapi.ovh.com/manager#telephonyLineSwitchOldOfferPossibility" />
+ <wsdl:input>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:output>
+ <wsdl:fault name="failure">
+ <soap:fault encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" name="failure" use="encoded" />
+ </wsdl:fault>
+ </wsdl:operation>
+
+ <wsdl:operation name="resellerDomainCreateIT">
+ <soap:operation soapAction="http://soapi.ovh.com/manager#resellerDomainCreateIT" />
+ <wsdl:input>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:output>
+ <wsdl:fault name="failure">
+ <soap:fault encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" name="failure" use="encoded" />
+ </wsdl:fault>
+ </wsdl:operation>
+
+ <wsdl:operation name="notepadGet">
+ <soap:operation soapAction="http://soapi.ovh.com/manager#notepadGet" />
+ <wsdl:input>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:output>
+ <wsdl:fault name="failure">
+ <soap:fault encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" name="failure" use="encoded" />
+ </wsdl:fault>
+ </wsdl:operation>
+
+ <wsdl:operation name="telephonySmsplusServiceList">
+ <soap:operation soapAction="http://soapi.ovh.com/manager#telephonySmsplusServiceList" />
+ <wsdl:input>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:output>
+ <wsdl:fault name="failure">
+ <soap:fault encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" name="failure" use="encoded" />
+ </wsdl:fault>
+ </wsdl:operation>
+
+ <wsdl:operation name="telephonyHuntingModificationAnonymousCallRejection">
+ <soap:operation soapAction="http://soapi.ovh.com/manager#telephonyHuntingModificationAnonymousCallRejection" />
+ <wsdl:input>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:output>
+ <wsdl:fault name="failure">
+ <soap:fault encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" name="failure" use="encoded" />
+ </wsdl:fault>
+ </wsdl:operation>
+
+ <wsdl:operation name="dedicatedFilterIrcServerRuleList">
+ <soap:operation soapAction="http://soapi.ovh.com/manager#dedicatedFilterIrcServerRuleList" />
+ <wsdl:input>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:output>
+ <wsdl:fault name="failure">
+ <soap:fault encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" name="failure" use="encoded" />
+ </wsdl:fault>
+ </wsdl:operation>
+
+ <wsdl:operation name="telephonyNumberGetBillingAccount">
+ <soap:operation soapAction="http://soapi.ovh.com/manager#telephonyNumberGetBillingAccount" />
+ <wsdl:input>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:output>
+ <wsdl:fault name="failure">
+ <soap:fault encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" name="failure" use="encoded" />
+ </wsdl:fault>
+ </wsdl:operation>
+
+ <wsdl:operation name="managedServicesPartitionDelete">
+ <soap:operation soapAction="http://soapi.ovh.com/manager#managedServicesPartitionDelete" />
+ <wsdl:input>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:output>
+ <wsdl:fault name="failure">
+ <soap:fault encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" name="failure" use="encoded" />
+ </wsdl:fault>
+ </wsdl:operation>
+
+ <wsdl:operation name="telephonyTonesOptionsList">
+ <soap:operation soapAction="http://soapi.ovh.com/manager#telephonyTonesOptionsList" />
+ <wsdl:input>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:output>
+ <wsdl:fault name="failure">
+ <soap:fault encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" name="failure" use="encoded" />
+ </wsdl:fault>
+ </wsdl:operation>
+
+ <wsdl:operation name="telephonySpareList">
+ <soap:operation soapAction="http://soapi.ovh.com/manager#telephonySpareList" />
+ <wsdl:input>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:output>
+ <wsdl:fault name="failure">
+ <soap:fault encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" name="failure" use="encoded" />
+ </wsdl:fault>
+ </wsdl:operation>
+
+ <wsdl:operation name="supportReportAnswerProblem">
+ <soap:operation soapAction="http://soapi.ovh.com/manager#supportReportAnswerProblem" />
+ <wsdl:input>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:output>
+ <wsdl:fault name="failure">
+ <soap:fault encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" name="failure" use="encoded" />
+ </wsdl:fault>
+ </wsdl:operation>
+
+ <wsdl:operation name="multiDomainList">
+ <soap:operation soapAction="http://soapi.ovh.com/manager#multiDomainList" />
+ <wsdl:input>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:output>
+ <wsdl:fault name="failure">
+ <soap:fault encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" name="failure" use="encoded" />
+ </wsdl:fault>
+ </wsdl:operation>
+
+ <wsdl:operation name="ticketClose">
+ <soap:operation soapAction="http://soapi.ovh.com/manager#ticketClose" />
+ <wsdl:input>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:output>
+ <wsdl:fault name="failure">
+ <soap:fault encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" name="failure" use="encoded" />
+ </wsdl:fault>
+ </wsdl:operation>
+
+ <wsdl:operation name="dedicatedRipeCreateOrganisation">
+ <soap:operation soapAction="http://soapi.ovh.com/manager#dedicatedRipeCreateOrganisation" />
+ <wsdl:input>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:output>
+ <wsdl:fault name="failure">
+ <soap:fault encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" name="failure" use="encoded" />
+ </wsdl:fault>
+ </wsdl:operation>
+
+ <wsdl:operation name="telephonyListSummationCallsFromNumber">
+ <soap:operation soapAction="http://soapi.ovh.com/manager#telephonyListSummationCallsFromNumber" />
+ <wsdl:input>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:output>
+ <wsdl:fault name="failure">
+ <soap:fault encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" name="failure" use="encoded" />
+ </wsdl:fault>
+ </wsdl:operation>
+
+ <wsdl:operation name="telephonyConferenceGetParams">
+ <soap:operation soapAction="http://soapi.ovh.com/manager#telephonyConferenceGetParams" />
+ <wsdl:input>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:output>
+ <wsdl:fault name="failure">
+ <soap:fault encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" name="failure" use="encoded" />
+ </wsdl:fault>
+ </wsdl:operation>
+
+ <wsdl:operation name="telephonyPhonebookContactModify">
+ <soap:operation soapAction="http://soapi.ovh.com/manager#telephonyPhonebookContactModify" />
+ <wsdl:input>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:output>
+ <wsdl:fault name="failure">
+ <soap:fault encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" name="failure" use="encoded" />
+ </wsdl:fault>
+ </wsdl:operation>
+
+ <wsdl:operation name="domainDnsGetOvhDefault">
+ <soap:operation soapAction="http://soapi.ovh.com/manager#domainDnsGetOvhDefault" />
+ <wsdl:input>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:output>
+ <wsdl:fault name="failure">
+ <soap:fault encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" name="failure" use="encoded" />
+ </wsdl:fault>
+ </wsdl:operation>
+
+ <wsdl:operation name="telephonyLineList">
+ <soap:operation soapAction="http://soapi.ovh.com/manager#telephonyLineList" />
+ <wsdl:input>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:output>
+ <wsdl:fault name="failure">
+ <soap:fault encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" name="failure" use="encoded" />
+ </wsdl:fault>
+ </wsdl:operation>
+
+ <wsdl:operation name="databaseCreate">
+ <soap:operation soapAction="http://soapi.ovh.com/manager#databaseCreate" />
+ <wsdl:input>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:output>
+ <wsdl:fault name="failure">
+ <soap:fault encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" name="failure" use="encoded" />
+ </wsdl:fault>
+ </wsdl:operation>
+
+ <wsdl:operation name="billingGetAccessByNic">
+ <soap:operation soapAction="http://soapi.ovh.com/manager#billingGetAccessByNic" />
+ <wsdl:input>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:output>
+ <wsdl:fault name="failure">
+ <soap:fault encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" name="failure" use="encoded" />
+ </wsdl:fault>
+ </wsdl:operation>
+
+ <wsdl:operation name="dedicatedBackupExcludeAdd">
+ <soap:operation soapAction="http://soapi.ovh.com/manager#dedicatedBackupExcludeAdd" />
+ <wsdl:input>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:output>
+ <wsdl:fault name="failure">
+ <soap:fault encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" name="failure" use="encoded" />
+ </wsdl:fault>
+ </wsdl:operation>
+
+ <wsdl:operation name="serviceModifyOwner">
+ <soap:operation soapAction="http://soapi.ovh.com/manager#serviceModifyOwner" />
+ <wsdl:input>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:output>
+ <wsdl:fault name="failure">
+ <soap:fault encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" name="failure" use="encoded" />
+ </wsdl:fault>
+ </wsdl:operation>
+
+ <wsdl:operation name="telephonyLineOptionsModify">
+ <soap:operation soapAction="http://soapi.ovh.com/manager#telephonyLineOptionsModify" />
+ <wsdl:input>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:output>
+ <wsdl:fault name="failure">
+ <soap:fault encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" name="failure" use="encoded" />
+ </wsdl:fault>
+ </wsdl:operation>
+
+ <wsdl:operation name="telephonyHuntingGenericScreenSet">
+ <soap:operation soapAction="http://soapi.ovh.com/manager#telephonyHuntingGenericScreenSet" />
+ <wsdl:input>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:output>
+ <wsdl:fault name="failure">
+ <soap:fault encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" name="failure" use="encoded" />
+ </wsdl:fault>
+ </wsdl:operation>
+
+ <wsdl:operation name="sqlpriveCronDel">
+ <soap:operation soapAction="http://soapi.ovh.com/manager#sqlpriveCronDel" />
+ <wsdl:input>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:output>
+ <wsdl:fault name="failure">
+ <soap:fault encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" name="failure" use="encoded" />
+ </wsdl:fault>
+ </wsdl:operation>
+
+ <wsdl:operation name="telephonyFaxCampaignStartStop">
+ <soap:operation soapAction="http://soapi.ovh.com/manager#telephonyFaxCampaignStartStop" />
+ <wsdl:input>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:output>
+ <wsdl:fault name="failure">
+ <soap:fault encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" name="failure" use="encoded" />
+ </wsdl:fault>
+ </wsdl:operation>
+
+ <wsdl:operation name="dedicatedFilterIrcServerRuleDel">
+ <soap:operation soapAction="http://soapi.ovh.com/manager#dedicatedFilterIrcServerRuleDel" />
+ <wsdl:input>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:output>
+ <wsdl:fault name="failure">
+ <soap:fault encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" name="failure" use="encoded" />
+ </wsdl:fault>
+ </wsdl:operation>
+
+ <wsdl:operation name="hostingGetCapabilities">
+ <soap:operation soapAction="http://soapi.ovh.com/manager#hostingGetCapabilities" />
+ <wsdl:input>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:output>
+ <wsdl:fault name="failure">
+ <soap:fault encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" name="failure" use="encoded" />
+ </wsdl:fault>
+ </wsdl:operation>
+
+ <wsdl:operation name="domainWhoisObfuscatorUnset">
+ <soap:operation soapAction="http://soapi.ovh.com/manager#domainWhoisObfuscatorUnset" />
+ <wsdl:input>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:output>
+ <wsdl:fault name="failure">
+ <soap:fault encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" name="failure" use="encoded" />
+ </wsdl:fault>
+ </wsdl:operation>
+
+ <wsdl:operation name="domainHostDel">
+ <soap:operation soapAction="http://soapi.ovh.com/manager#domainHostDel" />
+ <wsdl:input>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:output>
+ <wsdl:fault name="failure">
+ <soap:fault encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" name="failure" use="encoded" />
+ </wsdl:fault>
+ </wsdl:operation>
+
+ <wsdl:operation name="dedicatedFailoverRipeModify">
+ <soap:operation soapAction="http://soapi.ovh.com/manager#dedicatedFailoverRipeModify" />
+ <wsdl:input>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:output>
+ <wsdl:fault name="failure">
+ <soap:fault encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" name="failure" use="encoded" />
+ </wsdl:fault>
+ </wsdl:operation>
+
+ <wsdl:operation name="responderEmailDel">
+ <soap:operation soapAction="http://soapi.ovh.com/manager#responderEmailDel" />
+ <wsdl:input>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:output>
+ <wsdl:fault name="failure">
+ <soap:fault encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" name="failure" use="encoded" />
+ </wsdl:fault>
+ </wsdl:operation>
+
+ <wsdl:operation name="dedicatedMonitoringList">
+ <soap:operation soapAction="http://soapi.ovh.com/manager#dedicatedMonitoringList" />
+ <wsdl:input>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:output>
+ <wsdl:fault name="failure">
+ <soap:fault encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" name="failure" use="encoded" />
+ </wsdl:fault>
+ </wsdl:operation>
+
+ <wsdl:operation name="telephonyDirectoryModifyAddress">
+ <soap:operation soapAction="http://soapi.ovh.com/manager#telephonyDirectoryModifyAddress" />
+ <wsdl:input>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:output>
+ <wsdl:fault name="failure">
+ <soap:fault encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" name="failure" use="encoded" />
+ </wsdl:fault>
+ </wsdl:operation>
+
+ <wsdl:operation name="managedServicesPartitionStatusCheck">
+ <soap:operation soapAction="http://soapi.ovh.com/manager#managedServicesPartitionStatusCheck" />
+ <wsdl:input>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:output>
+ <wsdl:fault name="failure">
+ <soap:fault encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" name="failure" use="encoded" />
+ </wsdl:fault>
+ </wsdl:operation>
+
+ <wsdl:operation name="cmsAvailableList">
+ <soap:operation soapAction="http://soapi.ovh.com/manager#cmsAvailableList" />
+ <wsdl:input>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:output>
+ <wsdl:fault name="failure">
+ <soap:fault encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" name="failure" use="encoded" />
+ </wsdl:fault>
+ </wsdl:operation>
+
+ <wsdl:operation name="telephonyNicSetMgcpIpRestriction">
+ <soap:operation soapAction="http://soapi.ovh.com/manager#telephonyNicSetMgcpIpRestriction" />
+ <wsdl:input>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:output>
+ <wsdl:fault name="failure">
+ <soap:fault encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" name="failure" use="encoded" />
+ </wsdl:fault>
+ </wsdl:operation>
+
+ <wsdl:operation name="telephonySecurityDepositCredit">
+ <soap:operation soapAction="http://soapi.ovh.com/manager#telephonySecurityDepositCredit" />
+ <wsdl:input>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:output>
+ <wsdl:fault name="failure">
+ <soap:fault encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" name="failure" use="encoded" />
+ </wsdl:fault>
+ </wsdl:operation>
+
+ <wsdl:operation name="nicModifyLanguage">
+ <soap:operation soapAction="http://soapi.ovh.com/manager#nicModifyLanguage" />
+ <wsdl:input>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:output>
+ <wsdl:fault name="failure">
+ <soap:fault encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" name="failure" use="encoded" />
+ </wsdl:fault>
+ </wsdl:operation>
+
+ <wsdl:operation name="telephonyLineOrder">
+ <soap:operation soapAction="http://soapi.ovh.com/manager#telephonyLineOrder" />
+ <wsdl:input>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:output>
+ <wsdl:fault name="failure">
+ <soap:fault encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" name="failure" use="encoded" />
+ </wsdl:fault>
+ </wsdl:operation>
+
+ <wsdl:operation name="telephonyConferenceAction">
+ <soap:operation soapAction="http://soapi.ovh.com/manager#telephonyConferenceAction" />
+ <wsdl:input>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:output>
+ <wsdl:fault name="failure">
+ <soap:fault encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" name="failure" use="encoded" />
+ </wsdl:fault>
+ </wsdl:operation>
+
+ <wsdl:operation name="dedicatedBackupExcludeDel">
+ <soap:operation soapAction="http://soapi.ovh.com/manager#dedicatedBackupExcludeDel" />
+ <wsdl:input>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:output>
+ <wsdl:fault name="failure">
+ <soap:fault encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" name="failure" use="encoded" />
+ </wsdl:fault>
+ </wsdl:operation>
+
+ <wsdl:operation name="automatedMailUnlock">
+ <soap:operation soapAction="http://soapi.ovh.com/manager#automatedMailUnlock" />
+ <wsdl:input>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:output>
+ <wsdl:fault name="failure">
+ <soap:fault encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" name="failure" use="encoded" />
+ </wsdl:fault>
+ </wsdl:operation>
+
+ <wsdl:operation name="ripeQuery">
+ <soap:operation soapAction="http://soapi.ovh.com/manager#ripeQuery" />
+ <wsdl:input>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:output>
+ <wsdl:fault name="failure">
+ <soap:fault encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" name="failure" use="encoded" />
+ </wsdl:fault>
+ </wsdl:operation>
+
+ <wsdl:operation name="login">
+ <soap:operation soapAction="http://soapi.ovh.com/manager#login" />
+ <wsdl:input>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:output>
+ <wsdl:fault name="failure">
+ <soap:fault encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" name="failure" use="encoded" />
+ </wsdl:fault>
+ </wsdl:operation>
+
+ <wsdl:operation name="telephonyFunctionKeyDel">
+ <soap:operation soapAction="http://soapi.ovh.com/manager#telephonyFunctionKeyDel" />
+ <wsdl:input>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:output>
+ <wsdl:fault name="failure">
+ <soap:fault encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" name="failure" use="encoded" />
+ </wsdl:fault>
+ </wsdl:operation>
+
+ <wsdl:operation name="popListByMasterNic">
+ <soap:operation soapAction="http://soapi.ovh.com/manager#popListByMasterNic" />
+ <wsdl:input>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:output>
+ <wsdl:fault name="failure">
+ <soap:fault encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" name="failure" use="encoded" />
+ </wsdl:fault>
+ </wsdl:operation>
+
+ <wsdl:operation name="serviceModifyOwnerInfos">
+ <soap:operation soapAction="http://soapi.ovh.com/manager#serviceModifyOwnerInfos" />
+ <wsdl:input>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:output>
+ <wsdl:fault name="failure">
+ <soap:fault encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" name="failure" use="encoded" />
+ </wsdl:fault>
+ </wsdl:operation>
+
+ <wsdl:operation name="dedicatedHardRebootStatus">
+ <soap:operation soapAction="http://soapi.ovh.com/manager#dedicatedHardRebootStatus" />
+ <wsdl:input>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:output>
+ <wsdl:fault name="failure">
+ <soap:fault encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" name="failure" use="encoded" />
+ </wsdl:fault>
+ </wsdl:operation>
+
+ <wsdl:operation name="domainInfo">
+ <soap:operation soapAction="http://soapi.ovh.com/manager#domainInfo" />
+ <wsdl:input>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:output>
+ <wsdl:fault name="failure">
+ <soap:fault encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" name="failure" use="encoded" />
+ </wsdl:fault>
+ </wsdl:operation>
+
+ <wsdl:operation name="dedicatedGetServiceMonitoringItem">
+ <soap:operation soapAction="http://soapi.ovh.com/manager#dedicatedGetServiceMonitoringItem" />
+ <wsdl:input>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:output>
+ <wsdl:fault name="failure">
+ <soap:fault encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" name="failure" use="encoded" />
+ </wsdl:fault>
+ </wsdl:operation>
+
+ <wsdl:operation name="telephonyNicGetSipDomain">
+ <soap:operation soapAction="http://soapi.ovh.com/manager#telephonyNicGetSipDomain" />
+ <wsdl:input>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:output>
+ <wsdl:fault name="failure">
+ <soap:fault encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" name="failure" use="encoded" />
+ </wsdl:fault>
+ </wsdl:operation>
+
+ <wsdl:operation name="telephonyGetClosureEventsAsICS">
+ <soap:operation soapAction="http://soapi.ovh.com/manager#telephonyGetClosureEventsAsICS" />
+ <wsdl:input>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:output>
+ <wsdl:fault name="failure">
+ <soap:fault encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" name="failure" use="encoded" />
+ </wsdl:fault>
+ </wsdl:operation>
+
+ <wsdl:operation name="telephonySmsUserCreditLeft">
+ <soap:operation soapAction="http://soapi.ovh.com/manager#telephonySmsUserCreditLeft" />
+ <wsdl:input>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:output>
+ <wsdl:fault name="failure">
+ <soap:fault encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" name="failure" use="encoded" />
+ </wsdl:fault>
+ </wsdl:operation>
+
+ <wsdl:operation name="telephonyPortabilityOrder">
+ <soap:operation soapAction="http://soapi.ovh.com/manager#telephonyPortabilityOrder" />
+ <wsdl:input>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:output>
+ <wsdl:fault name="failure">
+ <soap:fault encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" name="failure" use="encoded" />
+ </wsdl:fault>
+ </wsdl:operation>
+
+ <wsdl:operation name="passwordSoapi">
+ <soap:operation soapAction="http://soapi.ovh.com/manager#passwordSoapi" />
+ <wsdl:input>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:output>
+ <wsdl:fault name="failure">
+ <soap:fault encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" name="failure" use="encoded" />
+ </wsdl:fault>
+ </wsdl:operation>
+
+ <wsdl:operation name="nicCreate">
+ <soap:operation soapAction="http://soapi.ovh.com/manager#nicCreate" />
+ <wsdl:input>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:output>
+ <wsdl:fault name="failure">
+ <soap:fault encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" name="failure" use="encoded" />
+ </wsdl:fault>
+ </wsdl:operation>
+
+ <wsdl:operation name="cmsRemove">
+ <soap:operation soapAction="http://soapi.ovh.com/manager#cmsRemove" />
+ <wsdl:input>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:output>
+ <wsdl:fault name="failure">
+ <soap:fault encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" name="failure" use="encoded" />
+ </wsdl:fault>
+ </wsdl:operation>
+
+ <wsdl:operation name="telephonyVoicemailMailboxDelete">
+ <soap:operation soapAction="http://soapi.ovh.com/manager#telephonyVoicemailMailboxDelete" />
+ <wsdl:input>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:output>
+ <wsdl:fault name="failure">
+ <soap:fault encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" name="failure" use="encoded" />
+ </wsdl:fault>
+ </wsdl:operation>
+
+ <wsdl:operation name="sqlpriveMysqlDatabaseImportFromHost">
+ <soap:operation soapAction="http://soapi.ovh.com/manager#sqlpriveMysqlDatabaseImportFromHost" />
+ <wsdl:input>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:output>
+ <wsdl:fault name="failure">
+ <soap:fault encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" name="failure" use="encoded" />
+ </wsdl:fault>
+ </wsdl:operation>
+
+ <wsdl:operation name="billingInvoiceInfo">
+ <soap:operation soapAction="http://soapi.ovh.com/manager#billingInvoiceInfo" />
+ <wsdl:input>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:output>
+ <wsdl:fault name="failure">
+ <soap:fault encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" name="failure" use="encoded" />
+ </wsdl:fault>
+ </wsdl:operation>
+
+ <wsdl:operation name="telephonyBillingAccountDel">
+ <soap:operation soapAction="http://soapi.ovh.com/manager#telephonyBillingAccountDel" />
+ <wsdl:input>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:output>
+ <wsdl:fault name="failure">
+ <soap:fault encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" name="failure" use="encoded" />
+ </wsdl:fault>
+ </wsdl:operation>
+
+ <wsdl:operation name="version">
+ <soap:operation soapAction="http://soapi.ovh.com/manager#version" />
+ <wsdl:input>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:output>
+ <wsdl:fault name="failure">
+ <soap:fault encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" name="failure" use="encoded" />
+ </wsdl:fault>
+ </wsdl:operation>
+
+ <wsdl:operation name="orderAccountCredit">
+ <soap:operation soapAction="http://soapi.ovh.com/manager#orderAccountCredit" />
+ <wsdl:input>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:output>
+ <wsdl:fault name="failure">
+ <soap:fault encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" name="failure" use="encoded" />
+ </wsdl:fault>
+ </wsdl:operation>
+
+ <wsdl:operation name="telephonyNumberClean">
+ <soap:operation soapAction="http://soapi.ovh.com/manager#telephonyNumberClean" />
+ <wsdl:input>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:output>
+ <wsdl:fault name="failure">
+ <soap:fault encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" name="failure" use="encoded" />
+ </wsdl:fault>
+ </wsdl:operation>
+
+ <wsdl:operation name="dedicatedReverseAdd">
+ <soap:operation soapAction="http://soapi.ovh.com/manager#dedicatedReverseAdd" />
+ <wsdl:input>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:output>
+ <wsdl:fault name="failure">
+ <soap:fault encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" name="failure" use="encoded" />
+ </wsdl:fault>
+ </wsdl:operation>
+
+ <wsdl:operation name="dedicatedBackupGetFreePlanning">
+ <soap:operation soapAction="http://soapi.ovh.com/manager#dedicatedBackupGetFreePlanning" />
+ <wsdl:input>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:output>
+ <wsdl:fault name="failure">
+ <soap:fault encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" name="failure" use="encoded" />
+ </wsdl:fault>
+ </wsdl:operation>
+
+ <wsdl:operation name="dedicatedInstallAllowedDistributionGet">
+ <soap:operation soapAction="http://soapi.ovh.com/manager#dedicatedInstallAllowedDistributionGet" />
+ <wsdl:input>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:output>
+ <wsdl:fault name="failure">
+ <soap:fault encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" name="failure" use="encoded" />
+ </wsdl:fault>
+ </wsdl:operation>
+
+ <wsdl:operation name="subDomainModify">
+ <soap:operation soapAction="http://soapi.ovh.com/manager#subDomainModify" />
+ <wsdl:input>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:output>
+ <wsdl:fault name="failure">
+ <soap:fault encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" name="failure" use="encoded" />
+ </wsdl:fault>
+ </wsdl:operation>
+
+ <wsdl:operation name="telephonyPlugAndPhoneOperation">
+ <soap:operation soapAction="http://soapi.ovh.com/manager#telephonyPlugAndPhoneOperation" />
+ <wsdl:input>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:output>
+ <wsdl:fault name="failure">
+ <soap:fault encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" name="failure" use="encoded" />
+ </wsdl:fault>
+ </wsdl:operation>
+
+ <wsdl:operation name="nicInfo">
+ <soap:operation soapAction="http://soapi.ovh.com/manager#nicInfo" />
+ <wsdl:input>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:output>
+ <wsdl:fault name="failure">
+ <soap:fault encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" name="failure" use="encoded" />
+ </wsdl:fault>
+ </wsdl:operation>
+
+ <wsdl:operation name="anonymousFtpInfo">
+ <soap:operation soapAction="http://soapi.ovh.com/manager#anonymousFtpInfo" />
+ <wsdl:input>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:output>
+ <wsdl:fault name="failure">
+ <soap:fault encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" name="failure" use="encoded" />
+ </wsdl:fault>
+ </wsdl:operation>
+
+ <wsdl:operation name="dedicatedCapabilitiesGet">
+ <soap:operation soapAction="http://soapi.ovh.com/manager#dedicatedCapabilitiesGet" />
+ <wsdl:input>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:output>
+ <wsdl:fault name="failure">
+ <soap:fault encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" name="failure" use="encoded" />
+ </wsdl:fault>
+ </wsdl:operation>
+
+ <wsdl:operation name="telephonyPhonebookOnSmsContactModify">
+ <soap:operation soapAction="http://soapi.ovh.com/manager#telephonyPhonebookOnSmsContactModify" />
+ <wsdl:input>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:output>
+ <wsdl:fault name="failure">
+ <soap:fault encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" name="failure" use="encoded" />
+ </wsdl:fault>
+ </wsdl:operation>
+
+ <wsdl:operation name="telephonyPhonebookOnSmsModify">
+ <soap:operation soapAction="http://soapi.ovh.com/manager#telephonyPhonebookOnSmsModify" />
+ <wsdl:input>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:output>
+ <wsdl:fault name="failure">
+ <soap:fault encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" name="failure" use="encoded" />
+ </wsdl:fault>
+ </wsdl:operation>
+
+ <wsdl:operation name="cmsList">
+ <soap:operation soapAction="http://soapi.ovh.com/manager#cmsList" />
+ <wsdl:input>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:output>
+ <wsdl:fault name="failure">
+ <soap:fault encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" name="failure" use="encoded" />
+ </wsdl:fault>
+ </wsdl:operation>
+
+ <wsdl:operation name="telephonySmsSetQuotaNotification">
+ <soap:operation soapAction="http://soapi.ovh.com/manager#telephonySmsSetQuotaNotification" />
+ <wsdl:input>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:output>
+ <wsdl:fault name="failure">
+ <soap:fault encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" name="failure" use="encoded" />
+ </wsdl:fault>
+ </wsdl:operation>
+
+ <wsdl:operation name="dedicatedMonitoringSMSDel">
+ <soap:operation soapAction="http://soapi.ovh.com/manager#dedicatedMonitoringSMSDel" />
+ <wsdl:input>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:output>
+ <wsdl:fault name="failure">
+ <soap:fault encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" name="failure" use="encoded" />
+ </wsdl:fault>
+ </wsdl:operation>
+
+ <wsdl:operation name="telephonySmsUserList">
+ <soap:operation soapAction="http://soapi.ovh.com/manager#telephonySmsUserList" />
+ <wsdl:input>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:output>
+ <wsdl:fault name="failure">
+ <soap:fault encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" name="failure" use="encoded" />
+ </wsdl:fault>
+ </wsdl:operation>
+
+ <wsdl:operation name="ripeDeleteOrganisation">
+ <soap:operation soapAction="http://soapi.ovh.com/manager#ripeDeleteOrganisation" />
+ <wsdl:input>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:output>
+ <wsdl:fault name="failure">
+ <soap:fault encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" name="failure" use="encoded" />
+ </wsdl:fault>
+ </wsdl:operation>
+
+ <wsdl:operation name="logsAccessList">
+ <soap:operation soapAction="http://soapi.ovh.com/manager#logsAccessList" />
+ <wsdl:input>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:output>
+ <wsdl:fault name="failure">
+ <soap:fault encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" name="failure" use="encoded" />
+ </wsdl:fault>
+ </wsdl:operation>
+
+ <wsdl:operation name="telephonyHuntingInfo">
+ <soap:operation soapAction="http://soapi.ovh.com/manager#telephonyHuntingInfo" />
+ <wsdl:input>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:output>
+ <wsdl:fault name="failure">
+ <soap:fault encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" name="failure" use="encoded" />
+ </wsdl:fault>
+ </wsdl:operation>
+
+ <wsdl:operation name="dedicatedMonitoringAdd">
+ <soap:operation soapAction="http://soapi.ovh.com/manager#dedicatedMonitoringAdd" />
+ <wsdl:input>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:output>
+ <wsdl:fault name="failure">
+ <soap:fault encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" name="failure" use="encoded" />
+ </wsdl:fault>
+ </wsdl:operation>
+
+ <wsdl:operation name="telephonyPhonebookContactList">
+ <soap:operation soapAction="http://soapi.ovh.com/manager#telephonyPhonebookContactList" />
+ <wsdl:input>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:output>
+ <wsdl:fault name="failure">
+ <soap:fault encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" name="failure" use="encoded" />
+ </wsdl:fault>
+ </wsdl:operation>
+
+ <wsdl:operation name="resellerDomainTransferASIA">
+ <soap:operation soapAction="http://soapi.ovh.com/manager#resellerDomainTransferASIA" />
+ <wsdl:input>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:output>
+ <wsdl:fault name="failure">
+ <soap:fault encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" name="failure" use="encoded" />
+ </wsdl:fault>
+ </wsdl:operation>
+
+ <wsdl:operation name="telephonySmsUserPassword">
+ <soap:operation soapAction="http://soapi.ovh.com/manager#telephonySmsUserPassword" />
+ <wsdl:input>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:output>
+ <wsdl:fault name="failure">
+ <soap:fault encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" name="failure" use="encoded" />
+ </wsdl:fault>
+ </wsdl:operation>
+
+ <wsdl:operation name="domainHostList">
+ <soap:operation soapAction="http://soapi.ovh.com/manager#domainHostList" />
+ <wsdl:input>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:output>
+ <wsdl:fault name="failure">
+ <soap:fault encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" name="failure" use="encoded" />
+ </wsdl:fault>
+ </wsdl:operation>
+
+ <wsdl:operation name="hostingChangeMainDomain">
+ <soap:operation soapAction="http://soapi.ovh.com/manager#hostingChangeMainDomain" />
+ <wsdl:input>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:output>
+ <wsdl:fault name="failure">
+ <soap:fault encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" name="failure" use="encoded" />
+ </wsdl:fault>
+ </wsdl:operation>
+
+ <wsdl:operation name="telephonyLineGetOfferPrices">
+ <soap:operation soapAction="http://soapi.ovh.com/manager#telephonyLineGetOfferPrices" />
+ <wsdl:input>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:output>
+ <wsdl:fault name="failure">
+ <soap:fault encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" name="failure" use="encoded" />
+ </wsdl:fault>
+ </wsdl:operation>
+
+ <wsdl:operation name="telephonySmsGetQuotaNotification">
+ <soap:operation soapAction="http://soapi.ovh.com/manager#telephonySmsGetQuotaNotification" />
+ <wsdl:input>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:output>
+ <wsdl:fault name="failure">
+ <soap:fault encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" name="failure" use="encoded" />
+ </wsdl:fault>
+ </wsdl:operation>
+
+ <wsdl:operation name="telephonyHuntingModificationMode">
+ <soap:operation soapAction="http://soapi.ovh.com/manager#telephonyHuntingModificationMode" />
+ <wsdl:input>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:output>
+ <wsdl:fault name="failure">
+ <soap:fault encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" name="failure" use="encoded" />
+ </wsdl:fault>
+ </wsdl:operation>
+
+ <wsdl:operation name="telephonyScreenListBlackWhiteChoice">
+ <soap:operation soapAction="http://soapi.ovh.com/manager#telephonyScreenListBlackWhiteChoice" />
+ <wsdl:input>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:output>
+ <wsdl:fault name="failure">
+ <soap:fault encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" name="failure" use="encoded" />
+ </wsdl:fault>
+ </wsdl:operation>
+
+ <wsdl:operation name="telephonySmsDeleteCsvAttachment">
+ <soap:operation soapAction="http://soapi.ovh.com/manager#telephonySmsDeleteCsvAttachment" />
+ <wsdl:input>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:output>
+ <wsdl:fault name="failure">
+ <soap:fault encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" name="failure" use="encoded" />
+ </wsdl:fault>
+ </wsdl:operation>
+
+ <wsdl:operation name="telephonyNumberZoneAndPrefixList">
+ <soap:operation soapAction="http://soapi.ovh.com/manager#telephonyNumberZoneAndPrefixList" />
+ <wsdl:input>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:output>
+ <wsdl:fault name="failure">
+ <soap:fault encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" name="failure" use="encoded" />
+ </wsdl:fault>
+ </wsdl:operation>
+
+ <wsdl:operation name="serviceGroupDelete">
+ <soap:operation soapAction="http://soapi.ovh.com/manager#serviceGroupDelete" />
+ <wsdl:input>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:output>
+ <wsdl:fault name="failure">
+ <soap:fault encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" name="failure" use="encoded" />
+ </wsdl:fault>
+ </wsdl:operation>
+
+ <wsdl:operation name="dedicatedOperationList">
+ <soap:operation soapAction="http://soapi.ovh.com/manager#dedicatedOperationList" />
+ <wsdl:input>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:output>
+ <wsdl:fault name="failure">
+ <soap:fault encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" name="failure" use="encoded" />
+ </wsdl:fault>
+ </wsdl:operation>
+
+ <wsdl:operation name="telephonyLineSetSipDomain">
+ <soap:operation soapAction="http://soapi.ovh.com/manager#telephonyLineSetSipDomain" />
+ <wsdl:input>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:output>
+ <wsdl:fault name="failure">
+ <soap:fault encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" name="failure" use="encoded" />
+ </wsdl:fault>
+ </wsdl:operation>
+
+ <wsdl:operation name="telephonyTrunkExternalDisplayedNumberDel">
+ <soap:operation soapAction="http://soapi.ovh.com/manager#telephonyTrunkExternalDisplayedNumberDel" />
+ <wsdl:input>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:output>
+ <wsdl:fault name="failure">
+ <soap:fault encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" name="failure" use="encoded" />
+ </wsdl:fault>
+ </wsdl:operation>
+
+ <wsdl:operation name="mailingListModeratorAdd">
+ <soap:operation soapAction="http://soapi.ovh.com/manager#mailingListModeratorAdd" />
+ <wsdl:input>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:output>
+ <wsdl:fault name="failure">
+ <soap:fault encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" name="failure" use="encoded" />
+ </wsdl:fault>
+ </wsdl:operation>
+
+ <wsdl:operation name="telephonyPhonebookOnGroupContactList">
+ <soap:operation soapAction="http://soapi.ovh.com/manager#telephonyPhonebookOnGroupContactList" />
+ <wsdl:input>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:output>
+ <wsdl:fault name="failure">
+ <soap:fault encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" name="failure" use="encoded" />
+ </wsdl:fault>
+ </wsdl:operation>
+
+ <wsdl:operation name="telephonySmsplusServiceReversableTicketsSummary">
+ <soap:operation soapAction="http://soapi.ovh.com/manager#telephonySmsplusServiceReversableTicketsSummary" />
+ <wsdl:input>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:output>
+ <wsdl:fault name="failure">
+ <soap:fault encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" name="failure" use="encoded" />
+ </wsdl:fault>
+ </wsdl:operation>
+
+ <wsdl:operation name="anonymousFtpActivate">
+ <soap:operation soapAction="http://soapi.ovh.com/manager#anonymousFtpActivate" />
+ <wsdl:input>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:output>
+ <wsdl:fault name="failure">
+ <soap:fault encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" name="failure" use="encoded" />
+ </wsdl:fault>
+ </wsdl:operation>
+
+ <wsdl:operation name="telephonyDeleteLine">
+ <soap:operation soapAction="http://soapi.ovh.com/manager#telephonyDeleteLine" />
+ <wsdl:input>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:output>
+ <wsdl:fault name="failure">
+ <soap:fault encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" name="failure" use="encoded" />
+ </wsdl:fault>
+ </wsdl:operation>
+
+ <wsdl:operation name="nicModifyInfosIT">
+ <soap:operation soapAction="http://soapi.ovh.com/manager#nicModifyInfosIT" />
+ <wsdl:input>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:output>
+ <wsdl:fault name="failure">
+ <soap:fault encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" name="failure" use="encoded" />
+ </wsdl:fault>
+ </wsdl:operation>
+
+ <wsdl:operation name="telephonySetTimeZoneNumber">
+ <soap:operation soapAction="http://soapi.ovh.com/manager#telephonySetTimeZoneNumber" />
+ <wsdl:input>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:output>
+ <wsdl:fault name="failure">
+ <soap:fault encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" name="failure" use="encoded" />
+ </wsdl:fault>
+ </wsdl:operation>
+
+ <wsdl:operation name="ortDomainAdd">
+ <soap:operation soapAction="http://soapi.ovh.com/manager#ortDomainAdd" />
+ <wsdl:input>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:output>
+ <wsdl:fault name="failure">
+ <soap:fault encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" name="failure" use="encoded" />
+ </wsdl:fault>
+ </wsdl:operation>
+
+ <wsdl:operation name="nicPublicInfo">
+ <soap:operation soapAction="http://soapi.ovh.com/manager#nicPublicInfo" />
+ <wsdl:input>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:output>
+ <wsdl:fault name="failure">
+ <soap:fault encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" name="failure" use="encoded" />
+ </wsdl:fault>
+ </wsdl:operation>
+
+ <wsdl:operation name="sqlpriveAlertSet">
+ <soap:operation soapAction="http://soapi.ovh.com/manager#sqlpriveAlertSet" />
+ <wsdl:input>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:output>
+ <wsdl:fault name="failure">
+ <soap:fault encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" name="failure" use="encoded" />
+ </wsdl:fault>
+ </wsdl:operation>
+
+ <wsdl:operation name="telephonyNicSetIpRestriction">
+ <soap:operation soapAction="http://soapi.ovh.com/manager#telephonyNicSetIpRestriction" />
+ <wsdl:input>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:output>
+ <wsdl:fault name="failure">
+ <soap:fault encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" name="failure" use="encoded" />
+ </wsdl:fault>
+ </wsdl:operation>
+
+ <wsdl:operation name="dedicatedBackupIncludeDel">
+ <soap:operation soapAction="http://soapi.ovh.com/manager#dedicatedBackupIncludeDel" />
+ <wsdl:input>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:output>
+ <wsdl:fault name="failure">
+ <soap:fault encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" name="failure" use="encoded" />
+ </wsdl:fault>
+ </wsdl:operation>
+
+ <wsdl:operation name="dedicatedBandwidthSwitching">
+ <soap:operation soapAction="http://soapi.ovh.com/manager#dedicatedBandwidthSwitching" />
+ <wsdl:input>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:output>
+ <wsdl:fault name="failure">
+ <soap:fault encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" name="failure" use="encoded" />
+ </wsdl:fault>
+ </wsdl:operation>
+
+ <wsdl:operation name="dedicatedIpLoadBalancingDel">
+ <soap:operation soapAction="http://soapi.ovh.com/manager#dedicatedIpLoadBalancingDel" />
+ <wsdl:input>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:output>
+ <wsdl:fault name="failure">
+ <soap:fault encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" name="failure" use="encoded" />
+ </wsdl:fault>
+ </wsdl:operation>
+
+ <wsdl:operation name="sqlpriveMysqlOvhMyAdmin">
+ <soap:operation soapAction="http://soapi.ovh.com/manager#sqlpriveMysqlOvhMyAdmin" />
+ <wsdl:input>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:output>
+ <wsdl:fault name="failure">
+ <soap:fault encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" name="failure" use="encoded" />
+ </wsdl:fault>
+ </wsdl:operation>
+
+ <wsdl:operation name="ftpInfo">
+ <soap:operation soapAction="http://soapi.ovh.com/manager#ftpInfo" />
+ <wsdl:input>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:output>
+ <wsdl:fault name="failure">
+ <soap:fault encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" name="failure" use="encoded" />
+ </wsdl:fault>
+ </wsdl:operation>
+
+ <wsdl:operation name="telephonyPortabilityStatus">
+ <soap:operation soapAction="http://soapi.ovh.com/manager#telephonyPortabilityStatus" />
+ <wsdl:input>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:output>
+ <wsdl:fault name="failure">
+ <soap:fault encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" name="failure" use="encoded" />
+ </wsdl:fault>
+ </wsdl:operation>
+
+ <wsdl:operation name="hostingList">
+ <soap:operation soapAction="http://soapi.ovh.com/manager#hostingList" />
+ <wsdl:input>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:output>
+ <wsdl:fault name="failure">
+ <soap:fault encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" name="failure" use="encoded" />
+ </wsdl:fault>
+ </wsdl:operation>
+
+ <wsdl:operation name="orderEmailMxPlan">
+ <soap:operation soapAction="http://soapi.ovh.com/manager#orderEmailMxPlan" />
+ <wsdl:input>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:output>
+ <wsdl:fault name="failure">
+ <soap:fault encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" name="failure" use="encoded" />
+ </wsdl:fault>
+ </wsdl:operation>
+
+ <wsdl:operation name="dedicatedInstallationTemplateUse">
+ <soap:operation soapAction="http://soapi.ovh.com/manager#dedicatedInstallationTemplateUse" />
+ <wsdl:input>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:output>
+ <wsdl:fault name="failure">
+ <soap:fault encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" name="failure" use="encoded" />
+ </wsdl:fault>
+ </wsdl:operation>
+
+ <wsdl:operation name="mailingListSubscriberList">
+ <soap:operation soapAction="http://soapi.ovh.com/manager#mailingListSubscriberList" />
+ <wsdl:input>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:output>
+ <wsdl:fault name="failure">
+ <soap:fault encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" name="failure" use="encoded" />
+ </wsdl:fault>
+ </wsdl:operation>
+
+ <wsdl:operation name="mailingListSubscriberDel">
+ <soap:operation soapAction="http://soapi.ovh.com/manager#mailingListSubscriberDel" />
+ <wsdl:input>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:output>
+ <wsdl:fault name="failure">
+ <soap:fault encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" name="failure" use="encoded" />
+ </wsdl:fault>
+ </wsdl:operation>
+
+ <wsdl:operation name="domainLockStatus">
+ <soap:operation soapAction="http://soapi.ovh.com/manager#domainLockStatus" />
+ <wsdl:input>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:output>
+ <wsdl:fault name="failure">
+ <soap:fault encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" name="failure" use="encoded" />
+ </wsdl:fault>
+ </wsdl:operation>
+
+ <wsdl:operation name="prepaidDomainRenew">
+ <soap:operation soapAction="http://soapi.ovh.com/manager#prepaidDomainRenew" />
+ <wsdl:input>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:output>
+ <wsdl:fault name="failure">
+ <soap:fault encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" name="failure" use="encoded" />
+ </wsdl:fault>
+ </wsdl:operation>
+
+ <wsdl:operation name="orderEmailMxLarge">
+ <soap:operation soapAction="http://soapi.ovh.com/manager#orderEmailMxLarge" />
+ <wsdl:input>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:output>
+ <wsdl:fault name="failure">
+ <soap:fault encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" name="failure" use="encoded" />
+ </wsdl:fault>
+ </wsdl:operation>
+
+ <wsdl:operation name="emailFilterActive">
+ <soap:operation soapAction="http://soapi.ovh.com/manager#emailFilterActive" />
+ <wsdl:input>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:output>
+ <wsdl:fault name="failure">
+ <soap:fault encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" name="failure" use="encoded" />
+ </wsdl:fault>
+ </wsdl:operation>
+
+ <wsdl:operation name="telephonySecurityDepositInfo">
+ <soap:operation soapAction="http://soapi.ovh.com/manager#telephonySecurityDepositInfo" />
+ <wsdl:input>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:output>
+ <wsdl:fault name="failure">
+ <soap:fault encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" name="failure" use="encoded" />
+ </wsdl:fault>
+ </wsdl:operation>
+
+ <wsdl:operation name="databaseList">
+ <soap:operation soapAction="http://soapi.ovh.com/manager#databaseList" />
+ <wsdl:input>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:output>
+ <wsdl:fault name="failure">
+ <soap:fault encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" name="failure" use="encoded" />
+ </wsdl:fault>
+ </wsdl:operation>
+
+ <wsdl:operation name="dedicatedIpLoadBalancingServerAdd">
+ <soap:operation soapAction="http://soapi.ovh.com/manager#dedicatedIpLoadBalancingServerAdd" />
+ <wsdl:input>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:output>
+ <wsdl:fault name="failure">
+ <soap:fault encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" name="failure" use="encoded" />
+ </wsdl:fault>
+ </wsdl:operation>
+
+ <wsdl:operation name="resellerDomainCreateCAT">
+ <soap:operation soapAction="http://soapi.ovh.com/manager#resellerDomainCreateCAT" />
+ <wsdl:input>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:output>
+ <wsdl:fault name="failure">
+ <soap:fault encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" name="failure" use="encoded" />
+ </wsdl:fault>
+ </wsdl:operation>
+
+ <wsdl:operation name="telephonySmsListCsvAttachment">
+ <soap:operation soapAction="http://soapi.ovh.com/manager#telephonySmsListCsvAttachment" />
+ <wsdl:input>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:output>
+ <wsdl:fault name="failure">
+ <soap:fault encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" name="failure" use="encoded" />
+ </wsdl:fault>
+ </wsdl:operation>
+
+ <wsdl:operation name="ftpChangePassword">
+ <soap:operation soapAction="http://soapi.ovh.com/manager#ftpChangePassword" />
+ <wsdl:input>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:output>
+ <wsdl:fault name="failure">
+ <soap:fault encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" name="failure" use="encoded" />
+ </wsdl:fault>
+ </wsdl:operation>
+
+ <wsdl:operation name="orderDedicatedFailover">
+ <soap:operation soapAction="http://soapi.ovh.com/manager#orderDedicatedFailover" />
+ <wsdl:input>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:output>
+ <wsdl:fault name="failure">
+ <soap:fault encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" name="failure" use="encoded" />
+ </wsdl:fault>
+ </wsdl:operation>
+
+ <wsdl:operation name="rpsGetIoStats">
+ <soap:operation soapAction="http://soapi.ovh.com/manager#rpsGetIoStats" />
+ <wsdl:input>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:output>
+ <wsdl:fault name="failure">
+ <soap:fault encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" name="failure" use="encoded" />
+ </wsdl:fault>
+ </wsdl:operation>
+
+ <wsdl:operation name="dedicatedRipeUpdateOrganisation">
+ <soap:operation soapAction="http://soapi.ovh.com/manager#dedicatedRipeUpdateOrganisation" />
+ <wsdl:input>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:output>
+ <wsdl:fault name="failure">
+ <soap:fault encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" name="failure" use="encoded" />
+ </wsdl:fault>
+ </wsdl:operation>
+
+ <wsdl:operation name="cmsRenewAdminPassword">
+ <soap:operation soapAction="http://soapi.ovh.com/manager#cmsRenewAdminPassword" />
+ <wsdl:input>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:output>
+ <wsdl:fault name="failure">
+ <soap:fault encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" name="failure" use="encoded" />
+ </wsdl:fault>
+ </wsdl:operation>
+
+ <wsdl:operation name="dedicatedNetbootModifyById">
+ <soap:operation soapAction="http://soapi.ovh.com/manager#dedicatedNetbootModifyById" />
+ <wsdl:input>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:output>
+ <wsdl:fault name="failure">
+ <soap:fault encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" name="failure" use="encoded" />
+ </wsdl:fault>
+ </wsdl:operation>
+
+ <wsdl:operation name="telephonySmsCancelSending">
+ <soap:operation soapAction="http://soapi.ovh.com/manager#telephonySmsCancelSending" />
+ <wsdl:input>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:output>
+ <wsdl:fault name="failure">
+ <soap:fault encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" name="failure" use="encoded" />
+ </wsdl:fault>
+ </wsdl:operation>
+
+ <wsdl:operation name="telephonyScreenListInfo">
+ <soap:operation soapAction="http://soapi.ovh.com/manager#telephonyScreenListInfo" />
+ <wsdl:input>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:output>
+ <wsdl:fault name="failure">
+ <soap:fault encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" name="failure" use="encoded" />
+ </wsdl:fault>
+ </wsdl:operation>
+
+ <wsdl:operation name="telephonyLineLogsOnGroup">
+ <soap:operation soapAction="http://soapi.ovh.com/manager#telephonyLineLogsOnGroup" />
+ <wsdl:input>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:output>
+ <wsdl:fault name="failure">
+ <soap:fault encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" name="failure" use="encoded" />
+ </wsdl:fault>
+ </wsdl:operation>
+
+ <wsdl:operation name="telephonyLineGetMgcpIpRestriction">
+ <soap:operation soapAction="http://soapi.ovh.com/manager#telephonyLineGetMgcpIpRestriction" />
+ <wsdl:input>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:output>
+ <wsdl:fault name="failure">
+ <soap:fault encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" name="failure" use="encoded" />
+ </wsdl:fault>
+ </wsdl:operation>
+
+ <wsdl:operation name="databaseDelete">
+ <soap:operation soapAction="http://soapi.ovh.com/manager#databaseDelete" />
+ <wsdl:input>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:output>
+ <wsdl:fault name="failure">
+ <soap:fault encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" name="failure" use="encoded" />
+ </wsdl:fault>
+ </wsdl:operation>
+
+ <wsdl:operation name="resellerDomainCreateASIA">
+ <soap:operation soapAction="http://soapi.ovh.com/manager#resellerDomainCreateASIA" />
+ <wsdl:input>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:output>
+ <wsdl:fault name="failure">
+ <soap:fault encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" name="failure" use="encoded" />
+ </wsdl:fault>
+ </wsdl:operation>
+
+ <wsdl:operation name="telephonyLineDetails">
+ <soap:operation soapAction="http://soapi.ovh.com/manager#telephonyLineDetails" />
+ <wsdl:input>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:output>
+ <wsdl:fault name="failure">
+ <soap:fault encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" name="failure" use="encoded" />
+ </wsdl:fault>
+ </wsdl:operation>
+
+ <wsdl:operation name="telephonyPhonebookContactDel">
+ <soap:operation soapAction="http://soapi.ovh.com/manager#telephonyPhonebookContactDel" />
+ <wsdl:input>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:output>
+ <wsdl:fault name="failure">
+ <soap:fault encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" name="failure" use="encoded" />
+ </wsdl:fault>
+ </wsdl:operation>
+
+ <wsdl:operation name="ticketCreate">
+ <soap:operation soapAction="http://soapi.ovh.com/manager#ticketCreate" />
+ <wsdl:input>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:output>
+ <wsdl:fault name="failure">
+ <soap:fault encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" name="failure" use="encoded" />
+ </wsdl:fault>
+ </wsdl:operation>
+
+ <wsdl:operation name="notepadAdd">
+ <soap:operation soapAction="http://soapi.ovh.com/manager#notepadAdd" />
+ <wsdl:input>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:output>
+ <wsdl:fault name="failure">
+ <soap:fault encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" name="failure" use="encoded" />
+ </wsdl:fault>
+ </wsdl:operation>
+
+ <wsdl:operation name="subDomainAdd">
+ <soap:operation soapAction="http://soapi.ovh.com/manager#subDomainAdd" />
+ <wsdl:input>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:output>
+ <wsdl:fault name="failure">
+ <soap:fault encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" name="failure" use="encoded" />
+ </wsdl:fault>
+ </wsdl:operation>
+
+ <wsdl:operation name="dedicatedBackupGetDate">
+ <soap:operation soapAction="http://soapi.ovh.com/manager#dedicatedBackupGetDate" />
+ <wsdl:input>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:output>
+ <wsdl:fault name="failure">
+ <soap:fault encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" name="failure" use="encoded" />
+ </wsdl:fault>
+ </wsdl:operation>
+
+ <wsdl:operation name="dedicatedSecondaryDNSDel">
+ <soap:operation soapAction="http://soapi.ovh.com/manager#dedicatedSecondaryDNSDel" />
+ <wsdl:input>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:output>
+ <wsdl:fault name="failure">
+ <soap:fault encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" name="failure" use="encoded" />
+ </wsdl:fault>
+ </wsdl:operation>
+
+ <wsdl:operation name="domainLock">
+ <soap:operation soapAction="http://soapi.ovh.com/manager#domainLock" />
+ <wsdl:input>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:output>
+ <wsdl:fault name="failure">
+ <soap:fault encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" name="failure" use="encoded" />
+ </wsdl:fault>
+ </wsdl:operation>
+
+ <wsdl:operation name="telephonyRatesListCsv">
+ <soap:operation soapAction="http://soapi.ovh.com/manager#telephonyRatesListCsv" />
+ <wsdl:input>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:output>
+ <wsdl:fault name="failure">
+ <soap:fault encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" name="failure" use="encoded" />
+ </wsdl:fault>
+ </wsdl:operation>
+
+ <wsdl:operation name="emailFilterList">
+ <soap:operation soapAction="http://soapi.ovh.com/manager#emailFilterList" />
+ <wsdl:input>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:output>
+ <wsdl:fault name="failure">
+ <soap:fault encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" name="failure" use="encoded" />
+ </wsdl:fault>
+ </wsdl:operation>
+
+ <wsdl:operation name="zoneEntryAdd">
+ <soap:operation soapAction="http://soapi.ovh.com/manager#zoneEntryAdd" />
+ <wsdl:input>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:output>
+ <wsdl:fault name="failure">
+ <soap:fault encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" name="failure" use="encoded" />
+ </wsdl:fault>
+ </wsdl:operation>
+
+ <wsdl:operation name="telephonyConferenceGetInfos">
+ <soap:operation soapAction="http://soapi.ovh.com/manager#telephonyConferenceGetInfos" />
+ <wsdl:input>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:output>
+ <wsdl:fault name="failure">
+ <soap:fault encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" name="failure" use="encoded" />
+ </wsdl:fault>
+ </wsdl:operation>
+
+ <wsdl:operation name="dedicatedSecondaryDNSGetAll">
+ <soap:operation soapAction="http://soapi.ovh.com/manager#dedicatedSecondaryDNSGetAll" />
+ <wsdl:input>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:output>
+ <wsdl:fault name="failure">
+ <soap:fault encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" name="failure" use="encoded" />
+ </wsdl:fault>
+ </wsdl:operation>
+
+ <wsdl:operation name="infrastructureIpListGet">
+ <soap:operation soapAction="http://soapi.ovh.com/manager#infrastructureIpListGet" />
+ <wsdl:input>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:output>
+ <wsdl:fault name="failure">
+ <soap:fault encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" name="failure" use="encoded" />
+ </wsdl:fault>
+ </wsdl:operation>
+
+ <wsdl:operation name="mailingListInfo">
+ <soap:operation soapAction="http://soapi.ovh.com/manager#mailingListInfo" />
+ <wsdl:input>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:output>
+ <wsdl:fault name="failure">
+ <soap:fault encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" name="failure" use="encoded" />
+ </wsdl:fault>
+ </wsdl:operation>
+
+ <wsdl:operation name="serviceList">
+ <soap:operation soapAction="http://soapi.ovh.com/manager#serviceList" />
+ <wsdl:input>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:output>
+ <wsdl:fault name="failure">
+ <soap:fault encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" name="failure" use="encoded" />
+ </wsdl:fault>
+ </wsdl:operation>
+
+ <wsdl:operation name="serviceGroupSetComment">
+ <soap:operation soapAction="http://soapi.ovh.com/manager#serviceGroupSetComment" />
+ <wsdl:input>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:output>
+ <wsdl:fault name="failure">
+ <soap:fault encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" name="failure" use="encoded" />
+ </wsdl:fault>
+ </wsdl:operation>
+
+ <wsdl:operation name="telephonyPhonebookOnSmsContactList">
+ <soap:operation soapAction="http://soapi.ovh.com/manager#telephonyPhonebookOnSmsContactList" />
+ <wsdl:input>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:output>
+ <wsdl:fault name="failure">
+ <soap:fault encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" name="failure" use="encoded" />
+ </wsdl:fault>
+ </wsdl:operation>
+
+ <wsdl:operation name="nicCreateIT">
+ <soap:operation soapAction="http://soapi.ovh.com/manager#nicCreateIT" />
+ <wsdl:input>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:output>
+ <wsdl:fault name="failure">
+ <soap:fault encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" name="failure" use="encoded" />
+ </wsdl:fault>
+ </wsdl:operation>
+
+ <wsdl:operation name="telephonyPhonebookOnSmsContactAdd">
+ <soap:operation soapAction="http://soapi.ovh.com/manager#telephonyPhonebookOnSmsContactAdd" />
+ <wsdl:input>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:output>
+ <wsdl:fault name="failure">
+ <soap:fault encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" name="failure" use="encoded" />
+ </wsdl:fault>
+ </wsdl:operation>
+
+ <wsdl:operation name="dedicatedMonitoringNotificationDel">
+ <soap:operation soapAction="http://soapi.ovh.com/manager#dedicatedMonitoringNotificationDel" />
+ <wsdl:input>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:output>
+ <wsdl:fault name="failure">
+ <soap:fault encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" name="failure" use="encoded" />
+ </wsdl:fault>
+ </wsdl:operation>
+
+ <wsdl:operation name="domainOperationCancel">
+ <soap:operation soapAction="http://soapi.ovh.com/manager#domainOperationCancel" />
+ <wsdl:input>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:output>
+ <wsdl:fault name="failure">
+ <soap:fault encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" name="failure" use="encoded" />
+ </wsdl:fault>
+ </wsdl:operation>
+
+ <wsdl:operation name="telephonyFMHuntingModificationAnonymousCallRejection">
+ <soap:operation soapAction="http://soapi.ovh.com/manager#telephonyFMHuntingModificationAnonymousCallRejection" />
+ <wsdl:input>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:output>
+ <wsdl:fault name="failure">
+ <soap:fault encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" name="failure" use="encoded" />
+ </wsdl:fault>
+ </wsdl:operation>
+
+ <wsdl:operation name="dedicatedBandwidthManagementGet">
+ <soap:operation soapAction="http://soapi.ovh.com/manager#dedicatedBandwidthManagementGet" />
+ <wsdl:input>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:output>
+ <wsdl:fault name="failure">
+ <soap:fault encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" name="failure" use="encoded" />
+ </wsdl:fault>
+ </wsdl:operation>
+
+ <wsdl:operation name="telephonyDdiModify">
+ <soap:operation soapAction="http://soapi.ovh.com/manager#telephonyDdiModify" />
+ <wsdl:input>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:output>
+ <wsdl:fault name="failure">
+ <soap:fault encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" name="failure" use="encoded" />
+ </wsdl:fault>
+ </wsdl:operation>
+
+ <wsdl:operation name="dedicatedMonitoringStatusUpdate">
+ <soap:operation soapAction="http://soapi.ovh.com/manager#dedicatedMonitoringStatusUpdate" />
+ <wsdl:input>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:output>
+ <wsdl:fault name="failure">
+ <soap:fault encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" name="failure" use="encoded" />
+ </wsdl:fault>
+ </wsdl:operation>
+
+ <wsdl:operation name="dedicatedIPForUDPMoveGetStatus">
+ <soap:operation soapAction="http://soapi.ovh.com/manager#dedicatedIPForUDPMoveGetStatus" />
+ <wsdl:input>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:output>
+ <wsdl:fault name="failure">
+ <soap:fault encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" name="failure" use="encoded" />
+ </wsdl:fault>
+ </wsdl:operation>
+
+ <wsdl:operation name="telephonyRedirectInfo">
+ <soap:operation soapAction="http://soapi.ovh.com/manager#telephonyRedirectInfo" />
+ <wsdl:input>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:output>
+ <wsdl:fault name="failure">
+ <soap:fault encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" name="failure" use="encoded" />
+ </wsdl:fault>
+ </wsdl:operation>
+
+ <wsdl:operation name="anonymousFtpChangePassword">
+ <soap:operation soapAction="http://soapi.ovh.com/manager#anonymousFtpChangePassword" />
+ <wsdl:input>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:output>
+ <wsdl:fault name="failure">
+ <soap:fault encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" name="failure" use="encoded" />
+ </wsdl:fault>
+ </wsdl:operation>
+
+ <wsdl:operation name="telephonySmsSend">
+ <soap:operation soapAction="http://soapi.ovh.com/manager#telephonySmsSend" />
+ <wsdl:input>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:output>
+ <wsdl:fault name="failure">
+ <soap:fault encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" name="failure" use="encoded" />
+ </wsdl:fault>
+ </wsdl:operation>
+
+ <wsdl:operation name="automatedMailLock">
+ <soap:operation soapAction="http://soapi.ovh.com/manager#automatedMailLock" />
+ <wsdl:input>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:output>
+ <wsdl:fault name="failure">
+ <soap:fault encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" name="failure" use="encoded" />
+ </wsdl:fault>
+ </wsdl:operation>
+
+ <wsdl:operation name="dedicatedRipeDeleteOrganisation">
+ <soap:operation soapAction="http://soapi.ovh.com/manager#dedicatedRipeDeleteOrganisation" />
+ <wsdl:input>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:output>
+ <wsdl:fault name="failure">
+ <soap:fault encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" name="failure" use="encoded" />
+ </wsdl:fault>
+ </wsdl:operation>
+
+ <wsdl:operation name="dedicatedFailoverRipeGetIp">
+ <soap:operation soapAction="http://soapi.ovh.com/manager#dedicatedFailoverRipeGetIp" />
+ <wsdl:input>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:output>
+ <wsdl:fault name="failure">
+ <soap:fault encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" name="failure" use="encoded" />
+ </wsdl:fault>
+ </wsdl:operation>
+
+ <wsdl:operation name="responderEmailModify">
+ <soap:operation soapAction="http://soapi.ovh.com/manager#responderEmailModify" />
+ <wsdl:input>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:output>
+ <wsdl:fault name="failure">
+ <soap:fault encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" name="failure" use="encoded" />
+ </wsdl:fault>
+ </wsdl:operation>
+
+ <wsdl:operation name="dedicatedInstallBasic">
+ <soap:operation soapAction="http://soapi.ovh.com/manager#dedicatedInstallBasic" />
+ <wsdl:input>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:output>
+ <wsdl:fault name="failure">
+ <soap:fault encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" name="failure" use="encoded" />
+ </wsdl:fault>
+ </wsdl:operation>
+
+ <wsdl:operation name="emailGetDomainMxFiltering">
+ <soap:operation soapAction="http://soapi.ovh.com/manager#emailGetDomainMxFiltering" />
+ <wsdl:input>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:output>
+ <wsdl:fault name="failure">
+ <soap:fault encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" name="failure" use="encoded" />
+ </wsdl:fault>
+ </wsdl:operation>
+
+ <wsdl:operation name="managedServicesPartitionCreate">
+ <soap:operation soapAction="http://soapi.ovh.com/manager#managedServicesPartitionCreate" />
+ <wsdl:input>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:output>
+ <wsdl:fault name="failure">
+ <soap:fault encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" name="failure" use="encoded" />
+ </wsdl:fault>
+ </wsdl:operation>
+
+ <wsdl:operation name="telephonyLineGetSipDomain">
+ <soap:operation soapAction="http://soapi.ovh.com/manager#telephonyLineGetSipDomain" />
+ <wsdl:input>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:output>
+ <wsdl:fault name="failure">
+ <soap:fault encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" name="failure" use="encoded" />
+ </wsdl:fault>
+ </wsdl:operation>
+
+ <wsdl:operation name="nicModifyEmail">
+ <soap:operation soapAction="http://soapi.ovh.com/manager#nicModifyEmail" />
+ <wsdl:input>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:output>
+ <wsdl:fault name="failure">
+ <soap:fault encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" name="failure" use="encoded" />
+ </wsdl:fault>
+ </wsdl:operation>
+
+ <wsdl:operation name="telephonyToneDelete">
+ <soap:operation soapAction="http://soapi.ovh.com/manager#telephonyToneDelete" />
+ <wsdl:input>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:output>
+ <wsdl:fault name="failure">
+ <soap:fault encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" name="failure" use="encoded" />
+ </wsdl:fault>
+ </wsdl:operation>
+
+ <wsdl:operation name="telephonyLineSetMgcpIpRestriction">
+ <soap:operation soapAction="http://soapi.ovh.com/manager#telephonyLineSetMgcpIpRestriction" />
+ <wsdl:input>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:output>
+ <wsdl:fault name="failure">
+ <soap:fault encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" name="failure" use="encoded" />
+ </wsdl:fault>
+ </wsdl:operation>
+
+ <wsdl:operation name="dedicatedInstallReset">
+ <soap:operation soapAction="http://soapi.ovh.com/manager#dedicatedInstallReset" />
+ <wsdl:input>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:output>
+ <wsdl:fault name="failure">
+ <soap:fault encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" name="failure" use="encoded" />
+ </wsdl:fault>
+ </wsdl:operation>
+
+ <wsdl:operation name="dedicatedMonitoringServiceAddNotification">
+ <soap:operation soapAction="http://soapi.ovh.com/manager#dedicatedMonitoringServiceAddNotification" />
+ <wsdl:input>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:output>
+ <wsdl:fault name="failure">
+ <soap:fault encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" name="failure" use="encoded" />
+ </wsdl:fault>
+ </wsdl:operation>
+
+ <wsdl:operation name="orderDedicatedFailoverRipe">
+ <soap:operation soapAction="http://soapi.ovh.com/manager#orderDedicatedFailoverRipe" />
+ <wsdl:input>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:output>
+ <wsdl:fault name="failure">
+ <soap:fault encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" name="failure" use="encoded" />
+ </wsdl:fault>
+ </wsdl:operation>
+
+ <wsdl:operation name="telephonyPhonebookOnGroupContactModify">
+ <soap:operation soapAction="http://soapi.ovh.com/manager#telephonyPhonebookOnGroupContactModify" />
+ <wsdl:input>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:output>
+ <wsdl:fault name="failure">
+ <soap:fault encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" name="failure" use="encoded" />
+ </wsdl:fault>
+ </wsdl:operation>
+
+ <wsdl:operation name="serviceGroupRemoveService">
+ <soap:operation soapAction="http://soapi.ovh.com/manager#serviceGroupRemoveService" />
+ <wsdl:input>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:output>
+ <wsdl:fault name="failure">
+ <soap:fault encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" name="failure" use="encoded" />
+ </wsdl:fault>
+ </wsdl:operation>
+
+ <wsdl:operation name="telephonyScreenListBlackWhiteChoiceModify">
+ <soap:operation soapAction="http://soapi.ovh.com/manager#telephonyScreenListBlackWhiteChoiceModify" />
+ <wsdl:input>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:output>
+ <wsdl:fault name="failure">
+ <soap:fault encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" name="failure" use="encoded" />
+ </wsdl:fault>
+ </wsdl:operation>
+
+ <wsdl:operation name="telephonySmsplusServiceDetails">
+ <soap:operation soapAction="http://soapi.ovh.com/manager#telephonySmsplusServiceDetails" />
+ <wsdl:input>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:output>
+ <wsdl:fault name="failure">
+ <soap:fault encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" name="failure" use="encoded" />
+ </wsdl:fault>
+ </wsdl:operation>
+
+ <wsdl:operation name="dedicatedFilterIrcClientRuleDel">
+ <soap:operation soapAction="http://soapi.ovh.com/manager#dedicatedFilterIrcClientRuleDel" />
+ <wsdl:input>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:output>
+ <wsdl:fault name="failure">
+ <soap:fault encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" name="failure" use="encoded" />
+ </wsdl:fault>
+ </wsdl:operation>
+
+ <wsdl:operation name="domainHostAdd">
+ <soap:operation soapAction="http://soapi.ovh.com/manager#domainHostAdd" />
+ <wsdl:input>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:output>
+ <wsdl:fault name="failure">
+ <soap:fault encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" name="failure" use="encoded" />
+ </wsdl:fault>
+ </wsdl:operation>
+
+ <wsdl:operation name="popModifyDescription">
+ <soap:operation soapAction="http://soapi.ovh.com/manager#popModifyDescription" />
+ <wsdl:input>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:output>
+ <wsdl:fault name="failure">
+ <soap:fault encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" name="failure" use="encoded" />
+ </wsdl:fault>
+ </wsdl:operation>
+
+ <wsdl:operation name="telephonyAbbreviatedNumberOnGroupDel">
+ <soap:operation soapAction="http://soapi.ovh.com/manager#telephonyAbbreviatedNumberOnGroupDel" />
+ <wsdl:input>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:output>
+ <wsdl:fault name="failure">
+ <soap:fault encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" name="failure" use="encoded" />
+ </wsdl:fault>
+ </wsdl:operation>
+
+ <wsdl:operation name="crontabAdd">
+ <soap:operation soapAction="http://soapi.ovh.com/manager#crontabAdd" />
+ <wsdl:input>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:output>
+ <wsdl:fault name="failure">
+ <soap:fault encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" name="failure" use="encoded" />
+ </wsdl:fault>
+ </wsdl:operation>
+
+ <wsdl:operation name="telephonySmsSenderDescription">
+ <soap:operation soapAction="http://soapi.ovh.com/manager#telephonySmsSenderDescription" />
+ <wsdl:input>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:output>
+ <wsdl:fault name="failure">
+ <soap:fault encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" name="failure" use="encoded" />
+ </wsdl:fault>
+ </wsdl:operation>
+
+ <wsdl:operation name="mailingListModify">
+ <soap:operation soapAction="http://soapi.ovh.com/manager#mailingListModify" />
+ <wsdl:input>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:output>
+ <wsdl:fault name="failure">
+ <soap:fault encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" name="failure" use="encoded" />
+ </wsdl:fault>
+ </wsdl:operation>
+
+ <wsdl:operation name="managedServicesPartitionGet">
+ <soap:operation soapAction="http://soapi.ovh.com/manager#managedServicesPartitionGet" />
+ <wsdl:input>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:output>
+ <wsdl:fault name="failure">
+ <soap:fault encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" name="failure" use="encoded" />
+ </wsdl:fault>
+ </wsdl:operation>
+
+ <wsdl:operation name="telephonyAbbreviatedNumberListPaginated">
+ <soap:operation soapAction="http://soapi.ovh.com/manager#telephonyAbbreviatedNumberListPaginated" />
+ <wsdl:input>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:output>
+ <wsdl:fault name="failure">
+ <soap:fault encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" name="failure" use="encoded" />
+ </wsdl:fault>
+ </wsdl:operation>
+
+ <wsdl:operation name="telephonySetDefaultPrivateHolidaysEvents">
+ <soap:operation soapAction="http://soapi.ovh.com/manager#telephonySetDefaultPrivateHolidaysEvents" />
+ <wsdl:input>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:output>
+ <wsdl:fault name="failure">
+ <soap:fault encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" name="failure" use="encoded" />
+ </wsdl:fault>
+ </wsdl:operation>
+
+ <wsdl:operation name="emailDelMasterNic">
+ <soap:operation soapAction="http://soapi.ovh.com/manager#emailDelMasterNic" />
+ <wsdl:input>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:output>
+ <wsdl:fault name="failure">
+ <soap:fault encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" name="failure" use="encoded" />
+ </wsdl:fault>
+ </wsdl:operation>
+
+ <wsdl:operation name="redirectedEmailModify">
+ <soap:operation soapAction="http://soapi.ovh.com/manager#redirectedEmailModify" />
+ <wsdl:input>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:output>
+ <wsdl:fault name="failure">
+ <soap:fault encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" name="failure" use="encoded" />
+ </wsdl:fault>
+ </wsdl:operation>
+
+ <wsdl:operation name="telephonySpareServiceList">
+ <soap:operation soapAction="http://soapi.ovh.com/manager#telephonySpareServiceList" />
+ <wsdl:input>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:output>
+ <wsdl:fault name="failure">
+ <soap:fault encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" name="failure" use="encoded" />
+ </wsdl:fault>
+ </wsdl:operation>
+
+ <wsdl:operation name="popInfo">
+ <soap:operation soapAction="http://soapi.ovh.com/manager#popInfo" />
+ <wsdl:input>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:output>
+ <wsdl:fault name="failure">
+ <soap:fault encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" name="failure" use="encoded" />
+ </wsdl:fault>
+ </wsdl:operation>
+
+ <wsdl:operation name="zoneExport">
+ <soap:operation soapAction="http://soapi.ovh.com/manager#zoneExport" />
+ <wsdl:input>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:output>
+ <wsdl:fault name="failure">
+ <soap:fault encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" name="failure" use="encoded" />
+ </wsdl:fault>
+ </wsdl:operation>
+
+ <wsdl:operation name="dedicatedMrtgInfo">
+ <soap:operation soapAction="http://soapi.ovh.com/manager#dedicatedMrtgInfo" />
+ <wsdl:input>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:output>
+ <wsdl:fault name="failure">
+ <soap:fault encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" name="failure" use="encoded" />
+ </wsdl:fault>
+ </wsdl:operation>
+
+ <wsdl:operation name="dedicatedBackupReinstallData">
+ <soap:operation soapAction="http://soapi.ovh.com/manager#dedicatedBackupReinstallData" />
+ <wsdl:input>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:output>
+ <wsdl:fault name="failure">
+ <soap:fault encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" name="failure" use="encoded" />
+ </wsdl:fault>
+ </wsdl:operation>
+
+ <wsdl:operation name="serviceFreedomList">
+ <soap:operation soapAction="http://soapi.ovh.com/manager#serviceFreedomList" />
+ <wsdl:input>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:output>
+ <wsdl:fault name="failure">
+ <soap:fault encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" name="failure" use="encoded" />
+ </wsdl:fault>
+ </wsdl:operation>
+
+ <wsdl:operation name="supportGetFullMessage">
+ <soap:operation soapAction="http://soapi.ovh.com/manager#supportGetFullMessage" />
+ <wsdl:input>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:output>
+ <wsdl:fault name="failure">
+ <soap:fault encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" name="failure" use="encoded" />
+ </wsdl:fault>
+ </wsdl:operation>
+
+ <wsdl:operation name="telephonySmsUserListCsvAttachment">
+ <soap:operation soapAction="http://soapi.ovh.com/manager#telephonySmsUserListCsvAttachment" />
+ <wsdl:input>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:output>
+ <wsdl:fault name="failure">
+ <soap:fault encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" name="failure" use="encoded" />
+ </wsdl:fault>
+ </wsdl:operation>
+
+ <wsdl:operation name="emailGetDomainCatchAll">
+ <soap:operation soapAction="http://soapi.ovh.com/manager#emailGetDomainCatchAll" />
+ <wsdl:input>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:output>
+ <wsdl:fault name="failure">
+ <soap:fault encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" name="failure" use="encoded" />
+ </wsdl:fault>
+ </wsdl:operation>
+
+ <wsdl:operation name="telephonyFaxCallList">
+ <soap:operation soapAction="http://soapi.ovh.com/manager#telephonyFaxCallList" />
+ <wsdl:input>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:output>
+ <wsdl:fault name="failure">
+ <soap:fault encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" name="failure" use="encoded" />
+ </wsdl:fault>
+ </wsdl:operation>
+
+ <wsdl:operation name="telephonySmsUserSend">
+ <soap:operation soapAction="http://soapi.ovh.com/manager#telephonySmsUserSend" />
+ <wsdl:input>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:output>
+ <wsdl:fault name="failure">
+ <soap:fault encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" name="failure" use="encoded" />
+ </wsdl:fault>
+ </wsdl:operation>
+
+ <wsdl:operation name="mailingListAdd">
+ <soap:operation soapAction="http://soapi.ovh.com/manager#mailingListAdd" />
+ <wsdl:input>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:output>
+ <wsdl:fault name="failure">
+ <soap:fault encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" name="failure" use="encoded" />
+ </wsdl:fault>
+ </wsdl:operation>
+
+ <wsdl:operation name="dedicatedBackupFtpInfo">
+ <soap:operation soapAction="http://soapi.ovh.com/manager#dedicatedBackupFtpInfo" />
+ <wsdl:input>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:output>
+ <wsdl:fault name="failure">
+ <soap:fault encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" name="failure" use="encoded" />
+ </wsdl:fault>
+ </wsdl:operation>
+
+ <wsdl:operation name="telephonyPhonebookOnGroupGroupList">
+ <soap:operation soapAction="http://soapi.ovh.com/manager#telephonyPhonebookOnGroupGroupList" />
+ <wsdl:input>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:output>
+ <wsdl:fault name="failure">
+ <soap:fault encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" name="failure" use="encoded" />
+ </wsdl:fault>
+ </wsdl:operation>
+
+ <wsdl:operation name="telephonyClick2CallUserPassword">
+ <soap:operation soapAction="http://soapi.ovh.com/manager#telephonyClick2CallUserPassword" />
+ <wsdl:input>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:output>
+ <wsdl:fault name="failure">
+ <soap:fault encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" name="failure" use="encoded" />
+ </wsdl:fault>
+ </wsdl:operation>
+
+ <wsdl:operation name="dedicatedMonitoringModify">
+ <soap:operation soapAction="http://soapi.ovh.com/manager#dedicatedMonitoringModify" />
+ <wsdl:input>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:output>
+ <wsdl:fault name="failure">
+ <soap:fault encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" name="failure" use="encoded" />
+ </wsdl:fault>
+ </wsdl:operation>
+
+ <wsdl:operation name="emailSetMasterNic">
+ <soap:operation soapAction="http://soapi.ovh.com/manager#emailSetMasterNic" />
+ <wsdl:input>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:output>
+ <wsdl:fault name="failure">
+ <soap:fault encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" name="failure" use="encoded" />
+ </wsdl:fault>
+ </wsdl:operation>
+
+ <wsdl:operation name="sqlpriveMysqlDatabaseList">
+ <soap:operation soapAction="http://soapi.ovh.com/manager#sqlpriveMysqlDatabaseList" />
+ <wsdl:input>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:output>
+ <wsdl:fault name="failure">
+ <soap:fault encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" name="failure" use="encoded" />
+ </wsdl:fault>
+ </wsdl:operation>
+
+ <wsdl:operation name="automatedMailReturnSet">
+ <soap:operation soapAction="http://soapi.ovh.com/manager#automatedMailReturnSet" />
+ <wsdl:input>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:output>
+ <wsdl:fault name="failure">
+ <soap:fault encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" name="failure" use="encoded" />
+ </wsdl:fault>
+ </wsdl:operation>
+
+ <wsdl:operation name="databaseRecreate">
+ <soap:operation soapAction="http://soapi.ovh.com/manager#databaseRecreate" />
+ <wsdl:input>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:output>
+ <wsdl:fault name="failure">
+ <soap:fault encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" name="failure" use="encoded" />
+ </wsdl:fault>
+ </wsdl:operation>
+
+ <wsdl:operation name="popModifyPassword">
+ <soap:operation soapAction="http://soapi.ovh.com/manager#popModifyPassword" />
+ <wsdl:input>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:output>
+ <wsdl:fault name="failure">
+ <soap:fault encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" name="failure" use="encoded" />
+ </wsdl:fault>
+ </wsdl:operation>
+
+ <wsdl:operation name="responderEmailAdd">
+ <soap:operation soapAction="http://soapi.ovh.com/manager#responderEmailAdd" />
+ <wsdl:input>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:output>
+ <wsdl:fault name="failure">
+ <soap:fault encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" name="failure" use="encoded" />
+ </wsdl:fault>
+ </wsdl:operation>
+
+ <wsdl:operation name="sqlpriveMysqlProcessList">
+ <soap:operation soapAction="http://soapi.ovh.com/manager#sqlpriveMysqlProcessList" />
+ <wsdl:input>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:output>
+ <wsdl:fault name="failure">
+ <soap:fault encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" name="failure" use="encoded" />
+ </wsdl:fault>
+ </wsdl:operation>
+
+ <wsdl:operation name="telephonySmsGetUserQuota">
+ <soap:operation soapAction="http://soapi.ovh.com/manager#telephonySmsGetUserQuota" />
+ <wsdl:input>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:output>
+ <wsdl:fault name="failure">
+ <soap:fault encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" name="failure" use="encoded" />
+ </wsdl:fault>
+ </wsdl:operation>
+
+ <wsdl:operation name="dedicatedGetRandomAvailableIpFromCountry">
+ <soap:operation soapAction="http://soapi.ovh.com/manager#dedicatedGetRandomAvailableIpFromCountry" />
+ <wsdl:input>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:output>
+ <wsdl:fault name="failure">
+ <soap:fault encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" name="failure" use="encoded" />
+ </wsdl:fault>
+ </wsdl:operation>
+
+ <wsdl:operation name="telephonySmsSenderDelete">
+ <soap:operation soapAction="http://soapi.ovh.com/manager#telephonySmsSenderDelete" />
+ <wsdl:input>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:output>
+ <wsdl:fault name="failure">
+ <soap:fault encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" name="failure" use="encoded" />
+ </wsdl:fault>
+ </wsdl:operation>
+
+ <wsdl:operation name="telephonyToneStatus">
+ <soap:operation soapAction="http://soapi.ovh.com/manager#telephonyToneStatus" />
+ <wsdl:input>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:output>
+ <wsdl:fault name="failure">
+ <soap:fault encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" name="failure" use="encoded" />
+ </wsdl:fault>
+ </wsdl:operation>
+
+ <wsdl:operation name="telephonyDdiInfo">
+ <soap:operation soapAction="http://soapi.ovh.com/manager#telephonyDdiInfo" />
+ <wsdl:input>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:output>
+ <wsdl:fault name="failure">
+ <soap:fault encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" name="failure" use="encoded" />
+ </wsdl:fault>
+ </wsdl:operation>
+
+ <wsdl:operation name="dedicatedInstallBasicProgress">
+ <soap:operation soapAction="http://soapi.ovh.com/manager#dedicatedInstallBasicProgress" />
+ <wsdl:input>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:output>
+ <wsdl:fault name="failure">
+ <soap:fault encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" name="failure" use="encoded" />
+ </wsdl:fault>
+ </wsdl:operation>
+
+ <wsdl:operation name="dedicatedAddServiceMonitoringAlertEmail">
+ <soap:operation soapAction="http://soapi.ovh.com/manager#dedicatedAddServiceMonitoringAlertEmail" />
+ <wsdl:input>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:output>
+ <wsdl:fault name="failure">
+ <soap:fault encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" name="failure" use="encoded" />
+ </wsdl:fault>
+ </wsdl:operation>
+
+ <wsdl:operation name="telephonyHuntingGroupList">
+ <soap:operation soapAction="http://soapi.ovh.com/manager#telephonyHuntingGroupList" />
+ <wsdl:input>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:output>
+ <wsdl:fault name="failure">
+ <soap:fault encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" name="failure" use="encoded" />
+ </wsdl:fault>
+ </wsdl:operation>
+
+ <wsdl:operation name="dedicatedFailoverUpdate">
+ <soap:operation soapAction="http://soapi.ovh.com/manager#dedicatedFailoverUpdate" />
+ <wsdl:input>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:output>
+ <wsdl:fault name="failure">
+ <soap:fault encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" name="failure" use="encoded" />
+ </wsdl:fault>
+ </wsdl:operation>
+
+ <wsdl:operation name="telephonyTrunkExternalDisplayedNumberList">
+ <soap:operation soapAction="http://soapi.ovh.com/manager#telephonyTrunkExternalDisplayedNumberList" />
+ <wsdl:input>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:output>
+ <wsdl:fault name="failure">
+ <soap:fault encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" name="failure" use="encoded" />
+ </wsdl:fault>
+ </wsdl:operation>
+
+ <wsdl:operation name="telephonyDirectoryListWayType">
+ <soap:operation soapAction="http://soapi.ovh.com/manager#telephonyDirectoryListWayType" />
+ <wsdl:input>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:output>
+ <wsdl:fault name="failure">
+ <soap:fault encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" name="failure" use="encoded" />
+ </wsdl:fault>
+ </wsdl:operation>
+
+ <wsdl:operation name="telephonySmsUserHistoryCsv">
+ <soap:operation soapAction="http://soapi.ovh.com/manager#telephonySmsUserHistoryCsv" />
+ <wsdl:input>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:output>
+ <wsdl:fault name="failure">
+ <soap:fault encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" name="failure" use="encoded" />
+ </wsdl:fault>
+ </wsdl:operation>
+
+ <wsdl:operation name="telephonyCallList">
+ <soap:operation soapAction="http://soapi.ovh.com/manager#telephonyCallList" />
+ <wsdl:input>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:output>
+ <wsdl:fault name="failure">
+ <soap:fault encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" name="failure" use="encoded" />
+ </wsdl:fault>
+ </wsdl:operation>
+
+ <wsdl:operation name="managedServicesPartitionUpdate">
+ <soap:operation soapAction="http://soapi.ovh.com/manager#managedServicesPartitionUpdate" />
+ <wsdl:input>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:output>
+ <wsdl:fault name="failure">
+ <soap:fault encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" name="failure" use="encoded" />
+ </wsdl:fault>
+ </wsdl:operation>
+
+ <wsdl:operation name="telephonyGetDefaultPrivateHolidaysEvents">
+ <soap:operation soapAction="http://soapi.ovh.com/manager#telephonyGetDefaultPrivateHolidaysEvents" />
+ <wsdl:input>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:output>
+ <wsdl:fault name="failure">
+ <soap:fault encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" name="failure" use="encoded" />
+ </wsdl:fault>
+ </wsdl:operation>
+
+ <wsdl:operation name="telephonySmsplusShortCodesList">
+ <soap:operation soapAction="http://soapi.ovh.com/manager#telephonySmsplusShortCodesList" />
+ <wsdl:input>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:output>
+ <wsdl:fault name="failure">
+ <soap:fault encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" name="failure" use="encoded" />
+ </wsdl:fault>
+ </wsdl:operation>
+
+ <wsdl:operation name="dedicatedFilterIrcServerRuleAdd">
+ <soap:operation soapAction="http://soapi.ovh.com/manager#dedicatedFilterIrcServerRuleAdd" />
+ <wsdl:input>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:output>
+ <wsdl:fault name="failure">
+ <soap:fault encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" name="failure" use="encoded" />
+ </wsdl:fault>
+ </wsdl:operation>
+
+ <wsdl:operation name="dedicatedVirtualMacIpAdd">
+ <soap:operation soapAction="http://soapi.ovh.com/manager#dedicatedVirtualMacIpAdd" />
+ <wsdl:input>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:output>
+ <wsdl:fault name="failure">
+ <soap:fault encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" name="failure" use="encoded" />
+ </wsdl:fault>
+ </wsdl:operation>
+
+ <wsdl:operation name="telephonyAliasToSipPossibilities">
+ <soap:operation soapAction="http://soapi.ovh.com/manager#telephonyAliasToSipPossibilities" />
+ <wsdl:input>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:output>
+ <wsdl:fault name="failure">
+ <soap:fault encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" name="failure" use="encoded" />
+ </wsdl:fault>
+ </wsdl:operation>
+
+ <wsdl:operation name="telephonyAbbreviatedNumberOnGroupAdd">
+ <soap:operation soapAction="http://soapi.ovh.com/manager#telephonyAbbreviatedNumberOnGroupAdd" />
+ <wsdl:input>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:output>
+ <wsdl:fault name="failure">
+ <soap:fault encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" name="failure" use="encoded" />
+ </wsdl:fault>
+ </wsdl:operation>
+
+ <wsdl:operation name="telephonyHuntingModificationQueue">
+ <soap:operation soapAction="http://soapi.ovh.com/manager#telephonyHuntingModificationQueue" />
+ <wsdl:input>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:output>
+ <wsdl:fault name="failure">
+ <soap:fault encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" name="failure" use="encoded" />
+ </wsdl:fault>
+ </wsdl:operation>
+
+ <wsdl:operation name="telephonyDirectoryInfo">
+ <soap:operation soapAction="http://soapi.ovh.com/manager#telephonyDirectoryInfo" />
+ <wsdl:input>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:output>
+ <wsdl:fault name="failure">
+ <soap:fault encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" name="failure" use="encoded" />
+ </wsdl:fault>
+ </wsdl:operation>
+
+ <wsdl:operation name="telephonyBillDetails">
+ <soap:operation soapAction="http://soapi.ovh.com/manager#telephonyBillDetails" />
+ <wsdl:input>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:output>
+ <wsdl:fault name="failure">
+ <soap:fault encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" name="failure" use="encoded" />
+ </wsdl:fault>
+ </wsdl:operation>
+
+ <wsdl:operation name="dedicatedRipeGetRipeIds">
+ <soap:operation soapAction="http://soapi.ovh.com/manager#dedicatedRipeGetRipeIds" />
+ <wsdl:input>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:output>
+ <wsdl:fault name="failure">
+ <soap:fault encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" name="failure" use="encoded" />
+ </wsdl:fault>
+ </wsdl:operation>
+
+ <wsdl:operation name="telephonyLineLogsNotificationOptionsModify">
+ <soap:operation soapAction="http://soapi.ovh.com/manager#telephonyLineLogsNotificationOptionsModify" />
+ <wsdl:input>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:output>
+ <wsdl:fault name="failure">
+ <soap:fault encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" name="failure" use="encoded" />
+ </wsdl:fault>
+ </wsdl:operation>
+
+ <wsdl:operation name="dnsInstallCustom">
+ <soap:operation soapAction="http://soapi.ovh.com/manager#dnsInstallCustom" />
+ <wsdl:input>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:output>
+ <wsdl:fault name="failure">
+ <soap:fault encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" name="failure" use="encoded" />
+ </wsdl:fault>
+ </wsdl:operation>
+
+ <wsdl:operation name="sqlpriveMysqlActivateOvhManagement">
+ <soap:operation soapAction="http://soapi.ovh.com/manager#sqlpriveMysqlActivateOvhManagement" />
+ <wsdl:input>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:output>
+ <wsdl:fault name="failure">
+ <soap:fault encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" name="failure" use="encoded" />
+ </wsdl:fault>
+ </wsdl:operation>
+
+ <wsdl:operation name="telephonyClick2CallDoBySession">
+ <soap:operation soapAction="http://soapi.ovh.com/manager#telephonyClick2CallDoBySession" />
+ <wsdl:input>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:output>
+ <wsdl:fault name="failure">
+ <soap:fault encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" name="failure" use="encoded" />
+ </wsdl:fault>
+ </wsdl:operation>
+
+ <wsdl:operation name="telephonyAbbreviatedNumberAdd">
+ <soap:operation soapAction="http://soapi.ovh.com/manager#telephonyAbbreviatedNumberAdd" />
+ <wsdl:input>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:output>
+ <wsdl:fault name="failure">
+ <soap:fault encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" name="failure" use="encoded" />
+ </wsdl:fault>
+ </wsdl:operation>
+
+ <wsdl:operation name="prepaidGetThreshold">
+ <soap:operation soapAction="http://soapi.ovh.com/manager#prepaidGetThreshold" />
+ <wsdl:input>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:output>
+ <wsdl:fault name="failure">
+ <soap:fault encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" name="failure" use="encoded" />
+ </wsdl:fault>
+ </wsdl:operation>
+
+ <wsdl:operation name="domainWhoisObfuscatorUnsetAll">
+ <soap:operation soapAction="http://soapi.ovh.com/manager#domainWhoisObfuscatorUnsetAll" />
+ <wsdl:input>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:output>
+ <wsdl:fault name="failure">
+ <soap:fault encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" name="failure" use="encoded" />
+ </wsdl:fault>
+ </wsdl:operation>
+
+ <wsdl:operation name="multiFtpDel">
+ <soap:operation soapAction="http://soapi.ovh.com/manager#multiFtpDel" />
+ <wsdl:input>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:output>
+ <wsdl:fault name="failure">
+ <soap:fault encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" name="failure" use="encoded" />
+ </wsdl:fault>
+ </wsdl:operation>
+
+ <wsdl:operation name="sqlpriveMysqlGetPossibleDump">
+ <soap:operation soapAction="http://soapi.ovh.com/manager#sqlpriveMysqlGetPossibleDump" />
+ <wsdl:input>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:output>
+ <wsdl:fault name="failure">
+ <soap:fault encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" name="failure" use="encoded" />
+ </wsdl:fault>
+ </wsdl:operation>
+
+ <wsdl:operation name="telephonyNumberOrder">
+ <soap:operation soapAction="http://soapi.ovh.com/manager#telephonyNumberOrder" />
+ <wsdl:input>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:output>
+ <wsdl:fault name="failure">
+ <soap:fault encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" name="failure" use="encoded" />
+ </wsdl:fault>
+ </wsdl:operation>
+
+ <wsdl:operation name="telephonyLineSetIpRestriction">
+ <soap:operation soapAction="http://soapi.ovh.com/manager#telephonyLineSetIpRestriction" />
+ <wsdl:input>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:output>
+ <wsdl:fault name="failure">
+ <soap:fault encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" name="failure" use="encoded" />
+ </wsdl:fault>
+ </wsdl:operation>
+
+ <wsdl:operation name="prepaidGetHistory">
+ <soap:operation soapAction="http://soapi.ovh.com/manager#prepaidGetHistory" />
+ <wsdl:input>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:output>
+ <wsdl:fault name="failure">
+ <soap:fault encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" name="failure" use="encoded" />
+ </wsdl:fault>
+ </wsdl:operation>
+
+ <wsdl:operation name="telephonyLineSetCodecs">
+ <soap:operation soapAction="http://soapi.ovh.com/manager#telephonyLineSetCodecs" />
+ <wsdl:input>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:output>
+ <wsdl:fault name="failure">
+ <soap:fault encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" name="failure" use="encoded" />
+ </wsdl:fault>
+ </wsdl:operation>
+
+ <wsdl:operation name="telephonyNumberCityForZoneList">
+ <soap:operation soapAction="http://soapi.ovh.com/manager#telephonyNumberCityForZoneList" />
+ <wsdl:input>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:output>
+ <wsdl:fault name="failure">
+ <soap:fault encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" name="failure" use="encoded" />
+ </wsdl:fault>
+ </wsdl:operation>
+
+ <wsdl:operation name="redirectedEmailDel">
+ <soap:operation soapAction="http://soapi.ovh.com/manager#redirectedEmailDel" />
+ <wsdl:input>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:output>
+ <wsdl:fault name="failure">
+ <soap:fault encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" name="failure" use="encoded" />
+ </wsdl:fault>
+ </wsdl:operation>
+
+ <wsdl:operation name="dedicatedInfo">
+ <soap:operation soapAction="http://soapi.ovh.com/manager#dedicatedInfo" />
+ <wsdl:input>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:output>
+ <wsdl:fault name="failure">
+ <soap:fault encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" name="failure" use="encoded" />
+ </wsdl:fault>
+ </wsdl:operation>
+
+ <wsdl:operation name="dedicatedBackupUpdateDate">
+ <soap:operation soapAction="http://soapi.ovh.com/manager#dedicatedBackupUpdateDate" />
+ <wsdl:input>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:output>
+ <wsdl:fault name="failure">
+ <soap:fault encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" name="failure" use="encoded" />
+ </wsdl:fault>
+ </wsdl:operation>
+
+ <wsdl:operation name="domainOperationList">
+ <soap:operation soapAction="http://soapi.ovh.com/manager#domainOperationList" />
+ <wsdl:input>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:output>
+ <wsdl:fault name="failure">
+ <soap:fault encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" name="failure" use="encoded" />
+ </wsdl:fault>
+ </wsdl:operation>
+
+ <wsdl:operation name="telephonyTonesOptionsModify">
+ <soap:operation soapAction="http://soapi.ovh.com/manager#telephonyTonesOptionsModify" />
+ <wsdl:input>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:output>
+ <wsdl:fault name="failure">
+ <soap:fault encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" name="failure" use="encoded" />
+ </wsdl:fault>
+ </wsdl:operation>
+
+ <wsdl:operation name="popAttachMasterNic">
+ <soap:operation soapAction="http://soapi.ovh.com/manager#popAttachMasterNic" />
+ <wsdl:input>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:output>
+ <wsdl:fault name="failure">
+ <soap:fault encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" name="failure" use="encoded" />
+ </wsdl:fault>
+ </wsdl:operation>
+
+ <wsdl:operation name="telephonyVoicemailMessagesRemoteUpload">
+ <soap:operation soapAction="http://soapi.ovh.com/manager#telephonyVoicemailMessagesRemoteUpload" />
+ <wsdl:input>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:output>
+ <wsdl:fault name="failure">
+ <soap:fault encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" name="failure" use="encoded" />
+ </wsdl:fault>
+ </wsdl:operation>
+
+ <wsdl:operation name="crontabInfo">
+ <soap:operation soapAction="http://soapi.ovh.com/manager#crontabInfo" />
+ <wsdl:input>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:output>
+ <wsdl:fault name="failure">
+ <soap:fault encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" name="failure" use="encoded" />
+ </wsdl:fault>
+ </wsdl:operation>
+
+ <wsdl:operation name="serviceGroupSetName">
+ <soap:operation soapAction="http://soapi.ovh.com/manager#serviceGroupSetName" />
+ <wsdl:input>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:output>
+ <wsdl:fault name="failure">
+ <soap:fault encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" name="failure" use="encoded" />
+ </wsdl:fault>
+ </wsdl:operation>
+
+ <wsdl:operation name="telephonyOfferInfo">
+ <soap:operation soapAction="http://soapi.ovh.com/manager#telephonyOfferInfo" />
+ <wsdl:input>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:output>
+ <wsdl:fault name="failure">
+ <soap:fault encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" name="failure" use="encoded" />
+ </wsdl:fault>
+ </wsdl:operation>
+
+ <wsdl:operation name="multiDomainAdd">
+ <soap:operation soapAction="http://soapi.ovh.com/manager#multiDomainAdd" />
+ <wsdl:input>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:output>
+ <wsdl:fault name="failure">
+ <soap:fault encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" name="failure" use="encoded" />
+ </wsdl:fault>
+ </wsdl:operation>
+
+ <wsdl:operation name="telephonyPhonebookDel">
+ <soap:operation soapAction="http://soapi.ovh.com/manager#telephonyPhonebookDel" />
+ <wsdl:input>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:output>
+ <wsdl:fault name="failure">
+ <soap:fault encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" name="failure" use="encoded" />
+ </wsdl:fault>
+ </wsdl:operation>
+
+ <wsdl:operation name="redirectedEmailList">
+ <soap:operation soapAction="http://soapi.ovh.com/manager#redirectedEmailList" />
+ <wsdl:input>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:output>
+ <wsdl:fault name="failure">
+ <soap:fault encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" name="failure" use="encoded" />
+ </wsdl:fault>
+ </wsdl:operation>
+
+ <wsdl:operation name="telephonySmsUserAdd">
+ <soap:operation soapAction="http://soapi.ovh.com/manager#telephonySmsUserAdd" />
+ <wsdl:input>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:output>
+ <wsdl:fault name="failure">
+ <soap:fault encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" name="failure" use="encoded" />
+ </wsdl:fault>
+ </wsdl:operation>
+
+ <wsdl:operation name="nicUpdateIT">
+ <soap:operation soapAction="http://soapi.ovh.com/manager#nicUpdateIT" />
+ <wsdl:input>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:output>
+ <wsdl:fault name="failure">
+ <soap:fault encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" name="failure" use="encoded" />
+ </wsdl:fault>
+ </wsdl:operation>
+
+ <wsdl:operation name="telephonySmsUserHistory">
+ <soap:operation soapAction="http://soapi.ovh.com/manager#telephonySmsUserHistory" />
+ <wsdl:input>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:output>
+ <wsdl:fault name="failure">
+ <soap:fault encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" name="failure" use="encoded" />
+ </wsdl:fault>
+ </wsdl:operation>
+
+ <wsdl:operation name="dedicatedMonitoringStatusGet">
+ <soap:operation soapAction="http://soapi.ovh.com/manager#dedicatedMonitoringStatusGet" />
+ <wsdl:input>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:output>
+ <wsdl:fault name="failure">
+ <soap:fault encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" name="failure" use="encoded" />
+ </wsdl:fault>
+ </wsdl:operation>
+
+ <wsdl:operation name="ripeUpdateOrganisation">
+ <soap:operation soapAction="http://soapi.ovh.com/manager#ripeUpdateOrganisation" />
+ <wsdl:input>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:output>
+ <wsdl:fault name="failure">
+ <soap:fault encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" name="failure" use="encoded" />
+ </wsdl:fault>
+ </wsdl:operation>
+
+ <wsdl:operation name="telephonySmsUserGetCallBack">
+ <soap:operation soapAction="http://soapi.ovh.com/manager#telephonySmsUserGetCallBack" />
+ <wsdl:input>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:output>
+ <wsdl:fault name="failure">
+ <soap:fault encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" name="failure" use="encoded" />
+ </wsdl:fault>
+ </wsdl:operation>
+
+ <wsdl:operation name="dedicatedNetbootModify">
+ <soap:operation soapAction="http://soapi.ovh.com/manager#dedicatedNetbootModify" />
+ <wsdl:input>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:output>
+ <wsdl:fault name="failure">
+ <soap:fault encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" name="failure" use="encoded" />
+ </wsdl:fault>
+ </wsdl:operation>
+
+ <wsdl:operation name="subDomainList">
+ <soap:operation soapAction="http://soapi.ovh.com/manager#subDomainList" />
+ <wsdl:input>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:output>
+ <wsdl:fault name="failure">
+ <soap:fault encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" name="failure" use="encoded" />
+ </wsdl:fault>
+ </wsdl:operation>
+
+ <wsdl:operation name="sqlpriveFtpPassword">
+ <soap:operation soapAction="http://soapi.ovh.com/manager#sqlpriveFtpPassword" />
+ <wsdl:input>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:output>
+ <wsdl:fault name="failure">
+ <soap:fault encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" name="failure" use="encoded" />
+ </wsdl:fault>
+ </wsdl:operation>
+
+ <wsdl:operation name="telephonyOfferModifyPassword">
+ <soap:operation soapAction="http://soapi.ovh.com/manager#telephonyOfferModifyPassword" />
+ <wsdl:input>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:output>
+ <wsdl:fault name="failure">
+ <soap:fault encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" name="failure" use="encoded" />
+ </wsdl:fault>
+ </wsdl:operation>
+
+ <wsdl:operation name="dnsUninstall">
+ <soap:operation soapAction="http://soapi.ovh.com/manager#dnsUninstall" />
+ <wsdl:input>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:output>
+ <wsdl:fault name="failure">
+ <soap:fault encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" name="failure" use="encoded" />
+ </wsdl:fault>
+ </wsdl:operation>
+
+ <wsdl:operation name="dedicatedFilterIrcClientRuleList">
+ <soap:operation soapAction="http://soapi.ovh.com/manager#dedicatedFilterIrcClientRuleList" />
+ <wsdl:input>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:output>
+ <wsdl:fault name="failure">
+ <soap:fault encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" name="failure" use="encoded" />
+ </wsdl:fault>
+ </wsdl:operation>
+
+ <wsdl:operation name="telephonyFunctionKeyAdd">
+ <soap:operation soapAction="http://soapi.ovh.com/manager#telephonyFunctionKeyAdd" />
+ <wsdl:input>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:output>
+ <wsdl:fault name="failure">
+ <soap:fault encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" name="failure" use="encoded" />
+ </wsdl:fault>
+ </wsdl:operation>
+
+ <wsdl:operation name="telephonyPhonebookList">
+ <soap:operation soapAction="http://soapi.ovh.com/manager#telephonyPhonebookList" />
+ <wsdl:input>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:output>
+ <wsdl:fault name="failure">
+ <soap:fault encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" name="failure" use="encoded" />
+ </wsdl:fault>
+ </wsdl:operation>
+
+ <wsdl:operation name="telephonyPlugAndPhoneReset">
+ <soap:operation soapAction="http://soapi.ovh.com/manager#telephonyPlugAndPhoneReset" />
+ <wsdl:input>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:output>
+ <wsdl:fault name="failure">
+ <soap:fault encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" name="failure" use="encoded" />
+ </wsdl:fault>
+ </wsdl:operation>
+
+ <wsdl:operation name="sqlpriveMysqlRootPassword">
+ <soap:operation soapAction="http://soapi.ovh.com/manager#sqlpriveMysqlRootPassword" />
+ <wsdl:input>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:output>
+ <wsdl:fault name="failure">
+ <soap:fault encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" name="failure" use="encoded" />
+ </wsdl:fault>
+ </wsdl:operation>
+
+ <wsdl:operation name="telephonySpareInfo">
+ <soap:operation soapAction="http://soapi.ovh.com/manager#telephonySpareInfo" />
+ <wsdl:input>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:output>
+ <wsdl:fault name="failure">
+ <soap:fault encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" name="failure" use="encoded" />
+ </wsdl:fault>
+ </wsdl:operation>
+
+ <wsdl:operation name="telephonySmsUserDel">
+ <soap:operation soapAction="http://soapi.ovh.com/manager#telephonySmsUserDel" />
+ <wsdl:input>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:output>
+ <wsdl:fault name="failure">
+ <soap:fault encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" name="failure" use="encoded" />
+ </wsdl:fault>
+ </wsdl:operation>
+
+ <wsdl:operation name="emailSetDomainMxFiltering">
+ <soap:operation soapAction="http://soapi.ovh.com/manager#emailSetDomainMxFiltering" />
+ <wsdl:input>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:output>
+ <wsdl:fault name="failure">
+ <soap:fault encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" name="failure" use="encoded" />
+ </wsdl:fault>
+ </wsdl:operation>
+
+ <wsdl:operation name="telephonyVoicemailMessagesStatus">
+ <soap:operation soapAction="http://soapi.ovh.com/manager#telephonyVoicemailMessagesStatus" />
+ <wsdl:input>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:output>
+ <wsdl:fault name="failure">
+ <soap:fault encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" name="failure" use="encoded" />
+ </wsdl:fault>
+ </wsdl:operation>
+
+ <wsdl:operation name="telephonyPhonebookModify">
+ <soap:operation soapAction="http://soapi.ovh.com/manager#telephonyPhonebookModify" />
+ <wsdl:input>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:output>
+ <wsdl:fault name="failure">
+ <soap:fault encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" name="failure" use="encoded" />
+ </wsdl:fault>
+ </wsdl:operation>
+
+ <wsdl:operation name="dedicatedIPForUDPMove">
+ <soap:operation soapAction="http://soapi.ovh.com/manager#dedicatedIPForUDPMove" />
+ <wsdl:input>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:output>
+ <wsdl:fault name="failure">
+ <soap:fault encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" name="failure" use="encoded" />
+ </wsdl:fault>
+ </wsdl:operation>
+
+ <wsdl:operation name="nicUpdate">
+ <soap:operation soapAction="http://soapi.ovh.com/manager#nicUpdate" />
+ <wsdl:input>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:output>
+ <wsdl:fault name="failure">
+ <soap:fault encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" name="failure" use="encoded" />
+ </wsdl:fault>
+ </wsdl:operation>
+
+ <wsdl:operation name="passwordManager">
+ <soap:operation soapAction="http://soapi.ovh.com/manager#passwordManager" />
+ <wsdl:input>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:output>
+ <wsdl:fault name="failure">
+ <soap:fault encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" name="failure" use="encoded" />
+ </wsdl:fault>
+ </wsdl:operation>
+
+ <wsdl:operation name="telephonyOfferModifyName">
+ <soap:operation soapAction="http://soapi.ovh.com/manager#telephonyOfferModifyName" />
+ <wsdl:input>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:output>
+ <wsdl:fault name="failure">
+ <soap:fault encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" name="failure" use="encoded" />
+ </wsdl:fault>
+ </wsdl:operation>
+
+ <wsdl:operation name="notepadFlush">
+ <soap:operation soapAction="http://soapi.ovh.com/manager#notepadFlush" />
+ <wsdl:input>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:output>
+ <wsdl:fault name="failure">
+ <soap:fault encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" name="failure" use="encoded" />
+ </wsdl:fault>
+ </wsdl:operation>
+
+ <wsdl:operation name="telephonySmsSetCallBack">
+ <soap:operation soapAction="http://soapi.ovh.com/manager#telephonySmsSetCallBack" />
+ <wsdl:input>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:output>
+ <wsdl:fault name="failure">
+ <soap:fault encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" name="failure" use="encoded" />
+ </wsdl:fault>
+ </wsdl:operation>
+
+ <wsdl:operation name="multiDomainModify">
+ <soap:operation soapAction="http://soapi.ovh.com/manager#multiDomainModify" />
+ <wsdl:input>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:output>
+ <wsdl:fault name="failure">
+ <soap:fault encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" name="failure" use="encoded" />
+ </wsdl:fault>
+ </wsdl:operation>
+
+ <wsdl:operation name="language">
+ <soap:operation soapAction="http://soapi.ovh.com/manager#language" />
+ <wsdl:input>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:output>
+ <wsdl:fault name="failure">
+ <soap:fault encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" name="failure" use="encoded" />
+ </wsdl:fault>
+ </wsdl:operation>
+
+ <wsdl:operation name="dedicatedMonitoringSMSModify">
+ <soap:operation soapAction="http://soapi.ovh.com/manager#dedicatedMonitoringSMSModify" />
+ <wsdl:input>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:output>
+ <wsdl:fault name="failure">
+ <soap:fault encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" name="failure" use="encoded" />
+ </wsdl:fault>
+ </wsdl:operation>
+
+ <wsdl:operation name="telephonyPhonebookGroupList">
+ <soap:operation soapAction="http://soapi.ovh.com/manager#telephonyPhonebookGroupList" />
+ <wsdl:input>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:output>
+ <wsdl:fault name="failure">
+ <soap:fault encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" name="failure" use="encoded" />
+ </wsdl:fault>
+ </wsdl:operation>
+
+ <wsdl:operation name="logsAccessDel">
+ <soap:operation soapAction="http://soapi.ovh.com/manager#logsAccessDel" />
+ <wsdl:input>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:output>
+ <wsdl:fault name="failure">
+ <soap:fault encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" name="failure" use="encoded" />
+ </wsdl:fault>
+ </wsdl:operation>
+
+ <wsdl:operation name="logsAccessAdd">
+ <soap:operation soapAction="http://soapi.ovh.com/manager#logsAccessAdd" />
+ <wsdl:input>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:output>
+ <wsdl:fault name="failure">
+ <soap:fault encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" name="failure" use="encoded" />
+ </wsdl:fault>
+ </wsdl:operation>
+
+ <wsdl:operation name="multiDomainInfo">
+ <soap:operation soapAction="http://soapi.ovh.com/manager#multiDomainInfo" />
+ <wsdl:input>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:output>
+ <wsdl:fault name="failure">
+ <soap:fault encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" name="failure" use="encoded" />
+ </wsdl:fault>
+ </wsdl:operation>
+
+ <wsdl:operation name="domainWhoisObfuscatorList">
+ <soap:operation soapAction="http://soapi.ovh.com/manager#domainWhoisObfuscatorList" />
+ <wsdl:input>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:output>
+ <wsdl:fault name="failure">
+ <soap:fault encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" name="failure" use="encoded" />
+ </wsdl:fault>
+ </wsdl:operation>
+
+ <wsdl:operation name="sqlpriveMysqlProcessKill">
+ <soap:operation soapAction="http://soapi.ovh.com/manager#sqlpriveMysqlProcessKill" />
+ <wsdl:input>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:output>
+ <wsdl:fault name="failure">
+ <soap:fault encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" name="failure" use="encoded" />
+ </wsdl:fault>
+ </wsdl:operation>
+
+ <wsdl:operation name="telephonyBillingAccountInfo">
+ <soap:operation soapAction="http://soapi.ovh.com/manager#telephonyBillingAccountInfo" />
+ <wsdl:input>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:output>
+ <wsdl:fault name="failure">
+ <soap:fault encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" name="failure" use="encoded" />
+ </wsdl:fault>
+ </wsdl:operation>
+
+ <wsdl:operation name="mailingListList">
+ <soap:operation soapAction="http://soapi.ovh.com/manager#mailingListList" />
+ <wsdl:input>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:output>
+ <wsdl:fault name="failure">
+ <soap:fault encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" name="failure" use="encoded" />
+ </wsdl:fault>
+ </wsdl:operation>
+
+ <wsdl:operation name="telephonySmsSenderAdd">
+ <soap:operation soapAction="http://soapi.ovh.com/manager#telephonySmsSenderAdd" />
+ <wsdl:input>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:output>
+ <wsdl:fault name="failure">
+ <soap:fault encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" name="failure" use="encoded" />
+ </wsdl:fault>
+ </wsdl:operation>
+
+ <wsdl:operation name="telephonyLineConsumptionCSVByMail">
+ <soap:operation soapAction="http://soapi.ovh.com/manager#telephonyLineConsumptionCSVByMail" />
+ <wsdl:input>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:output>
+ <wsdl:fault name="failure">
+ <soap:fault encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" name="failure" use="encoded" />
+ </wsdl:fault>
+ </wsdl:operation>
+
+ <wsdl:operation name="telephonySmsUserDeleteCsvAttachment">
+ <soap:operation soapAction="http://soapi.ovh.com/manager#telephonySmsUserDeleteCsvAttachment" />
+ <wsdl:input>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:output>
+ <wsdl:fault name="failure">
+ <soap:fault encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" name="failure" use="encoded" />
+ </wsdl:fault>
+ </wsdl:operation>
+
+ <wsdl:operation name="mailingListSubscriberListByEmail">
+ <soap:operation soapAction="http://soapi.ovh.com/manager#mailingListSubscriberListByEmail" />
+ <wsdl:input>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:output>
+ <wsdl:fault name="failure">
+ <soap:fault encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" name="failure" use="encoded" />
+ </wsdl:fault>
+ </wsdl:operation>
+
+ <wsdl:operation name="supportCloseThreads">
+ <soap:operation soapAction="http://soapi.ovh.com/manager#supportCloseThreads" />
+ <wsdl:input>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:output>
+ <wsdl:fault name="failure">
+ <soap:fault encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" name="failure" use="encoded" />
+ </wsdl:fault>
+ </wsdl:operation>
+
+ <wsdl:operation name="sqlpriveMysqlDatabaseSave">
+ <soap:operation soapAction="http://soapi.ovh.com/manager#sqlpriveMysqlDatabaseSave" />
+ <wsdl:input>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:output>
+ <wsdl:fault name="failure">
+ <soap:fault encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" name="failure" use="encoded" />
+ </wsdl:fault>
+ </wsdl:operation>
+
+ <wsdl:operation name="telephonyListReversableCallsFromNumber">
+ <soap:operation soapAction="http://soapi.ovh.com/manager#telephonyListReversableCallsFromNumber" />
+ <wsdl:input>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:output>
+ <wsdl:fault name="failure">
+ <soap:fault encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" name="failure" use="encoded" />
+ </wsdl:fault>
+ </wsdl:operation>
+
+ <wsdl:operation name="telephonyBillingAccountList">
+ <soap:operation soapAction="http://soapi.ovh.com/manager#telephonyBillingAccountList" />
+ <wsdl:input>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:output>
+ <wsdl:fault name="failure">
+ <soap:fault encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" name="failure" use="encoded" />
+ </wsdl:fault>
+ </wsdl:operation>
+
+ <wsdl:operation name="telephonySmsGetQuotaNotificationForUser">
+ <soap:operation soapAction="http://soapi.ovh.com/manager#telephonySmsGetQuotaNotificationForUser" />
+ <wsdl:input>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:output>
+ <wsdl:fault name="failure">
+ <soap:fault encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" name="failure" use="encoded" />
+ </wsdl:fault>
+ </wsdl:operation>
+
+ <wsdl:operation name="dedicatedMonitoringDel">
+ <soap:operation soapAction="http://soapi.ovh.com/manager#dedicatedMonitoringDel" />
+ <wsdl:input>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:output>
+ <wsdl:fault name="failure">
+ <soap:fault encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" name="failure" use="encoded" />
+ </wsdl:fault>
+ </wsdl:operation>
+
+ <wsdl:operation name="telephonyChangeNicModify">
+ <soap:operation soapAction="http://soapi.ovh.com/manager#telephonyChangeNicModify" />
+ <wsdl:input>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:output>
+ <wsdl:fault name="failure">
+ <soap:fault encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" name="failure" use="encoded" />
+ </wsdl:fault>
+ </wsdl:operation>
+
+ <wsdl:operation name="dedicatedMonitoringServiceAddSMS">
+ <soap:operation soapAction="http://soapi.ovh.com/manager#dedicatedMonitoringServiceAddSMS" />
+ <wsdl:input>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:output>
+ <wsdl:fault name="failure">
+ <soap:fault encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" name="failure" use="encoded" />
+ </wsdl:fault>
+ </wsdl:operation>
+
+ <wsdl:operation name="prepaidGetBalance">
+ <soap:operation soapAction="http://soapi.ovh.com/manager#prepaidGetBalance" />
+ <wsdl:input>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:output>
+ <wsdl:fault name="failure">
+ <soap:fault encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" name="failure" use="encoded" />
+ </wsdl:fault>
+ </wsdl:operation>
+
+ <wsdl:operation name="telephonySviInfo">
+ <soap:operation soapAction="http://soapi.ovh.com/manager#telephonySviInfo" />
+ <wsdl:input>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:output>
+ <wsdl:fault name="failure">
+ <soap:fault encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" name="failure" use="encoded" />
+ </wsdl:fault>
+ </wsdl:operation>
+
+ <wsdl:operation name="dnsGeolocalizeHosting">
+ <soap:operation soapAction="http://soapi.ovh.com/manager#dnsGeolocalizeHosting" />
+ <wsdl:input>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:output>
+ <wsdl:fault name="failure">
+ <soap:fault encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" name="failure" use="encoded" />
+ </wsdl:fault>
+ </wsdl:operation>
+
+ <wsdl:operation name="popAdd">
+ <soap:operation soapAction="http://soapi.ovh.com/manager#popAdd" />
+ <wsdl:input>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:output>
+ <wsdl:fault name="failure">
+ <soap:fault encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" name="failure" use="encoded" />
+ </wsdl:fault>
+ </wsdl:operation>
+
+ <wsdl:operation name="telephonyClick2CallUserAdd">
+ <soap:operation soapAction="http://soapi.ovh.com/manager#telephonyClick2CallUserAdd" />
+ <wsdl:input>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:output>
+ <wsdl:fault name="failure">
+ <soap:fault encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" name="failure" use="encoded" />
+ </wsdl:fault>
+ </wsdl:operation>
+
+ <wsdl:operation name="domainHostInfo">
+ <soap:operation soapAction="http://soapi.ovh.com/manager#domainHostInfo" />
+ <wsdl:input>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:output>
+ <wsdl:fault name="failure">
+ <soap:fault encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" name="failure" use="encoded" />
+ </wsdl:fault>
+ </wsdl:operation>
+
+ <wsdl:operation name="dedicatedList">
+ <soap:operation soapAction="http://soapi.ovh.com/manager#dedicatedList" />
+ <wsdl:input>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:output>
+ <wsdl:fault name="failure">
+ <soap:fault encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" name="failure" use="encoded" />
+ </wsdl:fault>
+ </wsdl:operation>
+
+ <wsdl:operation name="dedicatedIPForUDPGet">
+ <soap:operation soapAction="http://soapi.ovh.com/manager#dedicatedIPForUDPGet" />
+ <wsdl:input>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:output>
+ <wsdl:fault name="failure">
+ <soap:fault encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" name="failure" use="encoded" />
+ </wsdl:fault>
+ </wsdl:operation>
+
+ <wsdl:operation name="dedicatedGetAvailableIpFromNetwork">
+ <soap:operation soapAction="http://soapi.ovh.com/manager#dedicatedGetAvailableIpFromNetwork" />
+ <wsdl:input>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:output>
+ <wsdl:fault name="failure">
+ <soap:fault encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" name="failure" use="encoded" />
+ </wsdl:fault>
+ </wsdl:operation>
+
+ <wsdl:operation name="crontabModify">
+ <soap:operation soapAction="http://soapi.ovh.com/manager#crontabModify" />
+ <wsdl:input>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:output>
+ <wsdl:fault name="failure">
+ <soap:fault encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" name="failure" use="encoded" />
+ </wsdl:fault>
+ </wsdl:operation>
+
+ <wsdl:operation name="sqlpriveCronGet">
+ <soap:operation soapAction="http://soapi.ovh.com/manager#sqlpriveCronGet" />
+ <wsdl:input>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:output>
+ <wsdl:fault name="failure">
+ <soap:fault encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" name="failure" use="encoded" />
+ </wsdl:fault>
+ </wsdl:operation>
+
+ <wsdl:operation name="supportReactivateThread">
+ <soap:operation soapAction="http://soapi.ovh.com/manager#supportReactivateThread" />
+ <wsdl:input>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:output>
+ <wsdl:fault name="failure">
+ <soap:fault encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" name="failure" use="encoded" />
+ </wsdl:fault>
+ </wsdl:operation>
+
+ <wsdl:operation name="telephonySmsBlacklistedSendersDelete">
+ <soap:operation soapAction="http://soapi.ovh.com/manager#telephonySmsBlacklistedSendersDelete" />
+ <wsdl:input>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:output>
+ <wsdl:fault name="failure">
+ <soap:fault encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" name="failure" use="encoded" />
+ </wsdl:fault>
+ </wsdl:operation>
+
+ <wsdl:operation name="zoneImport">
+ <soap:operation soapAction="http://soapi.ovh.com/manager#zoneImport" />
+ <wsdl:input>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:output>
+ <wsdl:fault name="failure">
+ <soap:fault encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" name="failure" use="encoded" />
+ </wsdl:fault>
+ </wsdl:operation>
+
+ <wsdl:operation name="telephonySmsplusServiceAdd">
+ <soap:operation soapAction="http://soapi.ovh.com/manager#telephonySmsplusServiceAdd" />
+ <wsdl:input>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:output>
+ <wsdl:fault name="failure">
+ <soap:fault encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" name="failure" use="encoded" />
+ </wsdl:fault>
+ </wsdl:operation>
+
+ <wsdl:operation name="multiDomainDel">
+ <soap:operation soapAction="http://soapi.ovh.com/manager#multiDomainDel" />
+ <wsdl:input>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:output>
+ <wsdl:fault name="failure">
+ <soap:fault encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" name="failure" use="encoded" />
+ </wsdl:fault>
+ </wsdl:operation>
+
+ <wsdl:operation name="telephonySpareCreateRMA">
+ <soap:operation soapAction="http://soapi.ovh.com/manager#telephonySpareCreateRMA" />
+ <wsdl:input>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:output>
+ <wsdl:fault name="failure">
+ <soap:fault encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" name="failure" use="encoded" />
+ </wsdl:fault>
+ </wsdl:operation>
+
+ <wsdl:operation name="telephonySmsplusServiceEdit">
+ <soap:operation soapAction="http://soapi.ovh.com/manager#telephonySmsplusServiceEdit" />
+ <wsdl:input>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:output>
+ <wsdl:fault name="failure">
+ <soap:fault encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" name="failure" use="encoded" />
+ </wsdl:fault>
+ </wsdl:operation>
+
+ <wsdl:operation name="dedicatedMailinglistSubscribe">
+ <soap:operation soapAction="http://soapi.ovh.com/manager#dedicatedMailinglistSubscribe" />
+ <wsdl:input>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:output>
+ <wsdl:fault name="failure">
+ <soap:fault encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" name="failure" use="encoded" />
+ </wsdl:fault>
+ </wsdl:operation>
+
+ <wsdl:operation name="serviceGroupInfo">
+ <soap:operation soapAction="http://soapi.ovh.com/manager#serviceGroupInfo" />
+ <wsdl:input>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:output>
+ <wsdl:fault name="failure">
+ <soap:fault encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" name="failure" use="encoded" />
+ </wsdl:fault>
+ </wsdl:operation>
+
+ <wsdl:operation name="automatedMailFlush">
+ <soap:operation soapAction="http://soapi.ovh.com/manager#automatedMailFlush" />
+ <wsdl:input>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:output>
+ <wsdl:fault name="failure">
+ <soap:fault encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" name="failure" use="encoded" />
+ </wsdl:fault>
+ </wsdl:operation>
+
+ <wsdl:operation name="managedServicesNameUpdate">
+ <soap:operation soapAction="http://soapi.ovh.com/manager#managedServicesNameUpdate" />
+ <wsdl:input>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:output>
+ <wsdl:fault name="failure">
+ <soap:fault encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" name="failure" use="encoded" />
+ </wsdl:fault>
+ </wsdl:operation>
+
+ <wsdl:operation name="popGetQuota">
+ <soap:operation soapAction="http://soapi.ovh.com/manager#popGetQuota" />
+ <wsdl:input>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:output>
+ <wsdl:fault name="failure">
+ <soap:fault encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" name="failure" use="encoded" />
+ </wsdl:fault>
+ </wsdl:operation>
+
+ <wsdl:operation name="telephonyHuntingGenericScreenOptionsModify">
+ <soap:operation soapAction="http://soapi.ovh.com/manager#telephonyHuntingGenericScreenOptionsModify" />
+ <wsdl:input>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:output>
+ <wsdl:fault name="failure">
+ <soap:fault encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" name="failure" use="encoded" />
+ </wsdl:fault>
+ </wsdl:operation>
+
+ <wsdl:operation name="ripeCreateOrganisation">
+ <soap:operation soapAction="http://soapi.ovh.com/manager#ripeCreateOrganisation" />
+ <wsdl:input>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:output>
+ <wsdl:fault name="failure">
+ <soap:fault encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" name="failure" use="encoded" />
+ </wsdl:fault>
+ </wsdl:operation>
+
+ <wsdl:operation name="telephonyPlugAndPhoneInfo">
+ <soap:operation soapAction="http://soapi.ovh.com/manager#telephonyPlugAndPhoneInfo" />
+ <wsdl:input>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:output>
+ <wsdl:fault name="failure">
+ <soap:fault encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" name="failure" use="encoded" />
+ </wsdl:fault>
+ </wsdl:operation>
+
+ <wsdl:operation name="telephonyFaxCampaignDelete">
+ <soap:operation soapAction="http://soapi.ovh.com/manager#telephonyFaxCampaignDelete" />
+ <wsdl:input>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:output>
+ <wsdl:fault name="failure">
+ <soap:fault encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" name="failure" use="encoded" />
+ </wsdl:fault>
+ </wsdl:operation>
+
+ <wsdl:operation name="telephonyReversmentsRefundFromBillingAccount">
+ <soap:operation soapAction="http://soapi.ovh.com/manager#telephonyReversmentsRefundFromBillingAccount" />
+ <wsdl:input>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:output>
+ <wsdl:fault name="failure">
+ <soap:fault encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" name="failure" use="encoded" />
+ </wsdl:fault>
+ </wsdl:operation>
+
+ <wsdl:operation name="telephonyVoicemailMessageDelete">
+ <soap:operation soapAction="http://soapi.ovh.com/manager#telephonyVoicemailMessageDelete" />
+ <wsdl:input>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:output>
+ <wsdl:fault name="failure">
+ <soap:fault encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" name="failure" use="encoded" />
+ </wsdl:fault>
+ </wsdl:operation>
+
+ <wsdl:operation name="dedicatedIpLoadBalancingNameModify">
+ <soap:operation soapAction="http://soapi.ovh.com/manager#dedicatedIpLoadBalancingNameModify" />
+ <wsdl:input>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:output>
+ <wsdl:fault name="failure">
+ <soap:fault encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" name="failure" use="encoded" />
+ </wsdl:fault>
+ </wsdl:operation>
+
+ <wsdl:operation name="telephonyLineOptionsList">
+ <soap:operation soapAction="http://soapi.ovh.com/manager#telephonyLineOptionsList" />
+ <wsdl:input>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:output>
+ <wsdl:fault name="failure">
+ <soap:fault encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" name="failure" use="encoded" />
+ </wsdl:fault>
+ </wsdl:operation>
+
+ <wsdl:operation name="telephonySpareServiceInfo">
+ <soap:operation soapAction="http://soapi.ovh.com/manager#telephonySpareServiceInfo" />
+ <wsdl:input>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:output>
+ <wsdl:fault name="failure">
+ <soap:fault encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" name="failure" use="encoded" />
+ </wsdl:fault>
+ </wsdl:operation>
+
+ <wsdl:operation name="telephonyAbbreviatedNumberModify">
+ <soap:operation soapAction="http://soapi.ovh.com/manager#telephonyAbbreviatedNumberModify" />
+ <wsdl:input>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:output>
+ <wsdl:fault name="failure">
+ <soap:fault encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" name="failure" use="encoded" />
+ </wsdl:fault>
+ </wsdl:operation>
+
+ <wsdl:operation name="telephonyOfferSimultaneousLinesModify">
+ <soap:operation soapAction="http://soapi.ovh.com/manager#telephonyOfferSimultaneousLinesModify" />
+ <wsdl:input>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:output>
+ <wsdl:fault name="failure">
+ <soap:fault encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" name="failure" use="encoded" />
+ </wsdl:fault>
+ </wsdl:operation>
+
+ <wsdl:operation name="dedicatedMonitoringServiceList">
+ <soap:operation soapAction="http://soapi.ovh.com/manager#dedicatedMonitoringServiceList" />
+ <wsdl:input>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:output>
+ <wsdl:fault name="failure">
+ <soap:fault encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" name="failure" use="encoded" />
+ </wsdl:fault>
+ </wsdl:operation>
+
+ <wsdl:operation name="resellerDomainTransfer">
+ <soap:operation soapAction="http://soapi.ovh.com/manager#resellerDomainTransfer" />
+ <wsdl:input>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:output>
+ <wsdl:fault name="failure">
+ <soap:fault encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" name="failure" use="encoded" />
+ </wsdl:fault>
+ </wsdl:operation>
+
+ <wsdl:operation name="serviceGroupAddService">
+ <soap:operation soapAction="http://soapi.ovh.com/manager#serviceGroupAddService" />
+ <wsdl:input>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" use="encoded" namespace="http://soapi.ovh.com/manager" />
+ </wsdl:output>
+ <wsdl:fault name="failure">
+ <soap:fault encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" name="failure" use="encoded" />
+ </wsdl:fault>
+ </wsdl:operation>
+
+ </wsdl:binding>
+
+ <wsdl:service name="managerService">
+ <wsdl:port name="managerPort" binding="wsdlns:managerBinding">
+ <soap:address location="https://www.ovh.com:1664" />
+ </wsdl:port>
+ </wsdl:service>
+
+</wsdl:definitions>
diff --git a/ext/ovh/soapi/zoneEntryAdd b/ext/ovh/soapi/zoneEntryAdd
new file mode 100755
index 00000000..7a2f7f7f
--- /dev/null
+++ b/ext/ovh/soapi/zoneEntryAdd
@@ -0,0 +1,33 @@
+#!/usr/bin/python
+
+from os import environ
+from os.path import dirname, realpath
+from SOAPpy import WSDL
+from sys import argv
+from json import dumps, JSONEncoder
+
+def default(o):
+ try:
+ iterable = iter(o)
+ except TypeError:
+ pass
+ else:
+ return list(iterable)
+ return JSONEncoder.default(o)
+
+wsdl = dirname(realpath(__file__)) + '/soapi.wsdl'
+soap = WSDL.Proxy(wsdl)
+
+username = environ['KREBS_OVH_USER']
+password = environ['KREBS_OVH_PASS']
+domain = argv[1]
+subdomain = argv[2] if argv[2] is not " " else ""
+fieldtype = argv[3]
+target = argv[4]
+
+session = soap.login(username, password, 'de', 0)
+
+result = soap.zoneEntryAdd(session, domain, subdomain, fieldtype, target,1)
+print dumps(result, sort_keys=True, indent=2, default=default)
+
+soap.logout(session)
diff --git a/ext/ovh/soapi/zoneEntryDel b/ext/ovh/soapi/zoneEntryDel
new file mode 100755
index 00000000..350ab0ee
--- /dev/null
+++ b/ext/ovh/soapi/zoneEntryDel
@@ -0,0 +1,33 @@
+#!/usr/bin/python
+
+from os import environ
+from os.path import dirname, realpath
+from SOAPpy import WSDL
+from sys import argv
+from json import dumps, JSONEncoder
+
+def default(o):
+ try:
+ iterable = iter(o)
+ except TypeError:
+ pass
+ else:
+ return list(iterable)
+ return JSONEncoder.default(o)
+
+wsdl = dirname(realpath(__file__)) + '/soapi.wsdl'
+soap = WSDL.Proxy(wsdl)
+
+username = environ['KREBS_OVH_USER']
+password = environ['KREBS_OVH_PASS']
+domain = argv[2]
+subdomain = argv[3]
+fieldtype = argv[4]
+target = argv[5]
+
+session = soap.login(username, password, 'de', 0)
+
+result = soap.zoneEntryDel(session, domain, subdomain, fieldtype, target)
+print dumps(result, sort_keys=True, indent=2, default=default)
+
+soap.logout(session)
diff --git a/ext/ovh/soapi/zoneEntryList b/ext/ovh/soapi/zoneEntryList
new file mode 100755
index 00000000..d52d4420
--- /dev/null
+++ b/ext/ovh/soapi/zoneEntryList
@@ -0,0 +1,29 @@
+#!/usr/bin/python
+
+from os import environ
+from os.path import dirname, realpath
+from SOAPpy import WSDL
+from json import dumps, JSONEncoder
+
+def default(o):
+ try:
+ iterable = iter(o)
+ except TypeError:
+ pass
+ else:
+ return list(iterable)
+ return JSONEncoder.default(o)
+
+wsdl = dirname(realpath(__file__)) + '/soapi.wsdl'
+soap = WSDL.Proxy(wsdl)
+
+username = environ['KREBS_OVH_USER']
+password = environ['KREBS_OVH_PASS']
+domain = environ.get('KREBS_OVH_DOMAIN','krebsco.de')
+
+session = soap.login(username, password, 'de', 0)
+
+result = soap.zoneEntryList(session, domain)
+print dumps(result, sort_keys=True, indent=2, default=default)
+
+soap.logout(session)
diff --git a/ext/ovh/soapi/zoneExport b/ext/ovh/soapi/zoneExport
new file mode 100755
index 00000000..3f6bdac7
--- /dev/null
+++ b/ext/ovh/soapi/zoneExport
@@ -0,0 +1,30 @@
+#! /usr/bin/python2
+
+from os import environ
+from os.path import dirname, realpath
+from SOAPpy import WSDL
+from json import dumps, JSONEncoder
+
+def default(o):
+ try:
+ iterable = iter(o)
+ except TypeError:
+ pass
+ else:
+ return list(iterable)
+ return JSONEncoder.default(o)
+
+#wsdl = dirname(realpath(__file__)) + '/soapi.wsdl'
+wsdl = dirname(realpath(__file__)) + '/soapi.wsdl'
+soap = WSDL.Proxy(wsdl)
+
+username = environ['KREBS_OVH_USER']
+password = environ['KREBS_OVH_PASS']
+domain = environ.get('KREBS_OVH_DOMAIN','krebsco.de')
+
+session = soap.login(username, password, 'de', 0)
+
+result = soap.zoneExport(session, domain)
+print result
+
+soap.logout(session)
diff --git a/ext/ovh/soapi/zoneImport b/ext/ovh/soapi/zoneImport
new file mode 100755
index 00000000..c28710d6
--- /dev/null
+++ b/ext/ovh/soapi/zoneImport
@@ -0,0 +1,33 @@
+#! /usr/bin/python2
+
+from os import environ
+from os.path import dirname, realpath
+from SOAPpy import WSDL
+from sys import argv, stdin
+from string import join
+from json import dumps, JSONEncoder
+
+def default(o):
+ try:
+ iterable = iter(o)
+ except TypeError:
+ pass
+ else:
+ return list(iterable)
+ return JSONEncoder.default(o)
+
+wsdl = dirname(realpath(__file__)) + '/soapi.wsdl'
+soap = WSDL.Proxy(wsdl)
+
+username = environ['KREBS_OVH_USER']
+password = environ['KREBS_OVH_PASS']
+domain = environ.get('KREBS_OVH_DOMAIN','krebsco.de')
+
+zone = join(stdin.readlines(),'')
+
+session = soap.login(username, password, 'en', 0)
+
+result = soap.zoneImport(session, domain, zone)
+print result
+
+soap.logout(session)
diff --git a/ext/solus/bin/client b/ext/solus/bin/client
new file mode 100755
index 00000000..60b720d6
--- /dev/null
+++ b/ext/solus/bin/client
@@ -0,0 +1,28 @@
+#! /bin/sh
+# usage: client ACTION
+# ACTION: boot, info, reboot, shutdown, or status
+# environment:
+# api_url URL to the client API like https://<MASTER IP>:5656/api/client
+# api_key
+# api_hash
+set -euf
+
+url="$api_url/command.php"
+key="$api_key"
+hash="$api_hash"
+
+action="${1-$ACTION}"
+
+case "$action" in
+ (info)
+ # get all the information
+ action="$action&ipaddr=true&hdd=true&mem=true&bw=true";;
+esac
+
+abspath="`readlink -f "$0"`"
+bindir="`dirname "$abspath"`"
+libdir="`dirname "$bindir"`/lib"
+export PATH="$libdir:$PATH"
+
+curl -sS -d key="$key" -d hash="$hash" -d action="$action" "$url" |
+ parse-return-data
diff --git a/ext/solus/lib/parse-return-data b/ext/solus/lib/parse-return-data
new file mode 100755
index 00000000..85219727
--- /dev/null
+++ b/ext/solus/lib/parse-return-data
@@ -0,0 +1,20 @@
+#! /bin/sh
+set -euf
+sed '
+ # transform "XML" into lines {key}<tab>{value}-lines
+ s|</[^>]*>|\n|g
+ s|<\([^>]*\)>|\1\t|g
+' |
+sed '
+ # transform ipaddr list into multiple ipaddr_[46]<tab>{ipaddr}-lines
+ /^ipaddr\t/{
+ s|,|\nipaddr\t|g
+ s/\t\([0-9]*[.]\)/_4&/g
+ s/\t\([0-9]*[:]\)/_6&/g
+ }
+ # parse CSVs into multiple lines with proper labels
+ s:^\(hdd\|mem\|bw\)\t\([^,]*\),\([^,]*\),\([^,]*\),\([^,]*\)$:\1_total\t\2\
+\1_used\t\3\
+\1_free\t\4\
+\1_percentused\t\5:
+'
diff --git a/git/gitolite-hooks/irc-announce b/git/gitolite-hooks/irc-announce
new file mode 100755
index 00000000..a135ca67
--- /dev/null
+++ b/git/gitolite-hooks/irc-announce
@@ -0,0 +1,114 @@
+#! /bin/sh
+set -euf
+
+config_file="$GL_ADMIN_BASE/conf/irc-announce.conf"
+if test -f "$config_file"; then
+ . "$config_file"
+fi
+
+# XXX when changing IRC_CHANNEL or IRC_SERVER/_PORT, don't forget to update
+# any relevant gitolite LOCAL_CODE!
+# CAVEAT we hope that IRC_NICK is unique
+IRC_NICK="${IRC_NICK-gl$GL_TID}"
+IRC_CHANNEL="${IRC_CHANNEL-#retiolum}"
+IRC_SERVER="${IRC_SERVER-ire.retiolum}"
+IRC_PORT="${IRC_PORT-6667}"
+
+# for privmsg_cat below
+export IRC_CHANNEL
+
+# collect users that are mentioned in the gitolite configuration
+interested_users="$(perl -e '
+ do "gl-conf";
+ print join(" ", keys%{ $one_repo{$ENV{"GL_REPO"}} });
+')"
+
+# CAVEAT beware of real TABs in grep pattern!
+# CAVEAT there will never be more than 42 relevant log entries!
+log="$(tail -n 42 "$GL_LOGFILE" | grep "^[^ ]* $GL_TID ")"
+update_log="$(echo "$log" | grep "^[^ ]* $GL_TID update")"
+
+# (debug output)
+env | sed 's/^/env: /'
+echo "$log" | sed 's/^/log: /'
+
+# see http://gitolite.com/gitolite/dev-notes.html#lff
+reponame=$(echo "$update_log" | cut -f 4)
+username=$(echo "$update_log" | cut -f 5)
+ref_name=$(echo "$update_log" | cut -f 7 | sed 's|^refs/heads/||')
+old_sha=$(echo "$update_log" | cut -f 8)
+new_sha=$(echo "$update_log" | cut -f 9)
+
+# check if new branch is created
+if test $old_sha = 0000000000000000000000000000000000000000; then
+ # TODO what should we really show?
+ old_sha=$new_sha^
+fi
+
+#
+git_log="$(git log $old_sha..$new_sha --pretty=oneline --abbrev-commit)"
+commit_count=$(echo "$git_log" | wc -l)
+
+# echo2 and cat2 are used output to both, stdout and stderr
+# This is used to see what we send to the irc server. (debug output)
+echo2() { echo "$*"; echo "$*" >&2; }
+cat2() { tee /dev/stderr; }
+
+# privmsg_cat transforms stdin to a privmsg
+privmsg_cat() { awk '{ print "PRIVMSG "ENVIRON["IRC_CHANNEL"]" :"$0 }'; }
+
+# ircin is used to feed the output of netcat back to the "irc client"
+# so we can implement expect-like behavior with sed^_^
+# XXX mkselfdestructingtmpfifo would be nice instead of this cruft
+tmpdir="$(mktemp -d irc-announce_XXXXXXXX)"
+cd "$tmpdir"
+mkfifo ircin
+trap "
+ rm ircin
+ cd '$OLDPWD'
+ rmdir '$tmpdir'
+ trap - EXIT INT QUIT
+" EXIT INT QUIT
+
+#
+#
+#
+{
+ echo2 "USER $LOGNAME 0 * :$LOGNAME@$(hostname)"
+ echo2 "NICK $IRC_NICK"
+
+ # wait for MODE message
+ sed -n '/^:[^ ]* MODE /q'
+
+ echo2 "JOIN $IRC_CHANNEL"
+
+ echo "$interested_users" \
+ | tr ' ' '\n' \
+ | grep -v "^$GL_USER" \
+ | sed 's/$/: poke/' \
+ | privmsg_cat \
+ | cat2
+
+ printf '[13%s] %s pushed %s new commit%s to 6%s %s\n' \
+ "$reponame" \
+ "$username" \
+ "$commit_count" \
+ "$(test $commit_count = 1 || echo s)" \
+ "$(hostname)" \
+ "$ref_name" \
+ | privmsg_cat \
+ | cat2
+
+ echo "$git_log" \
+ | sed 's/^/14/;s/ / /' \
+ | privmsg_cat \
+ | cat2
+
+ echo2 "PART $IRC_CHANNEL"
+
+ # wait for PART confirmation
+ sed -n '/:'"$IRC_NICK"'![^ ]* PART /q'
+
+ echo2 'QUIT :Gone to have lunch'
+} < ircin \
+ | nc "$IRC_SERVER" "$IRC_PORT" | tee -a ircin
diff --git a/go/Makefile b/go/Makefile
new file mode 100644
index 00000000..abbaf7fe
--- /dev/null
+++ b/go/Makefile
@@ -0,0 +1,35 @@
+help:;@grep -v ^help: Makefile
+
+install: \
+ /etc/systemd/system/go.service \
+ /etc/conf.d/go.env
+ systemctl daemon-reload
+
+/etc/%: etc/%
+ @! test -e $@ || { echo file already exists: $@; exit 23; }
+ mkdir -p $(dir $@)
+ cp $< $@
+
+test:
+ @export PATH="$(CURDIR)/bin:$(PATH)"; \
+ tests="`find t -type f -executable`"; \
+ i=1; \
+ pids="";\
+ n=`echo "$$tests" | wc -l`; \
+ echo $$i..$$n; \
+ for exe in $$tests; do \
+ { \
+ ./$$exe; \
+ ret=$$?; \
+ case $$ret in 0) result=ok;; *) result='not ok';; esac; \
+ echo $$result $$i - $$exe; \
+ exit $$ret;\
+ } & \
+ pids="$${pids} $$!" \
+ i=$$(( i+1 )); \
+ done; \
+ ret=0;\
+ for pid in $$pids; do \
+ wait $$pid || ret=23;\
+ done; \
+ exit $$ret;
diff --git a/go/README.markdown b/go/README.markdown
new file mode 100644
index 00000000..22b7c642
--- /dev/null
+++ b/go/README.markdown
@@ -0,0 +1,54 @@
+# go - minimalistic uri shortener
+
+## install dependencies
+
+ npm install
+
+ apparently you can also
+
+ npm install hiredis
+
+ for more awesome.
+
+## run service
+
+ PORT=80 node .
+
+ if you omit `PORT`, then it's `1337`.
+
+ there's also the possibility to change the Redis key prefix which
+ defaults to `go:` with
+
+ REDIS_KEY_PREFIX=foobarmyprefix/
+
+## add uri
+
+ curl -F uri=https://mywaytoolonguri http://localhost:1337
+
+ this will give you a shortened uri.
+
+## resolve uri
+
+ curl -L http://localhost:1337/1
+
+## clear database
+
+ redis-cli keys 'go:*' | xargs redis-cli del
+
+ if you have changed `redisPrefix`, then use that instead of `go:`.
+
+## use systemd
+
+ run
+
+ make install
+
+ to install the systemd service and configuration files.
+ this will fail if the files are already installed and modified.
+
+ configure `HOSTN` and `PORT` in `/etc/conf.d/go.env` and the user
+ and/or group in `/etc/systemd/system/go.service`.
+
+ and finally start the service with
+
+ systemctl start go
diff --git a/go/etc/conf.d/go.env b/go/etc/conf.d/go.env
new file mode 100644
index 00000000..6045deac
--- /dev/null
+++ b/go/etc/conf.d/go.env
@@ -0,0 +1,2 @@
+PORT=1337
+REDIS_KEY_PREFIX=go:
diff --git a/go/etc/systemd/system/go.service b/go/etc/systemd/system/go.service
new file mode 100644
index 00000000..c129296c
--- /dev/null
+++ b/go/etc/systemd/system/go.service
@@ -0,0 +1,14 @@
+[Unit]
+Description=go uri shortener
+After=redis.service
+
+[Service]
+EnvironmentFile=/etc/conf.d/go.env
+ExecStart=/usr/bin/node /krebs/go
+KillMode=process
+User=go
+Group=go
+Restart=always
+
+[Install]
+WantedBy=multi-user.target
diff --git a/go/index.js b/go/index.js
new file mode 100644
index 00000000..e9b551c0
--- /dev/null
+++ b/go/index.js
@@ -0,0 +1,106 @@
+// configuration
+var httpPort = process.env.PORT;
+var redisPrefix = process.env.REDIS_KEY_PREFIX;
+
+
+// automatic configuration
+if (!httpPort) {
+ httpPort = 1337;
+}
+if (!redisPrefix) {
+ redisPrefix = 'go:';
+}
+
+
+// load libraries
+var http = require('http');
+var url = require('url');
+var formidable = require('formidable');
+var redis = require('redis');
+
+
+// instantiate components
+var redisClient = redis.createClient();
+var httpServer = http.createServer(listener);
+
+
+// setup compoments
+redisClient.on('error', function (err) {
+ console.log('redis made a bubu:', err.message);
+ process.exit(23);
+});
+httpServer.listen(httpPort, function () {
+ console.log('http server listening on port', httpPort);
+});
+
+
+// http handler
+function listener (req, res) {
+ if (req.method === 'POST' && req.url === '/') {
+ return create(req, res);
+ } else if (req.method === 'GET') {
+ return retrieve(req, res);
+ } else {
+ return methodNotAllowed(req, res);
+ }
+}
+
+function create (req, res) {
+ redisClient.incr(redisPrefix + 'index', function (err, reply) {
+ if (err) {
+ return internalError(err, req, res);
+ }
+
+ var form = new formidable.IncomingForm();
+
+ form.parse(req, function(err, fields, files) {
+ if (err) {
+ return internalError(err, req, res);
+ }
+
+ var uri = fields.uri;
+ // TODO check uri(?)
+ var shortPath = '/' + reply;
+ var shortUri = 'http://' + req.headers.host + shortPath;
+ var key = redisPrefix + shortPath;
+
+ redisClient.set(key, uri, function (error) {
+ if (error) {
+ return internalError(err, req, res);
+ }
+
+ res.writeHead(200, { 'content-type': 'text/plain' });
+ return res.end(shortUri + '\r\n');
+ });
+ });
+ });
+}
+
+function retrieve (req, res) {
+ var key = redisPrefix + url.parse(req.url).path;
+ redisClient.get(key, function (error, reply) {
+ if (error) {
+ return internalError(err, req, res);
+ }
+
+ if (typeof reply !== 'string') {
+ res.writeHead(404, { 'content-type': 'text/plain' });
+ return res.end('not found\r\n');
+ }
+
+ res.writeHead(302, {
+ 'content-type': 'text/plain',
+ 'location': reply,
+ });
+ return res.end();
+ });
+}
+
+function methodNotAllowed (req, res) {
+ res.writeHead(405, { 'content-type': 'text/plain' });
+ return res.end('method not allowed\r\n');
+}
+function internalError (error, req, res) {
+ res.writeHead(500, { 'content-type': 'text/plain' });
+ return res.end(error.message + '\r\n');
+}
diff --git a/go/package.json b/go/package.json
new file mode 100644
index 00000000..787f2810
--- /dev/null
+++ b/go/package.json
@@ -0,0 +1,10 @@
+{
+ "name": "go",
+ "version": "0.0.0",
+ "description": "minimalistic uri shortener",
+ "dependencies": {
+ "formidable": "*",
+ "redis": "*"
+ },
+ "license": "WTFPL"
+}
diff --git a/go/t/docker/docker_deploy.sh b/go/t/docker/docker_deploy.sh
new file mode 100755
index 00000000..3e64426d
--- /dev/null
+++ b/go/t/docker/docker_deploy.sh
@@ -0,0 +1,20 @@
+#!/bin/bash
+cd $(dirname $(readlink -f $0))
+set -xeuf
+rnd_port=$(shuf -i 2000-65000 -n 1)
+docker_id=$(docker run -p $rnd_port:80 -d -v /krebs/go/t/docker/../../../:/krebs ubuntu /bin/bash /krebs/go/t/docker/dockertest/deploy)
+#docker run -p $rnd_port:80 -v /krebs/go/t/docker/../../../:/krebs ubuntu /bin/bash /krebs/go/t/docker/dockertest/deploy
+echo $docker_id on $rnd_port
+trap "docker stop $docker_id;docker rm $docker_id" INT TERM EXIT QUIT
+i=0
+max_wait=60
+echo "waiting for install (takes about 3 minutes)"
+sleep 240
+while ! curl -s localhost:$rnd_port >/dev/null ;do
+ i=$((i+1))
+ test $i -gt $max_wait && echo "timeout for installation reached, bailing out" && exit 1
+ echo "http port not yet reachable ($i of $max_wait). waiting"
+ sleep 10
+done
+short_uri=$(curl -F "uri=aids.balls" localhost:$rnd_port| sed 's/\r$//')
+curl $short_uri -v 2>&1 | grep location: | grep aids.balls
diff --git a/go/t/docker/dockertest/deploy b/go/t/docker/dockertest/deploy
new file mode 100644
index 00000000..399f469c
--- /dev/null
+++ b/go/t/docker/dockertest/deploy
@@ -0,0 +1,11 @@
+#!/bin/sh
+echo "deb http://archive.ubuntu.com/ubuntu precise main universe" > /etc/apt/sources.list
+apt-get update
+apt-get install -y python-software-properties python g++ make
+add-apt-repository -y ppa:chris-lea/node.js
+apt-get update
+apt-get -y install nodejs redis-server
+npm config set registry http://registry.npmjs.org/
+cd /krebs/go
+npm install
+PORT=80 node .
diff --git a/god/Eselkalk/README b/god/Eselkalk/README
new file mode 100644
index 00000000..48294b8e
--- /dev/null
+++ b/god/Eselkalk/README
@@ -0,0 +1,3 @@
+# Eselkalk
+
+Calculates the next 4 shack penum dates
diff --git a/god/Eselkalk/index.js b/god/Eselkalk/index.js
new file mode 100644
index 00000000..f64e0605
--- /dev/null
+++ b/god/Eselkalk/index.js
@@ -0,0 +1,57 @@
+//
+// node //shack/Eselkalk DATE
+//
+// where DATE ∈ [YYYY[-MM]], defaulting to the current YYYY-MM
+//
+
+range = process.argv[2] ||
+ JSON.parse(JSON.stringify(new Date())).slice(0, '....-..'.length)
+
+function dates(date) {
+ var year = date.getFullYear()
+ var month = date.getMonth()
+
+ var i = new Date([year, (month < 9 ? '0' : '') + (month + 1)].join('-'))
+
+ var days = []
+ var next_day = 4;
+ for (
+ ; i.getMonth() === month
+ ; i = new Date(+i + 24 * 60 * 60 * 1000)) {
+ if (i.getDay() === next_day) {
+ next_day = next_day === 3 ? 4 : 3
+ if (next_day === 3) {
+ var next_4day = new Date(+i + 7 * 24 * 60 * 60 * 1000)
+ if (next_4day.getMonth() !== month) {
+ i = new Date(+i - 24 * 60 * 60 * 1000)
+ next_4day = 4
+ }
+ }
+ days.push(new Date(+i + (20 * 60 + i.getTimezoneOffset()) * 60 * 1000))
+ while (i.getDay() !== 0) {
+ i = new Date(+i + 24 * 60 * 60 * 1000)
+ }
+ }
+ }
+
+ return days
+}
+
+
+result = []
+
+// TODO if (/^....-..-..$/.test(range)) { ... }
+if (/^....-..$/.test(range)) {
+ result = dates(new Date(range))
+}
+else if (/^....$/.test(range)) {
+ ['01','02','03','04','05','06','07','08','09','10','11','12'
+ ].forEach(function (i) {
+ result = result.concat(dates(new Date([range, i].join('-'))))
+ })
+}
+else {
+ throw new Error('You are made of stupid! ' + range)
+}
+
+console.log(JSON.stringify(result, null, 2))
diff --git a/god/Monitoring/collectd/collectd.conf b/god/Monitoring/collectd/collectd.conf
new file mode 100644
index 00000000..8779f418
--- /dev/null
+++ b/god/Monitoring/collectd/collectd.conf
@@ -0,0 +1,37 @@
+Hostname "HOST1"
+Interval 10
+LoadPlugin cpu
+LoadPlugin df
+LoadPlugin disk
+LoadPlugin interface
+LoadPlugin load
+LoadPlugin memory
+LoadPlugin swap
+LoadPlugin users
+
+<Plugin interface>
+ Interface "eth0"
+ Interface "retiolum"
+</Plugin>
+
+<Plugin df>
+ Device "/dev/xvda1"
+ IgnoreSelected false
+</Plugin>
+<Plugin disk>
+ Disk "/xvda/"
+ IgnoreSelected false
+</Plugin>
+
+LoadPlugin "write_graphite"
+<Plugin "write_graphite">
+ <Carbon>
+ Host "no_omo.retiolum"
+ Port "2003"
+ Prefix "retiolum."
+ #Postfix ""
+ EscapeCharacter "_"
+ StoreRates false
+ AlwaysAppendDS false
+ </Carbon>
+</Plugin>
diff --git a/god/Monitoring/collectd/supervisor.d/collectd.conf b/god/Monitoring/collectd/supervisor.d/collectd.conf
new file mode 100644
index 00000000..a6334d70
--- /dev/null
+++ b/god/Monitoring/collectd/supervisor.d/collectd.conf
@@ -0,0 +1,3 @@
+[program:collectd]
+command=collectd -C /etc/collectd.conf -f
+autorestart=true
diff --git a/god/Monitoring/nagios/Makefile b/god/Monitoring/nagios/Makefile
new file mode 100644
index 00000000..4730f30d
--- /dev/null
+++ b/god/Monitoring/nagios/Makefile
@@ -0,0 +1,32 @@
+NAGDIR = /etc/nagios3/
+NAGLIBDIR = /usr/lib/nagios
+HTDOCS = /usr/share/nagios3/htdocs
+KREBS = /krebs
+
+.phony: debian
+debian:
+ git pull origin master
+ [ `which python` ] || apt-get install python python-simplejson
+ [ `which nagios3` ] || apt-get install nagios3
+ rm $(NAGDIR)/conf.d/* || true
+ cp -r conf/* $(NAGDIR)/conf.d/
+ htpasswd -bc htpasswd.users nagiosadmin krebs
+ htpasswd -b htpasswd.users shack shackit
+ sed -i 's/\(authorized_for_all_hosts=nagiosadmin\)$$/\1,shack/' $(NAGDIR)/cgi.cfg
+ sed -i 's/\(check_external_commands=\)0$$/\11/' $(NAGDIR)/nagios.cfg
+ sed -i 's/\(authorized_for_all_services=nagiosadmin\)$$/\1,shack/' $(NAGDIR)/cgi.cfg
+ cp -R htdocs/* $(HTDOCS)
+ cp -r plugins $(NAGLIBDIR)
+ /etc/init.d/nagios3 reload
+ chown nagios:www-data /var/lib/nagios3 || true
+ chown nagios:www-data /var/lib/nagios3/rw || true
+ chmod g+x /var/lib/nagios3 || true
+ chmod ugo=rwx /var/lib/nagios3/rw/nagios.cmd || true
+
+debian-shinken:
+ curl https://raw.github.com/nicolargo/shinkenautoinstall/master/shinkenautoinstall-debian.sh | sh
+
+shinken-discover-hosts: /etc/shinken/resources.cfg
+ sed -i '/.*NMAPTARGETS.*/d' /etc/shinken/resource.cfg
+ $(KREBS)/retiolum/bin/hosts | awk '{print $2}'| tr '\n' ' ' | xargs echo '$$NMAPTARGETS$$=' | magic create krebs-discovery /etc/shinken/resource.cfg
+ shinken-discovery -o /etc/shinken/objects/discovery
diff --git a/god/Monitoring/nagios/TODO b/god/Monitoring/nagios/TODO
new file mode 100644
index 00000000..e69de29b
--- /dev/null
+++ b/god/Monitoring/nagios/TODO
diff --git a/god/Monitoring/nagios/conf/extinfo.cfg b/god/Monitoring/nagios/conf/extinfo.cfg
new file mode 100644
index 00000000..e4300b72
--- /dev/null
+++ b/god/Monitoring/nagios/conf/extinfo.cfg
@@ -0,0 +1,9 @@
+define hostextinfo{
+ hostgroup_name debian-servers
+ notes Debian GNU/Linux servers
+# notes_url http://webserver.localhost.localdomain/hostinfo.pl?host=netware1
+ icon_image base/debian.png
+ icon_image_alt Debian GNU/Linux
+ vrml_image debian.png
+ statusmap_image base/debian.gd2
+ }
diff --git a/god/Monitoring/nagios/conf/hostgroups_generic.cfg b/god/Monitoring/nagios/conf/hostgroups_generic.cfg
new file mode 100644
index 00000000..4e3625c5
--- /dev/null
+++ b/god/Monitoring/nagios/conf/hostgroups_generic.cfg
@@ -0,0 +1,28 @@
+# A simple wildcard hostgroup
+define hostgroup {
+ hostgroup_name all
+ alias All Servers
+ members *
+ }
+
+# A list of your Debian GNU/Linux servers
+define hostgroup {
+ hostgroup_name debian-servers
+ alias Debian GNU/Linux Servers
+ members localhost
+ }
+
+# A list of your web servers
+define hostgroup {
+ hostgroup_name http-servers
+ alias HTTP servers
+ members localhost
+ }
+
+# A list of your ssh-accessible servers
+define hostgroup {
+ hostgroup_name ssh-servers
+ alias SSH servers
+ members localhost
+ }
+
diff --git a/god/Monitoring/nagios/conf/krebs_hosts.cfg b/god/Monitoring/nagios/conf/krebs_hosts.cfg
new file mode 100644
index 00000000..a929fa19
--- /dev/null
+++ b/god/Monitoring/nagios/conf/krebs_hosts.cfg
@@ -0,0 +1,78 @@
+
+#
+# Ur-Krebs
+#
+define host{
+ use generic-host
+ host_name krebs.shack
+ alias krebs
+ _tinc_address 10.7.7.156
+ address 10.42.23.5
+ parents shack-coreswitch
+ hostgroups krebs-machines,tinc-nodes,ssh-servers
+ }
+#
+# UTART
+#
+define host{
+ use generic-host
+ host_name utart
+ alias UTART
+ _tinc_address 10.7.7.66
+ address 10.42.23.23
+ parents shack-coreswitch
+ hostgroups krebs-machines,tinc-nodes,ssh-servers
+ }
+#
+# ytart
+# will use tinc ip as long as no static ip is supplied
+#
+define host{
+ use generic-host
+ host_name ytart
+ alias ytart
+ _tinc_address 10.7.7.201
+ parents shack-wlan-ap5
+ address 10.7.7.201
+ hostgroups krebs-machines,tinc-nodes,ssh-servers
+ }
+#
+# uPM
+#
+define host{
+ use generic-host
+ host_name upm
+ alias uPM Virtual Machine
+ _tinc_address 10.7.7.99
+ address upm.shack
+ parents shack-node1
+ hostgroups krebs-machines,ssh-servers,shack-rz
+ #,tinc-nodes
+ }
+
+# TODO add upm and genericore as tinc-nodes
+# TODO check MONGODB on uPM
+
+
+
+#TODO verkrebse genericore/get password
+define host{
+ use generic-host
+ host_name genericore
+ alias genericore Virtual Machine
+ #_tinc_address 10.7.7.XX
+ address genericore.shack
+ parents shack-node1
+ hostgroups ssh-servers,shack-rz
+ #,tinc-nodes,krebs-machines
+ }
+
+define host{
+ use generic-host
+ host_name shepherd
+ alias Shepherd Krebs
+ _tinc_address 10.7.7.29
+ address 10.42.23.42
+ parents shack-coreswitch
+ hostgroups krebs-machines,tinc-nodes,ssh-servers
+ }
diff --git a/god/Monitoring/nagios/conf/krebsnet.cfg b/god/Monitoring/nagios/conf/krebsnet.cfg
new file mode 100644
index 00000000..ae5b898e
--- /dev/null
+++ b/god/Monitoring/nagios/conf/krebsnet.cfg
@@ -0,0 +1,20 @@
+## extended infos for krebsnet
+define hostgroup {
+ hostgroup_name krebs-machines
+ alias Krebs Machines
+ }
+define hostextinfo{
+ hostgroup_name krebs-machines
+ notes Deployed Krebse
+# notes_url http://webserver.localhost.localdomain/hostinfo.pl?host=netware1
+ icon_image krebs/krebs.png
+ icon_image_alt Krebs
+ vrml_image krebs.png
+ statusmap_image krebs/krebs.gd2
+ }
+#define host{
+# use generic-host
+# register 0
+# name tinc-only-host
+# check_command check_internal_tinc_up!100.0,20%!500.0,60%
+# }
diff --git a/god/Monitoring/nagios/conf/localhost.cfg b/god/Monitoring/nagios/conf/localhost.cfg
new file mode 100644
index 00000000..3b098195
--- /dev/null
+++ b/god/Monitoring/nagios/conf/localhost.cfg
@@ -0,0 +1,60 @@
+# A simple configuration file for monitoring the local host
+# This can serve as an example for configuring other servers;
+# Custom services specific to this host are added here, but services
+# defined in nagios2-common_services.cfg may also apply.
+#
+
+define host{
+ use generic-host ; Name of host template to use
+ host_name localhost
+ alias localhost
+ address 127.0.0.1
+ hostgroups krebs-machines
+ }
+
+# Define a service to check the disk space of the root partition
+# on the local machine. Warning if < 20% free, critical if
+# < 10% free space on partition.
+
+define service{
+ use generic-service ; Name of service template to use
+ host_name localhost
+ service_description Disk Space
+ check_command check_all_disks!20%!10%
+ }
+
+
+
+# Define a service to check the number of currently logged in
+# users on the local machine. Warning if > 20 users, critical
+# if > 50 users.
+
+define service{
+ use generic-service ; Name of service template to use
+ host_name localhost
+ service_description Current Users
+ check_command check_users!20!50
+ }
+
+
+# Define a service to check the number of currently running procs
+# on the local machine. Warning if > 250 processes, critical if
+# > 400 processes.
+
+define service{
+ use generic-service ; Name of service template to use
+ host_name localhost
+ service_description Total Processes
+ check_command check_procs!250!400
+ }
+
+
+
+# Define a service to check the load on the local machine.
+
+define service{
+ use generic-service ; Name of service template to use
+ host_name localhost
+ service_description Current Load
+ check_command check_load!5.0!4.0!3.0!10.0!6.0!4.0
+ }
diff --git a/god/Monitoring/nagios/conf/other_hosts.cfg b/god/Monitoring/nagios/conf/other_hosts.cfg
new file mode 100644
index 00000000..bbdc676a
--- /dev/null
+++ b/god/Monitoring/nagios/conf/other_hosts.cfg
@@ -0,0 +1,22 @@
+define host{
+ use generic-host
+ host_name google.de
+ alias Google Website
+ address google.de
+ parents shack-gw
+ hostgroups http-servers
+ }
+
+define host{
+ use generic-host
+ host_name google-dns
+ parents shack-gw
+ alias Google DNS Service (always reachable)
+ address 8.8.8.8
+ }
+define service {
+ host_name google-dns
+ service_description DNS Service
+ use generic-service
+ check_command check_dns
+ }
diff --git a/god/Monitoring/nagios/conf/services.cfg b/god/Monitoring/nagios/conf/services.cfg
new file mode 100644
index 00000000..e3a61eb0
--- /dev/null
+++ b/god/Monitoring/nagios/conf/services.cfg
@@ -0,0 +1,26 @@
+# check that web services are running
+define service {
+ hostgroup_name http-servers
+ service_description HTTP
+ check_command check_http
+ use generic-service
+ notification_interval 0 ; set > 0 if you want to be renotified
+}
+
+# check that ssh services are running
+define service {
+ hostgroup_name ssh-servers
+ service_description SSH
+ check_command check_ssh
+ use generic-service
+ notification_interval 0 ; set > 0 if you want to be renotified
+}
+
+# check that ping-only hosts are up
+define service {
+# hostgroup_name ping-servers
+ service_description PING
+ check_command check_ping!100.0,20%!500.0,60%
+ use generic-service
+ notification_interval 0 ; set > 0 if you want to be renotified
+}
diff --git a/god/Monitoring/nagios/conf/shack_contacts.cfg b/god/Monitoring/nagios/conf/shack_contacts.cfg
new file mode 100644
index 00000000..832a215e
--- /dev/null
+++ b/god/Monitoring/nagios/conf/shack_contacts.cfg
@@ -0,0 +1,22 @@
+define contact{
+ contact_name makefu
+ alias makefu
+ service_notification_period 24x7
+ host_notification_period 24x7
+ service_notification_options w,u,c,r
+ host_notification_options d,u,r
+ service_notification_commands notify-service-by-email
+ host_notification_commands notify-host-by-email
+ email shack_nagios_notification@syntax-fehler.de
+ }
+define contactgroup{
+ contactgroup_name krebsminers
+ alias Krebsminers
+ members makefu
+ }
+
+define contactgroup{
+ contactgroup_name admins
+ alias admins
+ }
+
diff --git a/god/Monitoring/nagios/conf/shack_guests.cfg b/god/Monitoring/nagios/conf/shack_guests.cfg
new file mode 100644
index 00000000..67abdfce
--- /dev/null
+++ b/god/Monitoring/nagios/conf/shack_guests.cfg
@@ -0,0 +1,105 @@
+#
+# Bitcoin mines
+#
+define host{
+ use generic-host
+ host_name gauda0
+ parents shack-serverswitch
+ alias Gauda0 Bitcoin Mining Rig 0
+ address 10.42.0.99
+ hostgroups bitcoin-miner
+ }
+define host{
+ use generic-host
+ host_name gauda1
+ parents shack-serverswitch2
+ alias Gauda1 Bitcoin Mining Rig 1
+ address 10.42.0.98
+ hostgroups bitcoin-miner
+ }
+define host{
+ use generic-host
+ host_name gauda2
+ parents shack-serverswitch2
+ alias Gauda2 Bitcoin Mining Rig 2
+ address 10.42.0.97
+ hostgroups bitcoin-miner
+ }
+
+#Chinaman
+define host{
+ use generic-host
+ host_name chinaman
+ parents shack-gw
+ alias Chinaman Bitcoin Mining Rig
+ #address 10.42.0.96
+ #_TINC_ADDRESS 10.7.7.6
+ address 10.7.7.6
+ _SPEED_URL http://leechi.kicks-ass.org/tmp/live/chinaman_bitcoinslc_live
+ _TEMPER_URL http://leechi.kicks-ass.org/tmp/live/chinaman_ati_temper
+ hostgroups bitcoin-miner,tinc-nodes,ssh-servers
+ contact_groups krebsminers
+ }
+define command {
+ command_name check_speed
+ command_line $USER1$/check_speed $_HOSTSPEED_URL$ $ARG1$
+ }
+define service {
+ host_name chinaman
+ service_description Temperature Checker
+ use generic-service
+ check_command check_temper!85 85 65 45
+ contact_groups krebsminers
+ }
+define command {
+ command_name check_temper
+ command_line $USER1$/check_temper $_HOSTTEMPER_URL$ $ARG1$
+ }
+define service {
+ host_name chinaman
+ service_description Mining Speed checker
+ use generic-service
+ check_command check_speed!600
+ contact_groups krebsminers
+ }
+#define service {
+# host_name chinaman
+# service_description BTCGUILD hash rate checker
+# use generic-service
+# check_command check_btcguild_miner!4bf1543d2eca8648277bdc66c326eea9!txgen_chinaman!450
+# contact_groups krebsminers
+# }
+
+
+#define command {
+# command_name check_btcguild_miner
+# command_line $USER1$/check_btcguild_miner $ARG1$ $ARG2$ $ARG3$
+# }
+
+define host{
+ use generic-host
+ host_name Sascha privater Server
+ parents shack-serverswitch
+ alias Sascha Server
+ address 10.42.23.100
+ #hostgroups bitcoin-miner
+ }
+
+define host{
+ use generic-host
+ host_name Telefonzelle
+ parents shack-coreswitch
+ alias Telefonzelle
+ address 10.42.23.101
+ #hostgroups bitcoin-miner
+ }
+
+define host{
+ use generic-host
+ host_name shack-pnp
+ alias Shack Bestueckungsautomat
+ address 10.42.100.5
+ parents shack-coreswitch
+ #hostgroups shack-rz
+ }
+
diff --git a/god/Monitoring/nagios/conf/shack_infrastructure.cfg b/god/Monitoring/nagios/conf/shack_infrastructure.cfg
new file mode 100644
index 00000000..f404f3e4
--- /dev/null
+++ b/god/Monitoring/nagios/conf/shack_infrastructure.cfg
@@ -0,0 +1,241 @@
+#
+
+#
+# Shack Virtual Machine Hoster Platform
+#
+
+#
+# Virtualization and storage
+#
+define host{
+ use generic-host
+ host_name shack-node0
+ alias Shack Virtualization Server 0
+ address 10.42.0.10
+ parents shack-serverswitch
+ hostgroups shack-rz,ssh-servers
+ }
+define host{
+ use generic-host
+ host_name shack-node1
+ alias Shack Virtualization Server 1
+ address 10.42.0.10
+ parents shack-serverswitch
+ hostgroups shack-rz,ssh-servers
+ }
+define host{
+ use generic-host
+ host_name shack-plattenschwein
+ parents shack-serverswitch
+ alias Shack Plattenschwein
+ address 10.42.0.12
+ hostgroups shack-rz,ssh-servers
+ }
+#
+# Network Infrastructure
+#
+
+#
+## Shack gateway (no gateway-no internet)
+#
+define host{
+ use generic-host
+ host_name shack-gw
+ parents shack-coreswitch
+ alias Watchguard Shack Gateway
+ address 10.42.0.1
+ hostgroups shack-rz,ssh-servers
+ }
+#deprecated
+#define host{
+# use generic-host
+# host_name shack-modem
+# parents shack-gw
+# alias Shack Telecom VDSL Router
+# address 192.168.2.1
+# hostgroups shack-rz
+# }
+define host{
+ use generic-host
+ host_name shack-externswitch
+ parents shack-gw
+ alias Shack External Switch (2.OG)
+ address 10.0.10.2
+ hostgroups shack-rz
+ }
+#
+# Serverswitch 2
+#
+define host{
+ use generic-host
+ host_name shack-serverswitch2
+ parents shack-serverswitch
+ alias Shack switch Rack 2 (cisco 3524)
+ address 10.42.0.5
+ hostgroups shack-rz
+ }
+
+define service {
+ host_name shack-serverswitch2
+ service_description Telnet
+ use generic-service
+ check_command check_telnet
+ }
+
+define service {
+ host_name shack-serverswitch2
+ service_description Admin HTTP Terminal
+ use generic-service
+ check_command check_http
+ }
+
+
+define service {
+ host_name shack-gw
+ service_description DNS Service
+ use generic-service
+ check_command check_dns
+ }
+define host{
+ use generic-host
+ host_name shack-coreswitch
+ alias Shack Cisco Router Coreswitch
+ address 10.42.0.3
+ hostgroups shack-rz,ssh-servers
+ }
+define host{
+ use generic-host
+ host_name shack-serverswitch
+ parents shack-coreswitch
+ alias Shack Cisco Router Serverswitch
+ address 10.42.0.4
+ hostgroups shack-rz
+ }
+
+define host{
+ use generic-host
+ host_name shack-wlan-ap2
+ parents shack-coreswitch
+ alias Shack Wlan Access Point 2
+ address 10.42.0.6
+ hostgroups wlan-ap
+ }
+define host{
+ use generic-host
+ host_name shack-wlan-ap3
+ parents shack-coreswitch
+ alias Shack Wlan Access Point 3
+ address 10.42.0.7
+ hostgroups wlan-ap
+ }
+define host{
+ use generic-host
+ host_name shack-wlan-ap4
+ parents shack-coreswitch
+ alias Shack Wlan Access Point 4
+ address 10.42.0.8
+ hostgroups wlan-ap
+ }
+define host{
+ use generic-host
+ host_name shack-wlan-ap5
+ parents shack-coreswitch
+ alias Shack Wlan Access Point 5
+ address 10.42.0.9
+ hostgroups wlan-ap
+ }
+#
+# Voip Infrastructure
+#
+define host{
+ use generic-host
+ host_name shack-voip
+ alias Shack Cisco VOIP Gateway
+ address 10.42.0.2
+ parents shack-coreswitch
+ hostgroups shack-rz,http-servers
+ }
+
+define service{
+ host_name shack-voip
+ service_description SIP Service
+ use generic-service
+ check_command check_sip
+ }
+
+#
+# Shack DNS Server
+#
+
+define host{
+ use generic-host
+ host_name shack-dns
+ parents shack-node0
+ alias Shack DNS Virtual Host
+ address 10.42.0.100
+ hostgroups shack-rz
+ }
+define service {
+ host_name shack-dns
+ service_description DNS Service
+ use generic-service
+ check_command check_dns_shack
+ }
+
+define host{
+ use generic-host
+ host_name shack-pxe
+ parents shack-node0
+ alias Shack PXEBoot Vhost
+ address pxeboot.shack
+ hostgroups shack-rz
+ }
+
+define host{
+ use generic-host
+ host_name shack-printsrv
+ parents shack-node1
+ alias Shack Print Server
+ address printer.shack
+ hostgroups shack-rz
+ }
+
+define host{
+ use generic-host
+ host_name shack-aptproxy
+ parents shack-node0
+ alias Shack Apt-proxy
+ address aptproxy.shack
+ hostgroups shack-rz
+ }
+
+define host{
+ use generic-host
+ host_name shack-shack
+ parents shack-node1
+ alias Shack Data Exchange
+ address shack.shack
+ hostgroups shack-rz,ssh-servers
+ }
+
+#
+# shack ldap server
+#
+define host{
+ use generic-host
+ host_name shack-ldap
+ parents shack-node0
+ alias Shack LDAP Server
+ address ldap.shack
+ hostgroups shack-rz
+ }
+define service {
+ host_name shack-ldap
+ service_description LDAP Service
+ use generic-service
+ check_command check_ldap!shammunity
+ }
+
+#
+# Random stuff (not necessary located in RZ)
+#
diff --git a/god/Monitoring/nagios/conf/shacknet.cfg b/god/Monitoring/nagios/conf/shacknet.cfg
new file mode 100644
index 00000000..802e5e3a
--- /dev/null
+++ b/god/Monitoring/nagios/conf/shacknet.cfg
@@ -0,0 +1,47 @@
+define hostgroup {
+ hostgroup_name shack-rz
+ alias Shack RZ Infrastructure
+ }
+define hostgroup {
+ hostgroup_name bitcoin-miner
+ alias Bitcoin miner in Shack-RZ
+ }
+define hostextinfo{
+ hostgroup_name bitcoin-miner
+ notes Bitcoin miner in Shack-RZ
+ icon_image krebs/bitcoin_miner.png
+ icon_image_alt bitcoin_miner
+ vrml_image bitcoin_miner.png
+ statusmap_image krebs/bitcoin_miner.gd2
+ }
+
+define hostgroup {
+ hostgroup_name wlan-ap
+ alias Shack Wlan Access Points
+ }
+define hostextinfo{
+ hostgroup_name wlan-ap
+ notes Access Points for Shack
+ icon_image krebs/wireless_access_point.png
+ icon_image_alt wireless_access_point
+ vrml_image wireless_access_point.png
+ statusmap_image krebs/wireless_access_point.gd2
+ }
+define hostextinfo{
+ hostgroup_name shack-rz
+ notes Shack RZ Infrastructure
+ icon_image krebs/shack.png
+ icon_image_alt shack-RZ
+ vrml_image shack.png
+ statusmap_image krebs/shack.gd2
+ }
+
+define command {
+ command_name check_sip
+ command_line $USER1$/check_tcp -H $HOSTADDRESS$ -p 5060
+ }
+
+define command {
+ command_name check_dns_shack
+ command_line $USER1$/check_dns -H shack.shack -s '$HOSTADDRESS$'
+ }
diff --git a/god/Monitoring/nagios/conf/templates.cfg b/god/Monitoring/nagios/conf/templates.cfg
new file mode 100644
index 00000000..41807e1c
--- /dev/null
+++ b/god/Monitoring/nagios/conf/templates.cfg
@@ -0,0 +1,45 @@
+# generic service template definition
+define service{
+ name generic-service ; The 'name' of this service template
+ active_checks_enabled 1 ; Active service checks are enabled
+ passive_checks_enabled 1 ; Passive service checks are enabled/accepted
+ parallelize_check 1 ; Active service checks should be parallelized (disabling this can lead to major performance problems)
+ obsess_over_service 1 ; We should obsess over this service (if necessary)
+ check_freshness 0 ; Default is to NOT check service 'freshness'
+ notifications_enabled 1 ; Service notifications are enabled
+ event_handler_enabled 1 ; Service event handler is enabled
+ flap_detection_enabled 1 ; Flap detection is enabled
+ failure_prediction_enabled 1 ; Failure prediction is enabled
+ process_perf_data 1 ; Process performance data
+ retain_status_information 1 ; Retain status information across program restarts
+ retain_nonstatus_information 1 ; Retain non-status information across program restarts
+ notification_interval 0 ; Only send notifications on status change by default.
+ is_volatile 0
+ check_period 24x7
+ normal_check_interval 5
+ retry_check_interval 1
+ max_check_attempts 4
+ notification_period 24x7
+ notification_options w,u,c,r
+ contact_groups admins
+ register 0 ; DONT REGISTER THIS DEFINITION - ITS NOT A REAL SERVICE, JUST A TEMPLATE!
+ }
+# Generic host definition template - This is NOT a real host, just a template!
+
+define host{
+ name generic-host ; The name of this host template
+ notifications_enabled 1 ; Host notifications are enabled
+ event_handler_enabled 1 ; Host event handler is enabled
+ flap_detection_enabled 1 ; Flap detection is enabled
+ failure_prediction_enabled 1 ; Failure prediction is enabled
+ process_perf_data 1 ; Process performance data
+ retain_status_information 1 ; Retain status information across program restarts
+ retain_nonstatus_information 1 ; Retain non-status information across program restarts
+ check_command check-host-alive
+ max_check_attempts 10
+ notification_interval 0
+ notification_period 24x7
+ notification_options d,u,r
+ contact_groups admins
+ register 0 ; DONT REGISTER THIS DEFINITION - ITS NOT A REAL HOST, JUST A TEMPLATE!
+ }
diff --git a/god/Monitoring/nagios/conf/timeperiods.cfg b/god/Monitoring/nagios/conf/timeperiods.cfg
new file mode 100644
index 00000000..55ecf9df
--- /dev/null
+++ b/god/Monitoring/nagios/conf/timeperiods.cfg
@@ -0,0 +1,50 @@
+###############################################################################
+# timeperiods.cfg
+###############################################################################
+
+# This defines a timeperiod where all times are valid for checks,
+# notifications, etc. The classic "24x7" support nightmare. :-)
+
+define timeperiod{
+ timeperiod_name 24x7
+ alias 24 Hours A Day, 7 Days A Week
+ sunday 00:00-24:00
+ monday 00:00-24:00
+ tuesday 00:00-24:00
+ wednesday 00:00-24:00
+ thursday 00:00-24:00
+ friday 00:00-24:00
+ saturday 00:00-24:00
+ }
+
+# Here is a slightly friendlier period during work hours
+define timeperiod{
+ timeperiod_name workhours
+ alias Standard Work Hours
+ monday 09:00-17:00
+ tuesday 09:00-17:00
+ wednesday 09:00-17:00
+ thursday 09:00-17:00
+ friday 09:00-17:00
+ }
+
+# The complement of workhours
+define timeperiod{
+ timeperiod_name nonworkhours
+ alias Non-Work Hours
+ sunday 00:00-24:00
+ monday 00:00-09:00,17:00-24:00
+ tuesday 00:00-09:00,17:00-24:00
+ wednesday 00:00-09:00,17:00-24:00
+ thursday 00:00-09:00,17:00-24:00
+ friday 00:00-09:00,17:00-24:00
+ saturday 00:00-24:00
+ }
+
+# This one is a favorite: never :)
+define timeperiod{
+ timeperiod_name never
+ alias Never
+ }
+
+# end of file
diff --git a/god/Monitoring/nagios/conf/tinc_hosts.cfg b/god/Monitoring/nagios/conf/tinc_hosts.cfg
new file mode 100644
index 00000000..717c75a8
--- /dev/null
+++ b/god/Monitoring/nagios/conf/tinc_hosts.cfg
@@ -0,0 +1,33 @@
+#connection will not work if no internet is available (e.g. no shack-gateway)
+
+#
+# Miefda Supernode
+#
+define host{
+ use generic-host
+ host_name supernode
+ alias Supernode External
+ _TINC_ADDRESS 10.7.7.1
+ address miefda.org
+ parents shack-gw
+ hostgroups tinc-nodes,ssh-servers,http-servers
+ }
+
+define service {
+ host_name supernode
+ service_description IRC
+ use generic-service
+ check_command check_ircd
+ }
+#
+# Sharepoint (dhbw-stuttgart)
+#
+define host{
+ use generic-host
+ host_name sharepoint
+ alias PA Sharepoint
+ address 141.31.8.11
+ _TINC_ADDRESS 10.7.7.5
+ parents shack-gw
+ hostgroups tinc-nodes,ssh-servers
+ }
diff --git a/god/Monitoring/nagios/conf/tincnet.cfg b/god/Monitoring/nagios/conf/tincnet.cfg
new file mode 100644
index 00000000..f0b35b4e
--- /dev/null
+++ b/god/Monitoring/nagios/conf/tincnet.cfg
@@ -0,0 +1,31 @@
+define hostgroup {
+ hostgroup_name tinc-nodes
+ alias Tinc Nodes
+ }
+
+define hostextinfo{
+ hostgroup_name tinc-nodes
+ notes Tinc Nodes
+ icon_image krebs/tinc.png
+ icon_image_alt tinc
+ vrml_image tinc.png
+ statusmap_image krebs/tinc.gd2
+ }
+
+define command {
+ command_name check_internal_tinc_up
+ command_line $USER1$/check_ping -H $_HOSTTINC_ADDRESS$ -w $ARG1$ -c $ARG2$
+ }
+define command {
+ command_name check_ircd
+ command_line $USER1$/check_ircd $_HOSTTINC_ADDRESS$
+ }
+
+define service {
+ hostgroup_name tinc-nodes
+ service_description tinc internal
+ check_command check_internal_tinc_up!100.0,20%!500.0,60%
+ use generic-service
+ notification_interval 0
+}
+
diff --git a/god/Monitoring/nagios/htdocs/images/logos/krebs/bitcoin_miner.gd2 b/god/Monitoring/nagios/htdocs/images/logos/krebs/bitcoin_miner.gd2
new file mode 100644
index 00000000..5e585c62
--- /dev/null
+++ b/god/Monitoring/nagios/htdocs/images/logos/krebs/bitcoin_miner.gd2
Binary files differ
diff --git a/god/Monitoring/nagios/htdocs/images/logos/krebs/bitcoin_miner.png b/god/Monitoring/nagios/htdocs/images/logos/krebs/bitcoin_miner.png
new file mode 100644
index 00000000..87200fe4
--- /dev/null
+++ b/god/Monitoring/nagios/htdocs/images/logos/krebs/bitcoin_miner.png
Binary files differ
diff --git a/god/Monitoring/nagios/htdocs/images/logos/krebs/favicon.ico b/god/Monitoring/nagios/htdocs/images/logos/krebs/favicon.ico
new file mode 100644
index 00000000..fa18384c
--- /dev/null
+++ b/god/Monitoring/nagios/htdocs/images/logos/krebs/favicon.ico
Binary files differ
diff --git a/god/Monitoring/nagios/htdocs/images/logos/krebs/krebs.gd2 b/god/Monitoring/nagios/htdocs/images/logos/krebs/krebs.gd2
new file mode 100644
index 00000000..1113f03e
--- /dev/null
+++ b/god/Monitoring/nagios/htdocs/images/logos/krebs/krebs.gd2
Binary files differ
diff --git a/god/Monitoring/nagios/htdocs/images/logos/krebs/krebs.png b/god/Monitoring/nagios/htdocs/images/logos/krebs/krebs.png
new file mode 100644
index 00000000..3c40512c
--- /dev/null
+++ b/god/Monitoring/nagios/htdocs/images/logos/krebs/krebs.png
Binary files differ
diff --git a/god/Monitoring/nagios/htdocs/images/logos/krebs/shack.gd2 b/god/Monitoring/nagios/htdocs/images/logos/krebs/shack.gd2
new file mode 100644
index 00000000..8b0d98e5
--- /dev/null
+++ b/god/Monitoring/nagios/htdocs/images/logos/krebs/shack.gd2
Binary files differ
diff --git a/god/Monitoring/nagios/htdocs/images/logos/krebs/shack.png b/god/Monitoring/nagios/htdocs/images/logos/krebs/shack.png
new file mode 100644
index 00000000..53f1275b
--- /dev/null
+++ b/god/Monitoring/nagios/htdocs/images/logos/krebs/shack.png
Binary files differ
diff --git a/god/Monitoring/nagios/htdocs/images/logos/krebs/tinc.gd2 b/god/Monitoring/nagios/htdocs/images/logos/krebs/tinc.gd2
new file mode 100644
index 00000000..36572d4a
--- /dev/null
+++ b/god/Monitoring/nagios/htdocs/images/logos/krebs/tinc.gd2
Binary files differ
diff --git a/god/Monitoring/nagios/htdocs/images/logos/krebs/tinc.png b/god/Monitoring/nagios/htdocs/images/logos/krebs/tinc.png
new file mode 100644
index 00000000..daa1fdeb
--- /dev/null
+++ b/god/Monitoring/nagios/htdocs/images/logos/krebs/tinc.png
Binary files differ
diff --git a/god/Monitoring/nagios/htdocs/images/logos/krebs/wireless_access_point.gd2 b/god/Monitoring/nagios/htdocs/images/logos/krebs/wireless_access_point.gd2
new file mode 100644
index 00000000..6e740ec4
--- /dev/null
+++ b/god/Monitoring/nagios/htdocs/images/logos/krebs/wireless_access_point.gd2
Binary files differ
diff --git a/god/Monitoring/nagios/htdocs/images/logos/krebs/wireless_access_point.png b/god/Monitoring/nagios/htdocs/images/logos/krebs/wireless_access_point.png
new file mode 100644
index 00000000..9febe45e
--- /dev/null
+++ b/god/Monitoring/nagios/htdocs/images/logos/krebs/wireless_access_point.png
Binary files differ
diff --git a/god/Monitoring/nagios/htdocs/images/logos/krebs/wireless_access_point_64.png b/god/Monitoring/nagios/htdocs/images/logos/krebs/wireless_access_point_64.png
new file mode 100644
index 00000000..fe9788af
--- /dev/null
+++ b/god/Monitoring/nagios/htdocs/images/logos/krebs/wireless_access_point_64.png
Binary files differ
diff --git a/god/Monitoring/nagios/htpasswd.users b/god/Monitoring/nagios/htpasswd.users
new file mode 100644
index 00000000..7d4bbd6c
--- /dev/null
+++ b/god/Monitoring/nagios/htpasswd.users
@@ -0,0 +1,2 @@
+nagiosadmin:wriRAagrgh5mk
+shack:i8ZRZOQKu3mgw
diff --git a/god/Monitoring/nagios/plugins/check.bat b/god/Monitoring/nagios/plugins/check.bat
new file mode 100755
index 00000000..e69de29b
--- /dev/null
+++ b/god/Monitoring/nagios/plugins/check.bat
diff --git a/god/Monitoring/nagios/plugins/check.sh b/god/Monitoring/nagios/plugins/check.sh
new file mode 100755
index 00000000..9e62fbee
--- /dev/null
+++ b/god/Monitoring/nagios/plugins/check.sh
@@ -0,0 +1,5 @@
+#!/bin/sh
+
+echo "When in doubt... blow it up. | cpu=100%"
+#sleep 1.5
+exit 0
diff --git a/god/Monitoring/nagios/plugins/check_apt b/god/Monitoring/nagios/plugins/check_apt
new file mode 100755
index 00000000..2371c32d
--- /dev/null
+++ b/god/Monitoring/nagios/plugins/check_apt
Binary files differ
diff --git a/god/Monitoring/nagios/plugins/check_bgpstate b/god/Monitoring/nagios/plugins/check_bgpstate
new file mode 100755
index 00000000..645d7505
--- /dev/null
+++ b/god/Monitoring/nagios/plugins/check_bgpstate
@@ -0,0 +1,215 @@
+#!/usr/bin/perl -w
+#
+# check_bgpstate.pl - nagios plugin
+#
+# Copyright (C) 2000 Christoph Kron
+#
+# This program is free software; you can redistribute it and/or
+# modify it under the terms of the GNU General Public License
+# as published by the Free Software Foundation; either version 2
+# of the License, or (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+#
+#
+# Report bugs to: ck@zet.net
+#
+# 11.01.2000 Version 1.0
+
+
+
+use strict;
+
+use Net::SNMP;
+use Getopt::Long;
+&Getopt::Long::config('auto_abbrev');
+
+
+# whois programm for RIPE database queries
+my $whois = '/usr/bin/whois';
+my $status;
+my $TIMEOUT = 30;
+
+# critical bgp sessions
+my %uplinks = ( 1273, 'Uplink ECRC',
+ 1755, 'Uplink EBONE',
+ 3300, 'Uplink AUCS'
+ );
+
+my %ERRORS = ('UNKNOWN' , '-1',
+ 'OK' , '0',
+ 'WARNING', '1',
+ 'CRITICAL', '2');
+
+
+my %bgpPeerState = (
+ '1',"idle",
+ '2',"connect",
+ '3',"active",
+ '4',"opensent",
+ '5',"openconfirm",
+ '6',"established"
+ );
+my $state = "UNKNOWN";
+my $answer = "";
+my $snmpkey;
+my $snmpoid;
+my $key;
+my $community = "public";
+my $port = 161;
+my @snmpoids;
+my $snmpbgpPeerState = '1.3.6.1.2.1.15.3.1.2';
+my $snmpbgpPeerLocalAddr = '1.3.6.1.2.1.15.3.1.5';
+my $snmpbgpPeerRemoteAddr = '1.3.6.1.2.1.15.3.1.7';
+my $snmpbgpPeerRemoteAs = '1.3.6.1.2.1.15.3.1.9';
+my $hostname;
+my $session;
+my $error;
+my $response;
+my %bgpStatus;
+my $bgpestablished =0 ;
+my $bgpcritical =0;
+my $bgpdown =0;
+my $bgpidle =0;
+my $bgpmessage;
+my $asname;
+my $remoteas;
+my @output;
+
+sub usage {
+ printf "\nMissing arguments!\n";
+ printf "\n";
+ printf "Perl bgpstate plugin for Nagios\n";
+ printf "monitors all BGP sessions\n";
+ printf "usage: \n";
+ printf "check_bgpstate.pl -c <READCOMMUNITY> -p <PORT> <HOSTNAME>\n";
+ printf "Copyright (C) 2000 Christoph Kron\n";
+ printf "check_bgpstate.pl comes with ABSOLUTELY NO WARRANTY\n";
+ printf "This programm is licensed under the terms of the ";
+ printf "GNU General Public License\n(check source code for details)\n";
+ printf "\n\n";
+ exit $ERRORS{"UNKNOWN"};
+}
+
+# Just in case of problems, let's not hang Nagios
+$SIG{'ALRM'} = sub {
+ print ("ERROR: No snmp response from $hostname (alarm)\n");
+ exit $ERRORS{"UNKNOWN"};
+};
+alarm($TIMEOUT);
+
+
+$status = GetOptions("community=s",\$community,
+ "port=i",\$port);
+if ($status == 0)
+{
+ &usage;
+}
+
+ #shift;
+ $hostname = shift || &usage;
+
+
+push(@snmpoids, $snmpbgpPeerState);
+push(@snmpoids, $snmpbgpPeerLocalAddr);
+push(@snmpoids, $snmpbgpPeerRemoteAddr);
+push(@snmpoids, $snmpbgpPeerRemoteAs);
+
+foreach $snmpoid (@snmpoids) {
+
+ ($session, $error) = Net::SNMP->session(
+ -hostname => $hostname,
+ -community => $community,
+ -port => $port
+ );
+
+ if (!defined($session)) {
+ $state='UNKNOWN';
+ $answer=$error;
+ print ("$state: $answer");
+ exit $ERRORS{$state};
+ }
+
+ if (!defined($response = $session->get_table($snmpoid))) {
+ $answer=$session->error;
+ $session->close;
+ $state = 'CRITICAL';
+ print ("$state: $answer,$snmpkey");
+ exit $ERRORS{$state};
+ }
+
+ foreach $snmpkey (keys %{$response}) {
+ $snmpkey =~ m/.*\.(\d+\.\d+\.\d+\.\d+$)/;
+ $key = $1;
+# printf "debug: $snmpkey: $key -> $response->{$snmpkey}\n";
+ $bgpStatus{$key}{$snmpoid} = $response->{$snmpkey};
+ }
+ $session->close;
+}
+
+foreach $key (keys %bgpStatus) {
+ if ($bgpStatus{$key}{$snmpbgpPeerState} == 6 ) {
+ $bgpestablished++;
+ }
+ elsif ($bgpStatus{$key}{$snmpbgpPeerState} == 1 ) {
+ $bgpidle++;
+ }
+ else {
+ $bgpdown++ ;
+ if (exists($uplinks{$bgpStatus{$key}{$snmpbgpPeerRemoteAs}}) ) {
+ $bgpcritical++;
+ }
+ @output = `$whois -T aut-num AS$bgpStatus{$key}{$snmpbgpPeerRemoteAs}`;
+
+ $asname = "";
+ foreach (@output) {
+ if (m/as-name/) {
+ $asname = $_;
+ $asname =~ s/as-name://;
+ last;
+ }
+ if ( $asname =~ "" && m/descr/ ) {
+ $asname = $_;
+ $asname =~ s/descr://;
+ }
+ }
+ $asname =~ s/^\s*//;
+ $asname =~ s/\s*$//;
+ $bgpmessage .= sprintf("Peering with AS%s not established -> %s<BR>",
+ $bgpStatus{$key}{$snmpbgpPeerRemoteAs},
+ $asname);
+ }
+}
+
+
+ if ($bgpdown > 0) {
+ if ($bgpcritical > 0) {
+ $state = 'CRITICAL';
+ }
+ else {
+ $state = 'WARNING';
+ }
+ $answer = sprintf("host '%s', sessions up: %d, down: %d, shutdown: %d<BR>",
+ $hostname,
+ $bgpestablished,
+ $bgpdown, $bgpidle);
+ $answer = $answer . $bgpmessage . "\n";
+ }
+ else {
+ $state = 'OK';
+ $answer = sprintf("host '%s', sessions up: %d, down: %d, shutdown: %d\n",
+ $hostname,
+ $bgpestablished,
+ $bgpdown,$bgpidle);
+ }
+
+print ("$state: $answer");
+exit $ERRORS{$state};
+
diff --git a/god/Monitoring/nagios/plugins/check_breeze b/god/Monitoring/nagios/plugins/check_breeze
new file mode 100755
index 00000000..d0382e69
--- /dev/null
+++ b/god/Monitoring/nagios/plugins/check_breeze
@@ -0,0 +1,87 @@
+#! /usr/bin/perl -wT
+
+
+use strict;
+use Getopt::Long;
+use vars qw($opt_V $opt_h $opt_w $opt_c $opt_H $opt_C $PROGNAME);
+use lib "/usr/lib/nagios/plugins" ;
+use utils qw(%ERRORS &print_revision &support &usage);
+
+$PROGNAME = "check_breeze";
+
+sub print_help ();
+sub print_usage ();
+
+$ENV{'PATH'}='';
+$ENV{'BASH_ENV'}='';
+$ENV{'ENV'}='';
+
+Getopt::Long::Configure('bundling');
+GetOptions
+ ("V" => \$opt_V, "version" => \$opt_V,
+ "h" => \$opt_h, "help" => \$opt_h,
+ "w=s" => \$opt_w, "warning=s" => \$opt_w,
+ "c=s" => \$opt_c, "critical=s" => \$opt_c,
+ "H=s" => \$opt_H, "hostname=s" => \$opt_H,
+ "C=s" => \$opt_C, "community=s" => \$opt_C);
+
+if ($opt_V) {
+ print_revision($PROGNAME,'1.4.15');
+ exit $ERRORS{'OK'};
+}
+
+if ($opt_h) {print_help(); exit $ERRORS{'OK'};}
+
+($opt_H) || usage("Host name/address not specified\n");
+my $host = $1 if ($opt_H =~ /([-.A-Za-z0-9]+)/);
+($host) || usage("Invalid host: $opt_H\n");
+
+($opt_w) || usage("Warning threshold not specified\n");
+my $warning = $1 if ($opt_w =~ /([0-9]{1,2}|100)+/);
+($warning) || usage("Invalid warning threshold: $opt_w\n");
+
+($opt_c) || usage("Critical threshold not specified\n");
+my $critical = $1 if ($opt_c =~ /([0-9]{1,2}|100)/);
+($critical) || usage("Invalid critical threshold: $opt_c\n");
+
+($opt_C) || ($opt_C = "public") ;
+
+my $sig=0;
+$sig = `snmpget $host $opt_C .1.3.6.1.4.1.710.3.2.3.1.3.0`;
+my @test=split(/ /,$sig);
+$sig=$test[2];
+$sig=int($sig);
+if ($sig>100){$sig=100}
+
+print "Signal Strength at: $sig%\n";
+
+exit $ERRORS{'CRITICAL'} if ($sig<$critical);
+exit $ERRORS{'WARNING'} if ($sig<$warning);
+exit $ERRORS{'OK'};
+
+
+sub print_usage () {
+ print "Usage: $PROGNAME -H <host> [-C community] -w <warn> -c <crit>\n";
+}
+
+sub print_help () {
+ print_revision($PROGNAME,'1.4.15');
+ print "Copyright (c) 2000 Jeffrey Blank/Karl DeBisschop
+
+This plugin reports the signal strength of a Breezecom wireless equipment
+
+";
+ print_usage();
+ print "
+-H, --hostname=HOST
+ Name or IP address of host to check
+-C, --community=community
+ SNMPv1 community (default public)
+-w, --warning=INTEGER
+ Percentage strength below which a WARNING status will result
+-c, --critical=INTEGER
+ Percentage strength below which a CRITICAL status will result
+
+";
+ support();
+}
diff --git a/god/Monitoring/nagios/plugins/check_btcguild_miner b/god/Monitoring/nagios/plugins/check_btcguild_miner
new file mode 100755
index 00000000..2e6a8de3
--- /dev/null
+++ b/god/Monitoring/nagios/plugins/check_btcguild_miner
@@ -0,0 +1,36 @@
+#!/usr/bin/python
+
+import sys
+from urllib2 import urlopen
+try:
+ import json
+ getattr(json,"load")
+except: #deal with it
+ import simplejson as json
+
+if len(sys.argv) != 4 :
+ print "** Usage: %s APIKEY WORKER_NAME LOW_WORKER_SPEED" % sys.argv[0]
+ print "** aka YOU ARE MADE OF STUPID"
+ exit (3)
+
+API_KEY=sys.argv[1]
+WORKER_NAME=sys.argv[2]
+LOW_WORKER_SPEED=float(sys.argv[3])
+url="http://www.btcguild.com/api.php?api_key=%s" % API_KEY
+try:
+ fh = urlopen(url)
+ result = json.load(fh)
+except Exception,e:
+ print "?? cannot parse json or connect to server: %s"% str(e)
+ exit (1)
+
+for k,v in result["workers"].iteritems():
+ if v["worker_name"] == WORKER_NAME:
+ curr = v["hash_rate"]
+ if curr < LOW_WORKER_SPEED:
+ print "!! %f is below expected %f" % (curr,LOW_WORKER_SPEED)
+ exit (2)
+ else:
+ print "++ everything fine, current speed is %f" % curr
+ exit(0)
+
diff --git a/god/Monitoring/nagios/plugins/check_by_ssh b/god/Monitoring/nagios/plugins/check_by_ssh
new file mode 100755
index 00000000..5f969058
--- /dev/null
+++ b/god/Monitoring/nagios/plugins/check_by_ssh
Binary files differ
diff --git a/god/Monitoring/nagios/plugins/check_clamd b/god/Monitoring/nagios/plugins/check_clamd
new file mode 120000
index 00000000..e838da97
--- /dev/null
+++ b/god/Monitoring/nagios/plugins/check_clamd
@@ -0,0 +1 @@
+check_tcp \ No newline at end of file
diff --git a/god/Monitoring/nagios/plugins/check_cluster b/god/Monitoring/nagios/plugins/check_cluster
new file mode 100755
index 00000000..8d6dbb90
--- /dev/null
+++ b/god/Monitoring/nagios/plugins/check_cluster
Binary files differ
diff --git a/god/Monitoring/nagios/plugins/check_cpu b/god/Monitoring/nagios/plugins/check_cpu
new file mode 100755
index 00000000..26a93da5
--- /dev/null
+++ b/god/Monitoring/nagios/plugins/check_cpu
@@ -0,0 +1,165 @@
+#!/usr/bin/python
+
+import string, os, sys, re
+#from optik import OptionParser
+from optparse import OptionParser
+
+
+
+#######################################
+### Define a set of strings to handle
+### any info output requirements.
+
+
+check_cpu_version = "check_cpu (nagios-plugins 1.5.1!?) 0.4.0a\n"
+
+intro = "The nagios plugins come with ABSOLUTELY NO WARRANTY. You may redistribute\ncopies of the plugins under the terms of the GNU General Public License.\nFor more information about these matters, see the file named COPYING.\nCopyright (c) 2004 Ethan Galstad/Karl DeBisschop\n\n"
+
+preamble = "This plugin will check the percent of idle CPU usage on the system it is\nexecuted on and generate an alert if the percentage is below\none of the threshold values.\n\n"
+
+use = "Usage:\tcheck_cpu -w limit -c limit [-t timeout]\n\tcheck_cpu (-h|--help)\n\tcheck_cpu (-V|--version)\n"
+
+options = "\n -w, --warning=PERCENT\n\tExit with WARNING status if idle CPU percentage is less than PERCENT\n -c, --critical=PERCENT\n\tExit with CRITICAL status if idle CPU percentage is less than PERCENT\n -t, --timeout=INTEGER\n\tSeconds before check attempt times out (default: 10)\n -s, --sample=INTEGER\n\tSeconds to use as sample time. (default: 5)\n -h, --help\n\tPrint detailed help screen\n -V, --version\n\tPrint version information\n\n"
+
+bugs = "Bugs:\tTimeout does not do what has been documented here. Rather, it does \nnothing. The plugin seems to ignore characters that are not attached to \nparameter syntax. This has been tested on RedHat 8.0+, Fedora Core 1 & 2, \nOpenBSD 3.x and Debian. I would appreciate feedback and/or patches if it doesn't\nfunction under your chosen operating system.\n\n"
+
+query = "Send email to nagios-users@lists.sourceforge.net if you have questions\nregarding the use of this software. To submit patches or suggest improvements,\nsend email to nagiosplug-devel@lists.sourceforge.net.\n\nFor questions and suggestions pertaining to the check_cpu plugin,\nplease send email to nemir@hotmail.com.\n"
+
+fullHelp = check_cpu_version + intro + preamble + use + options + bugs + query
+
+
+
+
+
+def helpFunc(option, opt, value, parser):
+ print fullHelp
+ sys.exit(3)
+
+def verFunc(option, opt, value, parser):
+ print check_cpu_version
+ sys.exit(3)
+
+
+
+
+#######################################
+### Parse all the parameters. Define
+### variables for later use.
+
+
+
+parser = OptionParser(add_help_option=0)
+
+parser.add_option("-h", "--help", action="callback", callback=helpFunc)
+parser.add_option("-V", "--version", action="callback", callback=verFunc)
+parser.add_option("-w", "--warning", action="store", type="int", dest="warn", default=-1)
+parser.add_option("-c", "--critical", action="store", type="int", dest="crit", default=-2)
+parser.add_option("-s", "--sample", action="store", type="int", dest="sample", default=5)
+parser.add_option("-t", "--timeout", action="store", type="int", dest="timeout", default=10)
+
+(options, args) = parser.parse_args()
+
+critical = options.crit
+warning = options.warn
+sample = options.sample
+timeout = options.timeout
+
+
+if -3 > critical or 101 < critical:
+ print "Critical value is a percentage and must be between 0 and 100.\n" + use
+ sys.exit(3)
+
+if -2 > warning or 101 < warning:
+ print "Warning value is a percentage and must be between 0 and 100.\n" + use
+ sys.exit(3)
+
+if critical >= warning:
+ print "Critical value must be less than the warning value.\n" + use
+ sys.exit(3)
+
+if sample >= timeout -1:
+ print "Sample time must be 2 seconds less than timeout.\n" + use
+ sys.exit(3)
+
+strSample = str(sample)
+
+
+#######################################
+### Determine what OS we are being run
+### on, to figure syntax required.
+
+
+v = os.popen("uname", "r")
+l = v.read()
+
+if l == "Linux\n":
+ vmcmd = "/usr/bin/vmstat " + strSample + " 2"
+elif l == "OpenBSD\n":
+ vmcmd = "/usr/bin/vmstat -c 2 -w " + strSample
+elif l == "FreeBSD\n":
+ vmcmd = "/usr/bin/vmstat -c 2 -w " + strSample
+elif l == "NetBSD\n":
+ vmcmd = "/usr/bin/vmstat -c 2 -w " + strSample
+elif l == "SunOS\n":
+ vmcmd = "/usr/bin/vmstat " + strSample + " 2"
+else:
+ print "Unknown operating system, unable to continue.\n"
+ sys.exit(3)
+
+
+#######################################
+### Grab the CPU sample and convert the
+### the relevent info to an int.
+
+
+vmstat = os.popen( vmcmd, "r" )
+statOut = vmstat.read()
+
+
+statLines = string.split( statOut, '\n')
+lastLine = statLines[-2].strip()
+
+n = len(statLines)
+for i in range(0, n):
+ idcheck = re.search("id", statLines[i])
+ if idcheck:
+ idLine = statLines[i].strip()
+
+
+
+idStr = re.sub( "[ \t\n\r\v]+", " ", idLine )
+idList = string.split(idStr, " ")
+idColumn = idList.index("id")
+
+valueStr = re.sub( "[ \t\n\r\v]+", " ", lastLine )
+values = string.split( valueStr, ' ')
+
+idleCPU = values[idColumn]
+sysCPU = values[-2]
+userCPU = values[-3]
+
+idleValue = string.atoi(idleCPU)
+
+
+#######################################
+### Finally, determine and report CPU
+### state, and exit the plugin.
+
+
+if idleValue <= critical:
+ status = "CPU CRITICAL"
+ print status + ": CPU is only " + idleCPU + "% idle"
+ sys.exit(2)
+elif idleValue <= warning:
+ status = "WARNING"
+ print status + ": CPU is only " + idleCPU + "% idle"
+ sys.exit(1)
+elif warning < idleValue:
+ status = "OK"
+ print status + ": CPU is " + idleCPU + "% idle"
+ sys.exit(0)
+else:
+ status = "CPU STATUS UNKNOWN"
+ print status + ": Could not complete check."
+ sys.exit(3)
+
diff --git a/god/Monitoring/nagios/plugins/check_dhcp b/god/Monitoring/nagios/plugins/check_dhcp
new file mode 100755
index 00000000..6b51224f
--- /dev/null
+++ b/god/Monitoring/nagios/plugins/check_dhcp
Binary files differ
diff --git a/god/Monitoring/nagios/plugins/check_dig b/god/Monitoring/nagios/plugins/check_dig
new file mode 100755
index 00000000..650608dc
--- /dev/null
+++ b/god/Monitoring/nagios/plugins/check_dig
Binary files differ
diff --git a/god/Monitoring/nagios/plugins/check_disk b/god/Monitoring/nagios/plugins/check_disk
new file mode 100755
index 00000000..43dc43a3
--- /dev/null
+++ b/god/Monitoring/nagios/plugins/check_disk
Binary files differ
diff --git a/god/Monitoring/nagios/plugins/check_disk_smb b/god/Monitoring/nagios/plugins/check_disk_smb
new file mode 100755
index 00000000..80fa6779
--- /dev/null
+++ b/god/Monitoring/nagios/plugins/check_disk_smb
@@ -0,0 +1,307 @@
+#! /usr/bin/perl -w
+#
+#
+# check_disk.pl <host> <share> <user> <pass> [warn] [critical] [port]
+#
+# Nagios host script to get the disk usage from a SMB share
+#
+# Changes and Modifications
+# =========================
+# 7-Aug-1999 - Michael Anthon
+# Created from check_disk.pl script provided with netsaint_statd (basically
+# cause I was too lazy (or is that smart?) to write it from scratch)
+# 8-Aug-1999 - Michael Anthon
+# Modified [warn] and [critical] parameters to accept format of nnn[M|G] to
+# allow setting of limits in MBytes or GBytes. Percentage settings for large
+# drives is a pain in the butt
+# 2-May-2002 - SGhosh fix for embedded perl
+#
+#
+
+require 5.004;
+use POSIX;
+use strict;
+use Getopt::Long;
+use vars qw($opt_P $opt_V $opt_h $opt_H $opt_s $opt_W $opt_u $opt_p $opt_w $opt_c $opt_a $verbose);
+use vars qw($PROGNAME);
+use lib "/usr/lib/nagios/plugins" ;
+use utils qw($TIMEOUT %ERRORS &print_revision &support &usage);
+
+sub print_help ();
+sub print_usage ();
+
+$PROGNAME = "check_disk_smb";
+
+$ENV{'PATH'}='';
+$ENV{'BASH_ENV'}='';
+$ENV{'ENV'}='';
+
+Getopt::Long::Configure('bundling');
+GetOptions
+ ("v" => \$verbose, "verbose" => \$verbose,
+ "P=s" => \$opt_P, "port=s" => \$opt_P,
+ "V" => \$opt_V, "version" => \$opt_V,
+ "h" => \$opt_h, "help" => \$opt_h,
+ "w=s" => \$opt_w, "warning=s" => \$opt_w,
+ "c=s" => \$opt_c, "critical=s" => \$opt_c,
+ "p=s" => \$opt_p, "password=s" => \$opt_p,
+ "u=s" => \$opt_u, "username=s" => \$opt_u,
+ "s=s" => \$opt_s, "share=s" => \$opt_s,
+ "W=s" => \$opt_W, "workgroup=s" => \$opt_W,
+ "H=s" => \$opt_H, "hostname=s" => \$opt_H,
+ "a=s" => \$opt_a, "address=s" => \$opt_a);
+
+if ($opt_V) {
+ print_revision($PROGNAME,'1.4.15'); #'
+ exit $ERRORS{'OK'};
+}
+
+if ($opt_h) {print_help(); exit $ERRORS{'OK'};}
+
+my $smbclient = $utils::PATH_TO_SMBCLIENT;
+
+# Options checking
+
+($opt_H) || ($opt_H = shift @ARGV) || usage("Host name not specified\n");
+my $host = $1 if ($opt_H =~ /^([-_.A-Za-z0-9 ]+\$?)$/);
+($host) || usage("Invalid host: $opt_H\n");
+
+($opt_s) || ($opt_s = shift @ARGV) || usage("Share volume not specified\n");
+my $share = $1 if ($opt_s =~ /^([-_.A-Za-z0-9 ]+\$?)$/);
+($share) || usage("Invalid share: $opt_s\n");
+
+defined($opt_u) || ($opt_u = shift @ARGV) || ($opt_u = "guest");
+my $user = $1 if ($opt_u =~ /^([-_.A-Za-z0-9\\]*)$/);
+defined($user) || usage("Invalid user: $opt_u\n");
+
+defined($opt_p) || ($opt_p = shift @ARGV) || ($opt_p = "");
+my $pass = $1 if ($opt_p =~ /(.*)/);
+
+($opt_w) || ($opt_w = shift @ARGV) || ($opt_w = 85);
+my $warn = $1 if ($opt_w =~ /^([0-9]{1,2}\%?|100\%?|[0-9]+[kMG])$/);
+($warn) || usage("Invalid warning threshold: $opt_w\n");
+
+($opt_c) || ($opt_c = shift @ARGV) || ($opt_c = 95);
+my $crit = $1 if ($opt_c =~ /^([0-9]{1,2}\%?|100\%?|[0-9]+[kMG])$/);
+($crit) || usage("Invalid critical threshold: $opt_c\n");
+
+# Execute the given command line and return anything it writes to STDOUT and/or
+# STDERR. (This might be useful for other plugins, too, so it should possibly
+# be moved to utils.pm.)
+sub output_and_error_of {
+ local *CMD;
+ local $/ = undef;
+ my $pid = open CMD, "-|";
+ if (defined($pid)) {
+ if ($pid) {
+ return <CMD>;
+ } else {
+ open STDERR, ">&STDOUT" and exec @_;
+ exit(1);
+ }
+ }
+ return undef;
+}
+
+# split the type from the unit value
+#Check $warn and $crit for type (%/M/G) and set up for tests
+#P = Percent, K = KBytes
+my $warn_type;
+my $crit_type;
+
+if ($opt_w =~ /^([0-9]+)\%?$/) {
+ $warn = "$1";
+ $warn_type = "P";
+} elsif ($opt_w =~ /^([0-9]+)k$/) {
+ $warn_type = "K";
+ $warn = $1;
+} elsif ($opt_w =~ /^([0-9]+)M$/) {
+ $warn_type = "K";
+ $warn = $1 * 1024;
+} elsif ($opt_w =~ /^([0-9]+)G$/) {
+ $warn_type = "K";
+ $warn = $1 * 1048576;
+}
+if ($opt_c =~ /^([0-9]+)\%?$/) {
+ $crit = "$1";
+ $crit_type = "P";
+} elsif ($opt_c =~ /^([0-9]+)k$/) {
+ $crit_type = "K";
+ $crit = $1;
+} elsif ($opt_c =~ /^([0-9]+)M$/) {
+ $crit_type = "K";
+ $crit = $1 * 1024;
+} elsif ($opt_c =~ /^([0-9]+)G$/) {
+ $crit_type = "K";
+ $crit = $1 * 1048576;
+}
+
+# check if both warning and critical are percentage or size
+unless( ( $warn_type eq "P" && $crit_type eq "P" ) || ( $warn_type ne "P" && $crit_type ne "P" ) ){
+ $opt_w =~ s/\%/\%\%/g;
+ $opt_c =~ s/\%/\%\%/g;
+ usage("Both warning and critical should be same type- warning: $opt_w critical: $opt_c \n");
+}
+
+# verify warning is less than critical
+if ( $warn_type eq "K") {
+ unless ( $warn > $crit) {
+ usage("Disk size: warning ($opt_w) should be greater than critical ($opt_c) \n");
+ }
+}else{
+ unless ( $warn < $crit) {
+ $opt_w =~ s/\%/\%\%/g;
+ $opt_c =~ s/\%/\%\%/g;
+ usage("Percentage: warning ($opt_w) should be less than critical ($opt_c) \n");
+ }
+}
+
+my $workgroup = $1 if (defined($opt_W) && $opt_W =~ /(.*)/);
+
+my $address = $1 if (defined($opt_a) && $opt_a =~ /(.*)/);
+
+# end of options checking
+
+
+my $state = "OK";
+my $answer = undef;
+my $res = undef;
+my @lines = undef;
+
+# Just in case of problems, let's not hang Nagios
+$SIG{'ALRM'} = sub {
+ print "No Answer from Client\n";
+ exit $ERRORS{"UNKNOWN"};
+};
+alarm($TIMEOUT);
+
+# Execute an "ls" on the share using smbclient program
+# get the results into $res
+my @cmd = (
+ $smbclient,
+ "//$host/$share",
+ "-U", "$user%$pass",
+ defined($workgroup) ? ("-W", $workgroup) : (),
+ defined($address) ? ("-I", $address) : (),
+ defined($opt_P) ? ("-p", $opt_P) : (),
+ "-c", "ls"
+);
+
+print join(" ", @cmd) . "\n" if ($verbose);
+$res = output_and_error_of(@cmd) or exit $ERRORS{"UNKNOWN"};
+
+#Turn off alarm
+alarm(0);
+
+#Split $res into an array of lines
+@lines = split /\n/, $res;
+
+#Get the last line into $_
+$_ = $lines[$#lines];
+#print "$_\n";
+
+#Process the last line to get free space.
+#If line does not match required regexp, return an UNKNOWN error
+if (/\s*(\d*) blocks of size (\d*)\. (\d*) blocks available/) {
+
+ my ($avail) = ($3*$2)/1024;
+ my ($avail_bytes) = $avail;
+ my ($capper) = int(($3/$1)*100);
+ my ($mountpt) = "\\\\$host\\$share";
+
+
+ if (int($avail / 1024) > 0) {
+ $avail = int($avail / 1024);
+ if (int($avail /1024) > 0) {
+ $avail = (int(($avail / 1024)*100))/100;
+ $avail = $avail ."G";
+ } else {
+ $avail = $avail ."M";
+ }
+ } else {
+ $avail = $avail ."K";
+ }
+
+#print ":$warn:$warn_type:\n";
+#print ":$crit:$crit_type:\n";
+#print ":$avail:$avail_bytes:$capper:$mountpt:\n";
+
+ if ((($warn_type eq "P") && (100 - $capper) < $warn) || (($warn_type eq "K") && ($avail_bytes > $warn))) {
+ $answer = "Disk ok - $avail ($capper%) free on $mountpt\n";
+ } elsif ((($crit_type eq "P") && (100 - $capper) < $crit) || (($crit_type eq "K") && ($avail_bytes > $crit))) {
+ $state = "WARNING";
+ $answer = "WARNING: Only $avail ($capper%) free on $mountpt\n";
+ } else {
+ $state = "CRITICAL";
+ $answer = "CRITICAL: Only $avail ($capper%) free on $mountpt\n";
+ }
+} else {
+ $answer = "Result from smbclient not suitable\n";
+ $state = "UNKNOWN";
+ foreach (@lines) {
+ if (/(Access denied|NT_STATUS_LOGON_FAILURE|NT_STATUS_ACCESS_DENIED)/) {
+ $answer = "Access Denied\n";
+ $state = "CRITICAL";
+ last;
+ }
+ if (/(Unknown host \w*|Connection.*failed)/) {
+ $answer = "$1\n";
+ $state = "CRITICAL";
+ last;
+ }
+ if (/(You specified an invalid share name|NT_STATUS_BAD_NETWORK_NAME)/) {
+ $answer = "Invalid share name \\\\$host\\$share\n";
+ $state = "CRITICAL";
+ last;
+ }
+ }
+}
+
+
+print $answer;
+print "$state\n" if ($verbose);
+exit $ERRORS{$state};
+
+sub print_usage () {
+ print "Usage: $PROGNAME -H <host> -s <share> -u <user> -p <password>
+ -w <warn> -c <crit> [-W <workgroup>] [-P <port>] [-a <IP>]\n";
+}
+
+sub print_help () {
+ print_revision($PROGNAME,'1.4.15');
+ print "Copyright (c) 2000 Michael Anthon/Karl DeBisschop
+
+Perl Check SMB Disk plugin for Nagios
+
+";
+ print_usage();
+ print "
+-H, --hostname=HOST
+ NetBIOS name of the server
+-s, --share=STRING
+ Share name to be tested
+-W, --workgroup=STRING
+ Workgroup or Domain used (Defaults to \"WORKGROUP\")
+-a, --address=IP
+ IP-address of HOST (only necessary if HOST is in another network)
+-u, --user=STRING
+ Username to log in to server. (Defaults to \"guest\")
+-p, --password=STRING
+ Password to log in to server. (Defaults to an empty password)
+-w, --warning=INTEGER or INTEGER[kMG]
+ Percent of used space at which a warning will be generated (Default: 85%)
+
+-c, --critical=INTEGER or INTEGER[kMG]
+ Percent of used space at which a critical will be generated (Defaults: 95%)
+-P, --port=INTEGER
+ Port to be used to connect to. Some Windows boxes use 139, others 445 (Defaults to smbclient default)
+
+ If thresholds are followed by either a k, M, or G then check to see if that
+ much disk space is available (kilobytes, Megabytes, Gigabytes)
+
+ Warning percentage should be less than critical
+ Warning (remaining) disk space should be greater than critical.
+
+";
+ support();
+}
diff --git a/god/Monitoring/nagios/plugins/check_dns b/god/Monitoring/nagios/plugins/check_dns
new file mode 100755
index 00000000..8a80b991
--- /dev/null
+++ b/god/Monitoring/nagios/plugins/check_dns
Binary files differ
diff --git a/god/Monitoring/nagios/plugins/check_dummy b/god/Monitoring/nagios/plugins/check_dummy
new file mode 100755
index 00000000..b66006ac
--- /dev/null
+++ b/god/Monitoring/nagios/plugins/check_dummy
Binary files differ
diff --git a/god/Monitoring/nagios/plugins/check_dummy.sh b/god/Monitoring/nagios/plugins/check_dummy.sh
new file mode 100755
index 00000000..fe834bd0
--- /dev/null
+++ b/god/Monitoring/nagios/plugins/check_dummy.sh
@@ -0,0 +1,5 @@
+#!/bin/sh
+
+echo "Return in Dummy" $1
+
+exit $1 \ No newline at end of file
diff --git a/god/Monitoring/nagios/plugins/check_file_age b/god/Monitoring/nagios/plugins/check_file_age
new file mode 100755
index 00000000..7f20bad7
--- /dev/null
+++ b/god/Monitoring/nagios/plugins/check_file_age
@@ -0,0 +1,112 @@
+#! /usr/bin/perl -w
+
+# check_file_age.pl Copyright (C) 2003 Steven Grimm <koreth-nagios@midwinter.com>
+#
+# Checks a file's size and modification time to make sure it's not empty
+# and that it's sufficiently recent.
+#
+#
+# This program is free software; you can redistribute it and/or
+# modify it under the terms of the GNU General Public License
+# as published by the Free Software Foundation; either version 2
+# of the License, or (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty
+# of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# you should have received a copy of the GNU General Public License
+# along with this program (or with Nagios); if not, write to the
+# Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+# Boston, MA 02111-1307, USA
+
+use strict;
+use English;
+use Getopt::Long;
+use File::stat;
+use vars qw($PROGNAME);
+use lib "/usr/lib/nagios/plugins";
+use utils qw (%ERRORS &print_revision &support);
+
+sub print_help ();
+sub print_usage ();
+
+my ($opt_c, $opt_f, $opt_w, $opt_C, $opt_W, $opt_h, $opt_V);
+my ($result, $message, $age, $size, $st);
+
+$PROGNAME="check_file_age";
+
+$opt_w = 240;
+$opt_c = 600;
+$opt_W = 0;
+$opt_C = 0;
+$opt_f = "";
+
+Getopt::Long::Configure('bundling');
+GetOptions(
+ "V" => \$opt_V, "version" => \$opt_V,
+ "h" => \$opt_h, "help" => \$opt_h,
+ "f=s" => \$opt_f, "file" => \$opt_f,
+ "w=f" => \$opt_w, "warning-age=f" => \$opt_w,
+ "W=f" => \$opt_W, "warning-size=f" => \$opt_W,
+ "c=f" => \$opt_c, "critical-age=f" => \$opt_c,
+ "C=f" => \$opt_C, "critical-size=f" => \$opt_C);
+
+if ($opt_V) {
+ print_revision($PROGNAME, '1.4.15');
+ exit $ERRORS{'OK'};
+}
+
+if ($opt_h) {
+ print_help();
+ exit $ERRORS{'OK'};
+}
+
+$opt_f = shift unless ($opt_f);
+
+if (! $opt_f) {
+ print "FILE_AGE UNKNOWN: No file specified\n";
+ exit $ERRORS{'UNKNOWN'};
+}
+
+# Check that file exists (can be directory or link)
+unless (-e $opt_f) {
+ print "FILE_AGE CRITICAL: File not found - $opt_f\n";
+ exit $ERRORS{'CRITICAL'};
+}
+
+$st = File::stat::stat($opt_f);
+$age = time - $st->mtime;
+$size = $st->size;
+
+
+$result = 'OK';
+
+if (($opt_c and $age > $opt_c) or ($opt_C and $size < $opt_C)) {
+ $result = 'CRITICAL';
+}
+elsif (($opt_w and $age > $opt_w) or ($opt_W and $size < $opt_W)) {
+ $result = 'WARNING';
+}
+
+print "FILE_AGE $result: $opt_f is $age seconds old and $size bytes\n";
+exit $ERRORS{$result};
+
+sub print_usage () {
+ print "Usage:\n";
+ print " $PROGNAME [-w <secs>] [-c <secs>] [-W <size>] [-C <size>] -f <file>\n";
+ print " $PROGNAME [-h | --help]\n";
+ print " $PROGNAME [-V | --version]\n";
+}
+
+sub print_help () {
+ print_revision($PROGNAME, '1.4.15');
+ print "Copyright (c) 2003 Steven Grimm\n\n";
+ print_usage();
+ print "\n";
+ print " <secs> File must be no more than this many seconds old (default: warn 240 secs, crit 600)\n";
+ print " <size> File must be at least this many bytes long (default: crit 0 bytes)\n";
+ print "\n";
+ support();
+}
diff --git a/god/Monitoring/nagios/plugins/check_flexlm b/god/Monitoring/nagios/plugins/check_flexlm
new file mode 100755
index 00000000..532785ef
--- /dev/null
+++ b/god/Monitoring/nagios/plugins/check_flexlm
@@ -0,0 +1,244 @@
+#! /usr/bin/perl -w
+#
+# usage:
+# check_flexlm.pl license_file
+#
+# Check available flexlm license managers.
+# Use lmstat to check the status of the license server
+# described by the license file given as argument.
+# Check and interpret the output of lmstat
+# and create returncodes and output.
+#
+# Contrary to the nagios concept, this script takes
+# a file, not a hostname as an argument and returns
+# the status of hosts and services described in that
+# file. Use these hosts.cfg entries as an example
+#
+#host[anchor]=any host will do;some.address.com;;check-host-alive;3;120;24x7;1;1;1;
+#service[anchor]=yodel;24x7;3;5;5;unix-admin;60;24x7;1;1;1;;check_flexlm!/opt/lic/licfiles/yodel_lic
+#service[anchor]=yeehaw;24x7;3;5;5;unix-admin;60;24x7;1;1;1;;check_flexlm!/opt/lic/licfiles/yeehaw_lic
+#command[check_flexlm]=/some/path/libexec/check_flexlm.pl $ARG1$
+#
+# Notes:
+# - you need the lmstat utility which comes with flexlm.
+# - set the correct path in the variable $lmstat.
+#
+# initial version: 9-10-99 Ernst-Dieter Martin edmt@infineon.com
+#
+# License: GPL
+#
+# lmstat output patches from Steve Rigler/Cliff Rice 13-Apr-2002
+# srigler@marathonoil.com,cerice@marathonoil.com
+
+
+
+use strict;
+use Getopt::Long;
+use vars qw($opt_V $opt_h $opt_F $opt_t $verbose $PROGNAME);
+use lib "/usr/lib/nagios/plugins";
+use utils qw(%ERRORS &print_revision &support &usage);
+
+$PROGNAME="check_flexlm";
+
+sub print_help ();
+sub print_usage ();
+
+$ENV{'PATH'}='';
+$ENV{'BASH_ENV'}='';
+$ENV{'ENV'}='';
+
+Getopt::Long::Configure('bundling');
+GetOptions
+ ("V" => \$opt_V, "version" => \$opt_V,
+ "h" => \$opt_h, "help" => \$opt_h,
+ "v" => \$verbose, "verbose" => \$verbose,
+ "F=s" => \$opt_F, "filename=s" => \$opt_F,
+ "t=i" => \$opt_t, "timeout=i" => \$opt_t);
+
+if ($opt_V) {
+ print_revision($PROGNAME,'1.4.15');
+ exit $ERRORS{'OK'};
+}
+
+unless (defined $opt_t) {
+ $opt_t = $utils::TIMEOUT ; # default timeout
+}
+
+
+if ($opt_h) {print_help(); exit $ERRORS{'OK'};}
+
+unless (defined $opt_F) {
+ print "Missing license.dat file\n";
+ print_usage();
+ exit $ERRORS{'UNKNOWN'};
+}
+# Just in case of problems, let's not hang Nagios
+$SIG{'ALRM'} = sub {
+ print "Timeout: No Answer from Client\n";
+ exit $ERRORS{'UNKNOWN'};
+};
+alarm($opt_t);
+
+my $lmstat = $utils::PATH_TO_LMSTAT ;
+unless (-x $lmstat ) {
+ print "Cannot find \"lmstat\"\n";
+ exit $ERRORS{'UNKNOWN'};
+}
+
+($opt_F) || ($opt_F = shift) || usage("License file not specified\n");
+my $licfile = $1 if ($opt_F =~ /^(.*)$/);
+($licfile) || usage("Invalid filename: $opt_F\n");
+
+print "$licfile\n" if $verbose;
+
+if ( ! open(CMD,"$lmstat -c $licfile |") ) {
+ print "ERROR: Could not open \"$lmstat -c $licfile\" ($!)\n";
+ exit exit $ERRORS{'UNKNOWN'};
+}
+
+my $serverup = 0;
+my @upsrv;
+my @downsrv; # list of servers up and down
+
+#my ($ls1,$ls2,$ls3,$lf1,$lf2,$lf3,$servers);
+
+# key off of the term "license server" and
+# grab the status. Keep going until "Vendor" is found
+#
+
+#
+# Collect list of license servers by their status
+# Vendor daemon status is ignored for the moment.
+
+while ( <CMD> ) {
+ next if (/^lmstat/); # ignore 1st line - copyright
+ next if (/^Flexible/); # ignore 2nd line - timestamp
+ (/^Vendor/) && last; # ignore Vendor daemon status
+ print $_ if $verbose;
+
+ if ($_ =~ /license server /) { # matched 1 (of possibly 3) license server
+ s/^\s*//; #some servers start at col 1, other have whitespace
+ # strip staring whitespace if any
+ if ( $_ =~ /UP/) {
+ $_ =~ /^(.*):/ ;
+ push(@upsrv, $1);
+ print "up:$1:\n" if $verbose;
+ } else {
+ $_ =~ /^(.*):/;
+ push(@downsrv, $1);
+ print "down:$1:\n" if $verbose;
+ }
+
+ }
+
+
+# if ( /^License server status: [0-9]*@([-0-9a-zA-Z_]*),[0-9]*@([-0-9a-zA-Z_]*),[0-9]*@([-0-9a-zA-Z_]*)/ ) {
+# $ls1 = $1;
+# $ls2 = $2;
+# $ls3 = $3;
+# $lf1 = $lf2 = $lf3 = 0;
+# $servers = 3;
+# } elsif ( /^License server status: [0-9]*@([-0-9a-zA-Z_]*)/ ) {
+# $ls1 = $1;
+# $ls2 = $ls3 = "";
+# $lf1 = $lf2 = $lf3 = 0;
+# $servers = 1;
+# } elsif ( / *$ls1: license server UP/ ) {
+# print "$ls1 UP, ";
+# $lf1 = 1
+# } elsif ( / *$ls2: license server UP/ ) {
+# print "$ls2 UP, ";
+# $lf2 = 1
+# } elsif ( / *$ls3: license server UP/ ) {
+# print "$ls3 UP, ";
+# $lf3 = 1
+# } elsif ( / *([^:]*: UP .*)/ ) {
+# print " license server for $1\n";
+# $serverup = 1;
+# }
+
+}
+
+#if ( $serverup == 0 ) {
+# print " license server not running\n";
+# exit 2;
+#}
+
+close CMD;
+
+if ($verbose) {
+ print "License Servers running: ".scalar(@upsrv) ."\n";
+ foreach my $upserver (@upsrv) {
+ print "$upserver\n";
+ }
+ print "License servers not running: ".scalar(@downsrv)."\n";
+ foreach my $downserver (@downsrv) {
+ print "$downserver\n";
+ }
+}
+
+#
+# print list of servers which are up.
+#
+if (scalar(@upsrv) > 0) {
+ print "License Servers running:";
+ foreach my $upserver (@upsrv) {
+ print "$upserver,";
+ }
+}
+#
+# Ditto for those which are down.
+#
+if (scalar(@downsrv) > 0) {
+ print "License servers NOT running:";
+ foreach my $downserver (@downsrv) {
+ print "$downserver,";
+ }
+}
+
+# perfdata
+print "\n|flexlm::up:".scalar(@upsrv).";down:".scalar(@downsrv)."\n";
+
+exit $ERRORS{'OK'} if ( scalar(@downsrv) == 0 );
+exit $ERRORS{'WARNING'} if ( (scalar(@upsrv) > 0) && (scalar(@downsrv) > 0));
+
+#exit $ERRORS{'OK'} if ( $servers == $lf1 + $lf2 + $lf3 );
+#exit $ERRORS{'WARNING'} if ( $servers == 3 && $lf1 + $lf2 + $lf3 == 2 );
+exit $ERRORS{'CRITICAL'};
+
+
+sub print_usage () {
+ print "Usage:
+ $PROGNAME -F <filename> [-v] [-t] [-V] [-h]
+ $PROGNAME --help
+ $PROGNAME --version
+";
+}
+
+sub print_help () {
+ print_revision($PROGNAME,'1.4.15');
+ print "Copyright (c) 2000 Ernst-Dieter Martin/Karl DeBisschop
+
+Check available flexlm license managers
+
+";
+ print_usage();
+ print "
+-F, --filename=FILE
+ Name of license file (usually \"license.dat\")
+-v, --verbose
+ Print some extra debugging information (not advised for normal operation)
+-t, --timeout
+ Plugin time out in seconds (default = $utils::TIMEOUT )
+-V, --version
+ Show version and license information
+-h, --help
+ Show this help screen
+
+Flexlm license managers usually run as a single server or three servers and a
+quorum is needed. The plugin return OK if 1 (single) or 3 (triple) servers
+are running, CRITICAL if 1(single) or 3 (triple) servers are down, and WARNING
+if 1 or 2 of 3 servers are running\n
+";
+ support();
+}
diff --git a/god/Monitoring/nagios/plugins/check_fping b/god/Monitoring/nagios/plugins/check_fping
new file mode 100755
index 00000000..3d2b16f9
--- /dev/null
+++ b/god/Monitoring/nagios/plugins/check_fping
Binary files differ
diff --git a/god/Monitoring/nagios/plugins/check_ftp b/god/Monitoring/nagios/plugins/check_ftp
new file mode 120000
index 00000000..e838da97
--- /dev/null
+++ b/god/Monitoring/nagios/plugins/check_ftp
@@ -0,0 +1 @@
+check_tcp \ No newline at end of file
diff --git a/god/Monitoring/nagios/plugins/check_game b/god/Monitoring/nagios/plugins/check_game
new file mode 100755
index 00000000..68c4bda4
--- /dev/null
+++ b/god/Monitoring/nagios/plugins/check_game
Binary files differ
diff --git a/god/Monitoring/nagios/plugins/check_host b/god/Monitoring/nagios/plugins/check_host
new file mode 120000
index 00000000..97878096
--- /dev/null
+++ b/god/Monitoring/nagios/plugins/check_host
@@ -0,0 +1 @@
+check_icmp \ No newline at end of file
diff --git a/god/Monitoring/nagios/plugins/check_hpjd b/god/Monitoring/nagios/plugins/check_hpjd
new file mode 100755
index 00000000..75af60de
--- /dev/null
+++ b/god/Monitoring/nagios/plugins/check_hpjd
Binary files differ
diff --git a/god/Monitoring/nagios/plugins/check_http b/god/Monitoring/nagios/plugins/check_http
new file mode 100755
index 00000000..2143dc6e
--- /dev/null
+++ b/god/Monitoring/nagios/plugins/check_http
Binary files differ
diff --git a/god/Monitoring/nagios/plugins/check_icmp b/god/Monitoring/nagios/plugins/check_icmp
new file mode 100755
index 00000000..3e43c4d6
--- /dev/null
+++ b/god/Monitoring/nagios/plugins/check_icmp
Binary files differ
diff --git a/god/Monitoring/nagios/plugins/check_ide_smart b/god/Monitoring/nagios/plugins/check_ide_smart
new file mode 100755
index 00000000..e52727f4
--- /dev/null
+++ b/god/Monitoring/nagios/plugins/check_ide_smart
Binary files differ
diff --git a/god/Monitoring/nagios/plugins/check_ifoperstatus b/god/Monitoring/nagios/plugins/check_ifoperstatus
new file mode 100755
index 00000000..23b25d5d
--- /dev/null
+++ b/god/Monitoring/nagios/plugins/check_ifoperstatus
@@ -0,0 +1,472 @@
+#! /usr/bin/perl -w
+#
+# check_ifoperstatus.pl - nagios plugin
+#
+# Copyright (C) 2000 Christoph Kron,
+# Modified 5/2002 to conform to updated Nagios Plugin Guidelines
+# Added support for named interfaces per Valdimir Ivaschenko (S. Ghosh)
+# Added SNMPv3 support (10/2003)
+#
+# This program is free software; you can redistribute it and/or
+# modify it under the terms of the GNU General Public License
+# as published by the Free Software Foundation; either version 2
+# of the License, or (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+#
+#
+# Report bugs to: nagiosplug-help@lists.sourceforge.net
+#
+# 11.01.2000 Version 1.0
+#
+# Patches from Guy Van Den Bergh to warn on ifadminstatus down interfaces
+# instead of critical.
+#
+# Primary MIB reference - RFC 2863
+
+
+use POSIX;
+use strict;
+use lib "/usr/lib/nagios/plugins" ;
+use utils qw($TIMEOUT %ERRORS &print_revision &support);
+
+use Net::SNMP;
+use Getopt::Long;
+&Getopt::Long::config('bundling');
+
+my $PROGNAME = "check_ifoperstatus";
+sub print_help ();
+sub usage ($);
+sub print_usage ();
+sub process_arguments ();
+
+my $timeout;
+my $status;
+my %ifOperStatus = ('1','up',
+ '2','down',
+ '3','testing',
+ '4','unknown',
+ '5','dormant',
+ '6','notPresent',
+ '7','lowerLayerDown'); # down due to the state of lower layer interface(s)
+
+my $state = "UNKNOWN";
+my $answer = "";
+my $snmpkey = 0;
+my $community = "public";
+my $maxmsgsize = 1472 ; # Net::SNMP default is 1472
+my ($seclevel, $authproto, $secname, $authpass, $privpass, $privproto, $auth, $priv, $context);
+my $port = 161;
+my @snmpoids;
+my $sysUptime = '1.3.6.1.2.1.1.3.0';
+my $snmpIfDescr = '1.3.6.1.2.1.2.2.1.2';
+my $snmpIfType = '1.3.6.1.2.1.2.2.1.3';
+my $snmpIfAdminStatus = '1.3.6.1.2.1.2.2.1.7';
+my $snmpIfOperStatus = '1.3.6.1.2.1.2.2.1.8';
+my $snmpIfName = '1.3.6.1.2.1.31.1.1.1.1';
+my $snmpIfLastChange = '1.3.6.1.2.1.2.2.1.9';
+my $snmpIfAlias = '1.3.6.1.2.1.31.1.1.1.18';
+my $snmpLocIfDescr = '1.3.6.1.4.1.9.2.2.1.1.28';
+my $hostname;
+my $ifName;
+my $session;
+my $error;
+my $response;
+my $snmp_version = 1 ;
+my $ifXTable;
+my $opt_h ;
+my $opt_V ;
+my $ifdescr;
+my $iftype;
+my $key;
+my $lastc;
+my $dormantWarn;
+my $adminWarn;
+my $name;
+my %session_opts;
+
+### Validate Arguments
+
+$status = process_arguments();
+
+
+# Just in case of problems, let's not hang Nagios
+$SIG{'ALRM'} = sub {
+ print ("ERROR: No snmp response from $hostname (alarm)\n");
+ exit $ERRORS{"UNKNOWN"};
+};
+
+alarm($timeout);
+
+($session, $error) = Net::SNMP->session(%session_opts);
+
+
+if (!defined($session)) {
+ $state='UNKNOWN';
+ $answer=$error;
+ print ("$state: $answer\n");
+ exit $ERRORS{$state};
+}
+
+## map ifdescr to ifindex - should look at being able to cache this value
+
+if (defined $ifdescr || defined $iftype) {
+ # escape "/" in ifdescr - very common in the Cisco world
+ if (defined $iftype) {
+ $status=fetch_ifindex($snmpIfType, $iftype);
+ } else {
+ $ifdescr =~ s/\//\\\//g;
+ $status=fetch_ifindex($snmpIfDescr, $ifdescr); # if using on device with large number of interfaces
+ # recommend use of SNMP v2 (get-bulk)
+ }
+ if ($status==0) {
+ $state = "UNKNOWN";
+ printf "$state: could not retrive ifdescr/iftype snmpkey - $status-$snmpkey\n";
+ $session->close;
+ exit $ERRORS{$state};
+ }
+}
+
+
+## Main function
+
+$snmpIfAdminStatus = $snmpIfAdminStatus . "." . $snmpkey;
+$snmpIfOperStatus = $snmpIfOperStatus . "." . $snmpkey;
+$snmpIfDescr = $snmpIfDescr . "." . $snmpkey;
+$snmpIfName = $snmpIfName . "." . $snmpkey ;
+$snmpIfAlias = $snmpIfAlias . "." . $snmpkey ;
+
+push(@snmpoids,$snmpIfAdminStatus);
+push(@snmpoids,$snmpIfOperStatus);
+push(@snmpoids,$snmpIfDescr);
+push(@snmpoids,$snmpIfName) if (defined $ifXTable) ;
+push(@snmpoids,$snmpIfAlias) if (defined $ifXTable) ;
+
+if (!defined($response = $session->get_request(@snmpoids))) {
+ $answer=$session->error;
+ $session->close;
+ $state = 'WARNING';
+ print ("$state: SNMP error: $answer\n");
+ exit $ERRORS{$state};
+}
+
+$answer = sprintf("host '%s', %s(%s) is %s\n",
+ $hostname,
+ $response->{$snmpIfDescr},
+ $snmpkey,
+ $ifOperStatus{$response->{$snmpIfOperStatus}}
+);
+
+
+## Check to see if ifName match is requested and it matches - exit if no match
+## not the interface we want to monitor
+if ( defined $ifName && not ($response->{$snmpIfName} eq $ifName) ) {
+ $state = 'UNKNOWN';
+ $answer = "Interface name ($ifName) doesn't match snmp value ($response->{$snmpIfName}) (index $snmpkey)";
+ print ("$state: $answer\n");
+ exit $ERRORS{$state};
+}
+
+## define the interface name
+if (defined $ifXTable) {
+ $name = $response->{$snmpIfName} ." - " .$response->{$snmpIfAlias} ;
+}else{
+ $name = $response->{$snmpIfDescr} ;
+}
+
+## if AdminStatus is down - some one made a consious effort to change config
+##
+if ( not ($response->{$snmpIfAdminStatus} == 1) ) {
+ $answer = "Interface $name (index $snmpkey) is administratively down.";
+ if ( not defined $adminWarn or $adminWarn eq "w" ) {
+ $state = 'WARNING';
+ } elsif ( $adminWarn eq "i" ) {
+ $state = 'OK';
+ } elsif ( $adminWarn eq "c" ) {
+ $state = 'CRITICAL';
+ } else { # If wrong value for -a, say warning
+ $state = 'WARNING';
+ }
+}
+## Check operational status
+elsif ( $response->{$snmpIfOperStatus} == 2 ) {
+ $state = 'CRITICAL';
+ $answer = "Interface $name (index $snmpkey) is down.";
+} elsif ( $response->{$snmpIfOperStatus} == 5 ) {
+ if (defined $dormantWarn ) {
+ if ($dormantWarn eq "w") {
+ $state = 'WARNING';
+ $answer = "Interface $name (index $snmpkey) is dormant.";
+ }elsif($dormantWarn eq "c") {
+ $state = 'CRITICAL';
+ $answer = "Interface $name (index $snmpkey) is dormant.";
+ }elsif($dormantWarn eq "i") {
+ $state = 'OK';
+ $answer = "Interface $name (index $snmpkey) is dormant.";
+ }
+ }else{
+ # dormant interface - but warning/critical/ignore not requested
+ $state = 'CRITICAL';
+ $answer = "Interface $name (index $snmpkey) is dormant.";
+ }
+} elsif ( $response->{$snmpIfOperStatus} == 6 ) {
+ $state = 'CRITICAL';
+ $answer = "Interface $name (index $snmpkey) notPresent - possible hotswap in progress.";
+} elsif ( $response->{$snmpIfOperStatus} == 7 ) {
+ $state = 'CRITICAL';
+ $answer = "Interface $name (index $snmpkey) down due to lower layer being down.";
+} elsif ( $response->{$snmpIfOperStatus} == 3 || $response->{$snmpIfOperStatus} == 4 ) {
+ $state = 'CRITICAL';
+ $answer = "Interface $name (index $snmpkey) down (testing/unknown).";
+} else {
+ $state = 'OK';
+ $answer = "Interface $name (index $snmpkey) is up.";
+}
+
+
+
+print ("$state: $answer\n");
+exit $ERRORS{$state};
+
+
+### subroutines
+
+sub fetch_ifindex {
+ my $oid = shift;
+ my $lookup = shift;
+
+ if (!defined ($response = $session->get_table($oid))) {
+ $answer=$session->error;
+ $session->close;
+ $state = 'CRITICAL';
+ printf ("$state: SNMP error with snmp version $snmp_version ($answer)\n");
+ $session->close;
+ exit $ERRORS{$state};
+ }
+
+ foreach $key ( keys %{$response}) {
+ if ($response->{$key} =~ /^$lookup$/) {
+ $key =~ /.*\.(\d+)$/;
+ $snmpkey = $1;
+ #print "$lookup = $key / $snmpkey \n"; #debug
+ }
+ }
+ unless (defined $snmpkey) {
+ $session->close;
+ $state = 'CRITICAL';
+ printf "$state: Could not match $ifdescr on $hostname\n";
+ exit $ERRORS{$state};
+ }
+
+ return $snmpkey;
+}
+
+sub usage($) {
+ print "$_[0]\n";
+ print_usage();
+ exit $ERRORS{"UNKNOWN"};
+}
+
+sub print_usage() {
+ printf "\n";
+ printf "usage: \n";
+ printf "check_ifoperstatus -k <IF_KEY> -H <HOSTNAME> [-C <community>]\n";
+ printf "Copyright (C) 2000 Christoph Kron\n";
+ printf "check_ifoperstatus.pl comes with ABSOLUTELY NO WARRANTY\n";
+ printf "This programm is licensed under the terms of the ";
+ printf "GNU General Public License\n(check source code for details)\n";
+ printf "\n\n";
+}
+
+sub print_help() {
+ print_revision($PROGNAME, '1.4.15');
+ print_usage();
+ printf "check_ifoperstatus plugin for Nagios monitors operational \n";
+ printf "status of a particular network interface on the target host\n";
+ printf "\nUsage:\n";
+ printf " -H (--hostname) Hostname to query - (required)\n";
+ printf " -C (--community) SNMP read community (defaults to public,\n";
+ printf " used with SNMP v1 and v2c\n";
+ printf " -v (--snmp_version) 1 for SNMP v1 (default)\n";
+ printf " 2 for SNMP v2c\n";
+ printf " SNMP v2c will use get_bulk for less overhead\n";
+ printf " if monitoring with -d\n";
+ printf " -L (--seclevel) choice of \"noAuthNoPriv\", \"authNoPriv\", or \"authPriv\"\n";
+ printf " -U (--secname) username for SNMPv3 context\n";
+ printf " -c (--context) SNMPv3 context name (default is empty string)\n";
+ printf " -A (--authpass) authentication password (cleartext ascii or localized key\n";
+ printf " in hex with 0x prefix generated by using \"snmpkey\" utility\n";
+ printf " auth password and authEngineID\n";
+ printf " -a (--authproto) Authentication protocol (MD5 or SHA1)\n";
+ printf " -X (--privpass) privacy password (cleartext ascii or localized key\n";
+ printf " in hex with 0x prefix generated by using \"snmpkey\" utility\n";
+ printf " privacy password and authEngineID\n";
+ printf " -P (--privproto) privacy protocol (DES or AES; default: DES)\n";
+ printf " -k (--key) SNMP IfIndex value\n";
+ printf " -d (--descr) SNMP ifDescr value\n";
+ printf " -T (--type) SNMP ifType integer value (see http://www.iana.org/assignments/ianaiftype-mib)\n";
+ printf " -p (--port) SNMP port (default 161)\n";
+ printf " -I (--ifmib) Agent supports IFMIB ifXTable. Do not use if\n";
+ printf " you don't know what this is. \n";
+ printf " -n (--name) the value should match the returned ifName\n";
+ printf " (Implies the use of -I)\n";
+ printf " -w (--warn =i|w|c) ignore|warn|crit if the interface is dormant (default critical)\n";
+ printf " -D (--admin-down =i|w|c) same for administratively down interfaces (default warning)\n";
+ printf " -M (--maxmsgsize) Max message size - usefull only for v1 or v2c\n";
+ printf " -t (--timeout) seconds before the plugin times out (default=$TIMEOUT)\n";
+ printf " -V (--version) Plugin version\n";
+ printf " -h (--help) usage help \n\n";
+ printf " -k or -d or -T must be specified\n\n";
+ printf "Note: either -k or -d or -T must be specified and -d and -T are much more network \n";
+ printf "intensive. Use it sparingly or not at all. -n is used to match against\n";
+ printf "a much more descriptive ifName value in the IfXTable to verify that the\n";
+ printf "snmpkey has not changed to some other network interface after a reboot.\n\n";
+
+}
+
+sub process_arguments() {
+ $status = GetOptions(
+ "V" => \$opt_V, "version" => \$opt_V,
+ "h" => \$opt_h, "help" => \$opt_h,
+ "v=i" => \$snmp_version, "snmp_version=i" => \$snmp_version,
+ "C=s" => \$community, "community=s" => \$community,
+ "L=s" => \$seclevel, "seclevel=s" => \$seclevel,
+ "a=s" => \$authproto, "authproto=s" => \$authproto,
+ "U=s" => \$secname, "secname=s" => \$secname,
+ "A=s" => \$authpass, "authpass=s" => \$authpass,
+ "X=s" => \$privpass, "privpass=s" => \$privpass,
+ "P=s" => \$privproto, "privproto=s" => \$privproto,
+ "c=s" => \$context, "context=s" => \$context,
+ "k=i" => \$snmpkey, "key=i",\$snmpkey,
+ "d=s" => \$ifdescr, "descr=s" => \$ifdescr,
+ "l=s" => \$lastc, "lastchange=s" => \$lastc,
+ "p=i" => \$port, "port=i" =>\$port,
+ "H=s" => \$hostname, "hostname=s" => \$hostname,
+ "I" => \$ifXTable, "ifmib" => \$ifXTable,
+ "n=s" => \$ifName, "name=s" => \$ifName,
+ "w=s" => \$dormantWarn, "warn=s" => \$dormantWarn,
+ "D=s" => \$adminWarn, "admin-down=s" => \$adminWarn,
+ "M=i" => \$maxmsgsize, "maxmsgsize=i" => \$maxmsgsize,
+ "t=i" => \$timeout, "timeout=i" => \$timeout,
+ "T=i" => \$iftype, "type=i" => \$iftype,
+ );
+
+
+ if ($status == 0){
+ print_help();
+ exit $ERRORS{'OK'};
+ }
+
+ if ($opt_V) {
+ print_revision($PROGNAME,'1.4.15');
+ exit $ERRORS{'OK'};
+ }
+
+ if ($opt_h) {
+ print_help();
+ exit $ERRORS{'OK'};
+ }
+
+ if (! utils::is_hostname($hostname)){
+ usage("Hostname invalid or not given");
+ }
+
+ unless ($snmpkey > 0 || defined $ifdescr || defined $iftype){
+ usage("Either a valid snmp key (-k) or a ifDescr (-d) must be provided");
+ }
+
+ if (defined $ifName) {
+ $ifXTable=1;
+ }
+
+ if (defined $dormantWarn) {
+ unless ($dormantWarn =~ /^(w|c|i)$/ ) {
+ printf "Dormant alerts must be one of w|c|i \n";
+ exit $ERRORS{'UNKNOWN'};
+ }
+ }
+
+ unless (defined $timeout) {
+ $timeout = $TIMEOUT;
+ }
+
+ if ($snmp_version !~ /[123]/){
+ $state='UNKNOWN';
+ print ("$state: No support for SNMP v$snmp_version yet\n");
+ exit $ERRORS{$state};
+ }
+
+ %session_opts = (
+ -hostname => $hostname,
+ -port => $port,
+ -version => $snmp_version,
+ -maxmsgsize => $maxmsgsize
+ );
+
+ $session_opts{'-community'} = $community if (defined $community && $snmp_version =~ /[12]/);
+
+ if ($snmp_version =~ /3/ ) {
+ # Must define a security level even though default is noAuthNoPriv
+ # v3 requires a security username
+ if (defined $seclevel && defined $secname) {
+ $session_opts{'-username'} = $secname;
+
+ # Must define a security level even though defualt is noAuthNoPriv
+ unless ( grep /^$seclevel$/, qw(noAuthNoPriv authNoPriv authPriv) ) {
+ usage("Must define a valid security level even though default is noAuthNoPriv");
+ }
+
+ # Authentication wanted
+ if ( $seclevel eq 'authNoPriv' || $seclevel eq 'authPriv' ) {
+ if (defined $authproto && $authproto ne 'MD5' && $authproto ne 'SHA1') {
+ usage("Auth protocol can be either MD5 or SHA1");
+ }
+ $session_opts{'-authprotocol'} = $authproto if(defined $authproto);
+
+ if ( !defined $authpass) {
+ usage("Auth password/key is not defined");
+ }else{
+ if ($authpass =~ /^0x/ ) {
+ $session_opts{'-authkey'} = $authpass ;
+ }else{
+ $session_opts{'-authpassword'} = $authpass ;
+ }
+ }
+ }
+
+ # Privacy (DES encryption) wanted
+ if ($seclevel eq 'authPriv' ) {
+ if (! defined $privpass) {
+ usage("Privacy passphrase/key is not defined");
+ }else{
+ if ($privpass =~ /^0x/){
+ $session_opts{'-privkey'} = $privpass;
+ }else{
+ $session_opts{'-privpassword'} = $privpass;
+ }
+ }
+
+ $session_opts{'-privprotocol'} = $privproto if(defined $privproto);
+ }
+
+ # Context name defined or default
+ unless ( defined $context) {
+ $context = "";
+ }
+
+ }else {
+ usage("Security level or name is not defined");
+ }
+ } # end snmpv3
+
+
+}
+## End validation
+
diff --git a/god/Monitoring/nagios/plugins/check_ifstatus b/god/Monitoring/nagios/plugins/check_ifstatus
new file mode 100755
index 00000000..b977675e
--- /dev/null
+++ b/god/Monitoring/nagios/plugins/check_ifstatus
@@ -0,0 +1,425 @@
+#! /usr/bin/perl -w
+#
+# check_ifstatus.pl - nagios plugin
+#
+#
+# Copyright (C) 2000 Christoph Kron
+# Modified 5/2002 to conform to updated Nagios Plugin Guidelines (S. Ghosh)
+# Added -x option (4/2003)
+# Added -u option (4/2003)
+# Added -M option (10/2003)
+# Added SNMPv3 support (10/2003)
+#
+# This program is free software; you can redistribute it and/or
+# modify it under the terms of the GNU General Public License
+# as published by the Free Software Foundation; either version 2
+# of the License, or (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+#
+#
+# Report bugs to: ck@zet.net, nagiosplug-help@lists.sf.net
+#
+# 11.01.2000 Version 1.0
+#
+
+use POSIX;
+use strict;
+use lib "/usr/lib/nagios/plugins" ;
+use utils qw($TIMEOUT %ERRORS &print_revision &support);
+
+use Net::SNMP;
+use Getopt::Long;
+Getopt::Long::Configure('bundling');
+
+my $PROGNAME = "check_ifstatus";
+
+sub print_help ();
+sub usage ($);
+sub print_usage ();
+sub process_arguments ();
+
+
+my $status;
+my %ifOperStatus = ('1','up',
+ '2','down',
+ '3','testing',
+ '4','unknown',
+ '5','dormant',
+ '6','notPresent',
+ '7','lowerLayerDown'); # down due to the state of lower layer interface(s));
+
+my $timeout ;
+my $state = "UNKNOWN";
+my $answer = "";
+my $snmpkey=0;
+my $snmpoid=0;
+my $key=0;
+my $community = "public";
+my $maxmsgsize = 1472 ; # Net::SNMP default is 1472
+my ($seclevel, $authproto, $secname, $authpass, $privpass, $privproto, $auth, $priv, $context);
+my $port = 161;
+my @snmpoids;
+my $snmpIfAdminStatus = '1.3.6.1.2.1.2.2.1.7';
+my $snmpIfDescr = '1.3.6.1.2.1.2.2.1.2';
+my $snmpIfOperStatus = '1.3.6.1.2.1.2.2.1.8';
+my $snmpIfName = '1.3.6.1.2.1.31.1.1.1.1';
+my $snmpIfAlias = '1.3.6.1.2.1.31.1.1.1.18';
+my $snmpLocIfDescr = '1.3.6.1.4.1.9.2.2.1.1.28';
+my $snmpIfType = '1.3.6.1.2.1.2.2.1.3';
+my $hostname;
+my $session;
+my $error;
+my $response;
+my %ifStatus;
+my $ifup =0 ;
+my $ifdown =0;
+my $ifdormant = 0;
+my $ifexclude = 0 ;
+my $ifunused = 0;
+my $ifmessage = "";
+my $snmp_version = 1;
+my $ifXTable;
+my $opt_h ;
+my $opt_V ;
+my $opt_u;
+my $opt_x ;
+my %excluded ;
+my @unused_ports ;
+my %session_opts;
+
+
+
+
+
+# Just in case of problems, let's not hang Nagios
+$SIG{'ALRM'} = sub {
+ print ("ERROR: No snmp response from $hostname (alarm timeout)\n");
+ exit $ERRORS{"UNKNOWN"};
+};
+
+
+#Option checking
+$status = process_arguments();
+
+if ($status != 0)
+{
+ print_help() ;
+ exit $ERRORS{'OK'};
+}
+
+
+alarm($timeout);
+($session, $error) = Net::SNMP->session(%session_opts);
+
+if (!defined($session)) {
+ $state='UNKNOWN';
+ $answer=$error;
+ print ("$state: $answer\n");
+ exit $ERRORS{$state};
+}
+
+
+push(@snmpoids,$snmpIfOperStatus);
+push(@snmpoids,$snmpIfAdminStatus);
+push(@snmpoids,$snmpIfDescr);
+push(@snmpoids,$snmpIfType);
+push(@snmpoids,$snmpIfName) if ( defined $ifXTable);
+push(@snmpoids,$snmpIfAlias) if ( defined $ifXTable);
+
+
+
+
+foreach $snmpoid (@snmpoids) {
+
+ if (!defined($response = $session->get_table($snmpoid))) {
+ $answer=$session->error;
+ $session->close;
+ $state = 'CRITICAL';
+ if ( ( $snmpoid =~ $snmpIfName ) && defined $ifXTable ) {
+ print ("$state: Device does not support ifTable - try without -I option\n");
+ }else{
+ print ("$state: $answer for $snmpoid with snmp version $snmp_version\n");
+ }
+ exit $ERRORS{$state};
+ }
+
+ foreach $snmpkey (keys %{$response}) {
+ $snmpkey =~ /.*\.(\d+)$/;
+ $key = $1;
+ $ifStatus{$key}{$snmpoid} = $response->{$snmpkey};
+ }
+}
+
+
+$session->close;
+
+alarm(0);
+
+foreach $key (keys %ifStatus) {
+
+ # skip unused interfaces
+ if (!defined($ifStatus{$key}{'notInUse'})) {
+ # check only if interface is administratively up
+ if ($ifStatus{$key}{$snmpIfAdminStatus} == 1 ) {
+
+ # check only if interface type is not listed in %excluded
+ if (!defined $excluded{$ifStatus{$key}{$snmpIfType}} ) {
+ if ($ifStatus{$key}{$snmpIfOperStatus} == 1 ) { $ifup++ ;}
+ if ($ifStatus{$key}{$snmpIfOperStatus} == 2 ) {
+ $ifdown++ ;
+ if (defined $ifXTable) {
+ $ifmessage .= sprintf("%s: down -> %s<BR>",
+ $ifStatus{$key}{$snmpIfName},
+ $ifStatus{$key}{$snmpIfAlias});
+ }else{
+ $ifmessage .= sprintf("%s: down <BR>",
+ $ifStatus{$key}{$snmpIfDescr});
+ }
+ }
+ if ($ifStatus{$key}{$snmpIfOperStatus} == 5 ) { $ifdormant++ ;}
+ }else{
+ $ifexclude++;
+ }
+
+ }
+ }else{
+ $ifunused++;
+ }
+}
+
+ if ($ifdown > 0) {
+ $state = 'CRITICAL';
+ $answer = sprintf("host '%s', interfaces up: %d, down: %d, dormant: %d, excluded: %d, unused: %d<BR>",
+ $hostname,
+ $ifup,
+ $ifdown,
+ $ifdormant,
+ $ifexclude,
+ $ifunused);
+ $answer = $answer . $ifmessage . "\n";
+ }
+ else {
+ $state = 'OK';
+ $answer = sprintf("host '%s', interfaces up: %d, down: %d, dormant: %d, excluded: %d, unused: %d",
+ $hostname,
+ $ifup,
+ $ifdown,
+ $ifdormant,
+ $ifexclude,
+ $ifunused);
+ }
+my $perfdata = sprintf("up=%d,down=%d,dormant=%d,excluded=%d,unused=%d",$ifup,$ifdown,$ifdormant,$ifexclude,$ifunused);
+print ("$state: $answer |$perfdata\n");
+exit $ERRORS{$state};
+
+sub usage($) {
+ print "$_[0]\n";
+ print_usage();
+ exit $ERRORS{"UNKNOWN"};
+}
+
+sub print_usage() {
+ printf "\n";
+ printf "usage: \n";
+ printf "check_ifstatus -C <READCOMMUNITY> -p <PORT> -H <HOSTNAME>\n";
+ printf "Copyright (C) 2000 Christoph Kron\n";
+ printf "Updates 5/2002 Subhendu Ghosh\n";
+ support();
+ printf "\n\n";
+}
+
+sub print_help() {
+ print_revision($PROGNAME, '1.4.15');
+ print_usage();
+ printf "check_ifstatus plugin for Nagios monitors operational \n";
+ printf "status of each network interface on the target host\n";
+ printf "\nUsage:\n";
+ printf " -H (--hostname) Hostname to query - (required)\n";
+ printf " -C (--community) SNMP read community (defaults to public,\n";
+ printf " used with SNMP v1 and v2c\n";
+ printf " -v (--snmp_version) 1 for SNMP v1 (default)\n";
+ printf " 2 for SNMP v2c\n";
+ printf " SNMP v2c will use get_bulk for less overhead\n";
+ printf " 3 for SNMPv3 (requires -U option)";
+ printf " -p (--port) SNMP port (default 161)\n";
+ printf " -I (--ifmib) Agent supports IFMIB ifXTable. For Cisco - this will provide\n";
+ printf " the descriptive name. Do not use if you don't know what this is. \n";
+ printf " -x (--exclude) A comma separated list of ifType values that should be excluded \n";
+ printf " from the report (default for an empty list is PPP(23).\n";
+ printf " -u (--unused_ports) A comma separated list of ifIndex values that should be excluded \n";
+ printf " from the report (default is an empty exclusion list).\n";
+ printf " See the IANAifType-MIB for a list of interface types.\n";
+ printf " -L (--seclevel) choice of \"noAuthNoPriv\", \"authNoPriv\", or \"authPriv\"\n";
+ printf " -U (--secname) username for SNMPv3 context\n";
+ printf " -c (--context) SNMPv3 context name (default is empty string)\n";
+ printf " -A (--authpass) authentication password (cleartext ascii or localized key\n";
+ printf " in hex with 0x prefix generated by using \"snmpkey\" utility\n";
+ printf " auth password and authEngineID\n";
+ printf " -a (--authproto) Authentication protocol (MD5 or SHA1)\n";
+ printf " -X (--privpass) privacy password (cleartext ascii or localized key\n";
+ printf " in hex with 0x prefix generated by using \"snmpkey\" utility\n";
+ printf " privacy password and authEngineID\n";
+ printf " -P (--privproto) privacy protocol (DES or AES; default: DES)\n";
+ printf " -M (--maxmsgsize) Max message size - usefull only for v1 or v2c\n";
+ printf " -t (--timeout) seconds before the plugin times out (default=$TIMEOUT)\n";
+ printf " -V (--version) Plugin version\n";
+ printf " -h (--help) usage help \n\n";
+ print_revision($PROGNAME, '1.4.15');
+
+}
+
+sub process_arguments() {
+ $status = GetOptions(
+ "V" => \$opt_V, "version" => \$opt_V,
+ "h" => \$opt_h, "help" => \$opt_h,
+ "v=s" => \$snmp_version, "snmp_version=s" => \$snmp_version,
+ "C=s" => \$community,"community=s" => \$community,
+ "L=s" => \$seclevel, "seclevel=s" => \$seclevel,
+ "a=s" => \$authproto, "authproto=s" => \$authproto,
+ "U=s" => \$secname, "secname=s" => \$secname,
+ "A=s" => \$authpass, "authpass=s" => \$authpass,
+ "X=s" => \$privpass, "privpass=s" => \$privpass,
+ "P=s" => \$privproto, "privproto=s" => \$privproto,
+ "c=s" => \$context, "context=s" => \$context,
+ "p=i" =>\$port, "port=i" => \$port,
+ "H=s" => \$hostname, "hostname=s" => \$hostname,
+ "I" => \$ifXTable, "ifmib" => \$ifXTable,
+ "x:s" => \$opt_x, "exclude:s" => \$opt_x,
+ "u=s" => \$opt_u, "unused_ports=s" => \$opt_u,
+ "M=i" => \$maxmsgsize, "maxmsgsize=i" => \$maxmsgsize,
+ "t=i" => \$timeout, "timeout=i" => \$timeout,
+ );
+
+ if ($status == 0){
+ print_help();
+ exit $ERRORS{'OK'};
+ }
+
+ if ($opt_V) {
+ print_revision($PROGNAME,'1.4.15');
+ exit $ERRORS{'OK'};
+ }
+
+ if ($opt_h) {
+ print_help();
+ exit $ERRORS{'OK'};
+ }
+
+ unless (defined $timeout) {
+ $timeout = $TIMEOUT;
+ }
+
+ # Net::SNMP wants an integer
+ $snmp_version = 2 if $snmp_version eq "2c";
+
+ if ($snmp_version !~ /^[123]$/){
+ $state='UNKNOWN';
+ print ("$state: No support for SNMP v$snmp_version yet\n");
+ exit $ERRORS{$state};
+ }
+
+ %session_opts = (
+ -hostname => $hostname,
+ -port => $port,
+ -version => $snmp_version,
+ -maxmsgsize => $maxmsgsize
+ );
+
+ $session_opts{'-community'} = $community if (defined $community && $snmp_version =~ /[12]/);
+
+ if ($snmp_version =~ /3/ ) {
+ # Must define a security level even though default is noAuthNoPriv
+ # v3 requires a security username
+ if (defined $seclevel && defined $secname) {
+ $session_opts{'-username'} = $secname;
+
+ # Must define a security level even though defualt is noAuthNoPriv
+ unless ( grep /^$seclevel$/, qw(noAuthNoPriv authNoPriv authPriv) ) {
+ usage("Must define a valid security level even though default is noAuthNoPriv");
+ }
+
+ # Authentication wanted
+ if ( $seclevel eq 'authNoPriv' || $seclevel eq 'authPriv' ) {
+ if (defined $authproto && $authproto ne 'MD5' && $authproto ne 'SHA1') {
+ usage("Auth protocol can be either MD5 or SHA1");
+ }
+ $session_opts{'-authprotocol'} = $authproto if(defined $authproto);
+
+ if ( !defined $authpass) {
+ usage("Auth password/key is not defined");
+ }else{
+ if ($authpass =~ /^0x/ ) {
+ $session_opts{'-authkey'} = $authpass ;
+ }else{
+ $session_opts{'-authpassword'} = $authpass ;
+ }
+ }
+ }
+
+ # Privacy (DES encryption) wanted
+ if ($seclevel eq 'authPriv' ) {
+ if (! defined $privpass) {
+ usage("Privacy passphrase/key is not defined");
+ }else{
+ if ($privpass =~ /^0x/){
+ $session_opts{'-privkey'} = $privpass;
+ }else{
+ $session_opts{'-privpassword'} = $privpass;
+ }
+ }
+
+ $session_opts{'-privprotocol'} = $privproto if(defined $privproto);
+ }
+
+ # Context name defined or default
+ unless ( defined $context) {
+ $context = "";
+ }
+
+ }else {
+ usage("Security level or name is not defined");
+ }
+ } # end snmpv3
+
+ # Excluded interfaces types (ifType) (backup interfaces, dial-on demand interfaces, PPP interfaces
+ if (defined $opt_x) {
+ my @x = split(/,/, $opt_x);
+ if ( @x) {
+ foreach $key (@x){
+ $excluded{$key} = 1;
+ }
+ }else{
+ $excluded{23} = 1; # default PPP(23) if empty list - note (AIX seems to think PPP is 22 according to a post)
+ }
+ }
+
+ # Excluded interface ports (ifIndex) - management reasons
+ if ($opt_u) {
+ @unused_ports = split(/,/,$opt_u);
+ foreach $key (@unused_ports) {
+ $ifStatus{$key}{'notInUse'}++ ;
+ }
+ }
+
+ if (! utils::is_hostname($hostname)){
+ usage("Hostname invalid or not given");
+ exit $ERRORS{"UNKNOWN"};
+ }
+
+
+ if ($snmp_version !~ /[123]/) {
+ $state='UNKNOWN';
+ print ("$state: No support for SNMP v$snmp_version yet\n");
+ exit $ERRORS{$state};
+ }
+
+return $ERRORS{"OK"};
+}
diff --git a/god/Monitoring/nagios/plugins/check_imap b/god/Monitoring/nagios/plugins/check_imap
new file mode 120000
index 00000000..e838da97
--- /dev/null
+++ b/god/Monitoring/nagios/plugins/check_imap
@@ -0,0 +1 @@
+check_tcp \ No newline at end of file
diff --git a/god/Monitoring/nagios/plugins/check_ircd b/god/Monitoring/nagios/plugins/check_ircd
new file mode 100755
index 00000000..21d367ed
--- /dev/null
+++ b/god/Monitoring/nagios/plugins/check_ircd
@@ -0,0 +1,239 @@
+#! /usr/bin/perl -wT
+
+# -----------------------------------------------------------------------------
+# File Name: check_ircd.pl
+#
+# Author: Richard Mayhew - South Africa
+#
+# Date: 1999/09/20
+#
+#
+# Description: This script will check to see if an IRCD is running
+# about how many users it has
+#
+# Email: netsaint@splash.co.za
+#
+# -----------------------------------------------------------------------------
+# Copyright 1999 (c) Richard Mayhew
+#
+# Credits go to Ethan Galstad for coding Nagios
+#
+# If any changes are made to this script, please mail me a copy of the
+# changes :)
+#
+# Some code taken from Charlie Cook (check_disk.pl)
+#
+# License GPL
+#
+# -----------------------------------------------------------------------------
+# Date Author Reason
+# ---- ------ ------
+#
+# 1999/09/20 RM Creation
+#
+# 1999/09/20 TP Changed script to use strict, more secure by
+# specifying $ENV variables. The bind command is
+# still insecure through. Did most of my work
+# with perl -wT and 'use strict'
+#
+# test using check_ircd.pl (irc-2.mit.edu|irc.erols.com|irc.core.com)
+# 2002/05/02 SG Fixed for Embedded Perl
+#
+
+# ----------------------------------------------------------------[ Require ]--
+
+require 5.004;
+
+# -------------------------------------------------------------------[ Uses ]--
+
+use Socket;
+use strict;
+use Getopt::Long;
+use vars qw($opt_V $opt_h $opt_t $opt_p $opt_H $opt_w $opt_c $verbose);
+use vars qw($PROGNAME);
+use lib "/usr/lib/nagios/plugins";
+use utils qw($TIMEOUT %ERRORS &print_revision &support &usage);
+
+# ----------------------------------------------------[ Function Prototypes ]--
+
+sub print_help ();
+sub print_usage ();
+sub connection ($$$$);
+sub bindRemote ($$);
+
+# -------------------------------------------------------------[ Enviroment ]--
+
+$ENV{PATH} = "";
+$ENV{ENV} = "";
+$ENV{BASH_ENV} = "";
+
+# -----------------------------------------------------------------[ Global ]--
+
+$PROGNAME = "check_ircd";
+my $NICK="ircd$$";
+my $USER_INFO="monitor localhost localhost : ";
+
+# -------------------------------------------------------------[ connection ]--
+sub connection ($$$$)
+{
+ my ($in_remotehost,$in_users,$in_warn,$in_crit) = @_;
+ my $state;
+ my $answer;
+
+ print "connection(debug): users = $in_users\n" if $verbose;
+ $in_users =~ s/\ //g;
+
+ if ($in_users >= 0) {
+
+ if ($in_users > $in_crit) {
+ $state = "CRITICAL";
+ $answer = "Critical Number Of Clients Connected : $in_users (Limit = $in_crit)\n";
+
+ } elsif ($in_users > $in_warn) {
+ $state = "WARNING";
+ $answer = "Warning Number Of Clients Connected : $in_users (Limit = $in_warn)\n";
+
+ } else {
+ $state = "OK";
+ $answer = "IRCD ok - Current Local Users: $in_users\n";
+ }
+
+ } else {
+ $state = "UNKNOWN";
+ $answer = "Server $in_remotehost has less than 0 users! Something is Really WRONG!\n";
+ }
+
+ print ClientSocket "quit\n";
+ print $answer;
+ exit $ERRORS{$state};
+}
+
+# ------------------------------------------------------------[ print_usage ]--
+
+sub print_usage () {
+ print "Usage: $PROGNAME -H <host> [-w <warn>] [-c <crit>] [-p <port>]\n";
+}
+
+# -------------------------------------------------------------[ print_help ]--
+
+sub print_help ()
+{
+ print_revision($PROGNAME,'1.4.15');
+ print "Copyright (c) 2000 Richard Mayhew/Karl DeBisschop
+
+Perl Check IRCD plugin for Nagios
+
+";
+ print_usage();
+ print "
+-H, --hostname=HOST
+ Name or IP address of host to check
+-w, --warning=INTEGER
+ Number of connected users which generates a warning state (Default: 50)
+-c, --critical=INTEGER
+ Number of connected users which generates a critical state (Default: 100)
+-p, --port=INTEGER
+ Port that the ircd daemon is running on <host> (Default: 6667)
+-v, --verbose
+ Print extra debugging information
+";
+}
+
+# -------------------------------------------------------------[ bindRemote ]--
+
+sub bindRemote ($$)
+{
+ my ($in_remotehost, $in_remoteport) = @_;
+ my $proto = getprotobyname('tcp');
+ my $sockaddr;
+ my $that;
+ my ($name, $aliases,$type,$len,$thataddr) = gethostbyname($in_remotehost);
+
+ if (!socket(ClientSocket,AF_INET, SOCK_STREAM, $proto)) {
+ print "IRCD UNKNOWN: Could not start socket ($!)\n";
+ exit $ERRORS{"UNKNOWN"};
+ }
+ $sockaddr = 'S n a4 x8';
+ $that = pack($sockaddr, AF_INET, $in_remoteport, $thataddr);
+ if (!connect(ClientSocket, $that)) {
+ print "IRCD UNKNOWN: Could not connect socket ($!)\n";
+ exit $ERRORS{"UNKNOWN"};
+ }
+ select(ClientSocket); $| = 1; select(STDOUT);
+ return \*ClientSocket;
+}
+
+# ===================================================================[ MAIN ]==
+
+MAIN:
+{
+ my $hostname;
+
+ Getopt::Long::Configure('bundling');
+ GetOptions
+ ("V" => \$opt_V, "version" => \$opt_V,
+ "h" => \$opt_h, "help" => \$opt_h,
+ "v" => \$verbose,"verbose" => \$verbose,
+ "t=i" => \$opt_t, "timeout=i" => \$opt_t,
+ "w=i" => \$opt_w, "warning=i" => \$opt_w,
+ "c=i" => \$opt_c, "critical=i" => \$opt_c,
+ "p=i" => \$opt_p, "port=i" => \$opt_p,
+ "H=s" => \$opt_H, "hostname=s" => \$opt_H);
+
+ if ($opt_V) {
+ print_revision($PROGNAME,'1.4.15');
+ exit $ERRORS{'OK'};
+ }
+
+ if ($opt_h) {print_help(); exit $ERRORS{'OK'};}
+
+ ($opt_H) || ($opt_H = shift @ARGV) || usage("Host name/address not specified\n");
+ my $remotehost = $1 if ($opt_H =~ /([-.A-Za-z0-9]+)/);
+ ($remotehost) || usage("Invalid host: $opt_H\n");
+
+ ($opt_w) || ($opt_w = shift @ARGV) || ($opt_w = 50);
+ my $warn = $1 if ($opt_w =~ /^([0-9]+)$/);
+ ($warn) || usage("Invalid warning threshold: $opt_w\n");
+
+ ($opt_c) || ($opt_c = shift @ARGV) || ($opt_c = 100);
+ my $crit = $1 if ($opt_c =~ /^([0-9]+)$/);
+ ($crit) || usage("Invalid critical threshold: $opt_c\n");
+
+ ($opt_p) || ($opt_p = shift @ARGV) || ($opt_p = 6667);
+ my $remoteport = $1 if ($opt_p =~ /^([0-9]+)$/);
+ ($remoteport) || usage("Invalid port: $opt_p\n");
+
+ if ($opt_t && $opt_t =~ /^([0-9]+)$/) { $TIMEOUT = $1; }
+
+ # Just in case of problems, let's not hang Nagios
+ $SIG{'ALRM'} = sub {
+ print "Somthing is Taking a Long Time, Increase Your TIMEOUT (Currently Set At $TIMEOUT Seconds)\n";
+ exit $ERRORS{"UNKNOWN"};
+ };
+
+ alarm($TIMEOUT);
+
+ my ($name, $alias, $proto) = getprotobyname('tcp');
+
+ print "MAIN(debug): binding to remote host: $remotehost -> $remoteport\n" if $verbose;
+ my $ClientSocket = &bindRemote($remotehost,$remoteport);
+
+ print ClientSocket "NICK $NICK\nUSER $USER_INFO\n";
+
+ while (<ClientSocket>) {
+ print "MAIN(debug): default var = $_\n" if $verbose;
+
+ # DALnet,LagNet,UnderNet etc. Require this!
+ # Replies with a PONG when presented with a PING query.
+ # If a server doesn't require it, it will be ignored.
+
+ if (m/^PING (.*)/) {print ClientSocket "PONG $1\n";}
+
+ alarm(0);
+
+ # Look for pattern in IRCD Output to gather Client Connections total.
+ connection($remotehost,$1,$warn,$crit) if (m/:I have\s+(\d+)/);
+ }
+ print "IRCD UNKNOWN: Unknown error - maybe could not authenticate\n";
+ exit $ERRORS{"UNKNOWN"};
+}
diff --git a/god/Monitoring/nagios/plugins/check_jabber b/god/Monitoring/nagios/plugins/check_jabber
new file mode 120000
index 00000000..e838da97
--- /dev/null
+++ b/god/Monitoring/nagios/plugins/check_jabber
@@ -0,0 +1 @@
+check_tcp \ No newline at end of file
diff --git a/god/Monitoring/nagios/plugins/check_ldap b/god/Monitoring/nagios/plugins/check_ldap
new file mode 100755
index 00000000..ea4e3346
--- /dev/null
+++ b/god/Monitoring/nagios/plugins/check_ldap
Binary files differ
diff --git a/god/Monitoring/nagios/plugins/check_ldaps b/god/Monitoring/nagios/plugins/check_ldaps
new file mode 120000
index 00000000..928c9e7c
--- /dev/null
+++ b/god/Monitoring/nagios/plugins/check_ldaps
@@ -0,0 +1 @@
+check_ldap \ No newline at end of file
diff --git a/god/Monitoring/nagios/plugins/check_linux_raid b/god/Monitoring/nagios/plugins/check_linux_raid
new file mode 100755
index 00000000..ab982cd6
--- /dev/null
+++ b/god/Monitoring/nagios/plugins/check_linux_raid
@@ -0,0 +1,115 @@
+#!/usr/bin/perl -w
+
+# Copyright (c) 2002 ISOMEDIA, Inc.
+# originally written by Steve Milton
+# later updates by sean finney <seanius@seanius.net>
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+#
+# Usage: check_raid [raid-name]
+# Example: check_raid md0
+# WARNING md0 status=[UUU_U], recovery=46.4%, finish=123.0min
+
+use strict;
+use lib "/usr/lib/nagios/plugins";
+use utils qw(%ERRORS);
+
+# die with an error if we're not on Linux
+if ($^O ne 'linux') {
+ print "This plugin only applicable on Linux.\n";
+ exit $ERRORS{'UNKNOWN'};
+}
+
+sub max_state($$){
+ my ($a, $b) = @_;
+ if ($a eq "CRITICAL" || $b eq "CRITICAL") { return "CRITICAL"; }
+ elsif ($a eq "WARNING" || $b eq "WARNING") { return "WARNING"; }
+ elsif ($a eq "OK" || $b eq "OK") { return "OK"; }
+ elsif ($a eq "UNKNOWN" || $b eq "UNKNOWN") { return "UNKNOWN"; }
+ elsif ($a eq "DEPENDENT" || $b eq "DEPENDENT") { return "DEPENDENT"; }
+ return "UNKNOWN";
+}
+
+my $nextdev;
+if(defined $ARGV[0]) { $nextdev = shift; }
+else { $nextdev = "md[0-9]+"; }
+
+my $code = "UNKNOWN";
+my $msg = "";
+my %status;
+my %recovery;
+my %finish;
+my %active;
+my %devices;
+
+while(defined $nextdev){
+ open (MDSTAT, "< /proc/mdstat") or die "Failed to open /proc/mdstat";
+ my $device = undef;
+ while(<MDSTAT>) {
+ if (defined $device) {
+ if (/(\[[_U]+\])/) {
+ $status{$device} = $1;
+ } elsif (/recovery = (.*?)\s/) {
+ $recovery{$device} = $1;
+ ($finish{$device}) = /finish=(.*?min)/;
+ $device=undef;
+ } elsif (/^\s*$/) {
+ $device=undef;
+ }
+ } elsif (/^($nextdev)\s*:/) {
+ $device=$1;
+ $devices{$device}=$device;
+ if (/\sactive/) {
+ $status{$device} = ''; # Shall be filled later if available
+ $active{$device} = 1;
+ }
+ }
+ }
+ $nextdev = shift;
+}
+
+foreach my $k (sort keys %devices){
+ if (!exists($status{$k})) {
+ $msg .= sprintf " %s inactive with no status information.",
+ $devices{$k};
+ $code = max_state($code, "CRITICAL");
+ } elsif ($status{$k} =~ /_/) {
+ if (defined $recovery{$k}) {
+ $msg .= sprintf " %s status=%s, recovery=%s, finish=%s.",
+ $devices{$k}, $status{$k}, $recovery{$k}, $finish{$k};
+ $code = max_state($code, "WARNING");
+ } else {
+ $msg .= sprintf " %s status=%s.", $devices{$k}, $status{$k};
+ $code = max_state($code, "CRITICAL");
+ }
+ } elsif ($status{$k} =~ /U+/) {
+ $msg .= sprintf " %s status=%s.", $devices{$k}, $status{$k};
+ $code = max_state($code, "OK");
+ } else {
+ if ($active{$k}) {
+ $msg .= sprintf " %s active with no status information.",
+ $devices{$k};
+ $code = max_state($code, "OK");
+ } else {
+ # This should't run anymore, but is left as a catch-all
+ $msg .= sprintf " %s does not exist.\n", $devices{$k};
+ $code = max_state($code, "CRITICAL");
+ }
+ }
+}
+
+print $code, $msg, "\n";
+exit ($ERRORS{$code});
+
diff --git a/god/Monitoring/nagios/plugins/check_load b/god/Monitoring/nagios/plugins/check_load
new file mode 100755
index 00000000..8501ea65
--- /dev/null
+++ b/god/Monitoring/nagios/plugins/check_load
Binary files differ
diff --git a/god/Monitoring/nagios/plugins/check_log b/god/Monitoring/nagios/plugins/check_log
new file mode 100755
index 00000000..4b60b5de
--- /dev/null
+++ b/god/Monitoring/nagios/plugins/check_log
@@ -0,0 +1,219 @@
+#! /bin/bash
+#
+# Log file pattern detector plugin for Nagios
+# Written by Ethan Galstad (nagios@nagios.org)
+# Last Modified: 07-31-1999
+#
+# Usage: ./check_log <log_file> <old_log_file> <pattern>
+#
+# Description:
+#
+# This plugin will scan a log file (specified by the <log_file> option)
+# for a specific pattern (specified by the <pattern> option). Successive
+# calls to the plugin script will only report *new* pattern matches in the
+# log file, since an copy of the log file from the previous run is saved
+# to <old_log_file>.
+#
+# Output:
+#
+# On the first run of the plugin, it will return an OK state with a message
+# of "Log check data initialized". On successive runs, it will return an OK
+# state if *no* pattern matches have been found in the *difference* between the
+# log file and the older copy of the log file. If the plugin detects any
+# pattern matches in the log diff, it will return a CRITICAL state and print
+# out a message is the following format: "(x) last_match", where "x" is the
+# total number of pattern matches found in the file and "last_match" is the
+# last entry in the log file which matches the pattern.
+#
+# Notes:
+#
+# If you use this plugin make sure to keep the following in mind:
+#
+# 1. The "max_attempts" value for the service should be 1, as this
+# will prevent Nagios from retrying the service check (the
+# next time the check is run it will not produce the same results).
+#
+# 2. The "notify_recovery" value for the service should be 0, so that
+# Nagios does not notify you of "recoveries" for the check. Since
+# pattern matches in the log file will only be reported once and not
+# the next time, there will always be "recoveries" for the service, even
+# though recoveries really don't apply to this type of check.
+#
+# 3. You *must* supply a different <old_file_log> for each service that
+# you define to use this plugin script - even if the different services
+# check the same <log_file> for pattern matches. This is necessary
+# because of the way the script operates.
+#
+# Examples:
+#
+# Check for login failures in the syslog...
+#
+# check_log /var/log/messages ./check_log.badlogins.old "LOGIN FAILURE"
+#
+# Check for port scan alerts generated by Psionic's PortSentry software...
+#
+# check_log /var/log/message ./check_log.portscan.old "attackalert"
+#
+
+# Paths to commands used in this script. These
+# may have to be modified to match your system setup.
+# TV: removed PATH restriction. Need to think more about what this means overall
+#PATH=""
+
+ECHO="/bin/echo"
+GREP="/bin/egrep"
+DIFF="/usr/bin/diff"
+TAIL="/usr/bin/tail"
+CAT="/bin/cat"
+RM="/bin/rm"
+CHMOD="/bin/chmod"
+TOUCH="/bin/touch"
+
+PROGNAME=`/usr/bin/basename $0`
+PROGPATH=`echo $0 | sed -e 's,[\\/][^\\/][^\\/]*$,,'`
+REVISION="1.4.15"
+
+. $PROGPATH/utils.sh
+
+print_usage() {
+ echo "Usage: $PROGNAME -F logfile -O oldlog -q query"
+ echo "Usage: $PROGNAME --help"
+ echo "Usage: $PROGNAME --version"
+}
+
+print_help() {
+ print_revision $PROGNAME $REVISION
+ echo ""
+ print_usage
+ echo ""
+ echo "Log file pattern detector plugin for Nagios"
+ echo ""
+ support
+}
+
+# Make sure the correct number of command line
+# arguments have been supplied
+
+if [ $# -lt 1 ]; then
+ print_usage
+ exit $STATE_UNKNOWN
+fi
+
+# Grab the command line arguments
+
+#logfile=$1
+#oldlog=$2
+#query=$3
+exitstatus=$STATE_WARNING #default
+while test -n "$1"; do
+ case "$1" in
+ --help)
+ print_help
+ exit $STATE_OK
+ ;;
+ -h)
+ print_help
+ exit $STATE_OK
+ ;;
+ --version)
+ print_revision $PROGNAME $REVISION
+ exit $STATE_OK
+ ;;
+ -V)
+ print_revision $PROGNAME $REVISION
+ exit $STATE_OK
+ ;;
+ --filename)
+ logfile=$2
+ shift
+ ;;
+ -F)
+ logfile=$2
+ shift
+ ;;
+ --oldlog)
+ oldlog=$2
+ shift
+ ;;
+ -O)
+ oldlog=$2
+ shift
+ ;;
+ --query)
+ query=$2
+ shift
+ ;;
+ -q)
+ query=$2
+ shift
+ ;;
+ -x)
+ exitstatus=$2
+ shift
+ ;;
+ --exitstatus)
+ exitstatus=$2
+ shift
+ ;;
+ *)
+ echo "Unknown argument: $1"
+ print_usage
+ exit $STATE_UNKNOWN
+ ;;
+ esac
+ shift
+done
+
+# If the source log file doesn't exist, exit
+
+if [ ! -e $logfile ]; then
+ $ECHO "Log check error: Log file $logfile does not exist!\n"
+ exit $STATE_UNKNOWN
+elif [ ! -r $logfile ] ; then
+ $ECHO "Log check error: Log file $logfile is not readable!\n"
+ exit $STATE_UNKNOWN
+fi
+
+# If the old log file doesn't exist, this must be the first time
+# we're running this test, so copy the original log file over to
+# the old diff file and exit
+
+if [ ! -e $oldlog ]; then
+ $CAT $logfile > $oldlog
+ $ECHO "Log check data initialized...\n"
+ exit $STATE_OK
+fi
+
+# The old log file exists, so compare it to the original log now
+
+# The temporary file that the script should use while
+# processing the log file.
+if [ -x /bin/mktemp ]; then
+ tempdiff=`/bin/mktemp /tmp/check_log.XXXXXXXXXX`
+else
+ tempdiff=`/bin/date '+%H%M%S'`
+ tempdiff="/tmp/check_log.${tempdiff}"
+ $TOUCH $tempdiff
+ $CHMOD 600 $tempdiff
+fi
+
+$DIFF $logfile $oldlog | $GREP -v "^>" > $tempdiff
+
+# Count the number of matching log entries we have
+count=`$GREP -c "$query" $tempdiff`
+
+# Get the last matching entry in the diff file
+lastentry=`$GREP "$query" $tempdiff | $TAIL -1`
+
+$RM -f $tempdiff
+$CAT $logfile > $oldlog
+
+if [ "$count" = "0" ]; then # no matches, exit with no error
+ $ECHO "Log check ok - 0 pattern matches found\n"
+ exitstatus=$STATE_OK
+else # Print total matche count and the last entry we found
+ $ECHO "($count) $lastentry"
+ exitstatus=$STATE_CRITICAL
+fi
+
+exit $exitstatus
diff --git a/god/Monitoring/nagios/plugins/check_mailq b/god/Monitoring/nagios/plugins/check_mailq
new file mode 100755
index 00000000..01a147b9
--- /dev/null
+++ b/god/Monitoring/nagios/plugins/check_mailq
@@ -0,0 +1,608 @@
+#! /usr/bin/perl -w
+
+# check_mailq - check to see how many messages are in the smtp queue awating
+# transmittal.
+#
+# Initial version support sendmail's mailq command
+# Support for mutiple sendmail queues (Carlos Canau)
+# Support for qmail (Benjamin Schmid)
+
+# License Information:
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+#
+#
+############################################################################
+
+use POSIX;
+use strict;
+use Getopt::Long;
+use vars qw($opt_V $opt_h $opt_v $verbose $PROGNAME $opt_w $opt_c $opt_t
+ $opt_M $mailq $status $state $msg $msg_q $msg_p $opt_W $opt_C $mailq @lines
+ %srcdomains %dstdomains);
+use lib "/usr/lib/nagios/plugins";
+use utils qw(%ERRORS &print_revision &support &usage );
+
+
+sub print_help ();
+sub print_usage ();
+sub process_arguments ();
+
+$ENV{'PATH'}='';
+$ENV{'BASH_ENV'}='';
+$ENV{'ENV'}='';
+$PROGNAME = "check_mailq";
+$mailq = 'sendmail'; # default
+$msg_q = 0 ;
+$msg_p = 0 ;
+$state = $ERRORS{'UNKNOWN'};
+
+Getopt::Long::Configure('bundling');
+$status = process_arguments();
+if ($status){
+ print "ERROR: processing arguments\n";
+ exit $ERRORS{"UNKNOWN"};
+}
+
+$SIG{'ALRM'} = sub {
+ print ("ERROR: timed out waiting for $utils::PATH_TO_MAILQ \n");
+ exit $ERRORS{"WARNING"};
+};
+alarm($opt_t);
+
+# switch based on MTA
+
+if ($mailq eq "sendmail") {
+
+ ## open mailq
+ if ( defined $utils::PATH_TO_MAILQ && -x $utils::PATH_TO_MAILQ ) {
+ if (! open (MAILQ, "$utils::PATH_TO_MAILQ | " ) ) {
+ print "ERROR: could not open $utils::PATH_TO_MAILQ \n";
+ exit $ERRORS{'UNKNOWN'};
+ }
+ }elsif( defined $utils::PATH_TO_MAILQ){
+ unless (-x $utils::PATH_TO_MAILQ) {
+ print "ERROR: $utils::PATH_TO_MAILQ is not executable by (uid $>:gid($)))\n";
+ exit $ERRORS{'UNKNOWN'};
+ }
+ } else {
+ print "ERROR: \$utils::PATH_TO_MAILQ is not defined\n";
+ exit $ERRORS{'UNKNOWN'};
+ }
+# single queue empty
+##/var/spool/mqueue is empty
+# single queue: 1
+## /var/spool/mqueue (1 request)
+##----Q-ID---- --Size-- -----Q-Time----- ------------Sender/Recipient------------
+##h32E30p01763 2782 Wed Apr 2 15:03 <silvaATkpnqwest.pt>
+## 8BITMIME
+## <silvaATeunet.pt>
+
+# multi queue empty
+##/var/spool/mqueue/q0/df is empty
+##/var/spool/mqueue/q1/df is empty
+##/var/spool/mqueue/q2/df is empty
+##/var/spool/mqueue/q3/df is empty
+##/var/spool/mqueue/q4/df is empty
+##/var/spool/mqueue/q5/df is empty
+##/var/spool/mqueue/q6/df is empty
+##/var/spool/mqueue/q7/df is empty
+##/var/spool/mqueue/q8/df is empty
+##/var/spool/mqueue/q9/df is empty
+##/var/spool/mqueue/qA/df is empty
+##/var/spool/mqueue/qB/df is empty
+##/var/spool/mqueue/qC/df is empty
+##/var/spool/mqueue/qD/df is empty
+##/var/spool/mqueue/qE/df is empty
+##/var/spool/mqueue/qF/df is empty
+## Total Requests: 0
+# multi queue: 1
+##/var/spool/mqueue/q0/df is empty
+##/var/spool/mqueue/q1/df is empty
+##/var/spool/mqueue/q2/df is empty
+## /var/spool/mqueue/q3/df (1 request)
+##----Q-ID---- --Size-- -----Q-Time----- ------------Sender/Recipient------------
+##h32De2f23534* 48 Wed Apr 2 14:40 nocol
+## nouserATEUnet.pt
+## canau
+##/var/spool/mqueue/q4/df is empty
+##/var/spool/mqueue/q5/df is empty
+##/var/spool/mqueue/q6/df is empty
+##/var/spool/mqueue/q7/df is empty
+##/var/spool/mqueue/q8/df is empty
+##/var/spool/mqueue/q9/df is empty
+##/var/spool/mqueue/qA/df is empty
+##/var/spool/mqueue/qB/df is empty
+##/var/spool/mqueue/qC/df is empty
+##/var/spool/mqueue/qD/df is empty
+##/var/spool/mqueue/qE/df is empty
+##/var/spool/mqueue/qF/df is empty
+## Total Requests: 1
+
+
+ while (<MAILQ>) {
+
+ # match email addr on queue listing
+ if ( (/<.*@.*\.(\w+\.\w+)>/) || (/<.*@(\w+\.\w+)>/) ) {
+ my $domain = $1;
+ if (/^\w+/) {
+ print "$utils::PATH_TO_MAILQ = srcdomain = $domain \n" if $verbose ;
+ $srcdomains{$domain} ++;
+ }
+ next;
+ }
+
+ #
+ # ...
+ # sendmail considers a message with more than one destiny, say N, to the same MX
+ # to have N messages in queue.
+ # we will only consider one in this code
+ if (( /\s\(reply:\sread\serror\sfrom\s.*\.(\w+\.\w+)\.$/ ) || ( /\s\(reply:\sread\serror\sfrom\s(\w+\.\w+)\.$/ ) ||
+ ( /\s\(timeout\swriting\smessage\sto\s.*\.(\w+\.\w+)\.:/ ) || ( /\s\(timeout\swriting\smessage\sto\s(\w+\.\w+)\.:/ ) ||
+ ( /\s\(host\smap:\slookup\s\(.*\.(\w+\.\w+)\):/ ) || ( /\s\(host\smap:\slookup\s\((\w+\.\w+)\):/ ) ||
+ ( /\s\(Deferred:\s.*\s.*\.(\w+\.\w+)\.\)/ ) || ( /\s\(Deferred:\s.*\s(\w+\.\w+)\.\)/ ) ) {
+
+ print "$utils::PATH_TO_MAILQ = dstdomain = $1 \n" if $verbose ;
+ $dstdomains{$1} ++;
+ }
+
+ if (/\s+\(I\/O\serror\)/) {
+ print "$utils::PATH_TO_MAILQ = dstdomain = UNKNOWN \n" if $verbose ;
+ $dstdomains{'UNKNOWN'} ++;
+ }
+
+ # Finally look at the overall queue length
+ #
+ if (/mqueue/) {
+ print "$utils::PATH_TO_MAILQ = $_ "if $verbose ;
+ if (/ \((\d+) request/) {
+ #
+ # single queue: first line
+ # multi queue: one for each queue. overwrite on multi queue below
+ $msg_q = $1 ;
+ }
+ } elsif (/^\s+Total\sRequests:\s(\d+)$/i) {
+ print "$utils::PATH_TO_MAILQ = $_ \n" if $verbose ;
+ #
+ # multi queue: last line
+ $msg_q = $1 ;
+ }
+
+ }
+
+
+ ## close mailq
+
+ close (MAILQ);
+
+ if ( $? ) {
+ print "CRITICAL: Error code ".($?>>8)." returned from $utils::PATH_TO_MAILQ",$/;
+ exit $ERRORS{CRITICAL};
+ }
+
+ ## shut off the alarm
+ alarm(0);
+
+
+
+ ## now check the queue length(s)
+
+ if ($msg_q == 0) {
+ $msg = "OK: mailq is empty";
+ $state = $ERRORS{'OK'};
+ } else {
+ print "msg_q = $msg_q warn=$opt_w crit=$opt_c\n" if $verbose;
+
+ # overall queue length
+ if ($msg_q < $opt_w) {
+ $msg = "OK: mailq ($msg_q) is below threshold ($opt_w/$opt_c)";
+ $state = $ERRORS{'OK'};
+ }elsif ($msg_q >= $opt_w && $msg_q < $opt_c) {
+ $msg = "WARNING: mailq is $msg_q (threshold w = $opt_w)";
+ $state = $ERRORS{'WARNING'};
+ }else {
+ $msg = "CRITICAL: mailq is $msg_q (threshold c = $opt_c)";
+ $state = $ERRORS{'CRITICAL'};
+ }
+
+ # check for domain specific queue lengths if requested
+ if (defined $opt_W) {
+
+ # Apply threshold to queue lengths FROM domain
+ my @srckeys = sort { $srcdomains{$b} <=> $srcdomains{$a} } keys %srcdomains;
+ my $srcmaxkey = $srckeys[0];
+ print "src max is $srcmaxkey with $srcdomains{$srcmaxkey} messages\n" if $verbose;
+
+ if ($srcdomains{$srcmaxkey} >= $opt_W && $srcdomains{$srcmaxkey} < $opt_C) {
+ if ($state == $ERRORS{'OK'}) {
+ $msg = "WARNING: $srcdomains{$srcmaxkey} messages in queue FROM $srcmaxkey (threshold W = $opt_W)";
+ $state = $ERRORS{'WARNING'};
+ } elsif (($state == $ERRORS{'WARNING'}) || ($state == $ERRORS{'CRITICAL'})){
+ $msg .= " -and- $srcdomains{$srcmaxkey} messages in queue FROM $srcmaxkey (threshold W = $opt_W)";
+ } else {
+ $msg = "WARNING: $srcdomains{$srcmaxkey} messages in queue FROM $srcmaxkey (threshold W = $opt_W)";
+ $state = $ERRORS{'WARNING'};
+ }
+ } elsif ($srcdomains{$srcmaxkey} >= $opt_C) {
+ if ($state == $ERRORS{'OK'}) {
+ $msg = "CRITICAL: $srcdomains{$srcmaxkey} messages in queue FROM $srcmaxkey (threshold C = $opt_C)";
+ $state = $ERRORS{'CRITICAL'};
+ } elsif ($state == $ERRORS{'WARNING'}) {
+ $msg = "CRITICAL: $srcdomains{$srcmaxkey} messages in queue FROM $srcmaxkey (threshold C = $opt_C) -and- " . $msg;
+ $msg =~ s/WARNING: //;
+ } elsif ($state == $ERRORS{'CRITICAL'}) {
+ $msg .= " -and- $srcdomains{$srcmaxkey} messages in queue FROM $srcmaxkey (threshold W = $opt_W)";
+ } else {
+ $msg = "CRITICAL: $srcdomains{$srcmaxkey} messages in queue FROM $srcmaxkey (threshold W = $opt_W)";
+ $state = $ERRORS{'CRITICAL'};
+ }
+ } else {
+ if ($srcdomains{$srcmaxkey} > 0) {
+ $msg .= " $srcdomains{$srcmaxkey} msgs. FROM $srcmaxkey is below threshold ($opt_W/$opt_C)";
+ }
+ }
+
+ # Apply threshold to queue lengths TO domain
+ my @dstkeys = sort { $dstdomains{$b} <=> $dstdomains{$a} } keys %dstdomains;
+ my $dstmaxkey = $dstkeys[0];
+ print "dst max is $dstmaxkey with $dstdomains{$dstmaxkey} messages\n" if $verbose;
+
+ if ($dstdomains{$dstmaxkey} >= $opt_W && $dstdomains{$dstmaxkey} < $opt_C) {
+ if ($state == $ERRORS{'OK'}) {
+ $msg = "WARNING: $dstdomains{$dstmaxkey} messages in queue TO $dstmaxkey (threshold W = $opt_W)";
+ $state = $ERRORS{'WARNING'};
+ } elsif (($state == $ERRORS{'WARNING'}) || ($state == $ERRORS{'CRITICAL'})){
+ $msg .= " -and- $dstdomains{$dstmaxkey} messages in queue TO $dstmaxkey (threshold W = $opt_W)";
+ } else {
+ $msg = "WARNING: $dstdomains{$dstmaxkey} messages in queue TO $dstmaxkey (threshold W = $opt_W)";
+ $state = $ERRORS{'WARNING'};
+ }
+ } elsif ($dstdomains{$dstmaxkey} >= $opt_C) {
+ if ($state == $ERRORS{'OK'}) {
+ $msg = "CRITICAL: $dstdomains{$dstmaxkey} messages in queue TO $dstmaxkey (threshold C = $opt_C)";
+ $state = $ERRORS{'CRITICAL'};
+ } elsif ($state == $ERRORS{'WARNING'}) {
+ $msg = "CRITICAL: $dstdomains{$dstmaxkey} messages in queue TO $dstmaxkey (threshold C = $opt_C) -and- " . $msg;
+ $msg =~ s/WARNING: //;
+ } elsif ($state == $ERRORS{'CRITICAL'}) {
+ $msg .= " -and- $dstdomains{$dstmaxkey} messages in queue TO $dstmaxkey (threshold W = $opt_W)";
+ } else {
+ $msg = "CRITICAL: $dstdomains{$dstmaxkey} messages in queue TO $dstmaxkey (threshold W = $opt_W)";
+ $state = $ERRORS{'CRITICAL'};
+ }
+ } else {
+ if ($dstdomains{$dstmaxkey} > 0) {
+ $msg .= " $dstdomains{$dstmaxkey} msgs. TO $dstmaxkey is below threshold ($opt_W/$opt_C)";
+ }
+ }
+
+ } # End of queue length thresholds
+
+ }
+
+} # end of ($mailq eq "sendmail")
+elsif ( $mailq eq "postfix" ) {
+
+ ## open mailq
+ if ( defined $utils::PATH_TO_MAILQ && -x $utils::PATH_TO_MAILQ ) {
+ if (! open (MAILQ, "$utils::PATH_TO_MAILQ | " ) ) {
+ print "ERROR: could not open $utils::PATH_TO_MAILQ \n";
+ exit $ERRORS{'UNKNOWN'};
+ }
+ }elsif( defined $utils::PATH_TO_MAILQ){
+ unless (-x $utils::PATH_TO_MAILQ) {
+ print "ERROR: $utils::PATH_TO_MAILQ is not executable by (uid $>:gid($)))\n";
+ exit $ERRORS{'UNKNOWN'};
+ }
+ } else {
+ print "ERROR: \$utils::PATH_TO_MAILQ is not defined\n";
+ exit $ERRORS{'UNKNOWN'};
+ }
+
+
+ @lines = reverse <MAILQ>;
+
+ # close qmail-qstat
+ close MAILQ;
+
+ if ( $? ) {
+ print "CRITICAL: Error code ".($?>>8)." returned from $utils::PATH_TO_MAILQ",$/;
+ exit $ERRORS{CRITICAL};
+ }
+
+ ## shut off the alarm
+ alarm(0);
+
+ # check queue length
+ if ($lines[0]=~/Kbytes in (\d+)/) {
+ $msg_q = $1 ;
+ }elsif ($lines[0]=~/Mail queue is empty/) {
+ $msg_q = 0;
+ }else{
+ print "Couldn't match $utils::PATH_TO_QMAIL_QSTAT output\n";
+ exit $ERRORS{'UNKNOWN'};
+ }
+
+ # check messages not processed
+ #if ($lines[1]=~/^messages in queue but not yet preprocessed: (\d+)/) {
+ # my $msg_p = $1;
+ #}else{
+ # print "Couldn't match $utils::PATH_TO_QMAIL_QSTAT output\n";
+ # exit $ERRORS{'UNKNOWN'};
+ #}
+
+ # check queue length(s)
+ if ($msg_q == 0){
+ $msg = "OK: mailq reports queue is empty";
+ $state = $ERRORS{'OK'};
+ } else {
+ print "msg_q = $msg_q warn=$opt_w crit=$opt_c\n" if $verbose;
+
+ # overall queue length
+ if ($msg_q < $opt_w) {
+ $msg = "OK: mailq ($msg_q) is below threshold ($opt_w/$opt_c)";
+ $state = $ERRORS{'OK'};
+ }elsif ($msg_q >= $opt_w && $msg_q < $opt_c) {
+ $msg = "WARNING: mailq is $msg_q (threshold w = $opt_w)";
+ $state = $ERRORS{'WARNING'};
+ }else {
+ $msg = "CRITICAL: mailq is $msg_q (threshold c = $opt_c)";
+ $state = $ERRORS{'CRITICAL'};
+ }
+
+ # check messages not yet preprocessed (only compare is $opt_W and $opt_C
+ # are defined)
+
+ #if (defined $opt_W) {
+ # $msg .= "[Preprocessed = $msg_p]";
+ # if ($msg_p >= $opt_W && $msg_p < $opt_C ) {
+ # $state = $state == $ERRORS{"CRITICAL"} ? $ERRORS{"CRITICAL"} : $ERRORS{"WARNING"} ;
+ # }elsif ($msg_p >= $opt_C ) {
+ # $state = $ERRORS{"CRITICAL"} ;
+ # }
+ #}
+ }
+} # end of ($mailq eq "postfixl")
+elsif ( $mailq eq "qmail" ) {
+
+ # open qmail-qstat
+ if ( defined $utils::PATH_TO_QMAIL_QSTAT && -x $utils::PATH_TO_QMAIL_QSTAT ) {
+ if (! open (MAILQ, "$utils::PATH_TO_QMAIL_QSTAT | " ) ) {
+ print "ERROR: could not open $utils::PATH_TO_QMAIL_QSTAT \n";
+ exit $ERRORS{'UNKNOWN'};
+ }
+ }elsif( defined $utils::PATH_TO_QMAIL_QSTAT){
+ unless (-x $utils::PATH_TO_QMAIL_QSTAT) {
+ print "ERROR: $utils::PATH_TO_QMAIL_QSTAT is not executable by (uid $>:gid($)))\n";
+ exit $ERRORS{'UNKNOWN'};
+ }
+ } else {
+ print "ERROR: \$utils::PATH_TO_QMAIL_QSTAT is not defined\n";
+ exit $ERRORS{'UNKNOWN'};
+ }
+
+ @lines = <MAILQ>;
+
+ # close qmail-qstat
+ close MAILQ;
+
+ if ( $? ) {
+ print "CRITICAL: Error code ".($?>>8)." returned from $utils::PATH_TO_MAILQ",$/;
+ exit $ERRORS{CRITICAL};
+ }
+
+ ## shut off the alarm
+ alarm(0);
+
+ # check queue length
+ if ($lines[0]=~/^messages in queue: (\d+)/) {
+ $msg_q = $1 ;
+ }else{
+ print "Couldn't match $utils::PATH_TO_QMAIL_QSTAT output\n";
+ exit $ERRORS{'UNKNOWN'};
+ }
+
+ # check messages not processed
+ if ($lines[1]=~/^messages in queue but not yet preprocessed: (\d+)/) {
+ my $msg_p = $1;
+ }else{
+ print "Couldn't match $utils::PATH_TO_QMAIL_QSTAT output\n";
+ exit $ERRORS{'UNKNOWN'};
+ }
+
+
+ # check queue length(s)
+ if ($msg_q == 0){
+ $msg = "OK: qmail-qstat reports queue is empty";
+ $state = $ERRORS{'OK'};
+ } else {
+ print "msg_q = $msg_q warn=$opt_w crit=$opt_c\n" if $verbose;
+
+ # overall queue length
+ if ($msg_q < $opt_w) {
+ $msg = "OK: mailq ($msg_q) is below threshold ($opt_w/$opt_c)";
+ $state = $ERRORS{'OK'};
+ }elsif ($msg_q >= $opt_w && $msg_q < $opt_c) {
+ $msg = "WARNING: mailq is $msg_q (threshold w = $opt_w)";
+ $state = $ERRORS{'WARNING'};
+ }else {
+ $msg = "CRITICAL: mailq is $msg_q (threshold c = $opt_c)";
+ $state = $ERRORS{'CRITICAL'};
+ }
+
+ # check messages not yet preprocessed (only compare is $opt_W and $opt_C
+ # are defined)
+
+ if (defined $opt_W) {
+ $msg .= "[Preprocessed = $msg_p]";
+ if ($msg_p >= $opt_W && $msg_p < $opt_C ) {
+ $state = $state == $ERRORS{"CRITICAL"} ? $ERRORS{"CRITICAL"} : $ERRORS{"WARNING"} ;
+ }elsif ($msg_p >= $opt_C ) {
+ $state = $ERRORS{"CRITICAL"} ;
+ }
+ }
+ }
+
+
+
+} # end of ($mailq eq "qmail")
+elsif ( $mailq eq "exim" ) {
+ ## open mailq
+ if ( defined $utils::PATH_TO_MAILQ && -x $utils::PATH_TO_MAILQ ) {
+ if (! open (MAILQ, "$utils::PATH_TO_MAILQ | " ) ) {
+ print "ERROR: could not open $utils::PATH_TO_MAILQ \n";
+ exit $ERRORS{'UNKNOWN'};
+ }
+ }elsif( defined $utils::PATH_TO_MAILQ){
+ unless (-x $utils::PATH_TO_MAILQ) {
+ print "ERROR: $utils::PATH_TO_MAILQ is not executable by (uid $>:gid($)))\n";
+ exit $ERRORS{'UNKNOWN'};
+ }
+ } else {
+ print "ERROR: \$utils::PATH_TO_MAILQ is not defined\n";
+ exit $ERRORS{'UNKNOWN'};
+ }
+
+ while (<MAILQ>) {
+ #22m 1.7K 19aEEr-0007hx-Dy <> *** frozen ***
+ #root@exlixams.glups.fr
+
+ if (/\s[\w\d]{6}-[\w\d]{6}-[\w\d]{2}\s/) { # message id 19aEEr-0007hx-Dy
+ $msg_q++ ;
+ }
+ }
+ close(MAILQ) ;
+
+ if ( $? ) {
+ print "CRITICAL: Error code ".($?>>8)." returned from $utils::PATH_TO_MAILQ",$/;
+ exit $ERRORS{CRITICAL};
+ }
+ if ($msg_q < $opt_w) {
+ $msg = "OK: mailq ($msg_q) is below threshold ($opt_w/$opt_c)";
+ $state = $ERRORS{'OK'};
+ }elsif ($msg_q >= $opt_w && $msg_q < $opt_c) {
+ $msg = "WARNING: mailq is $msg_q (threshold w = $opt_w)";
+ $state = $ERRORS{'WARNING'};
+ }else {
+ $msg = "CRITICAL: mailq is $msg_q (threshold c = $opt_c)";
+ $state = $ERRORS{'CRITICAL'};
+ }
+} # end of ($mailq eq "exim")
+
+# Perfdata support
+print "$msg|unsent=$msg_q;$opt_w;$opt_c;0\n";
+exit $state;
+
+
+#####################################
+#### subs
+
+
+sub process_arguments(){
+ GetOptions
+ ("V" => \$opt_V, "version" => \$opt_V,
+ "v" => \$opt_v, "verbose" => \$opt_v,
+ "h" => \$opt_h, "help" => \$opt_h,
+ "M:s" => \$opt_M, "mailserver:s" => \$opt_M, # mailserver (default sendmail)
+ "w=i" => \$opt_w, "warning=i" => \$opt_w, # warning if above this number
+ "c=i" => \$opt_c, "critical=i" => \$opt_c, # critical if above this number
+ "t=i" => \$opt_t, "timeout=i" => \$opt_t
+ );
+
+ if ($opt_V) {
+ print_revision($PROGNAME,'1.4.15');
+ exit $ERRORS{'OK'};
+ }
+
+ if ($opt_h) {
+ print_help();
+ exit $ERRORS{'OK'};
+ }
+
+ if (defined $opt_v ){
+ $verbose = $opt_v;
+ }
+
+ unless (defined $opt_t) {
+ $opt_t = $utils::TIMEOUT ; # default timeout
+ }
+
+ unless ( defined $opt_w && defined $opt_c ) {
+ print_usage();
+ exit $ERRORS{'UNKNOWN'};
+ }
+
+ if ( $opt_w >= $opt_c) {
+ print "Warning (-w) cannot be greater than Critical (-c)!\n";
+ exit $ERRORS{'UNKNOWN'};
+ }
+
+ if (defined $opt_W && ! defined !$opt_C) {
+ print "Need -C if using -W\n";
+ exit $ERRORS{'UNKNOWN'};
+ }elsif(defined $opt_W && defined $opt_C) {
+ if ($opt_W >= $opt_C) {
+ print "Warning (-W) cannot be greater than Critical (-C)!\n";
+ exit $ERRORS{'UNKNOWN'};
+ }
+ }
+
+ if (defined $opt_M) {
+ if ($opt_M =~ /^(sendmail|qmail|postfix|exim)$/) {
+ $mailq = $opt_M ;
+ }elsif( $opt_M eq ''){
+ $mailq = 'sendmail';
+ }else{
+ print "-M: $opt_M is not supported\n";
+ exit $ERRORS{'UNKNOWN'};
+ }
+ }else{
+ $mailq = 'sendmail' ;
+ }
+
+ return $ERRORS{'OK'};
+}
+
+sub print_usage () {
+ print "Usage: $PROGNAME -w <warn> -c <crit> [-W <warn>] [-C <crit>] [-M <MTA>] [-t <timeout>] [-v verbose]\n";
+}
+
+sub print_help () {
+ print_revision($PROGNAME,'1.4.15');
+ print "Copyright (c) 2002 Subhendu Ghosh/Carlos Canau/Benjamin Schmid\n";
+ print "\n";
+ print_usage();
+ print "\n";
+ print " Checks the number of messages in the mail queue (supports multiple sendmail queues, qmail)\n";
+ print " Feedback/patches to support non-sendmail mailqueue welcome\n\n";
+ print "-w (--warning) = Min. number of messages in queue to generate warning\n";
+ print "-c (--critical) = Min. number of messages in queue to generate critical alert ( w < c )\n";
+ print "-W (--Warning) = Min. number of messages for same domain in queue to generate warning\n";
+ print "-C (--Critical) = Min. number of messages for same domain in queue to generate critical alert ( W < C )\n";
+ print "-t (--timeout) = Plugin timeout in seconds (default = $utils::TIMEOUT)\n";
+ print "-M (--mailserver) = [ sendmail | qmail | postfix | exim ] (default = sendmail)\n";
+ print "-h (--help)\n";
+ print "-V (--version)\n";
+ print "-v (--verbose) = debugging output\n";
+ print "\n\n";
+ print "Note: -w and -c are required arguments. -W and -C are optional.\n";
+ print " -W and -C are applied to domains listed on the queues - both FROM and TO. (sendmail)\n";
+ print " -W and -C are applied message not yet preproccessed. (qmail)\n";
+ print " This plugin uses the system mailq command (sendmail) or qmail-stat (qmail)\n";
+ print " to look at the queues. Mailq can usually only be accessed by root or \n";
+ print " a TrustedUser. You will have to set appropriate permissions for the plugin to work.\n";
+ print "";
+ print "\n\n";
+ support();
+}
diff --git a/god/Monitoring/nagios/plugins/check_mem.pl b/god/Monitoring/nagios/plugins/check_mem.pl
new file mode 100755
index 00000000..99e2b1f7
--- /dev/null
+++ b/god/Monitoring/nagios/plugins/check_mem.pl
@@ -0,0 +1,263 @@
+#!/usr/bin/perl -w
+# $Id: check_mem.pl 2 2002-02-28 06:42:51Z egalstad $
+
+# Original script stolen from:
+# check_mem.pl Copyright (C) 2000 Dan Larsson <dl@tyfon.net>
+# hacked by
+# Justin Ellison <justin@techadvise.com>
+#
+# This program is free software; you can redistribute it and/or
+# modify it under the terms of the GNU General Public License
+# as published by the Free Software Foundation; either version 2
+# of the License, or (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty
+# of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# you should have received a copy of the GNU General Public License
+# along with this program (or with Nagios); if not, write to the
+# Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+# Boston, MA 02111-1307, USA
+
+# Tell Perl what we need to use
+use strict;
+use Getopt::Std;
+
+#TODO - Convert to Nagios::Plugin
+#TODO - Use an alarm
+
+# Predefined exit codes for Nagios
+use vars qw($opt_c $opt_f $opt_u $opt_w $opt_C $opt_v %exit_codes);
+%exit_codes = ('UNKNOWN' ,-1,
+ 'OK' , 0,
+ 'WARNING' , 1,
+ 'CRITICAL', 2,
+ );
+
+# Get our variables, do our checking:
+init();
+
+# Get the numbers:
+my ($free_memory_kb,$used_memory_kb,$caches_kb) = get_memory_info();
+print "$free_memory_kb Free\n$used_memory_kb Used\n$caches_kb Cache\n" if ($opt_v);
+
+if ($opt_C) { #Do we count caches as free?
+ $used_memory_kb -= $caches_kb;
+ $free_memory_kb += $caches_kb;
+}
+
+# Round to the nearest KB
+$free_memory_kb = sprintf('%d',$free_memory_kb);
+$used_memory_kb = sprintf('%d',$used_memory_kb);
+$caches_kb = sprintf('%d',$caches_kb);
+
+# Tell Nagios what we came up with
+tell_nagios($used_memory_kb,$free_memory_kb,$caches_kb);
+
+
+sub tell_nagios {
+ my ($used,$free,$caches) = @_;
+
+ # Calculate Total Memory
+ my $total = $free + $used;
+ print "$total Total\n" if ($opt_v);
+
+ my $perfdata = "|TOTAL=${total}KB;;;; USED=${used}KB;;;; FREE=${free}KB;;;; CACHES=${caches}KB;;;;";
+
+ if ($opt_f) {
+ my $percent = sprintf "%.1f", ($free / $total * 100);
+ if ($percent <= $opt_c) {
+ finish("CRITICAL - $percent% ($free kB) free!$perfdata",$exit_codes{'CRITICAL'});
+ }
+ elsif ($percent <= $opt_w) {
+ finish("WARNING - $percent% ($free kB) free!$perfdata",$exit_codes{'WARNING'});
+ }
+ else {
+ finish("OK - $percent% ($free kB) free.$perfdata",$exit_codes{'OK'});
+ }
+ }
+ elsif ($opt_u) {
+ my $percent = sprintf "%.1f", ($used / $total * 100);
+ if ($percent >= $opt_c) {
+ finish("CRITICAL - $percent% ($used kB) used!$perfdata",$exit_codes{'CRITICAL'});
+ }
+ elsif ($percent >= $opt_w) {
+ finish("WARNING - $percent% ($used kB) used!$perfdata",$exit_codes{'WARNING'});
+ }
+ else {
+ finish("OK - $percent% ($used kB) used.$perfdata",$exit_codes{'OK'});
+ }
+ }
+}
+
+# Show usage
+sub usage() {
+ print "\ncheck_mem.pl v1.0 - Nagios Plugin\n\n";
+ print "usage:\n";
+ print " check_mem.pl -<f|u> -w <warnlevel> -c <critlevel>\n\n";
+ print "options:\n";
+ print " -f Check FREE memory\n";
+ print " -u Check USED memory\n";
+ print " -C Count OS caches as FREE memory\n";
+ print " -w PERCENT Percent free/used when to warn\n";
+ print " -c PERCENT Percent free/used when critical\n";
+ print "\nCopyright (C) 2000 Dan Larsson <dl\@tyfon.net>\n";
+ print "check_mem.pl comes with absolutely NO WARRANTY either implied or explicit\n";
+ print "This program is licensed under the terms of the\n";
+ print "GNU General Public License (check source code for details)\n";
+ exit $exit_codes{'UNKNOWN'};
+}
+
+sub get_memory_info {
+ my $used_memory_kb = 0;
+ my $free_memory_kb = 0;
+ my $total_memory_kb = 0;
+ my $caches_kb = 0;
+
+ my $uname;
+ if ( -e '/usr/bin/uname') {
+ $uname = `/usr/bin/uname -a`;
+ }
+ elsif ( -e '/bin/uname') {
+ $uname = `/bin/uname -a`;
+ }
+ else {
+ die "Unable to find uname in /usr/bin or /bin!\n";
+ }
+ print "uname returns $uname" if ($opt_v);
+ if ( $uname =~ /Linux/ ) {
+ my @meminfo = `/bin/cat /proc/meminfo`;
+ foreach (@meminfo) {
+ chomp;
+ if (/^Mem(Total|Free):\s+(\d+) kB/) {
+ my $counter_name = $1;
+ if ($counter_name eq 'Free') {
+ $free_memory_kb = $2;
+ }
+ elsif ($counter_name eq 'Total') {
+ $total_memory_kb = $2;
+ }
+ }
+ elsif (/^(Buffers|Cached):\s+(\d+) kB/) {
+ $caches_kb += $2;
+ }
+ }
+ $used_memory_kb = $total_memory_kb - $free_memory_kb;
+ }
+ elsif ( $uname =~ /SunOS/ ) {
+ eval "use Sun::Solaris::Kstat";
+ if ($@) { #Kstat not available
+ if ($opt_C) {
+ print "You can't report on Solaris caches without Sun::Solaris::Kstat available!\n";
+ exit $exit_codes{UNKNOWN};
+ }
+ my @vmstat = `/usr/bin/vmstat 1 2`;
+ my $line;
+ foreach (@vmstat) {
+ chomp;
+ $line = $_;
+ }
+ $free_memory_kb = (split(/ /,$line))[5] / 1024;
+ my @prtconf = `/usr/sbin/prtconf`;
+ foreach (@prtconf) {
+ if (/^Memory size: (\d+) Megabytes/) {
+ $total_memory_kb = $1 * 1024;
+ }
+ }
+ $used_memory_kb = $total_memory_kb - $free_memory_kb;
+
+ }
+ else { # We have kstat
+ my $kstat = Sun::Solaris::Kstat->new();
+ my $phys_pages = ${kstat}->{unix}->{0}->{system_pages}->{physmem};
+ my $free_pages = ${kstat}->{unix}->{0}->{system_pages}->{freemem};
+ # We probably should account for UFS caching here, but it's unclear
+ # to me how to determine UFS's cache size. There's inode_cache,
+ # and maybe the physmem variable in the system_pages module??
+ # In the real world, it looks to be so small as not to really matter,
+ # so we don't grab it. If someone can give me code that does this,
+ # I'd be glad to put it in.
+ my $arc_size = (exists ${kstat}->{zfs} && ${kstat}->{zfs}->{0}->{arcstats}->{size}) ?
+ ${kstat}->{zfs}->{0}->{arcstats}->{size} / 1024
+ : 0;
+ $caches_kb += $arc_size;
+ my $pagesize = `pagesize`;
+
+ $total_memory_kb = $phys_pages * $pagesize / 1024;
+ $free_memory_kb = $free_pages * $pagesize / 1024;
+ $used_memory_kb = $total_memory_kb - $free_memory_kb;
+ }
+ }
+ elsif ( $uname =~ /AIX/ ) {
+ my @meminfo = `/usr/bin/vmstat -v`;
+ foreach (@meminfo) {
+ chomp;
+ if (/^\s*([0-9.]+)\s+(.*)/) {
+ my $counter_name = $2;
+ if ($counter_name eq 'memory pages') {
+ $total_memory_kb = $1*4;
+ }
+ if ($counter_name eq 'free pages') {
+ $free_memory_kb = $1*4;
+ }
+ if ($counter_name eq 'file pages') {
+ $caches_kb = $1*4;
+ }
+ }
+ }
+ $used_memory_kb = $total_memory_kb - $free_memory_kb;
+ }
+ else {
+ if ($opt_C) {
+ print "You can't report on $uname caches!\n";
+ exit $exit_codes{UNKNOWN};
+ }
+ my $command_line = `vmstat | tail -1 | awk '{print \$4,\$5}'`;
+ chomp $command_line;
+ my @memlist = split(/ /, $command_line);
+
+ # Define the calculating scalars
+ $used_memory_kb = $memlist[0]/1024;
+ $free_memory_kb = $memlist[1]/1024;
+ $total_memory_kb = $used_memory_kb + $free_memory_kb;
+ }
+ return ($free_memory_kb,$used_memory_kb,$caches_kb);
+}
+
+sub init {
+ # Get the options
+ if ($#ARGV le 0) {
+ &usage;
+ }
+ else {
+ getopts('c:fuCvw:');
+ }
+
+ # Shortcircuit the switches
+ if (!$opt_w or $opt_w == 0 or !$opt_c or $opt_c == 0) {
+ print "*** You must define WARN and CRITICAL levels!\n";
+ &usage;
+ }
+ elsif (!$opt_f and !$opt_u) {
+ print "*** You must select to monitor either USED or FREE memory!\n";
+ &usage;
+ }
+
+ # Check if levels are sane
+ if ($opt_w <= $opt_c and $opt_f) {
+ print "*** WARN level must not be less than CRITICAL when checking FREE memory!\n";
+ &usage;
+ }
+ elsif ($opt_w >= $opt_c and $opt_u) {
+ print "*** WARN level must not be greater than CRITICAL when checking USED memory!\n";
+ &usage;
+ }
+}
+
+sub finish {
+ my ($msg,$state) = @_;
+ print "$msg\n";
+ exit $state;
+}
diff --git a/god/Monitoring/nagios/plugins/check_mrtg b/god/Monitoring/nagios/plugins/check_mrtg
new file mode 100755
index 00000000..33a912e6
--- /dev/null
+++ b/god/Monitoring/nagios/plugins/check_mrtg
Binary files differ
diff --git a/god/Monitoring/nagios/plugins/check_mrtgtraf b/god/Monitoring/nagios/plugins/check_mrtgtraf
new file mode 100755
index 00000000..ca686d72
--- /dev/null
+++ b/god/Monitoring/nagios/plugins/check_mrtgtraf
Binary files differ
diff --git a/god/Monitoring/nagios/plugins/check_mysql b/god/Monitoring/nagios/plugins/check_mysql
new file mode 100755
index 00000000..5dd232b2
--- /dev/null
+++ b/god/Monitoring/nagios/plugins/check_mysql
Binary files differ
diff --git a/god/Monitoring/nagios/plugins/check_mysql_query b/god/Monitoring/nagios/plugins/check_mysql_query
new file mode 100755
index 00000000..c456440f
--- /dev/null
+++ b/god/Monitoring/nagios/plugins/check_mysql_query
Binary files differ
diff --git a/god/Monitoring/nagios/plugins/check_nagios b/god/Monitoring/nagios/plugins/check_nagios
new file mode 100755
index 00000000..4cb2614e
--- /dev/null
+++ b/god/Monitoring/nagios/plugins/check_nagios
Binary files differ
diff --git a/god/Monitoring/nagios/plugins/check_nntp b/god/Monitoring/nagios/plugins/check_nntp
new file mode 120000
index 00000000..e838da97
--- /dev/null
+++ b/god/Monitoring/nagios/plugins/check_nntp
@@ -0,0 +1 @@
+check_tcp \ No newline at end of file
diff --git a/god/Monitoring/nagios/plugins/check_nntps b/god/Monitoring/nagios/plugins/check_nntps
new file mode 120000
index 00000000..e838da97
--- /dev/null
+++ b/god/Monitoring/nagios/plugins/check_nntps
@@ -0,0 +1 @@
+check_tcp \ No newline at end of file
diff --git a/god/Monitoring/nagios/plugins/check_nt b/god/Monitoring/nagios/plugins/check_nt
new file mode 100755
index 00000000..d1fd06e0
--- /dev/null
+++ b/god/Monitoring/nagios/plugins/check_nt
Binary files differ
diff --git a/god/Monitoring/nagios/plugins/check_ntp b/god/Monitoring/nagios/plugins/check_ntp
new file mode 100755
index 00000000..8fdc6857
--- /dev/null
+++ b/god/Monitoring/nagios/plugins/check_ntp
Binary files differ
diff --git a/god/Monitoring/nagios/plugins/check_ntp_peer b/god/Monitoring/nagios/plugins/check_ntp_peer
new file mode 100755
index 00000000..967b2a76
--- /dev/null
+++ b/god/Monitoring/nagios/plugins/check_ntp_peer
Binary files differ
diff --git a/god/Monitoring/nagios/plugins/check_ntp_time b/god/Monitoring/nagios/plugins/check_ntp_time
new file mode 100755
index 00000000..e8a78e05
--- /dev/null
+++ b/god/Monitoring/nagios/plugins/check_ntp_time
Binary files differ
diff --git a/god/Monitoring/nagios/plugins/check_nwstat b/god/Monitoring/nagios/plugins/check_nwstat
new file mode 100755
index 00000000..ad53275f
--- /dev/null
+++ b/god/Monitoring/nagios/plugins/check_nwstat
Binary files differ
diff --git a/god/Monitoring/nagios/plugins/check_oracle b/god/Monitoring/nagios/plugins/check_oracle
new file mode 100755
index 00000000..95cb68b6
--- /dev/null
+++ b/god/Monitoring/nagios/plugins/check_oracle
@@ -0,0 +1,287 @@
+#! /bin/bash
+#
+# latigid010@yahoo.com
+# 01/06/2000
+#
+# This Nagios plugin was created to check Oracle status
+#
+
+PROGNAME=`basename $0`
+PROGPATH=`echo $0 | sed -e 's,[\\/][^\\/][^\\/]*$,,'`
+REVISION="1.4.15"
+
+. $PROGPATH/utils.sh
+
+
+print_usage() {
+ echo "Usage:"
+ echo " $PROGNAME --tns <Oracle Sid or Hostname/IP address>"
+ echo " $PROGNAME --db <ORACLE_SID>"
+ echo " $PROGNAME --login <ORACLE_SID>"
+ echo " $PROGNAME --cache <ORACLE_SID> <USER> <PASS> <CRITICAL> <WARNING>"
+ echo " $PROGNAME --tablespace <ORACLE_SID> <USER> <PASS> <TABLESPACE> <CRITICAL> <WARNING>"
+ echo " $PROGNAME --oranames <Hostname>"
+ echo " $PROGNAME --help"
+ echo " $PROGNAME --version"
+}
+
+print_help() {
+ print_revision $PROGNAME $REVISION
+ echo ""
+ print_usage
+ echo ""
+ echo "Check Oracle status"
+ echo ""
+ echo "--tns SID/IP Address"
+ echo " Check remote TNS server"
+ echo "--db SID"
+ echo " Check local database (search /bin/ps for PMON process) and check"
+ echo " filesystem for sgadefORACLE_SID.dbf"
+ echo "--login SID"
+ echo " Attempt a dummy login and alert if not ORA-01017: invalid username/password"
+ echo "--cache"
+ echo " Check local database for library and buffer cache hit ratios"
+ echo " ---> Requires Oracle user/password and SID specified."
+ echo " ---> Requires select on v_$sysstat and v_$librarycache"
+ echo "--tablespace"
+ echo " Check local database for tablespace capacity in ORACLE_SID"
+ echo " ---> Requires Oracle user/password specified."
+ echo " ---> Requires select on dba_data_files and dba_free_space"
+ echo "--oranames Hostname"
+ echo " Check remote Oracle Names server"
+ echo "--help"
+ echo " Print this help screen"
+ echo "--version"
+ echo " Print version and license information"
+ echo ""
+ echo "If the plugin doesn't work, check that the ORACLE_HOME environment"
+ echo "variable is set, that ORACLE_HOME/bin is in your PATH, and the"
+ echo "tnsnames.ora file is locatable and is properly configured."
+ echo ""
+ echo "When checking local database status your ORACLE_SID is case sensitive."
+ echo ""
+ echo "If you want to use a default Oracle home, add in your oratab file:"
+ echo "*:/opt/app/oracle/product/7.3.4:N"
+ echo ""
+ support
+}
+
+case "$1" in
+1)
+ cmd='--tns'
+ ;;
+2)
+ cmd='--db'
+ ;;
+*)
+ cmd="$1"
+ ;;
+esac
+
+# Information options
+case "$cmd" in
+--help)
+ print_help
+ exit $STATE_OK
+ ;;
+-h)
+ print_help
+ exit $STATE_OK
+ ;;
+--version)
+ print_revision $PROGNAME $REVISION
+ exit $STATE_OK
+ ;;
+-V)
+ print_revision $PROGNAME $REVISION
+ exit $STATE_OK
+ ;;
+esac
+
+# Hunt down a reasonable ORACLE_HOME
+if [ -z "$ORACLE_HOME" ] ; then
+ # Adjust to taste
+ for oratab in /var/opt/oracle/oratab /etc/oratab
+ do
+ [ ! -f $oratab ] && continue
+ ORACLE_HOME=`IFS=:
+ while read SID ORACLE_HOME junk;
+ do
+ if [ "$SID" = "$2" -o "$SID" = "*" ] ; then
+ echo $ORACLE_HOME;
+ exit;
+ fi;
+ done < $oratab`
+ [ -n "$ORACLE_HOME" ] && break
+ done
+fi
+# Last resort
+[ -z "$ORACLE_HOME" -a -d $PROGPATH/oracle ] && ORACLE_HOME=$PROGPATH/oracle
+
+if [ "$cmd" != "--db" ]; then
+ if [ -z "$ORACLE_HOME" -o ! -d "$ORACLE_HOME" ] ; then
+ echo "Cannot determine ORACLE_HOME for sid $2"
+ exit $STATE_UNKNOWN
+ fi
+fi
+PATH=$PATH:$ORACLE_HOME/bin
+LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$ORACLE_HOME/lib
+export ORACLE_HOME PATH LD_LIBRARY_PATH
+
+case "$cmd" in
+--tns)
+ tnschk=` tnsping $2`
+ tnschk2=` echo $tnschk | grep -c OK`
+ if [ ${tnschk2} -eq 1 ] ; then
+ tnschk3=` echo $tnschk | sed -e 's/.*(//' -e 's/).*//'`
+ echo "OK - reply time ${tnschk3} from $2"
+ exit $STATE_OK
+ else
+ echo "No TNS Listener on $2"
+ exit $STATE_CRITICAL
+ fi
+ ;;
+--oranames)
+ namesctl status $2 | awk '
+ /Server has been running for:/ {
+ msg = "OK: Up"
+ for (i = 6; i <= NF; i++) {
+ msg = msg " " $i
+ }
+ status = '$STATE_OK'
+ }
+ /error/ {
+ msg = "CRITICAL: " $0
+ status = '$STATE_CRITICAL'
+ }
+ END {
+ print msg
+ exit status
+ }'
+ ;;
+--db)
+ pmonchk=`ps -ef | grep -v grep | grep -c "ora_pmon_${2}$"`
+ if [ ${pmonchk} -ge 1 ] ; then
+ echo "${2} OK - ${pmonchk} PMON process(es) running"
+ exit $STATE_OK
+ #if [ -f $ORACLE_HOME/dbs/sga*${2}* ] ; then
+ #if [ ${pmonchk} -eq 1 ] ; then
+ #utime=`ls -la $ORACLE_HOME/dbs/sga*$2* | cut -c 43-55`
+ #echo "${2} OK - running since ${utime}"
+ #exit $STATE_OK
+ #fi
+ else
+ echo "${2} Database is DOWN"
+ exit $STATE_CRITICAL
+ fi
+ ;;
+--login)
+ loginchk=`sqlplus dummy/user@$2 < /dev/null`
+ loginchk2=` echo $loginchk | grep -c ORA-01017`
+ if [ ${loginchk2} -eq 1 ] ; then
+ echo "OK - dummy login connected"
+ exit $STATE_OK
+ else
+ loginchk3=` echo "$loginchk" | grep "ORA-" | head -1`
+ echo "CRITICAL - $loginchk3"
+ exit $STATE_CRITICAL
+ fi
+ ;;
+--cache)
+ if [ ${5} -gt ${6} ] ; then
+ echo "UNKNOWN - Warning level is less then Crit"
+ exit $STATE_UNKNOWN
+ fi
+ result=`sqlplus -s ${3}/${4}@${2} << EOF
+set pagesize 0
+set numf '9999999.99'
+select (1-(pr.value/(dbg.value+cg.value)))*100
+from v\\$sysstat pr, v\\$sysstat dbg, v\\$sysstat cg
+where pr.name='physical reads'
+and dbg.name='db block gets'
+and cg.name='consistent gets';
+EOF`
+
+ if [ -n "`echo $result | grep ORA-`" ] ; then
+ error=` echo "$result" | grep "ORA-" | head -1`
+ echo "CRITICAL - $error"
+ exit $STATE_CRITICAL
+ fi
+
+ buf_hr=`echo "$result" | awk '/^[0-9\. \t]+$/ {print int($1)}'`
+ buf_hrx=`echo "$result" | awk '/^[0-9\. \t]+$/ {print $1}'`
+ result=`sqlplus -s ${3}/${4}@${2} << EOF
+set pagesize 0
+set numf '9999999.99'
+select sum(lc.pins)/(sum(lc.pins)+sum(lc.reloads))*100
+from v\\$librarycache lc;
+EOF`
+
+ if [ -n "`echo $result | grep ORA-`" ] ; then
+ error=` echo "$result" | grep "ORA-" | head -1`
+ echo "CRITICAL - $error"
+ exit $STATE_CRITICAL
+ fi
+
+ lib_hr=`echo "$result" | awk '/^[0-9\. \t]+$/ {print int($1)}'`
+ lib_hrx=`echo "$result" | awk '/^[0-9\. \t]+$/ {print $1}'`
+
+ if [ $buf_hr -le ${5} -o $lib_hr -le ${5} ] ; then
+ echo "${2} CRITICAL - Cache Hit Rates: $lib_hrx% Lib -- $buf_hrx% Buff|lib=$lib_hrx%;${6};${5};0;100 buffer=$buf_hrx%;${6};${5};0;100"
+ exit $STATE_CRITICAL
+ fi
+ if [ $buf_hr -le ${6} -o $lib_hr -le ${6} ] ; then
+ echo "${2} WARNING - Cache Hit Rates: $lib_hrx% Lib -- $buf_hrx% Buff|lib=$lib_hrx%;${6};${5};0;100 buffer=$buf_hrx%;${6};${5};0;100"
+ exit $STATE_WARNING
+ fi
+ echo "${2} OK - Cache Hit Rates: $lib_hrx% Lib -- $buf_hrx% Buff|lib=$lib_hrx%;${6};${5};0;100 buffer=$buf_hrx%;${6};${5};0;100"
+
+ exit $STATE_OK
+ ;;
+--tablespace)
+ if [ ${6} -lt ${7} ] ; then
+ echo "UNKNOWN - Warning level is more then Crit"
+ exit $STATE_UNKNOWN
+ fi
+ result=`sqlplus -s ${3}/${4}@${2} << EOF
+set pagesize 0
+set numf '9999999.99'
+select NVL(b.free,0.0),a.total,100 - trunc(NVL(b.free,0.0)/a.total * 1000) / 10 prc
+from (
+select tablespace_name,sum(bytes)/1024/1024 total
+from dba_data_files group by tablespace_name) A
+LEFT OUTER JOIN
+( select tablespace_name,sum(bytes)/1024/1024 free
+from dba_free_space group by tablespace_name) B
+ON a.tablespace_name=b.tablespace_name WHERE a.tablespace_name='${5}';
+EOF`
+
+ if [ -n "`echo $result | grep ORA-`" ] ; then
+ error=` echo "$result" | grep "ORA-" | head -1`
+ echo "CRITICAL - $error"
+ exit $STATE_CRITICAL
+ fi
+
+ ts_free=`echo "$result" | awk '/^[ 0-9\.\t ]+$/ {print int($1)}'`
+ ts_total=`echo "$result" | awk '/^[ 0-9\.\t ]+$/ {print int($2)}'`
+ ts_pct=`echo "$result" | awk '/^[ 0-9\.\t ]+$/ {print int($3)}'`
+ ts_pctx=`echo "$result" | awk '/^[ 0-9\.\t ]+$/ {print $3}'`
+ if [ "$ts_free" -eq 0 -a "$ts_total" -eq 0 -a "$ts_pct" -eq 0 ] ; then
+ echo "No data returned by Oracle - tablespace $5 not found?"
+ exit $STATE_UNKNOWN
+ fi
+ if [ "$ts_pct" -ge ${6} ] ; then
+ echo "${2} : ${5} CRITICAL - $ts_pctx% used [ $ts_free / $ts_total MB available ]|${5}=$ts_pctx%;${7};${6};0;100"
+ exit $STATE_CRITICAL
+ fi
+ if [ "$ts_pct" -ge ${7} ] ; then
+ echo "${2} : ${5} WARNING - $ts_pctx% used [ $ts_free / $ts_total MB available ]|${5}=$ts_pctx%;${7};${6};0;100"
+ exit $STATE_WARNING
+ fi
+ echo "${2} : ${5} OK - $ts_pctx% used [ $ts_free / $ts_total MB available ]|${5}=$ts_pctx%;${7};${6};0;100"
+ exit $STATE_OK
+ ;;
+*)
+ print_usage
+ exit $STATE_UNKNOWN
+esac
diff --git a/god/Monitoring/nagios/plugins/check_overcr b/god/Monitoring/nagios/plugins/check_overcr
new file mode 100755
index 00000000..d179627b
--- /dev/null
+++ b/god/Monitoring/nagios/plugins/check_overcr
Binary files differ
diff --git a/god/Monitoring/nagios/plugins/check_pgsql b/god/Monitoring/nagios/plugins/check_pgsql
new file mode 100755
index 00000000..0940a678
--- /dev/null
+++ b/god/Monitoring/nagios/plugins/check_pgsql
Binary files differ
diff --git a/god/Monitoring/nagios/plugins/check_ping b/god/Monitoring/nagios/plugins/check_ping
new file mode 100755
index 00000000..eac2e9a9
--- /dev/null
+++ b/god/Monitoring/nagios/plugins/check_ping
Binary files differ
diff --git a/god/Monitoring/nagios/plugins/check_pop b/god/Monitoring/nagios/plugins/check_pop
new file mode 120000
index 00000000..e838da97
--- /dev/null
+++ b/god/Monitoring/nagios/plugins/check_pop
@@ -0,0 +1 @@
+check_tcp \ No newline at end of file
diff --git a/god/Monitoring/nagios/plugins/check_procs b/god/Monitoring/nagios/plugins/check_procs
new file mode 100755
index 00000000..92c08b4a
--- /dev/null
+++ b/god/Monitoring/nagios/plugins/check_procs
Binary files differ
diff --git a/god/Monitoring/nagios/plugins/check_radius b/god/Monitoring/nagios/plugins/check_radius
new file mode 100755
index 00000000..71253c3e
--- /dev/null
+++ b/god/Monitoring/nagios/plugins/check_radius
Binary files differ
diff --git a/god/Monitoring/nagios/plugins/check_real b/god/Monitoring/nagios/plugins/check_real
new file mode 100755
index 00000000..408fb8ff
--- /dev/null
+++ b/god/Monitoring/nagios/plugins/check_real
Binary files differ
diff --git a/god/Monitoring/nagios/plugins/check_rpc b/god/Monitoring/nagios/plugins/check_rpc
new file mode 100755
index 00000000..10a847ef
--- /dev/null
+++ b/god/Monitoring/nagios/plugins/check_rpc
@@ -0,0 +1,375 @@
+#! /usr/bin/perl -w
+#
+# check_rpc plugin for nagios
+#
+# usage:
+# check_rpc host service
+#
+# Check if an rpc serice is registered and running
+# using rpcinfo - $proto $host $prognum 2>&1 |";
+#
+# Use these hosts.cfg entries as examples
+#
+# command[check_nfs]=/some/path/libexec/check_rpc $HOSTADDRESS$ nfs
+# service[check_nfs]=NFS;24x7;3;5;5;unix-admin;60;24x7;1;1;1;;check_rpc
+#
+# initial version: 3 May 2000 by Truongchinh Nguyen and Karl DeBisschop
+# Modified May 2002 Subhendu Ghosh - support for ePN and patches
+#
+# Copyright Notice: GPL
+#
+
+use strict;
+use lib "/usr/lib/nagios/plugins";
+use utils qw($TIMEOUT %ERRORS &print_revision &support);
+use vars qw($PROGNAME);
+my ($verbose,@proto,%prognum,$host,$response,$prognum,$port,$cmd,$progver,$state);
+my ($array_ref,$test,$element,@progkeys,$proto,$a,$b);
+my ($opt_V,$opt_h,$opt_C,$opt_p,$opt_H,$opt_c,$opt_u,$opt_t);
+my ($line, @progvers, $response2,$response3);
+$opt_V = $opt_h = $opt_C = $opt_p = $opt_H = $opt_u = $opt_t ='';
+$state = 'UNKNOWN';
+$progver = $response=$response2= $response3 ='';
+
+$PROGNAME = "check_rpc";
+sub print_help ();
+sub print_usage ();
+sub in ($$);
+
+$ENV{'BASH_ENV'}='';
+$ENV{'ENV'}='';
+$ENV{'PATH'}='';
+$ENV{'LC_ALL'}='C';
+
+#Initialise protocol for each progname number
+# 'u' for UDP, 't' for TCP
+$proto[10003]='u';
+$proto[10004]='u';
+$proto[10007]='u';
+
+use Getopt::Long;
+Getopt::Long::Configure('bundling');
+GetOptions(
+ "V" => \$opt_V, "version" => \$opt_V,
+ "h" => \$opt_h, "help" => \$opt_h,
+ "C=s" => \$opt_C, "command=s" => \$opt_C,
+ "p=i" => \$opt_p, "port=i" => \$opt_p,
+ "H=s" => \$opt_H, "hostname=s" => \$opt_H,
+ "c=s" => \$opt_c, "progver=s" => \$opt_c,
+ "v+" => \$verbose, "verbose+" => \$verbose,
+ "u" => \$opt_u, "udp" => \$opt_u,
+ "t" => \$opt_t, "tcp" => \$opt_t
+);
+
+# -h means display verbose help screen
+if ($opt_h) { print_help(); exit $ERRORS{'OK'}; }
+
+# -V means display version number
+if ($opt_V) {
+ print_revision($PROGNAME,'1.4.15');
+ exit $ERRORS{'OK'};
+}
+
+# Hash containing all RPC program names and numbers
+# Add to the hash if support for new RPC program is required
+
+%prognum = (
+ "portmapper" => 100000 ,
+ "portmap" => 100000 ,
+ "sunrpc" => 100000 ,
+ "rpcbind" => 100000 ,
+ "rstatd" => 100001 ,
+ "rstat" => 100001 ,
+ "rup" => 100001 ,
+ "perfmeter" => 100001 ,
+ "rstat_svc" => 100001 ,
+ "rusersd" => 100002 ,
+ "rusers" => 100002 ,
+ "nfs" => 100003 ,
+ "nfsprog" => 100003 ,
+ "ypserv" => 100004 ,
+ "ypprog" => 100004 ,
+ "mountd" => 100005 ,
+ "mount" => 100005 ,
+ "showmount" => 100005 ,
+ "ypbind" => 100007 ,
+ "walld" => 100008 ,
+ "rwall" => 100008 ,
+ "shutdown" => 100008 ,
+ "yppasswdd" => 100009 ,
+ "yppasswd" => 100009 ,
+ "etherstatd" => 100010 ,
+ "etherstat" => 100010 ,
+ "rquotad" => 100011 ,
+ "rquotaprog" => 100011 ,
+ "quota" => 100011 ,
+ "rquota" => 100011 ,
+ "sprayd" => 100012 ,
+ "spray" => 100012 ,
+ "3270_mapper" => 100013 ,
+ "rje_mapper" => 100014 ,
+ "selection_svc" => 100015 ,
+ "selnsvc" => 100015 ,
+ "database_svc" => 100016 ,
+ "rexd" => 100017 ,
+ "rex" => 100017 ,
+ "alis" => 100018 ,
+ "sched" => 100019 ,
+ "llockmgr" => 100020 ,
+ "nlockmgr" => 100021 ,
+ "x25_inr" => 100022 ,
+ "statmon" => 100023 ,
+ "status" => 100024 ,
+ "bootparam" => 100026 ,
+ "ypupdated" => 100028 ,
+ "ypupdate" => 100028 ,
+ "keyserv" => 100029 ,
+ "keyserver" => 100029 ,
+ "sunlink_mapper" => 100033 ,
+ "tfsd" => 100037 ,
+ "nsed" => 100038 ,
+ "nsemntd" => 100039 ,
+ "showfhd" => 100043 ,
+ "showfh" => 100043 ,
+ "ioadmd" => 100055 ,
+ "rpc.ioadmd" => 100055 ,
+ "NETlicense" => 100062 ,
+ "sunisamd" => 100065 ,
+ "debug_svc" => 100066 ,
+ "dbsrv" => 100066 ,
+ "ypxfrd" => 100069 ,
+ "rpc.ypxfrd" => 100069 ,
+ "bugtraqd" => 100071 ,
+ "kerbd" => 100078 ,
+ "event" => 100101 ,
+ "na.event" => 100101 ,
+ "logger" => 100102 ,
+ "na.logger" => 100102 ,
+ "sync" => 100104 ,
+ "na.sync" => 100104 ,
+ "hostperf" => 100107 ,
+ "na.hostperf" => 100107 ,
+ "activity" => 100109 ,
+ "na.activity" => 100109 ,
+ "hostmem" => 100112 ,
+ "na.hostmem" => 100112 ,
+ "sample" => 100113 ,
+ "na.sample" => 100113 ,
+ "x25" => 100114 ,
+ "na.x25" => 100114 ,
+ "ping" => 100115 ,
+ "na.ping" => 100115 ,
+ "rpcnfs" => 100116 ,
+ "na.rpcnfs" => 100116 ,
+ "hostif" => 100117 ,
+ "na.hostif" => 100117 ,
+ "etherif" => 100118 ,
+ "na.etherif" => 100118 ,
+ "iproutes" => 100120 ,
+ "na.iproutes" => 100120 ,
+ "layers" => 100121 ,
+ "na.layers" => 100121 ,
+ "snmp" => 100122 ,
+ "na.snmp" => 100122 ,
+ "snmp-cmc" => 100122 ,
+ "snmp-synoptics" => 100122 ,
+ "snmp-unisys" => 100122 ,
+ "snmp-utk" => 100122 ,
+ "traffic" => 100123 ,
+ "na.traffic" => 100123 ,
+ "nfs_acl" => 100227 ,
+ "sadmind" => 100232 ,
+ "nisd" => 100300 ,
+ "rpc.nisd" => 100300 ,
+ "nispasswd" => 100303 ,
+ "rpc.nispasswdd" => 100303 ,
+ "ufsd" => 100233 ,
+ "ufsd" => 100233 ,
+ "pcnfsd" => 150001 ,
+ "pcnfs" => 150001 ,
+ "amd" => 300019 ,
+ "amq" => 300019 ,
+ "bwnfsd" => 545580417 ,
+ "fypxfrd" => 600100069 ,
+ "freebsd-ypxfrd" => 600100069 ,
+);
+
+# -v means verbose, -v-v means verbose twice = print above hash
+if (defined $verbose && ($verbose > 1) ){
+ my $key;
+ print "Supported programs:\n";
+ print " name\t=>\tnumber\n";
+ print " ===============================\n";
+ foreach $key (sort keys %prognum) {
+ print " $key \t=>\t$prognum{$key} \n";
+ }
+ print "\n\n";
+ print_usage();
+ exit $ERRORS{'OK'};
+}
+
+# -H means host name
+unless ($opt_H) { print_usage(); exit $ERRORS{'UNKNOWN'}; }
+
+if (! utils::is_hostname($opt_H)){
+ print "$opt_H is not a valid host name\n";
+ print_usage();
+ exit $ERRORS{"UNKNOWN"};
+}else{
+ $host = $opt_H;
+}
+
+if ($opt_t && $opt_u) {
+ print "Cannot define tcp AND udp\n";
+ print_usage();
+ exit $ERRORS{'UNKNOWN'};
+}
+
+
+# -C means command name or number
+$opt_C = shift unless ($opt_C);
+unless ($opt_C) { print_usage(); exit -1; }
+@progkeys = keys %prognum;
+if ($opt_C =~ m/^([0-9]+)$/){
+# $response = "RPC ok: program $opt_C (version ";
+ $prognum = $1;
+} elsif ( in( \@progkeys, $opt_C)) {
+# $response = "RPC ok: $opt_C (version ";
+ $prognum = $prognum{$opt_C};
+} else {
+ print "Program $opt_C is not defined\n";
+ exit $ERRORS{'UNKNOWN'};
+}
+
+# -p means port number
+if($opt_p =~ /^([0-9]+)$/){
+ $port = "-n $1";
+} else {
+ $port = "";
+}
+
+$proto = 'u';
+$proto = $proto[$prognum] if ($proto[$prognum]);
+$proto = 't' if ($opt_t);
+$proto = 'u' if ($opt_u);
+
+
+# Just in case of problems, let's not hang Nagios
+$SIG{'ALRM'} = sub {
+ print ("ERROR: No response from RPC server (alarm)\n");
+ exit $ERRORS{"UNKNOWN"};
+};
+alarm($TIMEOUT);
+
+# -c is progver - if we need to check multiple specified versions.
+if (defined $opt_c ) {
+ my $vers;
+ @progvers = split(/,/ ,$opt_c );
+ foreach $vers (sort @progvers) {
+ if($vers =~ /^([0-9]+)$/){
+ $progver = "$1";
+ print "Checking $opt_C version $progver proto $proto\n" if $verbose;
+ get_rpcinfo();
+ }else{
+ print "Version $vers is not an integer\n" if $verbose;
+ }
+
+ }
+}else{
+ get_rpcinfo();
+}
+
+
+## translate proto for output
+if ($proto eq "u" ){
+ $proto = "udp";
+}else{
+ $proto = "tcp";
+}
+
+if ($state eq 'OK') {
+ print "$state: RPC program $opt_C".$response." $proto running\n";
+}else{
+ if($response){
+ print "$state: RPC program $opt_C".$response2." $proto is not running,".$response." $proto is running\n";
+ }else{
+ print "$state: RPC program $opt_C $response2 $proto is not running\n";
+ }
+}
+exit $ERRORS{$state};
+
+
+######## Subroutines ==========================
+
+sub get_rpcinfo {
+ $cmd = "$utils::PATH_TO_RPCINFO $port -" . "$proto $host $prognum $progver 2>&1 |";
+ print "$cmd\n" if ($verbose);
+ open CMD, $cmd or die "Can't fork for rpcinfo: $!\n" ;
+
+ while ( $line = <CMD> ) {
+ printf "$line " if $verbose;
+ chomp $line;
+
+ if ( $line =~ /program $prognum version ([0-9]*) ready and waiting/ ) {
+ $response .= " version $1";
+ $state = 'OK' unless $state ne 'UNKNOWN';
+ print "1:$response \n" if $verbose;
+ }
+
+ if ( $line =~ /program $prognum version ([0-9]*) is not available/ ) {
+ $response2 .= " version $1";
+ $state = 'CRITICAL';
+ print "2:$response2 \n" if $verbose;
+ }
+ if ( $line =~ /program $prognum is not available/ ) {
+ $response3 = "";
+ $response3 = "tcp" if $opt_t;
+ $response3 = "udp" if $opt_u;
+ $state = 'CRITICAL';
+ print "3:$response3 \n" if $verbose;
+ }
+ }
+ close CMD;
+}
+
+
+sub print_help() {
+ print_revision($PROGNAME,'1.4.15');
+ print "Copyright (c) 2002 Karl DeBisschop/Truongchinh Nguyen/Subhendu Ghosh\n";
+ print "\n";
+ print "Check if a rpc service is registered and running using\n";
+ print " rpcinfo -H host -C rpc_command \n";
+ print "\n";
+ print_usage();
+ print "\n";
+ print " <host> The server providing the rpc service\n";
+ print " <rpc_command> The program name (or number).\n";
+ print " <program_version> The version you want to check for (one or more)\n";
+ print " Should prevent checks of unknown versions being syslogged\n";
+ print " e.g. 2,3,6 to check v2, v3, and v6\n";
+ print " [-u | -t] Test UDP or TCP\n";
+ print " [-v] Verbose \n";
+ print " [-v -v] Verbose - will print supported programs and numbers \n";
+ print "\n";
+ support();
+}
+
+sub print_usage () {
+ print "Usage: \n";
+ print " $PROGNAME -H host -C rpc_command [-p port] [-c program_version] [-u|-t] [-v]\n";
+ print " $PROGNAME [-h | --help]\n";
+ print " $PROGNAME [-V | --version]\n";
+}
+
+sub in ($$) {
+ $array_ref = shift;
+ $test = shift;
+
+ while ( $element = shift @{$array_ref} ) {
+ if ($test eq $element) {
+ return 1;
+ }
+ }
+ return 0;
+}
+
diff --git a/god/Monitoring/nagios/plugins/check_rta_multi b/god/Monitoring/nagios/plugins/check_rta_multi
new file mode 120000
index 00000000..97878096
--- /dev/null
+++ b/god/Monitoring/nagios/plugins/check_rta_multi
@@ -0,0 +1 @@
+check_icmp \ No newline at end of file
diff --git a/god/Monitoring/nagios/plugins/check_sensors b/god/Monitoring/nagios/plugins/check_sensors
new file mode 100755
index 00000000..857a4d5a
--- /dev/null
+++ b/god/Monitoring/nagios/plugins/check_sensors
@@ -0,0 +1,65 @@
+#! /bin/bash
+
+PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin
+
+PROGNAME=`basename $0`
+PROGPATH=`echo $0 | sed -e 's,[\\/][^\\/][^\\/]*$,,'`
+REVISION="1.4.15"
+
+. $PROGPATH/utils.sh
+
+
+print_usage() {
+ echo "Usage: $PROGNAME"
+}
+
+print_help() {
+ print_revision $PROGNAME $REVISION
+ echo ""
+ print_usage
+ echo ""
+ echo "This plugin checks hardware status using the lm_sensors package."
+ echo ""
+ support
+ exit 0
+}
+
+case "$1" in
+ --help)
+ print_help
+ exit 0
+ ;;
+ -h)
+ print_help
+ exit 0
+ ;;
+ --version)
+ print_revision $PROGNAME $REVISION
+ exit 0
+ ;;
+ -V)
+ print_revision $PROGNAME $REVISION
+ exit 0
+ ;;
+ *)
+ sensordata=`sensors 2>&1`
+ status=$?
+ if test "$1" = "-v" -o "$1" = "--verbose"; then
+ echo ${sensordata}
+ fi
+ if test ${status} -eq 127; then
+ echo "SENSORS UNKNOWN - command not found (did you install lmsensors?)"
+ exit -1
+ elif test ${status} -ne 0 ; then
+ echo "WARNING - sensors returned state $status"
+ exit 1
+ fi
+ if echo ${sensordata} | egrep ALARM > /dev/null; then
+ echo SENSOR CRITICAL - Sensor alarm detected!
+ exit 2
+ else
+ echo sensor ok
+ exit 0
+ fi
+ ;;
+esac
diff --git a/god/Monitoring/nagios/plugins/check_shinken.py b/god/Monitoring/nagios/plugins/check_shinken.py
new file mode 100755
index 00000000..a3827000
--- /dev/null
+++ b/god/Monitoring/nagios/plugins/check_shinken.py
@@ -0,0 +1,157 @@
+#!/usr/bin/env python
+#Copyright (C) 2009-2011 :
+# Denis GERMAIN, dt.germain@gmail.com
+# Gabes Jean, naparuba@gmail.com
+# Gerhard Lausser, Gerhard.Lausser@consol.de
+# Gregory Starck, g.starck@gmail.com
+# Hartmut Goebel, h.goebel@goebel-consult.de
+#
+#This file is part of Shinken.
+#
+#Shinken is free software: you can redistribute it and/or modify
+#it under the terms of the GNU Affero General Public License as published by
+#the Free Software Foundation, either version 3 of the License, or
+#(at your option) any later version.
+#
+#Shinken is distributed in the hope that it will be useful,
+#but WITHOUT ANY WARRANTY; without even the implied warranty of
+#MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+#GNU Affero General Public License for more details.
+#
+#You should have received a copy of the GNU Affero General Public License
+#along with Shinken. If not, see <http://www.gnu.org/licenses/>.
+
+################################################
+# check_shinken.py :
+# This check is getting daemons state from
+# a arbiter connection.
+################################################
+
+import os
+
+# Exit statuses recognized by Nagios and thus by Shinken
+OK = 0
+WARNING = 1
+CRITICAL = 2
+UNKNOWN = 3
+
+#Name of the Pyro Object we are searching
+PYRO_OBJECT = 'ForArbiter'
+daemon_types = ['arbiter', 'broker', 'scheduler', 'poller', 'reactionner']
+
+try:
+ import shinken
+except ImportError:
+ # If importing shinken fails, try to load from current directory
+ # or parent directory to support running without installation.
+ # Submodules will then be loaded from there, too.
+ import imp
+ if not hasattr(os, "getuid") or os.getuid() != 0:
+ imp.load_module('shinken', *imp.find_module('shinken', [".", ".."]))
+
+
+from optparse import OptionParser
+try:
+ import shinken.pyro_wrapper as pyro
+ from shinken.pyro_wrapper import Pyro
+except ImportError, exp:
+ print 'CRITICAL : check_shinken requires the Python Pyro and the shinken.pyro_wrapper module. Please install it. (%s)' % exp
+ raise SystemExit, CRITICAL
+
+
+def check_deamons_numbers(result, target):
+ total_number = len(result)
+ alive_number = len([e for e in result.values() if e['alive']])
+ total_spare_number = len([e for e in result.values() if e['spare']])
+ alive_spare_number = len([e for e in result.values() if e['spare'] and e['alive']])
+ dead_number = total_number - alive_number
+ dead_list = ','.join([n for n in result if not result[n]['alive']])
+ #TODO : perfdata to graph deamons would be nice (in big HA architectures)
+ #if alive_number <= critical, then we have a big problem
+ if alive_number <= options.critical:
+ print "CRITICAL - only %d/%d %s(s) UP. Down elements : %s" % (alive_number, total_number, target, dead_list)
+ raise SystemExit, CRITICAL
+ #We are not in a case where there is no more daemons, but are there daemons down?
+ elif dead_number >= options.warning:
+ print "WARNING - %d/%d %s(s) DOWN :%s" % (dead_number, total_number, target, dead_list)
+ raise SystemExit, WARNING
+ #Everything seems fine. But that's no surprise, is it?
+ else :
+ print "OK - %d/%d %s(s) UP, with %d/%d spare(s) UP" % (alive_number, total_number, target, alive_spare_number, total_spare_number)
+ raise SystemExit, OK
+
+# Adding options. None are required, check_shinken will use shinken defaults
+#TODO : Add more control in args problem and usage than the default OptionParser one
+parser = OptionParser()
+parser.add_option('-a', '--hostname', dest='hostname', default='127.0.0.1')
+parser.add_option('-p', '--portnumber', dest='portnum', default=7770)
+parser.add_option('-s', '--ssl', dest='ssl', default=False)
+#TODO : Add a list of correct values for target and don't authorize anything else
+parser.add_option('-t', '--target', dest='target')
+parser.add_option('-d', '--daemonname', dest='daemon', default='')
+#In HA architectures, a warning should be displayed if there's one daemon down
+parser.add_option('-w','--warning', dest='warning', default = 1)
+#If no deamon is left, display a critical (but shinken will be probably dead already)
+parser.add_option('-c', '--critical', dest='critical', default = 0)
+
+#Retrieving options
+options, args = parser.parse_args()
+#TODO : for now, helpme doesn't work as desired
+options.helpme = False
+
+# Check for required option target
+if not getattr(options, 'target'):
+ print 'CRITICAL - target is not specified; You must specify which daemons you want to check!'
+ parser.print_help()
+ raise SystemExit, CRITICAL
+elif options.target not in daemon_types:
+ print 'CRITICAL - target %s is not a Shinken daemon!' % options.target
+ parser.print_help()
+ raise SystemExit, CRITICAL
+
+uri = pyro.create_uri(options.hostname, options.portnum, PYRO_OBJECT , options.ssl)
+
+if options.daemon:
+ # We just want a check for a single satellite daemon
+ # Only OK or CRITICAL here
+ daemon_name = options.daemon
+ try:
+ result = Pyro.core.getProxyForURI(uri).get_satellite_status(options.target, daemon_name)
+ except Pyro.errors.ProtocolError, exp:
+ print "CRITICAL : the Arbiter is not reachable : (%s)." % exp
+ raise SystemExit, CRITICAL
+
+ if result:
+ if result['alive']:
+ print 'OK - %s alive' % daemon_name
+ raise SystemExit, OK
+ else:
+ print 'CRITICAL - %s down' % daemon_name
+ raise SystemExit, CRITICAL
+ else:
+ print 'UNKNOWN - %s status could not be retrieved' % daemon_name
+ raise SystemExit, UNKNOWN
+else:
+ # If no daemonname is specified, we want a general overview of the "target" daemons
+ result = {}
+
+ try:
+ daemon_list = Pyro.core.getProxyForURI(uri).get_satellite_list(options.target)
+ except Pyro.errors.ProtocolError, exp:
+ print "CRITICAL : the Arbiter is not reachable : (%s)." % exp
+ raise SystemExit, CRITICAL
+
+ for daemon_name in daemon_list:
+ # Getting individual daemon and putting status info in the result dictionnary
+ try:
+ result[daemon_name] = Pyro.core.getProxyForURI(uri).get_satellite_status(options.target, daemon_name)
+ except Pyro.errors.ProtocolError, exp:
+ print "CRITICAL : the Arbiter is not reachable : (%s)." % exp
+ raise SystemExit, CRITICAL
+
+ # Now we have all data
+ if result:
+ check_deamons_numbers(result, options.target)
+ else :
+ print 'UNKNOWN - Arbiter could not retrieve status for %s' % options.target
+ raise SystemExit, UNKNOWN
diff --git a/god/Monitoring/nagios/plugins/check_simap b/god/Monitoring/nagios/plugins/check_simap
new file mode 120000
index 00000000..e838da97
--- /dev/null
+++ b/god/Monitoring/nagios/plugins/check_simap
@@ -0,0 +1 @@
+check_tcp \ No newline at end of file
diff --git a/god/Monitoring/nagios/plugins/check_sip b/god/Monitoring/nagios/plugins/check_sip
new file mode 100755
index 00000000..24374727
--- /dev/null
+++ b/god/Monitoring/nagios/plugins/check_sip
@@ -0,0 +1,252 @@
+#!/usr/bin/perl -w
+#
+# check_sip plugin for nagios
+# $Revision: 1.2 $
+#
+# Nagios plugin to check SIP servers
+#
+# By Sam Bashton, Bashton Ltd
+# bashton.com/content/nagiosplugins
+# Michael Hirschbichler, Institute of Broadband Communications,
+# Vienna University of Technology
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
+
+use strict;
+use lib "/usr/lib/nagios/plugins";
+use utils qw($TIMEOUT %ERRORS &print_revision &support);
+use vars qw($PROGNAME);
+use IO::Socket::INET;
+#use Sys::Hostname;
+use Time::HiRes qw(gettimeofday);
+use Net::Domain qw (hostname hostfqdn hostdomain);
+
+$PROGNAME = "check_sip";
+my $VERSION = "1.2";
+
+$ENV{'BASH_ENV'}='';
+$ENV{'ENV'}='';
+$ENV{'PATH'}='';
+$ENV{'LC_ALL'}='C';
+
+my ($opt_V,$opt_h,$opt_u,$opt_p,$opt_H, $opt_w, $opt_s, $opt_f);
+$opt_V = $opt_h = $opt_u = $opt_p = $opt_H = $opt_w = $opt_s = $opt_f = '';
+
+my $state = 'UNKNOWN';
+
+use Getopt::Long;
+Getopt::Long::Configure('bundling');
+GetOptions(
+ "V" => \$opt_V, "version" => \$opt_V,
+ "h" => \$opt_h, "help" => \$opt_h,
+ "s" => \$opt_s,
+ "f=s" => \$opt_f, "fromuri=s" => \$opt_f,
+ "u=s" => \$opt_u, "uri=s" => \$opt_u,
+ "p=s" => \$opt_p, "port=s" => \$opt_p,
+ "H=s" => \$opt_H, "host=s" => \$opt_H,
+ "w=s" => \$opt_w, "warn=s" => \$opt_w
+);
+
+# -h displays help
+if ($opt_h) { printHelp(); exit $ERRORS{'OK'}; }
+
+# -V display version number
+if ($opt_V) {
+ print_revision($PROGNAME, $VERSION);
+ exit $ERRORS{'OK'};
+};
+
+# Check the sip URI is OK
+unless ($opt_u) { printHelp(); exit $ERRORS{'UNKNOWN'} }
+
+# Port is 5060 unless otherwise specified
+unless ($opt_p) { $opt_p = 5060 }
+
+# Determine the host from the sip URI if it wasn't specified with -H
+unless ($opt_H) { $opt_H = hostFromURI($opt_u) }
+
+# Check the host is valid
+unless (utils::is_hostname($opt_H))
+{
+ print "$opt_H is not a valid hostname\n";
+ printHelp();
+ exit $ERRORS{"UNKNOWN"};
+}
+
+unless ($opt_w) { $opt_w = 5 } # Warn if response takes longer than 5 seconds
+
+### Main code ###############################################################
+
+# Timeout if we don't recieve a response within a suitable timeframe..
+$SIG{'ALRM'} = sub {
+ print ("SIP timeout: No response from SIP server after $TIMEOUT seconds\n");
+ exit $ERRORS{"CRITICAL"};
+};
+alarm($TIMEOUT);
+
+my $localhost = hostfqdn();
+$opt_f = getFromURI($opt_f,$localhost,$opt_p);
+my $user=getUserPart($opt_f);
+my $socket = uconnect($opt_H, $opt_p);
+my @localinfo = unpack_sockaddr_in($socket->sockname);
+my $req = buildReq($localinfo[0], $opt_u, $opt_f,$user,$localhost);
+my (undef, $starttime) = gettimeofday;
+$socket->send($req);
+my $response;
+$socket->recv($response, 1024) or $state = 'CRITICAL';
+
+#get rid of the 100 Trying - provisional response ...
+if (getResponseCode($response) eq "100"){
+ $socket->recv($response, 1024) or $state = 'CRITICAL';
+}
+
+my (undef, $finishtime) = gettimeofday;
+my $rtime = ($finishtime - $starttime) / 1000000; # Time taken in seconds
+if(checkResponse($response,$rtime,$opt_s))
+{
+ if ($rtime > $opt_w) { $state = 'WARNING' }
+ else { $state = 'OK' }
+}
+else { $state = 'CRITICAL' }
+
+exit $ERRORS{$state};
+
+### Subroutines ##############################################################
+
+
+sub uconnect
+{
+ my ($host, $port) = @_;
+ my $socket = new IO::Socket::INET->new(PeerPort=>$port, Proto=>'udp', PeerAddr=>$host);
+ unless ($socket) { print "Unable to connect to $host\n"; exit $ERRORS{'UNKNOWN'} }
+ return $socket;
+}
+
+sub getFromURI{
+ my ($from, $localhost,$localport) = @_;
+ if (!("$from" eq "")){
+ return "$from:$localport";
+ }else
+ {
+ return "sip:checksip\@$localhost:$localport";
+ }
+}
+
+sub getUserPart{
+ my ($uri) = @_;
+ my @uris=split(/\@/,$uri);
+ my $user=$uris[0];
+ return $user;
+}
+
+sub hostFromURI
+{
+ my ($uri) = @_;
+ $uri =~ s/sip:[^\@]+@//;
+ return $uri;
+}
+
+sub getResponseCode
+{
+ my ($message) = @_;
+ my @messageparts=split(/\ /,$message);
+ return $messageparts[1];
+}
+
+sub buildReq
+{
+ my ($localport, $dsturi, $fromuri,$user,$localhost) = @_;
+
+ my $req;
+ my $tag = genTag();
+ my $idtag = genTag();
+ $req.= "OPTIONS $dsturi SIP/2.0\r\n";
+ $req.= "Via: SIP/2.0/UDP $localhost:$localport;branch=z9hG4bKhjhs8ass877\r\n";
+ $req.= "Max-Forwards: 70\r\n";
+ $req.= "To: $dsturi\r\n";
+ $req.= "From: $fromuri;tag=$tag\r\n";
+ $req.= "Call-ID: $idtag\@$localhost\r\n";
+ $req.= "CSeq: 1 OPTIONS\r\n";
+ $req.= "Contact: <$user\@$localhost:$localport>\r\n";
+ $req.= "Accept: application/sdp\r\n";
+ $req.= "Content-Length: 0\r\n\r\n";
+ return $req;
+}
+
+sub genTag
+{
+ my $tag;
+ my @chars = ('a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p',
+ 'q','r','s','t','u','v','w','x','y','z','0','1','2','3','4','5','6','7','8',
+ '9');
+
+ for (my $i = 0; $i < 6; $i++)
+ {
+ $tag .= $chars[rand(scalar @chars)];
+ }
+ return $tag;
+}
+
+sub printHelp
+{
+ print "This plugin tests the sip service on the specified host.\n\n";
+ print "Usage: $PROGNAME -u sip:uri\@example.com [-H host -p PORT -f sip:fromuri\@example.com -w WARNTIME -s]\n";
+ print " $PROGNAME [-h | --help]\n";
+ print " $PROGNAME [-V | --version]\n\n";
+ print "Options:\n";
+ print " -u sip:uri\@example.com\n";
+ print " Full SIP uri, eg sip:uri\@example.com\n";
+ print " -h, --help\n";
+ print " Print this help\n";
+ print " -V, --version\n";
+ print " Print version information\n";
+ print " -H host\n";
+ print " Host name or IP Address to connect to\n";
+ print " -p port\n";
+ print " Port to connect to\n";
+ print " -f sip:fromuri\@example.com\n";
+ print " Full SIP uri, will be used for the \"From:\"-Header\n";
+ print " -s\n";
+ print " Changes default behavior: all SIP-responses will result in an \"OK\"\n\n";
+
+
+}
+
+sub checkResponse
+{
+ my ($response, $rtime, $sp_behavior) = @_;
+ my @header=split(/\r/,$response);
+ my $tstring=$header[0];
+ my $rcode=getResponseCode($response);
+ if (!$sp_behavior){
+ #in this case, we want to see if the SIP-server is respoding positively to our request
+ # Some SUT respond with 100 Trying - assume everything is OK if we get this
+ if ($response =~ /^SIP.+[12]00/){
+ print "$tstring, $rtime seconds response time|rtt=".$rtime."s;0.5s;1s;0:10; code=".$rcode."\n";
+ return 1;
+ }
+ elsif ($response =~ /^SIP.+404 Not Found/) {
+ print "$tstring, $rtime seconds response time|rtt=".$rtime."s;0.5s;1s;0:10; code=".$rcode."\n";
+ return 0 }
+ else { print "Unknown error: $tstring, $rtime seconds response time|rtt=".$rtime."s;0.5s;1s;0:10; code=".$rcode."\n"; return 0; }
+ }else{
+ #in this case, we accept every response from the server, as long it is SIP
+ if ($response =~ /^SIP./){
+ print "$tstring, $rtime seconds response time|rtt=".$rtime."s;0.5s;1s;0:10; code=".$rcode."\n";
+ return 1;
+ }
+ else { print "Unknown error: $tstring, $rtime seconds response time|rtt=".$rtime."s;0.5s;1s;0:10; code=".$rcode."\n"; return 0; }
+ }
+}
diff --git a/god/Monitoring/nagios/plugins/check_smtp b/god/Monitoring/nagios/plugins/check_smtp
new file mode 100755
index 00000000..d70a48f0
--- /dev/null
+++ b/god/Monitoring/nagios/plugins/check_smtp
Binary files differ
diff --git a/god/Monitoring/nagios/plugins/check_snmp b/god/Monitoring/nagios/plugins/check_snmp
new file mode 100755
index 00000000..d3fcd068
--- /dev/null
+++ b/god/Monitoring/nagios/plugins/check_snmp
Binary files differ
diff --git a/god/Monitoring/nagios/plugins/check_speed b/god/Monitoring/nagios/plugins/check_speed
new file mode 100755
index 00000000..14a5b612
--- /dev/null
+++ b/god/Monitoring/nagios/plugins/check_speed
@@ -0,0 +1,34 @@
+#!/usr/bin/python
+# -*- coding: utf-8 -*-
+#TODO check_speed is nearly the same as check_speeder, consolidate both scripts, probably by giving HIGH:LOW as params
+import sys
+import urllib
+
+if len(sys.argv) < 2 or '-h' in sys.argv:
+ print ("?? usage: %s URL [low-mhashes] ..." % sys.argv[0])
+ print ("?? Server reply should look like this: '2011-07-11T09:00 400.0'")
+ exit(3)
+
+URL=sys.argv[1]
+thresholds=[ float(i) for i in sys.argv[2:]]
+
+ecode=0
+try:
+ ret = urllib.urlopen(URL).read().split()
+ date = ret[0]
+ speeds = [float(i) for i in ret[1:]]
+ print ("** %s : %s Mhashes" % (date,' '.join([str(i) for i in speeds])))
+ if len(speeds) != len(thresholds):
+ raise Exception("!! Number of speeds != number of given thresholds")
+ for i,speed in enumerate(speeds):
+ if speed < thresholds[i]:
+ print ("!! %.2f Mhash < %.2f Mhash ! (field %d)" %(speed,thresholds[i],i))
+ ecode=2
+except Exception,e:
+ print("!! Something aweful happened: "+str(e))
+ exit (1)
+#TODO return WARNING if date is too old
+if not ecode:
+ print ("** Everything is fine!")
+
+exit(ecode)
diff --git a/god/Monitoring/nagios/plugins/check_spop b/god/Monitoring/nagios/plugins/check_spop
new file mode 120000
index 00000000..e838da97
--- /dev/null
+++ b/god/Monitoring/nagios/plugins/check_spop
@@ -0,0 +1 @@
+check_tcp \ No newline at end of file
diff --git a/god/Monitoring/nagios/plugins/check_ssh b/god/Monitoring/nagios/plugins/check_ssh
new file mode 100755
index 00000000..a9d69666
--- /dev/null
+++ b/god/Monitoring/nagios/plugins/check_ssh
Binary files differ
diff --git a/god/Monitoring/nagios/plugins/check_ssmtp b/god/Monitoring/nagios/plugins/check_ssmtp
new file mode 120000
index 00000000..e838da97
--- /dev/null
+++ b/god/Monitoring/nagios/plugins/check_ssmtp
@@ -0,0 +1 @@
+check_tcp \ No newline at end of file
diff --git a/god/Monitoring/nagios/plugins/check_swap b/god/Monitoring/nagios/plugins/check_swap
new file mode 100755
index 00000000..6015a7a2
--- /dev/null
+++ b/god/Monitoring/nagios/plugins/check_swap
Binary files differ
diff --git a/god/Monitoring/nagios/plugins/check_tcp b/god/Monitoring/nagios/plugins/check_tcp
new file mode 100755
index 00000000..b084eda3
--- /dev/null
+++ b/god/Monitoring/nagios/plugins/check_tcp
Binary files differ
diff --git a/god/Monitoring/nagios/plugins/check_temper b/god/Monitoring/nagios/plugins/check_temper
new file mode 100755
index 00000000..95191026
--- /dev/null
+++ b/god/Monitoring/nagios/plugins/check_temper
@@ -0,0 +1,31 @@
+#!/usr/bin/python
+# -*- coding: utf-8 -*-
+import sys
+import urllib
+
+if len(sys.argv) < 2 or '-h' in sys.argv:
+ print ("?? usage: %s URL [high-val field 1] [high field 2] ..." % sys.argv[0])
+ print ("?? Server reply should look like this: '2011-07-11T09:00 50.0 40.0'")
+ exit(3)
+
+URL=sys.argv[1]
+thresholds=[ float(i) for i in sys.argv[2:]]
+
+ecode=0
+try:
+ ret = urllib.urlopen(URL).read().split()
+ date = ret[0]
+ temps = [float(i) for i in ret[1:]]
+ print ("** %s : %s" % (date,' '.join([str(i)+"C" for i in temps])))
+ if len(temps) != len(thresholds):
+ raise Exception("Number of temps != number of given thresholds")
+ for i,temp in enumerate(temps):
+ if temp > thresholds[i]:
+ print ("!! %.2fC > %.2fC (field %d)!" %(temp,thresholds[i],i))
+ ecode=2
+except Exception,e:
+ print("!! Something awful happened: "+str(e))
+ exit (1)
+if not ecode:
+ print ("** Everything is fine!")
+exit(ecode)
diff --git a/god/Monitoring/nagios/plugins/check_time b/god/Monitoring/nagios/plugins/check_time
new file mode 100755
index 00000000..73a12209
--- /dev/null
+++ b/god/Monitoring/nagios/plugins/check_time
Binary files differ
diff --git a/god/Monitoring/nagios/plugins/check_udp b/god/Monitoring/nagios/plugins/check_udp
new file mode 120000
index 00000000..e838da97
--- /dev/null
+++ b/god/Monitoring/nagios/plugins/check_udp
@@ -0,0 +1 @@
+check_tcp \ No newline at end of file
diff --git a/god/Monitoring/nagios/plugins/check_ups b/god/Monitoring/nagios/plugins/check_ups
new file mode 100755
index 00000000..cf641a5f
--- /dev/null
+++ b/god/Monitoring/nagios/plugins/check_ups
Binary files differ
diff --git a/god/Monitoring/nagios/plugins/check_users b/god/Monitoring/nagios/plugins/check_users
new file mode 100755
index 00000000..a0617fd4
--- /dev/null
+++ b/god/Monitoring/nagios/plugins/check_users
Binary files differ
diff --git a/god/Monitoring/nagios/plugins/check_wave b/god/Monitoring/nagios/plugins/check_wave
new file mode 100755
index 00000000..efef4680
--- /dev/null
+++ b/god/Monitoring/nagios/plugins/check_wave
@@ -0,0 +1,122 @@
+#! /usr/bin/perl -wT
+#
+
+
+use strict;
+use lib "/usr/lib/nagios/plugins";
+use utils qw($TIMEOUT %ERRORS &print_revision &support);
+use vars qw($PROGNAME);
+use Getopt::Long;
+use vars qw($opt_V $opt_h $verbose $opt_w $opt_c $opt_H);
+my (@test, $low1, $med1, $high1, $snr, $low2, $med2, $high2);
+my ($low, $med, $high, $lowavg, $medavg, $highavg, $tot, $ss);
+
+$PROGNAME = "check_wave";
+sub print_help ();
+sub print_usage ();
+
+$ENV{'PATH'}='';
+$ENV{'BASH_ENV'}='';
+$ENV{'ENV'}='';
+
+Getopt::Long::Configure('bundling');
+GetOptions
+ ("V" => \$opt_V, "version" => \$opt_V,
+ "h" => \$opt_h, "help" => \$opt_h,
+ "v" => \$verbose, "verbose" => \$verbose,
+ "w=s" => \$opt_w, "warning=s" => \$opt_w,
+ "c=s" => \$opt_c, "critical=s" => \$opt_c,
+ "H=s" => \$opt_H, "hostname=s" => \$opt_H);
+
+if ($opt_V) {
+ print_revision($PROGNAME,'1.4.15'); #'
+ exit $ERRORS{'OK'};
+}
+
+if ($opt_h) {
+ print_help();
+ exit $ERRORS{'OK'};
+}
+
+$opt_H = shift unless ($opt_H);
+print_usage() unless ($opt_H);
+my $host = $1 if ($opt_H =~ m/^([0-9]+\.[0-9]+\.[0-9]+\.[0-9]+|[a-zA-Z][-a-zA-Z0]+(\.[a-zA-Z][-a-zA-Z0]+)*)$/);
+print_usage() unless ($host);
+
+($opt_c) || ($opt_c = shift) || ($opt_c = 120);
+my $critical = $1 if ($opt_c =~ /([0-9]+)/);
+
+($opt_w) || ($opt_w = shift) || ($opt_w = 60);
+my $warning = $1 if ($opt_w =~ /([0-9]+)/);
+
+$low1 = `snmpget $host public .1.3.6.1.4.1.74.2.21.1.2.1.8.1`;
+@test = split(/ /,$low1);
+$low1 = $test[2];
+
+$med1 = `snmpget $host public .1.3.6.1.4.1.74.2.21.1.2.1.9.1`;
+@test = split(/ /,$med1);
+$med1 = $test[2];
+
+$high1 = `snmpget $host public .1.3.6.1.4.1.74.2.21.1.2.1.10.1`;
+@test = split(/ /,$high1);
+$high1 = $test[2];
+
+sleep(2);
+
+$snr = `snmpget $host public .1.3.6.1.4.1.762.2.5.2.1.17.1`;
+@test = split(/ /,$snr);
+$snr = $test[2];
+$snr = int($snr*25);
+
+$low2 = `snmpget $host public .1.3.6.1.4.1.74.2.21.1.2.1.8.1`;
+@test = split(/ /,$low2);
+$low2 = $test[2];
+
+$med2 = `snmpget $host public .1.3.6.1.4.1.74.2.21.1.2.1.9.1`;
+@test = split(/ /,$med2);
+$med2 = $test[2];
+
+$high2 = `snmpget $host public .1.3.6.1.4.1.74.2.21.1.2.1.10.1`;
+@test = split(/ /,$high2);
+$high2 = $test[2];
+
+$low = $low2 - $low1;
+$med = $med2 - $med1;
+$high = $high2 - $high1;
+
+$tot = $low + $med + $high;
+
+if ($tot==0) {
+ $ss = 0;
+} else {
+ $lowavg = $low / $tot;
+ $medavg = $med / $tot;
+ $highavg = $high / $tot;
+ $ss = ($medavg*50) + ($highavg*100);
+}
+
+printf("Signal Strength at: %3.0f%, SNR at $snr%",$ss);
+
+if ($ss<$critical) {
+ exit(2);
+} elsif ($ss<$warning) {
+ exit(1);
+} else {
+ exit(0);
+}
+
+
+sub print_usage () {
+ print "Usage: $PROGNAME -H <host> [-w <warn>] [-c <crit>]\n";
+}
+
+sub print_help () {
+ print_revision($PROGNAME,'1.4.15');
+ print "Copyright (c) 2000 Jeffery Blank/Karl DeBisschop\n";
+ print "\n";
+ print_usage();
+ print "\n";
+ print "<warn> = Signal strength at which a warning message will be generated.\n";
+ print "<crit> = Signal strength at which a critical message will be generated.\n\n";
+ support();
+}
diff --git a/god/Monitoring/nagios/plugins/getwmic.sh b/god/Monitoring/nagios/plugins/getwmic.sh
new file mode 100755
index 00000000..05ba8f21
--- /dev/null
+++ b/god/Monitoring/nagios/plugins/getwmic.sh
@@ -0,0 +1,7 @@
+wget http://dev.zenoss.org/svn/trunk/inst/externallibs/wmi-1.3.14.tar.bz2
+tar xvf wmi-1.3.14.tar.bz2
+cd wmi-1.3.14/
+sed -i 's/all: install/ZENHOME=..\/..\nall: install/' GNUmakefile
+make
+#cp bin/* /usr/local/bin/
+#cp lib/python/* /usr/local/lib/python
diff --git a/god/Monitoring/nagios/plugins/link_vmware_host_vm.py b/god/Monitoring/nagios/plugins/link_vmware_host_vm.py
new file mode 100755
index 00000000..b64cefa8
--- /dev/null
+++ b/god/Monitoring/nagios/plugins/link_vmware_host_vm.py
@@ -0,0 +1,184 @@
+#!/usr/bin/env python
+#Copyright (C) 2009-2010 :
+# Gabes Jean, naparuba@gmail.com
+# Gerhard Lausser, Gerhard.Lausser@consol.de
+# Gregory Starck, g.starck@gmail.com
+# Hartmut Goebel <h.goebel@goebel-consult.de>
+#
+#This file is part of Shinken.
+#
+#Shinken is free software: you can redistribute it and/or modify
+#it under the terms of the GNU Affero General Public License as published by
+#the Free Software Foundation, either version 3 of the License, or
+#(at your option) any later version.
+#
+#Shinken is distributed in the hope that it will be useful,
+#but WITHOUT ANY WARRANTY; without even the implied warranty of
+#MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+#GNU Affero General Public License for more details.
+#
+#You should have received a copy of the GNU Affero General Public License
+#along with Shinken. If not, see <http://www.gnu.org/licenses/>.
+
+import os
+import sys
+import shlex
+import shutil
+import optparse
+from subprocess import Popen, PIPE
+
+# Try to load json (2.5 and higer) or simplejson if failed (python2.4)
+try:
+ import json
+except ImportError:
+ # For old Python version, load
+ # simple json (it can be hard json?! It's 2 functions guy!)
+ try:
+ import simplejson as json
+ except ImportError:
+ sys.exit("Error : you need the json or simplejson module for this script")
+
+VERSION = '0.1'
+
+
+# Split and clean the rules from a string to a list
+def _split_rules(rules):
+ return [r.strip() for r in rules.split('|')]
+
+# Apply all rules on the objects names
+def _apply_rules(name, rules):
+ if 'nofqdn' in rules:
+ name = name.split('.', 1)[0]
+ if 'lower' in rules:
+ name = name.lower()
+ return name
+
+# Get all vmware hosts from a VCenter and return the list
+def get_vmware_hosts(check_esx_path, vcenter, user, password):
+ list_host_cmd = [check_esx_path, '-D', vcenter, '-u', user, '-p', password,
+ '-l', 'runtime', '-s', 'listhost']
+
+ output = Popen(list_host_cmd, stdout=PIPE).communicate()
+
+ parts = output[0].split(':')
+ hsts_raw = parts[1].split('|')[0]
+ hsts_raw_lst = hsts_raw.split(',')
+
+ hosts = []
+ for hst_raw in hsts_raw_lst:
+ hst_raw = hst_raw.strip()
+ # look as server4.mydomain(UP)
+ elts = hst_raw.split('(')
+ hst = elts[0]
+ hosts.append(hst)
+
+ return hosts
+
+
+# For a specific host, ask all VM on it to the VCenter
+def get_vm_of_host(check_esx_path, vcenter, host, user, password):
+ print "Listing host", host
+ list_vm_cmd = [check_esx_path, '-D', vcenter, '-H', host,
+ '-u', user, '-p', password,
+ '-l', 'runtime', '-s', 'list']
+ output = Popen(list_vm_cmd, stdout=PIPE).communicate()
+ parts = output[0].split(':')
+ # Maybe we got a 'CRITICAL - There are no VMs.' message,
+ # if so, we bypass this host
+ if len(parts) < 2:
+ return None
+
+ vms_raw = parts[1].split('|')[0]
+ vms_raw_lst = vms_raw.split(',')
+
+ lst = []
+ for vm_raw in vms_raw_lst:
+ vm_raw = vm_raw.strip()
+ # look as MYVM(UP)
+ elts = vm_raw.split('(')
+ vm = elts[0]
+ lst.append(vm)
+ return lst
+
+
+# Create all tuples of the links for the hosts
+def create_all_links(res, rules):
+ r = []
+ for host in res:
+ for vm in res[host]:
+ # First we apply rules on the names
+ host_name = _apply_rules(host, rules)
+ vm_name = _apply_rules(vm, rules)
+ v = (('host', host_name),('host', vm_name))
+ r.append(v)
+ return r
+
+
+def write_output(r, path):
+ try:
+ f = open(path+'.tmp', 'wb')
+ buf = json.dumps(r)
+ f.write(buf)
+ f.close()
+ shutil.move(path+'.tmp', path)
+ print "File %s wrote" % path
+ except IOError, exp:
+ sys.exit("Error writing the file %s : %s" % (path, exp))
+
+
+def main(check_esx_path, vcenter, user, password, output, rules):
+ rules = _split_rules(rules)
+ res = {}
+ hosts = get_vmware_hosts(check_esx_path, vcenter, user, password)
+
+ for host in hosts:
+ lst = get_vm_of_host(check_esx_path, vcenter, host, user, password)
+ if lst:
+ res[host] = lst
+
+ r = create_all_links(res, rules)
+ print "Created %d links" % len(r)
+
+ write_output(r, output)
+ print "Finished!"
+
+
+# Here we go!
+if __name__ == "__main__":
+ # Manage the options
+ parser = optparse.OptionParser(
+ version="Shinken VMware links dumping script version %s" % VERSION)
+ parser.add_option("-o", "--output",
+ help="Path of the generated mapping file.")
+ parser.add_option("-x", "--esx3-path", dest='check_esx_path',
+ default='/usr/local/nagios/libexec/check_esx3.pl',
+ help="Full path of the check_esx3.pl script (default: %default)")
+ parser.add_option("-V", "--vcenter", '--Vcenter',
+ help="tThe IP/DNS address of your Vcenter host.")
+ parser.add_option("-u", "--user",
+ help="User name to connect to this Vcenter")
+ parser.add_option("-p", "--password",
+ help="The password of this user")
+ parser.add_option('-r', '--rules', default='',
+ help="Rules of name transformation. Valid names are: "
+ "`lower`: to lower names, "
+ "`nofqdn`: keep only the first name (server.mydomain.com -> server)."
+ "You can use several rules like `lower|nofqdn`")
+
+ opts, args = parser.parse_args()
+ if args:
+ parser.error("does not take any positional arguments")
+
+ if opts.vcenter is None:
+ parser.error("missing -V or --Vcenter option for the vcenter IP/DNS address")
+ if opts.user is None:
+ parser.error("missing -u or --user option for the vcenter username")
+ if opts.password is None:
+ error = True
+ parser.error("missing -p or --password option for the vcenter password")
+ if not os.path.exists(opts.check_esx_path):
+ parser.error("the path %s for the check_esx3.pl script is wrong, missing file" % opts.check_esx_path)
+ if opts.output is None:
+ parser.error("missing -o or --output option for the output mapping file")
+
+ main(**opts.__dict__)
diff --git a/god/Monitoring/nagios/plugins/negate b/god/Monitoring/nagios/plugins/negate
new file mode 100755
index 00000000..5bfacfaa
--- /dev/null
+++ b/god/Monitoring/nagios/plugins/negate
Binary files differ
diff --git a/god/Monitoring/nagios/plugins/nmap_discovery_runner.py b/god/Monitoring/nagios/plugins/nmap_discovery_runner.py
new file mode 100755
index 00000000..338e211f
--- /dev/null
+++ b/god/Monitoring/nagios/plugins/nmap_discovery_runner.py
@@ -0,0 +1,419 @@
+#!/usr/bin/env python
+#Copyright (C) 2009-2010 :
+# Gabes Jean, naparuba@gmail.com
+# Gerhard Lausser, Gerhard.Lausser@consol.de
+# Gregory Starck, g.starck@gmail.com
+#
+#This file is part of Shinken.
+#
+#Shinken is free software: you can redistribute it and/or modify
+#it under the terms of the GNU Affero General Public License as published by
+#the Free Software Foundation, either version 3 of the License, or
+#(at your option) any later version.
+#
+#Shinken is distributed in the hope that it will be useful,
+#but WITHOUT ANY WARRANTY; without even the implied warranty of
+#MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+#GNU Affero General Public License for more details.
+#
+#You should have received a copy of the GNU Affero General Public License
+#along with Shinken. If not, see <http://www.gnu.org/licenses/>.
+
+#sudo nmap 192.168.0.1 -T4 -O --traceroute -oX toto.xml
+
+import optparse
+import sys
+import os
+import tempfile
+import subprocess
+
+try:
+ # xml.etree.ElementTree is new in Python 2.5
+ from xml.etree.ElementTree import ElementTree
+except ImportError:
+ sys.exit("This script needs the Python ElementTree module. Please install it")
+
+VERSION = '0.1'
+
+parser = optparse.OptionParser(
+ "%prog [options] -t nmap scanning targets",
+ version="%prog " + VERSION)
+
+parser.add_option('-t', '--targets', dest="targets",
+ help="NMap scanning targets.")
+parser.add_option('-v', '--verbose', dest="verbose", action='store_true',
+ help="Verbose output.")
+
+targets = []
+opts, args = parser.parse_args()
+if not opts.targets:
+ parser.error("Requires at least one nmap target for scanning (option -t/--targets")
+else:
+ targets.append(opts.targets)
+
+if not opts.verbose:
+ verbose = False
+else:
+ verbose = True
+
+if args:
+ targets.extend(args)
+
+print "Got our target", targets
+
+def debug(txt):
+ if verbose:
+ print txt
+
+# Says if a host is up or not
+def is_up(h):
+ status = h.find('status')
+ state = status.attrib['state']
+ return state == 'up'
+
+
+
+class DetectedHost:
+ def __init__(self):
+ self.ip = ''
+ self.mac_vendor = ''
+ self.host_name = ''
+
+ self.os_possibilities = []
+ self.os = ('', '')
+ self.open_ports = []
+
+ self.parent = ''
+
+
+ # Keep the first name we've got
+ def set_host_name(self, name):
+ if self.host_name == '':
+ self.host_name = name
+
+
+ # Get a identifier for this host
+ def get_name(self):
+ if self.host_name != '':
+ return self.host_name
+ if self.ip != '':
+ return self.ip
+ return None
+
+ # We look for the host VMWare
+ def is_vmware_esx(self):
+ # If it's not a virtual machine bail out
+ if self.mac_vendor != 'VMware':
+ return False
+ # If we got all theses ports, we are quite ok for
+ # a VMWare host
+ needed_ports = [22, 80, 443, 902, 903, 5989]
+ for p in needed_ports:
+ if p not in self.open_ports:
+ # find one missing port, not a VMWare host
+ return False
+ # Ok all ports are found, we are a ESX :)
+ return True
+
+ # Says if we are a virtual machine or not
+ def is_vmware_vm(self):
+ # special case : the esx host itself
+ if self.is_vmware_esx():
+ return False
+ # Else, look at the mac vendor
+ return self.mac_vendor == 'VMware'
+
+
+ # Fill the different os possibilities
+ def add_os_possibility(self, os, osgen, accuracy):
+ self.os_possibilities.append( (os, osgen, accuracy) )
+
+
+ # We search if our potential parent is present in the
+ # other detected hosts. If so, set it as my parent
+ def look_for_parent(self, all_hosts):
+ self.parents = []
+ parent = self.parent
+ debug("Look for my parent %s -> %s" % (self.get_name(), parent))
+ # Ok, we didn't find any parent
+ # we bail out
+ if parent == '':
+ return
+ for h in all_hosts:
+ debug("Is it you? %s" % h.get_name())
+ if h.get_name() == parent:
+ debug("Houray, we find our parent %s -> %s" % (self.get_name(), h.get_name()))
+ self.parents.append(h.get_name())
+
+
+
+
+ # Look at ours oses and see which one is the better
+ def compute_os(self):
+ self.os_name = 'Unknown OS'
+ self.os_version = 'Unknown Version'
+
+ # bailout if we got no os :(
+ if len(self.os_possibilities) == 0:
+ return
+
+ max_accuracy = 0
+ for (os, osgen, accuracy) in self.os_possibilities:
+ if accuracy > max_accuracy:
+ max_accuracy = accuracy
+
+ # now get the entry with the max value
+ for (os, osgen, accuracy) in self.os_possibilities:
+ print "Can be", (os, osgen, accuracy)
+ if accuracy == max_accuracy:
+ self.os = (os, osgen)
+
+ print "Try to match", self.os
+
+ #Ok, unknown os... not good
+ if self.os == ('', ''):
+ return
+
+ map = {('Windows', '2000') : 'windows',
+ ('Windows', '2003') : 'windows',
+ ('Windows', '7') : 'windows',
+ ('Windows', 'XP') : 'windows',
+ # ME? you are a stupid moron!
+ ('Windows', 'Me') : 'windows',
+ ('Windows', '2008') : 'windows',
+ # that's a good boy :)
+ ('Linux', '2.6.X') : 'linux',
+ ('Linux', '2.4.X') : 'linux',
+ # HPUX? I think you didn't choose...
+ ('HP-UX', '11.X') : 'hpux',
+ ('HP-UX', '10.X') : 'hpux',
+ }
+
+ if self.os not in map:
+ return
+
+ self.os_name = map[self.os]
+ self.os_version = self.os[1]
+# self.templates.append(t)
+#
+# # Look for VMWare VM or hosts
+# if self.h.is_vmware_vm():
+# self.templates.append('vmware-vm')
+# # Now is an host?
+# if self.h.is_vmware_esx():
+# self.templates.append('vmware-host')
+
+
+ # Return the string of the 'discovery' items
+ def get_discovery_output(self):
+ r = []
+ r.append('%s::isup=1' % self.get_name())
+ r.append(self.get_discovery_system())
+ r.append(self.get_discovery_macvendor())
+ op = self.get_discovery_ports()
+ if op != '':
+ r.append(op)
+ par = self.get_discovery_parents()
+ if par != '':
+ r.append(par)
+ fqdn = self.get_dicovery_fqdn()
+ if fqdn != '':
+ r.append(fqdn)
+ ip = self.get_discovery_ip()
+ if ip != '':
+ r.append(ip)
+ return r
+
+
+ # for system output
+ def get_discovery_system(self):
+ r = '%s::os=%s' % (self.get_name(), self.os_name)+'\n'
+ r += '%s::osversion=%s' % (self.get_name(), self.os_version)
+ return r
+
+ def get_discovery_macvendor(self):
+ return '%s::macvendor=%s' % (self.get_name(), self.mac_vendor)
+
+ def get_discovery_ports(self):
+ if self.open_ports == []:
+ return ''
+ return '%s::openports=%s' % (self.get_name(), ','.join([str(p) for p in self.open_ports]))
+
+ def get_discovery_parents(self):
+ if self.parents == []:
+ return ''
+ return '%s::parents=%s' % (self.get_name(), ','.join(self.parents))
+
+ def get_dicovery_fqdn(self):
+ if self.host_name == '':
+ return ''
+ return '%s::fqdn=%s' % (self.get_name(), self.host_name)
+
+ def get_discovery_ip(self):
+ if self.ip == '':
+ return ''
+ return '%s::ip=%s' % (self.get_name(), self.ip)
+
+
+(_, tmppath) = tempfile.mkstemp()
+
+print "propose a tmppath", tmppath
+
+cmd = "sudo nmap %s -T4 -O --traceroute -oX %s" % (' '.join(targets) , tmppath)
+print "Launching command,", cmd
+try:
+ nmap_process = subprocess.Popen(
+ cmd,
+ stdout=subprocess.PIPE, stderr=subprocess.PIPE,
+ close_fds=True, shell=True)
+except OSError , exp:
+ print "Debug : Error in launching command:", cmd, exp
+ sys.exit(2)
+
+print "Try to communicate"
+(stdoutdata, stderrdata) = nmap_process.communicate()
+
+if nmap_process.returncode != 0:
+ print "Error : the nmap return an error : '%s'" % stderrdata
+ sys.exit(2)
+
+print "Got it", (stdoutdata, stderrdata)
+
+xml_input = tmppath
+
+tree = ElementTree()
+try:
+ tree.parse(xml_input)
+except IOError, exp:
+ print "Error opening file '%s' : %s" % (xml_input, exp)
+ sys.exit(2)
+
+hosts = tree.findall('host')
+debug("Number of hosts : %d" % len(hosts))
+
+
+all_hosts = []
+
+for h in hosts:
+ # Bypass non up hosts
+ if not is_up(h):
+ continue
+
+ dh = DetectedHost()
+
+ # Now we get the ipaddr and the mac vendor
+ # for future VMWare matching
+ #print h.__dict__
+ addrs = h.findall('address')
+ for addr in addrs:
+ #print "Address", addr.__dict__
+ addrtype = addr.attrib['addrtype']
+ if addrtype == 'ipv4':
+ dh.ip = addr.attrib['addr']
+ if addrtype == "mac":
+ if 'vendor' in addr.attrib:
+ dh.mac_vendor = addr.attrib['vendor']
+
+
+ # Now we've got the hostnames
+ host_names = h.findall('hostnames')
+ for h_name in host_names:
+ h_names = h_name.findall('hostname')
+ for h_n in h_names:
+ #print 'hname', h_n.__dict__
+ #print 'Host name', h_n.attrib['name']
+ dh.set_host_name(h_n.attrib['name'])
+
+
+ # Now print the traceroute
+ traces = h.findall('trace')
+ for trace in traces:
+ #print trace.__dict__
+ hops = trace.findall('hop')
+ #print "Number of hops", len(hops)
+ distance = len(hops)
+ if distance >= 2:
+ for hop in hops:
+ ttl = int(hop.attrib['ttl'])
+ #We search for the direct father
+ if ttl == distance-1:
+ #print ttl
+ #print "Super hop", hop.__dict__
+ # Get the host name if possible, if not
+ # take the IP
+ if 'host' in hop.attrib:
+ dh.parent = hop.attrib['host']
+ else:
+ dh.parent = hop.attrib['ipaddr']
+
+
+ # Now the OS detection
+ ios = h.find('os')
+ #print os.__dict__
+ cls = ios.findall('osclass')
+ for c in cls:
+ #print "Class", c.__dict__
+ family = c.attrib['osfamily']
+ accuracy = c.attrib['accuracy']
+ if 'osgen' in c.attrib:
+ osgen = c.attrib['osgen']
+ else:
+ osgen = None
+ #print "Type:", family, osgen, accuracy
+ dh.add_os_possibility(family, osgen, accuracy)
+ # Ok we can compute our OS now :)
+ dh.compute_os()
+
+
+ # Now the ports :)
+ allports = h.findall('ports')
+ for ap in allports:
+ ports = ap.findall('port')
+ for p in ports:
+ #print "Port", p.__dict__
+ p_id = p.attrib['portid']
+ s = p.find('state')
+ #print s.__dict__
+ state = s.attrib['state']
+ if state == 'open':
+ dh.open_ports.append(int(p_id))
+
+ #print dh.__dict__
+ all_hosts.append(dh)
+ #print "\n\n"
+
+
+
+for h in all_hosts:
+ name = h.get_name()
+ if not name:
+ continue
+
+ debug("Doing name %s" % name)
+ #path = os.path.join(output_dir, name+'.discover')
+ #print "Want path", path
+ #f = open(path, 'wb')
+ #cPickle.dump(h, f)
+ #f.close()
+ debug(str(h.__dict__))
+ # And generate the configuration too
+ h.look_for_parent(all_hosts)
+ #c.fill_system_conf()
+ #c.fill_ports_services()
+ #c.fill_system_services()
+# c.write_host_configuration()
+ #print "Host config", c.get_cfg_for_host()
+# c.write_services_configuration()
+ #print "Service config"
+ #print c.get_cfg_for_services()
+ #print c.__dict__
+ print '\n'.join(h.get_discovery_output())
+ #print "\n\n\n"
+
+
+# Try to remove the temppath
+try:
+ os.unlink(tmppath)
+except Exception:
+ pass
+
diff --git a/god/Monitoring/nagios/plugins/notify.sh b/god/Monitoring/nagios/plugins/notify.sh
new file mode 100755
index 00000000..0c88305c
--- /dev/null
+++ b/god/Monitoring/nagios/plugins/notify.sh
@@ -0,0 +1,6 @@
+#!/bin/bash
+
+echo "" >> ~/notify.log
+echo `date` >> ~/notify.log
+echo $* >> ~/notify.log
+
diff --git a/god/Monitoring/nagios/plugins/notify_irc b/god/Monitoring/nagios/plugins/notify_irc
new file mode 100755
index 00000000..e1de0866
--- /dev/null
+++ b/god/Monitoring/nagios/plugins/notify_irc
@@ -0,0 +1,87 @@
+#! /usr/bin/env python
+#
+# Example program using irclib.py.
+#
+# This program is free without restrictions; do anything you like with
+# it.
+#
+# Joel Rosdahl <joel@rosdahl.net>
+
+import irclib
+import sys
+#irclib.DEBUG= True
+class IRCCat(irclib.SimpleIRCClient):
+ def __init__(self, target,msg=""):
+ irclib.SimpleIRCClient.__init__(self)
+ self.target = target
+ self.msg = msg
+
+ def on_welcome(self, connection, event):
+ if irclib.is_channel(self.target):
+ connection.join(self.target)
+ else:
+ self.send_it()
+
+ def on_join(self, connection, event):
+ self.send_it()
+
+ def on_disconnect(self, connection, event):
+ sys.exit(0)
+
+ def send_it(self):
+ if self.msg:
+ print "writing given argv privmsg",self.msg
+ self.connection.privmsg(self.target, self.msg)
+ else:
+ print "writing stdin privmsg:"
+ while 1:
+ line = sys.stdin.readline()
+ if not line:
+ break
+ print line
+ self.connection.privmsg(self.target, line)
+ self.connection.quit("Using irclib.py")
+def findGreatNick(prefix='shinken'):
+ import random
+ import re
+ dic="/usr/share/dict/danish"
+ found=False
+ while not found:
+ w = random.choice(list(open(dic)))
+ found = re.match(r"^[a-zA-Z_-]+$",w)
+ return prefix +"|"+w.strip()
+
+def main():
+ if len(sys.argv) < 3:
+ print "Usage: notify_irc <server[:port]> <target> [message]"
+ print "\ntarget is a nickname or a channel."
+ sys.exit(1)
+
+ s = sys.argv[1].split(":", 1)
+ server = s[0]
+ if len(s) == 2:
+ try:
+ port = int(s[1])
+ except ValueError:
+ print "Error: Erroneous port."
+ sys.exit(1)
+ else:
+ port = 6667
+ import random
+ nickname = findGreatNick()
+ print nickname
+ target = sys.argv[2]
+ msg = ""
+ if len(sys.argv) == 4:
+ msg = sys.argv[3]
+ c = IRCCat(target,msg)
+ try:
+ print "trying to connect to ",server,port,nickname
+ c.connect(server, port, nickname )
+ except irclib.ServerConnectionError, x:
+ print x
+ sys.exit(1)
+ c.start()
+
+if __name__ == "__main__":
+ main()
diff --git a/god/Monitoring/nagios/plugins/nsca_client.py b/god/Monitoring/nagios/plugins/nsca_client.py
new file mode 100755
index 00000000..76e551db
--- /dev/null
+++ b/god/Monitoring/nagios/plugins/nsca_client.py
@@ -0,0 +1,184 @@
+### This is a very quick and dirty code for David so he can work on its sikuli agent
+# and report as nsca the results.
+# This need to be clean a lot, it's still a server and should be a client class :)
+# I can do it after my "new baby holidays" are finished ;)
+# J.Gabes
+
+
+
+import time
+import select
+import socket
+import struct
+import sys
+import random
+
+
+def decrypt_xor(data, key):
+ keylen = len(key)
+ crypted = [chr(ord(data[i]) ^ ord(key[i % keylen])) for i in xrange(len(data))]
+ return ''.join(crypted)
+
+
+
+#Just print some stuff
+class NSCA_client():
+ def __init__(self, host, port, encryption_method, password):
+ self.host = host
+ self.port = port
+ self.encryption_method = encryption_method
+ self.password = password
+ self.rng = random.Random(password)
+
+
+ #Ok, main function that is called in the CONFIGURATION phase
+ def get_objects(self):
+ print "[Dummy] ask me for objects to return"
+ r = {'hosts' : []}
+ h = {'name' : 'dummy host from dummy arbiter module',
+ 'register' : '0',
+ }
+
+ r['hosts'].append(h)
+ print "[Dummy] Returning to Arbiter the hosts:", r
+ return r
+
+ def send_init_packet(self, socket):
+ '''
+ Build an init packet
+ 00-127 : IV
+ 128-131 : unix timestamp
+ '''
+ iv = ''.join([chr(self.rng.randrange(256)) for i in xrange(128)])
+ init_packet = struct.pack("!128sI", iv, int(time.mktime(time.gmtime())))
+ socket.send(init_packet)
+ return iv
+
+ def read_check_result(self, data, iv):
+ '''
+ Read the check result
+ 00-01 : Version
+ 02-05 : CRC32
+ 06-09 : Timestamp
+ 10-11 : Return code
+ 12-75 : hostname
+ 76-203 : service
+ 204-715 : output of the plugin
+ 716-720 : padding
+ '''
+ if len(data) != 720:
+ return None
+
+ if self.encryption_method == 1:
+ data = decrypt_xor(data,self.password)
+ data = decrypt_xor(data,iv)
+
+ (version, pad1, crc32, timestamp, rc, hostname_dirty, service_dirty, output_dirty, pad2) = struct.unpack("!hhIIh64s128s512sh",data)
+ hostname = hostname_dirty.partition("\0", 1)[0]
+ service = service_dirty.partition("\0", 1)[0]
+ output = output_dirty.partition("\0", 1)[0]
+ return (timestamp, rc, hostname, service, output)
+
+ def post_command(self, timestamp, rc, hostname, service, output):
+ '''
+ Send a check result command to the arbiter
+ '''
+ if len(service) == 0:
+ extcmd = "[%lu] PROCESS_HOST_CHECK_RESULT;%s;%d;%s\n" % (timestamp,hostname,rc,output)
+ else:
+ extcmd = "[%lu] PROCESS_SERVICE_CHECK_RESULT;%s;%s;%d;%s\n" % (timestamp,hostname,service,rc,output)
+
+ print "want to send", extcmd
+
+ #e = ExternalCommand(extcmd)
+ #self.from_q.put(e)
+
+
+ # When you are in "external" mode, that is the main loop of your process
+ def main(self):
+ #self.set_exit_handler()
+ self.interrupted = False
+ backlog = 5
+ size = 8192
+ server = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
+ #server.setblocking(0)
+ server.connect((self.host, self.port))
+ #server.listen(backlog)
+ input = [server]
+ databuffer = {}
+ IVs = {}
+
+ init = server.recv(size)
+ print "got init", init
+
+ #init_packet = struct.pack("!128sI",iv,int(time.mktime(time.gmtime())))
+ (iv, t) = struct.unpack("!128sI",init)
+ print "IV", iv
+ print "T", t
+
+ version = 0
+ pad1 = 0
+ crc32= 0
+ timestamp = int(time.time())
+ rc = 2
+ hostname_dirty = "moncul"
+ service_dirty = "fonctionnne"
+ output_dirty = "blablalba"
+ pad2=0
+ '''
+ Read the check result
+ 00-01 : Version
+ 02-05 : CRC32
+ 06-09 : Timestamp
+ 10-11 : Return code
+ 12-75 : hostname
+ 76-203 : service
+ 204-715 : output of the plugin
+ 716-720 : padding
+ '''
+ init_packet = struct.pack("!hhIIh64s128s512sh", version, pad1, crc32, timestamp, rc, hostname_dirty, service_dirty, output_dirty, pad2)
+ print "Create packent len", len(init_packet)
+ #(version, pad1, crc32, timestamp, rc, hostname_dirty, service_dirty, output_dirty, pad2) = struct.unpack("!hhIIh64s128s512sh",data)
+
+ data = decrypt_xor(init_packet,iv)
+ data = decrypt_xor(data,self.password)
+
+
+ server.send(data)
+ sys.exit(0)
+
+ while not self.interrupted:
+ print "Loop"
+ inputready,outputready,exceptready = select.select(input,[],[], 1)
+
+ for s in inputready:
+ if s == server:
+ # handle the server socket
+ #client, address = server.accept()
+ iv = self.send_init_packet(client)
+ IVs[client] = iv
+ input.append(client)
+ else:
+ # handle all other sockets
+ data = s.recv(size)
+ if s in databuffer:
+ databuffer[s] += data
+ else:
+ databuffer[s] = data
+ if len(databuffer[s]) == 720:
+ # end-of-transmission or an empty line was received
+ (timestamp, rc, hostname, service, output)=self.read_check_result(databuffer[s],IVs[s])
+ del databuffer[s]
+ del IVs[s]
+ self.post_command(timestamp,rc,hostname,service,output)
+ try:
+ s.shutdown(2)
+ except Exception , exp:
+ print exp
+ s.close()
+ input.remove(s)
+
+
+
+nsca = NSCA_client('localhost', 5667, 1, 'toto')
+nsca.main()
diff --git a/god/Monitoring/nagios/plugins/sendmailhost.pl b/god/Monitoring/nagios/plugins/sendmailhost.pl
new file mode 100755
index 00000000..51e85670
--- /dev/null
+++ b/god/Monitoring/nagios/plugins/sendmailhost.pl
@@ -0,0 +1,96 @@
+#!/usr/bin/perl
+use MIME::QuotedPrint;
+use HTML::Entities;
+use Mail::Sendmail 0.75; # doesn't work with v. 0.74!
+
+$NOTIFICATIONTYPE=$ARGV[0];
+$HOSTNAME=$ARGV[1];
+$HOSTSTATE=$ARGV[2];
+$HOSTADDRESS=$ARGV[3];
+$HOSTOUTPUT=$ARGV[4];
+$SHORTDATETIME=$ARGV[5];
+$TO=$ARGV[6];
+#$HOSTNAME=$ARGV[7];
+#$DOWNTIME=$ARGV[8];
+
+$boundary = "====" . time() . "====";
+
+$text = "***** Notification Shinken *****\n\n"
+ . "Notification : $NOTIFICATIONTYPE\n\n"
+ . "Host : $HOSTNAME\n\n"
+ . "Address : $HOSTADDRESS\n"
+ . "State : $HOSTSTATE\n\n"
+ . "Date/Time : $SHORTDATETIME\n\n"
+ . "Host output : $HOSTOUTPUT";
+
+$texthtml = " <center><table border='11><th><strong>***** Notification Shinken *****</strong></th></table></center>\n";
+
+$color="blue";
+if ($NOTIFICATIONTYPE =~ /RECOVERY/) {
+ $color="#339933";
+}
+if ($NOTIFICATIONTYPE =~ /PROBLEM/) {
+ $color="#FF0000";
+}
+
+$HOSTOUTPUT =~ s/=/&#61;/g;
+
+$texthtml = $texthtml . "<strong>Notification type : <span style='ccolor:$color> $NOTIFICATIONTYPE </span></strong>\n\n";
+
+if ($DOWNTIME != 0) {
+ $color="#3333FF";
+ $texthtml = $texthtml . "<strong><i><span style='ccolor:$color>This device is actually in maintenance.</span></i></strong>\n\n";
+}
+
+if ($HOSTSTATE =~ /DOWN/) {
+ $color="#FF0000";
+}
+if ($HOSTSTATE =~ /UP/) {
+ $color="#339933";
+}
+if ($HOSTSTATE =~ /UNREACHABLE/) {
+ $color="#00CCCC";
+}
+
+$texthtml = $texthtml . "<strong>Impacted host</strong> : $HOSTNAME\n"
+ . "<strong>Address</strong> : <i>$HOSTADDRESS</i> \n"
+ . "<strong>Host State : <span style='ccolor:$color> $HOSTSTATE </span></strong>\n"
+ . "<strong>Date/Time</strong> : <i>$SHORTDATETIME</i> \n\n"
+ . "<strong>Host Output</strong> : $HOSTOUTPUT \n\n\n\n";
+
+
+%mail = (
+ from => 'Monitoring Agent <monitor-agent@invaliddomain.org>',
+ to => $TO,
+ subject => "$HOSTNAME is $HOSTSTATE !",
+ 'content-type' => "multipart/alternative; boundary=\"$boundary\"",
+ 'Auto-Submitted' => "auto-generated"
+ );
+
+$plain = encode_qp $text;
+
+#$html = encode_entities($texthtml);
+$html = $texthtml;
+$html =~ s/\n\n/\n\n<p>/g;
+$html =~ s/\n/<br>\n/g;
+$html = "<p>" . $html . "</p>";
+
+$boundary = '--'.$boundary;
+
+$mail{body} = <<END_OF_BODY;
+$boundary
+Content-Type: text/plain; charset="utf-8"
+Content-Transfer-Encoding: quoted-printable
+
+$plain
+
+$boundary
+Content-Type: text/html; charset="utf-8"
+Content-Transfer-Encoding: quoted-printable
+
+<html>$html</html>
+$boundary--
+END_OF_BODY
+
+sendmail(%mail) || print "Error: $Mail::Sendmail::error\n";
+
diff --git a/god/Monitoring/nagios/plugins/sendmailservices.pl b/god/Monitoring/nagios/plugins/sendmailservices.pl
new file mode 100755
index 00000000..ab5464cf
--- /dev/null
+++ b/god/Monitoring/nagios/plugins/sendmailservices.pl
@@ -0,0 +1,105 @@
+#!/usr/bin/perl
+use MIME::QuotedPrint;
+use HTML::Entities;
+use Mail::Sendmail 0.75; # doesn't work with v. 0.74!
+
+$NOTIFICATIONTYPE=$ARGV[0];
+$SERVICEDESC=$ARGV[1];
+$HOSTNAME=$ARGV[2];
+$HOSTADDRESS=$ARGV[3];
+$SERVICESTATE=$ARGV[4];
+$SHORTDATETIME=$ARGV[5];
+$SERVICEOUTPUT=$ARGV[6];
+$TO=$ARGV[7];
+#$HOSTNAME=$ARGV[8];
+
+$boundary = "====" . time() . "====";
+
+$text = "***** Notification Shinken *****\n\n"
+ . "Notification : $NOTIFICATIONTYPE\n\n"
+ . "Impacted service : $SERVICEDESC\n"
+ . "State : $SERVICESTATE\n\n"
+ . "Related host : $HOSTNAME\n"
+ . "Address : $HOSTADDRESS\n"
+ . "Date/Time : $SHORTDATETIME\n\n"
+ . "Service output : $SERVICEOUTPUT";
+
+$texthtml = " <center><table border='11><th><strong>***** Shinken Notification *****</strong></th></table></center>\n";
+
+$color="blue";
+$colorstate="black";
+
+if ($NOTIFICATIONTYPE =~ /RECOVERY/ | $NOTIFICATIONTYPE =~ ACKNOWLEDGEMENT) {
+ $color="#339933";
+ if ($SERVICESTATE =~ /OK/){
+ $colorstate="#339933";
+ }
+}
+
+if ($NOTIFICATIONTYPE =~ /PROBLEM/) {
+ $color="#FF0000";
+
+ if ($SERVICESTATE =~ /CRITICAL/) {
+ $colorstate="#FF0000";
+ }
+ if ($SERVICESTATE =~ /WARNING/) {
+ $colorstate="#FF9900";
+ }
+ if ($SERVICESTATE =~ /UNKNOWN/) {
+ $colorstate="#999999";
+ }
+}
+
+$SERVICEOUTPUT =~ s/=/&#61;/g;
+
+if ($NOTIFICATIONTYPE =~ /RECOVERY/){
+ if ($SERVICESTATE =~ /OK/){
+ $colorstate="#339933";
+ }
+}
+
+$texthtml = $texthtml . "<strong>Notification : <span style='ccolor:$color>$NOTIFICATIONTYPE</span></strong>\n\n"
+ . "<strong>Impacted service : <i>$SERVICEDESC</i></strong>\n"
+ . "<strong>State : <span style='ccolor:$colorstate>$SERVICESTATE</span></strong>\n\n";
+
+$texthtml = $texthtml . "<strong>Host</strong> : $HOSTNAME\n"
+ . "<strong>Address</strong> : <i>$HOSTADDRESS</i>\n"
+ . "<strong>Date/Time</strong> : <i>$SHORTDATETIME</i>\n\n"
+ . "<strong>Service output</strong> : $SERVICEOUTPUT\n\n\n\n";
+
+%mail = (
+ from => 'Monitoring Agent <monitor-agent@invaliddomain.org>',
+ to => $TO,
+ subject => "$SERVICEDESC $SERVICESTATE on $HOSTNAME",
+ 'content-type' => "multipart/alternative; boundary=\"$boundary\"",
+ 'Auto-Submitted' => "auto-generated"
+ );
+
+$plain = encode_qp $text;
+
+#$html = encode_entities($texthtml);
+$html = $texthtml;
+$html =~ s/\n\n/\n\n<p>/g;
+$html =~ s/\n/<br>\n/g;
+$html = "<p>" . $html . "</p>";
+
+$boundary = '--'.$boundary;
+
+
+$mail{body} = <<END_OF_BODY;
+$boundary
+Content-Type: text/plain; charset="utf-8"
+Content-Transfer-Encoding: quoted-printable
+
+$plain
+
+$boundary
+Content-Type: text/html; charset="utf-8"
+Content-Transfer-Encoding: quoted-printable
+
+<html>$html</html>
+$boundary--
+END_OF_BODY
+
+sendmail(%mail) || print "Error: $Mail::Sendmail::error\n";
+
diff --git a/god/Monitoring/nagios/plugins/urlize b/god/Monitoring/nagios/plugins/urlize
new file mode 100755
index 00000000..119be020
--- /dev/null
+++ b/god/Monitoring/nagios/plugins/urlize
Binary files differ
diff --git a/god/Monitoring/nagios/plugins/utils.pm b/god/Monitoring/nagios/plugins/utils.pm
new file mode 100644
index 00000000..676a06fe
--- /dev/null
+++ b/god/Monitoring/nagios/plugins/utils.pm
@@ -0,0 +1,67 @@
+# Utility drawer for Nagios plugins.
+#
+# This will be deprecated soon. Please use Nagios::Plugin from CPAN
+# for new plugins
+
+package utils;
+
+require Exporter;
+@ISA = qw(Exporter);
+@EXPORT_OK = qw($TIMEOUT %ERRORS &print_revision &support &usage);
+
+#use strict;
+#use vars($TIMEOUT %ERRORS);
+sub print_revision ($$);
+sub usage;
+sub support();
+sub is_hostname;
+
+## updated by autoconf
+$PATH_TO_RPCINFO = "/usr/bin/rpcinfo" ;
+$PATH_TO_LMSTAT = "" ;
+$PATH_TO_SMBCLIENT = "/usr/bin/smbclient" ;
+$PATH_TO_MAILQ = "/usr/bin/mailq";
+$PATH_TO_QMAIL_QSTAT = "";
+
+## common variables
+$TIMEOUT = 15;
+%ERRORS=('OK'=>0,'WARNING'=>1,'CRITICAL'=>2,'UNKNOWN'=>3,'DEPENDENT'=>4);
+
+## utility subroutines
+sub print_revision ($$) {
+ my $commandName = shift;
+ my $pluginRevision = shift;
+ print "$commandName v$pluginRevision (nagios-plugins 1.4.15)\n";
+ print "The nagios plugins come with ABSOLUTELY NO WARRANTY. You may redistribute\ncopies of the plugins under the terms of the GNU General Public License.\nFor more information about these matters, see the file named COPYING.\n";
+}
+
+sub support () {
+ my $support='Send email to nagios-users@lists.sourceforge.net if you have questions\nregarding use of this software. To submit patches or suggest improvements,\nsend email to nagiosplug-devel@lists.sourceforge.net.\nPlease include version information with all correspondence (when possible,\nuse output from the --version option of the plugin itself).\n';
+ $support =~ s/@/\@/g;
+ $support =~ s/\\n/\n/g;
+ print $support;
+}
+
+sub usage {
+ my $format=shift;
+ printf($format,@_);
+ exit $ERRORS{'UNKNOWN'};
+}
+
+sub is_hostname {
+ my $host1 = shift;
+ return 0 unless defined $host1;
+ if ($host1 =~ m/^[\d\.]+$/ && $host1 !~ /\.$/) {
+ if ($host1 =~ m/^[0-9]+\.[0-9]+\.[0-9]+\.[0-9]+$/) {
+ return 1;
+ } else {
+ return 0;
+ }
+ } elsif ($host1 =~ m/^[a-zA-Z0-9][-a-zA-Z0-9]*(\.[a-zA-Z0-9][-a-zA-Z0-9]*)*\.?$/) {
+ return 1;
+ } else {
+ return 0;
+ }
+}
+
+1;
diff --git a/god/Monitoring/nagios/plugins/utils.sh b/god/Monitoring/nagios/plugins/utils.sh
new file mode 100755
index 00000000..299a5e52
--- /dev/null
+++ b/god/Monitoring/nagios/plugins/utils.sh
@@ -0,0 +1,23 @@
+#! /bin/sh
+
+STATE_OK=0
+STATE_WARNING=1
+STATE_CRITICAL=2
+STATE_UNKNOWN=3
+STATE_DEPENDENT=4
+
+if test -x /usr/bin/printf; then
+ ECHO=/usr/bin/printf
+else
+ ECHO=echo
+fi
+
+print_revision() {
+ echo "$1 v$2 (nagios-plugins 1.4.15)"
+ $ECHO "The nagios plugins come with ABSOLUTELY NO WARRANTY. You may redistribute\ncopies of the plugins under the terms of the GNU General Public License.\nFor more information about these matters, see the file named COPYING.\n" | sed -e 's/\n/ /g'
+}
+
+support() {
+ $ECHO "Send email to nagios-users@lists.sourceforge.net if you have questions\nregarding use of this software. To submit patches or suggest improvements,\nsend email to nagiosplug-devel@lists.sourceforge.net.\nPlease include version information with all correspondence (when possible,\nuse output from the --version option of the plugin itself).\n" | sed -e 's/\n/ /g'
+}
+
diff --git a/god/Monitoring/nagios/plugins/vmware_discovery_runner.py b/god/Monitoring/nagios/plugins/vmware_discovery_runner.py
new file mode 100755
index 00000000..3a17c765
--- /dev/null
+++ b/god/Monitoring/nagios/plugins/vmware_discovery_runner.py
@@ -0,0 +1,225 @@
+#!/usr/bin/env python
+#Copyright (C) 2009-2010 :
+# Gabes Jean, naparuba@gmail.com
+# Gerhard Lausser, Gerhard.Lausser@consol.de
+# Gregory Starck, g.starck@gmail.com
+# Hartmut Goebel <h.goebel@goebel-consult.de>
+#
+#This file is part of Shinken.
+#
+#Shinken is free software: you can redistribute it and/or modify
+#it under the terms of the GNU Affero General Public License as published by
+#the Free Software Foundation, either version 3 of the License, or
+#(at your option) any later version.
+#
+#Shinken is distributed in the hope that it will be useful,
+#but WITHOUT ANY WARRANTY; without even the implied warranty of
+#MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+#GNU Affero General Public License for more details.
+#
+#You should have received a copy of the GNU Affero General Public License
+#along with Shinken. If not, see <http://www.gnu.org/licenses/>.
+
+import os
+import sys
+import shlex
+import shutil
+import optparse
+from subprocess import Popen, PIPE
+
+# Try to load json (2.5 and higer) or simplejson if failed (python2.4)
+try:
+ import json
+except ImportError:
+ # For old Python version, load
+ # simple json (it can be hard json?! It's 2 functions guy!)
+ try:
+ import simplejson as json
+ except ImportError:
+ sys.exit("Error : you need the json or simplejson module for this script")
+
+VERSION = '0.1'
+
+# Search if we can findthe check_esx3.pl file somewhere
+def search_for_check_esx3():
+ me = os.path.abspath( __file__ )
+ my_dir = os.path.dirname(me)
+ possible_paths = [os.path.join(my_dir, 'check_esx3.pl'),
+ '/var/lib/nagios/check_esx3.pl',
+ '/var/lib/plugins/nagios/check_esx3.pl',
+ '/var/lib/shinken/check_esx3.pl',
+ '/usr/local/nagios/libexec/check_esx3.pl',
+ '/usr/local/shinken/libexec/check_esx3.pl',
+ 'c:\\shinken\\libexec\\check_esx3.pl']
+
+ for p in possible_paths:
+ print "Look for", p
+ if os.path.exists(p):
+ print "Found a check_esx3.pl at", p
+ return p
+ return None
+
+
+# Split and clean the rules from a string to a list
+def _split_rules(rules):
+ return [r.strip() for r in rules.split('|')]
+
+# Apply all rules on the objects names
+def _apply_rules(name, rules):
+ if 'nofqdn' in rules:
+ name = name.split('.', 1)[0]
+ if 'lower' in rules:
+ name = name.lower()
+ return name
+
+# Get all vmware hosts from a VCenter and return the list
+def get_vmware_hosts(check_esx_path, vcenter, user, password):
+ list_host_cmd = [check_esx_path, '-D', vcenter, '-u', user, '-p', password,
+ '-l', 'runtime', '-s', 'listhost']
+
+ print "Got host list"
+ print ' '.join(list_host_cmd)
+ p = Popen(list_host_cmd, stdout=PIPE, stderr=PIPE)
+ output = p.communicate()
+
+ print "Exit status", p.returncode
+ if p.returncode == 2:
+ print "Error : the check_esx3.pl return in error :", output
+ sys.exit(2)
+
+ parts = output[0].split(':')
+ hsts_raw = parts[1].split('|')[0]
+ hsts_raw_lst = hsts_raw.split(',')
+
+ hosts = []
+ for hst_raw in hsts_raw_lst:
+ hst_raw = hst_raw.strip()
+ # look as server4.mydomain(UP)
+ elts = hst_raw.split('(')
+ hst = elts[0]
+ hosts.append(hst)
+
+ return hosts
+
+
+# For a specific host, ask all VM on it to the VCenter
+def get_vm_of_host(check_esx_path, vcenter, host, user, password):
+ print "Listing host", host
+ list_vm_cmd = [check_esx_path, '-D', vcenter, '-H', host,
+ '-u', user, '-p', password,
+ '-l', 'runtime', '-s', 'list']
+ print ' '.join(list_vm_cmd)
+ p = Popen(list_vm_cmd, stdout=PIPE)
+ output = p.communicate()
+
+ print "Exit status", p.returncode
+ if p.returncode == 2:
+ print "Error : the check_esx3.pl return in error :", output
+ sys.exit(2)
+
+ parts = output[0].split(':')
+ # Maybe we got a 'CRITICAL - There are no VMs.' message,
+ # if so, we bypass this host
+ if len(parts) < 2:
+ return None
+
+ vms_raw = parts[1].split('|')[0]
+ vms_raw_lst = vms_raw.split(',')
+
+ lst = []
+ for vm_raw in vms_raw_lst:
+ vm_raw = vm_raw.strip()
+ # look as MYVM(UP)
+ elts = vm_raw.split('(')
+ vm = elts[0]
+ lst.append(vm)
+ return lst
+
+
+# Create all tuples of the links for the hosts
+def print_all_links(res, rules):
+ r = []
+ for host in res:
+ host_name = _apply_rules(host, rules)
+ print "%s::isesxhost=1" % host_name
+ for vm in res[host]:
+ # First we apply rules on the names
+ vm_name = _apply_rules(vm, rules)
+ #v = (('host', host_name),('host', vm_name))
+ print "%s::isesxvm=1" % vm_name
+ print "%s::esxhost=%s" % (vm_name, host_name)
+ #r.append(v)
+ return r
+
+
+def write_output(r, path):
+ try:
+ f = open(path+'.tmp', 'wb')
+ buf = json.dumps(r)
+ f.write(buf)
+ f.close()
+ shutil.move(path+'.tmp', path)
+ print "File %s wrote" % path
+ except IOError, exp:
+ sys.exit("Error writing the file %s : %s" % (path, exp))
+
+
+def main(check_esx_path, vcenter, user, password, rules):
+ rules = _split_rules(rules)
+ res = {}
+ hosts = get_vmware_hosts(check_esx_path, vcenter, user, password)
+
+ for host in hosts:
+ lst = get_vm_of_host(check_esx_path, vcenter, host, user, password)
+ if lst:
+ res[host] = lst
+
+
+ print_all_links(res, rules)
+
+ #write_output(r, output)
+ print "Finished!"
+
+
+# Here we go!
+if __name__ == "__main__":
+ # Manage the options
+ parser = optparse.OptionParser(
+ version="Shinken VMware links dumping script version %s" % VERSION)
+ parser.add_option("-x", "--esx3-path", dest='check_esx_path',
+ default='/usr/local/nagios/libexec/check_esx3.pl',
+ help="Full path of the check_esx3.pl script (default: %default)")
+ parser.add_option("-V", "--vcenter", '--Vcenter',
+ help="tThe IP/DNS address of your Vcenter host.")
+ parser.add_option("-u", "--user",
+ help="User name to connect to this Vcenter")
+ parser.add_option("-p", "--password",
+ help="The password of this user")
+ parser.add_option('-r', '--rules', default='',
+ help="Rules of name transformation. Valid names are: "
+ "`lower`: to lower names, "
+ "`nofqdn`: keep only the first name (server.mydomain.com -> server)."
+ "You can use several rules like `lower|nofqdn`")
+
+ opts, args = parser.parse_args()
+ if args:
+ parser.error("does not take any positional arguments")
+
+ if opts.vcenter is None:
+ parser.error("missing -V or --Vcenter option for the vcenter IP/DNS address")
+ if opts.user is None:
+ parser.error("missing -u or --user option for the vcenter username")
+ if opts.password is None:
+ error = True
+ parser.error("missing -p or --password option for the vcenter password")
+ if not os.path.exists(opts.check_esx_path):
+ parser.error("the path %s for the check_esx3.pl script is wrong, missing file" % opts.check_esx_path)
+ else:
+ # Not given, try to find one
+ p = search_for_check_esx3()
+ if p is None:
+ parser.error("Sorry, I cannot find check_esx3.pl, please specify it with -x")
+ #else set it :)
+ opts.check_esx_path = p
+
+ main(**opts.__dict__)
diff --git a/god/Monitoring/nagios/shinken/brokerd-windows.ini b/god/Monitoring/nagios/shinken/brokerd-windows.ini
new file mode 100644
index 00000000..12ea6d24
--- /dev/null
+++ b/god/Monitoring/nagios/shinken/brokerd-windows.ini
@@ -0,0 +1,26 @@
+[daemon]
+workdir=c:\shinken\var
+pidfile=%(workdir)s/brokerd.pid
+interval_poll=5
+maxfd=1024
+port=7772
+host=0.0.0.0
+user=shinken
+group=shinken
+idontcareaboutsecurity=0
+
+# SSL part
+use_ssl=0
+certs_dir=etc/certs
+ca_cert=etc/certs/ca.pem
+server_cert=etc/certs/server.pem
+hard_ssl_name_check=0
+
+# Local log management.
+# Enable it only if you need it
+use_local_log=1
+local_log=%(workdir)s/brokerd.log
+user=shinken
+group=shinken
+workdir=/var/lib/shinken
+pidfile=/var/run/shinken/brokerd.pid
diff --git a/god/Monitoring/nagios/shinken/brokerd.ini b/god/Monitoring/nagios/shinken/brokerd.ini
new file mode 100644
index 00000000..baf0b773
--- /dev/null
+++ b/god/Monitoring/nagios/shinken/brokerd.ini
@@ -0,0 +1,37 @@
+[daemon]
+
+# workdir= var
+# For installation configuration :
+# workdir should be explicitely set to an absolute directory path.
+
+# using default values for following config variables value :
+# paths variables values, if not absolute paths, are relative to workdir.
+
+# user=shinken ; by default it's the current user.
+# group=shinken ; by default it's the current group.
+# pidfile=brokerd.pid
+
+# host=0.0.0.0
+# port=7772
+
+# interval_poll=5
+# maxfd=1024
+
+# idontcareaboutsecurity=0
+
+# SSL part
+# use_ssl=0
+# certs_dir=etc/certs
+# ca_cert=etc/certs/ca.pem
+# server_cert=etc/certs/server.pem
+# hard_ssl_name_check=0
+
+# Local log management.
+# Enable it only if you need it
+use_local_log=1
+local_log=brokerd.log
+
+user=shinken
+group=shinken
+workdir=/var/lib/shinken
+pidfile=/var/run/shinken/brokerd.pid
diff --git a/god/Monitoring/nagios/shinken/certs/ca.pem b/god/Monitoring/nagios/shinken/certs/ca.pem
new file mode 100755
index 00000000..bae94d13
--- /dev/null
+++ b/god/Monitoring/nagios/shinken/certs/ca.pem
@@ -0,0 +1,64 @@
+Certificate:
+ Data:
+ Version: 3 (0x2)
+ Serial Number:
+ ec:5b:5d:da:d5:1b:e4:a8
+ Signature Algorithm: sha1WithRSAEncryption
+ Issuer: C=FR, ST=Some-State, O=CAShinken, CN=CAShinken Certificate Master/emailAddress=none@localhost
+ Validity
+ Not Before: Jan 12 10:04:58 2011 GMT
+ Not After : Jan 11 10:04:58 2014 GMT
+ Subject: C=FR, ST=Some-State, O=CAShinken, CN=CAShinken Certificate Master/emailAddress=none@localhost
+ Subject Public Key Info:
+ Public Key Algorithm: rsaEncryption
+ RSA Public Key: (1024 bit)
+ Modulus (1024 bit):
+ 00:c1:33:c6:fb:5b:33:fb:7f:26:90:0e:2d:5a:41:
+ ba:49:5d:3a:68:62:aa:99:0d:f9:ad:44:2c:4d:c2:
+ ae:6a:28:3e:5f:29:0f:68:ef:13:f3:b2:43:55:fa:
+ e7:71:74:29:19:e6:03:3f:c8:e1:f2:76:00:ed:ef:
+ 5b:92:1b:c6:92:db:56:f9:64:6c:97:f6:90:e3:94:
+ 42:14:ea:9c:f2:5a:a5:b8:d0:8f:b1:3b:79:2a:fe:
+ a7:d9:75:c9:38:72:5c:27:c0:c3:b6:7f:52:af:7a:
+ 2a:c3:35:1a:98:b7:ca:b0:5b:7e:3f:ce:bf:9c:37:
+ 69:46:ca:35:b2:38:c0:5b:f9
+ Exponent: 65537 (0x10001)
+ X509v3 extensions:
+ X509v3 Subject Key Identifier:
+ 6F:9F:42:67:73:D0:3C:91:BC:39:EF:95:53:36:3A:B9:E3:09:53:DC
+ X509v3 Authority Key Identifier:
+ keyid:6F:9F:42:67:73:D0:3C:91:BC:39:EF:95:53:36:3A:B9:E3:09:53:DC
+ DirName:/C=FR/ST=Some-State/O=CAShinken/CN=CAShinken Certificate Master/emailAddress=none@localhost
+ serial:EC:5B:5D:DA:D5:1B:E4:A8
+
+ X509v3 Basic Constraints:
+ CA:TRUE
+ Signature Algorithm: sha1WithRSAEncryption
+ 25:ba:e5:78:da:29:0a:ce:97:0e:de:34:9f:e4:80:2b:aa:b5:
+ 91:24:e0:7c:69:89:a1:a4:9a:be:cf:63:39:6a:1f:6b:71:fa:
+ 7f:25:b5:34:fe:ae:20:9b:d9:47:66:9f:60:53:ef:d5:8f:70:
+ fb:b7:fc:fe:8c:6d:dc:81:1d:45:5a:c2:2f:a7:fa:f6:b3:28:
+ 52:75:c9:09:b7:c8:d1:40:cc:08:5d:a2:b1:fb:8a:1a:6c:ad:
+ 51:80:22:20:97:c2:cb:3f:8d:f4:c6:29:55:68:e6:ec:53:bd:
+ bd:a4:3c:94:af:54:48:f8:8c:4f:3f:8b:91:e7:1b:cd:26:59:
+ f9:2d
+-----BEGIN CERTIFICATE-----
+MIIDWTCCAsKgAwIBAgIJAOxbXdrVG+SoMA0GCSqGSIb3DQEBBQUAMHwxCzAJBgNV
+BAYTAkZSMRMwEQYDVQQIEwpTb21lLVN0YXRlMRIwEAYDVQQKEwlDQVNoaW5rZW4x
+JTAjBgNVBAMTHENBU2hpbmtlbiBDZXJ0aWZpY2F0ZSBNYXN0ZXIxHTAbBgkqhkiG
+9w0BCQEWDm5vbmVAbG9jYWxob3N0MB4XDTExMDExMjEwMDQ1OFoXDTE0MDExMTEw
+MDQ1OFowfDELMAkGA1UEBhMCRlIxEzARBgNVBAgTClNvbWUtU3RhdGUxEjAQBgNV
+BAoTCUNBU2hpbmtlbjElMCMGA1UEAxMcQ0FTaGlua2VuIENlcnRpZmljYXRlIE1h
+c3RlcjEdMBsGCSqGSIb3DQEJARYObm9uZUBsb2NhbGhvc3QwgZ8wDQYJKoZIhvcN
+AQEBBQADgY0AMIGJAoGBAMEzxvtbM/t/JpAOLVpBukldOmhiqpkN+a1ELE3Crmoo
+Pl8pD2jvE/OyQ1X653F0KRnmAz/I4fJ2AO3vW5IbxpLbVvlkbJf2kOOUQhTqnPJa
+pbjQj7E7eSr+p9l1yThyXCfAw7Z/Uq96KsM1Gpi3yrBbfj/Ov5w3aUbKNbI4wFv5
+AgMBAAGjgeIwgd8wHQYDVR0OBBYEFG+fQmdz0DyRvDnvlVM2OrnjCVPcMIGvBgNV
+HSMEgacwgaSAFG+fQmdz0DyRvDnvlVM2OrnjCVPcoYGApH4wfDELMAkGA1UEBhMC
+RlIxEzARBgNVBAgTClNvbWUtU3RhdGUxEjAQBgNVBAoTCUNBU2hpbmtlbjElMCMG
+A1UEAxMcQ0FTaGlua2VuIENlcnRpZmljYXRlIE1hc3RlcjEdMBsGCSqGSIb3DQEJ
+ARYObm9uZUBsb2NhbGhvc3SCCQDsW13a1RvkqDAMBgNVHRMEBTADAQH/MA0GCSqG
+SIb3DQEBBQUAA4GBACW65XjaKQrOlw7eNJ/kgCuqtZEk4HxpiaGkmr7PYzlqH2tx
++n8ltTT+riCb2Udmn2BT79WPcPu3/P6MbdyBHUVawi+n+vazKFJ1yQm3yNFAzAhd
+orH7ihpsrVGAIiCXwss/jfTGKVVo5uxTvb2kPJSvVEj4jE8/i5HnG80mWfkt
+-----END CERTIFICATE-----
diff --git a/god/Monitoring/nagios/shinken/certs/client.pem b/god/Monitoring/nagios/shinken/certs/client.pem
new file mode 100755
index 00000000..28c2019e
--- /dev/null
+++ b/god/Monitoring/nagios/shinken/certs/client.pem
@@ -0,0 +1,86 @@
+-----BEGIN RSA PRIVATE KEY-----
+MIIEowIBAAKCAQEAvw3smzbZuY3u0/JNPbYv3iNMlbYoSBCFX6yToqCIsgRS8JxF
+SAUd44CQFvry+HxB0D2/mhDkCzWgQWoNZfmU6NihDg6DreTvmloz6J9ucu+uXUO6
+9CFmexfrj7nsHw3Z46fA/beTttsJ8k1NhDHD9tloUrI5rNCFVL0C0VyJ7YNigVvo
+MPn9n88bR/cLNeO9Jx3acO8rjEuLE8kiXao1k3WwgBIk1fK/JKOMedmqA7V7ziK7
+o2pYsDBWs87hvOv2vWWr3BmeTeqvx6QFJKEGfC5BLPXIJCySZ4sda3idestseFjl
+n7kfwRndPmYECmM8qCu97piiE0RcdaUtk3tI9wIDAQABAoIBAGUfeZyt64/LEB4e
+ocOIKs3o4SBcyfVayT1amsn5LmEK6Ntx2znDe45u/dUr/m6HVk5iYIeraQiF2czF
+1VGkSKz1/Ej0Zb4k7q1EETWPLWaodiHnN40AIL4GaygnwFKvgiR9JikkgYrHZPxa
+7iyKKq79Y7phmyVdOTUg1dz6ngaYGQvlalyUDv1WyFdcj6O78ImI4KjC/l8ekC8I
+/WycWjbtbJPsS4OYXOQz9KW1uCo0aebNM5zJVdfmp+4NJtxSO6TnqEoECP1mw2BS
+wi+6xoKVVBJyKeIHoSP1xn8G6EKl98iDIrslz+wA1u8SOJIDY/Om7bo7odmhAzp+
+nhJOGAECgYEA8Tl4fSfqhEJO5PX9B/NF9QaANmqFM7QGCQK4axJzK04XDafEj2IP
+3B0A247teN6F5+wXNgsC1IhngzlCzcYm9qKnHfbOMZ6+8yYYV6qsDPZWlUoSdUCi
+Yd+A9GPnX3eifgrn35xBAr59fkRpYu4Rsh0hrV3SZ85nYZ//P7isic8CgYEAysHC
+bWHegMtGEwcTs+hRHZPpX6TaF7YM88vri+qrp2muq1Y67l5d7IBtIo76nRJvqlqN
+sERaY8rDKNEQLLDqnAl66hrQAe2jOrB/JHveYAlqZbBNn7qN8dzjlrEIc1CEIZFg
+LEjWfx9MhsVBS9MjU9HOxxxG9wq/Aqk8a15CoFkCgYEA16h4tvPbrziUzg+5ksUE
+cyXHtF6RDYNRrfaXp2oMOtgKtjOaAFI8OZ5YaPIkDl5qusiQi8lWU2pLmL61ocAY
+j4ElBR3kg+oXbsxNEPtN7BzDlZ5uWBNb2UJ3SIaUkP4k8KiRWpGYcXqaOSuySDbs
+7R8sP5FUjWezd00SZwaUgnMCgYBPw4Xvbg8Qb+dzWNdhcUVn82Zd4AaESXQy/Mf/
+VSSOSb8TXGr2l10vyx4j+EeTP0t6owEWlO1SUNQR3J0WV8sT847NRhsKhygt0H1U
+Jv7GnS2kL4V6DvQEcDeAcsi2RLiWVBCXm1f2zqNWaYdUgw1kzicgoXkxeqLGMzm3
+q29ekQKBgHGYjB51j0NwV6RgrEGPpOpBF6yrSkwwE7Ysjy01NNYf5AS7HneCM4ND
+vmYGh+NDTLYw62ogQRbUKL4p70ibh6nng90Y/cAewr3aS5z+bFxuJdAH+/nTmCFy
+MHjdMxdflt7mA2Sxg0S22UDBSV+PGtslNRKWKmFKL17Tub8uMx5l
+-----END RSA PRIVATE KEY-----
+Certificate:
+ Data:
+ Version: 1 (0x0)
+ Serial Number: 3 (0x3)
+ Signature Algorithm: sha1WithRSAEncryption
+ Issuer: C=FR, ST=Some-State, O=CAShinken, CN=CAShinken Certificate Master/emailAddress=none@localhost
+ Validity
+ Not Before: Jan 12 12:54:43 2011 GMT
+ Not After : Jan 9 12:54:43 2021 GMT
+ Subject: C=FR, ST=Some-State, O=CAShinken, OU=MAIN, CN=localhost
+ Subject Public Key Info:
+ Public Key Algorithm: rsaEncryption
+ RSA Public Key: (2048 bit)
+ Modulus (2048 bit):
+ 00:bf:0d:ec:9b:36:d9:b9:8d:ee:d3:f2:4d:3d:b6:
+ 2f:de:23:4c:95:b6:28:48:10:85:5f:ac:93:a2:a0:
+ 88:b2:04:52:f0:9c:45:48:05:1d:e3:80:90:16:fa:
+ f2:f8:7c:41:d0:3d:bf:9a:10:e4:0b:35:a0:41:6a:
+ 0d:65:f9:94:e8:d8:a1:0e:0e:83:ad:e4:ef:9a:5a:
+ 33:e8:9f:6e:72:ef:ae:5d:43:ba:f4:21:66:7b:17:
+ eb:8f:b9:ec:1f:0d:d9:e3:a7:c0:fd:b7:93:b6:db:
+ 09:f2:4d:4d:84:31:c3:f6:d9:68:52:b2:39:ac:d0:
+ 85:54:bd:02:d1:5c:89:ed:83:62:81:5b:e8:30:f9:
+ fd:9f:cf:1b:47:f7:0b:35:e3:bd:27:1d:da:70:ef:
+ 2b:8c:4b:8b:13:c9:22:5d:aa:35:93:75:b0:80:12:
+ 24:d5:f2:bf:24:a3:8c:79:d9:aa:03:b5:7b:ce:22:
+ bb:a3:6a:58:b0:30:56:b3:ce:e1:bc:eb:f6:bd:65:
+ ab:dc:19:9e:4d:ea:af:c7:a4:05:24:a1:06:7c:2e:
+ 41:2c:f5:c8:24:2c:92:67:8b:1d:6b:78:9d:7a:cb:
+ 6c:78:58:e5:9f:b9:1f:c1:19:dd:3e:66:04:0a:63:
+ 3c:a8:2b:bd:ee:98:a2:13:44:5c:75:a5:2d:93:7b:
+ 48:f7
+ Exponent: 65537 (0x10001)
+ Signature Algorithm: sha1WithRSAEncryption
+ b1:ca:15:5a:86:94:6c:fd:e0:46:d9:ae:13:e7:a1:8a:9d:5e:
+ e0:37:36:b6:c9:67:1f:eb:30:4c:47:60:00:5b:c4:41:39:d3:
+ 70:a3:8b:98:ca:c4:29:21:ee:2d:c8:cd:47:f6:0d:09:04:3c:
+ dc:fa:6e:dd:b5:cb:26:38:1a:31:5c:48:83:cc:ce:cd:fe:3b:
+ 4d:6d:73:5d:20:93:42:3c:d5:5a:8f:24:33:da:e5:f2:7e:08:
+ fd:03:ab:1d:6d:9c:11:6d:f9:99:d5:08:5c:22:36:9a:0b:4e:
+ 8c:59:8c:4e:be:55:b4:32:9c:1e:ce:05:e2:20:ab:1f:c3:03:
+ c6:94
+-----BEGIN CERTIFICATE-----
+MIICyDCCAjECAQMwDQYJKoZIhvcNAQEFBQAwfDELMAkGA1UEBhMCRlIxEzARBgNV
+BAgTClNvbWUtU3RhdGUxEjAQBgNVBAoTCUNBU2hpbmtlbjElMCMGA1UEAxMcQ0FT
+aGlua2VuIENlcnRpZmljYXRlIE1hc3RlcjEdMBsGCSqGSIb3DQEJARYObm9uZUBs
+b2NhbGhvc3QwHhcNMTEwMTEyMTI1NDQzWhcNMjEwMTA5MTI1NDQzWjBZMQswCQYD
+VQQGEwJGUjETMBEGA1UECBMKU29tZS1TdGF0ZTESMBAGA1UEChMJQ0FTaGlua2Vu
+MQ0wCwYDVQQLEwRNQUlOMRIwEAYDVQQDEwlsb2NhbGhvc3QwggEiMA0GCSqGSIb3
+DQEBAQUAA4IBDwAwggEKAoIBAQC/DeybNtm5je7T8k09ti/eI0yVtihIEIVfrJOi
+oIiyBFLwnEVIBR3jgJAW+vL4fEHQPb+aEOQLNaBBag1l+ZTo2KEODoOt5O+aWjPo
+n25y765dQ7r0IWZ7F+uPuewfDdnjp8D9t5O22wnyTU2EMcP22WhSsjms0IVUvQLR
+XIntg2KBW+gw+f2fzxtH9ws1470nHdpw7yuMS4sTySJdqjWTdbCAEiTV8r8ko4x5
+2aoDtXvOIrujaliwMFazzuG86/a9ZavcGZ5N6q/HpAUkoQZ8LkEs9cgkLJJnix1r
+eJ16y2x4WOWfuR/BGd0+ZgQKYzyoK73umKITRFx1pS2Te0j3AgMBAAEwDQYJKoZI
+hvcNAQEFBQADgYEAscoVWoaUbP3gRtmuE+ehip1e4Dc2tslnH+swTEdgAFvEQTnT
+cKOLmMrEKSHuLcjNR/YNCQQ83Ppu3bXLJjgaMVxIg8zOzf47TW1zXSCTQjzVWo8k
+M9rl8n4I/QOrHW2cEW35mdUIXCI2mgtOjFmMTr5VtDKcHs4F4iCrH8MDxpQ=
+-----END CERTIFICATE-----
diff --git a/god/Monitoring/nagios/shinken/certs/server.pem b/god/Monitoring/nagios/shinken/certs/server.pem
new file mode 100644
index 00000000..28c2019e
--- /dev/null
+++ b/god/Monitoring/nagios/shinken/certs/server.pem
@@ -0,0 +1,86 @@
+-----BEGIN RSA PRIVATE KEY-----
+MIIEowIBAAKCAQEAvw3smzbZuY3u0/JNPbYv3iNMlbYoSBCFX6yToqCIsgRS8JxF
+SAUd44CQFvry+HxB0D2/mhDkCzWgQWoNZfmU6NihDg6DreTvmloz6J9ucu+uXUO6
+9CFmexfrj7nsHw3Z46fA/beTttsJ8k1NhDHD9tloUrI5rNCFVL0C0VyJ7YNigVvo
+MPn9n88bR/cLNeO9Jx3acO8rjEuLE8kiXao1k3WwgBIk1fK/JKOMedmqA7V7ziK7
+o2pYsDBWs87hvOv2vWWr3BmeTeqvx6QFJKEGfC5BLPXIJCySZ4sda3idestseFjl
+n7kfwRndPmYECmM8qCu97piiE0RcdaUtk3tI9wIDAQABAoIBAGUfeZyt64/LEB4e
+ocOIKs3o4SBcyfVayT1amsn5LmEK6Ntx2znDe45u/dUr/m6HVk5iYIeraQiF2czF
+1VGkSKz1/Ej0Zb4k7q1EETWPLWaodiHnN40AIL4GaygnwFKvgiR9JikkgYrHZPxa
+7iyKKq79Y7phmyVdOTUg1dz6ngaYGQvlalyUDv1WyFdcj6O78ImI4KjC/l8ekC8I
+/WycWjbtbJPsS4OYXOQz9KW1uCo0aebNM5zJVdfmp+4NJtxSO6TnqEoECP1mw2BS
+wi+6xoKVVBJyKeIHoSP1xn8G6EKl98iDIrslz+wA1u8SOJIDY/Om7bo7odmhAzp+
+nhJOGAECgYEA8Tl4fSfqhEJO5PX9B/NF9QaANmqFM7QGCQK4axJzK04XDafEj2IP
+3B0A247teN6F5+wXNgsC1IhngzlCzcYm9qKnHfbOMZ6+8yYYV6qsDPZWlUoSdUCi
+Yd+A9GPnX3eifgrn35xBAr59fkRpYu4Rsh0hrV3SZ85nYZ//P7isic8CgYEAysHC
+bWHegMtGEwcTs+hRHZPpX6TaF7YM88vri+qrp2muq1Y67l5d7IBtIo76nRJvqlqN
+sERaY8rDKNEQLLDqnAl66hrQAe2jOrB/JHveYAlqZbBNn7qN8dzjlrEIc1CEIZFg
+LEjWfx9MhsVBS9MjU9HOxxxG9wq/Aqk8a15CoFkCgYEA16h4tvPbrziUzg+5ksUE
+cyXHtF6RDYNRrfaXp2oMOtgKtjOaAFI8OZ5YaPIkDl5qusiQi8lWU2pLmL61ocAY
+j4ElBR3kg+oXbsxNEPtN7BzDlZ5uWBNb2UJ3SIaUkP4k8KiRWpGYcXqaOSuySDbs
+7R8sP5FUjWezd00SZwaUgnMCgYBPw4Xvbg8Qb+dzWNdhcUVn82Zd4AaESXQy/Mf/
+VSSOSb8TXGr2l10vyx4j+EeTP0t6owEWlO1SUNQR3J0WV8sT847NRhsKhygt0H1U
+Jv7GnS2kL4V6DvQEcDeAcsi2RLiWVBCXm1f2zqNWaYdUgw1kzicgoXkxeqLGMzm3
+q29ekQKBgHGYjB51j0NwV6RgrEGPpOpBF6yrSkwwE7Ysjy01NNYf5AS7HneCM4ND
+vmYGh+NDTLYw62ogQRbUKL4p70ibh6nng90Y/cAewr3aS5z+bFxuJdAH+/nTmCFy
+MHjdMxdflt7mA2Sxg0S22UDBSV+PGtslNRKWKmFKL17Tub8uMx5l
+-----END RSA PRIVATE KEY-----
+Certificate:
+ Data:
+ Version: 1 (0x0)
+ Serial Number: 3 (0x3)
+ Signature Algorithm: sha1WithRSAEncryption
+ Issuer: C=FR, ST=Some-State, O=CAShinken, CN=CAShinken Certificate Master/emailAddress=none@localhost
+ Validity
+ Not Before: Jan 12 12:54:43 2011 GMT
+ Not After : Jan 9 12:54:43 2021 GMT
+ Subject: C=FR, ST=Some-State, O=CAShinken, OU=MAIN, CN=localhost
+ Subject Public Key Info:
+ Public Key Algorithm: rsaEncryption
+ RSA Public Key: (2048 bit)
+ Modulus (2048 bit):
+ 00:bf:0d:ec:9b:36:d9:b9:8d:ee:d3:f2:4d:3d:b6:
+ 2f:de:23:4c:95:b6:28:48:10:85:5f:ac:93:a2:a0:
+ 88:b2:04:52:f0:9c:45:48:05:1d:e3:80:90:16:fa:
+ f2:f8:7c:41:d0:3d:bf:9a:10:e4:0b:35:a0:41:6a:
+ 0d:65:f9:94:e8:d8:a1:0e:0e:83:ad:e4:ef:9a:5a:
+ 33:e8:9f:6e:72:ef:ae:5d:43:ba:f4:21:66:7b:17:
+ eb:8f:b9:ec:1f:0d:d9:e3:a7:c0:fd:b7:93:b6:db:
+ 09:f2:4d:4d:84:31:c3:f6:d9:68:52:b2:39:ac:d0:
+ 85:54:bd:02:d1:5c:89:ed:83:62:81:5b:e8:30:f9:
+ fd:9f:cf:1b:47:f7:0b:35:e3:bd:27:1d:da:70:ef:
+ 2b:8c:4b:8b:13:c9:22:5d:aa:35:93:75:b0:80:12:
+ 24:d5:f2:bf:24:a3:8c:79:d9:aa:03:b5:7b:ce:22:
+ bb:a3:6a:58:b0:30:56:b3:ce:e1:bc:eb:f6:bd:65:
+ ab:dc:19:9e:4d:ea:af:c7:a4:05:24:a1:06:7c:2e:
+ 41:2c:f5:c8:24:2c:92:67:8b:1d:6b:78:9d:7a:cb:
+ 6c:78:58:e5:9f:b9:1f:c1:19:dd:3e:66:04:0a:63:
+ 3c:a8:2b:bd:ee:98:a2:13:44:5c:75:a5:2d:93:7b:
+ 48:f7
+ Exponent: 65537 (0x10001)
+ Signature Algorithm: sha1WithRSAEncryption
+ b1:ca:15:5a:86:94:6c:fd:e0:46:d9:ae:13:e7:a1:8a:9d:5e:
+ e0:37:36:b6:c9:67:1f:eb:30:4c:47:60:00:5b:c4:41:39:d3:
+ 70:a3:8b:98:ca:c4:29:21:ee:2d:c8:cd:47:f6:0d:09:04:3c:
+ dc:fa:6e:dd:b5:cb:26:38:1a:31:5c:48:83:cc:ce:cd:fe:3b:
+ 4d:6d:73:5d:20:93:42:3c:d5:5a:8f:24:33:da:e5:f2:7e:08:
+ fd:03:ab:1d:6d:9c:11:6d:f9:99:d5:08:5c:22:36:9a:0b:4e:
+ 8c:59:8c:4e:be:55:b4:32:9c:1e:ce:05:e2:20:ab:1f:c3:03:
+ c6:94
+-----BEGIN CERTIFICATE-----
+MIICyDCCAjECAQMwDQYJKoZIhvcNAQEFBQAwfDELMAkGA1UEBhMCRlIxEzARBgNV
+BAgTClNvbWUtU3RhdGUxEjAQBgNVBAoTCUNBU2hpbmtlbjElMCMGA1UEAxMcQ0FT
+aGlua2VuIENlcnRpZmljYXRlIE1hc3RlcjEdMBsGCSqGSIb3DQEJARYObm9uZUBs
+b2NhbGhvc3QwHhcNMTEwMTEyMTI1NDQzWhcNMjEwMTA5MTI1NDQzWjBZMQswCQYD
+VQQGEwJGUjETMBEGA1UECBMKU29tZS1TdGF0ZTESMBAGA1UEChMJQ0FTaGlua2Vu
+MQ0wCwYDVQQLEwRNQUlOMRIwEAYDVQQDEwlsb2NhbGhvc3QwggEiMA0GCSqGSIb3
+DQEBAQUAA4IBDwAwggEKAoIBAQC/DeybNtm5je7T8k09ti/eI0yVtihIEIVfrJOi
+oIiyBFLwnEVIBR3jgJAW+vL4fEHQPb+aEOQLNaBBag1l+ZTo2KEODoOt5O+aWjPo
+n25y765dQ7r0IWZ7F+uPuewfDdnjp8D9t5O22wnyTU2EMcP22WhSsjms0IVUvQLR
+XIntg2KBW+gw+f2fzxtH9ws1470nHdpw7yuMS4sTySJdqjWTdbCAEiTV8r8ko4x5
+2aoDtXvOIrujaliwMFazzuG86/a9ZavcGZ5N6q/HpAUkoQZ8LkEs9cgkLJJnix1r
+eJ16y2x4WOWfuR/BGd0+ZgQKYzyoK73umKITRFx1pS2Te0j3AgMBAAEwDQYJKoZI
+hvcNAQEFBQADgYEAscoVWoaUbP3gRtmuE+ehip1e4Dc2tslnH+swTEdgAFvEQTnT
+cKOLmMrEKSHuLcjNR/YNCQQ83Ppu3bXLJjgaMVxIg8zOzf47TW1zXSCTQjzVWo8k
+M9rl8n4I/QOrHW2cEW35mdUIXCI2mgtOjFmMTr5VtDKcHs4F4iCrH8MDxpQ=
+-----END CERTIFICATE-----
diff --git a/god/Monitoring/nagios/shinken/commands.cfg b/god/Monitoring/nagios/shinken/commands.cfg
new file mode 100644
index 00000000..79a5e6e0
--- /dev/null
+++ b/god/Monitoring/nagios/shinken/commands.cfg
@@ -0,0 +1,285 @@
+# Here are some sample commands for checking classics things like
+# systems and websites
+
+# -----------------------------------------------------------------
+#
+# Localhost checks
+#
+# -----------------------------------------------------------------
+
+
+# Simple disk check for LOCALHOST ONLY!
+define command {
+ command_name check_local_disks
+ command_line $PLUGINSDIR$/check_disk -w 10% -c 5% -x /dev/shm -e -l
+}
+
+
+define command {
+ command_name check_local_load
+ command_line $PLUGINSDIR$/check_load -w 3,3,3 -c 5,5,5
+}
+
+define command {
+ command_name check_local_mem
+ command_line $PLUGINSDIR$/check_mem.pl -u -w 90 -c 95 -C
+}
+
+
+define command {
+ command_name check_local_swap
+ command_line $PLUGINSDIR$/check_swap -w 50% -c 25%
+}
+
+define command {
+ command_name check_local_cpu
+ command_line $PLUGINSDIR$/check_cpu -w 20 -c 10
+}
+
+
+
+
+# -----------------------------------------------------------------
+#
+# Classic network calls
+#
+# -----------------------------------------------------------------
+
+# Simple tcp check
+define command {
+ command_name check_tcp
+ command_line $PLUGINSDIR$/check_tcp -H $HOSTADDRESS$ -p $ARG1$
+}
+
+# Simple web check
+define command {
+ command_name check_http
+ command_line $PLUGINSDIR$/check_http -H $HOSTADDRESS$
+}
+
+# And with SSL
+define command {
+ command_name check_https
+ command_line $PLUGINSDIR$/check_http -H $HOSTADDRESS$ -S
+}
+
+
+# Check a DNS entry
+define command {
+ command_name check_dig
+ command_line $PLUGINSDIR$/check_dig -H $HOSTADDRESS$ -l $ARG1$
+}
+
+# Check a FTP service
+define command {
+ command_name check_ftp
+ command_line $PLUGINSDIR$/check_ftp -H $HOSTADDRESS$
+}
+
+
+# Ask a nrpe agent
+define command {
+ command_name check_nrpe
+ command_line $PLUGINSDIR$/check_nrpe -H $HOSTADDRESS$ -t 9 -u -c $ARG1$
+}
+
+# Same but with arguments
+define command {
+ command_name check_nrpe_args
+ command_line $PLUGINSDIR$/check_nrpe -H $HOSTADDRESS$ -t 9 -u -c $ARG1$ -a $ARG2$ $ARG3$ $ARG4$ $ARG5$
+}
+
+# Simple ping command
+define command {
+ command_name check_ping
+ command_line $PLUGINSDIR$/check_ping -H $HOSTADDRESS$ -w 3000,100% -c 5000,100% -p 1
+}
+
+# Look at good ssh launch
+define command {
+ command_name check_ssh
+ command_line $PLUGINSDIR$/check_ssh -H $HOSTADDRESS$
+}
+
+# Look for good smtp connection
+define command {
+ command_name check_smtp
+ command_line $PLUGINSDIR$/check_smtp -H $HOSTADDRESS$
+}
+
+# And SMTPS too
+define command {
+ command_name check_smtps
+ command_line $PLUGINSDIR$/check_smtp -H $HOSTADDRESS$ -S
+}
+
+# Look at a SSL certificate
+define command {
+ command_name check_https_certificate
+ command_line $PLUGINSDIR$/check_http -H $HOSTADDRESS$ -C 30
+}
+
+#Look at an HP printer state
+define command{
+ command_name check_hpjd
+ command_line $PLUGINSDIR$/check_hpjd -H $HOSTADDRESS$ -C $SNMPCOMMUNITYREAD$
+}
+
+
+# Look at Oracle connection
+define command {
+ command_name check_oracle_listener
+ command_line $PLUGINSDIR$/check_oracle --tns $HOSTADDRESS$
+}
+
+# Same but for MSSQL
+# Look at http://labs.consol.de/nagios/check_mssql_health/ to get it
+# Don't forget to change $MSSQLUSER$ and $MSSQLPASSWORD$ in resources.cfg before you use this ;)
+define command {
+ command_name check_mssql_connection
+ command_line $PLUGINSDIR$/check_mssql_health --hostname $HOSTADDRESS$ --username "$MSSQLUSER$" --password "$MSSQLPASSWORD$" --mode connection-time
+}
+
+
+# Ldap query
+# Don't forget to update the macros in the resources.cfg file
+define command {
+ command_name check_ldap
+ command_line $PLUGINSDIR$/check_ldap -H $HOSTADDRESS$ -b "$LDAPBASE$" -D $DOMAINUSER$ -P "$DOMAINPASSWORD$"
+}
+
+# Now the same, but in LDAPS
+# Don't forget to update the macros in the resources.cfg
+define command {
+ command_name check_ldaps
+ command_line $PLUGINSDIR$/check_ldaps -H $HOSTADDRESS$ -b "$LDAPBASE$" -D $DOMAINUSER$ -P "$DOMAINPASSWORD$"
+}
+
+# Distant mysql check
+define command {
+ command_name check_mysql_connection
+ command_line $PLUGINSDIR$/check_mysql -H $HOSTADDRESS$ -u $MYSQLUSER$ -p $MYSQLPASSWORD$
+}
+
+
+## Now ESX and VM checks
+##ARG1 and take cpu, io, net or mem
+define command{
+ command_name check_esx_host
+ command_line $PLUGINSDIR$/check_esx3.pl -D $VCENTER$ -H $HOSTADDRESS$ -u $VCENTERLOGIN$ -p $VCENTERPASSWORD$ l $ARG1$
+}
+
+define command{
+ command_name check_esx_vm
+ command_line $PLUGINSDIR$/check_esx3.pl -D $VCENTER$ -N $HOSTALIAS$ -u $VCENTERLOGIN$ -p $VCENTERPASSWORD$ -l $ARG1$
+}
+
+
+#### Then samples which are not really useful in the real world
+
+#Pollertag is a advanced features for mix architectures. Look at the doc for it.
+define command{
+ command_name check_linux_host_alive
+ command_line $USER1$/check_tcp -H $HOSTADDRESS$ -p 22 -t 3
+ #poller_tag DMZ
+ #module_type nrpe_poller
+}
+
+#Pollertag is a advanced features for mix architectures. Look at the doc for it.
+define command{
+ command_name check_host_alive
+ command_line $USER1$/check_ping -H $HOSTADDRESS$ -w 1,50% -c 2,70% -p 1
+ #poller_tag DMZ
+ #module_type nrpe_poller
+}
+
+
+define command{
+ command_name check_windows_host_alive
+ command_line $USER1$/check_tcp -H $HOSTADDRESS$ -p 139 -t 3
+ #poller_tag DMZ
+ #module_type nrpe_poller
+}
+
+
+define command{
+ command_name check_local_disk
+ command_line $USER1$/check.sh $HOSTADDRESS$ -c $ARG1$ SERVICE $USER1$
+ #poller_tag DMZ
+ #module_type nrpe_poller
+}
+
+
+# Dummy check port command
+define command{
+ command_name check_port
+ command_line /bin/ping localhost -c 1
+ #$USER1$/check.sh $HOSTADDRESS$ -c $ARG1$
+ #poller_tag DMZ
+ #module_type nrpe_poller
+}
+
+# Dummy check for mysql, always CRITICAL
+define command{
+ command_name check_mysql
+ command_line $USER1$/check_dummy.sh 2
+}
+
+
+define command{
+ command_name check_dummy
+ command_line $USER1$/check_dummy.sh $ARG1$
+ #poller_tag DMZ
+}
+
+
+define command{
+ command_name super_event_kill_everyone
+ command_line $USER1$/check.sh $HOSTADDRESS$ -c $ARG1$ SERVICE $_HOSTDELLSUCK$
+}
+
+
+# We say Http checks are always OK
+define command{
+ command_name check_http2
+ command_line $USER1$/check_dummy.sh 1
+ #module_type nrpe_poller
+}
+
+define command{
+ command_name check-host-alive
+ command_line $USER1$/check.sh $HOSTADDRESS$ -c $ARG1$ HOST $_HOSTDELLSUCK$ $SERVICEDESC:srv-1:Service-2$ $SERVICEDESC::Service-30$ $HOSTADDRESS:$ $HOSTGROUPALIAS:linux-servers$
+ #module_type dummy_poller
+}
+
+
+define command{
+ command_name check_vm_cpu
+ command_line $USER1$/check_esx3.pl -H lulu
+}
+
+
+#### Now notification commands
+define command{
+ command_name notify-host-by-email
+ command_line /usr/bin/printf "%b" "Shinken Notification\n\nType:$NOTIFICATIONTYPE$\nHost: $HOSTNAME$\nState: $HOSTSTATE$\nAddress: $HOSTADDRESS$\nInfo: $HOSTOUTPUT$\nDate/Time: $DATE$" | /usr/bin/mail -s "Host $HOSTSTATE$ alert for $HOSTNAME$!" $CONTACTEMAIL$
+}
+
+
+define command{
+ command_name notify-service-by-email
+ command_line /usr/bin/printf "%b" "Shinken Notification\n\nNotification Type: $NOTIFICATIONTYPE$\n\nService: $SERVICEDESC$\nHost: $HOSTALIAS$\nAddress: $HOSTADDRESS$\nState: $SERVICESTATE$\n\nDate/Time: $DATE$ Additional Info : $SERVICEOUTPUT$" | /usr/bin/mail -s "** $NOTIFICATIONTYPE$ alert - $HOSTALIAS$/$SERVICEDESC$ is $SERVICESTATE$ **" $CONTACTEMAIL$
+}
+
+
+#### And Discovery commands
+define command{
+ command_name nmap_discovery
+ command_line $USER1$/nmap_discovery_runner.py -t $NMAPTARGETS$
+}
+
+define command{
+ command_name vmware_esx_discovery
+ command_line $USER1$/vmware_discovery_runner.py -V $VCENTER$ -u $VCENTERLOGIN$ -p $VCENTERPASSWORD$ -r "lower|nofqdn"
+}
+
diff --git a/god/Monitoring/nagios/shinken/contactgroups.cfg b/god/Monitoring/nagios/shinken/contactgroups.cfg
new file mode 100644
index 00000000..517f9ead
--- /dev/null
+++ b/god/Monitoring/nagios/shinken/contactgroups.cfg
@@ -0,0 +1,8 @@
+
+#We create some contact groups
+
+define contactgroup{
+ contactgroup_name admins
+ alias admins
+ members admin
+}
diff --git a/god/Monitoring/nagios/shinken/contacts.cfg b/god/Monitoring/nagios/shinken/contacts.cfg
new file mode 100644
index 00000000..9a2f9bac
--- /dev/null
+++ b/god/Monitoring/nagios/shinken/contacts.cfg
@@ -0,0 +1,10 @@
+# It's a default admin
+# CHANGE ITS PASSWORD!!!!
+define contact{
+ use generic-contact
+ contact_name admin
+ email shinken@localhost
+ password admin
+}
+
+
diff --git a/god/Monitoring/nagios/shinken/dependencies.cfg b/god/Monitoring/nagios/shinken/dependencies.cfg
new file mode 100644
index 00000000..2a2c7449
--- /dev/null
+++ b/god/Monitoring/nagios/shinken/dependencies.cfg
@@ -0,0 +1,25 @@
+
+#Dependancies
+
+# This is the HARD way for define dependencies. Please look at the
+# service_dependencies property for the services instead!
+
+#define servicedependency {
+# host_name dc01
+# service_description ActiveDirectory
+# dependent_host_name dc07
+# dependent_service_description ActiveDirectory
+# execution_failure_criteria o
+# notification_failure_criteria w,u
+# dependency_period 24x7
+# }
+
+#define hostdependency{
+# host_name dc01
+# dependent_host_name localhost
+# execution_failure_criteria o
+# notification_failure_criteria u
+# dependency_period 24x7
+# }
+
+
diff --git a/god/Monitoring/nagios/shinken/discovery.cfg b/god/Monitoring/nagios/shinken/discovery.cfg
new file mode 100644
index 00000000..d8e9fa9f
--- /dev/null
+++ b/god/Monitoring/nagios/shinken/discovery.cfg
@@ -0,0 +1,25 @@
+
+# Log file of the discovery command
+log_file=/tmp/discovery.log
+
+# Configuration files with common discovery objects
+# like discoveryrules or runners
+cfg_file=discovery_rules.cfg
+cfg_file=discovery_runs.cfg
+
+# Load all commands that will be used
+cfg_file=commands.cfg
+
+# Some important macros
+resource_file=resource.cfg
+
+# Lock file (with pid) for Arbiterd
+lock_file=discovery.pid
+
+# Strip FQDN of the name ID to keep only the
+# basename of the element
+strip_idname_fqdn=0
+
+# Change this value to increase the discovery
+# scripts timeout. Start with a quite huge value, one hour.
+runners_timeout=3600
diff --git a/god/Monitoring/nagios/shinken/discovery_rules.cfg b/god/Monitoring/nagios/shinken/discovery_rules.cfg
new file mode 100644
index 00000000..cb3f5c31
--- /dev/null
+++ b/god/Monitoring/nagios/shinken/discovery_rules.cfg
@@ -0,0 +1,203 @@
+##### Here are some rules for generating classic services for network
+define discoveryrule {
+ discoveryrule_name HostGeneric
+ isup 1
+ use generic-host
+ creation_type host
+}
+
+
+
+##### Here are some rules for generating classic services for network
+define discoveryrule {
+ discoveryrule_name Http
+ openports ^80$
+ check_command check_http
+ service_description Http
+ use generic-service
+}
+
+define discoveryrule {
+ discoveryrule_name Https
+ openports ^443$
+ check_command check_https
+ service_description Https
+ use generic-service
+}
+
+define discoveryrule {
+ discoveryrule_name Https-Certificate
+ openports ^443$
+ check_command check_https_certificate
+ service_description Https-Certificate
+ use generic-service
+}
+
+define discoveryrule {
+ discoveryrule_name Ftp
+ openports ^21$
+ check_command check_ftp
+ service_description Ftp
+ use generic-service
+}
+
+define discoveryrule {
+ discoveryrule_name Ssh
+ openports ^22$
+ check_command check_ssh
+ service_description Ssh
+ use generic-service
+}
+
+define discoveryrule {
+ discoveryrule_name DNS
+ openports ^53$
+ check_command check_dig
+ service_description DNS
+ use generic-service
+}
+
+define discoveryrule {
+ discoveryrule_name SMTP
+ openports ^25$
+ check_command check_smtp
+ service_description SMTP
+ use generic-service
+}
+
+define discoveryrule {
+ discoveryrule_name SMTPS
+ openports ^465$
+ check_command check_smtps
+ service_description SMTPS
+ use generic-service
+}
+
+
+define discoveryrule {
+ discoveryrule_name LDAP
+ openports ^389$
+ check_command check_ldap
+ service_description 389
+ use generic-service
+}
+
+define discoveryrule {
+ discoveryrule_name LDAPS
+ openports ^636$
+ check_command check_ldaps
+ service_description LDAPS
+ use generic-service
+}
+
+## Printers
+# Nmap do nto find them good, so look at ports
+define discoveryrule {
+ discoveryrule_name HPPrinterState
+ openports 631,9100
+ check_command check_hpjd
+ service_description HPPrinterState
+ use generic-service
+}
+
+
+
+###Then some classic RDBMS connection
+define discoveryrule {
+ discoveryrule_name Mysql-Connexion
+ openports ^3306$
+ check_command check_mysql_connection
+ service_description Mysql-Connexion
+ use generic-service
+}
+
+define discoveryrule {
+ discoveryrule_name Oracle-Listener
+ openports ^1521$
+ check_command check_oracle_listener
+ service_description Oracle-Listener
+ use generic-service
+}
+
+define discoveryrule {
+ discoveryrule_name MSSQL-Connexion
+ openports ^1433$
+ check_command check_mssql_connection
+ service_description MSSQL-Connexion
+ use generic-service
+}
+
+
+### Look for a VMWare Host
+# Here for CPU
+define discoveryrule {
+ discoveryrule_name ESX-Host-Cpu
+ isesxhost 1
+ check_command check_esx_host!cpu
+ service_description ESX-host-Cpu
+ use generic-service
+}
+
+# Now Memory
+define discoveryrule {
+ discoveryrule_name ESX-Host-Mem
+ isesxhost 1
+ check_command check_esx_host!mem
+ service_description ESX-host-Mem
+ use generic-service
+}
+
+# Now I/O
+define discoveryrule {
+ discoveryrule_name ESX-Host-IO
+ isesxhost 1
+ check_command check_esx_host!io
+ service_description ESX-host-IO
+ use generic-service
+}
+
+# Now Network
+define discoveryrule {
+ discoveryrule_name ESX-Host-Net
+ isesxhost 1
+ check_command check_esx_host!net
+ service_description ESX-host-Net
+ use generic-service
+}
+
+#### And now look for VMware machines
+# Now CPU
+define discoveryrule {
+ discoveryrule_name ESX-VM-Cpu
+ isesxvm 1
+ check_command check_esx_vm!cpu
+ service_description ESX-VM-Cpu
+ use generic-service
+}
+
+# Now Memory
+define discoveryrule {
+ discoveryrule_name ESX-VM-Mem
+ isesxvm 1
+ check_command check_esx_vm!mem
+ service_description ESX-VM-Mem
+ use generic-service
+}
+
+# Now IO
+define discoveryrule {
+ discoveryrule_name ESX-VM-IO
+ isesxvm 1
+ check_command check_esx_vm!io
+ service_description ESX-VM-IO
+ use generic-service
+}
+
+# Now Network
+define discoveryrule {
+ discoveryrule_name ESX-VM-Net
+ isesxvm 1
+ check_command check_esx_vm!net
+ service_description ESX-VM-Net
+ use generic-service
+}
diff --git a/god/Monitoring/nagios/shinken/discovery_runs.cfg b/god/Monitoring/nagios/shinken/discovery_runs.cfg
new file mode 100644
index 00000000..d21b0c51
--- /dev/null
+++ b/god/Monitoring/nagios/shinken/discovery_runs.cfg
@@ -0,0 +1,10 @@
+define discoveryrun {
+ discoveryrun_name nmap
+ discoveryrun_command nmap_discovery
+}
+
+
+define discoveryrun {
+ discoveryrun_name vsphere
+ discoveryrun_command vmware_esx_discovery
+}
diff --git a/god/Monitoring/nagios/shinken/escalations.cfg b/god/Monitoring/nagios/shinken/escalations.cfg
new file mode 100644
index 00000000..a953d871
--- /dev/null
+++ b/god/Monitoring/nagios/shinken/escalations.cfg
@@ -0,0 +1,18 @@
+
+
+# Define escalation the OLD school way.
+# Better use the simple "escalation" way! (in shinken-specific.cfg)
+
+#define serviceescalation{
+# host_name localhost
+# hostgroup_name windows-servers
+# service_description Root Partition
+# contacts GNULinux_Administrator
+# contact_groups admins
+# first_notification 2
+# last_notification 5
+# notification_interval 1
+# escalation_period 24x7
+# escalation_options w,u,c,r
+# }
+
diff --git a/god/Monitoring/nagios/shinken/hostgroups.cfg b/god/Monitoring/nagios/shinken/hostgroups.cfg
new file mode 100644
index 00000000..fb8713b7
--- /dev/null
+++ b/god/Monitoring/nagios/shinken/hostgroups.cfg
@@ -0,0 +1,17 @@
+
+
+
+#A little host group. Host groups are important if you want to keep managable your conf ;)
+#define hostgroup{
+# hostgroup_name linux-servers ; The name of the hostgroup
+# alias Linux Servers ; Long name of the group
+# members localhost,dc01 ; Comma separated list of hosts that belong to this group
+# realm Europe
+# }
+
+
+#define hostgroup{
+# hostgroup_name mysql-servers
+# alias mysql-servers
+# members databasehost1,databasehost-us
+# }
diff --git a/god/Monitoring/nagios/shinken/hosts/localhost.cfg b/god/Monitoring/nagios/shinken/hosts/localhost.cfg
new file mode 100644
index 00000000..a15a9c5d
--- /dev/null
+++ b/god/Monitoring/nagios/shinken/hosts/localhost.cfg
@@ -0,0 +1,7 @@
+define host{
+ use linux
+ contact_groups admins
+ host_name localhost
+ address localhost
+ icon_set server
+ }
diff --git a/god/Monitoring/nagios/shinken/nagios-windows.cfg b/god/Monitoring/nagios/shinken/nagios-windows.cfg
new file mode 100644
index 00000000..478d3950
--- /dev/null
+++ b/god/Monitoring/nagios/shinken/nagios-windows.cfg
@@ -0,0 +1,136 @@
+
+
+#Will create the good module for your brokers
+log_file=c:\\shinken\\var\\shinken.log
+
+
+#Are you working? Yes I think...
+execute_host_checks=1
+execute_service_checks=1
+
+
+#Configuration files with common objects like commands, timeperiods,
+#or templates that are used by the host/service/contacts
+#cfg_file=commons.cfg
+cfg_file=commands.cfg
+cfg_file=timeperiods.cfg
+cfg_file=escalations.cfg
+cfg_file=dependencies.cfg
+cfg_file=contacts.cfg
+
+#Now templates of hosts, services and contacts
+cfg_file=templates.cfg
+
+#Now groups
+cfg_file=servicegroups.cfg
+cfg_file=hostgroups.cfg
+cfg_file=contactgroups.cfg
+
+#and now real hosts, services and contacts
+cfg_dir=hosts
+cfg_dir=services
+cfg_dir=objects/discovery
+
+#Some macros
+resource_file=resource.cfg
+
+
+#Dummy conf with 150 hosts, each one with 10 services
+#cfg_file=host-150.cfg
+#cfg_file=services-150h-1500srv.cfg
+
+
+#Broker? No, there is the module objects for it thanks.
+#broker_module=/usr/local/nagios/bin/ndomod-3x.o config_file=/usr/local/nagios/etc/ndomod.cfg
+
+
+#No use, this value must be in a module!
+#status_update_interval=60
+
+
+#Number of interval (60s by default) to spread the first checks
+#for hosts and servcies
+max_service_check_spread=5
+max_host_check_spread=5
+
+#File where are the external commands are sent. This will be in a module in the future
+#because Shinken is multiplatform, and Windows do not have such pipes
+#command_file=/usr/local/shinken/var/rw/nagios.cmd
+
+
+#Unused from now
+date_format=iso8601
+
+
+#You can set it to 1, but there is no embedded_perl from now, sorry
+enable_embedded_perl=0
+
+
+#ater 10s, checks are killed (RIP)
+service_check_timeout=10
+
+
+#flap_history is the lengh of history states we keep to look for flaping
+#20 by default, can be useful to increase it. Each flap_history increase cost :
+#flap_history cost = 4Bytes * flap_history * (nb hosts + nb services)
+#ex : 4 * 20 * (1000+10000) ~ 900Ko for a quite big conf. So, go for it!
+flap_history=30
+
+
+#Max plugin output for the plugins launch by the pollers, in bytes
+max_plugins_output_length=8192
+
+
+#Enable or not the state change on impact detection (like
+#an host going unreach if a parent is DOWN for example). It's for
+#services and hosts.
+#Remark : if this option is absent, the default is 0 (for Nagios
+#old behavior compatibility)
+enable_problem_impacts_states_change=1
+
+
+#Lock file (with pid) for Arbiterd
+lock_file=c:\\shinken\\var\\arbiterd.pid
+
+
+#if 1, disable all notice and warning messages at
+#configuration checking
+disable_old_nagios_parameters_whining=0
+
+
+#If you need to set a specific timezone to your deamons, uncomment it
+#use_timezone=FR/Paris
+
+#If possible, don't use it. It's not good for your CPU :)
+use_large_installation_tweaks=1
+enable_environment_macros=0
+
+## Security part with SSL
+use_ssl=0
+#certs_dir=etc/certs
+#ca_cert=etc/certs/ca.pem
+#server_cert=etc/certs/server.pem
+#hard_ssl_name_check=0
+
+
+# If in the log you want to see
+# [Fri Apr 15 15:43:19 2011] instead of
+# [1302874960], put this value to 1
+# !!!!!!!!!!!!!!
+# But beware, it won't be anymore parsable by tools
+# like Centreon or Thruk
+# !!!!!!!!!!!!!
+human_timestamp_log=0
+
+
+
+# The arbiter can have it's own local log
+local_log=c:\\shinken\\var\\arbiterd.log
+
+# Set to 0 will enable the nagios behavior that will
+# launch event handlers even if the element is in downtime.
+no_event_handlers_during_downtimes=1
+shinken_user=shinken
+shinken_group=shinken
+lock_file=/var/run/shinken/arbiterd.pid
+local_log=/var/log/shinken/arbiterd.log
diff --git a/god/Monitoring/nagios/shinken/nagios.cfg b/god/Monitoring/nagios/shinken/nagios.cfg
new file mode 100644
index 00000000..28d6b88d
--- /dev/null
+++ b/god/Monitoring/nagios/shinken/nagios.cfg
@@ -0,0 +1,157 @@
+
+#Will create the good module for your brokers
+#log_file=arbiterd.log
+#/tmp/donotusethis.log
+
+
+# If you want to set the workink directory of the
+# arbiter, just uncomment this
+# workdir=/var/lib/shinken
+
+#Are you working? Yes I think...
+execute_host_checks=1
+execute_service_checks=1
+
+
+#Configuration files with common objects like commands, timeperiods,
+#or templates that are used by the host/service/contacts
+#cfg_file=commons.cfg
+cfg_file=commands.cfg
+cfg_file=timeperiods.cfg
+cfg_file=escalations.cfg
+cfg_file=dependencies.cfg
+cfg_file=contacts.cfg
+
+#Now templates of hosts, services and contacts
+cfg_file=templates.cfg
+
+#Now groups
+cfg_file=servicegroups.cfg
+cfg_file=hostgroups.cfg
+cfg_file=contactgroups.cfg
+
+#and now real hosts, services and contacts
+cfg_dir=hosts
+cfg_dir=services
+cfg_dir=objects/discovery
+cfg_dir=objects/groups/
+cfg_dir=objects/internet/
+cfg_dir=objects/retiolum/
+cfg_dir=objects/shackspace/
+
+# Un comment this for a sample configuration
+#cfg_dir=sample
+
+#Some macros
+resource_file=resource.cfg
+
+
+#Dummy conf with 150 hosts, each one with 10 services
+#cfg_file=host-150.cfg
+#cfg_file=services-150h-1500srv.cfg
+
+
+#Broker? No, there is the module objects for it thanks.
+#broker_module=/usr/local/nagios/bin/ndomod-3x.o config_file=/usr/local/nagios/etc/ndomod.cfg
+
+
+# Useless here, must be in a module
+status_update_interval=60
+
+# Number of minutes between 2 retention save, here 1hour
+retention_update_interval=60
+
+#Number of interval (60s by default) to spread the first checks
+#for hosts and services
+max_service_check_spread=5
+max_host_check_spread=5
+
+#File where are the external commands are sent. This will be in a module in the future
+#because Shinken is multiplatform, and Windows do not have such pipes
+command_file=rw/nagios.cmd
+
+
+#Unused from now
+date_format=iso8601
+
+
+#You can set it to 1, but there is no embedded_perl for now, sorry
+enable_embedded_perl=0
+
+
+#after 10s, checks are killed (RIP)
+service_check_timeout=10
+
+
+#flap_history is the lengh of history states we keep to look for flaping
+#20 by default, can be useful to increase it. Each flap_history increase cost :
+#flap_history cost = 4Bytes * flap_history * (nb hosts + nb services)
+#ex : 4 * 20 * (1000+10000) ~ 900Ko for a quite big conf. So, go for it!
+flap_history=30
+
+
+#Max plugin output for the plugins launched by the pollers, in bytes
+max_plugins_output_length=8192
+
+
+#Enable or not the state change on impact detection (like
+#an host going unreach if a parent is DOWN for example). It's for
+#services and hosts.
+#Remark : if this option is absent, the default is 0 (for Nagios
+#old behavior compatibility)
+enable_problem_impacts_states_change=1
+
+
+#Lock file (with pid) for Arbiterd
+#lock_file=arbiterd.pid
+
+
+#if 1, disable all notice and warning messages at
+#configuration checking
+disable_old_nagios_parameters_whining=0
+
+
+#If you need to set a specific timezone to your deamons, uncomment it
+#use_timezone=FR/Paris
+
+#If possible, don't use it. It's not good for your CPU :)
+use_large_installation_tweaks=1
+enable_environment_macros=0
+
+#User that will be used by the arbiter. shinken/shinken
+#by default
+#shinken_user=shinken
+#shinken_group=shinken
+
+
+
+## Security part with SSL
+use_ssl=0
+#certs_dir=etc/certs
+#ca_cert=etc/certs/ca.pem
+#server_cert=etc/certs/server.pem
+#hard_ssl_name_check=0
+
+
+# If in the log you want to see
+# [Fri Apr 15 15:43:19 2011] instead of
+# [1302874960], put this value to 1
+# !!!!!!!!!!!!!!
+# But beware, it won't be anymore parsable by tools
+# like Centreon or Thruk
+# !!!!!!!!!!!!!
+human_timestamp_log=0
+
+
+
+# The arbiter can have it's own local log
+local_log=arbiterd.log
+
+# Set to 0 will enable the nagios behavior that will
+# launch event handlers even if the element is in downtime.
+no_event_handlers_during_downtimes=1
+
+shinken_user=shinken
+shinken_group=shinken
+lock_file=/var/run/shinken/arbiterd.pid
+local_log=/var/log/shinken/arbiterd.log
diff --git a/god/Monitoring/nagios/shinken/objects/groups/root_contact.cfg b/god/Monitoring/nagios/shinken/objects/groups/root_contact.cfg
new file mode 100644
index 00000000..a2c4180a
--- /dev/null
+++ b/god/Monitoring/nagios/shinken/objects/groups/root_contact.cfg
@@ -0,0 +1,16 @@
+define contact{
+ contact_name root
+ alias root
+ service_notification_period 24x7
+ host_notification_period 24x7
+ service_notification_options w,u,c,r
+ host_notification_options d,u,r
+ service_notification_commands notify-service-by-email
+ host_notification_commands notify-host-by-email
+ email root@krebsco.de
+ }
+define contactgroup{
+ contactgroup_name root-infrastructure
+ alias root-infrastructure
+ members root
+ }
diff --git a/god/Monitoring/nagios/shinken/objects/internet/euer.krebsco.de/Http.cfg b/god/Monitoring/nagios/shinken/objects/internet/euer.krebsco.de/Http.cfg
new file mode 100644
index 00000000..8701cabc
--- /dev/null
+++ b/god/Monitoring/nagios/shinken/objects/internet/euer.krebsco.de/Http.cfg
@@ -0,0 +1,6 @@
+define service {
+ service_description Http
+ use generic-service
+ check_command check_http
+ host_name euer.krebsco.de
+}
diff --git a/god/Monitoring/nagios/shinken/objects/internet/euer.krebsco.de/Ssh.cfg b/god/Monitoring/nagios/shinken/objects/internet/euer.krebsco.de/Ssh.cfg
new file mode 100644
index 00000000..a1303fec
--- /dev/null
+++ b/god/Monitoring/nagios/shinken/objects/internet/euer.krebsco.de/Ssh.cfg
@@ -0,0 +1,6 @@
+define service {
+ service_description Ssh
+ use generic-service
+ check_command check_ssh
+ host_name euer.krebsco.de
+}
diff --git a/god/Monitoring/nagios/shinken/objects/internet/euer.krebsco.de/euer.krebsco.de.cfg b/god/Monitoring/nagios/shinken/objects/internet/euer.krebsco.de/euer.krebsco.de.cfg
new file mode 100644
index 00000000..0e9de77f
--- /dev/null
+++ b/god/Monitoring/nagios/shinken/objects/internet/euer.krebsco.de/euer.krebsco.de.cfg
@@ -0,0 +1,4 @@
+define host {
+ use generic-host
+ host_name euer.krebsco.de
+}
diff --git a/god/Monitoring/nagios/shinken/objects/internet/google.de/Http.cfg b/god/Monitoring/nagios/shinken/objects/internet/google.de/Http.cfg
new file mode 100644
index 00000000..bd577394
--- /dev/null
+++ b/god/Monitoring/nagios/shinken/objects/internet/google.de/Http.cfg
@@ -0,0 +1,6 @@
+define service {
+ service_description Http
+ use generic-service
+ check_command check_http
+ host_name google.de
+}
diff --git a/god/Monitoring/nagios/shinken/objects/internet/google.de/Https-Certificate.cfg b/god/Monitoring/nagios/shinken/objects/internet/google.de/Https-Certificate.cfg
new file mode 100644
index 00000000..3804a0d7
--- /dev/null
+++ b/god/Monitoring/nagios/shinken/objects/internet/google.de/Https-Certificate.cfg
@@ -0,0 +1,6 @@
+define service {
+ service_description Https-Certificate
+ use generic-service
+ check_command check_https_certificate
+ host_name google.de
+}
diff --git a/god/Monitoring/nagios/shinken/objects/internet/google.de/Https.cfg b/god/Monitoring/nagios/shinken/objects/internet/google.de/Https.cfg
new file mode 100644
index 00000000..2bdc664e
--- /dev/null
+++ b/god/Monitoring/nagios/shinken/objects/internet/google.de/Https.cfg
@@ -0,0 +1,6 @@
+define service {
+ service_description Https
+ use generic-service
+ check_command check_https
+ host_name google.de
+}
diff --git a/god/Monitoring/nagios/shinken/objects/internet/google.de/google.de.cfg b/god/Monitoring/nagios/shinken/objects/internet/google.de/google.de.cfg
new file mode 100644
index 00000000..d903b730
--- /dev/null
+++ b/god/Monitoring/nagios/shinken/objects/internet/google.de/google.de.cfg
@@ -0,0 +1,4 @@
+define host {
+ use generic-host
+ host_name google.de
+}
diff --git a/god/Monitoring/nagios/shinken/objects/internet/oxberg.krebsco.de/84-23-80-172.blue.kundencontroller.de.cfg b/god/Monitoring/nagios/shinken/objects/internet/oxberg.krebsco.de/84-23-80-172.blue.kundencontroller.de.cfg
new file mode 100644
index 00000000..b7b89e51
--- /dev/null
+++ b/god/Monitoring/nagios/shinken/objects/internet/oxberg.krebsco.de/84-23-80-172.blue.kundencontroller.de.cfg
@@ -0,0 +1,4 @@
+define host {
+ use generic-host
+ host_name oxberg.krebsco.de
+}
diff --git a/god/Monitoring/nagios/shinken/objects/internet/oxberg.krebsco.de/Http.cfg b/god/Monitoring/nagios/shinken/objects/internet/oxberg.krebsco.de/Http.cfg
new file mode 100644
index 00000000..d3b07e1a
--- /dev/null
+++ b/god/Monitoring/nagios/shinken/objects/internet/oxberg.krebsco.de/Http.cfg
@@ -0,0 +1,6 @@
+define service {
+ service_description Http
+ use generic-service
+ check_command check_http
+ host_name oxberg.krebsco.de
+}
diff --git a/god/Monitoring/nagios/shinken/objects/internet/oxberg.krebsco.de/SMTP.cfg b/god/Monitoring/nagios/shinken/objects/internet/oxberg.krebsco.de/SMTP.cfg
new file mode 100644
index 00000000..11f82410
--- /dev/null
+++ b/god/Monitoring/nagios/shinken/objects/internet/oxberg.krebsco.de/SMTP.cfg
@@ -0,0 +1,6 @@
+define service {
+ service_description SMTP
+ use generic-service
+ check_command check_smtp
+ host_name oxberg.krebsco.de
+}
diff --git a/god/Monitoring/nagios/shinken/objects/internet/oxberg.krebsco.de/Ssh.cfg b/god/Monitoring/nagios/shinken/objects/internet/oxberg.krebsco.de/Ssh.cfg
new file mode 100644
index 00000000..747c17cf
--- /dev/null
+++ b/god/Monitoring/nagios/shinken/objects/internet/oxberg.krebsco.de/Ssh.cfg
@@ -0,0 +1,6 @@
+define service {
+ service_description Ssh
+ use generic-service
+ check_command check_ssh
+ host_name oxberg.krebsco.de
+}
diff --git a/god/Monitoring/nagios/shinken/objects/internet/shackspace.de/DNS.cfg b/god/Monitoring/nagios/shinken/objects/internet/shackspace.de/DNS.cfg
new file mode 100644
index 00000000..953ad45e
--- /dev/null
+++ b/god/Monitoring/nagios/shinken/objects/internet/shackspace.de/DNS.cfg
@@ -0,0 +1,6 @@
+define service {
+ service_description DNS
+ use generic-service
+ check_command check_dig!shackspace.de
+ host_name shackspace.de
+}
diff --git a/god/Monitoring/nagios/shinken/objects/internet/shackspace.de/Http.cfg b/god/Monitoring/nagios/shinken/objects/internet/shackspace.de/Http.cfg
new file mode 100644
index 00000000..b09f34c2
--- /dev/null
+++ b/god/Monitoring/nagios/shinken/objects/internet/shackspace.de/Http.cfg
@@ -0,0 +1,6 @@
+define service {
+ service_description Http
+ use generic-service
+ check_command check_http
+ host_name shackspace.de
+}
diff --git a/god/Monitoring/nagios/shinken/objects/internet/shackspace.de/Https-Certificate.cfg b/god/Monitoring/nagios/shinken/objects/internet/shackspace.de/Https-Certificate.cfg
new file mode 100644
index 00000000..490d1410
--- /dev/null
+++ b/god/Monitoring/nagios/shinken/objects/internet/shackspace.de/Https-Certificate.cfg
@@ -0,0 +1,6 @@
+define service {
+ service_description Https-Certificate
+ use generic-service
+ check_command check_https_certificate
+ host_name shackspace.de
+}
diff --git a/god/Monitoring/nagios/shinken/objects/internet/shackspace.de/Https.cfg b/god/Monitoring/nagios/shinken/objects/internet/shackspace.de/Https.cfg
new file mode 100644
index 00000000..f92e1951
--- /dev/null
+++ b/god/Monitoring/nagios/shinken/objects/internet/shackspace.de/Https.cfg
@@ -0,0 +1,6 @@
+define service {
+ service_description Https
+ use generic-service
+ check_command check_https
+ host_name shackspace.de
+}
diff --git a/god/Monitoring/nagios/shinken/objects/internet/shackspace.de/SMTP.cfg b/god/Monitoring/nagios/shinken/objects/internet/shackspace.de/SMTP.cfg
new file mode 100644
index 00000000..c9afcef9
--- /dev/null
+++ b/god/Monitoring/nagios/shinken/objects/internet/shackspace.de/SMTP.cfg
@@ -0,0 +1,6 @@
+define service {
+ service_description SMTP
+ use generic-service
+ check_command check_smtp
+ host_name shackspace.de
+}
diff --git a/god/Monitoring/nagios/shinken/objects/internet/shackspace.de/Ssh.cfg b/god/Monitoring/nagios/shinken/objects/internet/shackspace.de/Ssh.cfg
new file mode 100644
index 00000000..a96aefad
--- /dev/null
+++ b/god/Monitoring/nagios/shinken/objects/internet/shackspace.de/Ssh.cfg
@@ -0,0 +1,6 @@
+define service {
+ service_description Ssh
+ use generic-service
+ check_command check_ssh
+ host_name shackspace.de
+}
diff --git a/god/Monitoring/nagios/shinken/objects/internet/shackspace.de/shackspace.de.cfg b/god/Monitoring/nagios/shinken/objects/internet/shackspace.de/shackspace.de.cfg
new file mode 100644
index 00000000..b70b0e98
--- /dev/null
+++ b/god/Monitoring/nagios/shinken/objects/internet/shackspace.de/shackspace.de.cfg
@@ -0,0 +1,4 @@
+define host {
+ use generic-host
+ host_name shackspace.de
+}
diff --git a/god/Monitoring/nagios/shinken/objects/retiolum/supernode/Http.cfg b/god/Monitoring/nagios/shinken/objects/retiolum/supernode/Http.cfg
new file mode 100644
index 00000000..de2bc56d
--- /dev/null
+++ b/god/Monitoring/nagios/shinken/objects/retiolum/supernode/Http.cfg
@@ -0,0 +1,6 @@
+define service {
+ service_description Http
+ use generic-service
+ check_command check_http
+ host_name supernode
+}
diff --git a/god/Monitoring/nagios/shinken/objects/retiolum/supernode/SMTP.cfg b/god/Monitoring/nagios/shinken/objects/retiolum/supernode/SMTP.cfg
new file mode 100644
index 00000000..213e9d23
--- /dev/null
+++ b/god/Monitoring/nagios/shinken/objects/retiolum/supernode/SMTP.cfg
@@ -0,0 +1,6 @@
+define service {
+ service_description SMTP
+ use generic-service
+ check_command check_smtp
+ host_name supernode
+}
diff --git a/god/Monitoring/nagios/shinken/objects/retiolum/supernode/Ssh.cfg b/god/Monitoring/nagios/shinken/objects/retiolum/supernode/Ssh.cfg
new file mode 100644
index 00000000..72b211b4
--- /dev/null
+++ b/god/Monitoring/nagios/shinken/objects/retiolum/supernode/Ssh.cfg
@@ -0,0 +1,6 @@
+define service {
+ service_description Ssh
+ use generic-service
+ check_command check_ssh
+ host_name supernode
+}
diff --git a/god/Monitoring/nagios/shinken/objects/retiolum/supernode/supernode.cfg b/god/Monitoring/nagios/shinken/objects/retiolum/supernode/supernode.cfg
new file mode 100644
index 00000000..c3c537b8
--- /dev/null
+++ b/god/Monitoring/nagios/shinken/objects/retiolum/supernode/supernode.cfg
@@ -0,0 +1,5 @@
+define host {
+ use generic-host
+ host_name supernode
+ contact_group root-infrastructure
+}
diff --git a/god/Monitoring/nagios/shinken/objects/shackspace/10.42.0.2/10.42.0.2.cfg b/god/Monitoring/nagios/shinken/objects/shackspace/10.42.0.2/10.42.0.2.cfg
new file mode 100644
index 00000000..1ebc589c
--- /dev/null
+++ b/god/Monitoring/nagios/shinken/objects/shackspace/10.42.0.2/10.42.0.2.cfg
@@ -0,0 +1,4 @@
+define host {
+ use generic-host
+ host_name 10.42.0.2
+}
diff --git a/god/Monitoring/nagios/shinken/objects/shackspace/10.42.0.2/Http.cfg b/god/Monitoring/nagios/shinken/objects/shackspace/10.42.0.2/Http.cfg
new file mode 100644
index 00000000..47064f61
--- /dev/null
+++ b/god/Monitoring/nagios/shinken/objects/shackspace/10.42.0.2/Http.cfg
@@ -0,0 +1,6 @@
+define service {
+ service_description Http
+ use generic-service
+ check_command check_http
+ host_name 10.42.0.2
+}
diff --git a/god/Monitoring/nagios/shinken/objects/shackspace/10.42.0.20/10.42.0.20.cfg b/god/Monitoring/nagios/shinken/objects/shackspace/10.42.0.20/10.42.0.20.cfg
new file mode 100644
index 00000000..19333936
--- /dev/null
+++ b/god/Monitoring/nagios/shinken/objects/shackspace/10.42.0.20/10.42.0.20.cfg
@@ -0,0 +1,4 @@
+define host {
+ use generic-host
+ host_name 10.42.0.20
+}
diff --git a/god/Monitoring/nagios/shinken/objects/shackspace/10.42.0.20/Http.cfg b/god/Monitoring/nagios/shinken/objects/shackspace/10.42.0.20/Http.cfg
new file mode 100644
index 00000000..a55221dd
--- /dev/null
+++ b/god/Monitoring/nagios/shinken/objects/shackspace/10.42.0.20/Http.cfg
@@ -0,0 +1,6 @@
+define service {
+ service_description Http
+ use generic-service
+ check_command check_http
+ host_name 10.42.0.20
+}
diff --git a/god/Monitoring/nagios/shinken/objects/shackspace/10.42.0.3/10.42.0.3.cfg b/god/Monitoring/nagios/shinken/objects/shackspace/10.42.0.3/10.42.0.3.cfg
new file mode 100644
index 00000000..619bd6e2
--- /dev/null
+++ b/god/Monitoring/nagios/shinken/objects/shackspace/10.42.0.3/10.42.0.3.cfg
@@ -0,0 +1,4 @@
+define host {
+ use generic-host
+ host_name 10.42.0.3
+}
diff --git a/god/Monitoring/nagios/shinken/objects/shackspace/10.42.0.3/Ssh.cfg b/god/Monitoring/nagios/shinken/objects/shackspace/10.42.0.3/Ssh.cfg
new file mode 100644
index 00000000..e5a59a81
--- /dev/null
+++ b/god/Monitoring/nagios/shinken/objects/shackspace/10.42.0.3/Ssh.cfg
@@ -0,0 +1,6 @@
+define service {
+ service_description Ssh
+ use generic-service
+ check_command check_ssh
+ host_name 10.42.0.3
+}
diff --git a/god/Monitoring/nagios/shinken/objects/shackspace/10.42.0.4/10.42.0.4.cfg b/god/Monitoring/nagios/shinken/objects/shackspace/10.42.0.4/10.42.0.4.cfg
new file mode 100644
index 00000000..59006c55
--- /dev/null
+++ b/god/Monitoring/nagios/shinken/objects/shackspace/10.42.0.4/10.42.0.4.cfg
@@ -0,0 +1,4 @@
+define host {
+ use generic-host
+ host_name 10.42.0.4
+}
diff --git a/god/Monitoring/nagios/shinken/objects/shackspace/10.42.0.5/10.42.0.5.cfg b/god/Monitoring/nagios/shinken/objects/shackspace/10.42.0.5/10.42.0.5.cfg
new file mode 100644
index 00000000..dc16615a
--- /dev/null
+++ b/god/Monitoring/nagios/shinken/objects/shackspace/10.42.0.5/10.42.0.5.cfg
@@ -0,0 +1,4 @@
+define host {
+ use generic-host
+ host_name 10.42.0.5
+}
diff --git a/god/Monitoring/nagios/shinken/objects/shackspace/10.42.0.5/Http.cfg b/god/Monitoring/nagios/shinken/objects/shackspace/10.42.0.5/Http.cfg
new file mode 100644
index 00000000..50f1dc61
--- /dev/null
+++ b/god/Monitoring/nagios/shinken/objects/shackspace/10.42.0.5/Http.cfg
@@ -0,0 +1,6 @@
+define service {
+ service_description Http
+ use generic-service
+ check_command check_http
+ host_name 10.42.0.5
+}
diff --git a/god/Monitoring/nagios/shinken/objects/shackspace/10.42.0.7/10.42.0.7.cfg b/god/Monitoring/nagios/shinken/objects/shackspace/10.42.0.7/10.42.0.7.cfg
new file mode 100644
index 00000000..39804385
--- /dev/null
+++ b/god/Monitoring/nagios/shinken/objects/shackspace/10.42.0.7/10.42.0.7.cfg
@@ -0,0 +1,4 @@
+define host {
+ use generic-host
+ host_name 10.42.0.7
+}
diff --git a/god/Monitoring/nagios/shinken/objects/shackspace/10.42.0.7/Http.cfg b/god/Monitoring/nagios/shinken/objects/shackspace/10.42.0.7/Http.cfg
new file mode 100644
index 00000000..83b9ca97
--- /dev/null
+++ b/god/Monitoring/nagios/shinken/objects/shackspace/10.42.0.7/Http.cfg
@@ -0,0 +1,6 @@
+define service {
+ service_description Http
+ use generic-service
+ check_command check_http
+ host_name 10.42.0.7
+}
diff --git a/god/Monitoring/nagios/shinken/objects/shackspace/10.42.0.8/10.42.0.8.cfg b/god/Monitoring/nagios/shinken/objects/shackspace/10.42.0.8/10.42.0.8.cfg
new file mode 100644
index 00000000..2a65e2fa
--- /dev/null
+++ b/god/Monitoring/nagios/shinken/objects/shackspace/10.42.0.8/10.42.0.8.cfg
@@ -0,0 +1,4 @@
+define host {
+ use generic-host
+ host_name 10.42.0.8
+}
diff --git a/god/Monitoring/nagios/shinken/objects/shackspace/10.42.0.8/Http.cfg b/god/Monitoring/nagios/shinken/objects/shackspace/10.42.0.8/Http.cfg
new file mode 100644
index 00000000..a7f2d5f5
--- /dev/null
+++ b/god/Monitoring/nagios/shinken/objects/shackspace/10.42.0.8/Http.cfg
@@ -0,0 +1,6 @@
+define service {
+ service_description Http
+ use generic-service
+ check_command check_http
+ host_name 10.42.0.8
+}
diff --git a/god/Monitoring/nagios/shinken/objects/shackspace/10.42.0.9/10.42.0.9.cfg b/god/Monitoring/nagios/shinken/objects/shackspace/10.42.0.9/10.42.0.9.cfg
new file mode 100644
index 00000000..99d2e724
--- /dev/null
+++ b/god/Monitoring/nagios/shinken/objects/shackspace/10.42.0.9/10.42.0.9.cfg
@@ -0,0 +1,4 @@
+define host {
+ use generic-host
+ host_name 10.42.0.9
+}
diff --git a/god/Monitoring/nagios/shinken/objects/shackspace/10.42.0.9/Http.cfg b/god/Monitoring/nagios/shinken/objects/shackspace/10.42.0.9/Http.cfg
new file mode 100644
index 00000000..b46915dd
--- /dev/null
+++ b/god/Monitoring/nagios/shinken/objects/shackspace/10.42.0.9/Http.cfg
@@ -0,0 +1,6 @@
+define service {
+ service_description Http
+ use generic-service
+ check_command check_http
+ host_name 10.42.0.9
+}
diff --git a/god/Monitoring/nagios/shinken/objects/shackspace/aptproxy.shack/Ssh.cfg b/god/Monitoring/nagios/shinken/objects/shackspace/aptproxy.shack/Ssh.cfg
new file mode 100644
index 00000000..3a489402
--- /dev/null
+++ b/god/Monitoring/nagios/shinken/objects/shackspace/aptproxy.shack/Ssh.cfg
@@ -0,0 +1,6 @@
+define service {
+ service_description Ssh
+ use generic-service
+ check_command check_ssh
+ host_name aptproxy.shack
+}
diff --git a/god/Monitoring/nagios/shinken/objects/shackspace/aptproxy.shack/aptproxy.shack.cfg b/god/Monitoring/nagios/shinken/objects/shackspace/aptproxy.shack/aptproxy.shack.cfg
new file mode 100644
index 00000000..94c71033
--- /dev/null
+++ b/god/Monitoring/nagios/shinken/objects/shackspace/aptproxy.shack/aptproxy.shack.cfg
@@ -0,0 +1,4 @@
+define host {
+ use generic-host
+ host_name aptproxy.shack
+}
diff --git a/god/Monitoring/nagios/shinken/objects/shackspace/dhcp.shack/Ssh.cfg b/god/Monitoring/nagios/shinken/objects/shackspace/dhcp.shack/Ssh.cfg
new file mode 100644
index 00000000..4fec2042
--- /dev/null
+++ b/god/Monitoring/nagios/shinken/objects/shackspace/dhcp.shack/Ssh.cfg
@@ -0,0 +1,6 @@
+define service {
+ service_description Ssh
+ use generic-service
+ check_command check_ssh
+ host_name dhcp.shack
+}
diff --git a/god/Monitoring/nagios/shinken/objects/shackspace/dhcp.shack/dhcp.shack.cfg b/god/Monitoring/nagios/shinken/objects/shackspace/dhcp.shack/dhcp.shack.cfg
new file mode 100644
index 00000000..85b57629
--- /dev/null
+++ b/god/Monitoring/nagios/shinken/objects/shackspace/dhcp.shack/dhcp.shack.cfg
@@ -0,0 +1,4 @@
+define host {
+ use generic-host
+ host_name dhcp.shack
+}
diff --git a/god/Monitoring/nagios/shinken/objects/shackspace/dns.shack/DNS.cfg b/god/Monitoring/nagios/shinken/objects/shackspace/dns.shack/DNS.cfg
new file mode 100644
index 00000000..aa756a5f
--- /dev/null
+++ b/god/Monitoring/nagios/shinken/objects/shackspace/dns.shack/DNS.cfg
@@ -0,0 +1,6 @@
+define service {
+ service_description DNS
+ use generic-service
+ check_command check_dig!shack.shack
+ host_name dns.shack
+}
diff --git a/god/Monitoring/nagios/shinken/objects/shackspace/dns.shack/Ssh.cfg b/god/Monitoring/nagios/shinken/objects/shackspace/dns.shack/Ssh.cfg
new file mode 100644
index 00000000..12e65611
--- /dev/null
+++ b/god/Monitoring/nagios/shinken/objects/shackspace/dns.shack/Ssh.cfg
@@ -0,0 +1,6 @@
+define service {
+ service_description Ssh
+ use generic-service
+ check_command check_ssh
+ host_name dns.shack
+}
diff --git a/god/Monitoring/nagios/shinken/objects/shackspace/dns.shack/dns.shack.cfg b/god/Monitoring/nagios/shinken/objects/shackspace/dns.shack/dns.shack.cfg
new file mode 100644
index 00000000..e3be8ce1
--- /dev/null
+++ b/god/Monitoring/nagios/shinken/objects/shackspace/dns.shack/dns.shack.cfg
@@ -0,0 +1,4 @@
+define host {
+ use generic-host
+ host_name dns.shack
+}
diff --git a/god/Monitoring/nagios/shinken/objects/shackspace/gameds.shack/Ssh.cfg b/god/Monitoring/nagios/shinken/objects/shackspace/gameds.shack/Ssh.cfg
new file mode 100644
index 00000000..697e5b5a
--- /dev/null
+++ b/god/Monitoring/nagios/shinken/objects/shackspace/gameds.shack/Ssh.cfg
@@ -0,0 +1,6 @@
+define service {
+ service_description Ssh
+ use generic-service
+ check_command check_ssh
+ host_name gameds.shack
+}
diff --git a/god/Monitoring/nagios/shinken/objects/shackspace/gameds.shack/gameds.shack.cfg b/god/Monitoring/nagios/shinken/objects/shackspace/gameds.shack/gameds.shack.cfg
new file mode 100644
index 00000000..55b152e1
--- /dev/null
+++ b/god/Monitoring/nagios/shinken/objects/shackspace/gameds.shack/gameds.shack.cfg
@@ -0,0 +1,4 @@
+define host {
+ use generic-host
+ host_name gameds.shack
+}
diff --git a/god/Monitoring/nagios/shinken/objects/shackspace/genericore.shack/Ssh.cfg b/god/Monitoring/nagios/shinken/objects/shackspace/genericore.shack/Ssh.cfg
new file mode 100644
index 00000000..cb1769a4
--- /dev/null
+++ b/god/Monitoring/nagios/shinken/objects/shackspace/genericore.shack/Ssh.cfg
@@ -0,0 +1,6 @@
+define service {
+ service_description Ssh
+ use generic-service
+ check_command check_ssh
+ host_name genericore.shack
+}
diff --git a/god/Monitoring/nagios/shinken/objects/shackspace/genericore.shack/genericore.shack.cfg b/god/Monitoring/nagios/shinken/objects/shackspace/genericore.shack/genericore.shack.cfg
new file mode 100644
index 00000000..c1ca0f82
--- /dev/null
+++ b/god/Monitoring/nagios/shinken/objects/shackspace/genericore.shack/genericore.shack.cfg
@@ -0,0 +1,4 @@
+define host {
+ use generic-host
+ host_name genericore.shack
+}
diff --git a/god/Monitoring/nagios/shinken/objects/shackspace/homepage.shack/Http.cfg b/god/Monitoring/nagios/shinken/objects/shackspace/homepage.shack/Http.cfg
new file mode 100644
index 00000000..25db441f
--- /dev/null
+++ b/god/Monitoring/nagios/shinken/objects/shackspace/homepage.shack/Http.cfg
@@ -0,0 +1,6 @@
+define service {
+ service_description Http
+ use generic-service
+ check_command check_http
+ host_name homepage.shack
+}
diff --git a/god/Monitoring/nagios/shinken/objects/shackspace/homepage.shack/Ssh.cfg b/god/Monitoring/nagios/shinken/objects/shackspace/homepage.shack/Ssh.cfg
new file mode 100644
index 00000000..5982bb7c
--- /dev/null
+++ b/god/Monitoring/nagios/shinken/objects/shackspace/homepage.shack/Ssh.cfg
@@ -0,0 +1,6 @@
+define service {
+ service_description Ssh
+ use generic-service
+ check_command check_ssh
+ host_name homepage.shack
+}
diff --git a/god/Monitoring/nagios/shinken/objects/shackspace/homepage.shack/homepage.shack.cfg b/god/Monitoring/nagios/shinken/objects/shackspace/homepage.shack/homepage.shack.cfg
new file mode 100644
index 00000000..a8cde1f7
--- /dev/null
+++ b/god/Monitoring/nagios/shinken/objects/shackspace/homepage.shack/homepage.shack.cfg
@@ -0,0 +1,4 @@
+define host {
+ use generic-host
+ host_name homepage.shack
+}
diff --git a/god/Monitoring/nagios/shinken/objects/shackspace/monitoring.shack/Http.cfg b/god/Monitoring/nagios/shinken/objects/shackspace/monitoring.shack/Http.cfg
new file mode 100644
index 00000000..4ec14ec2
--- /dev/null
+++ b/god/Monitoring/nagios/shinken/objects/shackspace/monitoring.shack/Http.cfg
@@ -0,0 +1,6 @@
+define service {
+ service_description Http
+ use generic-service
+ check_command check_http
+ host_name monitoring.shack
+}
diff --git a/god/Monitoring/nagios/shinken/objects/shackspace/monitoring.shack/Ssh.cfg b/god/Monitoring/nagios/shinken/objects/shackspace/monitoring.shack/Ssh.cfg
new file mode 100644
index 00000000..e07f5e57
--- /dev/null
+++ b/god/Monitoring/nagios/shinken/objects/shackspace/monitoring.shack/Ssh.cfg
@@ -0,0 +1,6 @@
+define service {
+ service_description Ssh
+ use generic-service
+ check_command check_ssh
+ host_name monitoring.shack
+}
diff --git a/god/Monitoring/nagios/shinken/objects/shackspace/monitoring.shack/monitoring.shack.cfg b/god/Monitoring/nagios/shinken/objects/shackspace/monitoring.shack/monitoring.shack.cfg
new file mode 100644
index 00000000..e4c245d9
--- /dev/null
+++ b/god/Monitoring/nagios/shinken/objects/shackspace/monitoring.shack/monitoring.shack.cfg
@@ -0,0 +1,4 @@
+define host {
+ use generic-host
+ host_name monitoring.shack
+}
diff --git a/god/Monitoring/nagios/shinken/objects/shackspace/node1.shack/Ssh.cfg b/god/Monitoring/nagios/shinken/objects/shackspace/node1.shack/Ssh.cfg
new file mode 100644
index 00000000..c5d0fa5e
--- /dev/null
+++ b/god/Monitoring/nagios/shinken/objects/shackspace/node1.shack/Ssh.cfg
@@ -0,0 +1,6 @@
+define service {
+ service_description Ssh
+ use generic-service
+ check_command check_ssh
+ host_name node1.shack
+}
diff --git a/god/Monitoring/nagios/shinken/objects/shackspace/node1.shack/node1.shack.cfg b/god/Monitoring/nagios/shinken/objects/shackspace/node1.shack/node1.shack.cfg
new file mode 100644
index 00000000..1c25a20e
--- /dev/null
+++ b/god/Monitoring/nagios/shinken/objects/shackspace/node1.shack/node1.shack.cfg
@@ -0,0 +1,4 @@
+define host {
+ use generic-host
+ host_name node1.shack
+}
diff --git a/god/Monitoring/nagios/shinken/objects/shackspace/node2.shack/Ssh.cfg b/god/Monitoring/nagios/shinken/objects/shackspace/node2.shack/Ssh.cfg
new file mode 100644
index 00000000..d2e6802c
--- /dev/null
+++ b/god/Monitoring/nagios/shinken/objects/shackspace/node2.shack/Ssh.cfg
@@ -0,0 +1,6 @@
+define service {
+ service_description Ssh
+ use generic-service
+ check_command check_ssh
+ host_name node2.shack
+}
diff --git a/god/Monitoring/nagios/shinken/objects/shackspace/node2.shack/node2.shack.cfg b/god/Monitoring/nagios/shinken/objects/shackspace/node2.shack/node2.shack.cfg
new file mode 100644
index 00000000..b22fb16d
--- /dev/null
+++ b/god/Monitoring/nagios/shinken/objects/shackspace/node2.shack/node2.shack.cfg
@@ -0,0 +1,4 @@
+define host {
+ use generic-host
+ host_name node2.shack
+}
diff --git a/god/Monitoring/nagios/shinken/objects/shackspace/plattenschwein.shack/Http.cfg b/god/Monitoring/nagios/shinken/objects/shackspace/plattenschwein.shack/Http.cfg
new file mode 100644
index 00000000..65ac9897
--- /dev/null
+++ b/god/Monitoring/nagios/shinken/objects/shackspace/plattenschwein.shack/Http.cfg
@@ -0,0 +1,6 @@
+define service {
+ service_description Http
+ use generic-service
+ check_command check_http
+ host_name plattenschwein.shack
+}
diff --git a/god/Monitoring/nagios/shinken/objects/shackspace/plattenschwein.shack/Ssh.cfg b/god/Monitoring/nagios/shinken/objects/shackspace/plattenschwein.shack/Ssh.cfg
new file mode 100644
index 00000000..f0cdcdd2
--- /dev/null
+++ b/god/Monitoring/nagios/shinken/objects/shackspace/plattenschwein.shack/Ssh.cfg
@@ -0,0 +1,6 @@
+define service {
+ service_description Ssh
+ use generic-service
+ check_command check_ssh
+ host_name plattenschwein.shack
+}
diff --git a/god/Monitoring/nagios/shinken/objects/shackspace/plattenschwein.shack/plattenschwein.shack.cfg b/god/Monitoring/nagios/shinken/objects/shackspace/plattenschwein.shack/plattenschwein.shack.cfg
new file mode 100644
index 00000000..d27d74b3
--- /dev/null
+++ b/god/Monitoring/nagios/shinken/objects/shackspace/plattenschwein.shack/plattenschwein.shack.cfg
@@ -0,0 +1,4 @@
+define host {
+ use generic-host
+ host_name plattenschwein.shack
+}
diff --git a/god/Monitoring/nagios/shinken/objects/shackspace/powerraw.shack/powerraw.shack.cfg b/god/Monitoring/nagios/shinken/objects/shackspace/powerraw.shack/powerraw.shack.cfg
new file mode 100644
index 00000000..9ea51887
--- /dev/null
+++ b/god/Monitoring/nagios/shinken/objects/shackspace/powerraw.shack/powerraw.shack.cfg
@@ -0,0 +1,4 @@
+define host {
+ use generic-host
+ host_name powerraw.shack
+}
diff --git a/god/Monitoring/nagios/shinken/objects/shackspace/printer.shack/Http.cfg b/god/Monitoring/nagios/shinken/objects/shackspace/printer.shack/Http.cfg
new file mode 100644
index 00000000..4f143bad
--- /dev/null
+++ b/god/Monitoring/nagios/shinken/objects/shackspace/printer.shack/Http.cfg
@@ -0,0 +1,6 @@
+define service {
+ service_description Http
+ use generic-service
+ check_command check_http
+ host_name printer.shack
+}
diff --git a/god/Monitoring/nagios/shinken/objects/shackspace/printer.shack/Ssh.cfg b/god/Monitoring/nagios/shinken/objects/shackspace/printer.shack/Ssh.cfg
new file mode 100644
index 00000000..725cebd5
--- /dev/null
+++ b/god/Monitoring/nagios/shinken/objects/shackspace/printer.shack/Ssh.cfg
@@ -0,0 +1,6 @@
+define service {
+ service_description Ssh
+ use generic-service
+ check_command check_ssh
+ host_name printer.shack
+}
diff --git a/god/Monitoring/nagios/shinken/objects/shackspace/printer.shack/printer.shack.cfg b/god/Monitoring/nagios/shinken/objects/shackspace/printer.shack/printer.shack.cfg
new file mode 100644
index 00000000..3f8b2b2f
--- /dev/null
+++ b/god/Monitoring/nagios/shinken/objects/shackspace/printer.shack/printer.shack.cfg
@@ -0,0 +1,4 @@
+define host {
+ use generic-host
+ host_name printer.shack
+}
diff --git a/god/Monitoring/nagios/shinken/objects/shackspace/pxe.shack/Ssh.cfg b/god/Monitoring/nagios/shinken/objects/shackspace/pxe.shack/Ssh.cfg
new file mode 100644
index 00000000..e1fae603
--- /dev/null
+++ b/god/Monitoring/nagios/shinken/objects/shackspace/pxe.shack/Ssh.cfg
@@ -0,0 +1,6 @@
+define service {
+ service_description Ssh
+ use generic-service
+ check_command check_ssh
+ host_name pxe.shack
+}
diff --git a/god/Monitoring/nagios/shinken/objects/shackspace/pxe.shack/pxe.shack.cfg b/god/Monitoring/nagios/shinken/objects/shackspace/pxe.shack/pxe.shack.cfg
new file mode 100644
index 00000000..e7fe0113
--- /dev/null
+++ b/god/Monitoring/nagios/shinken/objects/shackspace/pxe.shack/pxe.shack.cfg
@@ -0,0 +1,4 @@
+define host {
+ use generic-host
+ host_name pxe.shack
+}
diff --git a/god/Monitoring/nagios/shinken/objects/shackspace/rzdoku.shack/Http.cfg b/god/Monitoring/nagios/shinken/objects/shackspace/rzdoku.shack/Http.cfg
new file mode 100644
index 00000000..57dc32ba
--- /dev/null
+++ b/god/Monitoring/nagios/shinken/objects/shackspace/rzdoku.shack/Http.cfg
@@ -0,0 +1,6 @@
+define service {
+ service_description Http
+ use generic-service
+ check_command check_http
+ host_name rzdoku.shack
+}
diff --git a/god/Monitoring/nagios/shinken/objects/shackspace/rzdoku.shack/Ssh.cfg b/god/Monitoring/nagios/shinken/objects/shackspace/rzdoku.shack/Ssh.cfg
new file mode 100644
index 00000000..544a1d1e
--- /dev/null
+++ b/god/Monitoring/nagios/shinken/objects/shackspace/rzdoku.shack/Ssh.cfg
@@ -0,0 +1,6 @@
+define service {
+ service_description Ssh
+ use generic-service
+ check_command check_ssh
+ host_name rzdoku.shack
+}
diff --git a/god/Monitoring/nagios/shinken/objects/shackspace/rzdoku.shack/rzdoku.shack.cfg b/god/Monitoring/nagios/shinken/objects/shackspace/rzdoku.shack/rzdoku.shack.cfg
new file mode 100644
index 00000000..121c1aa1
--- /dev/null
+++ b/god/Monitoring/nagios/shinken/objects/shackspace/rzdoku.shack/rzdoku.shack.cfg
@@ -0,0 +1,4 @@
+define host {
+ use generic-host
+ host_name rzdoku.shack
+}
diff --git a/god/Monitoring/nagios/shinken/objects/shackspace/shack.shack/Ssh.cfg b/god/Monitoring/nagios/shinken/objects/shackspace/shack.shack/Ssh.cfg
new file mode 100644
index 00000000..b50df34c
--- /dev/null
+++ b/god/Monitoring/nagios/shinken/objects/shackspace/shack.shack/Ssh.cfg
@@ -0,0 +1,6 @@
+define service {
+ service_description Ssh
+ use generic-service
+ check_command check_ssh
+ host_name shack.shack
+}
diff --git a/god/Monitoring/nagios/shinken/objects/shackspace/shack.shack/shack.shack.cfg b/god/Monitoring/nagios/shinken/objects/shackspace/shack.shack/shack.shack.cfg
new file mode 100644
index 00000000..e5858f27
--- /dev/null
+++ b/god/Monitoring/nagios/shinken/objects/shackspace/shack.shack/shack.shack.cfg
@@ -0,0 +1,4 @@
+define host {
+ use generic-host
+ host_name shack.shack
+}
diff --git a/god/Monitoring/nagios/shinken/objects/shackspace/shackgateway.shack/DNS.cfg b/god/Monitoring/nagios/shinken/objects/shackspace/shackgateway.shack/DNS.cfg
new file mode 100644
index 00000000..3d8f832d
--- /dev/null
+++ b/god/Monitoring/nagios/shinken/objects/shackspace/shackgateway.shack/DNS.cfg
@@ -0,0 +1,6 @@
+define service {
+ service_description DNS
+ use generic-service
+ check_command check_dig!google.de
+ host_name shackgateway.shack
+}
diff --git a/god/Monitoring/nagios/shinken/objects/shackspace/shackgateway.shack/Http.cfg b/god/Monitoring/nagios/shinken/objects/shackspace/shackgateway.shack/Http.cfg
new file mode 100644
index 00000000..eb42c69c
--- /dev/null
+++ b/god/Monitoring/nagios/shinken/objects/shackspace/shackgateway.shack/Http.cfg
@@ -0,0 +1,6 @@
+define service {
+ service_description Http
+ use generic-service
+ check_command check_http
+ host_name shackgateway.shack
+}
diff --git a/god/Monitoring/nagios/shinken/objects/shackspace/shackgateway.shack/Https-Certificate.cfg b/god/Monitoring/nagios/shinken/objects/shackspace/shackgateway.shack/Https-Certificate.cfg
new file mode 100644
index 00000000..ef9a6411
--- /dev/null
+++ b/god/Monitoring/nagios/shinken/objects/shackspace/shackgateway.shack/Https-Certificate.cfg
@@ -0,0 +1,6 @@
+define service {
+ service_description Https-Certificate
+ use generic-service
+ check_command check_https_certificate
+ host_name shackgateway.shack
+}
diff --git a/god/Monitoring/nagios/shinken/objects/shackspace/shackgateway.shack/Https.cfg b/god/Monitoring/nagios/shinken/objects/shackspace/shackgateway.shack/Https.cfg
new file mode 100644
index 00000000..991487d4
--- /dev/null
+++ b/god/Monitoring/nagios/shinken/objects/shackspace/shackgateway.shack/Https.cfg
@@ -0,0 +1,6 @@
+define service {
+ service_description Https
+ use generic-service
+ check_command check_https
+ host_name shackgateway.shack
+}
diff --git a/god/Monitoring/nagios/shinken/objects/shackspace/shackgateway.shack/Ssh.cfg b/god/Monitoring/nagios/shinken/objects/shackspace/shackgateway.shack/Ssh.cfg
new file mode 100644
index 00000000..2d12f2d7
--- /dev/null
+++ b/god/Monitoring/nagios/shinken/objects/shackspace/shackgateway.shack/Ssh.cfg
@@ -0,0 +1,6 @@
+define service {
+ service_description Ssh
+ use generic-service
+ check_command check_ssh
+ host_name shackgateway.shack
+}
diff --git a/god/Monitoring/nagios/shinken/objects/shackspace/shackgateway.shack/shackgateway.shack.cfg b/god/Monitoring/nagios/shinken/objects/shackspace/shackgateway.shack/shackgateway.shack.cfg
new file mode 100644
index 00000000..3f80764f
--- /dev/null
+++ b/god/Monitoring/nagios/shinken/objects/shackspace/shackgateway.shack/shackgateway.shack.cfg
@@ -0,0 +1,4 @@
+define host {
+ use generic-host
+ host_name shackgateway.shack
+}
diff --git a/god/Monitoring/nagios/shinken/objects/shackspace/standby.shack/Http.cfg b/god/Monitoring/nagios/shinken/objects/shackspace/standby.shack/Http.cfg
new file mode 100644
index 00000000..47eca686
--- /dev/null
+++ b/god/Monitoring/nagios/shinken/objects/shackspace/standby.shack/Http.cfg
@@ -0,0 +1,6 @@
+define service {
+ service_description Http
+ use generic-service
+ check_command check_http
+ host_name standby.shack
+}
diff --git a/god/Monitoring/nagios/shinken/objects/shackspace/standby.shack/Ssh.cfg b/god/Monitoring/nagios/shinken/objects/shackspace/standby.shack/Ssh.cfg
new file mode 100644
index 00000000..1cc9007e
--- /dev/null
+++ b/god/Monitoring/nagios/shinken/objects/shackspace/standby.shack/Ssh.cfg
@@ -0,0 +1,6 @@
+define service {
+ service_description Ssh
+ use generic-service
+ check_command check_ssh
+ host_name standby.shack
+}
diff --git a/god/Monitoring/nagios/shinken/objects/shackspace/standby.shack/standby.shack.cfg b/god/Monitoring/nagios/shinken/objects/shackspace/standby.shack/standby.shack.cfg
new file mode 100644
index 00000000..f6965c14
--- /dev/null
+++ b/god/Monitoring/nagios/shinken/objects/shackspace/standby.shack/standby.shack.cfg
@@ -0,0 +1,4 @@
+define host {
+ use generic-host
+ host_name standby.shack
+}
diff --git a/god/Monitoring/nagios/shinken/objects/shackspace/stats.shack/Http.cfg b/god/Monitoring/nagios/shinken/objects/shackspace/stats.shack/Http.cfg
new file mode 100644
index 00000000..e602e163
--- /dev/null
+++ b/god/Monitoring/nagios/shinken/objects/shackspace/stats.shack/Http.cfg
@@ -0,0 +1,6 @@
+define service {
+ service_description Http
+ use generic-service
+ check_command check_http
+ host_name stats.shack
+}
diff --git a/god/Monitoring/nagios/shinken/objects/shackspace/stats.shack/Ssh.cfg b/god/Monitoring/nagios/shinken/objects/shackspace/stats.shack/Ssh.cfg
new file mode 100644
index 00000000..db54258a
--- /dev/null
+++ b/god/Monitoring/nagios/shinken/objects/shackspace/stats.shack/Ssh.cfg
@@ -0,0 +1,6 @@
+define service {
+ service_description Ssh
+ use generic-service
+ check_command check_ssh
+ host_name stats.shack
+}
diff --git a/god/Monitoring/nagios/shinken/objects/shackspace/stats.shack/stats.shack.cfg b/god/Monitoring/nagios/shinken/objects/shackspace/stats.shack/stats.shack.cfg
new file mode 100644
index 00000000..e75b1281
--- /dev/null
+++ b/god/Monitoring/nagios/shinken/objects/shackspace/stats.shack/stats.shack.cfg
@@ -0,0 +1,4 @@
+define host {
+ use generic-host
+ host_name stats.shack
+}
diff --git a/god/Monitoring/nagios/shinken/objects/shackspace/tuerstatus.shack/Ssh.cfg b/god/Monitoring/nagios/shinken/objects/shackspace/tuerstatus.shack/Ssh.cfg
new file mode 100644
index 00000000..0b7cbf05
--- /dev/null
+++ b/god/Monitoring/nagios/shinken/objects/shackspace/tuerstatus.shack/Ssh.cfg
@@ -0,0 +1,6 @@
+define service {
+ service_description Ssh
+ use generic-service
+ check_command check_ssh
+ host_name tuerstatus.shack
+}
diff --git a/god/Monitoring/nagios/shinken/objects/shackspace/tuerstatus.shack/tuerstatus.shack.cfg b/god/Monitoring/nagios/shinken/objects/shackspace/tuerstatus.shack/tuerstatus.shack.cfg
new file mode 100644
index 00000000..b5e17567
--- /dev/null
+++ b/god/Monitoring/nagios/shinken/objects/shackspace/tuerstatus.shack/tuerstatus.shack.cfg
@@ -0,0 +1,4 @@
+define host {
+ use generic-host
+ host_name tuerstatus.shack
+}
diff --git a/god/Monitoring/nagios/shinken/objects/shackspace/upm.shack/Ssh.cfg b/god/Monitoring/nagios/shinken/objects/shackspace/upm.shack/Ssh.cfg
new file mode 100644
index 00000000..618d5dd8
--- /dev/null
+++ b/god/Monitoring/nagios/shinken/objects/shackspace/upm.shack/Ssh.cfg
@@ -0,0 +1,6 @@
+define service {
+ service_description Ssh
+ use generic-service
+ check_command check_ssh
+ host_name upm.shack
+}
diff --git a/god/Monitoring/nagios/shinken/objects/shackspace/upm.shack/upm.shack.cfg b/god/Monitoring/nagios/shinken/objects/shackspace/upm.shack/upm.shack.cfg
new file mode 100644
index 00000000..c1560569
--- /dev/null
+++ b/god/Monitoring/nagios/shinken/objects/shackspace/upm.shack/upm.shack.cfg
@@ -0,0 +1,4 @@
+define host {
+ use generic-host
+ host_name upm.shack
+}
diff --git a/god/Monitoring/nagios/shinken/objects/shackspace/vollepulle.shack/Http.cfg b/god/Monitoring/nagios/shinken/objects/shackspace/vollepulle.shack/Http.cfg
new file mode 100644
index 00000000..3324e3da
--- /dev/null
+++ b/god/Monitoring/nagios/shinken/objects/shackspace/vollepulle.shack/Http.cfg
@@ -0,0 +1,6 @@
+define service {
+ service_description Http
+ use generic-service
+ check_command check_http
+ host_name vollepulle.shack
+}
diff --git a/god/Monitoring/nagios/shinken/objects/shackspace/vollepulle.shack/Https-Certificate.cfg b/god/Monitoring/nagios/shinken/objects/shackspace/vollepulle.shack/Https-Certificate.cfg
new file mode 100644
index 00000000..bc8adfce
--- /dev/null
+++ b/god/Monitoring/nagios/shinken/objects/shackspace/vollepulle.shack/Https-Certificate.cfg
@@ -0,0 +1,6 @@
+define service {
+ service_description Https-Certificate
+ use generic-service
+ check_command check_https_certificate
+ host_name vollepulle.shack
+}
diff --git a/god/Monitoring/nagios/shinken/objects/shackspace/vollepulle.shack/Https.cfg b/god/Monitoring/nagios/shinken/objects/shackspace/vollepulle.shack/Https.cfg
new file mode 100644
index 00000000..4a4cf823
--- /dev/null
+++ b/god/Monitoring/nagios/shinken/objects/shackspace/vollepulle.shack/Https.cfg
@@ -0,0 +1,6 @@
+define service {
+ service_description Https
+ use generic-service
+ check_command check_https
+ host_name vollepulle.shack
+}
diff --git a/god/Monitoring/nagios/shinken/objects/shackspace/vollepulle.shack/Ssh.cfg b/god/Monitoring/nagios/shinken/objects/shackspace/vollepulle.shack/Ssh.cfg
new file mode 100644
index 00000000..17cd20a9
--- /dev/null
+++ b/god/Monitoring/nagios/shinken/objects/shackspace/vollepulle.shack/Ssh.cfg
@@ -0,0 +1,6 @@
+define service {
+ service_description Ssh
+ use generic-service
+ check_command check_ssh
+ host_name vollepulle.shack
+}
diff --git a/god/Monitoring/nagios/shinken/objects/shackspace/vollepulle.shack/vollepulle.shack.cfg b/god/Monitoring/nagios/shinken/objects/shackspace/vollepulle.shack/vollepulle.shack.cfg
new file mode 100644
index 00000000..5ea44b7a
--- /dev/null
+++ b/god/Monitoring/nagios/shinken/objects/shackspace/vollepulle.shack/vollepulle.shack.cfg
@@ -0,0 +1,4 @@
+define host {
+ use generic-host
+ host_name vollepulle.shack
+}
diff --git a/god/Monitoring/nagios/shinken/pollerd-windows.ini b/god/Monitoring/nagios/shinken/pollerd-windows.ini
new file mode 100644
index 00000000..78b34788
--- /dev/null
+++ b/god/Monitoring/nagios/shinken/pollerd-windows.ini
@@ -0,0 +1,28 @@
+[daemon]
+workdir=c:\shinken/var
+pidfile=%(workdir)s/pollerd.pid
+interval_poll=5
+maxfd=1024
+port=7771
+host=0.0.0.0
+user=shinken
+group=shinken
+idontcareaboutsecurity=0
+
+
+# SSL part
+use_ssl=0
+certs_dir=etc/certs
+ca_cert=etc/certs/ca.pem
+server_cert=etc/certs/server.pem
+hard_ssl_name_check=0
+
+
+# Local log management.
+# Enable it only if you need it
+use_local_log=1
+local_log=%(workdir)s/pollerd.log
+user=shinken
+group=shinken
+workdir=/var/lib/shinken
+pidfile=/var/run/shinken/pollerd.pid
diff --git a/god/Monitoring/nagios/shinken/pollerd.ini b/god/Monitoring/nagios/shinken/pollerd.ini
new file mode 100644
index 00000000..a0c66043
--- /dev/null
+++ b/god/Monitoring/nagios/shinken/pollerd.ini
@@ -0,0 +1,38 @@
+[daemon]
+
+# workdir=var
+# For installation configuration :
+# workdir should be explicitely set to an absolute directory path.
+
+# using default values for following config variables value :
+# paths variables values, if not absolute paths, are relative to workdir.
+
+# user=shinken ; if not set then by default it's the current user.
+# group=shinken ; if not set then by default it's the current group.
+# pidfile=pollerd.pid
+
+# host=0.0.0.0
+# port=7771
+
+# interval_poll=5
+# maxfd=1024
+
+# idontcareaboutsecurity=0
+
+# SSL part
+# use_ssl=0
+# certs_dir=etc/certs
+# ca_cert=etc/certs/ca.pem
+# server_cert=etc/certs/server.pem
+# hard_ssl_name_check=0
+
+# Local log management.
+# Enable it only if you need it
+use_local_log=1
+local_log=pollerd.log
+
+
+user=shinken
+group=shinken
+workdir=/var/lib/shinken
+pidfile=/var/run/shinken/pollerd.pid
diff --git a/god/Monitoring/nagios/shinken/reactionnerd-windows.ini b/god/Monitoring/nagios/shinken/reactionnerd-windows.ini
new file mode 100644
index 00000000..36e147b4
--- /dev/null
+++ b/god/Monitoring/nagios/shinken/reactionnerd-windows.ini
@@ -0,0 +1,28 @@
+[daemon]
+workdir=c:\shinken/var
+pidfile=%(workdir)s/reactionnerd.pid
+interval_poll=5
+maxfd=1024
+port=7769
+host=0.0.0.0
+user=shinken
+group=shinken
+idontcareaboutsecurity=0
+
+
+# SSL part
+use_ssl=0
+certs_dir=etc/certs
+ca_cert=etc/certs/ca.pem
+server_cert=etc/certs/server.pem
+hard_ssl_name_check=0
+
+# Local log management.
+# Enable it only if you need it
+use_local_log=1
+local_log=%(workdir)s/reactionnerd.log
+
+user=shinken
+group=shinken
+workdir=/var/lib/shinken
+pidfile=/var/run/shinken/reactionnerd.pid
diff --git a/god/Monitoring/nagios/shinken/reactionnerd.ini b/god/Monitoring/nagios/shinken/reactionnerd.ini
new file mode 100644
index 00000000..0226e8e1
--- /dev/null
+++ b/god/Monitoring/nagios/shinken/reactionnerd.ini
@@ -0,0 +1,28 @@
+[daemon]
+# relative from this cfg file
+#workdir=../var
+#pidfile=%(workdir)s/reactionnerd.pid
+interval_poll=5
+maxfd=1024
+port=7769
+#host=0.0.0.0
+#user=shinken
+#group=shinken
+idontcareaboutsecurity=0
+
+# SSL part
+use_ssl=0
+certs_dir=etc/certs
+ca_cert=etc/certs/ca.pem
+server_cert=etc/certs/server.pem
+hard_ssl_name_check=0
+
+# Local log management.
+# Enable it only if you need it
+use_local_log=1
+#local_log=%(workdir)s/reactionnerd.log
+
+user=shinken
+group=shinken
+workdir=/var/lib/shinken
+pidfile=/var/run/shinken/reactionnerd.pid
diff --git a/god/Monitoring/nagios/shinken/receiverd-windows.ini b/god/Monitoring/nagios/shinken/receiverd-windows.ini
new file mode 100644
index 00000000..6a0933d6
--- /dev/null
+++ b/god/Monitoring/nagios/shinken/receiverd-windows.ini
@@ -0,0 +1,29 @@
+[daemon]
+workdir=c:\shinken\var
+pidfile=%(workdir)s/receiverd.pid
+interval_poll=5
+maxfd=1024
+port=7773
+host=0.0.0.0
+user=shinken
+group=shinken
+idontcareaboutsecurity=0
+
+
+# SSL part
+use_ssl=0
+certs_dir=etc/certs
+ca_cert=etc/certs/ca.pem
+server_cert=etc/certs/server.pem
+hard_ssl_name_check=0
+
+# Local log management.
+# Enable it only if you need it
+use_local_log=1
+local_log=%(workdir)s/receiverd.log
+
+
+user=shinken
+group=shinken
+workdir=/var/lib/shinken
+pidfile=/var/run/shinken/receiverd.pid
diff --git a/god/Monitoring/nagios/shinken/receiverd.ini b/god/Monitoring/nagios/shinken/receiverd.ini
new file mode 100644
index 00000000..29ef9f0e
--- /dev/null
+++ b/god/Monitoring/nagios/shinken/receiverd.ini
@@ -0,0 +1,28 @@
+[daemon]
+# relative from this cfg file
+#workdir=../var
+#pidfile=%(workdir)s/receiverd.pid
+interval_poll=5
+maxfd=1024
+port=7773
+#host=0.0.0.0
+#user=shinken
+#group=shinken
+idontcareaboutsecurity=0
+
+# SSL part
+use_ssl=0
+certs_dir=etc/certs
+ca_cert=etc/certs/ca.pem
+server_cert=etc/certs/server.pem
+hard_ssl_name_check=0
+
+# Local log management.
+# Enable it only if you need it
+use_local_log=1
+#local_log=%(workdir)s/receiverd.log
+
+user=shinken
+group=shinken
+workdir=/var/lib/shinken
+pidfile=/var/run/shinken/receiverd.pid
diff --git a/god/Monitoring/nagios/shinken/resource.cfg b/god/Monitoring/nagios/shinken/resource.cfg
new file mode 100644
index 00000000..675674c8
--- /dev/null
+++ b/god/Monitoring/nagios/shinken/resource.cfg
@@ -0,0 +1,34 @@
+$USER1$=/usr/lib/nagios/plugins
+$USER2$=public
+
+# Where your plugins are located
+$PLUGINSDIR$=/usr/lib/nagios/plugins
+
+##Now Activie directory and Ldap
+$DOMAINUSER$=shinken_user
+$DOMAINPASSWORD$=superpassword
+$LDAPBASE$=dc=eu,dc=society,dc=com
+
+### MSSQL credentials
+$MSSQLUSER$=someuser
+$MSSQLPASSWORD$=somepassowrd
+
+### Mysql credentials
+$MYSQLUSER$=root
+$MYSQLPASSWORD$=root
+
+#### vSphere (ESX) part
+$VCENTER$=vcenter.mydomain.com
+$VCENTERLOGIN$=someuser
+$VCENTERPASSWORD$=somepassowrd
+
+
+#### Discovery Part
+# default snmp community
+$SNMPCOMMUNITYREAD$=PUBLIC
+# what to discover by default
+
+
+# begin krebs magic <krebs-discovery>
+$NMAPTARGETS$='sir_krebs_a_lot steve alphalabs no_omo xso Lassulus exile filebitch horreum_magnus exitium_mobilis Styx EUcancER euer urkrebs oxberg pfleidi fuerkrebs zerg kremium kremu monitoring supernode temperator ytart iiso kaah c2fthome miefda901 eigenserv destroy also c2ft Shepherd miefdahome pornocauster pa_sharepoint UTART ach chinaman bergwerk krebsbitch upm also supernode alphalabs horreum_magnus exitium_mobilis Lassulus miefda901 supernode filebitch krebsbitch pornocauster temperator urkrebs fuerkrebs Shepherd pfleidi alphalabs rtjure exile rtjure xso exitium_mobilis sir_krebs_a_lot kremium ach eigenserv steve filebitch no_omo oxberg monitoring urkrebs cloudkrebs pornocauster upm krebsnode krebsbob zerg chinaman fuerkrebs kaah c2ft UTART armageddon421_de destroy bergwerk Lassulus iiso krebsbitch horreum_magnus miefdahome Styx c2fthome zerg sir_krebs_a_lot steve chinaman euer pa_sharepoint ytart monitoring also miefda901 kremium kremu destroy temperator EUcancER euer also bergwerk iiso oxberg ach eigenserv c2ft xso shackspace.de oxberg.krebsco.de euer.krebsco.de krebsco.de 10.42.0.0/24'
+# end krebs magic <krebs-discovery>
diff --git a/god/Monitoring/nagios/shinken/schedulerd-windows.ini b/god/Monitoring/nagios/shinken/schedulerd-windows.ini
new file mode 100644
index 00000000..ff4283c7
--- /dev/null
+++ b/god/Monitoring/nagios/shinken/schedulerd-windows.ini
@@ -0,0 +1,27 @@
+[daemon]
+workdir=c:\shinken/var
+pidfile=%(workdir)s/schedulerd.pid
+port=7768
+host=0.0.0.0
+user=shinken
+group=shinken
+idontcareaboutsecurity=0
+
+# SSL part
+use_ssl=0
+certs_dir=etc/certs
+ca_cert=etc/certs/ca.pem
+server_cert=etc/certs/server.pem
+hard_ssl_name_check=0
+
+
+# Local log management.
+# Enable it only if you need it
+use_local_log=1
+local_log=%(workdir)s/schedulerd.log
+
+
+user=shinken
+group=shinken
+workdir=/var/lib/shinken
+pidfile=/var/run/shinken/schedulerd.pid
diff --git a/god/Monitoring/nagios/shinken/schedulerd.ini b/god/Monitoring/nagios/shinken/schedulerd.ini
new file mode 100644
index 00000000..a0cb8ab2
--- /dev/null
+++ b/god/Monitoring/nagios/shinken/schedulerd.ini
@@ -0,0 +1,27 @@
+[daemon]
+# Relative from this cfg file
+#workdir=../var
+#pidfile=%(workdir)s/schedulerd.pid
+port=7768
+#host=0.0.0.0
+#user=shinken
+#group=shinken
+idontcareaboutsecurity=0
+
+# SSL part
+use_ssl=0
+certs_dir=etc/certs
+ca_cert=etc/certs/ca.pem
+server_cert=etc/certs/server.pem
+hard_ssl_name_check=0
+
+
+# Local log management.
+# Enable it only if you need it
+use_local_log=1
+#local_log=%(workdir)s/schedulerd.log
+
+user=shinken
+group=shinken
+workdir=/var/lib/shinken
+pidfile=/var/run/shinken/schedulerd.pid
diff --git a/god/Monitoring/nagios/shinken/servicegroups.cfg b/god/Monitoring/nagios/shinken/servicegroups.cfg
new file mode 100644
index 00000000..256ed0aa
--- /dev/null
+++ b/god/Monitoring/nagios/shinken/servicegroups.cfg
@@ -0,0 +1,14 @@
+
+###Service groups are less important than hosts group, but can be useful
+#define servicegroup{
+# servicegroup_name LocalServices
+# alias Local service
+# members localhost,Root Partition
+# }
+
+#define servicegroup{
+# servicegroup_name WebService
+# alias All http service
+# members srv-web-1,Http
+# }
+
diff --git a/god/Monitoring/nagios/shinken/services/linux_local.cfg b/god/Monitoring/nagios/shinken/services/linux_local.cfg
new file mode 100644
index 00000000..7d0f52ef
--- /dev/null
+++ b/god/Monitoring/nagios/shinken/services/linux_local.cfg
@@ -0,0 +1,44 @@
+define service{
+ service_description LocalDisks
+ host_name localhost
+ use local-service ; Name of service template to use
+ icon_set disk
+
+ check_command check_local_disks
+ }
+
+
+define service{
+ service_description LocalLoad
+ use local-service ; Name of service template to use
+ host_name localhost
+
+ check_command check_local_load
+ }
+
+
+define service{
+ service_description LocalMem
+ use local-service ; Name of service template to use
+ host_name localhost
+
+ check_command check_local_mem
+ }
+
+define service{
+ service_description LocalSwap
+ use local-service ; Name of service template to use
+ host_name localhost
+
+ check_command check_local_swap
+ }
+
+define service{
+ service_description LocalCpu
+ use local-service ; Name of service template to use
+ host_name localhost
+
+ check_command check_local_cpu
+ }
+
+
diff --git a/god/Monitoring/nagios/shinken/shinken-specific-high-availability.cfg b/god/Monitoring/nagios/shinken/shinken-specific-high-availability.cfg
new file mode 100644
index 00000000..f8c6001d
--- /dev/null
+++ b/god/Monitoring/nagios/shinken/shinken-specific-high-availability.cfg
@@ -0,0 +1,275 @@
+#This config file defines Shinken specific objects like
+#satellites or Realms
+#
+#This file is for defining a pure high availability environnement
+#That means that if a satellite die, it will be replaced
+#There is only one Realm with every components into it
+#All you need to to is to replace "node1" and "node2" by the DNS
+#names of your Shinken servers
+
+
+#The scheduler is a "Host manager". It gets the hosts and theirs
+#services and it schedules the checks for the pollers.
+define scheduler{
+ scheduler_name scheduler-master
+ address node1
+ port 7768
+ spare 0 ;is not a spare
+ realm All
+ weight 1 ;optionnal : 1
+ }
+
+
+#The second scheduler, the slave one
+define scheduler{
+ scheduler_name scheduler-slave
+ address node2
+ port 7768
+ spare 1 ;is a spare
+ realm All
+ weight 1 ;optionnal : 1
+ }
+
+
+#Reactionner launches notifications
+define reactionner{
+ reactionner_name reactionner-master
+ address node1
+ port 7769
+ spare 0
+ realm All
+ manage_sub_realms 0 ;optionnal : 1
+ min_workers 1 ;optionnal : 1
+ max_workers 15 ;optionnal : 30
+ polling_interval 1 ;optionnal : 1
+ }
+
+
+#Reactionner launches notifications
+#The slave one
+define reactionner{
+ reactionner_name reactionner-slave
+ address node2
+ port 7769
+ spare 1
+ realm All
+ manage_sub_realms 0 ;optionnal : 1
+ min_workers 1 ;optionnal : 1
+ max_workers 15 ;optionnal : 30
+ polling_interval 1 ;optionnal : 1
+ }
+
+
+#Pollers are here to launch checks
+define poller{
+ poller_name poller-master
+ address node1
+ port 7771
+ realm All
+ spare 0
+ manage_sub_realms 0 ;optionnal : 0
+ min_workers 4 ;optionnal : 1
+ max_workers 4 ;optionnal : 30
+ processes_by_worker 256 ;optionnal : 256
+ polling_interval 1 ;optionnal : 1
+}
+
+
+#Pollers are here to launch checks
+define poller{
+ poller_name poller-slave
+ address node2
+ port 7771
+ realm All
+ spare 1
+ manage_sub_realms 0 ;optionnal : 0
+ min_workers 4 ;optionnal : 1
+ max_workers 4 ;optionnal : 30
+ processes_by_worker 256 ;optionnal : 256
+ polling_interval 1 ;optionnal : 1
+}
+
+
+#The arbiter definition IS important : without 2 defined arbiter,
+#there is no high availability
+define arbiter{
+ arbiter_name Arbiter-master
+ host_name node1 ;result of the get_hostname.py command (or hostname under Unix)
+ address node1
+ port 7770
+ spare 0
+ #modules No module for now
+ }
+
+#the slave, waiting patiently for its master to die
+define arbiter{
+ arbiter_name Arbiter-slave
+ host_name node2 ;result of the get_hostname.py command (or hostname under Unix)
+ address node2
+ port 7770
+ spare 1
+ #modules No module for now
+ }
+
+
+
+#The broker manages data export (in flat file or in database)
+#Here just log files and status.dat file
+define broker{
+ broker_name broker-master
+ address node1
+ port 7772
+ spare 0
+ realm All
+ manage_sub_realms 1
+ manage_arbiters 1
+ modules Status-Dat, Simple-log
+ }
+
+
+
+#The broker manages data export (in flat file or in database)
+#Here just log files and status.dat file
+define broker{
+ broker_name broker-slave
+ address node2
+ port 7772
+ spare 1
+ realm All
+ manage_sub_realms 1
+ manage_arbiters 1
+ modules Status-Dat, Simple-log
+ }
+
+
+##Now the modules for broker
+
+#Here the NDO/MySQL module
+#So you can use with NagVis or Centreon
+define module{
+ module_name ToNdodb_Mysql
+ module_type ndodb_mysql
+ database ndo ; database name
+ user root ; user of the database
+ password root ; must be changed
+ host localhost ; host to connect
+ character_set utf8 ;optionnal, UTF8 is the default
+}
+
+#Here a NDO/Oracle module. For Icinga web connection
+#Or for database admin that do not like MySQL
+define module{
+ module_name ToNdodb_Oracle
+ module_type ndodb_oracle
+ database XE ;database name (listener in fact)
+ user system
+ password password ;Yes I know I have to change my default password...
+ oracle_home /usr/lib/oracle/xe/app/oracle/product/10.2.0/server ;optional
+}
+
+
+#Here for Merlin/MySQL. for Ninja connection
+define module{
+ module_name ToMerlindb_Mysql
+ module_type merlindb
+ backend mysql ;backend to use, here mysql databse
+ database merlin ;database name
+ user root
+ password root
+ host localhost
+ character_set utf8 ;optionnal, UTF8 is the default
+}
+
+
+#Here the Merlin/Sqlite. No one uses it for now :)
+define module{
+ module_name ToMerlindb_Sqlite
+ module_type merlindb
+ backend sqlite ;like the mysql, but sqlite :)
+ database_path /tmp/mabase.sqlite ;path of the sqlite file
+}
+
+
+#Here the couchdb export. Maybe use one day...
+define module{
+ module_name ToCouchdb
+ module_type couchdb
+ user root
+ password root
+ host localhost
+}
+
+
+#Export services perfdata to file
+define module{
+ module_name Service-Perfdata
+ module_type service_perfdata
+ path service-perfdata
+}
+
+
+#For hosts this time
+define module{
+ module_name Host-Perfdata
+ module_type host_perfdata
+ path host-perfdata
+}
+
+
+#The log managment
+define module{
+ module_name Simple-log
+ module_type simple_log
+ path /var/log/shinken/nagios.log
+}
+
+
+#Status.dat and objects.cache export. For the old Nagios
+#interface
+define module{
+ module_name Status-Dat
+ module_type status_dat
+ status_file status.dat
+ object_cache_file objects.cache
+ status_update_interval 15
+}
+
+
+#A global Realm
+define realm{
+ realm_name All
+ default 1
+}
+
+
+
+
+##Now addon about standard configuration :
+#resultmodulation : change "on te fly" a check result, without negate or something like it
+#escalation : like service_escalation, but a generic that host/service can call
+
+#A result modulation is use to module a check result, like CRITICAL->WARNING here
+define resultmodulation{
+ resultmodulation_name critical_is_warning ;required
+ exit_codes_match 2 ;optionnal, list of code to change
+ output_match // ;optionnal, regexp for activation of exit_code if output match
+ exit_code_modulation 1 ;code that will be put if the code match
+ output_modulation s/// ;optionnal regexp to change output
+ longoutput_modulation s/// ;optionnal regexp to change long_output
+ modulation_period 24×7 ;period when to apply the modulation
+}
+
+
+#Escalation is a generic version of service_escalation and host_escalation
+#It can be called by services/hosts so it will be far more easier to be
+#configured
+define escalation{
+ escalation_name ToLevel2 ;required
+ first_notification 2
+ last_notification 5
+ notification_interval 1
+ escalation_period 24x7 ;optionnal, if none, always true
+ escalation_options d,u,r,w,c ,optionnal, if none, all states (d,u,r,w,c)
+ contacts dbrosseau
+# contact_groups admins
+}
diff --git a/god/Monitoring/nagios/shinken/shinken-specific-load-balanced-only.cfg b/god/Monitoring/nagios/shinken/shinken-specific-load-balanced-only.cfg
new file mode 100644
index 00000000..e7f756d5
--- /dev/null
+++ b/god/Monitoring/nagios/shinken/shinken-specific-load-balanced-only.cfg
@@ -0,0 +1,219 @@
+#This config file defined Shinken specific objects like
+#satellites or Realms
+#
+#This file is for defined a pure load balanced environnement
+#That mean that if a satellite die, it will not be replaced
+#There is only one Realm with every components into it
+#All you need to to is to replace "node1" and "node2" by the DNS
+#names of your Shinken servers
+
+
+#The scheduler is a "Host manager". It gets the hosts and theirs
+#services and it schedules the checks for the pollers.
+define scheduler{
+ scheduler_name scheduler-1
+ address node1
+ port 7768
+ spare 0 ;is not a spare
+ realm All
+ weight 1 ;optionnal : 1
+ }
+
+
+#The second scheduler
+define scheduler{
+ scheduler_name scheduler-2
+ address node2
+ port 7768
+ spare 0
+ realm All
+ weight 1 ;optionnal : 1
+ }
+
+
+#There is only one reactionner, because it does not need
+#load balancing load
+define reactionner{
+ reactionner_name reactionner
+ address node1
+ port 7769
+ spare 0
+ realm All
+ manage_sub_realms 0 ;optionnal : 1
+ min_workers 1 ;optionnal : 1
+ max_workers 15 ;optionnal : 30
+ polling_interval 1 ;optionnal : 1
+ }
+
+#Pollers are here to launch checks
+define poller{
+ poller_name poller-All
+ address node1
+ port 7771
+ realm All
+ manage_sub_realms 0 ;optionnal : 0
+ min_workers 4 ;optionnal : 1
+ max_workers 4 ;optionnal : 30
+ processes_by_worker 256 ;optionnal : 256
+ polling_interval 1 ;optionnal : 1
+}
+
+
+#Pollers are here to launch checks
+define poller{
+ poller_name poller-2
+ address node2
+ port 7771
+ realm All
+ manage_sub_realms 0 ;optionnal : 0
+ min_workers 4 ;optionnal : 1
+ max_workers 4 ;optionnal : 30
+ processes_by_worker 256 ;optionnal : 256
+ polling_interval 1 ;optionnal : 1
+}
+
+
+#The arbiter definition is optionnal
+#Like reactionner and broker, it does not need load balanced
+define arbiter{
+ arbiter_name Arbiter
+ host_name node1 ;result of the get_hostname.py command (or hostname under Unix)
+ address node1
+ port 7770
+ spare 0
+ #modules No module for now
+ }
+
+
+#The broker manage data export (in flat file or in database)
+#Here just log files and status.dat file
+define broker{
+ broker_name broker
+ address node1
+ port 7772
+ spare 0
+ realm All
+ manage_sub_realms 1
+ manage_arbiters 1
+ modules Status-Dat, Simple-log
+ }
+
+
+##Now the modules for broker
+
+#Here the NDO/MySQL module
+#So you can use with NagVis or Centreon
+define module{
+ module_name ToNdodb_Mysql
+ module_type ndodb_mysql
+ database ndo ; database name
+ user root ; user of the database
+ password root ; must be changed
+ host localhost ; host to connect
+ character_set utf8 ;optionnal, UTF8 is the default
+}
+
+#Here a NDO/Oracle module. For Icinga web connection
+#Or for database admin that do not like MySQL
+define module{
+ module_name ToNdodb_Oracle
+ module_type ndodb_oracle
+ database XE ;database name (listener in fact)
+ user system
+ password password ;Yes I know I have to change my default password...
+ oracle_home /usr/lib/oracle/xe/app/oracle/product/10.2.0/server ;optional
+}
+
+
+#Here for Merlin/MySQL. for Ninja connection
+define module{
+ module_name ToMerlindb_Mysql
+ module_type merlindb
+ backend mysql ;backend to use, here mysql databse
+ database merlin ;database name
+ user root
+ password root
+ host localhost
+ character_set utf8 ;optionnal, UTF8 is the default
+}
+
+
+#Here the Merlin/Sqlite. No one uses it for now :)
+define module{
+ module_name ToMerlindb_Sqlite
+ module_type merlindb
+ backend sqlite ;like the mysql, but sqlite :)
+ database_path /tmp/mabase.sqlite ;path of the sqlite file
+}
+
+
+#Here the couchdb export. Maybe use one day...
+define module{
+ module_name ToCouchdb
+ module_type couchdb
+ user root
+ password root
+ host localhost
+}
+
+
+#Export services perfdata to file
+define module{
+ module_name Service-Perfdata
+ module_type service_perfdata
+ path service-perfdata
+}
+
+
+#For hosts this time
+define module{
+ module_name Host-Perfdata
+ module_type host_perfdata
+ path host-perfdata
+}
+
+
+#The log managment
+define module{
+ module_name Simple-log
+ module_type simple_log
+ path /var/log/shinken/nagios.log
+}
+
+
+#Status.dat and objects.cache export. For the old Nagios
+#interface
+define module{
+ module_name Status-Dat
+ module_type status_dat
+ status_file status.dat
+ object_cache_file objects.cache
+ status_update_interval 15
+}
+
+
+#A global Realm
+define realm{
+ realm_name All
+ default 1
+}
+
+
+
+
+##Now addon about standard configuration :
+#resultmodulation : change "on te fly" a check result, without negate or something like it
+#escalation : like service_escalation, but a generic that host/service can call
+
+#A result modulation is use to module a check result, like CRITICAL->WARNING here
+define resultmodulation{
+ resultmodulation_name critical_is_warning ;required
+ exit_codes_match 2 ;optionnal, list of code to change
+ output_match // ;optionnal, regexp for activation of exit_code if output match
+ exit_code_modulation 1 ;code that will be put if the code match
+ output_modulation s/// ;optionnal regexp to change output
+ longoutput_modulation s/// ;optionnal regexp to change long_output
+ modulation_period 24×7 ;period when to apply the modulation
+}
+
+
diff --git a/god/Monitoring/nagios/shinken/shinken-specific.cfg b/god/Monitoring/nagios/shinken/shinken-specific.cfg
new file mode 100644
index 00000000..b21c619a
--- /dev/null
+++ b/god/Monitoring/nagios/shinken/shinken-specific.cfg
@@ -0,0 +1,579 @@
+#This config file defines Shinken specific objects like
+#satellites or Realms
+#
+#This file can be used for defining a simple environement :
+#*one scheduler that schedules the checks (but doesn't launch them)
+#*one poller (that launches the checks)
+#*one reactionner (that sends the notifiations)
+#*one broker (that gives jobs to modules. Modules export data like logs, status.dat, mysql export, etc etc)
+#*some of the brokers modules (that do the jobs)
+#*one arbiter (that reads the configuration and dispatches it to all others)
+
+#So there is no high availability here, just a simple "Nagios equivalent" (but with
+#more perf and less code! )
+
+#The scheduler is a "Host manager". It gets the hosts and theirs
+#services and it schedules the checks for the pollers.
+define scheduler{
+ scheduler_name scheduler-1 ; just the name
+ address localhost ; ip or dns address of the daemon
+ port 7768 ; tcp port of the daemon
+
+ #optional
+ spare 0 ; (0 = not a spare, 1 = is spare)
+ weight 1 ; (some schedulers can manage more hosts than others)
+ timeout 3 ; 'ping' timeout
+ data_timeout 120 ; 'data send' timeout
+ max_check_attempts 3 ; if at least max_check_attempts ping failed, the node is DEAD
+ check_interval 60 ; ping it every minute
+# modules PickleRetention
+# Interesting modules :
+# PickleRetention : Save data before exiting in flat file
+# MemcacheRetention : Same but in a memcache server
+# RedisRetention : same, but in a Redis server :)
+# NagiosRetention : only READ retention info from a nagios retention file
+
+ #advanced feature
+ realm All ; optional (realm are multisites features)
+ }
+
+
+#Pollers launch checks
+define poller{
+ poller_name poller-1
+ address localhost
+ port 7771
+
+ #optional
+ manage_sub_realms 0 ; optional and advanced: does it take jobs from schedulers of sub realms?
+ min_workers 4 ; optional : starts with N processes workers. 0 means : "number of cpus"
+ max_workers 4 ; optional : no more than N processes workers. 0 means : "number of cpus"
+ processes_by_worker 256 ; optional : each workers manage 256 checks
+ polling_interval 1 ; optional : take jobs from schedulers each 1 second
+ timeout 3 ; 'ping' timeout
+ data_timeout 120 ; 'data send' timeout
+ check_interval 60 ; ping it every minute
+ max_check_attempts 3 ; if at least max_check_attempts ping failed, the node is DEAD
+
+
+ # advanced features
+ #modules NrpeBooster
+ #poller_tags None
+ realm All
+}
+
+
+
+# Poller can have a nrpe module : commands tagged with
+# nrpe_poller as module_type will be managed by this module.
+# it will bypass the launch of check_nrpe, and will do the
+# connection itself.
+define module{
+ module_name NrpeBooster
+ module_type nrpe_poller
+}
+
+
+#Reactionner launch notifications
+define reactionner{
+ reactionner_name reactionner-1
+ address localhost
+ port 7769
+ spare 0
+
+ #optionnal
+ manage_sub_realms 0 ;optionnal : like for poller
+ min_workers 1 ;optionnal : like for poller
+ max_workers 15 ;optionnal : like for poller
+ polling_interval 1 ;optionnal : like for poller
+
+ timeout 3 ; 'ping' timeout
+ data_timeout 120 ; 'data send' timeout
+ check_interval 60 ; ping it every minute
+ max_check_attempts 3 ; if at least max_check_attempts ping failed, the node is DEAD
+
+ #optionnal
+ realm All
+ }
+
+#The broker manages data export (in flat file or in database)
+#with it's modules
+#Here just log files and status.dat file modules
+define broker{
+ broker_name broker-1
+ address localhost
+ port 7772
+ spare 0
+
+ # Which modules to load? LiveSatus and logs by default.
+ modules Livestatus, Simple-log, WebUI
+
+
+# Other interesting modules to add :
+# PickleRetentionBroker : save data when quitting
+# ToNdodb_Mysql : NDO database support
+# NPCD : Use the PNP addon
+# WebUI : Shinken Web interface
+
+ # Optionnal
+ manage_sub_realms 1 ; optionnal, like for poller
+ manage_arbiters 1 ; optionnal : take data from Arbiter. There should be
+ ;only one broker for the arbiter
+
+ check_interval 60 ; ping it every minute
+ timeout 3 ; 'ping' timeout
+ data_timeout 120 ; 'data send' timeout
+ max_check_attempts 3 ; if at least max_check_attempts ping failed, the node is DEAD
+
+ # Advanced
+ realm All
+ }
+
+
+##Now the modules for the broker. The first 2 that are used, and all the others :)
+
+#The log managment for ALL daemons (all in one log, cool isn't it? ).
+define module{
+ module_name Simple-log
+ module_type simple_log
+ path /var/log/shinken/nagios.log
+ archive_path archives/
+}
+
+
+#Status.dat and objects.cache export. For the old Nagios
+#interface
+define module{
+ module_name Status-Dat
+ module_type status_dat
+ status_file status.dat
+ object_cache_file objects.cache
+ status_update_interval 15 ; update status.dat every 15s
+}
+
+#The log managment for ALL daemons (all in one log, cool isn't it? ).
+define module{
+ module_name WebUI
+ module_type webui
+
+ host 0.0.0.0 ; mean all interfaces
+ port 7767
+
+ # CHANGE THIS VALUE or someone can forge cookies !!!!!!!
+ auth_secret CHANGE_ME
+
+ # Uncomment to present a text in the login form
+ # login_text Welcome on Shinken WebUI.
+
+ # Advanced options. Do not touch it if you don't
+ # know what you are doing
+
+ #http_backend auto
+ # ; can be also : wsgiref, cherrypy, paste, tornado, twisted
+ # ; or gevent
+
+ modules Apache_passwd,ActiveDir_UI,Cfg_password
+ # Modules for the WebUI.
+
+}
+
+#The log managment for ALL daemons (all in one log, cool isn't it? ).
+define module{
+ module_name ActiveDir_UI
+ module_type ad_webui
+
+# UNCOMMENT this line to really enable this module and allow it to
+# connect!
+# ldap_uri ldaps://myserver
+ username user
+ password password
+ basedn DC=google,DC=com
+
+}
+
+
+#The log managment for ALL daemons (all in one log, cool isn't it? ).
+define module{
+ module_name Apache_passwd
+ module_type passwd_webui
+
+ # WARNING : put the full PATH for this value!
+ passwd /etc/shinken/htpasswd.users
+
+}
+
+
+#The log managment for ALL daemons (all in one log, cool isn't it? ).
+define module{
+ module_name Cfg_password
+ module_type cfg_password_webui
+
+}
+
+
+##All other modules that can be called if you have installed
+#the databases, or if you want to test something else :)
+
+#Here the NDO/MySQL module
+#So you can use with NagVis or Centreon
+define module{
+ module_name ToNdodb_Mysql
+ module_type ndodb_mysql
+ database ndo ; database name
+ user root ; user of the database
+ password root ; must be changed
+ host localhost ; host to connect to
+ character_set utf8 ;optionnal, UTF8 is the default
+
+ # If you want to mix Shinken AND Nagios/icinga in the same db
+ # you need to offset shinken instance id so they will not
+ # override/delete other ones. Here for 5 nagios box.
+ # nagios_mix_offset 5
+}
+
+
+#Here a NDO/Oracle module. For Icinga web connection
+#Or for DBA that do not like MySQL
+define module{
+ module_name ToNdodb_Oracle
+ module_type ndodb_oracle
+ database XE ;database name (listener in fact)
+ user system ;user to connect
+ password password ;Yes I know I have to change my default password...
+ oracle_home /usr/lib/oracle/xe/app/oracle/product/10.2.0/server ;optional, but can be useful
+}
+
+
+#Here for Merlin/MySQL. For the cool Ninja connection
+define module{
+ module_name ToMerlindb_Mysql
+ module_type merlindb
+ backend mysql ;backend to use, here mysql databse
+ database merlin ;database name
+ user root ; ? .. yes, the user of the database...
+ password root ; wtf? you ask?
+ host localhost ; host of the database
+ character_set utf8 ;optionnal, UTF8 is the default
+}
+
+
+#Here the Merlin/Sqlite. No one uses it for now :)
+#You look at something : it's also the merlindb module, like the previous,
+#it's the same code, it's just the backend parameter that change (and path).
+define module{
+ module_name ToMerlindb_Sqlite
+ module_type merlindb
+ backend sqlite ;like the mysql, but sqlite :)
+ database_path /tmp/merlindb.sqlite ;path of the sqlite file
+}
+
+
+#Here the couchdb export. Maybe use one day...
+#I should do a mangodb too one day...
+#and casandra...
+#and voldemort...
+#and all other NoSQL database in fact :)
+define module{
+ module_name ToCouchdb
+ module_type couchdb
+ user root
+ password root
+ host localhost
+}
+
+
+#Export services perfdata to flat file. For centreon or
+#perfparse
+define module{
+ module_name Service-Perfdata
+ module_type service_perfdata
+ path service-perfdata
+# mode a ; optionnal. a = append, w = overwrite, p =pipe
+# template $LASTSERVICECHECK$\t$HOSTNAME$\t$SERVICEDESC$\t$SERVICEOUTPUT$\t$SERVICEPERFDATA$\t$SERVICESTATE$\n
+}
+
+
+#For hosts this time
+#like the previous, but for hosts...
+define module{
+ module_name Host-Perfdata
+ module_type host_perfdata
+ path host-perfdata
+# mode a ; optionnal. a = append, w = overwrite, p =pipe
+# template $LASTHOSTCHECK$\t$HOSTNAME$\t$HOSTOUTPUT$\t$HOSTSTATE$\t$HOSTPERFDATA$\n
+
+}
+
+
+# You know livestatus? Yes, there a Livestatus module for shinken too :)
+define module{
+ module_name Livestatus
+ module_type livestatus
+ host * ; * = listen on all configured ip addresses
+ port 50000 ; port to listen
+ database_file livestatus.db
+
+ # Only set debug if you got problem with this module
+ # debug /tmp/ls.debug
+ # Set to 1 if you want to dump queries/responses too
+ # warning : it's very verbose
+ # debug_queries 0
+}
+
+#Send all logs to syslog
+define module{
+ module_name Syslog
+ module_type syslog
+}
+
+
+#Use with the PNP interface
+define module{
+ module_name NPCD
+ module_type npcdmod
+ config_file /usr/local/pnp4nagios/etc/npcd.cfg
+}
+
+# send into GLPI DB
+# =============== Work with Plugin Monitoring of GLPI ===============
+define module{
+ module_name glpidb
+ module_type glpidb
+ database glpi ; database name
+ user root ; user of the database
+ password root ; must be changed
+ host localhost ; host to connect to
+}
+
+
+
+############################# For the schedulers
+#Now the good flat file for retention module
+define module{
+ module_name PickleRetention
+ module_type pickle_retention_file_generic
+ path /tmp/retention.dat
+}
+
+
+#Now the good flat file for retention module
+define module{
+ module_name PickleRetentionBroker
+ module_type pickle_retention_file_generic
+ path /tmp/retention_broker.dat
+}
+
+#Now the good flat file for retention module
+define module{
+ module_name PickleRetentionArbiter
+ module_type pickle_retention_file_generic
+ path /tmp/retention_arbiter.dat
+}
+
+
+############################# For the schedulers
+#Now the good flat file for retention module
+define module{
+ module_name NagiosRetention
+ module_type nagios_retention_file
+ path /tmp/retention-nagios.dat
+}
+
+
+#Now the memcache one
+#Now the good flat file for retention module
+define module{
+ module_name MemcacheRetention
+ module_type memcache_retention
+ server 127.0.0.1
+ port 11211
+}
+
+
+#And the redis one
+#Now the good flat file for retention module
+define module{
+ module_name RedisRetention
+ module_type redis_retention
+ server 127.0.0.1
+}
+
+
+# The old namaed pipe way from Nagios
+define module{
+ module_name CommandFile
+ module_type named_pipe
+ command_file rw/nagios.cmd
+}
+
+
+#You know GLPI? You can load your hosts from this app (
+#with the webservices plugins for GLPI, in xmlrpc mode)
+#All hosts read from this will be added to the others of the
+#standard flat file
+#Warning : just load host_name, experimental.
+define module{
+ module_name GLPIImport
+ module_type glpi_import
+ uri http://localhost/glpi/plugins/webservices/xmlrpc.php
+ login_name glpi
+ login_password glpi
+# use_property otherserial ;optionnal. Will take use value from the otherserial
+# field in GLPI (Inventory number: in the web interface)
+}
+
+#You know GLPI? You can load all configuration from this app(
+#with the webservices plugins for GLPI, in xmlrpc mode
+#and with plugin monitoring for GLPI)
+# =============== Work with Plugin Monitoring of GLPI ===============
+#All configuration read from this will be added to the others of the
+#standard flat file
+define module{
+ module_name GLPI
+ module_type glpi
+ uri http://localhost/glpi/plugins/webservices/xmlrpc.php
+ login_name glpi
+ login_password glpi
+}
+
+
+#You know NSCA? You can send check results to shinken
+#using send_nsca command
+define module{
+ module_name NSCA
+ module_type nsca_server
+ host *
+ port 5667
+ encryption_method 0
+ password helloworld
+}
+
+#This module implement TSCA, a thrift interface to submit checks result
+define module{
+ module_name TSCA
+ module_type tsca_server
+ host *
+ port 9090
+}
+
+# You know VMWare? It's cool to VMotion VM, but after it's hard to
+# follow host dependencies when it move. With this module, you can
+# just lookup at the vcenter from times to times and update dependencies
+define module{
+ module_name VMWare_auto_linking
+ module_type hot_dependencies
+ mapping_file /tmp/vmware_mapping_file.json
+ mapping_command /usr/local/shinken/libexec/link_vmware_host_vm.py -x '/usr/local/shinken/libexec/check_esx3.pl' -V 'vcenter.mydomain.com' -u 'admin' -p 'secret' -r 'lower|nofqdn' -o /tmp/vmware_mapping_file.json
+ mapping_command_interval 60 ; optionnal
+ mapping_command_timeout 300 ; optionnal
+
+ # Only useful if you want debug output. Can
+ # be verbose for large installations
+ # debug 1
+}
+
+# Arbiter module to change on the fly a poller tag of a
+# command by another.
+# Useful when you use a fixed configuration tool that do not allow you
+# to configure poller_tag.
+define module{
+ module_name HackCommandsPollerTag
+ module_type hack_commands_poller_tag
+ cmd_line_match (.*)check_esx3(.*)
+ poller_tag esx3
+}
+
+
+# Arbiter module to change on the fly a poller tag of hosts
+# and services by searchg a custom macro
+# Useful when you use a fixed configuration tool that do not allow you
+# to configure poller_tag.
+define module{
+ module_name HackCommandsPollerTag
+ module_type hack_commands_poller_tag
+ host_macro_name _poller_tag
+ service_macro_name _poller_tag
+}
+
+
+#Hosts and Services configuration can be pulled from a MySQL database
+#All hosts and services read from the database will be added to the others of the
+#standard flat file
+#You can easily use an existing database, you just have to define the queries.
+#It can be a useful module to use for HA too :)
+#Warning : only for hosts and services
+define module{
+ module_name MySQLImport
+ module_type mysql_import
+ host localhost
+ login root
+ password azerty
+ database supervision
+ reqhosts SELECT host_name, alias, realm, address ,template AS 'use' FROM hosts
+ reqservices SELECT host_name, service_description, normal_check_interval, check_command ,template AS 'use' FROM services
+ reqcontacts SELECT contact_name, email, template AS 'use' FROM contacts
+}
+
+#The arbiter definition is optionnal
+#WARNING : You must change host_name with the
+#hostname of your machine !!!!
+define arbiter{
+ arbiter_name Arbiter-Master
+# host_name node1 ;result of the hostname command under Unix
+ address localhost ;IP or DNS adress
+ port 7770
+ spare 0
+# uncomment the line below if you want to use the GLPI module and the NSCA one
+# modules CommandFile,GLPIImport, NSCA, VMWare_auto_linking, TSCA
+
+# Uncomment theses lines in a HA architecture so the master
+# and slaves know how much time to wait the other
+# check_interval 60 ; ping it every minute
+# timeout 3 ; 'ping' timeout
+# data_timeout 120 ; 'data send' timeout
+# max_check_attempts 3 ; if at least max_check_attempts ping failed, the node is DEAD
+
+
+
+# List of interesting modules :
+# CommandFile : open the named pipe nagios.cmd
+# PickleRetentionArbiter : save data before exiting
+# NSCA : NSCA server
+# VMWare_auto_linking : lookup at Vphere server for dependencies
+# GLPIImport : import hosts from GLPI
+# TSCA : TSCA server
+ }
+
+
+# The receiver manages passive information. It's just a "buffer" that
+# will be readfrom the arbiter to dispatch data
+define receiver{
+ receiver_name receiver-1
+ address localhost
+ port 7773
+ spare 0
+
+ # The main goal of the receiver is to load
+ # Passive modules, like the NSCA one
+ #modules NSCA,CommandFile
+
+ timeout 3 ; 'ping' timeout
+ data_timeout 120 ; 'data send' timeout
+ max_check_attempts 3 ; if at least max_check_attempts ping failed, the node is DEAD
+ check_interval 60 ; ping it every minute
+
+ #advanced
+ realm All
+ }
+
+
+
+#Very advanced feature for multisite managment.
+#Consider to look at the doc before touching it :)
+define realm{
+ realm_name All
+ default 1
+}
+
+
+
diff --git a/god/Monitoring/nagios/shinken/templates.cfg b/god/Monitoring/nagios/shinken/templates.cfg
new file mode 100644
index 00000000..02cf1617
--- /dev/null
+++ b/god/Monitoring/nagios/shinken/templates.cfg
@@ -0,0 +1,201 @@
+
+
+
+
+
+
+###############################################################################
+###############################################################################
+#
+# HOST TEMPLATES
+#
+###############################################################################
+###############################################################################
+
+
+
+
+# Generic host definition template - This is NOT a real host, just a template!
+define host{
+ name generic-host
+ alias generic-host
+
+ # Checking part
+ # no check_command by default
+ max_check_attempts 2
+ check_interval 5
+
+ active_checks_enabled 1
+ check_period 24x7
+
+ # Notification part
+ contact_groups admins
+ notification_interval 1
+ notification_period 24x7
+ notification_options d,u,r,f
+ notifications_enabled 1
+
+ # Advanced option. Look at the wiki for more informations
+ event_handler_enabled 0
+ flap_detection_enabled 1
+ process_perf_data 1
+ #poller_tag DMZ
+
+ # This said that it's a template
+ register 0
+}
+
+
+# windows template
+define host{
+ name windows
+ use generic-host
+ check_command check_ping
+ register 0
+}
+
+
+# Linux one
+define host{
+ name linux
+ use generic-host
+ check_command check_tcp!22
+ register 0
+}
+
+# HPUX template
+define host{
+ name hpux
+ use generic-host
+ check_command check_ping
+ register 0
+}
+
+
+# VM template
+define host{
+ name vmware-vm
+ use generic-host
+ alias vmware-vm
+ register 0
+}
+
+
+# ESX one
+define host{
+ name vmware-host
+ use generic-host
+ alias vmware-host
+ register 0
+}
+
+
+# Routers
+define host{
+ name router
+ use generic-host
+ check_command check_ping
+ register 0
+}
+
+define printer{
+ name printer
+ use generic-host
+ check_command check_ping
+ register 0
+ notification_period workhours
+}
+
+
+
+
+###############################################################################
+###############################################################################
+#
+# SERVICE TEMPLATES
+#
+###############################################################################
+###############################################################################
+
+
+# Generic service definition template - This is NOT a real service, just a template!
+define service{
+ name generic-service ; The 'name' of this service template
+ active_checks_enabled 1 ; Active service checks are enabled
+ passive_checks_enabled 1 ; Passive service checks are enabled/accepted
+
+ # Check part
+ # By default, there is no check_command here
+ check_interval 5 ; Check the service every 5 minutes in normal state
+ retry_interval 1 ; Re-check the service every one minutes until a hard state can be determined
+ max_check_attempts 2 ; Re-check the service up to 3 times in order to determine its final (hard) state
+ check_period 24x7 ; The service can be checked at any time of the day
+
+ # Notification part
+ notifications_enabled 1 ; Service notifications are enabled
+ notification_options w,u,c,r ; Send notifications about warning, unknown, critical, and recovery events
+ notification_interval 1 ; Re-notify about service problems every hour
+ notification_period 24x7
+ # If the contacts and contact_groups options are not set, it will notify host contacts instead
+ # contact_groups admins
+
+ # Advanced options. Change with care
+ #event_handler_enabled 1
+ # event_handler super_event_kill_everyone!DIE
+ flap_detection_enabled 1 ; Flap detection is enabled
+ check_freshness 0
+ freshness_threshold 3600
+ #stalking_options w,c
+ obsess_over_service 0
+ #escalations ToLevel2
+ process_perf_data 1 ; Process perf data, like for PNP
+ is_volatile 0 ; for log monitoring. See doc for more info about it
+
+
+ register 0
+ }
+
+
+
+#This one is a real one
+define service{
+ name local-service ; The name of this service template
+ use generic-service ; Inherit default values from the generic-service definition
+ max_check_attempts 1 ; directly go in hard state here
+ register 0 ; DONT REGISTER THIS DEFINITION - ITS NOT A REAL SERVICE, JUST A TEMPLATE!
+ }
+
+
+
+
+
+
+
+###############################################################################
+###############################################################################
+#
+# CONTACT TEMPLATES
+#
+###############################################################################
+###############################################################################
+
+
+
+####Contact definition
+define contact{
+ name generic-contact ; The name of this contact template
+ service_notification_period 24x7 ; service notifications can be sent anytime
+ host_notification_period 24x7 ; host notifications can be sent anytime
+ service_notification_options c,w,r
+ host_notification_options d,u,r,f,s ; send notifications for all host states, flapping events, and scheduled downtime events
+ service_notification_commands notify-service-by-email ; send service notifications via email
+ host_notification_commands notify-host-by-email ; send host notifications via email
+ register 0 ; DONT REGISTER THIS DEFINITION - ITS NOT A REAL CONTACT, JUST A TEMPLATE!
+ host_notifications_enabled 1
+ service_notifications_enabled 1
+ host_notification_period 24x7
+ service_notification_period 24x7
+ email shinken@localhost
+ }
+
+
diff --git a/god/Monitoring/nagios/shinken/timeperiods.cfg b/god/Monitoring/nagios/shinken/timeperiods.cfg
new file mode 100644
index 00000000..7322827d
--- /dev/null
+++ b/god/Monitoring/nagios/shinken/timeperiods.cfg
@@ -0,0 +1,71 @@
+
+#### Timeperiods part
+
+define timeperiod{
+ timeperiod_name 24x7
+ alias 24_Hours_A_Day,_7_Days_A_Week
+ sunday 00:00-24:00
+ monday 00:00-24:00
+ tuesday 00:00-24:00
+ wednesday 00:00-24:00
+ thursday 00:00-24:00
+ friday 00:00-24:00
+ saturday 00:00-24:00
+# exclude workhours
+}
+
+
+# 'workhours' timeperiod definition
+define timeperiod{
+ timeperiod_name workhours
+ alias Normal Work Hours
+ monday 09:00-17:00
+ tuesday 09:00-17:00
+ wednesday 09:00-17:00
+ thursday 09:00-17:00
+ friday 09:00-17:00
+ #exclude 24x7
+ }
+
+
+# 'none' timeperiod definition
+define timeperiod{
+ timeperiod_name none
+ alias No Time Is A Good Time
+ }
+
+
+# Some U.S. holidays
+# Note: The timeranges for each holiday are meant to *exclude* the holidays from being
+# treated as a valid time for notifications, etc. You probably don't want your pager
+# going off on New Year's. Although you're employer might... :-)
+define timeperiod{
+ name us-holidays
+ timeperiod_name us-holidays
+ alias U.S. Holidays
+
+ january 1 00:00-00:00 ; New Years
+ monday -1 may 00:00-00:00 ; Memorial Day (last Monday in May)
+ july 4 00:00-00:00 ; Independence Day
+ monday 1 september 00:00-00:00 ; Labor Day (first Monday in September)
+ thursday -1 november 00:00-00:00 ; Thanksgiving (last Thursday in November)
+ december 25 00:00-00:00 ; Christmas
+ }
+
+
+# This defines a modified "24x7" timeperiod that covers every day of the
+# year, except for U.S. holidays (defined in the timeperiod above).
+define timeperiod{
+ timeperiod_name 24x7_sans_holidays
+ alias 24x7 Sans Holidays
+
+ use us-holidays ; Get holiday exceptions from other timeperiod
+
+ sunday 00:00-24:00
+ monday 00:00-24:00
+ tuesday 00:00-24:00
+ wednesday 00:00-24:00
+ thursday 00:00-24:00
+ friday 00:00-24:00
+ saturday 00:00-24:00
+ }
diff --git a/god/Reaktor/index b/god/Reaktor/index
new file mode 100755
index 00000000..a7840bb2
--- /dev/null
+++ b/god/Reaktor/index
@@ -0,0 +1,39 @@
+#! /bin/sh
+#
+# //god/Reaktor - listen to UDP events and forward them to IRC
+#
+# export host passwd printto to configure jsb-udp
+#
+set -euf
+cd $(readlink -f $(dirname $0))
+
+listener=$(readlink -f lib/listener.py)
+
+jsb_version=0.7.1.2
+distdir=jsb-$jsb_version.tar.gz
+
+host=${host-91.206.142.247}
+passwd=${passwd-h4x0r}
+printto=${printto-#tincspasm}
+
+if ! test -x tmp/jsb-$jsb_version; then
+ mkdir -p tmp
+ cd tmp
+ curl -f http://jsonbot.googlecode.com/files/jsb-$jsb_version.tar.gz | tar zx
+ cd jsb-$jsb_version
+ bin/jsb-udp -s </dev/null
+ cd ../..
+fi
+cd tmp/jsb-$jsb_version
+
+# TODO only if it is not already configured properly
+cache="`cat config/udp-send`"
+echo "$cache" |
+sed '
+ s/^host *=.*/host="'$host'"/
+ s/^passwd *=.*/passwd="'$passwd'"/
+ s/^printto *=.*/printto="'$printto'"/
+' > config/udp-send
+
+# TODO output modules: stderr, jsb-udp, remount-ro, ...
+PYTHONUNBUFFERED=y $listener | tee /dev/stderr | bin/jsb-udp
diff --git a/god/Reaktor/lib/listener.py b/god/Reaktor/lib/listener.py
new file mode 100755
index 00000000..9708d9bc
--- /dev/null
+++ b/god/Reaktor/lib/listener.py
@@ -0,0 +1,50 @@
+#! /usr/bin/env python2
+# coding=UTF-8
+
+location = 'shackspace'
+host = '0.0.0.0'
+port = 2342
+
+map = {
+ 'shackspace': {
+ 'device': {
+ 0: 'Licht0, Zickenzone; Fenster',
+ 1: 'Licht1, Sofaecke; Fenster',
+ 2: 'Licht2, Zickenzone; Ghetto',
+ 3: 'Licht3, Sofaecke; Ghetto',
+ 4: 'Licht4, Richtung Getränkelager',
+ 5: 'Licht5, Porschekonsole',
+ 6: 'Licht6, Tomatenecke',
+ 7: 'Licht7, Ghetto',
+ 10: 'Hauptschalter'
+ },
+ 'state': {
+ 0: 'aus',
+ 1: 'an',
+ 2: 'aus in T-10s'
+ },
+ '->': 'ist'
+ }
+}
+
+import socket
+from string import join
+from struct import unpack
+
+# create udp socket
+mysocket = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
+
+# allow send/recieve from broacast address
+mysocket.setsockopt(socket.SOL_SOCKET,socket.SO_BROADCAST,1)
+
+# allow the socket to be re-used
+mysocket.setsockopt(socket.SOL_SOCKET,socket.SO_REUSEADDR,1)
+mysocket.bind((host, port))
+
+map = map[location]
+
+while True:
+ did, sid = unpack('BB', mysocket.recv(2))
+ device, state = map['device'][did], map['state'][sid]
+ arrow = map['->']
+ print join([device, arrow, state], ' ')
diff --git a/god/census/Makefile b/god/census/Makefile
new file mode 100644
index 00000000..9993bf2a
--- /dev/null
+++ b/god/census/Makefile
@@ -0,0 +1,5 @@
+.phony: all
+
+all: arping.py arping_users.py
+install:
+ ./sched-arping
diff --git a/god/census/README.md b/god/census/README.md
new file mode 100644
index 00000000..2842368d
--- /dev/null
+++ b/god/census/README.md
@@ -0,0 +1,23 @@
+Census (formerly known as ARPING Users)
+==========
+
+This is a simplified python script which checks the available subnet for computers online and returns a list of users which are online based on their mac-address
+
+The initial idea was to find known users in the given network, now it finds and stores everyone in the given network and might try to resolve these addresses into names. This is why the name `census` is coined for the project.
+
+Return Data
+----------
+after trying to reach all hosts in the selected subnets the script spits out th e following data:
+<pre>
+ { "timestamp" : 12345678, "data" : { "ip1" : ["mac1","mac2","macn"] }
+</pre>
+
+Census is meant to be put into a cronjob or some kind of wrapper scripts as it is currently really really (2-3 minutes) slow.
+
+SNMPWALK Command
+===============
+
+For historic reasons, this is the snmpwalk command to pull the currently registered mac-addresses on the firewall:
+<pre>
+snmpwalk -c shammunity 10.42.0.1 1.3.6.1.2.1.3.1.1.2
+</pre>
diff --git a/god/census/TODO.md b/god/census/TODO.md
new file mode 100644
index 00000000..daacfd58
--- /dev/null
+++ b/god/census/TODO.md
@@ -0,0 +1,3 @@
+BUGS
+=====
+
diff --git a/god/census/VERSION b/god/census/VERSION
new file mode 100644
index 00000000..6c50e659
--- /dev/null
+++ b/god/census/VERSION
@@ -0,0 +1 @@
++++++++[>+++++++>+++++++<<-]>.>---.<-.
diff --git a/god/census/arping.py b/god/census/arping.py
new file mode 100755
index 00000000..ed257441
--- /dev/null
+++ b/god/census/arping.py
@@ -0,0 +1,34 @@
+#!/usr/bin/python
+
+import logging
+log = logging.getLogger('arpingy')
+logging.disable(logging.WARNING)
+
+import os,sys
+try:
+ if (os.geteuid() != 0):
+ raise Exception('no root permissions')
+ from scapy.all import * #might throws "no such module"
+
+ def arpingy(iprange="10.42.1.0/24",iface='eth0'):
+ """Arping function takes IP Address or Network, returns nested mac/ip list"""
+ try:
+ conf.verb=0
+ ans,unans=arping(iprange,iface=iface,timeout=3,retry=1)
+
+ collection = []
+ for snd, rcv in ans:
+ result = rcv.sprintf(r"%ARP.psrc% %Ether.src%").split()
+ log.debug(result)
+ return result # take just the first arp reply
+ except Exception as e:
+ print ("something went wrong while arpinging " + str(e))
+ return []
+
+except Exception as e:
+ raise Exception("Cannot load arping functions!" + str(e))
+
+
+if __name__ =='__main__':
+ logging.basicConfig(level=logging.DEBUG)
+ arpingy(sys.argv[1],sys.argv[2])
diff --git a/god/census/arping_users.py b/god/census/arping_users.py
new file mode 100755
index 00000000..eb47f308
--- /dev/null
+++ b/god/census/arping_users.py
@@ -0,0 +1,92 @@
+#!/usr/bin/python
+import subprocess,re,logging,sys
+import json
+from arping import arpingy
+from multiprocessing import Pool
+logging.basicConfig(level=logging.WARNING)
+log = logging.getLogger("main")
+DEV='eth1'
+MAC_NAMES='mac_names.lst'
+data = []
+my_addr = False
+my_names = {}
+ret = {}
+quiet=False
+
+names = {}
+if len(sys.argv) > 1 and sys.argv[1] == 'q':
+ quiet=True
+def get_own_addr():
+ data = subprocess.Popen(['/sbin/ifconfig',DEV],
+ stdout=subprocess.PIPE).communicate()[0].replace('\n','')
+ return re.sub(r'.*HWaddr ([0-9A-Fa-f:]*).*inet addr:([0-9.]*).*' ,
+ r'\1 \2',data).split()
+
+def load_names(mac_file):
+ f = open(mac_file)
+ for l in f:
+ mac,name = l.split(' ',1)
+ names[mac] = name.replace('\n','')
+ f.close()
+ return names
+
+def print_config():
+ log.info("My Addr : %s" %str(my_addr))
+ log.info("MAC Names file: %s " %MAC_NAMES)
+ log.debug("Loaded names : ")
+ for mac,name in my_names.iteritems():
+ log.debug("%s => %s" %(mac,name))
+
+def init():
+ my_addr = get_own_addr()
+ my_names = load_names(MAC_NAMES)
+
+def arping_helper(dic):
+ log.debug("trying arpingy(%s)" %dic)
+ return arpingy(**dic)
+
+def main():
+ init()
+ print_config()
+
+ for first in range(1,4):
+ for second in range(256):
+ data.append({'iprange':'10.42.'+str(first)+'.'+str(second),'iface':DEV})
+ try:
+ log.info("creating new Pool")
+ p = Pool(35)
+ ret = filter(lambda x:x , p.map(arping_helper, data))
+ log.info("killing it")
+ p.terminate()
+
+ except Exception as e:
+ print 'you fail '+str(e)
+ sys.exit(1)
+ myip,mymac = get_own_addr()
+ ret.append([mymac,myip])
+
+ print_json(ret)
+ #print_names(ret)
+
+def print_names(ret):
+ for p in ret:
+ if not quiet:
+ print p[0] + " => " + p[1]
+ if p[1] in names:
+ print names[p[1]]+ " is online"
+
+def print_json(ret):
+ from time import time
+ output = {}
+ output["timestamp"] = time()
+ for i in ret:
+ mac = i[0]
+ ip = i[1]
+ if i[0] not in output:
+ output[mac] = []
+ output[mac].append(ip)
+ print json.dumps(output)
+
+if __name__ == "__main__":
+ log.debug("starting arping_users")
+ main()
diff --git a/god/census/mac_names.lst b/god/census/mac_names.lst
new file mode 100644
index 00000000..5f123dbe
--- /dev/null
+++ b/god/census/mac_names.lst
@@ -0,0 +1,14 @@
+00:40:63:c8:b5:a0 urkrebs
+00:23:54:29:1d:3e hadez
+00:26:c7:bd:a7:1a Martin
+04:1e:64:05:39:28 Stephan
+5c:59:48:22:2d:d2 Phil
+00:21:00:fb:5c:b6 Kah-Hah
+00:1e:64:27:3b:72 Felix
+40:30:04:4f:de:73 Armin
+00:26:c6:82:51:38 samuirai
+3c:8b:fe:5c:4e:da Moh-Moh
+00:26:bb:69:98:cc Jan
+78:dd:08:d5:34:28 Patrick
+78:ca:39:6e:ed:16 Tillman
+00:22:43:25:61:79 Te vau
diff --git a/god/census/sched-arping b/god/census/sched-arping
new file mode 100755
index 00000000..14f8af3c
--- /dev/null
+++ b/god/census/sched-arping
@@ -0,0 +1,8 @@
+#!/bin/sh
+
+TMP=`mktemp`
+crontab -l >$TMP
+
+echo "23 * * * * $PWD/arping_users.py > $PWD/../db/arping" |
+../util/bin/magic create "arping" $TMP
+crontab $TMP
diff --git a/god/census/title.lst b/god/census/title.lst
new file mode 100644
index 00000000..dade858f
--- /dev/null
+++ b/god/census/title.lst
@@ -0,0 +1,11 @@
+KM kh
+KM lassulus
+KM makefu
+KM miefda
+KM momo
+KM pfleidi
+KM rtjure
+KM tv
+CN cmile
+CN infin
+CP *
diff --git a/god/claws/.gitignore b/god/claws/.gitignore
new file mode 100644
index 00000000..5da5924f
--- /dev/null
+++ b/god/claws/.gitignore
@@ -0,0 +1 @@
+rcontrol
diff --git a/god/claws/Makefile b/god/claws/Makefile
new file mode 100644
index 00000000..5c9bb8e1
--- /dev/null
+++ b/god/claws/Makefile
@@ -0,0 +1,18 @@
+# Makefile for the rcontrol program
+# We set a setuid bit as this tools needs root privilleges to open the FT232 device.
+
+BINARY=./rcontrol
+
+install: all
+ ln -snf $$PWD/$(BINARY) ../../bin/
+
+all:$(BINARY)
+ chown root.root $(BINARY)
+ chmod +s $(BINARY)
+
+$(BINARY): rcontrol.c
+ #punani install libftdi1 libftdi-dev
+ gcc -Wall -lusb -lftdi rcontrol.c -o $(BINARY)
+
+clean:
+ rm -f $(BINARY)
diff --git a/god/claws/README.md b/god/claws/README.md
new file mode 100644
index 00000000..00c90a85
--- /dev/null
+++ b/god/claws/README.md
@@ -0,0 +1,12 @@
+# CLAWS
+
+Claws is a tool to manage some obscure Hardware Relay Board currently attached
+to the krebs infrastructure
+
+# Installation
+
+ make install
+
+# Usage
+
+ rcontrol --help
diff --git a/god/claws/communication.h b/god/claws/communication.h
new file mode 100644
index 00000000..db4b2c36
--- /dev/null
+++ b/god/claws/communication.h
@@ -0,0 +1,25 @@
+/* These are the command codes of the relay card. If you change something here you must
+ * recompile the firmware and the control tool. */
+#ifndef _COMMUNICATION_H
+#define _COMMUNICATION_H
+
+#define COMMAND_RELAY_ON 0x01
+#define COMMAND_RELAY_OFF 0x02
+#define COMMAND_RELAY_TOGGLE 0x04
+#define COMMAND_RELAY_SET 0x08
+#define COMMAND_RELAY_TIME_ON 0x10
+#define COMMAND_RELAY_TIME_OFF 0x20
+#define COMMAND_RELAY_TIME_CYCLIC 0x40
+#define COMMAND_GET_STATUS 0x80
+#define COMMAND_DEL_TIMERS 0x81
+#define COMMAND_SETUP_REMOTE 0x82
+
+
+#define RESPONSE_OK 0xff
+#define RESPONSE_INVALID_COMMAND 0xfe
+#define RESPONSE_INVALID_ARGUMENT 0xfd
+#define RESPONSE_TRANSMISSION_ERROR 0xfc
+
+#define COMMANDO_LENGTH 4
+
+#endif
diff --git a/god/claws/rcontrol.c b/god/claws/rcontrol.c
new file mode 100644
index 00000000..eaa66b89
--- /dev/null
+++ b/god/claws/rcontrol.c
@@ -0,0 +1,479 @@
+/* +----------------------------------------------------------------------+
+ * | relay control program |
+ * | by mgr, 2007 |
+ * | last change: 2009-01-05 |
+ * | |
+ * | This program is used to control the relay card version 1.0. For more |
+ * | information have a look at the project homepage. |
+ * | You will need libftdi in order to compile this tool. |
+ * | |
+ * | NOTE: For some reason the -l option causes a program crash if I |
+ * | compile this program with -O2. On top of that this code seems to |
+ * | be quite optimal, the program size gets a little larger with -O2, |
+ * | so I suggest you just compile it without optimization. |
+ * +----------------------------------------------------------------------+
+ */
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <unistd.h>
+#include <string.h>
+#include <getopt.h>
+#include <ctype.h>
+#include <time.h>
+#include <ftdi.h> // libftdi
+
+/* Notice that if you experiment with the baud rate, you will have to adapt
+ * the firmware, too. Also I do not recommend it, as 9600 Bauds are completely
+ * sufficient for this application. */
+#define BAUD 9600
+
+/* If you are using more than one FT232-based pieces of hardware at once,
+ * we need a way to uniquely address any given one. This is done by the
+ * serial of the specific device which you can pass to this tool or specify
+ * here. If no serial is specified (NULL), the first found device is opened. */
+#define DEFAULT_FT_SERIAL "A6TMRSS6"
+
+#define VERSION "1.0"
+
+#define OPTION_ADDRESS 0x01
+#define OPTION_INTERVAL 0x04
+#define OPTION_CYCLIC 0x08
+#define OPTION_ON 0x10
+#define OPTION_OFF 0x20
+#define OPTION_TOGGLE 0x40
+#define OPTION_DEL_TIMERS 0x80
+#define OPTION_LIST_DEVICES 0x200
+
+#define EXIT_CODE_OK 0
+#define EXIT_CODE_FAILURE 1
+
+#include "communication.h"
+
+/* function prototypes */
+void usage(char* name);
+void version(void);
+const char* card_strerror(int error);
+int valid_argument(const char* str);
+void exit_gracefully(struct ftdi_context* ftdic, char exit_code);
+
+
+int main(int argc, char **argv)
+{
+ int ret=0, int_argument=0, option_flags=0, long_index=0, i=0, num_ops=0;
+ signed char c=0;
+ unsigned char buf[COMMANDO_LENGTH], char_argument=0, operation=0;
+ const char* ft_serial=DEFAULT_FT_SERIAL;
+ double double_argument;
+ char buf0[64], buf1[64], buf2[64];
+ time_t start_time;
+
+ //struct ftdi_eeprom eeprom;
+
+ struct ftdi_context ftdic;
+ struct ftdi_device_list *devlist=NULL, *curdev=NULL;
+
+ static struct option long_options[] =
+ {
+ {"help", 0, 0, '?'},
+ {"version", 0, 0, 'V'},
+ {"on", 1, 0, 'o'},
+ {"off", 1, 0, 'f'},
+ {"toggle", 1, 0, 't'},
+ {"set", 1, 0, 's'},
+ {"status", 0, 0, 'S'},
+ {"interval", 1, 0, 'v'},
+ {"cyclic", 0, 0, 'c'},
+ {"address", 1, 0, 'a'},
+ {"delete-timers", 0, 0, 'd'},
+ {"list-devices", 0, 0, 'l'},
+ {0, 0, 0, 0 }
+ };
+
+ /* fetch the command line options */
+ while ((c = getopt_long_only(argc, argv, "?Vo:f:t:s:Sv:ca:dl", long_options,
+ &long_index)) != -1)
+ {
+ switch (c)
+ {
+ case 'o': case 'f': case 't':
+ int_argument = atoi(optarg);
+
+ if (int_argument > 6 || int_argument < 1 || !valid_argument(optarg))
+ {
+ fprintf(stderr, "%s: -s: invalid value `%s' (1-6 is valid)\n",
+ *argv, optarg);
+ return EXIT_CODE_FAILURE;
+ }
+
+ char_argument = (unsigned char)int_argument;
+
+ if (c == 't')
+ {
+ operation = COMMAND_RELAY_TOGGLE;
+ option_flags |= OPTION_TOGGLE;
+ } else if (c == 'o')
+ {
+ operation = COMMAND_RELAY_ON;
+ option_flags |= OPTION_ON;
+ } else
+ {
+ operation = COMMAND_RELAY_OFF;
+ option_flags |= OPTION_OFF;
+ }
+
+ num_ops++;
+
+ break;
+
+ case 's':
+ int_argument = atoi(optarg);
+
+ if (int_argument > (1 << 6)-1 || int_argument < 0 || !valid_argument(optarg))
+ {
+ fprintf(stderr, "%s: -s: invalid value `%s'\n", *argv, optarg);
+ return EXIT_CODE_FAILURE;
+ }
+
+ char_argument = (unsigned char)int_argument;
+ operation = COMMAND_RELAY_SET;
+ num_ops++;
+ break;
+
+ case 'S':
+ operation = COMMAND_GET_STATUS;
+ num_ops++;
+ break;
+
+ case 'v':
+ double_argument = atof(optarg);
+ int_argument = (int)(double_argument*60) /10;
+
+ if (int_argument < 1 || int_argument > (1 << 16)-1)
+ {
+ fprintf(stderr, "%s: -i: invalid interval `%s'\n", *argv, optarg);
+ return EXIT_CODE_FAILURE;
+ }
+
+ option_flags |= OPTION_INTERVAL;
+ break;
+
+ case 'c':
+ option_flags |= OPTION_CYCLIC;
+ break;
+
+ case 'd':
+ operation = COMMAND_DEL_TIMERS;
+ option_flags |= OPTION_DEL_TIMERS;
+ num_ops++;
+ break;
+
+ case 'a':
+ if (strlen(optarg) != 8)
+ {
+ fprintf(stderr, "%s: -s: invalid serial number `%s'\n", *argv, optarg);
+ return EXIT_CODE_FAILURE;
+ }
+
+ ft_serial = optarg;
+ option_flags |= OPTION_ADDRESS;
+ break;
+
+ case 'l':
+ option_flags |= OPTION_LIST_DEVICES;
+ break;
+
+ case 'V':
+ version();
+ break;
+ case '?': default:
+ usage(*argv);
+ break;
+ }
+ }
+
+ /* check whether the command line options are valid */
+ if ((option_flags & OPTION_INTERVAL))
+ {
+ if (option_flags & OPTION_DEL_TIMERS)
+ {
+ fprintf(stderr, "%s: -d cannot be mixed with timing options\n", *argv);
+ usage(*argv);
+ }
+
+ if (option_flags & OPTION_CYCLIC)
+ {
+ operation = COMMAND_RELAY_TIME_CYCLIC;
+ } else if (option_flags & OPTION_ON)
+ {
+ operation = COMMAND_RELAY_TIME_ON;
+ } else if (option_flags & OPTION_OFF)
+ {
+ operation = COMMAND_RELAY_TIME_OFF;
+ } else
+ {
+ fprintf(stderr, "%s: -v: you must also specify an operation (-o or -f)\n", *argv);
+ usage(*argv);
+ }
+ }
+
+ if (!operation && !(option_flags & OPTION_LIST_DEVICES))
+ {
+ usage(*argv);
+ }
+
+ if (((option_flags & OPTION_DEL_TIMERS) && (operation != COMMAND_DEL_TIMERS)))
+ {
+ fprintf(stderr, "%s: invalid mixture of options\n", *argv);
+ usage(*argv);
+ }
+
+ if (num_ops > 1)
+ {
+ fprintf(stderr, "%s: more than one operation specified\n", *argv);
+ usage(*argv);
+ }
+
+ if (ftdi_init(&ftdic) < 0)
+ {
+ fprintf(stderr, "%s: unable to initialize FTDI context: %d (%s)\n", *argv, ret,
+ ftdi_get_error_string(&ftdic));
+ return EXIT_CODE_FAILURE;
+ }
+
+ /* list all found FT232 devices */
+ if (option_flags & OPTION_LIST_DEVICES)
+ {
+ printf("scanning for FT232 devices...\n"
+ "you can address the devices using `%s -a <serial>'\n", *argv);
+
+ if ((ret = ftdi_usb_find_all(&ftdic, &devlist, 0x0403, 0x6001)) < 0)
+ {
+ fprintf(stderr, "%s: unable to scan devices: %d (%s)\n", *argv, ret,
+ ftdi_get_error_string(&ftdic));
+ exit(EXIT_CODE_FAILURE);
+ }
+
+ if (ret == 0)
+ {
+ printf(" no devices found :(\n");
+ return EXIT_CODE_OK;
+ }
+
+ for (i=0, curdev = devlist; curdev != NULL; i++)
+ {
+ if (ftdi_usb_get_strings(&ftdic, curdev->dev, buf0, sizeof(buf0)/sizeof(char),
+ buf1, sizeof(buf1)/sizeof(char), buf2, sizeof(buf2)/sizeof(char)) < 0)
+ {
+ fprintf(stderr, "unable to fetch information for device #%i: %s\n", i,
+ ftdi_get_error_string(&ftdic));
+ // continue caused an endless loop in case of an error
+ break;
+ }
+
+ printf("\ndevice #%i%s:\n"
+ " manufacturer: %s\n"
+ " device: %s\n"
+ " serial: %s\n", i, (i == 0 ? " (default)" : ""),
+ (buf0 != NULL ? buf0 : "n/a"), (buf1 != NULL ? buf1 : "n/a"),
+ (buf2 != NULL ? buf2 : "n/a"));
+
+ curdev = curdev->next;
+ }
+
+ ftdi_list_free(&devlist);
+ return EXIT_CODE_OK;
+ }
+
+ /* Try to open the specified device. If that fails, we take a long shot
+ * and open the first found FT232 device and assume its the relay card.
+ * We don't do this if an address was specified with the -a option. */
+ if ((ret = ftdi_usb_open_desc(&ftdic, 0x0403, 0x6001, NULL, ft_serial)) < 0)
+ {
+ fprintf(stderr, "%s: unable to open ftdi device: %d (%s)\n", *argv, ret,
+ ftdi_get_error_string(&ftdic));
+ exit(EXIT_CODE_FAILURE);
+ }
+
+ /* get rid of any data still floating around the buffer */
+ ftdi_usb_reset(&ftdic);
+ ftdi_usb_purge_buffers(&ftdic);
+
+
+ if ((ret = ftdi_set_baudrate(&ftdic, BAUD)) < 0)
+ {
+ fprintf(stderr, "%s: unable to set baudrate: %d (%s)\n", *argv, ret,
+ ftdi_get_error_string(&ftdic));
+ exit_gracefully(&ftdic, EXIT_CODE_FAILURE);
+ }
+
+ if ((ret = ftdi_set_line_property(&ftdic, 8, 2, NONE)) < 0)
+ {
+ fprintf(stderr, "%s: unable to set line property: %d (%s)\n", *argv, ret,
+ ftdi_get_error_string(&ftdic));
+ exit_gracefully(&ftdic, EXIT_CODE_FAILURE);
+ }
+
+ if ((ret = ftdi_setflowctrl(&ftdic, SIO_RTS_CTS_HS)) < 0) {
+ fprintf(stderr, "%s: unable to setup flow control: %d (%s)\n", *argv, ret,
+ ftdi_get_error_string(&ftdic));
+ exit_gracefully(&ftdic, EXIT_CODE_FAILURE);
+ }
+
+ /*if ((ret = ftdi_set_latency_timer(&ftdic, 10)) < 0)
+ {
+ fprintf(stderr, "%s: unable to set latency timer: %d (%s)\n", *argv, ret,
+ ftdi_get_error_string(&ftdic));
+ exit_gracefully(&ftdic, EXIT_CODE_FAILURE);
+ }*/
+
+ buf[0] = operation;
+ buf[2] = 0; buf[3] = 0; buf[4] = 0;
+
+ switch (operation)
+ {
+ case COMMAND_RELAY_SET:
+ buf[1] = char_argument;
+ break;
+
+ case COMMAND_RELAY_ON: case COMMAND_RELAY_OFF:
+ case COMMAND_RELAY_TOGGLE:
+ buf[1] = (1 << (char_argument-1));
+ break;
+
+ case COMMAND_RELAY_TIME_ON:
+ case COMMAND_RELAY_TIME_OFF:
+ case COMMAND_RELAY_TIME_CYCLIC:
+ buf[1] = char_argument-1;
+ buf[2] = (int_argument & 0xff); // low byte
+ buf[3] = (int_argument >> 8); // high byte
+ break;
+
+ default:
+ break;
+ }
+
+ /* These values might not make much sense are vital to the correct
+ * funtion of this program, so better don't touch them. */
+ ftdi_write_data_set_chunksize(&ftdic, 1);
+ ftdi_read_data_set_chunksize(&ftdic, 4);
+
+ /* send the command */
+ if (ftdi_write_data(&ftdic, buf, COMMANDO_LENGTH) != COMMANDO_LENGTH)
+ {
+ fprintf(stderr, "%s: unable to send command: %s\n", *argv,
+ ftdi_get_error_string(&ftdic));
+ exit_gracefully(&ftdic, EXIT_CODE_FAILURE);
+ }
+
+ /* Read the card's response. */
+ start_time = time(NULL);
+ while ((ret = ftdi_read_data(&ftdic, buf, 1)) == 0) {
+ usleep(500);
+ if (time(NULL)-start_time >= 2) {
+ fprintf(stderr, "%s: unable to read card response, the operation might have "
+ "failed\n", *argv);
+ exit_gracefully(&ftdic, EXIT_FAILURE);
+ }
+ }
+
+ if (operation == COMMAND_GET_STATUS && buf[0] <= ((1 << 7)-1))
+ {
+ printf("relay status: %i (0b%s%s%s%s%s%s)\n", buf[0],
+ (buf[0] & (1 << 5)) ? "1" : "0",
+ (buf[0] & (1 << 4)) ? "1" : "0",
+ (buf[0] & (1 << 3)) ? "1" : "0",
+ (buf[0] & (1 << 2)) ? "1" : "0",
+ (buf[0] & (1 << 1)) ? "1" : "0",
+ (buf[0] & (1 << 0)) ? "1" : "0");
+ exit_gracefully(&ftdic, EXIT_CODE_OK);
+ }
+
+ if (buf[0] != RESPONSE_OK)
+ {
+ fprintf(stderr, "%s: relay card returned: %s\n", *argv, card_strerror(buf[0]));
+ exit_gracefully(&ftdic, EXIT_FAILURE);
+ }
+
+ /* we can exit now */
+ exit_gracefully(&ftdic, EXIT_CODE_OK);
+ return 0; // to make the compiler happy
+}
+
+void exit_gracefully(struct ftdi_context* ftdic, char exit_code)
+{
+ ftdi_usb_purge_buffers(ftdic);
+ ftdi_usb_close(ftdic);
+ ftdi_deinit(ftdic);
+
+ exit(exit_code);
+}
+
+int valid_argument(const char* str)
+{
+ int i;
+
+ for (i=0; i<strlen(str); i++)
+ {
+ if (!isdigit(str[i]) && (str[i] != '.'))
+ return 0;
+ }
+
+ return 1;
+}
+
+const char* card_strerror(int error)
+{
+ const char* message = "no error";
+
+ switch (error)
+ {
+ case RESPONSE_OK:
+ message = "all fine";
+ break;
+ case RESPONSE_INVALID_COMMAND:
+ message = "invalid command";
+ break;
+ case RESPONSE_INVALID_ARGUMENT:
+ message = "invalid command argument";
+ break;
+ case RESPONSE_TRANSMISSION_ERROR:
+ message = "transmission error";
+ break;
+ }
+
+ return message;
+}
+
+void usage(char *name)
+{
+ printf("\nrelay control program usage ==================================================\n"
+ " -?/--help .............. dump this screen\n"
+ " -V/--version ........... echo some program information\n"
+ " -o/--on <num>: ......... switch relay <num> on\n"
+ " -f/--off <num>: ........ switch relay <num> off \n"
+ " -t/--toggle <num>: ..... toggle relay <num> \n"
+ " -s/--set <mask>: ....... set the status of all relays to <mask>\n"
+ " -S/--status: ........... get the current relay status\n"
+ " -v/--interval <units> .. specify a timing interval (in minutes)\n"
+ " -c/--cyclic: ........... makes a timing operation (-v) cyclic\n"
+ " -a/--address <serial> .. addresses a specific card if multiple are installed\n"
+ " -d/--delete-timers ..... deletes all active timers\n"
+ " -l/--list-devices ...... lists all found FT232 devices\n\n");
+ exit(0);
+}
+
+void version(void)
+{
+ printf("\nThis is the relay control program version %s ($Revision: 26 $)\n"
+ "----------------------------------------------------------------\n"
+ " written by Michael Gross, 2007\n"
+ " binary compiled: %s %s\n\n"
+ "This program can be redistributed under the terms of the GNU GPL version 2\n"
+ "or later. For more information about this software and the hardware, visit\n"
+ "my homepage at http://www.coremelt.net. As usual with free software, there\n"
+ "is ABSOLUTELY NO WARRANTY. For details, refer to the GPL.\n\n", VERSION,
+ __DATE__, __TIME__);
+
+ exit(0);
+}
diff --git a/god/filebitch/COPYING b/god/filebitch/COPYING
new file mode 100644
index 00000000..65d1a2e9
--- /dev/null
+++ b/god/filebitch/COPYING
@@ -0,0 +1,14 @@
+ DO WHAT THE FUCK YOU WANT TO PUBLIC LICENSE
+ Version 2, December 2004
+
+ Copyright (C) 2004 Sam Hocevar <momo@shackspace.de>
+
+ Everyone is permitted to copy and distribute verbatim or modified
+ copies of this license document, and changing it is allowed as long
+ as the name is changed.
+
+ DO WHAT THE FUCK YOU WANT TO PUBLIC LICENSE
+ TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
+
+ 0. You just DO WHAT THE FUCK YOU WANT TO.
+
diff --git a/god/filebitch/README b/god/filebitch/README
new file mode 100644
index 00000000..5ae3a666
--- /dev/null
+++ b/god/filebitch/README
@@ -0,0 +1,14 @@
+The connect_narf.pl script morses the IP + "connected" when a user connects to filebitchs proftpd server.
+The disconnect_narf.pl scritp will do the obvious opposite.
+It will hopefully drive someone crazy.
+
+To make it run you need to add some lines to your proftpd config.
+I decided not to let Krebs do this as I didn't want to break your FTP Server (I know FTP is broken by default).
+The 5 necessary lines are:
+
+<IfModule mod_exec.c>
+ ExecEngine on
+ ExecOnConnect "/krebs/filebitch/connect_narf.pl %a"
+ ExecOnExit "/krebs/filebitch/disconnect_narf.pl %a"
+</IfModule>
+
diff --git a/god/filebitch/TODO b/god/filebitch/TODO
new file mode 100644
index 00000000..aa2af36a
--- /dev/null
+++ b/god/filebitch/TODO
@@ -0,0 +1,2 @@
+Buid a blacklist so some IPs(e.g. monitoring servers) don't trigger a beep
+
diff --git a/god/filebitch/connect_narf.pl b/god/filebitch/connect_narf.pl
new file mode 100755
index 00000000..7c713d3b
--- /dev/null
+++ b/god/filebitch/connect_narf.pl
@@ -0,0 +1,19 @@
+#!/usr/bin/perl
+#Please add the following to your proftpd config file
+#ExtendedLog /var/log/proftpd/ftp_auth.log AUTH auth
+#and
+#<IfModule mod_exec.c>
+# ExecEngine on
+# ExecOnConnect "/krebs/filebitch/connect_narf.pli %a"
+#</IfModule>
+
+$ip = $ARGV[0];
+#I'm very sorry for this regex, but i only wanted it to get _real_ IPv4 Adresses of the log file, not any kind of timestamp bullshit
+$ip =~ s/\b(25[0-5]|2[0-4][0-9]|[1]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[1]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[1]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[1]?[0-9][0-9]?)\b//g;
+if($ip ne "10.42.0.107"){
+#getting some guys sitting next to the Server pissed :)
+ system("morse -l 42 -f 2000 $ip");
+ system("morse -l 42 -f 3000 \"connected\"");
+}
+# Uncomment the beep below to play the enterprise connect sound
+# system("beep -l 42 -f 2000 -D 42 -n -l 42 -f 3337");
diff --git a/god/filebitch/disconnect_narf.pl b/god/filebitch/disconnect_narf.pl
new file mode 100755
index 00000000..77fbf743
--- /dev/null
+++ b/god/filebitch/disconnect_narf.pl
@@ -0,0 +1,16 @@
+#!/usr/bin/perl
+#Please add the following to your proftpd config file
+#<IfModule mod_exec.c>
+# ExecEngine on
+# ExecOnExit "/krebs/filebitch/connect_narf.pli %a"
+#</IfModule>
+
+$ip = $ARGV[0];
+#I'm very sorry for this regex, but i only wanted it to get _real_ IPv4 Adresses of the log file, not any kind of timestamp bullshit
+$ip =~ s/\b(25[0-5]|2[0-4][0-9]|[1]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[1]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[1]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[1]?[0-9][0-9]?)\b//g;
+#getting some guys sitting next to the Server pissed :)
+system("morse -l 42 -f 2000 $ip");
+system("morse -l 42 -f 3000 \"disconnected\"");
+
+# Uncomment the beep below to play the enterprise connect sound
+# system("beep -l 42 -f 2000 -D 42 -n -l 42 -f 3337");
diff --git a/god/icecrab/Makefile b/god/icecrab/Makefile
new file mode 100644
index 00000000..36e91b76
--- /dev/null
+++ b/god/icecrab/Makefile
@@ -0,0 +1,6 @@
+.phony: debian
+
+debian:
+ [ -e /usr/bin/icecast2 ] || apt-get install --yes icecast2
+ cp icecast2 /etc/default/icecast2
+ cp icecast.xml /etc/icecast2/icecast.xml
diff --git a/god/icecrab/icecast.xml b/god/icecrab/icecast.xml
new file mode 100644
index 00000000..7776dc36
--- /dev/null
+++ b/god/icecrab/icecast.xml
@@ -0,0 +1,174 @@
+<icecast>
+ <limits>
+ <clients>100</clients>
+ <sources>2</sources>
+ <threadpool>5</threadpool>
+ <queue-size>524288</queue-size>
+ <client-timeout>30</client-timeout>
+ <header-timeout>15</header-timeout>
+ <source-timeout>10</source-timeout>
+ <!-- If enabled, this will provide a burst of data when a client
+ first connects, thereby significantly reducing the startup
+ time for listeners that do substantial buffering. However,
+ it also significantly increases latency between the source
+ client and listening client. For low-latency setups, you
+ might want to disable this. -->
+ <burst-on-connect>1</burst-on-connect>
+ <!-- same as burst-on-connect, but this allows for being more
+ specific on how much to burst. Most people won't need to
+ change from the default 64k. Applies to all mountpoints -->
+ <burst-size>65535</burst-size>
+ </limits>
+
+ <authentication>
+ <!-- Sources log in with username 'source' -->
+ <source-password>shackit</source-password>
+ <!-- Relays log in username 'relay' -->
+ <relay-password>shackit</relay-password>
+
+ <!-- Admin logs in with the username given below -->
+ <admin-user>admin</admin-user>
+ <admin-password>aidsballs</admin-password>
+ </authentication>
+
+ <!-- set the mountpoint for a shoutcast source to use, the default if not
+ specified is /stream but you can change it here if an alternative is
+ wanted or an extension is required
+ <shoutcast-mount>/live.nsv</shoutcast-mount>
+ -->
+
+ <!-- Uncomment this if you want directory listings -->
+ <!--
+ <directory>
+ <yp-url-timeout>15</yp-url-timeout>
+ <yp-url>http://dir.xiph.org/cgi-bin/yp-cgi</yp-url>
+ </directory>
+ -->
+
+ <!-- This is the hostname other people will use to connect to your server.
+ It affects mainly the urls generated by Icecast for playlists and yp
+ listings. -->
+ <hostname>krebs.shack</hostname>
+
+ <!-- You may have multiple <listener> elements -->
+ <listen-socket>
+ <port>8000</port>
+ <!-- <bind-address>127.0.0.1</bind-address> -->
+ <!-- <shoutcast-mount>/stream</shoutcast-mount> -->
+ </listen-socket>
+ <!--
+ <listen-socket>
+ <port>8001</port>
+ </listen-socket>
+ -->
+
+ <!--<master-server>127.0.0.1</master-server>-->
+ <!--<master-server-port>8001</master-server-port>-->
+ <!--<master-update-interval>120</master-update-interval>-->
+ <!--<master-password>hackme</master-password>-->
+
+ <!-- setting this makes all relays on-demand unless overridden, this is
+ useful for master relays which do not have <relay> definitions here.
+ The default is 0 -->
+ <!--<relays-on-demand>1</relays-on-demand>-->
+
+ <!--
+ <relay>
+ <server>127.0.0.1</server>
+ <port>8001</port>
+ <mount>/example.ogg</mount>
+ <local-mount>/different.ogg</local-mount>
+ <on-demand>0</on-demand>
+
+ <relay-shoutcast-metadata>0</relay-shoutcast-metadata>
+ </relay>
+ -->
+
+ <!-- Only define a <mount> section if you want to use advanced options,
+ like alternative usernames or passwords
+ <mount>
+ <mount-name>/example-complex.ogg</mount-name>
+
+ <username>othersource</username>
+ <password>hackmemore</password>
+
+ <max-listeners>1</max-listeners>
+ <dump-file>/tmp/dump-example1.ogg</dump-file>
+ <burst-size>65536</burst-size>
+ <fallback-mount>/example2.ogg</fallback-mount>
+ <fallback-override>1</fallback-override>
+ <fallback-when-full>1</fallback-when-full>
+ <intro>/example_intro.ogg</intro>
+ <hidden>1</hidden>
+ <no-yp>1</no-yp>
+ <authentication type="htpasswd">
+ <option name="filename" value="myauth"/>
+ <option name="allow_duplicate_users" value="0"/>
+ </authentication>
+ <on-connect>/home/icecast/bin/stream-start</on-connect>
+ <on-disconnect>/home/icecast/bin/stream-stop</on-disconnect>
+ </mount>
+
+ <mount>
+ <mount-name>/auth_example.ogg</mount-name>
+ <authentication type="url">
+ <option name="mount_add" value="http://myauthserver.net/notify_mount.php"/>
+ <option name="mount_remove" value="http://myauthserver.net/notify_mount.php"/>
+ <option name="listener_add" value="http://myauthserver.net/notify_listener.php"/>
+ <option name="listener_remove" value="http://myauthserver.net/notify_listener.php"/>
+ </authentication>
+ </mount>
+
+ -->
+
+ <fileserve>1</fileserve>
+
+ <paths>
+ <!-- basedir is only used if chroot is enabled -->
+ <basedir>/usr/share/icecast2</basedir>
+
+ <!-- Note that if <chroot> is turned on below, these paths must both
+ be relative to the new root, not the original root -->
+ <logdir>/var/log/icecast2</logdir>
+ <webroot>/usr/share/icecast2/web</webroot>
+ <adminroot>/usr/share/icecast2/admin</adminroot>
+ <!-- <pidfile>/usr/share/icecast2/icecast.pid</pidfile> -->
+
+ <!-- Aliases: treat requests for 'source' path as being for 'dest' path
+ May be made specific to a port or bound address using the "port"
+ and "bind-address" attributes.
+ -->
+ <!--
+ <alias source="/foo" dest="/bar"/>
+ -->
+ <!-- Aliases: can also be used for simple redirections as well,
+ this example will redirect all requests for http://server:port/ to
+ the status page
+ -->
+ <alias source="/" dest="/status.xsl"/>
+ </paths>
+
+ <logging>
+ <accesslog>access.log</accesslog>
+ <errorlog>error.log</errorlog>
+ <!-- <playlistlog>playlist.log</playlistlog> -->
+ <loglevel>3</loglevel> <!-- 4 Debug, 3 Info, 2 Warn, 1 Error -->
+ <logsize>10000</logsize> <!-- Max size of a logfile -->
+ <!-- If logarchive is enabled (1), then when logsize is reached
+ the logfile will be moved to [error|access|playlist].log.DATESTAMP,
+ otherwise it will be moved to [error|access|playlist].log.old.
+ Default is non-archive mode (i.e. overwrite)
+ -->
+ <!-- <logarchive>1</logarchive> -->
+ </logging>
+
+ <security>
+ <chroot>0</chroot>
+ <!--
+ <changeowner>
+ <user>nobody</user>
+ <group>nogroup</group>
+ </changeowner>
+ -->
+ </security>
+</icecast>
diff --git a/god/icecrab/icecast2.conf b/god/icecrab/icecast2.conf
new file mode 100644
index 00000000..3a2521ff
--- /dev/null
+++ b/god/icecrab/icecast2.conf
@@ -0,0 +1,19 @@
+# Defaults for icecast2 initscript
+# sourced by /etc/init.d/icecast2
+# installed at /etc/default/icecast2 by the maintainer scripts
+
+#
+# This is a POSIX shell fragment
+#
+
+# Full path to the server configuration file
+CONFIGFILE="/etc/icecast2/icecast.xml"
+
+# Name or ID of the user and group the daemon should run under
+USERID=icecast2
+GROUPID=icecast
+
+# Edit /etc/icecast2/icecast.xml and change at least the passwords.
+# Change this to true when done to enable the init.d script
+ENABLE=true
+
diff --git a/god/ivan/Makefile b/god/ivan/Makefile
new file mode 100644
index 00000000..30bb86aa
--- /dev/null
+++ b/god/ivan/Makefile
@@ -0,0 +1,7 @@
+.PHONY: infest
+BIN_DIR = ../bin
+infest:
+ ln -s ${PWD}ivan ${INSTALL_DIR}
+debian-startup:
+ cp ivan-startup /etc/init.d/ivan
+ update-rc.d ivan start
diff --git a/god/ivan/announce.wav b/god/ivan/announce.wav
new file mode 100644
index 00000000..54ec73cf
--- /dev/null
+++ b/god/ivan/announce.wav
Binary files differ
diff --git a/god/ivan/ivan b/god/ivan/ivan
new file mode 100755
index 00000000..f8cbcb8b
--- /dev/null
+++ b/god/ivan/ivan
@@ -0,0 +1,41 @@
+#!/bin/bash
+
+cd $(dirname $(readlink -f $0))
+SATZ_LISTE=satz-liste
+p="${noise_pitch-10}"
+v="${noise_lang-de}"
+k="${noise_capital-0}"
+a="${noise_amplitude-600}"
+g="${noise_gap-1}"
+RND_DELAY=3600
+CACHE_DIR=/opt/ivan-cache
+export CACHE_DIR
+#set -x
+function helpme ()
+{
+ cat << EOF
+ $0 [-d]
+ -d -- daemonize
+ -h -- this help file
+
+ environment:
+ USING_ESPEAK - if set, ivan will talk with espeak
+EOF
+ exit 0
+}
+
+[ "${1:-}" = "-h" ] && helpme
+
+while true
+do
+ aplay announce.wav
+ if [ -n "${USING_ESPEAK:-}" ];then
+ espeak -v $v -p $p -k $k -a $a -g $g "`shuf \"$SATZ_LISTE\" | tail -1`"
+ else
+ ./naturalvoices_cached.sh "Achtung, Achtung, es erfolgt eine Durchsage!"
+ sleep 0.3
+ ./naturalvoices_cached.sh "`shuf \"$SATZ_LISTE\" | tail -1`"
+ fi
+ [ ! "${1:-}" = "-d" ] && exit 0 # break if not daemonized
+ sleep $((${RANDOM}%${RND_DELAY}))
+done
diff --git a/god/ivan/ivan-startup b/god/ivan/ivan-startup
new file mode 100755
index 00000000..f955e1c2
--- /dev/null
+++ b/god/ivan/ivan-startup
@@ -0,0 +1,74 @@
+#! /bin/sh
+#
+### BEGIN INIT INFO
+# Provides: ivan
+# Required-Start: $remote_fs $network
+# Required-Stop: $remote_fs $network
+# Should-Start: $syslog $named
+# Should-Stop: $syslog
+# Default-Start: 2 3 4 5
+# Default-Stop: 0 1 6
+# Short-Description: Start ivan daemons
+# Description:
+
+### END INIT INFO
+#
+# Based on Lubomir Bulej's Redhat init script.
+
+DAEMON="/krebs/bin/ivan"
+PIDFILE="/var/lock/ivan"
+NAME="ivan"
+DESC="ivan daemons"
+TCONF="/etc/ivan"
+
+test -f $DAEMON || exit 0
+
+[ -r /etc/default/ivan ] && . /etc/default/ivan
+
+
+start() {
+ [ -e $PIDFILE ] && echo "$PIDFILE already exists" && return
+ $DAEMON $EXTRA -d "$@" &
+ echo $(($$+1)) > $PIDFILE #TODO fix this ugly hack!
+}
+stop() {
+ [ ! -e $PIDFILE ] && echo "$PIDFILE does not exist" && return
+ kill `cat $PIDFILE`
+ #killall ivan
+ rm $PIDFILE
+}
+
+reload() {
+ echo "do nothing"
+ # do nothing
+}
+
+restart() {
+ stop "$@"
+ start "$@"
+}
+
+case "$1" in
+ start)
+ echo -n "Starting $DESC:"
+ start
+ ;;
+ stop)
+ echo -n "Stopping $DESC:"
+ stop
+ ;;
+ reload|force-reload)
+ echo -n "Reloading $DESC configuration:"
+ reload
+ ;;
+ restart)
+ echo -n "Restarting $DESC:"
+ restart
+ ;;
+ *)
+ echo "Usage: /etc/init.d/$NAME {start|stop|reload|restart|force-reload}"
+ exit 1
+ ;;
+esac
+echo "done"
+exit 0
diff --git a/god/ivan/naturalvoices_cached.sh b/god/ivan/naturalvoices_cached.sh
new file mode 100755
index 00000000..93ac1911
--- /dev/null
+++ b/god/ivan/naturalvoices_cached.sh
@@ -0,0 +1,25 @@
+#!/bin/sh
+# The cached version of naturalvoices
+# This should prevent us from being pwned again ...
+
+. ../../util/lib/naturalvoices/att.sh
+
+: ${1?what to say?Please provide text as parameter.}
+
+text=$(echo $* | sed -e 's/ /+/g' -e 's/\//%2F/g')
+voice="${voice:-klara}"
+
+
+CACHE_DIR="${CACHE_DIR:-/tmp/ivan-speech}"
+mkdir -p "$CACHE_DIR"
+OUTFILE="$CACHE_DIR/${voice}_${text}.wav"
+
+
+if [ ! -e $OUTFILE ] ;then
+ echo "Downloading $OUTFILE"
+ get_tts "$text"
+else
+ echo "using cached version of $OUTFILE"
+fi
+
+play_file "$OUTFILE"
diff --git a/god/ivan/satz-liste b/god/ivan/satz-liste
new file mode 100644
index 00000000..9fb36364
--- /dev/null
+++ b/god/ivan/satz-liste
@@ -0,0 +1,41 @@
+wenn ich meinen erzeugten abfall vor dem nach hause gehen beseitige steigt mein soziales ansehen
+bringe eine pflanze mit
+ein sauberer scheck ist ein guter scheck
+auch du weißt wie man den geschirrspüler einräumt
+wer die toilette putzt kommt in den himmel
+der große bruder sieht es gerne wenn die genossen die vereinsräume in stand halten
+muelltrennung bringt gutes karma
+dokumentiere deine projekte
+Werbe neue mitglieder
+fnord
+bewässere die Pflanzen
+Öffne ein Fenster
+wische die tische
+Weniger Licht ist mehr
+sammle pfandflaschen ein
+zahle deinen mitgliedsbeitrag
+willkommen in deinem lieblings häckerspäiß
+verbiege nicht die metallnupsis an mateflaschen
+ich habe auf dich gewartet
+wasche handtücher
+vertraue dem computer, der computer ist dein freund
+vertraue dem pferd, das pferd ist dein freund
+nimm an einem buchstabierwettbewerb teil
+trinke ausreichend
+hinterlasse die toiletten so wie du sie vorgefunden hast
+42
+der kuchen ist eine lüge
+nicht konformes verhalten wird gemeldet
+iwan fakt nummer 13: den weihnachtsmann gibt es nicht
+iwan: powered by Gnu hörd
+wie wäre es mit einer erfrischenden dusche?
+teilen ist freundschaft
+der verein deutscher imker rät: kauft deutschen honig
+überprüfe die rauchmelder regelmäßig auf ihre funktion
+spare strom
+mache dich mit den standorten der feuerlöscher vertraut
+Steuerung Alt Entfernen
+Leute die Nubsies von Netzwerk kabeln abbrechen, werden geschlagen
+Setz dich, nimm dir nen Keks, machs dir Schön bequem
+warum liegt denn hier stroh rum
+Der Hogwarts Express in Optionsraum 2 dreiviertel verspaetet sich um 5 Minuten.
diff --git a/god/licht b/god/licht
new file mode 100755
index 00000000..12e4555f
--- /dev/null
+++ b/god/licht
@@ -0,0 +1,136 @@
+#!/bin/bash
+#
+#SYNOPSIS
+# //god/licht [options] [0/1]
+#OPTIONS
+# all - toggles all lights
+# links - toggles all lights on the left hand side while looking towards the Auditorium
+# rechts - toggles all lights on the right hand side while looking towards the Auditorium
+# kuschel - toggles the lights in the pwnie corner
+# software - toggles the software corner
+# tische - toggles the lights on the window side of the long table
+# porsche - toggles the lights on the window side where the porsche cockpit is
+# ghetto - toggles the lights in the hallway
+# 0-7 - toggles individual lights
+
+TOGGLE=`echo "$2" | sed -n '/^[0-1]/p'`
+shorthelp() {
+ echo "Usage: $0 [OPTIONS] [0|1]"
+ echo "Toggle the lights in the shack."
+
+}
+longhelp(){
+ shorthelp
+
+cat <<EOF
+
+OPTIONS
+ all - toggles all lights
+ links - toggles all lights on the left hand side while looking towards the Auditorium
+ rechts - toggles all lights on the right hand side while looking towards the Auditorium
+ kuschel - toggles the lights in the pwnie corner
+ software - toggles the software corner
+ tische - toggles the lights on the window side of the long table
+ porsche - toggles the lights on the window side where the porsche cockpit is
+ ghetto - toggles the lights in the hallway
+ 0-7 - toggles individual lights
+EOF
+}
+toggle() {
+ LAMPE=`echo "$1" | sed -n '/^[1-2]*[0-9]*[0-9]$/p' | xargs echo "obase=16;" | bc`
+ if ! [ "$LAMPE" -a "$TOGGLE" ];then
+ longhelp
+ exit 1
+ fi
+ STRING="\\xA5\\x5A\\x$LAMPE\\x$TOGGLE"
+ if [ $# != 2 ]
+ then
+ longhelp
+ exit 1
+ else
+ echo "Toggle light $LAMPE ($TOGGLE)"
+ printf "$STRING" | nc -u -w1 licht.shack 1337
+ fi
+}
+
+toggle_all() {
+ for i in `seq 0 7`
+ do
+ toggle $i $TOGGLE
+ done
+ wait
+}
+
+kuschel(){
+ for i in 0 2
+ do
+ toggle $i $TOGGLE
+ done
+ wait
+}
+
+software(){
+ for i in 1 3
+ do
+ toggle $i $TOGGLE
+ done
+ wait
+}
+
+tische(){
+ for i in 4 6
+ do
+ toggle $i $TOGGLE
+ done
+ wait
+}
+
+ghetto(){
+ i=7
+ toggle $i $TOGGLE
+}
+
+porsche(){
+ i=5
+ toggle $i $TOGGLE
+}
+
+case "$1" in
+ (--help)
+ if [ "$2" == "--verbose" ]
+ then longhelp
+ else shorthelp
+ fi
+ ;;
+ all)
+ toggle_all
+ ;;
+ kuschel)
+ kuschel
+ ;;
+ software)
+ software
+ ;;
+ links)
+ kuschel
+ software
+ ;;
+ rechts)
+ tische
+ porsche
+ ghetto
+ ;;
+ tische)
+ tische
+ ;;
+ porsche)
+ porsche
+ ;;
+ ghetto)
+ ghetto
+ ;;
+ *)
+ toggle "$@"
+ ;;
+esac
+
diff --git a/god/meinsack/index b/god/meinsack/index
new file mode 100755
index 00000000..7046d78c
--- /dev/null
+++ b/god/meinsack/index
@@ -0,0 +1,85 @@
+#! /bin/sh
+#
+# //meinsack
+#
+# export plz
+# export str
+# export anr
+# export ort
+#
+set -euf
+cd $(dirname $(readlink -f $0))/.. # cd //
+
+plz=${plz+"&plz=$plz"}
+str=${str+"&str=$str"}
+anr=${anr+"&anr=$anr"}
+
+url="http://www.sita-deutschland.de/sita/ywbase_Abfallkalender_Stuttgart.nsf/frmSelect?ReadForm$plz$str$anr"
+
+# echo $url
+
+html="$(curl -fsS "$url" | iconv -f latin1 -t utf8)"
+
+if echo "$html" | fgrep -q 'Ihre Eingabe war nicht eindeutig'; then
+ {
+ echo "Error: multiple locations found"
+ echo "$html" |
+ query/jquery/index 'table.tab:nth-child(2n) .bordertop > .text' |
+ sed '
+ s/[[:space:]]\+/ /g
+ s/'"`printf '\xc2\xa0'`"'//g;# kill unicode non-breaking space
+ ' |
+ while read plz &&
+ read str &&
+ read ort &&
+ read bes1 &&
+ read bes2 &&
+ read anr; do
+ str=$(echo "$str"|sed 's/<[^>]*>//g')
+ echo "export anr=$anr if you meant \"$ort\""
+ done | sort | uniq
+ } >&2
+ exit 2
+elif test $(echo "$html" | grep -c 'Abfallkalender für') -gt 1 &&
+ test -z "${ort-}"; then
+ {
+ echo "Error: multiple locations found"
+ echo "$html" |
+ query/jquery/index '.tab span.text,.subheadline' |
+ sed -n '
+ s/[[:space:]]\+/ /g
+ s/'"`printf '\xc2\xa0'`"'//g;# kill unicode non-breaking space
+ s/^Abfallkalender.*[^0-9]\([0-9]\+\)[^(]*(\(.*\))/export ort=\2/p
+ ' | sort | uniq
+ } >&2
+ exit 3
+else
+ result="$(echo "$html" |
+ query/jquery/index '.tab span.text,.subheadline' | {
+ if test -n "${ort-}"; then
+ sed -n "
+ /($ort)/,/^Abfallkalender/{p;b}
+ /($ort)/,\${p;b}
+ "
+ else
+ cat
+ fi
+ } | {
+ grep -v Abfallkalender |
+ sed '
+ s/'"`printf '\xc2\xa0'`"'//g;# kill unicode non-breaking space
+ s/^[A-Z][a-z]\.\([0-9]*\)\.\([0-9]*\)\.\([0-9]*\)$/\3-\2-\1/
+ s/^[0-9].*/ "&T00:00:00.000Z"/
+ $!s/$/,/
+ 1s/^/[\n/
+ $s/$/\n]/
+ '
+ })"
+ if ! echo "$result" | grep .; then
+ {
+ echo "Error: your query had no effect"
+ echo "url=\"$url\""
+ } >&2
+ exit 4
+ fi
+fi
diff --git a/god/meinsack/shack-sack b/god/meinsack/shack-sack
new file mode 100755
index 00000000..9c61aeb5
--- /dev/null
+++ b/god/meinsack/shack-sack
@@ -0,0 +1,8 @@
+#! /bin/sh
+set -euf
+cd $(dirname $(readlink -f $0))
+
+export plz=70327
+export str=Ulmer
+export ort=Wangen
+exec index
diff --git a/god/overlord/announce.mp3 b/god/overlord/announce.mp3
new file mode 100644
index 00000000..23bca769
--- /dev/null
+++ b/god/overlord/announce.mp3
Binary files differ
diff --git a/god/overlord/index b/god/overlord/index
new file mode 100755
index 00000000..d9cae0c2
--- /dev/null
+++ b/god/overlord/index
@@ -0,0 +1,27 @@
+#! /bin/sh
+set -euf
+
+# cd //
+cd $(dirname $(readlink -f $0))/../..
+
+max=70
+step=10
+min=0
+
+# fade-out streams
+for i in `seq $max -$step $min`; do
+ amixer -q -c 0 -D hw:0 sset Front $i%
+ sleep 0.1
+done
+streams/streams stop
+
+amixer -q -c 0 -D hw:0 sset Front $max%
+mplayer god/overlord/announce.mp3 >/dev/null
+../../util/bin/naturalvoices2.sh "$*"
+
+# fade-in streams
+streams/streams start
+for i in `seq $min $step $max`; do
+ sleep 0.1
+ amixer -q -c 0 -D hw:0 sset Front $i%
+done
diff --git a/god/soundboard/README b/god/soundboard/README
new file mode 100644
index 00000000..8fbb8947
--- /dev/null
+++ b/god/soundboard/README
@@ -0,0 +1,5 @@
+# Soundboard
+The basic idea is to use a joystick or gamepad to trigger actions
+
+# config.json
+currently there is only one joystick supported, as well as one pad and buttons
diff --git a/god/soundboard/config.json b/god/soundboard/config.json
new file mode 100644
index 00000000..dbdeb5cb
--- /dev/null
+++ b/god/soundboard/config.json
@@ -0,0 +1,13 @@
+{
+ "direction" : {
+ "up" : "echo pushed up",
+ "down" : "echo pushed down",
+ "left" : "echo pushed left",
+ "right" : "echo pushed right"
+ },
+ "button" : {
+ "1" : "echo 'fuck yeah 1'",
+ "2" : "echo 'fuck jeah 2'",
+ "8" : "echo 'fuck jeah 8'"
+ }
+}
diff --git a/god/soundboard/sound.py b/god/soundboard/sound.py
new file mode 100644
index 00000000..f6564db0
--- /dev/null
+++ b/god/soundboard/sound.py
@@ -0,0 +1,46 @@
+import pygame
+import os
+from pygame import locals
+import json
+CFG_FILE = "config.json"
+cfg = json.load(open(CFG_FILE))
+
+pygame.init()
+pygame.joystick.init()
+try:
+ j = pygame.joystick.Joystick(0)
+ j.init()
+ print 'Enabled joystick: ' + j.get_name()
+except pygame.error:
+ print 'no joystick found.'
+
+
+while 1:
+ for e in pygame.event.get():
+ #print 'event : ' + str(e.type)
+ #print 'data : ' + str(e.dict)
+ if e.type == pygame.locals.JOYAXISMOTION:
+ x, y = j.get_axis(0), j.get_axis(1)
+ if (x > 0):
+ direction = "right"
+ elif(x < 0):
+ direction = "left"
+ if (y > 0):
+ direction = "up"
+ elif(y < 0):
+ direction = "down"
+ if (y == x == 0):
+ pass
+ else:
+ try:
+ os.system(cfg["direction"][direction])
+ except Exception as balls:
+ print "direction not defined?", balls
+
+ elif e.type == pygame.locals.JOYBUTTONDOWN:
+ try:
+ os.system(cfg["button"][str(e.button)])
+ except Exception as balls:
+ print "button not defined: ", balls
+ #elif e.type == pygame.locals.JOYBUTTONUP:
+ # print 'button up', e.joy, e.button
diff --git a/god/streams/.gitignore b/god/streams/.gitignore
new file mode 100644
index 00000000..0d20b648
--- /dev/null
+++ b/god/streams/.gitignore
@@ -0,0 +1 @@
+*.pyc
diff --git a/god/streams/Makefile b/god/streams/Makefile
new file mode 100644
index 00000000..2d0056f4
--- /dev/null
+++ b/god/streams/Makefile
@@ -0,0 +1,16 @@
+INITD = $(shell test -e /etc/rc.d/ && echo /etc/rc.d/ || echo /etc/init.d/)
+streams = $(shell cut -d\ -f2 stream.db)
+
+
+CURRDIR = ${PWD}
+.PHONY: all $(streams)
+local: ../../bin/streams
+
+../../bin/streams:
+ ln -sf $$PWD/bin/streams ../../bin/streams
+all: $(streams)
+ @update-rc.d groove defaults 2>/dev/null || echo "** put groove daemon in DAEMONS in /etc/rc.conf"
+
+$(streams): local
+ @test -L $(INITD)$@ || test ! -e $(INITD)$@ && \
+ ln -n -s -f $$PWD/stream-starter $(INITD)$@ && echo "writing $@ to $(INITD)"
diff --git a/god/streams/README.md b/god/streams/README.md
new file mode 100644
index 00000000..cc763ede
--- /dev/null
+++ b/god/streams/README.md
@@ -0,0 +1,38 @@
+# streams done right(tm)
+
+There are numerous ways to start streams ( make your computer or some server
+output streamed audio). Currently implemented are:
+
+# Streams Modules
+1. pure streams - will start mpd on your local machine
+2. mpdstreams - will use a given mpd server to start a stream
+3. relaxxstreams - will contact the relaxxplayer (mpd front-end) if the direct
+ connection to the mpd is prohibited by firewall rules
+# Database
+Currently there are a number of possible streams saved in the database files
+which contain of a link, a space, and the name of the stream. the database
+can be found in db/ .
+
+Currently there are two kinds of databases:
+1. streams.db - contains links to playlists of streams
+2. direct.db - contains links directly to the stream, not the playlist
+
+to generate direct.db from a list of playlists use the helper/* scripts
+
+# initscripts
+
+the most convenient way to start streams is to use stream-starter which is
+a script which, when symlinked with a name of a stream, invokes the streams
+tool with its own name as parameter.
+
+An example:
+
+ ln -s /krebs/god/streams/bin/stream-starter /etc/init.d/groove
+ /etc/init.d/groove start
+
+# Remarks
+deepmix,groovesalad and radiotux are now init.d scrips which can be
+started and stopped.
+
+scripts are dumped into /etc/init.d and groovesalad will be set as
+default via update-rc.d
diff --git a/god/streams/bin/helper/streamfind b/god/streams/bin/helper/streamfind
new file mode 100644
index 00000000..32b84a4e
--- /dev/null
+++ b/god/streams/bin/helper/streamfind
@@ -0,0 +1,10 @@
+#!/bin/sh
+cat stream.db | while read url name;do
+ curl $url --max-time 1 2>/dev/null| sed -n 's/[fF]ile[0-9]=\(.*\)/\1/p' > "streamfinder/$name"
+ if [ "x`cat \"streamfinder/$name\"`" == "x" ];then
+ rm "streamfinder/$name"
+ echo "$name empty or not a stream"
+ else
+ echo "wrote $name"
+ fi
+done
diff --git a/god/streams/bin/helper/streamwrite b/god/streams/bin/helper/streamwrite
new file mode 100644
index 00000000..a10fb155
--- /dev/null
+++ b/god/streams/bin/helper/streamwrite
@@ -0,0 +1,6 @@
+for i in `ls -1 streamfinder/`;
+do
+ for j in `cat "$i"`;do
+ echo "$j $i" >> direct.db
+ done
+done
diff --git a/god/streams/bin/mpdstreams b/god/streams/bin/mpdstreams
new file mode 100755
index 00000000..a2a5f77c
--- /dev/null
+++ b/god/streams/bin/mpdstreams
@@ -0,0 +1,113 @@
+#!/usr/bin/python2
+
+# this version cannot tell if a stream is running or just ordinary music
+import os
+import sys
+from subprocess import Popen, PIPE
+
+os.chdir(os.path.dirname(os.path.realpath(sys.argv[0])))
+pidfile = "/tmp/krebs.stream.pid"
+host="lounge.mpd.shack"
+url_file = os.environ.get("STREAM_DB", "../db/stream.db")
+urls = []
+for line in open(url_file):
+ urls.append(line.split())
+#print urls
+mybin = sys.argv[0]
+cmd = sys.argv[1] if len(sys.argv) > 1 else "you-are-made-of-stupid"
+stream = sys.argv[2] if len(sys.argv) == 3 else "groove"
+pipe_silent = open("/dev/null","w")
+
+def urlForStream(stream):
+ for url, s in urls:
+ if s == stream:
+ return url
+
+def streamForUrl(url):
+ for u, s in urls:
+ if u == url:
+ return stream
+
+def startStream(stream_url):
+ Popen(["mpc","--host",host,"crossfade","5"],
+ stdout=pipe_silent,stderr=pipe_silent)
+ Popen(["mpc","--host",host,"repeat","yes"],
+ stdout=pipe_silent,stderr=pipe_silent)
+ Popen(["mpc","--host",host,"clear"],
+ stdout=pipe_silent,stderr=pipe_silent)
+ Popen(["mpc","--host",host,"add",stream_url],
+ stdout=pipe_silent,stderr=pipe_silent).wait()
+ Popen(["mpc","--host",host,"play"],
+ stdout=pipe_silent,stderr=pipe_silent)
+
+def start(stream):
+ ret = running()
+ if ret:
+ print "!! Stream `%s` already running !" % \
+ (ret)
+ else:
+ startStream(urlForStream(stream))
+ print "** Starting `%s`."% stream
+
+
+def stop():
+ ret = running()
+ if not ret:
+ print "!! No Stream running!"
+ else:
+ print "** Stopping `%s`" % ret
+ Popen(["mpc","--host",host,"stop"],
+ stdout=pipe_silent,stderr=pipe_silent)
+
+
+def running():
+ try:
+ (out,err) = Popen(["mpc","--host",host,"current"],stdout=PIPE,stderr=PIPE).communicate()
+ out = out.rstrip()
+ return out
+ except Exception as e:
+ return ""
+
+
+def slist():
+ for url, name in urls:
+ print "%s : %s" % (name, url)
+
+
+def shorthelp():
+ print "start|stop|restart|status|list [audio stream]"
+
+
+def longhelp():
+ print "Usage: %s" % mybin,
+ shorthelp
+ print """ get all available streams with '/%(fil)s list'
+ Examples:
+ %(fil)s list
+ %(fil)s start groove
+ %(fil)s switch deepmix
+ %(fil)s status
+ %(fil)s stop""" % {'fil': mybin}
+
+if cmd == "start":
+ start(stream)
+elif cmd == "stop":
+ stop()
+elif cmd == "switch" or cmd == "restart":
+ stop()
+ start(stream)
+elif cmd == "status":
+ ret = running()
+ if not ret:
+ print "** nothing running" # , e
+ else:
+ print "Now Playing: %s" % ret
+elif cmd == "list":
+ slist()
+elif cmd == "--help":
+ longhelp()
+elif cmd == "-h":
+ shorthelp()
+else:
+ print "unknown command `%s`" % cmd
+ print "try `%s` --help" % os.path.basename(mybin)
diff --git a/god/streams/bin/relaxxapi.py b/god/streams/bin/relaxxapi.py
new file mode 100755
index 00000000..38650907
--- /dev/null
+++ b/god/streams/bin/relaxxapi.py
@@ -0,0 +1,138 @@
+#!/usr/bin/python
+import json
+from urllib.parse import quote
+class relaxx:
+ r = ""
+ def __init__(self,relaxxurl="http://lounge.mpd.shack/"):
+ self.baseurl=relaxxurl
+
+ import requests
+ self.r = requests.session()
+ ret = self.r.get(relaxxurl) # grab cookie
+ def _status(self,value=0,data="json=null"):
+ """
+ value is some weird current playlist value, 0 seems to work
+ data is url encoded kv-store
+ """
+ # TODO get the current playlist value
+ url=self.baseurl+"include/controller-ping.php?value=%s"%value
+ return self.r.post(url,data="json=null").text
+
+ def _playlist(self,action,value="",json="null",method="get"):
+ """
+ This function is the interface to the controller-playlist api
+ use it if you dare
+ Possible actions:
+ clear
+ addSong url_encoded_path
+ moveSong 1:2
+ getPlaylists
+ getPlaylistInfo 1
+ listPlaylistInfo
+ as everything seems to be a get request, the method is set to GET as
+ default
+ """
+ url=self.baseurl+"include/controller-playlist.php?action=%s&value=%s&json=%s"%(action,value,json)
+ if method== "get":
+ return self.r.get(url).text
+ elif method == "post":
+ return r.post(url).text
+ else:
+ raise Exception("unknown method %s")
+
+ def _playback(self,action,value="",json="null",method="get"):
+ """
+ play
+ continue
+ stop
+ setCrossfade
+ """
+ url=self.baseurl+"include/controller-playback.php?action=%s&value=%s&json=%s"%(action,value,json)
+ # probably obsolete because everything is "get"
+ if method== "get":
+ return self.r.get(url).text
+ elif method == "post":
+ return r.post(url).text
+ else:
+ raise Exception("unknown method %s")
+
+ def _radio(self,playlist=""):
+ """
+ both, post and get the url seem to work here...
+ """
+ url=self.baseurl+"include/controller-netradio.php?playlist=%s"%quote(playlist)
+ return self.r.get(url).text
+
+ def add_radio(self,playlist=""):
+ print(playlist)
+ print(self._radio(playlist))
+ print(json.loads(self._radio(playlist))) #[1:-1])["url"]
+ resolved_url= json.loads(self._radio(playlist)[1:-1])["url"]
+ self.add_song(resolved_url)
+
+ def add_song(self,path):
+ return self._playlist("addSong",path)
+
+ def get_first(self):
+ return json.loads(self._playlist("getPlaylistInfo","0",""))[0]
+
+ def get_last(self):
+ return json.loads(self._playlist("getPlaylistInfo","0",""))[-1]
+
+ def clear(self):
+ return self._playlist("clear")
+
+ def crossfade(self,ident="0"):
+ """
+ default: no crossfade
+ """
+ return self._playback("setCrossfade",ident)
+
+ def repeat(self,ident="1"):
+ """
+ default: do repeat
+ """
+ return self._playback("repeat",ident)
+
+ def play(self,ident):
+ return self._playback("play",ident)
+
+ def stop(self):
+ return self._playback("stop")
+
+ def cont(self,ident):
+ return self._playback("continue",ident)
+
+ def play_first(self):
+ return self.play(self.get_first()["Id"])
+
+ def play_last(self):
+ return self.play(self.get_last()["Id"])
+
+ def state(self):
+ return json.loads(self._status())
+
+ def is_running(self):
+ return self.state()["status"]["state"] == "play"
+
+ def playing(self):
+ """ returns "" if not running
+ """
+ state = self.state()
+ if state["status"]["state"] == "play" :
+ ident = state["status"]["song"]
+ current = state["playlist"]["file"][int(ident)]
+ return current.get("Name",current.get("Artist","unkown artist")) + " - " + current.get("Title","unknown title")
+ else:
+ return ""
+
+if __name__ == "__main__":
+ r = relaxx()
+ print(r.state())
+ print(r.playing())
+ print(r.add_radio("http://deluxetelevision.com/livestreams/radio/DELUXE_RADIO.pls"))
+ #print r.clear()
+ #print r.add_radio("http://somafm.com/lush.pls")
+ #print r.get_first()["Id"]
+ #print r.play_first()
+ #print r.add_radio("http://somafm.com/lush.pls")
diff --git a/god/streams/bin/relaxxstreams b/god/streams/bin/relaxxstreams
new file mode 100755
index 00000000..75b03df1
--- /dev/null
+++ b/god/streams/bin/relaxxstreams
@@ -0,0 +1,107 @@
+#!/usr/bin/python
+
+# this version cannot tell if a stream is running or just ordinary music
+import os
+import sys
+import json
+from urllib.parse import quote
+from relaxxapi import relaxx
+
+try:
+ import requests
+except:
+ print ("you are missing the `requests` dependency, please do a `pip install requests`")
+from subprocess import Popen, PIPE
+
+os.chdir(os.path.dirname(os.path.realpath(sys.argv[0])))
+pidfile = "/tmp/krebs.stream.pid"
+baseurl="http://lounge.mpd.shack/"
+url=baseurl+"include/controller-playlist.php?action=%s&value=%s&json=%s"
+url_file = os.environ.get("STREAM_DB", "../db/direct.db")
+urls = []
+
+for line in open(url_file):
+ urls.append(line.split())
+#print urls
+mybin = sys.argv[0]
+cmd = sys.argv[1] if len(sys.argv) > 1 else "you-are-made-of-stupid"
+stream = sys.argv[2] if len(sys.argv) == 3 else "groove"
+pipe_silent = open("/dev/null","w")
+api = relaxx(baseurl)
+
+def urlForStream(stream):
+ for url, s in urls:
+ if s == stream:
+ return url
+
+def streamForUrl(url):
+ for u, s in urls:
+ if u == url:
+ return stream
+
+def startStream(stream_url):
+ print(api.crossfade("5"))
+ print(api.repeat("1"))
+ print(api.clear())
+ print(api.add_song(stream_url))
+ print(api.play_first())
+
+def start(stream):
+ ret = api.playing()
+ if ret:
+ print("!! Stream `%s` already running !" % \
+ (ret))
+ else:
+ startStream(urlForStream(stream))
+ print("** Starting `%s`."% stream)
+
+
+def stop():
+ ret = api.playing()
+ if not ret:
+ print("!! No Stream running!")
+ else:
+ print("** Stopping `%s`" % ret)
+ api.stop()
+
+def slist():
+ for url, name in urls:
+ print("%s : %s" % (name, url))
+
+def shorthelp():
+ print("start|stop|restart|status|list [audio stream]")
+
+
+def longhelp():
+ print("Usage: %s" % mybin)
+ shorthelp
+ print(""" get all available streams with '/%(fil)s list'
+ Examples:
+ %(fil)s list
+ %(fil)s start groove
+ %(fil)s switch deepmix
+ %(fil)s status
+ %(fil)s stop""" % {'fil': mybin})
+
+if cmd == "start":
+ start(stream)
+elif cmd == "stop":
+ stop()
+elif cmd == "switch" or cmd == "restart":
+ stop()
+ start(stream)
+elif cmd == "status":
+ ret = api.playing()
+ if not ret:
+ print("** nothing running") # , e
+ else:
+ print("Now Playing: %s" % ret)
+elif cmd == "list":
+ slist()
+elif cmd == "--help":
+ longhelp()
+elif cmd == "-h":
+ shorthelp()
+else:
+ print("unknown command `%s`" % cmd)
+ print("try `%s` --help" % os.path.basename(mybin))
diff --git a/god/streams/bin/stream-starter b/god/streams/bin/stream-starter
new file mode 100755
index 00000000..4d3a406f
--- /dev/null
+++ b/god/streams/bin/stream-starter
@@ -0,0 +1,19 @@
+#! /bin/bash
+set -euf
+HERE=$(dirname $(readlink -f $0))
+STR=$HERE/streams
+NAME=`basename $0`
+case "$1" in
+ start)
+ $STR start $NAME
+ ;;
+ stop)
+ $STR stop
+ ;;
+ restart)
+ $STR restart $NAME
+ ;;
+ *)
+ echo "aidsballs"
+ ;;
+esac
diff --git a/god/streams/bin/streams b/god/streams/bin/streams
new file mode 100755
index 00000000..8e00a733
--- /dev/null
+++ b/god/streams/bin/streams
@@ -0,0 +1,116 @@
+#!/usr/bin/python2
+import os
+import sys
+from subprocess import Popen, PIPE
+
+os.chdir(os.path.dirname(os.path.realpath(sys.argv[0])))
+pidfile = "/tmp/krebs.stream.pid"
+url_file = os.environ.get("STREAM_DB", "../db/stream.db")
+urls = []
+#urls = [ url,f for (url,f) in open(url_file).readline() ]
+for line in open(url_file):
+ urls.append(line.split())
+#print urls
+mybin = sys.argv[0]
+cmd = sys.argv[1] if len(sys.argv) > 1 else "you-are-made-of-stupid"
+stream = sys.argv[2] if len(sys.argv) == 3 else "groove"
+
+
+def check_pid(pid):
+ """ Check For the existence of a unix pid. """
+ try:
+ os.kill(pid, 0)
+ except OSError:
+ return False
+ else:
+ return True
+
+
+def urlForStream(stream):
+ for url, s in urls:
+ if s == stream:
+ return url
+
+
+def start(stream):
+ ret = running()
+ if ret:
+ print "!! Stream `%s` already running with pid `%s` !" % \
+ (ret[1], ret[0])
+ else:
+ pipe_silent = open('/dev/null', 'w')
+ url = urlForStream(stream)
+ mpl = Popen(["mplayer", url],
+ stdout=pipe_silent, stderr=pipe_silent).pid
+ print >> open(pidfile, "w+"), "%d %s" % (mpl, stream)
+
+
+def stop():
+ ret = running()
+ if not ret:
+ print "!! No Stream running!"
+ else:
+ pid, name = ret
+ print "** Killing `%s` with pid %s" % (name, pid)
+ os.kill(int(pid), 15)
+ #if check_pid(int(pid)):
+ # print "!! trying harder to kill process"
+ # os.kill(int(pid), 9)
+ os.remove(pidfile)
+
+
+def running():
+ try:
+ pid, currstream = open(pidfile).read().split()
+ if check_pid(int(pid)):
+ return (pid, currstream)
+ else:
+ print "!! removing stale pidfile"
+ os.remove(pidfile)
+ raise Exception("Pidfile stale")
+ except Exception as e:
+ return ()
+
+
+def slist():
+ for url, name in urls:
+ print "%s : %s" % (name, url)
+
+
+def shorthelp():
+ print "start|stop|restart|status|list [audio stream]"
+
+
+def longhelp():
+ print "Usage: %s" % mybin,
+ shorthelp
+ print """ get all available streams with '/%(fil)s list'
+ Examples:
+ %(fil)s list
+ %(fil)s start groove
+ %(fil)s switch deepmix
+ %(fil)s status
+ %(fil)s stop""" % {'fil': mybin}
+
+if cmd == "start":
+ start(stream)
+elif cmd == "stop":
+ stop()
+elif cmd == "switch" or cmd == "restart":
+ stop()
+ start(stream)
+elif cmd == "status":
+ ret = running()
+ if not ret:
+ print "** no stream running" # , e
+ else:
+ print "%s is running(%s)" % (ret[1], urlForStream(ret[1]))
+elif cmd == "list":
+ slist()
+elif cmd == "--help":
+ longhelp()
+elif cmd == "-h":
+ shorthelp()
+else:
+ print "unknown command `%s`" % cmd
+ print "try `%s` --help" % os.path.basename(mybin)
diff --git a/god/streams/db/direct.db b/god/streams/db/direct.db
new file mode 100644
index 00000000..02da4608
--- /dev/null
+++ b/god/streams/db/direct.db
@@ -0,0 +1,78 @@
+http://ice.somafm.com/groovesalad groove
+http://ice.somafm.com/u80s underground80s
+http://de.scenemusic.net/necta192.mp3 demoscene
+http://radio.krautchan.net:8000/radio.mp3 radiofreieskrautchan
+http://stream2.jungletrain.net:8000 jungletrain
+http://streams.xenim.de/radiotux.ogg radiotux
+http://localhost:8000/stream.ogg icecast
+http://localhost:8000/shice.ogg shice
+http://sfstream1.somafm.com:9090 480min
+http://mp1.somafm.com:8080 480min
+http://ice.somafm.com/480min 480min
+http://shouthostdirect11.streams.bassdrive.com:8398 bassdrive
+http://sanjose1.serverhostingcenter.streams.bassdrive.com:8600 bassdrive
+http://arces.net.streams.bassdrive.com:8000 bassdrive
+http://amsterdam1.serverhostingcenter.streams.bassdrive.com:8000 bassdrive
+http://shouthostdirect10.streams.bassdrive.com:8200 bassdrive
+http://shouthostdirect13.streams.bassdrive.com:8202 bassdrive
+http://czech1.serverhostingcenter.streams.bassdrive.com:8200 bassdrive
+http://shouthostdirect12.streams.bassdrive.com:8200 bassdrive
+http://beezle.streams.bassdrive.com:8765 bassdrive
+http://sfstream1.somafm.com:8384 beatblender
+http://sfstream1.somafm.com:8388 beatblender
+http://ice.somafm.com/beatblender beatblender
+http://sfstream1.somafm.com:8040 blackrockfm
+http://ice.somafm.com/brfm blackrockfm
+http://sfstream1.somafm.com:7000 bootliquor
+http://207.200.96.230:8014 bootliquor
+http://mp1.somafm.com:9004 bootliquor
+http://ice.somafm.com/bootliquor bootliquor
+http://sfstream1.somafm.com:8062 cliqhop
+http://mp2.somafm.com:2668 cliqhop
+http://ice.somafm.com/cliqhop cliqhop
+http://sfstream1.somafm.com:8700 covers
+http://ice.somafm.com/covers covers
+http://85.21.79.93:8040 deepmix
+http://212.7.194.133:8128 deepmix
+http://85.21.79.31:7128 deepmix
+http://69.163.134.109:8128 deepmix
+http://194.183.224.59:8128 deepmix
+http://radio.cdn.deluxemusic.tv/deluxemusic.tv/radio_web/mp3 deluxe
+http://sfstream1.somafm.com:8900 digitalis
+http://ice.somafm.com/digitalis digitalis
+http://205.234.246.42:8300 doomed
+http://sfstream1.somafm.com:8300 doomed
+http://ice.somafm.com/doomed doomed
+http://streamer-dtc-aa01.somafm.com:80/stream/1032 dronezone
+http://sfstream1.somafm.com:8014 dronezone
+http://mp2.somafm.com:8002 dronezone
+http://ice.somafm.com/dronezone dronezone
+http://sfstream1.somafm.com:8500 illstreet
+http://ice.somafm.com/illstreet illstreet
+http://sfstream1.somafm.com:8090 indypop
+http://ice.somafm.com/indiepop indypop
+http://sfstream1.somafm.com:8800 lush
+http://mp1.somafm.com:8800 lush
+http://ice.somafm.com/lush lush
+http://sfstream1.somafm.com:2020 missioncontrol
+http://mp1.somafm.com:2020 missioncontrol
+http://ice.somafm.com/missioncontrol missioncontrol
+http://sfstream1.somafm.com:2200 poptron
+http://ice.somafm.com/poptron poptron
+http://sfstream1.somafm.com:8002 secretagent
+http://mp2.somafm.com:9016 secretagent
+http://ice.somafm.com/secretagent secretagent
+http://sfstream1.somafm.com:8600 sonicuniverse
+http://mp2.somafm.com:8600 sonicuniverse
+http://ice.somafm.com/sonicuniverse sonicuniverse
+http://mp2.somafm.com:5400 southbysoma
+http://ice.somafm.com/sxfm southbysoma
+http://sfstream1.somafm.com:8000 spacestationsoma
+http://mp2.somafm.com:2666 spacestationsoma
+http://ice.somafm.com/spacestation spacestationsoma
+http://sfstream1.somafm.com:8850 suburbsofgoa
+http://ice.somafm.com/suburbsofgoa suburbsofgoa
+http://205.188.215.230:8010 tagstrip
+http://ice.somafm.com/tags tagstrip
+http://sfstream1.somafm.com:8880 underground80s
+http://ice.somafm.com/u80s underground80s
diff --git a/god/streams/db/stream.db b/god/streams/db/stream.db
new file mode 100644
index 00000000..1d9b51bc
--- /dev/null
+++ b/god/streams/db/stream.db
@@ -0,0 +1,35 @@
+http://deepmix.ru/deepmix128.pls deepmix
+http://streams.xenim.de/radiotux.ogg radiotux
+http://bassdrive.com/v2/streams/BassDrive.pls bassdrive
+http://localhost:8000/stream.ogg icecast
+http://localhost:8000/shice.ogg shice
+http://stream2.jungletrain.net:8000 jungletrain
+http://playlist.tormentedradio.com/tormentedradio.pls tormented
+http://filebitch.shack:8000 mpd
+http://radio.krautchan.net:8000/radio.mp3 radiofreieskrautchan
+http://nl1.streamhosting.ch:80 lounge
+http://deluxetelevision.com/livestreams/radio/DELUXE_RADIO.pls deluxe
+http://livestream.radiodarmstadt.de:8000 darmstadt
+http://somafm.com/sxfm.pls southbysoma
+http://somafm.com/indiepop.pls indypop
+http://somafm.com/poptron.pls poptron
+http://somafm.com/480min.pls 480min
+http://somafm.com/u80s.pls underground80s
+http://somafm.com/secretagent.pls secretagent
+http://somafm.com/suburbsofgoa.pls suburbsofgoa
+http://somafm.com/beatblender.pls beatblender
+http://somafm.com/missioncontrol.pls missioncontrol
+http://somafm.com/dronezone.pls dronezone
+http://somafm.com/cliqhop.pls cliqhop
+http://somafm.com/spacestation.pls spacestationsoma
+http://somafm.com/bootliquor.pls bootliquor
+http://somafm.com/covers.pls covers
+http://somafm.com/illstreet.pls illstreet
+http://somafm.com/tags.pls tagstrip
+http://somafm.com/groovesalad.pls groove
+http://somafm.com/lush.pls lush
+http://somafm.com/digitalis.pls digitalis
+http://somafm.com/sonicuniverse.pls sonicuniverse
+http://somafm.com/doomed.pls doomed
+http://somafm.com/brfm.pls blackrockfm
+http://de.scenemusic.net/necta192.mp3 demoscene
diff --git a/god/streams/doc/relaxxplayer.api b/god/streams/doc/relaxxplayer.api
new file mode 100644
index 00000000..50d25af2
--- /dev/null
+++ b/god/streams/doc/relaxxplayer.api
@@ -0,0 +1,13 @@
+http://lounge.mpd.shack/include/controller-playback.php?action=setCrossfade&value=5&json=null
+http://lounge.mpd.shack/include/controller-playback.php?action=repeat&value=1&json=null
+http://lounge.mpd.shack/include/controller-playlist.php?action=clear&value=&json=null
+http://lounge.mpd.shack/include/controller-playlist.php?action=addSong&value=http%3A%2F%2F212.7.194.133%3A8128&json=null
+http://lounge.mpd.shack/include/controller-playlist.php?action=getPlaylistInfo&value=0&json=
+[{
+ "file": "http:\/\/212.7.194.133:8128",
+ "Title": "Max & Dima - Sapovnela Studio: Batut",
+ "Name": "Deep Mix Moscow Radio: deepmix.ru",
+ "Pos": "0",
+ "Id": "606"
+}]
+http://lounge.mpd.shack/include/controller-playlist.php?action=continue&value={Id}&json=null
diff --git a/god/streichelzoo/README b/god/streichelzoo/README
new file mode 100644
index 00000000..f93eb8c5
--- /dev/null
+++ b/god/streichelzoo/README
@@ -0,0 +1,2 @@
+Streichelzoo is a libavg based touchscreen interface for shackspace interface controll and is currently under development.
+As you already read it still is under development and not yet working.
diff --git a/god/streichelzoo/button_down.png b/god/streichelzoo/button_down.png
new file mode 100644
index 00000000..f952aabf
--- /dev/null
+++ b/god/streichelzoo/button_down.png
Binary files differ
diff --git a/god/streichelzoo/button_up.png b/god/streichelzoo/button_up.png
new file mode 100644
index 00000000..71253b23
--- /dev/null
+++ b/god/streichelzoo/button_up.png
Binary files differ
diff --git a/god/streichelzoo/main.avg b/god/streichelzoo/main.avg
new file mode 100644
index 00000000..2a67a881
--- /dev/null
+++ b/god/streichelzoo/main.avg
@@ -0,0 +1,31 @@
+<?xml version="1.0"?>
+<avg width="1024" height="768" active="True" >
+ <div id="mainwindow" active="True">
+ <div id="welcometext" x="0" y="70" width="1024" active="True">
+ <words x="1024" y="10"
+ text="Willkommen im shackspace"
+ font="arial" fontsize="100"/>
+ <words x="1024" y="10"
+ text="Welcome to shackspace"
+ font="arial" fontsize="100"/>
+ <words x="1024" y="10"
+ text="Benevudi a shackspace"
+ font="arial" fontsize="100"/>
+ <words x="1024" y="10"
+ text="Bienvenue à la shackspace"
+ font="arial" fontsize="100"/>
+ </div>
+ <image id="light" href="button_up.png" x="50" y="250"/>
+ <image id="roster" href="button_up.png" x="50" y="400"/>
+ <image id="blank" href="button_up.png" x="50" y="550"/>
+ <words id="txt_light" x="175" y="250" fontsize="80" variant="bold" text="lightcontrol"/>
+ <words id="txt_roster" x="175" y="400" fontsize="80" variant="bold" text="current roster"/>
+ <words id="txt_blank" x="175" y="550" fontsize="80" variant="bold" text="blank"/>
+ </div>
+ <div id="lightcontrol" active="False" width="1024" height="768">
+ <div id="segment1" height="200" width="400" x="50" y="50" active="False">
+ <words id="test" text="test"/>
+ </div>
+ </div>
+ <image id="logo" href="shack.png" x="880" y="460" />
+</avg>
diff --git a/god/streichelzoo/streichelzoo.py b/god/streichelzoo/streichelzoo.py
new file mode 100644
index 00000000..25b83964
--- /dev/null
+++ b/god/streichelzoo/streichelzoo.py
@@ -0,0 +1,31 @@
+#! /bin/python
+from libavg import *
+
+#This function is a slightly modified version of cmiles code from dev.c-base.org/c_leuse/c_leuse.git
+#It takes a bunch of word nodes an slides them from left to right just as the HTML <marquee> function
+line = 16
+def welcomeScroll():
+ global line
+ line += 1
+ textNode = player.getElementByID("welcometext")
+ if line >= textNode.getNumChildren():
+ line = 0
+ node = textNode.getChild(line)
+ LinearAnim(node, "x", 11500, 1200, -1400, -1000, None, welcomeScroll).start()
+#
+def start_lightcontrol(event):
+ mainwindow = player.getElementByID("mainwindow")
+ lightcontrolwindow = player.getElementByID("lightcontrol")
+ mainwindow.active =False
+ lightcontrolwindow.active =True
+
+
+player = avg.Player.get()
+player.loadFile("main.avg")
+
+player.setTimeout(10, welcomeScroll)
+player.getElementByID("light").setEventHandler(avg.CURSORDOWN, avg.MOUSE, start_lightcontrol)
+#player.getElementByID("roster").setEventHandler(avg.CURSORDOWN, avg.MOUSE, buttondown)
+#player.getElementByID("blank").setEventHandler(avg.CURSORDOWN, avg.MOUSE, buttondown)
+player.play()
+
diff --git a/god/strom-decoder/main.py b/god/strom-decoder/main.py
new file mode 100644
index 00000000..e1a85d02
--- /dev/null
+++ b/god/strom-decoder/main.py
@@ -0,0 +1,50 @@
+#! /usr/bin/python
+# -*- coding utf-8 -*-
+
+from __future__ import division
+
+import re
+
+
+class Reader(object):
+ _re = re.compile(r'^(?P<field>\d-\d:\d+\.\d+\.\d+\*\d+)\((?P<value>\S+?)(?:\*[VAW])?\)$')
+
+ def _convert_periode(value):
+ return int(value, 16) / 100
+
+ fields = {
+ '1-0:1.8.0*255': ('overall', float),
+ '1-0:31.7.0*255': ('l1_strom', float),
+ '1-0:32.7.0*255': ('l1_spannung', float),
+ '1-0:51.7.0*255': ('l2_strom', float),
+ '1-0:52.7.0*255': ('l2_spannung', float),
+ '1-0:71.7.0*255': ('l3_strom', float),
+ '1-0:72.7.0*255': ('l3_spannung', float),
+ '1-0:96.50.0*1': ('periode', _convert_periode),
+ }
+
+ def __init__(self, f):
+ self._file = f
+
+ def __iter__(self):
+ data = {}
+ for line in self._file:
+ line = line.strip()
+ if line == '!':
+ yield data
+ data = {}
+ continue
+ r = self._re.match(line)
+ if not r:
+ continue
+ field = self.fields.get(r.group('field'))
+ if field:
+ data[field[0]] = field[1](r.group('value'))
+ #uncomment to print unmapped values
+ #else:
+ # print r.groups()
+
+
+data_file = open('testdata')
+for data in Reader(data_file):
+ print data
diff --git a/god/strom-decoder/testdata b/god/strom-decoder/testdata
new file mode 100644
index 00000000..c4db6b5d
--- /dev/null
+++ b/god/strom-decoder/testdata
@@ -0,0 +1,24 @@
+/HAG5eHZ010C_IEnBWA02
+
+1-0:0.0.0*255(20745965)
+1-0:1.8.0*255(011107.1314)
+1-0:96.5.5*255(82)
+0-0:96.1.255*255(0000120120)
+1-0:32.7.0*255(233.90*V)
+1-0:52.7.0*255(233.07*V)
+1-0:72.7.0*255(236.50*V)
+1-0:31.7.0*255(004.99*A)
+1-0:51.7.0*255(005.02*A)
+1-0:71.7.0*255(007.14*A)
+1-0:21.7.0*255(+00984*W)
+1-0:41.7.0*255(+00966*W)
+1-0:61.7.0*255(+01640*W)
+1-0:96.50.0*0(EF)
+1-0:96.50.0*1(07CE)
+1-0:96.50.0*2(10)
+1-0:96.50.0*3(0B)
+1-0:96.50.0*4(28)
+1-0:96.50.0*5(1D)
+1-0:96.50.0*6(003D381B260A16F1F6FE560200009F80)
+1-0:96.50.0*7(00)
+!
diff --git a/god/strom-decoder/testdatacomment b/god/strom-decoder/testdatacomment
new file mode 100644
index 00000000..e453b98b
--- /dev/null
+++ b/god/strom-decoder/testdatacomment
@@ -0,0 +1,24 @@
+/HAG5eHZ010C_IEnBWA02
+
+1-0:0.0.0*255(20745965) #Eigentumsnummer
+1-0:1.8.0*255(011107.1314) #Zählerstand Bezug
+1-0:96.5.5*255(82) #Zählerstand Lieferg
+0-0:96.1.255*255(0000120120) #Status
+1-0:32.7.0*255(233.90*V) #Spannung L1
+1-0:52.7.0*255(233.07*V) #Spannung L2
+1-0:72.7.0*255(236.50*V) #Spannung L3
+1-0:31.7.0*255(004.99*A) #Strom L1
+1-0:51.7.0*255(005.02*A) #Strom L2
+1-0:71.7.0*255(007.14*A) #Strom L3
+1-0:21.7.0*255(+00984*W) #Leistung L1
+1-0:41.7.0*255(+00966*W) #Leistung L2
+1-0:61.7.0*255(+01640*W) #Leistung L3
+1-0:96.50.0*0(EF) #Netzstatus
+1-0:96.50.0*1(07CE) #Netzperiode (1/100ms)
+1-0:96.50.0*2(10) #aktuelle Chiptemp. Zähler (hex, in °C)
+1-0:96.50.0*3(0B) #min Chiptemp
+1-0:96.50.0*4(28) #gemittelte Chiptemp
+1-0:96.50.0*5(1D) #max. Chiptemp.
+1-0:96.50.0*6(003D381B260A16F1F6FE560200009F80) #Kontrollnummer
+1-0:96.50.0*7(00) #Diagnose
+! #ENTE
diff --git a/god/twinter/init.sh b/god/twinter/init.sh
new file mode 100644
index 00000000..b9cd1f46
--- /dev/null
+++ b/god/twinter/init.sh
@@ -0,0 +1,5 @@
+#!/bin/sh
+cd $(dirname $(readlink -f $0))
+while sleep 120 ;do
+ python init.py
+done
diff --git a/god/twinter/init_stripped.py b/god/twinter/init_stripped.py
new file mode 100644
index 00000000..79550158
--- /dev/null
+++ b/god/twinter/init_stripped.py
@@ -0,0 +1,40 @@
+#!/usr/bin/env python
+import os.path
+import sys
+import tweepy
+import re
+from socket import *
+CONSUMER_KEY = ''
+CONSUMER_SECRET = ''
+ACCESS_KEY= ''
+ACCESS_SECRET = ''
+printer = ""
+
+auth = tweepy.OAuthHandler(CONSUMER_KEY, CONSUMER_SECRET)
+auth.set_access_token(ACCESS_KEY, ACCESS_SECRET)
+api = tweepy.API(auth)
+mention = api.mentions()[0]
+mention_stripped =re.sub(r'[^\w _|@\[\]{}()<>:;!#$%^&+=-]+','',
+ mention.text.replace("@shacktwinter","").lstrip().rstrip())[:32]
+f = open(os.path.dirname(os.path.abspath(sys.argv[0]))+"/msg_file","r+")
+last = f.read()
+
+if last == mention_stripped:
+ print "received old message"
+ sys.exit(23)
+else:
+ print "received new message: %s" % mention_stripped
+ s = socket(AF_INET, SOCK_STREAM)
+ send_message = \
+ '\x1b%%-12345X@PJL JOB\n@PJL RDYMSG DISPLAY="%s"\n@PJL EOJ\n\x1b%%-12345X' % (mention_stripped, )
+ s.connect((printer, 9100))
+ s.send(send_message)
+ s.close()
+ f.seek(0)
+ f.truncate(0)
+ f.write(mention_stripped)
+ f.close()
+ if not mention.user.following:
+ mention.user.follow()
+ api.update_status("@%s i appreciate your message '%s' for twinter! Ready Message updated." %
+ (mention.user.screen_name,mention_stripped.upper()),in_reply_to_status_id=mention.id)
diff --git a/god/twinter/supervisor.d/twinter.conf b/god/twinter/supervisor.d/twinter.conf
new file mode 100644
index 00000000..5f5c97ea
--- /dev/null
+++ b/god/twinter/supervisor.d/twinter.conf
@@ -0,0 +1,5 @@
+[program:twinter]
+command=/bin/sh /krebs/god/twinter/init.sh
+directory=/krebs/god/twinter/
+user=nobody
+autorestart=true
diff --git a/god/uino/morse/morse.pde b/god/uino/morse/morse.pde
new file mode 100644
index 00000000..685f5092
--- /dev/null
+++ b/god/uino/morse/morse.pde
@@ -0,0 +1,164 @@
+#include <SoftwareSerial.h>
+
+/*
+ Implementes the Morse algorithm for a simple speaker
+
+ @author Felix
+ @date 07.05.2011
+ */
+int inByte = 0;
+int i = 0;
+int j = 0;
+int char_avail = 0;
+
+/* You can touch this: */
+#define DIT_DELAY 50
+
+
+/* But you cannot touch this: */
+#define WORD_DELAY (DIT_DELAY * 7)
+#define DIT_CYCLES (DIT_DELAY/2)
+#define CHAR_DELAY (DIT_DELAY * 3)
+
+#define dsym() delay(DIT_DELAY);
+#define char_delay() delay(CHAR_DELAY);
+#define word_delay() delay(WORD_DELAY);
+
+
+static char* latin_upper[] = {
+ ". -\0" , /* A */
+ "- . . .\0"
+ "- . . .\0",
+ "- . - .\0",
+ "- . .\0",
+ ".\0",
+ ". . - .\0",
+ "- - .\0",
+ ". . . .\0",
+ ". .\0",
+ ". - - -\0",
+ "- . -\0",
+ ". - . .\0",
+ "- -\0",
+ "- .\0",
+ "- - -\0",
+ ". - - .\0",
+ "- - . -\0",
+ ". - .\0",
+ ". . .\0",
+ "-\0",
+ ". . -\0",
+ ". . . -\0",
+ ". - -\0",
+ "- . . -\0",
+ "- . - -\0",
+ "- - . .\0" /* Z */
+};
+static char* numbers[] = {
+ "- - - - -\0", /* 0 */
+ ". - - - -\0",
+ ". . - - -\0",
+ ". . . - -\0",
+ ". . . . -\0",
+ ". . . . .\0",
+ "- . . . .\0",
+ "- - . . .\0",
+ "- - - . .\0",
+ "- - - - .\0" /* 9 */
+};
+
+void setup() {
+ // initialize the digital pin as an output.
+ // Pin 13 has an LED connected on most Arduino boards:
+ pinMode(13, OUTPUT);
+ Serial.begin(9600);
+}
+
+
+
+void loop() {
+ char_avail = Serial.available();
+
+ if(char_avail > 0) {
+ for (j = 0; j < char_avail;j++)
+ {
+ char on_line = Serial.read();
+ to_beep(on_line);
+ char_delay();
+ }
+ }
+}
+
+void to_beep(char data)
+{
+ char* mdata;
+ if (data == ' ')
+ {
+ word_delay();
+ Serial.println("word end");
+ return;
+ }
+ else{
+ if (data == '\n') {
+ word_delay();
+ Serial.println("EOL");
+ return;
+ } else
+ if (data >= 'A' && data <= 'Z' )
+ mdata = latin_upper[data-'A'];
+ else
+ if (data >= 'a' && data <= 'z' )
+ mdata = latin_upper[data-'a'];
+ else
+ if (data >= '0' && data <= '9')
+ mdata = numbers[data-'0'];
+ else
+ {
+ Serial.print(data);
+ Serial.println(": not implemented");
+ return;
+ }
+ }
+
+ Serial.println(mdata);
+ int sdata = strlen( mdata);
+ for( char i = 0; i < sdata; i ++)
+ {
+
+ char token = mdata[i];
+ if (token == '.')
+ {
+ dit();
+ }
+ if (token == '-')
+ {
+ dah();
+ }
+ if (token == ' ')
+ {
+ dsym();
+ }
+
+ }
+
+}
+void dah() {
+ for (int i=0;i<3;i++)
+ {
+ dit();
+ }
+}
+
+void dit(){
+
+ for (int i=0;i<DIT_CYCLES;i++) // Number of DIT Cycles , sleep 2 milliseconds in a cycle
+ {
+ digitalWrite(13, HIGH); // set the LED on
+ delay(1);
+
+ digitalWrite(13, LOW); // set the LED off
+ delay(1);
+ }
+}
+
+
diff --git a/gold/Makefile b/gold/Makefile
new file mode 100644
index 00000000..97ddcf71
--- /dev/null
+++ b/gold/Makefile
@@ -0,0 +1,5 @@
+install:
+ ln -snf $$PWD/mtgox/ticker_text.sh ../bin/mtgox_ticker
+ ln -snf $$PWD/scex/ticker_text.sh ../bin/scex_ticker
+ ln -snf $$PWD/mooncoin/ticker_text.sh ../bin/mooncoin_ticker
+ ln -snf $$PWD/bitcoinslc/stats_text.sh ../bin/bitcoinslc_stats
diff --git a/gold/affiliate/README.md b/gold/affiliate/README.md
new file mode 100644
index 00000000..81a3d52c
--- /dev/null
+++ b/gold/affiliate/README.md
@@ -0,0 +1,9 @@
+# Installation
+
+# Firefox
+Step 1: [Install Greasemonkey](https://addons.mozilla.org/de/firefox/addon/greasemonkey/)
+Step 2: Click on affiliate.user.js
+
+# Chrome
+Step 1: download affiliate.user.js onto your desktop
+Step 2: Open chrome->tools->extensions and drag affiliate.user.js into chrome window
diff --git a/gold/affiliate/affiliate.user.js b/gold/affiliate/affiliate.user.js
new file mode 100644
index 00000000..57d51f1f
--- /dev/null
+++ b/gold/affiliate/affiliate.user.js
@@ -0,0 +1,96 @@
+// ==UserScript==
+// @name Krebs Affiliate Programs + extras (auto-SSL...)
+// @namespace https://blogs.fsfe.org/h2/userscripts/
+// @description Modify Amazon to support Krebs, always use SSL and shorten links (only Amazon)
+
+// Contains the getASIN()-function from:
+// http://userscripts.org/scripts/review/3284 by Jim Biancolo
+
+// shamelessly stolen from
+// http://userscripts.org/scripts/show/129547
+//
+
+// @version 0.42
+// @include *
+// @license CC0 / Do what the fuck you want to license
+// see http://sam.zoy.org/wtfpl/
+// see http://creativecommons.org/publicdomain/zero/1.0/
+
+// @author Hannes Hauswedell
+// @author makefu
+// @homepage http://euer.krebsco.de
+// ==/UserScript==
+
+
+
+function getASIN(href) {
+ var asinMatch;
+ asinMatch = href.match(/\/exec\/obidos\/ASIN\/(\w{10})/i);
+ if (!asinMatch) { asinMatch = href.match(/\/gp\/product\/(\w{10})/i); }
+ if (!asinMatch) { asinMatch = href.match(/\/exec\/obidos\/tg\/detail\/\-\/(\w{10})/i); }
+ if (!asinMatch) { asinMatch = href.match(/\/dp\/(\w{10})/i); }
+ if (!asinMatch) { return null; }
+ return asinMatch[1];
+}
+
+(function()
+{
+ var links = document.getElementsByTagName("a");
+
+ for (i = 0; i < links.length; i++)
+ {
+ var curLink = links[i].href;
+
+ // AMAZON
+ if (curLink.match(/https?\:\/\/(www\.)?amazon\./i))
+ {
+ var affiliateID = '';
+ var host = '';
+ if (curLink.match(/amazon\.de/i))
+ {
+ host = 'amazon.de';
+ affiliateID = 'krebsco-21';
+ }
+ else if (curLink.match(/amazon\.co\.uk/i))
+ {
+ host = 'amazon.co.uk';
+ affiliateID = 'krebscode-21';
+ }
+ else if (curLink.match(/amazon\.ca/i))
+ {
+ host = 'amazon.ca';
+ affiliateID = 'krebscoca-20';
+ }
+ else if (curLink.match(/amazon\.fr/i))
+ {
+ host = 'amazon.fr';
+ affiliateID = 'krebscode01-21';
+ }
+ else if (curLink.match(/amazon\.es/i))
+ {
+ host = 'amazon.es';
+ affiliateID = 'krebscode0f-21';
+ }
+ else if (curLink.match(/amazon\.it/i))
+ {
+ host = 'amazon.it';
+ affiliateID = 'krebscode04-21';
+ }
+ else if (curLink.match(/amazon\.com/i))
+ {
+ host = 'amazon.com';
+ affiliateID = 'krebsco-20';
+ }
+
+ var asin = getASIN(curLink);
+ if (affiliateID != '')
+ {
+ if (asin != null)
+ links[i].setAttribute("href", "https://www."+host+"/dp/" + asin + "/?tag="+affiliateID);
+// else
+// links[i].setAttribute("href", curLink + "?tag="+affiliateID);
+ }
+ }
+
+ }
+})();
diff --git a/gold/affiliate/krebsco-affiliatefox.xpi b/gold/affiliate/krebsco-affiliatefox.xpi
new file mode 100644
index 00000000..b163e0bc
--- /dev/null
+++ b/gold/affiliate/krebsco-affiliatefox.xpi
Binary files differ
diff --git a/gold/bitcoinslc/bitcoinslc.stats b/gold/bitcoinslc/bitcoinslc.stats
new file mode 100755
index 00000000..8547dbcc
--- /dev/null
+++ b/gold/bitcoinslc/bitcoinslc.stats
@@ -0,0 +1,4 @@
+#! /bin/sh
+# get mtgox ticker data
+set -euf
+curl -ksS https://www.bitcoins.lc/stats.json
diff --git a/gold/bitcoinslc/bitcoinslc.stats.render b/gold/bitcoinslc/bitcoinslc.stats.render
new file mode 100755
index 00000000..7ab26a02
--- /dev/null
+++ b/gold/bitcoinslc/bitcoinslc.stats.render
@@ -0,0 +1,7 @@
+#!/usr/bin/python
+
+import json,sys
+
+result = json.load(sys.stdin)
+
+print "Block: " + str(result["current_block"]) + " Difficulty: " + str(result["difficulty"])
diff --git a/gold/bitcoinslc/stats_text.sh b/gold/bitcoinslc/stats_text.sh
new file mode 100755
index 00000000..2d146c86
--- /dev/null
+++ b/gold/bitcoinslc/stats_text.sh
@@ -0,0 +1,4 @@
+#! /bin/sh
+set -euf
+cd $(dirname `readlink -f $0`)
+./bitcoinslc.stats | ./bitcoinslc.stats.render
diff --git a/gold/bitcoinwisdom/beep.js b/gold/bitcoinwisdom/beep.js
new file mode 100644
index 00000000..80a0cb0f
--- /dev/null
+++ b/gold/bitcoinwisdom/beep.js
@@ -0,0 +1,30 @@
+module.exports = {
+ create_beeper: create_beeper,
+}
+
+var child_process = require('child_process');
+
+function create_beeper (spec) {
+ return {
+ beep: beep,
+ }
+ function beep (freq, len) {
+ var child = child_process.spawn('beep', [
+ '-f', freq,
+ '-l', len,
+ ]);
+ child.stdout.on('data', function (data) {
+ console.log('stdout: ' + data);
+ });
+
+ child.stderr.on('data', function (data) {
+ console.log('stderr: ' + data);
+ });
+
+ child.on('close', function (code) {
+ if (code !== 0) {
+ console.log('child process exited with code ' + code);
+ }
+ });
+ }
+}
diff --git a/gold/bitcoinwisdom/ticker.js b/gold/bitcoinwisdom/ticker.js
new file mode 100644
index 00000000..002f8502
--- /dev/null
+++ b/gold/bitcoinwisdom/ticker.js
@@ -0,0 +1,95 @@
+var http = require('http');
+var beeper = require('./beep.js').create_beeper();
+
+setInterval(get_ticker, 1000);
+
+function get_ticker () {
+ http.get('http://s1.bitcoinwisdom.com:8080/ticker', ticker_response_handler);
+}
+
+function ticker_response_handler (res) {
+ var data = '';
+ res.on('data', function (chunk) {
+ data += chunk;
+ });
+ res.on('end', function () {
+ try {
+ data = JSON.parse(data);
+ } catch (err) {
+ return console.log('Error:', err);
+ }
+ ticker_data_handler(data);
+ });
+}
+
+var last_data = {
+ btceltcbtc: {
+ last: 0, // price
+ date: 0,
+ tid: 0,
+ },
+}
+
+function ticker_data_handler (data) {
+ //console.log(data)
+
+ var symbol = 'btceltcbtc'
+
+ var ticker = data[symbol]
+ var last_ticker = last_data[symbol]
+
+ if (ticker.date !== last_ticker.date) {
+
+ var diff = ticker.last - last_ticker.last;
+
+ var lag = data.now - ticker.date;
+
+ freq = ( Math.pow(2000, ticker.last / last_ticker.last )) | 0;
+
+ var out = [
+ format_date(data.now) + '+' + pad(lag, -2, '0'),
+ '\x1b[' + diff_color(diff) + 'm'
+ + ticker.last.toFixed(8)
+ + '\x1b[m',
+ symbol,
+ freq,
+ ];
+
+ console.log(out.join(' '));
+
+ beeper.beep(freq, 10);
+ }
+
+ last_data[symbol] = data[symbol];
+}
+
+function diff_color (diff) {
+ if (diff < 0) {
+ return '31;1';
+ } else if (diff > 0) {
+ return '32;1';
+ } else {
+ return '33;1';
+ }
+}
+
+function format_date (unix) {
+ return (new Date(unix * 1000)).toISOString()
+ .replace(/\.000Z$/, 'Z')
+}
+
+// num < 0: pad left
+// num > 0: pad right
+function pad (obj, num, char) {
+ var str = obj.toString();
+ if (num < 0) {
+ while (str.length < -num) {
+ str = char + str;
+ }
+ } if (num > 0) {
+ while (str.length < num) {
+ str = str + char;
+ }
+ }
+ return str;
+}
diff --git a/gold/btcguild/index.js b/gold/btcguild/index.js
new file mode 100644
index 00000000..1f33db06
--- /dev/null
+++ b/gold/btcguild/index.js
@@ -0,0 +1,20 @@
+api_key = process.env.api_key;
+
+var options = {
+ host: 'www.btcguild.com',
+ port: 80,
+ path: '/api.php?api_key=' + api_key
+};
+
+http = require('http');
+http.get(options, function(res) {
+ var data = '';
+ res.on('data', function (chunk) {
+ data += chunk;
+ });
+ res.on('end', function () {
+ console.log(JSON.parse(data));
+ });
+}).on('error', function(e) {
+ console.error('Error: ' + e.message);
+});
diff --git a/gold/json/render/ticker b/gold/json/render/ticker
new file mode 100755
index 00000000..727dd594
--- /dev/null
+++ b/gold/json/render/ticker
@@ -0,0 +1,7 @@
+#!/usr/bin/python
+
+import json,sys
+
+result = json.load(sys.stdin)
+
+print "High: " + str(result["ticker"]["high"]) + " Low: " + str(result["ticker"]["low"]) + " Last: " + str(result["ticker"]["last"])
diff --git a/gold/ledger/lib/balance b/gold/ledger/lib/balance
new file mode 100755
index 00000000..deb50d15
--- /dev/null
+++ b/gold/ledger/lib/balance
@@ -0,0 +1,88 @@
+#! /usr/bin/awk -f
+#
+# ledger balance calculator
+#
+# usage:
+# [colorize=false] [scale=N] //ledger/lib/balance LEDGER_FILE...
+# [colorize=false] [scale=N] //ledger/lib/balance < LEDGER_FILE
+#
+# description:
+# The ledger balance calculator computes the balance of each account it
+# encounters in the provided ledger files.
+#
+# example:
+# //ledger/lib/balance < //cholerab/ledger-spec.markdown
+#
+# see also:
+# //cholerab/ledger-spec.markdown (ledger file format)
+#
+
+BEGIN {
+ colorize = ENVIRON["colorize"] == "" || ENVIRON["colorize"] == "true"
+ # TODO use bc for arbitrary precision arithmetic
+ scale = ENVIRON["scale"]
+}
+
+/^[[:space:]]*[0-9]+-[0-9][0-9]-[0-9][0-9]/{
+ tx($2, $3, $4, $5)
+}
+
+END {
+ display_accounts()
+}
+
+function tx (dst, src, amt, u) {
+ withdraw(src, amt, u)
+ deposit(dst, amt, u)
+}
+
+function deposit (name, amt, u) {
+ accounts[name][u] += amt
+}
+
+function withdraw (name, amt, u) {
+ accounts[name][u] -= amt
+}
+
+function display_accounts() {
+ max_name_len = 0
+ for (name in accounts) {
+ if (length(name) > max_name_len) {
+ max_name_len = length(name)
+ }
+ }
+
+ max_balance_len = 0
+ for (name in accounts) {
+ for (u in accounts[name]) {
+ n = length(int(accounts[name][u]))
+ if (n > max_balance_len) {
+ max_balance_len = n
+ }
+ }
+ }
+ if (scale > 0) {
+ max_balance_len += length(".") + scale
+ }
+
+ for (name in accounts) {
+ for (u in accounts[name]) {
+ balance = accounts[name][u]
+ if (balance == 0) {
+ continue
+ }
+
+ fmt = "NAME BALANCE UNIT\n"
+
+ if (colorize) {
+ sub("BALANCE", "[" (balance < 0 ? 31 : 32) "m&", fmt)
+ }
+
+ sub("NAME", "%-" max_name_len "s", fmt)
+ sub("BALANCE", "%" max_balance_len "." scale "f", fmt)
+ sub("UNIT", "%s", fmt)
+
+ printf fmt, name, balance, u
+ }
+ }
+}
diff --git a/gold/mining/CONFIGURE b/gold/mining/CONFIGURE
new file mode 100644
index 00000000..299cbd53
--- /dev/null
+++ b/gold/mining/CONFIGURE
@@ -0,0 +1,8 @@
+How to Configure
+===============
+
+1. change the mining-url in ~/startup.sh
+2. in KDE - 'AMDOverdriveCtrl - configure profile
+3. in KDE-Autostart - activate the startup script
+2. sudo /etc/init.d/gdm restart
+
diff --git a/gold/mining/Makefile b/gold/mining/Makefile
new file mode 100644
index 00000000..8701920f
--- /dev/null
+++ b/gold/mining/Makefile
@@ -0,0 +1,20 @@
+.PHONY: all format install configure
+select-target:
+ @echo "You are made of stupid!"
+ echo "look here"
+ @cat Makefile
+format:
+ cat README
+fix-linucCoin: configure
+ apt-get install --yes lm-sensors tmux
+ echo '#!/bin/bash' > /usr/bin/ati_license
+ echo '#!/bin/sh' > /etc/init.d/live-boot
+ echo 'wall "going down"' >> /etc/init.d/live-boot
+ chmod 755 /etc/init.d/live-boot
+ echo 'sudo tar xvf /opt/AMD-APP-SDK-v2.4-lnx64/icd-registration.tgz -C /' >> /usr/bin/ati_license
+ cp -r user /home
+configure:
+ yes '' | sensors-detect
+ @cat CONFIGURE
+archlinux:
+ bin/archlinux-cruise-control
diff --git a/gold/mining/README b/gold/mining/README
new file mode 100644
index 00000000..ad8c3468
--- /dev/null
+++ b/gold/mining/README
@@ -0,0 +1,9 @@
+What to do:
+format the usb-stick:
+Device Boot Start End Blocks Id System
+/dev/sda1 * 1 254 976345 c W95 FAT32 (LBA)
+/dev/sda2 255 1017 2932972 83 Linux
+
+1. install coinlinux live system on sda1.
+2. mkfs.ext3 /dev/sda2 -L live-rw
+3. install grub on /dev/sda
diff --git a/gold/mining/TODO b/gold/mining/TODO
new file mode 100644
index 00000000..bafaa72a
--- /dev/null
+++ b/gold/mining/TODO
@@ -0,0 +1,2 @@
+- fix the sed script in "make archlinux" to replace only the first occurrence
+- test the amdoverdrive stuff from the home dir (user)
diff --git a/gold/mining/bin/archlinux-cruise-control b/gold/mining/bin/archlinux-cruise-control
new file mode 100755
index 00000000..ba1c35da
--- /dev/null
+++ b/gold/mining/bin/archlinux-cruise-control
@@ -0,0 +1,75 @@
+#!/bin/bash
+set -euf
+export EDITOR=vim
+echo "!! ARCHLINUX Cruise Control Mining installer !!"
+echo "** adding main network profile"
+cp /etc/network.d/examples/ethernet-dhcp /etc/network.d/main
+echo 'POST_UP="cache=\"\$(cat /etc/resolv.conf)\"; echo \"\$cache\" | sed \"1i nameserver 8.8.8.8\" > /etc/resolv.conf"' >> /etc/network.d/main
+echo "** adding worker account"
+grep -q worker /etc/passwd || adduser worker
+gpasswd -a worker wheel
+gpasswd -a worker tty
+gpasswd -a worker audio
+gpasswd -a worker video
+gpasswd -a worker network
+gpasswd -a worker power
+
+echo "** adding archlinuxfr to pacman.conf"
+grep -q archlinuxfr /etc/pacman.conf || echo "[archlinuxfr]" >> /etc/pacman.conf && echo "Server = http://repo.archlinux.fr/x86_64" >> /etc/pacman.conf
+echo "** installing all the required parts"
+pacman --needed --noconfirm -Syu rsync git openssh yajl sudo tmux lm_sensors vim yaourt kernel26-headers beep
+echo "** doing some tweaks"
+rm /usr/bin/python -f
+ln -s /usr/bin/python2 /usr/bin/python
+echo "syntax on" > /home/worker/.vimrc
+echo "syntax on" > /root/.vimrc
+echo "** installing tinc"
+[ "`yaourt -Q tinc`" ] || yaourt -S --noconfirm tinc
+cache="`cat /etc/sudoers`"
+echo "$cache" |
+sed 's/.*\%wheel.*/%wheel ALL=(ALL) NOPASSWD: ALL/1' > /etc/sudoers
+echo "** Installing ATI drivers"
+[ "`yaourt -Q catalyst-utils`" ] || yaourt -S --noconfirm catalyst-utils
+[ "`yaourt -Q catalyst-hook`" ] || yaourt -S --noconfirm catalyst-hook
+[ "`yaourt -Q amdstream`" ] || yaourt -S --noconfirm amdstream
+echo "** installing X"
+pacman --needed -S --noconfirm xorg-server xorg-apps xorg-appres xorg-xinit xautolock xlockmore xorg-fonts xorg-xhost xorg-xauth xterm rxvt-unicode fluxbox slim
+echo "** editing slim configuration"
+cache="`cat /etc/slim.conf`"
+echo "$cache" | sed '
+ s/.*default_user.*/default_user worker/
+ s/.*auto_login.*/auto_login yes/
+' > /etc/slim.conf
+echo "** Installing mining tools and overclocking stuff"
+[ "`yaourt -Q phoenix-miner-svn`" ] || yaourt -S --noconfirm phoenix-miner-svn
+echo "!! warning, you might need to adjust the version number of AMDOverdriveCTRL !!"
+[ "`yaourt -Q amdoverdrivectrl`" ] || yaourt -S amdoverdrivectrl
+echo "** copying bin folder"
+cp -r $(readlink -f `dirname $0`)/ /home/worker
+echo "** creating new .Xauthority for worker"
+sudo -u worker /home/worker/bin/newkey.sh
+mkdir -p /home/worker/.fluxbox
+cp /krebs/mining/user/startup.sh /home/worker/startup.sh
+chmod a+x /home/worker/startup.sh
+cp /krebs/mining/user/startup.sh /home/worker/.fluxbox/startup
+chmod a+x /home/worker/.fluxbox/startup
+cp /krebs/mining/user/mining.ovdr /home/worker/
+chown -R worker:users /home/worker
+echo "configuring X"
+echo "!! ACTION REQUIRED, write down the first number of your ATI Graphics Adapter."
+echo "!! i will open /etc/X11/xorg.conf for you, change the BusID of every Device to the numbers you see here"
+echo "!! press enter to continue"
+lspci|grep VGA
+read
+aticonfig --initial=dual-head
+vim /etc/X11/xorg.conf
+echo "** creating xinitrc and start x"
+echo 'setxkbmap -option terminate:ctrl_alt_bksp' > /home/worker/.xinitrc
+echo 'xautolock -corners +-+- -locker "xlock -mode blank"&' >> /home/worker/.xinitrc
+echo '/home/worker/startup.sh &' >> /home/worker/.xinitrc
+echo 'xterm &' >> /home/worker/.xinitrc
+echo 'exec fluxbox' >> /home/worker/.xinitrc
+echo '!! start x with `xinit `'
+echo 'add "x:5:respawn:/usr/bin/slim >/dev/null 2>&1" to /etc/inittab to start slim"
+
+
diff --git a/gold/mining/bin/ati_temper b/gold/mining/bin/ati_temper
new file mode 100755
index 00000000..283a6024
--- /dev/null
+++ b/gold/mining/bin/ati_temper
@@ -0,0 +1,5 @@
+#displays: CARD1TEMP CARD2TEMP CPUTEMP OUTSIDE
+echo -n "`DISPLAY=:0 aticonfig --adapter=1 --od-gettemperature | grep Temperature | sed -n 's/.*Temperature - \([0-9.]*\) C/\1/;p'` "
+echo -n "`DISPLAY=:0 aticonfig --adapter=2 --od-gettemperature | grep Temperature | sed -n 's/.*Temperature - \([0-9.]*\) C/\1/;p'` "
+echo -n "`sensors | grep temp1 | sed -e 's/temp1: *+\([0-9.]*\).*/\1/'` "
+echo "`temper`"
diff --git a/gold/mining/bin/cleanup_tmp b/gold/mining/bin/cleanup_tmp
new file mode 100755
index 00000000..ce72d906
--- /dev/null
+++ b/gold/mining/bin/cleanup_tmp
@@ -0,0 +1,4 @@
+#! /bin/sh
+ls -lAtr /tmp/ | sed -n '
+ /\.so$/{$!{s/.* \([A-Za-z0-9\]\+\.so\)$/rm -v \/tmp\/\1/p}}
+' | sudo sh
diff --git a/gold/mining/bin/ensure-router b/gold/mining/bin/ensure-router
new file mode 100755
index 00000000..5eedabc9
--- /dev/null
+++ b/gold/mining/bin/ensure-router
@@ -0,0 +1,36 @@
+#! /bin/sh
+
+if test "${nosudo-false}" != true -a `id -u` != 0; then
+ echo "we're going sudo..." >&2
+ exec sudo "$0" "$@"
+ exit 23 # go to hell
+fi
+
+if=eth2
+
+rc() {
+ for x in /etc/init.d/$1 /etc/rc.d/$1; do
+ if test -x $x; then
+ $x restart
+ break
+ fi
+ done
+}
+
+if ! ifconfig $if | grep -q 'inet addr'; then
+ beep -l 50 -f 2500; ifconfig $if 0.0.0.0 down || :
+ beep -l 50 -f 2500; ifconfig $if 23.0.0.1/8 up || :
+ beep -l 50 -f 2500; rc dnsmasq restart
+ beep -l 50 -f 2500; iptables -t nat -A POSTROUTING -o wlan0 -j MASQUERADE
+ beep -l 50 -f 2500; iptables -t nat -A POSTROUTING -o eth2 -j MASQUERADE
+ if ifconfig $if | grep -q 'inet addr'; then
+ beep -l 50 -f 2500 -n -l 100 -f 3000
+ else
+ beep -l 50 -f 2500 -n -l 100 -f 1000
+ fi
+else
+ case "${1-}" in
+ (--quiet) : ;;
+ (*) beep -l 50 -f 2500 -n -l 100 -f 2500 ;;
+ esac
+fi
diff --git a/gold/mining/bin/ensure-wlan0 b/gold/mining/bin/ensure-wlan0
new file mode 100755
index 00000000..2ede2e8f
--- /dev/null
+++ b/gold/mining/bin/ensure-wlan0
@@ -0,0 +1,48 @@
+#! /bin/sh
+
+if test "${nosudo-false}" != true -a `id -u` != 0; then
+ echo "we're going sudo..." >&2
+ exec sudo -E "$0" "$@"
+ exit 23 # go to hell
+fi
+
+locate_bin() {
+ type -p "$1" || find / | sed -n '/.*bin\/'"$1"'$/{p;q}' | grep .
+}
+
+has_internet() {
+ curl -sS google.com >/dev/null
+}
+
+wpa_supplicant="`locate_bin wpa_supplicant`"
+wpa_cli="`locate_bin wpa_cli`"
+
+if test "${force-false}" = true || ! has_internet; then
+
+ ## get rid of the fuckers
+ for fucker in NetworkManager nm-applet; do
+ pkill -9 $fucker
+ (IFS=:; for dir in $PATH; do rm -vf $dir/$fucker; done)
+ done
+
+ beep -l 50 -f 2000; pkill wpa
+ beep -l 50 -f 2000; rm -vf /var/run/wpa_supplicant/*
+ beep -l 50 -f 2000; $wpa_supplicant -i wlan0 -c /etc/wpa_supplicant/wpa_supplicant.conf || $wpa_supplicant -i wlan0 -c /etc/wpa_supplicant.conf &
+ while ! $wpa_cli status | grep -q wpa_state=COMPLETED; do
+ beep -l 50 -f 2000 -D 50 -n -l 50 -f 2000
+ sleep 1
+ done
+ beep -l 50 -f 2000; dhcpcd -x wlan0
+ beep -l 50 -f 2000; dhcpcd wlan0
+ #echo nameserver 8.8.8.8 >/etc/resolv.conf
+ if has_internet; then
+ beep -l 50 -f 2000 -n -l 100 -f 3000
+ else
+ beep -l 50 -f 2000 -n -l 100 -f 1000
+ fi
+else
+ case "${1-}" in
+ (--quiet) : ;;
+ (*) beep -l 50 -f 2000 -n -l 100 -f 2000 ;;
+ esac
+fi 2>&1 | tee /var/log/ensure-wlan0
diff --git a/gold/mining/poll_btcguild b/gold/mining/poll_btcguild
new file mode 100644
index 00000000..92a02657
--- /dev/null
+++ b/gold/mining/poll_btcguild
@@ -0,0 +1,2 @@
+API_KEY=
+curl http://www.btcguild.com/api.php\?api_key\=${API_KEY} | python -mjson.tool
diff --git a/gold/mining/user/.config/autostart/startup.desktop b/gold/mining/user/.config/autostart/startup.desktop
new file mode 100644
index 00000000..67c35ef8
--- /dev/null
+++ b/gold/mining/user/.config/autostart/startup.desktop
@@ -0,0 +1,6 @@
+[Desktop Entry]
+Name=LXDE Autostart
+Exec=/home/user/startup.sh
+Terminal=true
+Type=Application
+Categories=Configuration
diff --git a/gold/mining/user/mining.ovdr b/gold/mining/user/mining.ovdr
new file mode 100644
index 00000000..d6cf6fec
--- /dev/null
+++ b/gold/mining/user/mining.ovdr
@@ -0,0 +1,16 @@
+<?xml version="1.0" encoding="utf-8"?>
+<OVERDRIVE_PROFILE>
+ <PERFORMANCE_LEVEL level="2" gpu="90000" mem="30000" voltage="1040"/>
+ <PERFORMANCE_LEVEL level="1" gpu="55000" mem="30000" voltage="1000"/>
+ <PERFORMANCE_LEVEL level="0" gpu="15700" mem="30000" voltage="950"/>
+ <FAN_SETTING percentage="AUTO"/>
+ <FAN_CTRL enabled="yes"/>
+ <FAN_CTRL_CURVE type="0"/>
+ <FAN_CTRL_POINT nr="0" temperature="2000" percentage="0"/>
+ <FAN_CTRL_POINT nr="1" temperature="3400" percentage="9300"/>
+ <FAN_CTRL_POINT nr="2" temperature="4800" percentage="10000"/>
+ <FAN_CTRL_POINT nr="3" temperature="7000" percentage="10100"/>
+ <FAN_CTRL_POINT nr="4" temperature="10000" percentage="10100"/>
+ <MONITOR_SAMPLE_TIME interval="10"/>
+ <COLOR_PROFILE enabled="no" longitude="-13.000000" latitude="52.000000" color_temp_day="0" color_temp_night="0" transition="30"/>
+</OVERDRIVE_PROFILE>
diff --git a/gold/mining/user/startup.sh b/gold/mining/user/startup.sh
new file mode 100755
index 00000000..6274a892
--- /dev/null
+++ b/gold/mining/user/startup.sh
@@ -0,0 +1,13 @@
+sudo pkill tmux
+sleep 5
+source ~/.profile
+export DISPLAY=:0
+export URL="${URL-http://txgen_chinaman:lolwut@uk.btcguild.com:8332}"
+#export URL="http://txgen:qJrXefWX@bitcoinpool.com:8334"
+tmux start-server
+tmux new-session -d -s mining -n mining
+tmux new-window -t mining:1 'cd ~;AMDOverdriveCtrl -i 0 mining.ovdr'
+tmux new-window -t mining:2 'cd ~;AMDOverdriveCtrl -i 3 mining.ovdr'
+sleep 5
+tmux new-window -t mining:3 "cd /usr/src/phoenix-miner/; while sleep 1; do sudo ./phoenix.py -u $URL -k phatk DEVICE=0 VECTORS BFI_INT WORKSIZE=256 AGGRESSION=12 FASTLOOPS=false;done"
+tmux new-window -t mining:4 "cd /usr/src/phoenix-miner/; while sleep 1; do sudo ./phoenix.py -u $URL -k phatk DEVICE=1 VECTORS BFI_INT WORKSIZE=256 AGGRESSION=12 FASTLOOPS=false;done"
diff --git a/gold/mooncoin/ticker b/gold/mooncoin/ticker
new file mode 100755
index 00000000..1be3ed7f
--- /dev/null
+++ b/gold/mooncoin/ticker
@@ -0,0 +1,2 @@
+#! /bin/sh
+exec curl -ksS https://moonco.in/exchange/api/ticker/solidcoin
diff --git a/gold/mooncoin/ticker_text.sh b/gold/mooncoin/ticker_text.sh
new file mode 100755
index 00000000..fbaff55b
--- /dev/null
+++ b/gold/mooncoin/ticker_text.sh
@@ -0,0 +1,4 @@
+#! /bin/sh
+set -euf
+cd $(dirname `readlink -f $0`)
+./ticker | ../json/render/ticker
diff --git a/gold/mtgox/mtgox.getDepth b/gold/mtgox/mtgox.getDepth
new file mode 100755
index 00000000..9a607979
--- /dev/null
+++ b/gold/mtgox/mtgox.getDepth
@@ -0,0 +1,3 @@
+#! /bin/sh
+# get mtgox market depth
+$ curl -ksS https://mtgox.com/code/data/getDepth.php
diff --git a/gold/mtgox/mtgox.getTrades b/gold/mtgox/mtgox.getTrades
new file mode 100755
index 00000000..73e5a68d
--- /dev/null
+++ b/gold/mtgox/mtgox.getTrades
@@ -0,0 +1,3 @@
+#! /bin/sh
+# get mtgox last trades
+$ curl -ksS https://mtgox.com/code/data/getTrades.phl
diff --git a/gold/mtgox/mtgox.ticker b/gold/mtgox/mtgox.ticker
new file mode 100755
index 00000000..208d2764
--- /dev/null
+++ b/gold/mtgox/mtgox.ticker
@@ -0,0 +1,53 @@
+#! /bin/sh
+# 2012-06-07 ~tv@iiso:bin/mtgox.ticker
+set -euf
+
+Currency=${Currency-EUR}
+
+# continuous ticker
+## usage: mtgox.ticker -f [time] [json-path...]
+if test $# -ge 1 && test "$1" = -f; then
+ shift
+ time=`echo "$1" | grep '^[1-9][0-9]*[h]\?$'` && shift || time=60
+ echo -n "# sleep time: $time"
+ while echo -n "
+`date --rfc-3339=s` `"$0" "$@"`"; do
+ sleep $time
+ done
+ exit
+fi
+
+# 2012-11-17 tv /krebs/gold/mtgox/mtgox.ticker
+ticker() {
+ curl -ksS https://data.mtgox.com/code/data/ticker.php?Currency=$Currency
+}
+# 2012-11-17 tv ~mw*@iiso:Espresso-phonegap/package/bin/json-print
+print() {
+ node -e "
+// 2012-11-17 tv
+//filename = process.argv[2]
+filename = process.argv[1]
+jsonpath = []
+value = JSON.parse(require('fs').readFileSync(filename))
+// 2012-11-17 tv
+//process.argv.slice(3).forEach(function (key) {
+process.argv.slice(2).forEach(function (key) {
+ value = value[key]
+ jsonpath.push(key)
+ if (typeof value === 'undefined') {
+ console.error(filename + ':', jsonpath.join('.'), 'is', value)
+ process.exit(23)
+ }
+})
+
+console.log(JSON.stringify(value, null, 2))
+" "$@"
+}
+
+# ticker
+## usage: mtgox.ticker [json-path...] -> json
+# 2012-11-17 tv
+#/krebs/gold/mtgox/mtgox.ticker |
+# ~mw*@iiso:Espresso-phonegap/package/bin/json-print /dev/stdin ticker "$@"
+ticker |
+ print /dev/stdin ticker "$@"
diff --git a/gold/mtgox/ticker_text.sh b/gold/mtgox/ticker_text.sh
new file mode 100755
index 00000000..f585ffea
--- /dev/null
+++ b/gold/mtgox/ticker_text.sh
@@ -0,0 +1,4 @@
+#! /bin/sh
+set -euf
+cd $(dirname `readlink -f $0`)
+./mtgox.ticker | ../json/render/ticker
diff --git a/gold/scex/ticker b/gold/scex/ticker
new file mode 100755
index 00000000..a95d5910
--- /dev/null
+++ b/gold/scex/ticker
@@ -0,0 +1,2 @@
+#! /bin/sh
+exec curl -ksS http://scexchange.bitparking.com:8080/api/ticker
diff --git a/gold/scex/ticker_text.sh b/gold/scex/ticker_text.sh
new file mode 100755
index 00000000..fbaff55b
--- /dev/null
+++ b/gold/scex/ticker_text.sh
@@ -0,0 +1,4 @@
+#! /bin/sh
+set -euf
+cd $(dirname `readlink -f $0`)
+./ticker | ../json/render/ticker
diff --git a/gold/scex/tracer/index.js b/gold/scex/tracer/index.js
new file mode 100644
index 00000000..7ee6de1b
--- /dev/null
+++ b/gold/scex/tracer/index.js
@@ -0,0 +1,89 @@
+#! /usr/bin/env node
+//
+// usage: [idle_mark=N] tracer
+//
+// Where the optional idle_mark tells the tracer to output idle marks every N
+// seconds.
+//
+var http = require('http');
+var slurp = require('./slurp');
+
+var options = {
+ host: 'scexchange.bitparking.com',
+ port: 8080,
+ path: '/api/t2'
+};
+
+var interval = 1000;
+var idle_mark = Number(process.env.idle_mark) * interval;
+
+var last_id = 0;
+var last_price = 0;
+var last_output = new Date(0);
+function t2 () {
+ var now = new Date()
+ http.get(options, function(res) {
+ slurp(res, function (data) {
+ try {
+ data = JSON.parse(data);
+ } catch (exn) {
+ return console.error('' + exn.stack + '');
+ };
+ data = data.sort(function (a, b) {
+ return a.id - b.id;
+ }).filter(function (x) {
+ return x.id > last_id;
+ });
+ if (data.length > 0) {
+ data.forEach(function (x) {
+ last_id = x.id;
+
+ x.date = new Date(Number(x.date) * 1000);
+
+ var price = render_price(x.price, last_price);
+ last_price = x.price;
+
+ var c = ({ buy: '', sell: '' })[x.type];
+ var m = '';
+ m += x.id
+ m += ' ' + JSON.parse(JSON.stringify(x.date))
+ m += ' ' + price
+ m += ' ' + c + x.amount + ''
+ console.log(m);
+ last_output = now;
+ });
+ } else {
+ if (idle_mark) {
+ if (now - last_output >= idle_mark) {
+ var price = render_price(last_price);
+ var m = last_id
+ m += ' ' + JSON.parse(JSON.stringify(now));
+ m += ' ' + price
+ console.log(m);
+ last_output = now;
+ };
+ };
+ };
+ });
+ }).on('error', function(e) {
+ console.log("Got error: " + e.message);
+ });
+};
+
+function render_price(price, last_price) {
+ var rendered_price = price.toString();
+ while (rendered_price.length < 'x.xxxxxxxx'.length) {
+ rendered_price += 0;
+ };
+ if (last_price) {
+ if (price > last_price) {
+ rendered_price = '' + rendered_price + ''
+ };
+ if (price < last_price) {
+ rendered_price = '' + rendered_price + ''
+ };
+ };
+ return rendered_price;
+};
+
+setInterval(t2, interval);
diff --git a/gold/scex/tracer/slurp.js b/gold/scex/tracer/slurp.js
new file mode 100644
index 00000000..70319743
--- /dev/null
+++ b/gold/scex/tracer/slurp.js
@@ -0,0 +1,38 @@
+module.exports = (function () {
+
+ function join_buffers (buffers, length) {
+ var buffer = new Buffer(length);
+ var targetStart = 0;
+ buffers.forEach(function (x) {
+ x.copy(buffer, targetStart);
+ targetStart += x.length;
+ });
+ return buffer;
+ };
+
+ function finish_it (req, buffers, length, callback) {
+ req.content = join_buffers(buffers, length);
+ return callback(req.content);
+ };
+
+ function nop () {};
+
+ return function (req, callback) {
+ if (req.hasOwnProperty('content')) {
+ return callback(req.content);
+ };
+ var content = [];
+ var length = 0;
+ var end_handler = finish_it;
+ req.on('data', function (data) {
+ content.push(data);
+ length += data.length;
+ });
+ [ 'end', 'close' ].forEach(function (event) {
+ req.on(event, function () {
+ finish_it(req, content, length, callback);
+ end_handler = nop;
+ });
+ });
+ };
+})();
diff --git a/gold/scoreboard/.gitignore b/gold/scoreboard/.gitignore
new file mode 100644
index 00000000..a533dcf8
--- /dev/null
+++ b/gold/scoreboard/.gitignore
@@ -0,0 +1,5 @@
+/plot/
+/profile
+/archive/
+/keys
+/modules/active
diff --git a/gold/scoreboard/README b/gold/scoreboard/README
new file mode 100644
index 00000000..8e59ab03
--- /dev/null
+++ b/gold/scoreboard/README
@@ -0,0 +1,29 @@
+Scoreboard
+==========
+a non-interactive gold logger/plotter
+
+scoreboard contains a number of modules which do a number of things:
+ati_temper: log temperature data of an ati_temper enabled host :
+ see //gold/miner/bin/ati_temper
+solidcoin : graph solidcoin informations
+bitcoin : s.a.
+
+//gold/scoreboard/profile contains all the important paths and variables
+which are sourced by the modules. In a new installation this file needs
+to be customized.
+
+//gold/scoreboard/util/schedule_logger is the scheduler for generating
+the graphs every 5 minutes.
+
+
+Install
+======
+* install lighttpd
+* configure the profile template file accordingly
+* [currently] do:
+ cd modules/available/ ati_temper; $EDITOR gather # change the host
+ * add the host key file to keys/
+* [currently] run:
+ modules/available/{ati_temper,bitcoin,solidcoin,static}/init
+* run:
+ util/schedule_logger
diff --git a/gold/scoreboard/modules/active/.placeholder b/gold/scoreboard/modules/active/.placeholder
new file mode 100644
index 00000000..e69de29b
--- /dev/null
+++ b/gold/scoreboard/modules/active/.placeholder
diff --git a/gold/scoreboard/modules/available/ati_temper/gather b/gold/scoreboard/modules/available/ati_temper/gather
new file mode 100755
index 00000000..15f0b4f2
--- /dev/null
+++ b/gold/scoreboard/modules/available/ati_temper/gather
@@ -0,0 +1,14 @@
+#!/bin/sh
+HERE=$(dirname $(readlink -f $0))
+. $HERE/../../../profile
+
+# machine to check for
+MACHINE=chinaman
+MACHINE_KEY=$MDIR/keys/$MACHINE
+LF=${MACHINE}_ati_temper
+mkdir -p $ADIR
+mkdir -p $LDIR
+
+# write into live directory and archive
+[ ! -e $MACHINE_KEY ] && echo "No Key for $MACHINE" && exit 1
+echo "$(date +%Y-%m-%dT%H:%M:%S) $(ssh -i $MACHINE_KEY worker@$MACHINE '~/bin/ati_temper')" | tee $LDIR/$LF >> $ADIR/$LF
diff --git a/gold/scoreboard/modules/available/ati_temper/index b/gold/scoreboard/modules/available/ati_temper/index
new file mode 100755
index 00000000..19c21825
--- /dev/null
+++ b/gold/scoreboard/modules/available/ati_temper/index
@@ -0,0 +1,4 @@
+#!/bin/sh
+HERE=$(dirname $(readlink -f $0))
+$HERE/gather
+$HERE/plot
diff --git a/gold/scoreboard/modules/available/ati_temper/init b/gold/scoreboard/modules/available/ati_temper/init
new file mode 100755
index 00000000..af99bfbb
--- /dev/null
+++ b/gold/scoreboard/modules/available/ati_temper/init
@@ -0,0 +1,28 @@
+#!/bin/sh
+#set -x
+HERE=$(dirname $(readlink -f $0))
+. $HERE/../../../profile
+MACHINE=chinaman
+ln -s $HERE/index $HERE/../../active/${MACHINE}_ati_temper
+mkdir -p $PDIR
+cat > $PDIR/$MACHINE.conf <<EOF
+set terminal png transparent nocrop enhanced font arial 8 size 500
+set xdata time
+set autoscale
+set grid
+set title "$MACHINE Temperature"
+set timefmt "%Y-%m-%dT%H:%M:%S"
+set format x "%d"
+set xlabel "Day"
+plot "$ADIR/${MACHINE}_ati_temper" using 1:2 smooth bezier title "gpu0" with lines , \
+"$ADIR/${MACHINE}_ati_temper" using 1:3 smooth bezier title "gpu1" with lines , \
+"$ADIR/${MACHINE}_ati_temper" using 1:4 smooth bezier title "cpu0" with lines , \
+"$ADIR/${MACHINE}_ati_temper" using 1:5 smooth bezier title "rack" with lines
+EOF
+
+sed -e 's/set xlabel.*/set xlabel "Time of Day"/' \
+ -e 's/set format.*/set format x "%H"/' \
+ -e "s/set title.*/set title \"${MACHINE} 24 hours Temperature\"/" \
+ -e "s/${MACHINE}_ati_temper/${MACHINE}_last_day/g" \
+ $PDIR/${MACHINE}.conf >$PDIR/${MACHINE}_last_day.conf
+
diff --git a/gold/scoreboard/modules/available/ati_temper/plot b/gold/scoreboard/modules/available/ati_temper/plot
new file mode 100755
index 00000000..06f20c24
--- /dev/null
+++ b/gold/scoreboard/modules/available/ati_temper/plot
@@ -0,0 +1,10 @@
+#!/bin/sh
+#set -x
+HERE=$(dirname $(readlink -f $0))
+. $HERE/../../../profile
+umask 000
+export GDFONTPATH=/usr/share/fonts/truetype/msttcorefonts
+mkdir -p $GDIR
+gnuplot $PDIR/chinaman.conf> $GDIR/chinaman_overall.png
+tail -n288 $ADIR/chinaman_ati_temper > $ADIR/chinaman_last_day
+gnuplot $PDIR/chinaman_last_day.conf > $GDIR/chinaman_24h.png
diff --git a/gold/scoreboard/modules/available/bitcoin/gather b/gold/scoreboard/modules/available/bitcoin/gather
new file mode 100755
index 00000000..22410f7b
--- /dev/null
+++ b/gold/scoreboard/modules/available/bitcoin/gather
@@ -0,0 +1,13 @@
+#!/bin/sh
+HERE=$(dirname $(readlink -f $0))
+. $HERE/../../../profile
+LF=bitcoin
+mkdir -p $ADIR
+mkdir -p $LDIR
+
+
+# write into live directory and archive
+#$BITCOIND_PATH getinfo | python $HERE/render | tee $LDIR/$LF >> $ADIR/$LF
+echo `date +"%Y-%m-%dT%H:%M:%S"` `$KREBSDIR/bin/bitcoinslc_stats` | sed -e 's/Difficulty: //' -e 's/Block: //' | tee $LDIR/_${LF}>> $ADIR/${LF}
+
+echo `date +"%Y-%m-%dT%H:%M:%S"` `$KREBSDIR/bin/mtgox_ticker` | sed -e 's/High: //' -e 's/Low: //' -e 's/Last: //' | tee $LDIR/ticker_${LF}>> $ADIR/ticker_${LF}
diff --git a/gold/scoreboard/modules/available/bitcoin/index b/gold/scoreboard/modules/available/bitcoin/index
new file mode 100755
index 00000000..19c21825
--- /dev/null
+++ b/gold/scoreboard/modules/available/bitcoin/index
@@ -0,0 +1,4 @@
+#!/bin/sh
+HERE=$(dirname $(readlink -f $0))
+$HERE/gather
+$HERE/plot
diff --git a/gold/scoreboard/modules/available/bitcoin/init b/gold/scoreboard/modules/available/bitcoin/init
new file mode 100755
index 00000000..97b60402
--- /dev/null
+++ b/gold/scoreboard/modules/available/bitcoin/init
@@ -0,0 +1,48 @@
+#!/bin/sh
+#set -x
+HERE=$(dirname $(readlink -f $0))
+. $HERE/../../../profile
+mkdir -p $PDIR
+ln -s $HERE/index $HERE/../../active/bitcoin
+cat > $PDIR/bitcoin.conf <<EOF
+set terminal png transparent nocrop enhanced font arial 8 size 500 #size 640, 240
+set style function lines
+#set size ratio 0.5
+#set origin 0.0,0.5
+set multiplot title "Bitcoin"
+set grid
+unset key
+
+set autoscale
+set xdata time
+set timefmt "%Y-%m-%dT%H:%M:%S"
+set format x "%d"
+#set xlabel "Day"
+
+set title "Blocks"
+set size 0.5,0.5
+set origin 0.0,0.0
+plot "$ADIR/bitcoin" using 1:2 smooth bezier title "Blocks" with lines
+
+set title "Difficulty"
+set size 0.5,0.5
+set origin 0.5,0.0
+plot "$ADIR/bitcoin" using 1:3 title "Difficulty" with lines
+
+#set title "MtGox Pricing"
+set notitle
+set tmargin 2
+set size 1,0.5
+set origin 0.0,0.5
+set key left top
+plot "$ADIR/ticker_bitcoin" using 1:2 smooth bezier title "High" with lines , \
+ "$ADIR/ticker_bitcoin" using 1:3 smooth bezier title "Low" with lines , \
+ "$ADIR/ticker_bitcoin" using 1:4 smooth bezier title "Last" with lines
+
+EOF
+
+sed -e 's/set xlabel.*/set xlabel "Time of Day"/' \
+ -e 's/set format.*/set format x "%H"/' \
+ -e 's/title \"Bitcoin\"/title "Bitcoin Last Day"/' \
+ -e "s/bitcoin/bitcoin_last_day/g" \
+ $PDIR/bitcoin.conf >$PDIR/bitcoin_last_day.conf
diff --git a/gold/scoreboard/modules/available/bitcoin/plot b/gold/scoreboard/modules/available/bitcoin/plot
new file mode 100755
index 00000000..209f662c
--- /dev/null
+++ b/gold/scoreboard/modules/available/bitcoin/plot
@@ -0,0 +1,11 @@
+#!/bin/sh
+#set -x
+HERE=$(dirname $(readlink -f $0))
+. $HERE/../../../profile
+umask 000
+export GDFONTPATH=/usr/share/fonts/truetype/msttcorefonts
+mkdir -p $GDIR
+gnuplot $PDIR/bitcoin.conf> $GDIR/bitcoin.png
+tail -n288 $ADIR/bitcoin > $ADIR/bitcoin_last_day
+tail -n288 $ADIR/ticker_bitcoin > $ADIR/ticker_bitcoin_last_day
+gnuplot $PDIR/bitcoin_last_day.conf > $GDIR/bitcoin_24h.png
diff --git a/gold/scoreboard/modules/available/bitcoin/render b/gold/scoreboard/modules/available/bitcoin/render
new file mode 100644
index 00000000..7ef432ac
--- /dev/null
+++ b/gold/scoreboard/modules/available/bitcoin/render
@@ -0,0 +1,10 @@
+#!/usr/bin/python
+import json,urllib,datetime,sys
+today = datetime.datetime.now()
+
+result = json.load(sys.stdin)
+print today.strftime("%Y-%m-%dT%H:%M:%S"),
+print '%s' % result["blocks"],
+print '%s' % result["difficulty"],
+print '%s' % result["keypoololdest"],
+#print '%s' % result["keypoolsize"]
diff --git a/gold/scoreboard/modules/available/bitcoinpool/bitcoinpool_stats b/gold/scoreboard/modules/available/bitcoinpool/bitcoinpool_stats
new file mode 100755
index 00000000..599ef9ff
--- /dev/null
+++ b/gold/scoreboard/modules/available/bitcoinpool/bitcoinpool_stats
@@ -0,0 +1,11 @@
+#!/usr/bin/python2
+import simplejson,urllib,datetime
+url="http://bitcoinpool.com/pooljson.php"
+f = open('/home/makefu/log/bitcoinpool_stats',mode='a')
+today = datetime.datetime.now()
+
+result = simplejson.load(urllib.urlopen(url))
+print >>f, today.strftime("%Y-%m-%dT%H:%M:%S"),
+for k,v in result.iteritems():
+ print >>f ,'%s' % v,
+print >>f
diff --git a/gold/scoreboard/modules/available/bitcoinslc/bitcoinslc_live b/gold/scoreboard/modules/available/bitcoinslc/bitcoinslc_live
new file mode 100755
index 00000000..9fcbc6af
--- /dev/null
+++ b/gold/scoreboard/modules/available/bitcoinslc/bitcoinslc_live
@@ -0,0 +1,8 @@
+#!/bin/sh
+LF=`basename $0`
+token=`curl -A 'Mozilla/5.0 (X11; Linux x86_64; rv:5.0) Gecko/20100101 Firefox/5.0' http://www.bitcoins.lc -c cookiejar 2>/dev/null | grep -E '_csrf_token' | tail -n 1 | sed -n 's/.*value="\([0-9a-f]*\)".*/\1/p'`
+
+curl --keepalive -v -A 'Mozilla/5.0 (X11; Linux x86_64; rv:5.0) Gecko/20100101 Firefox/5.0' -e http://www.bitcoins.lc/ -d "_csrf_token=$token" -d "action=login" -d "email=$BITCOINSLC_MAIL" -d "password=$BITCOINSLC_PASS" -d "login=Proceed" -b cookiejar -c cookiejar https://www.bitcoins.lc/ -k 2>/dev/null
+#<p><p><strong>Your current total hashrate</strong><br>765.94 Mhash/s</p></p>
+mkdir -p $LDIR
+echo $(date +%Y-%m-%dT%H:%M:%S) `curl -b cookiejar -A 'Mozilla/5.0 (X11; Linux x86_64; rv:5.0) Gecko/20100101 Firefox/5.0' https://www.bitcoins.lc/stats --keepalive 2>/dev/null| sed -n 's/.*Your current total hashrate<\/strong><br>\([0-9.]*\).*/\1/p'` > $ADIR/chinaman_$LF
diff --git a/gold/scoreboard/modules/available/bitcoinslc/bitcoinslc_stats b/gold/scoreboard/modules/available/bitcoinslc/bitcoinslc_stats
new file mode 100755
index 00000000..29508486
--- /dev/null
+++ b/gold/scoreboard/modules/available/bitcoinslc/bitcoinslc_stats
@@ -0,0 +1,18 @@
+#!/usr/bin/python2
+import simplejson,urllib,datetime,sys
+url="https://www.bitcoins.lc/stats.json"
+f = open(sys.env['ADIR']+'/bitcoinslc_stats',mode='a')
+today = datetime.datetime.now()
+
+result = simplejson.load(urllib.urlopen(url))
+print >>f, today.strftime("%Y-%m-%dT%H:%M:%S"),
+# hash_rate current_block active_workers total_workers total_users round_shares valid_round_shares total_shares
+print >>f , ("%s" % result['hash_rate'] ),
+print >>f , ("%s" % result['current_block'] ),
+print >>f , ("%s" % result['active_workers'] ),
+print >>f , ("%s" % result['total_workers'] ),
+print >>f , ("%s" % result['total_users'] ),
+print >>f , ("%s" % result['round_shares'] ),
+print >>f , ("%s" % result['valid_round_shares'] ),
+print >>f , ("%s" % result['total_shares'] ),
+print >>f
diff --git a/gold/scoreboard/modules/available/btcguild/btcguild_stats b/gold/scoreboard/modules/available/btcguild/btcguild_stats
new file mode 100755
index 00000000..58d72f75
--- /dev/null
+++ b/gold/scoreboard/modules/available/btcguild/btcguild_stats
@@ -0,0 +1,22 @@
+#!/usr/bin/python2
+import simplejson,urllib,datetime
+url="http://www.btcguild.com/pool_stats.php"
+f = open('/home/makefu/log/btcguild_stats',mode='a')
+today = datetime.datetime.now()
+
+result = simplejson.load(urllib.urlopen(url))
+try:
+ print >>f, today.strftime("%Y-%m-%dT%H:%M:%S"),
+ # uk_speed round_time round_shares active_workers useast_speed uscentral_speed uswest_speed hash_rate nl_speed
+ print >>f , ("%s" % '0' ).replace('.',''),
+ print >>f , ("%s" % result['round_time'] ).replace('.',''),
+ print >>f , ("%s" % result['round_shares'] ).replace('.',''),
+ print >>f , ("%s" % result['active_workers'] ).replace('.',''),
+ print >>f , ("%s" % result['useast_speed'] ).replace('.',''),
+ print >>f , ("%s" % result['uscentral_speed'] ).replace('.',''),
+ print >>f , ("%s" % result['uswest_speed'] ).replace('.',''),
+ print >>f , ("%s" % result['hash_rate'] ).replace('.',''),
+ print >>f , ("%s" % 0 ).replace('.',''),
+ print >>f
+except:
+ pass
diff --git a/gold/scoreboard/modules/available/btcguild/btcguild_stats_self b/gold/scoreboard/modules/available/btcguild/btcguild_stats_self
new file mode 100755
index 00000000..9cb65590
--- /dev/null
+++ b/gold/scoreboard/modules/available/btcguild/btcguild_stats_self
@@ -0,0 +1,15 @@
+#!/usr/bin/python2
+import simplejson,urllib,datetime,sys
+url="http://www.btcguild.com/api.php?api_key="+sys.env['BTCGUILD_APIKEY']
+f = open('/home/makefu/log/btcguild_stats_self',mode='a')
+today = datetime.datetime.now()
+
+#result = simplejson.load(urllib.urlopen(url))
+#print >>f, today.strftime("%Y-%m-%dT%H:%M:%S"),
+
+# TODO do the right thing with the data (aka this loop is wrong, fixme
+#for k,v in result.iteritems():
+# data = '%s' % v
+# data = data.replace('.','')
+# print >>f ,data,
+#print >>f
diff --git a/gold/scoreboard/modules/available/create_gnuplot b/gold/scoreboard/modules/available/create_gnuplot
new file mode 100755
index 00000000..95a6d170
--- /dev/null
+++ b/gold/scoreboard/modules/available/create_gnuplot
@@ -0,0 +1,196 @@
+#!/bin/sh
+#set -x
+umask 000
+MDIR=/home/makefu/log
+DDIR=/srv/http/tmp
+mkdir -p $DDIR/graphs
+cat > $DDIR/.htaccess << EOF
+order allow,deny
+allow from all
+EOF
+
+#
+# chinaman
+#
+cat > $MDIR/plot/chinaman.conf <<EOF
+set terminal png transparent nocrop enhanced font arial 8
+set xdata time
+set autoscale
+set grid
+set title "Chinaman Temperature"
+set timefmt "%Y-%m-%dT%H:%M:%S"
+set format x "%d"
+set xlabel "Day"
+plot "$MDIR/chinaman_ati_temper" using 1:2 smooth bezier title "gpu0" with lines , \
+"$MDIR/chinaman_ati_temper" using 1:3 smooth bezier title "gpu1" with lines , \
+"$MDIR/chinaman_ati_temper" using 1:4 smooth bezier title "cpu0" with lines , \
+"$MDIR/chinaman_ati_temper" using 1:5 smooth bezier title "rack" with lines
+EOF
+
+sed -e 's/set xlabel.*/set xlabel "Time of Day"/' \
+ -e 's/set format.*/set format x "%H"/' \
+ -e 's/set title.*/set title "Chinaman 24 hours Temperature"/' \
+ -e 's/chinaman_ati_temper/chinaman_last_day/g' \
+ $MDIR/plot/chinaman.conf >$MDIR/plot/chinaman_last_day.conf
+
+cat $MDIR/plot/chinaman.conf | gnuplot > $DDIR/graphs/chinaman_overall.png
+tail -n288 $MDIR/chinaman_ati_temper > $MDIR/chinaman_last_day
+cat $MDIR/plot/chinaman_last_day.conf | gnuplot > $DDIR/graphs/chinaman_24h.png
+rm $MDIR/chinaman_last_day
+
+#
+#bitcoinpool
+#
+cat > $MDIR/plot/bitcoinpool.conf <<EOF
+set terminal png
+set size 1.0, 1.0
+set style function lines
+set origin 0.0, 0.0
+
+set multiplot
+set grid
+unset key
+
+set autoscale
+set xdata time
+set timefmt "%Y-%m-%dT%H:%M:%S"
+set format x "%d"
+#set xlabel "Day"
+
+set title "Efficieny"
+set size 0.5,0.5
+set origin 0.0,0.5
+plot "$MDIR/bitcoinpool_stats" using 1:2 smooth bezier title "Efficieny" with lines
+
+set title "round shares"
+set size 0.5,0.5
+set origin 0.0,0.0
+plot "$MDIR/bitcoinpool_stats" using 1:3 smooth bezier title "round shares" with lines
+
+
+set title "Active Users"
+set size 0.5,0.5
+set origin 0.5,0.0
+plot "$MDIR/bitcoinpool_stats" using 1:5 smooth bezier title "active users" with lines
+set title "Hashrate"
+set size 0.5,0.5
+set origin 0.5,0.5
+plot "$MDIR/bitcoinpool_stats" using 1:7 smooth bezier title "hashrate" with lines
+EOF
+
+sed -e 's/set xlabel.*/set xlabel "Time of Day"/' \
+ -e 's/set format.*/set format x "%H"/' \
+ -e 's/bitcoinpool_stats/bitcoinpool_last_day/g' \
+ $MDIR/plot/bitcoinpool.conf >$MDIR/plot/bitcoinpool_last_day.conf
+
+cat $MDIR/plot/bitcoinpool.conf | gnuplot > $DDIR/graphs/bitcoinpool.png
+tail -n288 $MDIR/bitcoinpool_stats > $MDIR/bitcoinpool_last_day
+cat $MDIR/plot/bitcoinpool_last_day.conf | gnuplot > $DDIR/graphs/bitcoinpool_24h.png
+rm $MDIR/bitcoinpool_last_day
+
+# uk_speed round_time round_shares active_workers useast_speed uscentral_speed uswest_speed hash_rate nl_speed
+cat > $MDIR/plot/btcguild.conf <<EOF
+set terminal png
+set size 1.0, 1.0
+set style function lines
+set origin 0.0, 0.0
+
+set multiplot
+set grid
+unset key
+
+set autoscale
+set xdata time
+set timefmt "%Y-%m-%dT%H:%M:%S"
+set format x "%d"
+#set xlabel "Day"
+
+
+set title "round shares"
+set size 0.5,0.5
+set origin 0.0,0.0
+set yrange [0:3000000]
+plot "$MDIR/btcguild_stats" using 1:4 smooth bezier title "round shares" with lines
+
+
+set title "Active Users"
+set size 0.5,0.5
+set origin 0.5,0.0
+set autoscale
+plot "$MDIR/btcguild_stats" using 1:5 smooth bezier title "active users" with lines
+
+set title "Hashrate"
+set size 0.5,0.5
+set origin 0.5,0.5
+plot "$MDIR/btcguild_stats" using 1:9 smooth bezier title "hashrate" with lines
+
+set title "Hash count"
+set size 0.5,0.5
+set origin 0.0,0.5
+bw=300000
+set autoscale
+bin(x,width)=width*floor(x/width)
+#plot "$MDIR/btcguild_stats" using (bin(\$4,bw)):(1.0) smooth frequency title "time taken" with steps
+
+EOF
+
+sed -e 's/set xlabel.*/set xlabel "Time of Day"/' \
+ -e 's/set format.*/set format x "%H"/' \
+ -e 's/btcguild_stats/btcguild_last_day/g' \
+ $MDIR/plot/btcguild.conf >$MDIR/plot/btcguild_last_day.conf
+
+gnuplot $MDIR/plot/btcguild.conf > $DDIR/graphs/btcguild.png
+tail -n288 $MDIR/btcguild_stats > $MDIR/btcguild_last_day
+gnuplot $MDIR/plot/btcguild_last_day.conf > $DDIR/graphs/btcguild_24h.png
+rm $MDIR/btcguild_last_day
+
+#
+#bitcoinslc
+#
+cat > $MDIR/plot/bitcoinslc.conf <<EOF
+set terminal png
+set size 1.0, 1.0
+set style function lines
+set origin 0.0, 0.0
+
+set multiplot
+set grid
+unset key
+
+set autoscale
+set xdata time
+set timefmt "%Y-%m-%dT%H:%M:%S"
+set format x "%d"
+#set xlabel "Day"
+# hash_rate current_block active_workers total_workers total_users round_shares valid_round_shares total_shares
+
+set title "Hash Rate"
+set size 0.5,0.5
+set origin 0.0,0.5
+plot "$MDIR/bitcoinslc_stats" using 1:2 smooth bezier title "Hash Rate" with lines
+
+set title "active workers"
+set size 0.5,0.5
+set origin 0.0,0.0
+plot "$MDIR/bitcoinslc_stats" using 1:4 smooth bezier title "workers" with lines
+
+
+set title "Round Shares"
+set size 0.5,0.5
+set origin 0.5,0.0
+plot "$MDIR/bitcoinslc_stats" using 1:7 smooth bezier title "round shares" with lines
+set title "Total Shares"
+set size 0.5,0.5
+set origin 0.5,0.5
+plot "$MDIR/bitcoinslc_stats" using 1:7 smooth bezier title "shares" with lines
+EOF
+
+sed -e 's/set xlabel.*/set xlabel "Time of Day"/' \
+ -e 's/set format.*/set format x "%H"/' \
+ -e 's/bitcoinslc_stats/bitcoinslc_last_day/g' \
+ $MDIR/plot/bitcoinslc.conf >$MDIR/plot/bitcoinslc_last_day.conf
+
+cat $MDIR/plot/bitcoinslc.conf | gnuplot > $DDIR/graphs/bitcoinslc.png
+tail -n288 $MDIR/bitcoinslc_stats > $MDIR/bitcoinslc_last_day
+cat $MDIR/plot/bitcoinslc_last_day.conf | gnuplot > $DDIR/graphs/bitcoinslc_24h.png
+rm $MDIR/bitcoinslc_last_day
diff --git a/gold/scoreboard/modules/available/solidcoin/gather b/gold/scoreboard/modules/available/solidcoin/gather
new file mode 100755
index 00000000..8b54bbb8
--- /dev/null
+++ b/gold/scoreboard/modules/available/solidcoin/gather
@@ -0,0 +1,12 @@
+#!/bin/sh
+HERE=$(dirname $(readlink -f $0))
+. $HERE/../../../profile
+LF=solidcoin
+mkdir -p $ADIR
+mkdir -p $LDIR
+
+
+# write into live directory and archive
+$SOLIDCOIND_PATH sc_getinfo | python $HERE/render | tee $LDIR/$LF >> $ADIR/$LF
+
+echo `date +"%Y-%m-%dT%H:%M:%S"` `$KREBSDIR/bin/mooncoin_ticker` | sed -e 's/High: //' -e 's/Low: //' -e 's/Last: //' | tee $LDIR/ticker_${LF}>> $ADIR/ticker_${LF}
diff --git a/gold/scoreboard/modules/available/solidcoin/index b/gold/scoreboard/modules/available/solidcoin/index
new file mode 100755
index 00000000..19c21825
--- /dev/null
+++ b/gold/scoreboard/modules/available/solidcoin/index
@@ -0,0 +1,4 @@
+#!/bin/sh
+HERE=$(dirname $(readlink -f $0))
+$HERE/gather
+$HERE/plot
diff --git a/gold/scoreboard/modules/available/solidcoin/init b/gold/scoreboard/modules/available/solidcoin/init
new file mode 100755
index 00000000..b44a1b6b
--- /dev/null
+++ b/gold/scoreboard/modules/available/solidcoin/init
@@ -0,0 +1,48 @@
+#!/bin/sh
+#set -x
+HERE=$(dirname $(readlink -f $0))
+. $HERE/../../../profile
+mkdir -p $PDIR
+ln -s $HERE/index $HERE/../../active/solidcoin
+cat > $PDIR/solidcoin.conf <<EOF
+set terminal png transparent nocrop enhanced font arial 8 size 500 #size 640, 240
+set style function lines
+#set size ratio 0.5
+#set origin 0.0,0.5
+set multiplot title "Solidcoin"
+set grid
+unset key
+
+set autoscale
+set xdata time
+set timefmt "%Y-%m-%dT%H:%M:%S"
+set format x "%d"
+#set xlabel "Day"
+
+set title "Blocks"
+set size 0.5,0.5
+set origin 0.0,0.0
+plot "$ADIR/solidcoin" using 1:2 smooth bezier title "Blocks" with lines
+
+set title "Difficulty"
+set size 0.5,0.5
+set origin 0.5,0.0
+plot "$ADIR/solidcoin" using 1:3 title "Difficulty" with lines
+
+#set title "Pricing"
+set notitle
+set tmargin 2
+set size 1,0.5
+set origin 0.0,0.5
+set key left top
+plot "$ADIR/ticker_solidcoin" using 1:2 smooth bezier title "High" with lines , \
+ "$ADIR/ticker_solidcoin" using 1:3 smooth bezier title "Low" with lines , \
+ "$ADIR/ticker_solidcoin" using 1:4 smooth bezier title "Last" with lines
+
+EOF
+
+sed -e 's/set xlabel.*/set xlabel "Time of Day"/' \
+ -e 's/set format.*/set format x "%H"/' \
+ -e 's/title \"Solidcoin\"/title "Solidcoin Last Day"/' \
+ -e "s/solidcoin/solidcoin_last_day/g" \
+ $PDIR/solidcoin.conf >$PDIR/solidcoin_last_day.conf
diff --git a/gold/scoreboard/modules/available/solidcoin/plot b/gold/scoreboard/modules/available/solidcoin/plot
new file mode 100755
index 00000000..d1feae88
--- /dev/null
+++ b/gold/scoreboard/modules/available/solidcoin/plot
@@ -0,0 +1,11 @@
+#!/bin/sh
+#set -x
+HERE=$(dirname $(readlink -f $0))
+. $HERE/../../../profile
+umask 000
+export GDFONTPATH=/usr/share/fonts/truetype/msttcorefonts
+mkdir -p $GDIR
+gnuplot $PDIR/solidcoin.conf> $GDIR/solidcoin.png
+tail -n288 $ADIR/solidcoin > $ADIR/solidcoin_last_day
+tail -n288 $ADIR/ticker_solidcoin > $ADIR/ticker_solidcoin_last_day
+gnuplot $PDIR/solidcoin_last_day.conf > $GDIR/solidcoin_24h.png
diff --git a/gold/scoreboard/modules/available/solidcoin/render b/gold/scoreboard/modules/available/solidcoin/render
new file mode 100644
index 00000000..19545b21
--- /dev/null
+++ b/gold/scoreboard/modules/available/solidcoin/render
@@ -0,0 +1,10 @@
+#!/usr/bin/python
+import json,urllib,datetime,sys
+today = datetime.datetime.now()
+
+result = json.load(sys.stdin)
+print today.strftime("%Y-%m-%dT%H:%M:%S"),
+print '%s' % result["blocks"],
+print '%s' % result["difficulty"],
+print '%s' % result["keypoololdest"],
+print '%s' % result["keypoolsize"]
diff --git a/gold/scoreboard/modules/available/static/init b/gold/scoreboard/modules/available/static/init
new file mode 100755
index 00000000..a7dc8859
--- /dev/null
+++ b/gold/scoreboard/modules/available/static/init
@@ -0,0 +1,32 @@
+#!/bin/sh
+# TODO use active modules to find out which to build
+HERE=$(dirname $(readlink -f $0))
+. $HERE/../../../profile
+cat <<EOF >$GDIR/index.html
+<html>
+ <head>
+ <title>Stats</title>
+ </head>
+ <body>
+ <center>
+ <div style="background-color: lightgrey;">
+ <b><a href=http://bitcoin.sipa.be/index.html>Hashrate stats</a>
+ <a href=http://bitcoinx.com/profit/index.php>Mining Calculator</a>
+ </b>
+ </div>
+ <h1>Chinaman</h1>
+ <img src="chinaman_overall.png"> <img src="chinaman_24h.png"><br/>
+ <h1>Solidcoin</h1>
+ <img src="solidcoin.png"> <img src="solidcoin_24h.png"><br/>
+ <h1>Bitcoin</h1>
+ <img src="bitcoin.png"> <img src="bitcoin_24h.png"><br/>
+ <!--<h1>BTCGuild</h1>
+ <img src="btcguild.png"> <img src="btcguild_24h.png"><br/>
+ <h1>Bitcoinpool</h1>
+ <img src="bitcoinpool.png"> <img src="bitcoinpool_24h.png"><br/>
+ <h1>Bitcoins.lc</h1>
+ <img src="bitcoinslc.png"> <img src="bitcoinslc_24h.png"><br/> --!>
+ </center>
+ </body>
+</html>
+EOF
diff --git a/gold/scoreboard/profile b/gold/scoreboard/profile
new file mode 100644
index 00000000..ccd7c2b5
--- /dev/null
+++ b/gold/scoreboard/profile
@@ -0,0 +1,26 @@
+# the webpage directory
+WDIR=/srv/http/tmp
+LDIR=$WDIR/live
+GDIR=$WDIR/graphs/gold
+
+# the root directory
+KREBSDIR=/krebs
+MDIR=$KREBSDIR/gold/scoreboard
+
+# folder where plot configs are written into
+PDIR=$MDIR/plot
+# the archive directory
+ADIR=$MDIR/archive
+
+TEMPDIR=/tmp
+
+# bitcoinslc login/password
+BITCOINSLC_MAIL=
+BITCOINSLC_PASS=
+
+# binaries
+SOLIDCOIND_PATH=/root/bin/solidcoind
+BITCOIND_PATH=/root/bin/bitcoind
+
+# BTCGUILD
+BTCGUILD_APIKEY=
diff --git a/gold/scoreboard/util/run-folder b/gold/scoreboard/util/run-folder
new file mode 100755
index 00000000..ae5c96ac
--- /dev/null
+++ b/gold/scoreboard/util/run-folder
@@ -0,0 +1,6 @@
+#!/bin/sh
+ls -1 $1 | while read script; do
+ echo "Running $script"
+ $1/$script &
+done
+
diff --git a/gold/scoreboard/util/schedule_logger b/gold/scoreboard/util/schedule_logger
new file mode 100755
index 00000000..6d071ba9
--- /dev/null
+++ b/gold/scoreboard/util/schedule_logger
@@ -0,0 +1,13 @@
+#!/bin/sh
+HERE=$(dirname $(readlink -f $0))
+. $HERE/../profile
+RUN_PARTS=$HERE/run-folder
+echo "adding getlogs to crontab"
+
+crontab -l 2>/dev/null | grep -v "$MDIR/modules/active" > $TEMPDIR/currcron
+echo "*/5 * * * * /bin/date >>$TEMPDIR/debug_log && $RUN_PARTS $MDIR/modules/active >>$TEMPDIR/btc_logger_debug_log 2>&1" >> $TEMPDIR/currcron
+
+cat $TEMPDIR/currcron
+
+crontab $TEMPDIR/currcron
+rm $TEMPDIR/currcron
diff --git a/infest/Makefile b/infest/Makefile
new file mode 100644
index 00000000..b96e1d7c
--- /dev/null
+++ b/infest/Makefile
@@ -0,0 +1,2 @@
+%:
+ @echo 'whatever you try: you are made of stupid!' >&2
diff --git a/infest/skel/etc/iptables/rules.v4 b/infest/skel/etc/iptables/rules.v4
new file mode 100644
index 00000000..cda4b903
--- /dev/null
+++ b/infest/skel/etc/iptables/rules.v4
@@ -0,0 +1,28 @@
+# Sane IPTABLES Rules, retiolum-permissive, world-enforcing
+*nat
+:PREROUTING ACCEPT [262534:163260473]
+:POSTROUTING ACCEPT [5060049:305386323]
+:OUTPUT ACCEPT [5060049:305386323]
+COMMIT
+
+*mangle
+:PREROUTING ACCEPT [41358433:26228470872]
+:INPUT ACCEPT [41358389:26228463060]
+:FORWARD ACCEPT [0:0]
+:OUTPUT ACCEPT [37015162:23438396300]
+:POSTROUTING ACCEPT [37015162:23438396300]
+COMMIT
+
+*filter
+:INPUT DROP [9:3336]
+:FORWARD DROP [0:0]
+:OUTPUT ACCEPT [821:311282]
+-A INPUT -i lo -j ACCEPT
+-A INPUT -i retiolum -j ACCEPT
+-A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
+-A INPUT -p tcp -m tcp --dport 22 -j ACCEPT
+-A INPUT -p tcp -m tcp --dport 25 -j ACCEPT
+-A INPUT -p tcp -m tcp --dport 80 -j ACCEPT
+-A INPUT -p tcp -m tcp --dport 443 -j ACCEPT
+-A INPUT -p tcp -m tcp --dport 655 -j ACCEPT
+COMMIT
diff --git a/infest/skel/etc/motd.tail b/infest/skel/etc/motd.tail
new file mode 100644
index 00000000..0b5dfcff
--- /dev/null
+++ b/infest/skel/etc/motd.tail
@@ -0,0 +1,14 @@
+KREBS PAINLOAD (MORE COBRA)
+            
+                         
+                         
+                    
+                         
+                     
+                           
+               
+                       
+             
+                  
+                  
+                       
diff --git a/infest/skel/etc/profile b/infest/skel/etc/profile
new file mode 100755
index 00000000..6c0dc852
--- /dev/null
+++ b/infest/skel/etc/profile
@@ -0,0 +1,60 @@
+#! /bin/sh
+
+export EDITOR=vi
+
+# from original debian /etc/profile
+PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"
+set -u
+alias bc='bc -q'
+alias df='df -h'
+alias du='du -h'
+alias grep='grep --color=auto'
+alias ps?="ps ax | head -n 1;ps ax | fgrep -v ' grep --color=auto ' | grep"
+alias la='ls -lA'
+alias lAtr='ls -lAtr'
+alias ll='ls -l'
+alias ls='ls -h --color=auto --group-directories-first'
+alias vi='vim'
+alias vim='vim -p'
+alias view='vim -R'
+
+set -o notify
+
+if test -n "${BASH_VERSION-}" ; then
+ shopt -s checkhash
+ shopt -s histappend histreedit histverify
+ shopt -s no_empty_cmd_completion
+ complete -d cd
+
+ function comp_sch() {
+ local cword="${COMP_WORDS[$COMP_CWORD]}"
+ COMPREPLY=( $(sch -l "$cword.*" ) )
+ }
+ complete -F comp_sch sch
+fi
+
+export HISTSIZE='65536'
+export HISTFILESIZE="$HISTSIZE"
+export HISTCONTROL='ignoredups'
+
+case "${TERM-dumb}" in
+ linux) PS1_COLOR=34 ;;
+ rxvt-unicode) PS1_COLOR=30 ;;
+ *) PS1_COLOR=39 ;;
+esac
+PS1='\[\033[${PS1_COLOR}m\]$(PS1)\[\033[32m\]\w\[\033[39m\]${PSx-} ' # green \w
+PS1='\[\033[32m\]\w\[\033[m\] ' # green \w
+
+#if test -n "${SSH_CLIENT-}" ; then
+ PS1='\[\033[35m\]\h'" $PS1" # prefix with magenta hostname
+ #TERM=xterm-256color xtermcontrol --bg \#292d29 --fg \#d0d0d0
+#fi
+
+export PATH="/krebs/bin:$PATH"
+
+echo '--' >&2
+test -e ~/TODO && cat ~/TODO >&2
+
+set +u
+
+cd /krebs
diff --git a/infest/skel/etc/rc.local b/infest/skel/etc/rc.local
new file mode 100755
index 00000000..7cf99aeb
--- /dev/null
+++ b/infest/skel/etc/rc.local
@@ -0,0 +1,10 @@
+#! /bin/sh -e
+
+morse() {
+ /krebs/util/morse/morse.sh "$@"
+}
+
+morse -l 42 -f 4000 `hostname`
+morse -l 42 -f 2000 BEREIT
+
+exit 0
diff --git a/infest/skel/home/.ssh/authorized_keys b/infest/skel/home/.ssh/authorized_keys
new file mode 100644
index 00000000..aa7fcc08
--- /dev/null
+++ b/infest/skel/home/.ssh/authorized_keys
@@ -0,0 +1,6 @@
+ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQCl3RTOHd5DLiVeUbUr/GSiKoRWknXQnbkIf+uNiFO+XxiqZVojPlumQUVhasY8UzDzj9tSDruUKXpjut50FhIO5UFAgsBeMJyoZbgY/+R+QKU00Q19+IiUtxeFol/9dCO+F4o937MC0OpAC10LbOXN/9SYIXueYk3pJxIycXwUqhYmyEqtDdVh9Rx32LBVqlBoXRHpNGPLiswV2qNe0b5p919IGcslzf1XoUzfE3a3yjk/XbWh/59xnl4V7Oe7+iQheFxOT6rFA30WYwEygs5As//ZYtxvnn0gA02gOnXJsNjOW9irlxOUeP7IOU6Ye3WRKFRR0+7PS+w8IJLag2xb makefu@servarch
+ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQC3SFNYGRiH0oz44G51MWx+o4cC3Fj+ez5DKO5jjtEFZ0ik8XQ5CrVj7a87WbwABA/XRdIt+3WHoInsRmuDfgcIMYgWC567v2GdOxXg2danEIAhhsOY7KiCBLCfZz7lrFO7F6eJH1RCkwrXY+59hkA+i3LNtLmZazJIb2AGwFF8Xf+b/eWmLhqjCYON+OpvqftbCm9CwhLYOUcVoR94gFAzlMYSCHR7RuBBdLV6zrkmEwFEsKghBI7fcdhwfQxuV5UGVCD58KkTQTgK/Mf2tmAg/muBM+P8s2O6wVbtixmIiiDxfc99C3QD1MYVNHqWgV1Rz9JKfmyuVvFqn7TRuuT1 tv@also
+ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAQEAtDhAxjiCH0SmTGNDqmlKPug9qTf+IFOVjdXfk01lAV2KMVW00CgNo2d5kl5+6pM99K7zZO7Uo7pmSFLSCAg8J6cMRI3v5OxFsnQfcJ9TeGLZt/ua7F8YsyIIr5wtqKtFbujqve31q9xJMypEpiX4np3nLiHfYwcWu7AFAUY8UHcCNl4JXm6hsmPe+9f6Mg2jICOdkfMMn0LtW+iq1KZpw1Nka2YUSiE2YuUtV+V+YaVMzdcjknkVkZNqcVk6tbJ1ZyZKM+bFEnE4VkHJYDABZfELpcgBAszfWrVG0QpEFjVCUq5atpIVHJcWWDx072r0zgdTPcBuzsHHC5PRfVBLEw== makefu@arch
+ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAQEAp83zynhIueJJsWlSEykVSBrrgBFKq38+vT8bRfa+csqyjZBl2SQFuCPo+Qbh49mwchpZRshBa9jQEIGqmXxv/PYdfBFQuOFgyUq9ZcTZUXqeynicg/SyOYFW86iiqYralIAkuGPfQ4howLPVyjTZtWeEeeEttom6p6LMY5Aumjz2em0FG0n9rRFY2fBzrdYAgk9C0N6ojCs/Gzknk9SGntA96MDqHJ1HXWFMfmwOLCnxtE5TY30MqSmkrJb7Fsejwjoqoe9Y/mCaR0LpG2cStC1+37GbHJNH0caCMaQCX8qdfgMVbWTVeFWtV6aWOaRgwLrPDYn4cHWQJqTfhtPrNQ== death@Uriel
+ssh-rsa AAAAB3NzaC1yc2EAAAABJQAAAQB2G4SpJ/UYxmTidUl8ytT6bdNGTdYvv2nmhQyaFBroNit3xdDOVxKvaMEGDuR6ncRugw5BBvrv6iPMTCFluHJxjuh6lk3JrrsJ8CT22ZOGsA593hRoXZOCrs5SxcFkw9EBiCuaHHlWiS9+Dffr6/zpkhH3djTz05uGnDrvtKuV/Zmu5XHAurNn+X3C5S/zk/y0n8o62iSQHVKeNBGO2WYhVce9d65Ucek5dOvXZYVKSe1LeAOKyeHWv+VWP8QlObmfVrQ5l1Pou6WV6Wpo85KBa/mmBJIygC9rrG+gx/1LX7JxStbCu/WoUlUwkSaP2qxWaET9KaSO8+2Wrg5i34ax== samuel@localhost
+ssh-dss AAAAB3NzaC1kc3MAAACBAJE2uV+hM74kPr6IwIp5sDKBmbwDnugLxail3MeVCSPtoLLJ9fRj/HBissAubX2/20d3jPkV5DjipWJGZCxMuNl9pEDrlxL/jOp1HERoq0hj7XdIj/ka+wmLKWU9mLu3gX77M/QzrcpDNBrhYX8FePBHgMZr/gXap2raDZBAE8CjAAAAFQD4QaW+3N07Mvfh1yC/WVsEZ+6nUwAAAIAiQvhzUWUNon5e+UZlvGBlFV8B0isLDf87qxUZHRY0siSSXIlekEtAB0i4aXEVtBOJwsDdJjrCygoBtKT6VMsWCrXnAqvVAd3oVl9YeZ7R4zDPpWTYhERagTFla8yBEOTvEdHZ6Lfn72RDg0IDSnofdMzs6XwlD7c6uo6dRZ7+zgAAAIEAhakAD84QgbPRCwvRBVs4HAbnWps8GTQQx7WN2FC8Twv+Gkltha2RZtD7Artcm7d79kofiGax2NQrrzFKY1/gsBuIe15XhNiLpVqdSj3aK/LRRoNNOOCWvc6uQWXEN7gOVE8JTXyi+RDvzeP4Fn9jp+Ub6OGvWvsaBb9Z6IyfTHo= momo
diff --git a/infest/skel/home/.vimrc b/infest/skel/home/.vimrc
new file mode 100644
index 00000000..22bbf99d
--- /dev/null
+++ b/infest/skel/home/.vimrc
@@ -0,0 +1,31 @@
+" do the right thing all the time
+"
+" Colors and stuff
+syntax on
+set background=dark
+
+
+
+
+" searching
+set hlsearch
+set showmatch
+set ignorecase
+set incsearch
+set wildignore=*.o,*.obj,*.bak,*.pyc
+
+" tabbing
+set tabstop=2
+set et
+set sw=2
+set smarttab
+set autoindent
+
+" vim magic
+filetype plugin indent on
+
+
+" fuck you, help command
+inoremap <F1> <ESC>
+nnoremap <F1> <ESC>
+vnoremap <F1> <ESC>
diff --git a/keydir/lass.pub b/keydir/lass.pub
new file mode 100644
index 00000000..c3688448
--- /dev/null
+++ b/keydir/lass.pub
@@ -0,0 +1 @@
+ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAQEAp83zynhIueJJsWlSEykVSBrrgBFKq38+vT8bRfa+csqyjZBl2SQFuCPo+Qbh49mwchpZRshBa9jQEIGqmXxv/PYdfBFQuOFgyUq9ZcTZUXqeynicg/SyOYFW86iiqYralIAkuGPfQ4howLPVyjTZtWeEeeEttom6p6LMY5Aumjz2em0FG0n9rRFY2fBzrdYAgk9C0N6ojCs/Gzknk9SGntA96MDqHJ1HXWFMfmwOLCnxtE5TY30MqSmkrJb7Fsejwjoqoe9Y/mCaR0LpG2cStC1+37GbHJNH0caCMaQCX8qdfgMVbWTVeFWtV6aWOaRgwLrPDYn4cHWQJqTfhtPrNQ== death@uriel
diff --git a/keydir/makefu.pub b/keydir/makefu.pub
new file mode 100644
index 00000000..6092ec46
--- /dev/null
+++ b/keydir/makefu.pub
@@ -0,0 +1 @@
+ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQCl3RTOHd5DLiVeUbUr/GSiKoRWknXQnbkIf+uNiFO+XxiqZVojPlumQUVhasY8UzDzj9tSDruUKXpjut50FhIO5UFAgsBeMJyoZbgY/+R+QKU00Q19+IiUtxeFol/9dCO+F4o937MC0OpAC10LbOXN/9SYIXueYk3pJxIycXwUqhYmyEqtDdVh9Rx32LBVqlBoXRHpNGPLiswV2qNe0b5p919IGcslzf1XoUzfE3a3yjk/XbWh/59xnl4V7Oe7+iQheFxOT6rFA30WYwEygs5As//ZYtxvnn0gA02gOnXJsNjOW9irlxOUeP7IOU6Ye3WRKFRR0+7PS+w8IJLag2xb makefu@pornocauster
diff --git a/keydir/matz.pub b/keydir/matz.pub
new file mode 100644
index 00000000..35988998
--- /dev/null
+++ b/keydir/matz.pub
@@ -0,0 +1 @@
+ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDGJd2nwNiiaH+raIdSmlRhBpmv9cJ9yNiRfu9u7fGdHVVEN9sJhKL4jsZisPyaoQmEVQ96EUHRpQpqy9PyUsbP3gA4O3IQEzw5KUO5hFSJ/QoSDP0u1FAYqW6JHCSldrbs/wZbZLcO+3ykMnGWJh70jhhQTFQPCKGSjEFBvNveAS1FF6qIlXmJbRjtb3PUtPrryXHXtpzp1lQ7nfsExiBKW1/WaSL5/Wy/nj1C6LqDz4ONTRZ6KcO064ZpyDMMRaiFY/d8fT8mkY7es2fspPvJWlLAHpwIPW1vR75P0iuyN0MaVL1PoV8ISo04+cG3/4Hwkws7K2qh8GurCACmw2WR matz@dei.local
diff --git a/keydir/tv.pub b/keydir/tv.pub
new file mode 100644
index 00000000..d295bbe4
--- /dev/null
+++ b/keydir/tv.pub
@@ -0,0 +1 @@
+ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDDYv5OkVrnerkzJwgi7ol7HzcWJf4oWCJTX84trFX5vgJXu1zMvSe+koY8xpnMOd7WHF2wgsjjrFlMuixTrfMPc/OjvG2N1TlnvzlFD8ivTW/AJzDwNxT//niqAYAZ9kmb8e/zE/SyNHSKZcyEKGiiW2+YW9wWHPYRP/XiNEjLP3BeTGScMwWr001V/8m7ne4SGHrE1FbHbHqaBXgqUFgnvzMY3CsfDafODZlj5xSMNGHyLGNNKvu3YR1crcAjbQrBXBdwaArThFxp+e2uWrnffshlks6WtRyR1AFVjc/gxEG74Axq1AHY6EJm2Fw/JdFNiYQ7yyQZHS9bZJYjgnWF tv@nomic
diff --git a/keydir/uriel.pub b/keydir/uriel.pub
new file mode 100644
index 00000000..431c510b
--- /dev/null
+++ b/keydir/uriel.pub
@@ -0,0 +1 @@
+ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAACAQDvw8SenwAMo/fz/UiosuxVg5TJgL4xkG2JSJsC/N1CKW4LmYt2YPQpW88XjtpBw1rrkIV3ZTxa0vMeQmixqJhnLf3/ZS6nocQLhCMiBSVvFkr5TekeyBpEnjdv6MNM84A1rCXmJNtlsIh1V2OzVlNoZkzaOzQo81uyFmQPYPS9VJo4sGYHip58lIBPdGzXmLEl6waL0Hy6RA2S83tildt3z0OncT+zoZrwqm71tii3oPk7Q5sSBBMMdDjQqyEXXcXaD6wpokhNMiZVr7xdoN8wnb1FNHYWgubJPoqgQ+2lw0TcUEZGk9rUWddepEYYZM18tpBkhvucluTpNiy1P78qyX3Yqkt3t2SvCmrMvogt/ytjUma5AZR+BtN8ri8/FkBn0ehBJXg+dOd4EjJ3HahrBUy4IC2xeK4Z95i0sYKJgVUe8+E5c81PbKiV1dE6ETsxX3gFJypDWiszWNNt+PYmVRK0rVacTkpHXCJRbfAhEiXhFstoENDRK7o77r+v8xJpTScM2cZRl9r9OwLi+MuTyDTC45NhBdWkKB2Z65NRqtKGChrJecZ9CizqrXcw4tvhLUuUZNIFU1eYwywaXJBTEoV3nlgZjVOdjgVg/wfYXCbpxHXwx2VAtqeQtSLu9uwuPlMKctMjgOvibNmqGNJINwkL7HyyiikdAoICwytXAQ== lass@uriel
diff --git a/news/.gitignore b/news/.gitignore
new file mode 100644
index 00000000..07e6e472
--- /dev/null
+++ b/news/.gitignore
@@ -0,0 +1 @@
+/node_modules
diff --git a/news/GfindFeeds4bot b/news/GfindFeeds4bot
new file mode 100755
index 00000000..a5439c5a
--- /dev/null
+++ b/news/GfindFeeds4bot
@@ -0,0 +1,17 @@
+#! /bin/sh
+# usage: GfindFeeds4bot QUERY
+set -euf
+
+export query="$1"
+export data="$(
+ curl -sS "https://www.google.com/uds/GfindFeeds?v=1.0&q=$query"
+)"
+
+node <<EOF
+ query = process.env.query
+ data = JSON.parse(process.env.data)
+
+ data.responseData.entries.forEach(function (entry, index) {
+ console.log(query + index + '|' + entry.url)
+ })
+EOF
diff --git a/news/feeds b/news/feeds
new file mode 100644
index 00000000..50fe0667
--- /dev/null
+++ b/news/feeds
@@ -0,0 +1,2 @@
+HN|http://news.ycombinator.com/rss
+Fefe|http://blog.fefe.de/rss.xml
diff --git a/news/ircasy.py b/news/ircasy.py
new file mode 120000
index 00000000..68231591
--- /dev/null
+++ b/news/ircasy.py
@@ -0,0 +1 @@
+../Reaktor/IRC/ircasy.py \ No newline at end of file
diff --git a/news/new_feeds b/news/new_feeds
new file mode 100644
index 00000000..a5de8d72
--- /dev/null
+++ b/news/new_feeds
@@ -0,0 +1,183 @@
+aje|http://www.aljazeera.com/Services/Rss/?PostingId=2007731105943979989|#news
+aktuelle_themen|http://bundestag.de/service/rss/Bundestag_Aktuelle_Themen.rss|#news #bundestag
+allafrica|http://allafrica.com/tools/headlines/rdf/latest/headlines.rdf|#news
+anon|http://anoninsiders.net/feed/|#news
+antirez|http://antirez.com/rss|#news
+arbor|http://feeds2.feedburner.com/asert/|#news
+archlinux|http://www.archlinux.org/feeds/news/|#news
+ars|http://feeds.arstechnica.com/arstechnica/index?format=xml|#news
+asiaone_asia|http://news.asiaone.com/rss/asia|#news
+asiaone_business|http://business.asiaone.com/rss.xml|#news
+asiaone_sci|http://news.asiaone.com/rss/science-and-tech|#news
+asiaone_world|http://news.asiaone.com/rss/world|#news
+augustl|http://augustl.com/atom.xml|#news
+bbc|http://feeds.bbci.co.uk/news/rss.xml|#news
+bdt_drucksachen|http://www.bundestag.de/dip21rss/bundestag_drucksachen.rss|#news #bundestag
+bdt_plenarproto|http://www.bundestag.de/rss_feeds/plenarprotokolle.rss|#news #bundestag
+bdt_pressemitteilungen|http://bundestag.de/service/rss/Bundestag_Presse.rss|#news #bundestag
+bdt_wd|http://bundestag.de/service/rss/Bundestag_WD.rss|#news #bundestag
+bitcoinboard|http://bitcoinboard.net/feed/|#news #financial
+bitcoinpakistan|https://bitcoinspakistan.com/feed/|#news #financial
+businessweek|http://www.businessweek.com/feeds/homepage.rss|#news
+cancer|http://feeds.feedburner.com/ncinewsreleases?format=xml|#news
+carta|http://feeds2.feedburner.com/carta-standard-rss|#news
+catholic_news|http://feeds.feedburner.com/catholicnewsagency/dailynews|#news
+cbc_busi|http://rss.cbc.ca/lineup/business.xml|#news
+cbc_offbeat|http://www.cbc.ca/cmlink/rss-offbeat|#news
+cbc_pol|http://rss.cbc.ca/lineup/politics.xml|#news
+cbc_tech|http://rss.cbc.ca/lineup/technology.xml|#news
+cbc_top|http://rss.cbc.ca/lineup/topstories.xml|#news
+ccc|http://www.ccc.de/rss/updates.rdf|#news
+chan_b|http://boards.4chan.org/b/index.rss|#brainfuck
+chan_biz|http://boards.4chan.org/biz/index.rss|#news #brainfuck
+chan_g|http://boards.4chan.org/g/index.rss|#news #brainfuck
+chan_int|http://boards.4chan.org/int/index.rss|#news #brainfuck
+cna|http://www.channelnewsasia.com/starterkit/servlet/cna/rss/home.xml|#news
+cryptanalysis|https://cryptanalys.is/rss.php|#news
+coindesk|http://feeds.feedburner.com/CoinDesk?format=xml|#news #financial
+coinspotting|http://coinspotting.com/rss|#news #financial
+cryptoarticles|http://www.cryptoarticles.com/crypto-news?format=rss|#news
+cryptocoinsnews|http://www.cryptocoinsnews.com/feed/|#news #financial
+cryptogon|http://www.cryptogon.com/?feed=rss2|#news
+csm|http://rss.csmonitor.com/feeds/csm|#news
+csm_world|http://rss.csmonitor.com/feeds/world|#news
+cyberguerrilla|https://www.cyberguerrilla.org/a/2012/?feed=rss2|#news
+danisch|http://www.danisch.de/blog/feed/|#news
+dwn|http://deutsche-wirtschafts-nachrichten.de/feed/customfeed/|#news
+ecat|http://ecat.com/feed|#news
+eia_press|http://www.eia.gov/rss/press_rss.xml|#news
+eia_today|http://www.eia.gov/rss/todayinenergy.xml|#news
+embargowatch|https://embargowatch.wordpress.com/feed/|#news
+ethereum-comments|http://blog.ethereum.org/comments/feed|#news
+ethereum|http://blog.ethereum.org/feed|#news
+europa_ric|http://ec.europa.eu/research/infocentre/rss/infocentre-rss.xml|#news
+eu_survei|http://www.eurosurveillance.org/public/RSSFeed/RSS.aspx|#news
+exploitdb|http://www.exploit-db.com/rss.xml|#news
+fars|http://www.farsnews.com/rss.php|#news #test
+faz_feui|http://www.faz.net/rss/aktuell/feuilleton/|#news
+faz_politik|http://www.faz.net/rss/aktuell/politik/|#news
+faz_wirtschaft|http://www.faz.net/rss/aktuell/wirtschaft/|#news #financial
+fbi|http://www.fbi.gov/homepage/RSS|#news #bullerei
+fbi_news|http://www.fbi.gov/news/news_blog/rss.xml|#news
+fbi_press|http://www.fbi.gov/news/current/rss.xml|#news #bullerei
+fbi_stories|http://www.fbi.gov/news/stories/all-stories/rss.xml|#news #bullerei
+fedreserve|http://www.federalreserve.gov/feeds/press_all.xml|#news #financial
+fefe|http://blog.fefe.de/rss.xml|#news
+forbes|http://www.forbes.com/forbes/feed2/|#news
+forbes_realtime|http://www.forbes.com/real-time/feed2/|#news
+fox|http://feeds.foxnews.com/foxnews/latest|#news
+fvwm|http://freecode.com/projects/fvwm/releases.atom|#news
+geheimorganisation|http://geheimorganisation.org/feed/|#news
+GerForPol|http://www.german-foreign-policy.com/de/news/rss-2.0|#news
+gmanet|http://www.gmanetwork.com/news/rss/news|#news
+golem|http://www.golem.de/rss.php?feed=RSS1.0|#news
+google|http://news.google.com/?output=rss|#news
+guardian_uk|http://feeds.theguardian.com/theguardian/uk-news/rss|#news
+gulli|http://ticker.gulli.com/rss/|#news
+handelsblatt|http://www.handelsblatt.com/contentexport/feed/schlagzeilen|#news #financial
+heise|http://heise.de.feedsportal.com/c/35207/f/653902/index.rss|#news
+hindu_business|http://www.thehindubusinessline.com/?service=rss|#news #financial
+hindu|http://www.thehindu.com/?service=rss|#news
+hintergrund|http://www.hintergrund.de/index.php?option=com_bca-rss-syndicator&feed_id=8|#news
+HN|http://news.ycombinator.com/rss|#news
+ign|http://feeds.ign.com/ign/all|#news
+independent|http://www.independent.com/rss/headlines/|#news
+indymedia|http://de.indymedia.org/RSS/newswire.xml|#news
+info_libera|http://www.informationliberation.com/rss.xml|#news
+klagen-gegen-rundfuckbeitrag|http://klagen-gegen-rundfunkbeitrag.blogspot.com/feeds/posts/default|#news
+korea_herald|http://www.koreaherald.com/rss_xml.php|#news
+linuxinsider|http://www.linuxinsider.com/perl/syndication/rssfull.pl|#news
+lisp|http://planet.lisp.org/rss20.xml|#news
+liveleak|http://www.liveleak.com/rss|#news
+lolmythesis|http://lolmythesis.com/rss|#news
+LtU|http://lambda-the-ultimate.org/rss.xml|#news
+lukepalmer|http://lukepalmer.wordpress.com/feed/|#news
+mit|http://web.mit.edu/newsoffice/rss-feeds.feed?type=rss|#news
+mongrel2_master|https://github.com/zedshaw/mongrel2/commits/master.atom|#news
+nds|http://www.nachdenkseiten.de/?feed=atom|#news
+netzpolitik|https://netzpolitik.org/feed/|#news
+newsbtc|http://newsbtc.com/feed/|#news #financial
+nnewsg|http://www.net-news-global.net/rss/rssfeed.xml|#news
+npr_busi|http://www.npr.org/rss/rss.php?id=1006|#news
+npr_headlines|http://www.npr.org/rss/rss.php?id=1001|#news
+npr_pol|http://www.npr.org/rss/rss.php?id=1012|#news
+npr_world|http://www.npr.org/rss/rss.php?id=1004|#news
+nsa|http://www.nsa.gov/rss.shtml|#news #bullerei
+nytimes|http://rss.nytimes.com/services/xml/rss/nyt/World.xml|#news
+phys|http://phys.org/rss-feed/|#news
+piraten|https://www.piratenpartei.de/feed/|#news
+polizei_berlin|http://www.berlin.de/polizei/presse-fahndung/_rss_presse.xml|#news #bullerei
+presse_polizei|http://www.presseportal.de/rss/polizei.rss2|#news #bullerei
+presseportal|http://www.presseportal.de/rss/presseportal.rss2|#news
+prisonplanet|http://prisonplanet.com/feed.rss|#news
+proofmarket|https://proofmarket.org/feed_problem|#news
+rawstory|http://www.rawstory.com/rs/feed/|#news
+reddit_4chan|http://www.reddit.com/r/4chan/new/.rss|#news #brainfuck
+reddit_anticonsum|http://www.reddit.com/r/Anticonsumption/new/.rss|#news
+reddit_btc|http://www.reddit.com/r/Bitcoin/new/.rss|#news #financial
+reddit_consp|http://reddit.com/r/conspiracy/.rss|#news
+reddit_sci|http://www.reddit.com/r/science/.rss|#news
+reddit_tech|http://www.reddit.com/r/technology/.rss|#news
+reddit_tpp|http://www.reddit.com/r/twitchplayspokemon/.rss|#news #tpp
+reddit_world|http://www.reddit.com/r/worldnews/.rss|#news
+r-ethereum|http://www.reddit.com/r/ethereum/.rss|#news
+reuters|http://feeds.reuters.com/Reuters/worldNews|#news
+reuters-odd|http://feeds.reuters.com/reuters/oddlyEnoughNews?format=xml|#news
+rt|http://rt.com/rss/news/|#news
+schallurauch|http://feeds.feedburner.com/SchallUndRauch|#news
+sciencemag|http://news.sciencemag.org/rss/current.xml|#news
+scmp|http://www.scmp.com/rss/91/feed|#news
+sec-db|http://feeds.security-database.com/SecurityDatabaseToolsWatch|#news
+shackspace|http://shackspace.de/?feed=rss2|#news
+shz_news|http://www.shz.de/nachrichten/newsticker/rss|#news
+sky_busi|http://news.sky.com/feeds/rss/business.xml|#news
+sky_pol|http://news.sky.com/feeds/rss/politics.xml|#news
+sky_strange|http://news.sky.com/feeds/rss/strange.xml|#news
+sky_tech|http://news.sky.com/feeds/rss/technology.xml|#news
+sky_world|http://news.sky.com/feeds/rss/world.xml|#news
+slashdot|http://rss.slashdot.org/Slashdot/slashdot|#news
+slate|http://feeds.slate.com/slate|#news
+spiegel_eil|http://www.spiegel.de/schlagzeilen/eilmeldungen/index.rss|#news
+spiegelfechter|http://feeds.feedburner.com/DerSpiegelfechter?format=xml|#news
+spiegel_top|http://www.spiegel.de/schlagzeilen/tops/index.rss|#news
+standardmedia_ke|http://www.standardmedia.co.ke/rss/headlines.php|#news
+stern|http://www.stern.de/feed/standard/all/|#news
+stz|http://www.stuttgarter-zeitung.de/rss/topthemen.rss.feed|#news
+sz_politik|http://rss.sueddeutsche.de/rss/Politik|#news
+sz_wirtschaft|http://rss.sueddeutsche.de/rss/Wirtschaft|#news #financial
+sz_wissen|http://suche.sueddeutsche.de/rss/Wissen|#news
+tagesschau|http://www.tagesschau.de/newsticker.rdf|#news
+taz|http://taz.de/Themen-des-Tages/!p15;rss/|#news
+telegraph_finance|http://www.telegraph.co.uk/finance/rss|#news #financial
+telegraph_pol|http://www.telegraph.co.uk/news/politics/rss|#news
+telegraph_uk|http://www.telegraph.co.uk/news/uknews/rss|#news
+telegraph_world|http://www.telegraph.co.uk/news/worldnews/rss|#news
+telepolis|http://www.heise.de/tp/rss/news-atom.xml|#news
+the_insider|http://www.theinsider.org/rss/news/headlines-xml.asp|#news
+tigsource|http://www.tigsource.com/feed/|#news
+times|http://www.thetimes.co.uk/tto/news/rss|#news
+tinc|http://tinc-vpn.org/news/index.rss|#news
+topix_b|http://www.topix.com/rss/wire/de/berlin|#news
+torr_bits|http://feeds.feedburner.com/TorrentfreakBits|#news
+torrentfreak|http://feeds.feedburner.com/Torrentfreak|#news
+torr_news|http://feed.torrentfreak.com/Torrentfreak/|#news
+travel_warnings|http://feeds.travel.state.gov/ca/travelwarnings-alerts|#news
+truther|http://truthernews.wordpress.com/feed/|#news
+un_afr|http://www.un.org/apps/news/rss/rss_africa.asp|#news
+un_am|http://www.un.org/apps/news/rss/rss_americas.asp|#news
+un_eu|http://www.un.org/apps/news/rss/rss_europe.asp|#news
+un_me|http://www.un.org/apps/news/rss/rss_mideast.asp|#news
+un_pac|http://www.un.org/apps/news/rss/rss_asiapac.asp|#news
+un_top|http://www.un.org/apps/news/rss/rss_top.asp|#news
+us_math_society|http://www.ams.org/cgi-bin/content/news_items.cgi?rss=1|#news
+vimperator|https://sites.google.com/a/vimperator.org/www/blog/posts.xml|#news
+weechat|http://dev.weechat.org/feed/atom|#news
+wp_world|http://feeds.washingtonpost.com/rss/rss_blogpost|#news
+xkcd|https://xkcd.com/rss.xml|#news
+yahoo|http://news.yahoo.com/rss/|#news
+zdnet|http://www.zdnet.com/news/rss.xml|#news
+reddit_prog|http://www.reddit.com/r/programming/new/.rss|#news
+bmj|[object Object]|#news
+dod|http://www.defense.gov/news/afps2.xml|#news
+greenpeace|http://feeds.feedburner.com/GreenpeaceNews|#news
+painload|https://github.com/krebscode/painload/commits/master.atom|#news
diff --git a/news/newsbot.js b/news/newsbot.js
new file mode 100644
index 00000000..18b5f780
--- /dev/null
+++ b/news/newsbot.js
@@ -0,0 +1,272 @@
+var IRC = require('irc')
+var FeedParser = require('feedparser')
+var Request = require('request')
+var Parse = require('shell-quote').parse
+var FS = require('fs')
+var HTTP = require('http')
+var FormData = require('form-data')
+var URL = require('url')
+
+var irc_server = 'ire.retiolum'
+var master_nick = 'knews'
+var news_channel = '#news'
+var feeds_file = 'new_feeds'
+var feedbot_loop_delay = 60 * 1000 // [ms]
+var feedbot_create_delay = 200 // [ms]
+var url_shortener_host = 'go'
+
+var slaves = {}
+
+function main () {
+ var master = new IRC.Client(irc_server, master_nick, {
+ channels: [ news_channel ],
+ })
+
+ master.on('message' + news_channel, function (nick, text, message) {
+ if (is_talking_to(master_nick, text)) {
+ var request = parse_request(text)
+ if (request) {
+ return run_command(request.method, request.params, function (error, result) {
+ if (error) {
+ return master.say(news_channel, '4' + error)
+ } else {
+ return master.say(news_channel, result)
+ }
+ })
+ }
+ }
+ })
+
+ master.once('registered', function () {
+ // read feeds file and create a feedbot for each entry
+ FS
+ .readFileSync(feeds_file)
+ .toString()
+ .split('\n')
+ //.filter((function () {
+ // var n = 2;
+ // return function () {
+ // return n-- > 0
+ // }
+ //})())
+ .filter(function (line) {
+ return line.length > 0
+ })
+ .forEach(function (line, i) {
+ var parts = line.split('|')
+ if (parts.length !== 3) {
+ console.log('bad new_feeds line ' + lines + ': ' + line)
+ return
+ }
+
+ var nick = parts[0]
+ var uri = parts[1]
+ var channels = parts[2].split(' ')
+
+ setTimeout(function () {
+ return create_feedbot(nick, uri, channels)
+ }, i*feedbot_create_delay)
+ })
+ })
+}
+
+function create_feedbot (nick, uri, channels) {
+ var client = new IRC.Client(irc_server, nick, {
+ channels: channels,
+ autoRejoin: false,
+ })
+
+ slaves[nick] = {
+ client: client,
+ nick: nick,
+ uri: uri,
+ }
+
+ // say text in every joined channel
+ function broadcast (text) {
+ Object.keys(client.chans).forEach(function (channel) {
+ client.say(channel, text)
+ })
+ }
+
+ function broadcast_new_item (item) {
+ return getShortLink(item.link, function (error, shortlink) {
+ return broadcast(item.title + ' ' + shortlink)
+ })
+ }
+
+ client.once('registered', loop_feedparser)
+ client.once('registered', deaf_myself)
+
+ client.on('invite', function (channel, from, message) {
+ client.join(channel, null)
+ })
+
+ client.on('error', function (error) {
+ console.log('Error:', error)
+ })
+
+ // TODO stopping criteria
+ function loop_feedparser () {
+ try {
+ var request = Request(uri)
+ var feedparser = new FeedParser()
+ } catch (error) {
+ return broadcast('4' + error)
+ }
+
+ request.on('error', function (error) {
+ broadcast('4request ' + error)
+ })
+ request.on('response', function (response) {
+ if (response.statusCode !== 200) {
+ return this.emit('error', new Error('Bad status code'))
+ }
+ var output = response
+ switch (response.headers['content-encoding']) {
+ case 'gzip':
+ output = zlib.createGunzip()
+ response.pipe(output)
+ break
+ case 'deflate':
+ output = zlib.createInflate()
+ response.pipe(output)
+ break
+ }
+ this.pipe(feedparser)
+ })
+
+ var items = []
+
+ feedparser.on('error', function (error) {
+ broadcast('4feedparser ' + error)
+ return continue_loop()
+ })
+ feedparser.on('readable', function () {
+ for (var item; item = this.read(); ) {
+ items.push(item)
+ }
+ })
+ feedparser.on('end', function () {
+
+ if (client.lastItems) {
+ items.forEach(function (item) {
+ if (!client.lastItems.hasOwnProperty(item.title)) {
+ broadcast_new_item(item)
+ }
+ })
+ }
+
+ client.lastItems = {}
+ items.forEach(function (item) {
+ client.lastItems[item.title] = true
+ })
+
+ return continue_loop()
+ })
+
+ function continue_loop () {
+ setTimeout(loop_feedparser, feedbot_loop_delay)
+ }
+ }
+ function deaf_myself () {
+ client.send('mode', nick, '+D')
+ }
+}
+
+// return true if text "is talking to" my_nick
+function is_talking_to (my_nick, text) {
+ return text.slice(0, my_nick.length) === my_nick
+ && text[my_nick.length] === ':'
+}
+
+function parse_request (text) {
+ var parse = Parse(text)
+ return {
+ method: parse[1],
+ params: parse.slice(2),
+ }
+}
+
+function run_command (methodname, params, callback) {
+ var method = methods[methodname]
+ if (method) {
+ return method(params, callback)
+ } else {
+ return callback(new Error('dunno what ' + methodname + ' is'));
+ }
+}
+
+function getShortLink (link, callback) {
+ var form = new FormData()
+ try {
+ form.append('uri', link)
+ } catch (err) {
+ console.log('link:', link)
+ throw err
+ }
+
+ var request = HTTP.request({
+ method: 'post',
+ host: url_shortener_host,
+ path: '/',
+ headers: form.getHeaders(),
+ })
+ form.pipe(request)
+
+ request.on('response', function (response) {
+ var data = ''
+ response.on('data', function (chunk) {
+ data += chunk
+ })
+ response.on('end', function () {
+ callback(null, data.replace(/\r\n$/,'') + '#' + URL.parse(link).host)
+ })
+ })
+}
+
+var methods = {}
+methods.add = function (params, callback) {
+ if (slaves.hasOwnProperty(params[0])) {
+ return callback(new Error('name already taken'))
+ } else {
+ create_feedbot(params[0], params[1], [news_channel])
+ return callback(null)
+ }
+}
+methods.del = function (params, callback) {
+ var nick = params[0]
+ if (slaves.hasOwnProperty(nick)) {
+ var slave = slaves[nick]
+ slave.client.disconnect()
+ delete slaves[nick]
+ return callback(null)
+ } else {
+ return callback(new Error('botname not found'))
+ }
+}
+methods.save = function (params, callback) {
+ var feeds = Object.keys(slaves)
+ .map(function (nick) {
+ return slaves[nick]
+ })
+ .map(function (slave) {
+ return [
+ slave.nick,
+ slave.uri,
+ Object.keys(slave.client.chans).join(' '),
+ ].join('|')
+ }).join('\n') + '\n'
+ return FS.writeFile(feeds_file, feeds, function (error) {
+ if (error) {
+ return callback(error)
+ } else {
+ return callback(null, 'Feeds saved')
+ }
+ })
+}
+
+
+if (require.main === module) {
+ main()
+}
diff --git a/news/newsbot.py b/news/newsbot.py
new file mode 100644
index 00000000..2f8bf635
--- /dev/null
+++ b/news/newsbot.py
@@ -0,0 +1,259 @@
+from ircasy import asybot
+import threading
+from asyncore import loop
+import logging
+import os
+import subprocess
+
+import feedparser
+import math
+import re
+import subprocess
+from datetime import datetime
+from time import sleep
+#testbot = NewsBot('ire', 6667, 'crabman23', ['#retiolum'], loglevel=logging.DEBUG)
+
+
+
+## Newsbot Controller Class
+class NewsBot(asybot):
+ def __init__(self, name, channels=['#test'], server='ire', port=6667, timeout=60, loglevel=logging.ERROR, url_shortener='http://localhost'):
+ asybot.__init__(self, server, port, name, channels, loglevel=loglevel)
+ self.to = timeout
+ self.url_shortener = url_shortener
+ self.ctrl_chan = channels[0]
+
+ def send_msg(self, target, msg):
+ for line in msg.split('\n'):
+ self.PRIVMSG(target, line)
+
+ def on_privmsg(self, prefix, command, params, rest):
+ args_array = rest.split()
+ if params[0] == self.nickname:
+ answer = self.read_message(args_array)
+ self.send_msg(prefix.split('!')[0], answer)
+ elif args_array[0].strip(':') == self.nickname:
+ answer = self.read_message(args_array[1:])
+ self.send_msg([params[0]], answer)
+
+ def on_invite(self, prefix, command, params, rest):
+ for chan in rest.split():
+ self.push('JOIN ' + chan)
+ self.channels.append(chan)
+
+ def read_message(self, args):
+ try:
+ if args[0] in [x for x in commands.__dict__.keys() if x.find('_')]:
+ func = getattr(commands, args[0])
+ return func(self, args)
+ else:
+ return 'command not found'
+ except Exception as e:
+ return 'mimimi: ' + str(e)
+
+#Commands of NewsBot
+class commands():
+ def add(self, args):
+ if args[1] not in bots and args[1] != self.nickname:
+ try:
+ bot = RssBot(args[2], args[1], [self.ctrl_chan], url_shortener=self.url_shortener)
+ except Exception as e:
+ return 'add_mimi: ' + str(e)
+ sleep
+ bots[args[1]] = bot
+ bot.start_rss()
+ return "bot " + args[1] + " added"
+ else:
+ return args[1] + ' does already exist'
+
+ def delete(self, args):
+ bots[args[1]].stop()
+ del bots[args[1]]
+ return "bot " + args[1] + " deleted"
+
+ def rename(self, args):
+ if args[1] in bots:
+ if args[2] in bots:
+ return args[2] + ' already taken'
+ else:
+ bots[args[1]].connection.nick(args[2])
+ bots[args[1]].name = args[2]
+ bots[args[2]] = bots[args[1]]
+ del bots[args[1]]
+ return 'renamed ' + args[1] + ' in ' + args[2]
+ else:
+ return args[1] + ' does not exist'
+
+ def save(self, args):
+ output_buffer = ''
+ for bot in bots:
+ if bots[bot].loop:
+ output_buffer += bot + '|' + bots[bot].url + '|' + ' '.join(bots[bot].channels) + '\n'
+
+ F = open(feedfile, "w")
+ F.writelines(output_buffer)
+ F.close()
+
+ return "bots saved to " + feedfile
+
+ def caps(self, args):
+ return ' '.join([x for x in commands.__dict__.keys() if x.find('_')])
+
+ def list(self, args):
+ output_buffer = ''
+ for bot in bots:
+ output_buffer += bot + ' url: ' + bots[bot].url + '\n'
+ return output_buffer
+
+ def info(self, args):
+ if args[1] in bots:
+ output_buffer = ''
+ for data in ['title', 'link', 'updated']:
+ if data in bots[args[1]].feed.feed:
+ output_buffer += data + ': ' + bots[args[1]].feed.feed[data] + '\n'
+ output_buffer += 'lastnew: ' + bots[args[1]].lastnew.isoformat() + '\n'
+ output_buffer += 'rssurl: ' + bots[args[1]].url
+ return output_buffer
+ else:
+ return 'bot not found'
+
+ def search(self, args):
+ output = subprocess.check_output(['./GfindFeeds4bot', args[1]]).decode()
+ return output
+
+ def uptime(self, args):
+ output = subprocess.check_output(['uptime']).decode()
+ return output
+
+
+##RssBot Class
+class RssBot(asybot):
+ def __init__(self, rss, name, chans=['#news'], url_shortener="http://localhost", server='ire', port=6667, timeout=60):
+ try:
+ asybot.__init__(self, server, port, name, chans)
+ except Exception as e:
+ print(e)
+ self.url = rss
+ self.to = timeout
+ self.oldnews = []
+ self.loop = True
+ self.lastnew = datetime.now()
+ self.url_shortener = url_shortener
+ self.retry = True
+
+ def on_nickinuse(*bla):
+ pass
+
+ def start_rss(self):
+ self.upd_loop = threading.Thread(target=self.updateloop)
+ self.upd_loop.start()
+
+ def stop(self):
+ self.disconnect()
+ self.loop = False
+
+ def updateloop(self):
+ failcount=0
+ while True:
+ try:
+ self.feed = feedparser.parse(self.url)
+ for entry in self.feed.entries:
+ self.oldnews.append(entry.link)
+ break
+ except:
+ print(self.nickname + ': rss timeout occured')
+ failcount+=1
+ if failcount>20:
+ print(self.nickname + ' is broken, going to die')
+ self.stop()
+ return
+ while self.loop:
+ try:
+ self.feed = feedparser.parse(self.url)
+ for entry in self.feed.entries:
+ if not entry.link in self.oldnews:
+ #try:
+ # self.send_msg(entry.title + " " + entry.link + " com: " + entry.comments)
+ #except AttributeError:
+ shorturl = self.shortenurl(entry.link)
+ self.sendall(entry.title + ' ' + shorturl)
+ self.oldnews.append(entry.link)
+ self.lastnew = datetime.now()
+ except Exception as e:
+ print(str(datetime.now().hour) + ':' + str(datetime.now().minute) + ' ' + self.nickname + ': ' + str(e))
+ sleep(self.to)
+
+ def shortenurl(self, url):
+ while True:
+ try:
+ shorturl = subprocess.check_output(["curl", "-sS", "-F", "uri=" + url, self.url_shortener]).decode().strip('\n').strip('\r') + '#' + url.partition('://')[2].partition('/')[0]
+ return shorturl
+ except:
+ print('url shortener error')
+ sleep(1)
+
+ def last(self, target, num):
+ for feed in [x for x in self.feed.entries][:num]:
+ self.send_msg(target, feed.title + ' ' + self.shortenurl(feed.link))
+
+ def sendall(self, string):
+ try:
+ self.send_msg(self.channels, string)
+ except Exception as e:
+ print(self.nickname + ': failed sending all to ' + str(self.channels) + ' because of ' + str(e));
+
+ def send_msg(self, target, string):
+ if self.connected:
+ for line in string.split('\n'):
+ while len(line)>0:
+ if len(line) < 450:
+ self.PRIVMSG(target, line)
+ line = ''
+ else:
+ space = line.rfind(" ", 1, 450)
+ self.PRIVMSG(target, line[:space])
+ line=line[space:]
+ else:
+ self.reconnect()
+ while not self.connected:
+ print(self.nickname + ' waiting for reconnect')
+ sleep(10)
+ self.send_msg(target, string)
+
+ def on_invite(self, prefix, command, params, rest):
+ for chan in rest.split():
+ self.push('JOIN ' + chan)
+ self.channels.append(chan)
+
+ def on_welcome(self, prefix, command, params, rest):
+ asybot.on_welcome(self, prefix, command, params, rest)
+ self.push('MODE ' + self.nickname + ' +D')
+
+feedfile = 'new_feeds'
+url_shortener = 'http://go'
+init_channels = ['#news']
+
+bots = {}
+knews = NewsBot('knews', init_channels, url_shortener=url_shortener)
+
+#config file reading
+F = open(feedfile, "r")
+lines = F.readlines()
+F.close()
+
+for line in lines:
+ line = line.strip('\n')
+ linear = line.split('|')
+ bot = RssBot(linear[1], linear[0], linear[2].split(), url_shortener=url_shortener)
+ bot.start_rss()
+ bots[linear[0]] = bot
+
+def thread_handler():
+ while True:
+ try:
+ loop()
+ except Exception as e:
+ print('ohoh ' + e)
+
+th = threading.Thread(target=thread_handler)
+th.start()
diff --git a/news/package.json b/news/package.json
new file mode 100644
index 00000000..52c19177
--- /dev/null
+++ b/news/package.json
@@ -0,0 +1,32 @@
+{
+ "name": "news",
+ "version": "0.0.0",
+ "description": "",
+ "main": "newsbot.js",
+ "dependencies": {
+ "feedparser": "*",
+ "form-data": "*",
+ "irc": "*",
+ "request": "*",
+ "shell-quote": "*"
+ },
+ "devDependencies": {},
+ "scripts": {
+ "test": "echo \"Error: no test specified\" && exit 1"
+ },
+ "repository": {
+ "type": "git",
+ "url": "https://github.com/krebscode/painload"
+ },
+ "keywords": [
+ "irc",
+ "news",
+ "feed"
+ ],
+ "author": "krebs",
+ "license": "WTFPLv2",
+ "bugs": {
+ "url": "https://github.com/krebscode/painload/issues"
+ },
+ "homepage": "https://github.com/krebscode/painload"
+}
diff --git a/query/jquery/index b/query/jquery/index
new file mode 100755
index 00000000..3c49dac9
--- /dev/null
+++ b/query/jquery/index
@@ -0,0 +1,19 @@
+#! /bin/sh
+set -euf
+
+# cd //
+cd $(dirname $(readlink -f $0))/../..
+
+for x in \
+ github/tmpvar \
+ github/mikeal \
+ github/NV \
+ github/tautologistics \
+; do
+ export NODE_PATH="$(readlink -f submodules/$x)${NODE_PATH+:$NODE_PATH}"
+done
+
+# ensure query is ready
+#git submodule update --init
+
+exec node submodules/github/visionmedia/query "$@"
diff --git a/query/realpath/install b/query/realpath/install
new file mode 100755
index 00000000..74671c81
--- /dev/null
+++ b/query/realpath/install
@@ -0,0 +1,41 @@
+#! /bin/sh
+set -euf
+
+cd `dirname $0`
+
+target=../../bin/realpath
+
+findexe() {
+ OLDIFS="$IFS"
+ IFS=:
+ for d in $PATH; do
+ f="$d/$1"
+ if test -f "$f" -a -x "$f"; then
+ echo $f
+ IFS="$OLDIFS"
+ return
+ fi
+ done
+ IFS="$OLDIFS"
+ ! :
+}
+
+if exe="`findexe readlink`" && $exe -f install | grep -q /install$; then
+ ! test -e $target || rm $target
+ cat > $target <<EOF
+#! /bin/sh -euf
+exec $exe -f "\${1-\$file_name}"
+EOF
+ chmod +x $target
+ echo '//query/realpath: install readlink' >&2
+ exit
+fi
+
+if type ruby 1>/dev/null 2>/dev/null; then
+ ln -snf ../query/realpath/src/realpath.rb $target
+ echo '//query/realpath: install realpath.rb' >&2
+ exit
+fi
+
+echo 'Error 2: your system is made of stupid!'
+exit 23
diff --git a/query/realpath/src/realpath.rb b/query/realpath/src/realpath.rb
new file mode 100755
index 00000000..8e19785b
--- /dev/null
+++ b/query/realpath/src/realpath.rb
@@ -0,0 +1,10 @@
+#!/usr/bin/env ruby
+
+begin
+ $stdout.print File.realpath(ARGV[0])
+ $stdout.print "\n"
+rescue Exception => err
+ $stderr.print err
+ $stderr.print "\n"
+ exit 1
+end
diff --git a/retiolum/Makefile b/retiolum/Makefile
new file mode 100644
index 00000000..54683469
--- /dev/null
+++ b/retiolum/Makefile
@@ -0,0 +1,54 @@
+.PHONY: update all install hosts
+
+EXES := update_tinc_hosts fillxx update-retiolum-hosts
+
+all: update links
+
+links:
+ for x in $(EXES); do ln -snf ../retiolum/bin/$$x ../bin; done
+
+
+install: upgrade
+ sudo cp scripts/tinc_setup/tinc-up /etc/tinc/retiolum/tinc-up
+
+upgrade: update
+ if ! sudo diff -u scripts/tinc_setup/tinc-up /etc/tinc/retiolum/tinc-up; then \
+ sudo cp scripts/tinc_setup/tinc-up /etc/tinc/retiolum/tinc-up; \
+ sudo pkill -HUP tincd || :; \
+ fi
+
+update: hosts
+ bin/update_tinc_hosts "create magic" || :;
+ bin/update_tinc_hosts restart
+ sudo pkill -HUP tincd || :;
+
+startup:
+ scripts/autostart/create-startup.sh
+
+hosts:
+ bin/update-retiolum-hosts || :;
+ sudo bin/patch-retiolum-hosts
+
+test:
+ @export PATH="$(CURDIR)/bin:$(PATH)"; \
+ tests="`find t -type f -executable`"; \
+ i=1; \
+ pids="";\
+ n=`echo "$$tests" | wc -l`; \
+ echo $$i..$$n; \
+ for exe in $$tests; do \
+ { \
+ ./$$exe; \
+ ret=$$?; \
+ case $$ret in 0) result=ok;; *) result='not ok';; esac; \
+ echo $$result $$i - $$exe; \
+ exit $$ret;\
+ } & \
+ pids="$${pids} $$!" \
+ i=$$(( i+1 )); \
+ done; \
+ ret=0;\
+ for pid in $$pids; do \
+ wait $$pid || ret=23;\
+ done; \
+ exit $$ret;
diff --git a/retiolum/README b/retiolum/README
new file mode 100644
index 00000000..6e39f1d5
--- /dev/null
+++ b/retiolum/README
@@ -0,0 +1,52 @@
+Retiolum Darknet Module for Krebs
+========================
+
+Enter the darknet with the help of tinc retiolum
+
+Getting Started
+-------------
+
+as root:
+
+ wget -O- http://tinc.krebsco.de | HOSTN=yourfavoritename sh
+
+( or use curl)
+
+Get the hosts
+-------------
+
+ wget http://euer.krebsco.de/retiolum/hosts.tar.gz # for all the hosts
+ wget http://euer.krebsco.de/retiolum/supernodes.tar.gz # only for supernodes, (deploy on wrt routers for example)
+
+ # quick update
+ curl http://euer.krebsco.de/retiolum/supernodes.tar.gz | gunzip | tar x -C /etc/tinc/retiolum/hosts
+
+Update your hosts file
+----------------------
+
+to resolve the krebs nodes in the darknet
+
+ make -C krebs/retiolum update
+
+
+Graphs
+------
+
+ # in the darknet
+ firefox http://pigstarter/graphs/retiolum
+ # in the internet,anonymous graphs
+ firefox http://pigstarter.de/graphs/retiolum/
+
+Other cool stuff
+---------------
+in bin/ there are some cool scripts which are partly needed and partly
+totally unnecessary to work with retiolum.
+
+As all the scripts are not too horribly long, be sure to use
+`cat bin/SCRIPTNAME` to get an understanding of what they do
+
+besides that in scripts/ there are 3 more scripts which perform pretty
+sophisticated tasks like finding instances via multicast or writing graphs
+of the current retiolum network. Try them if you dare :)
+
+
diff --git a/retiolum/bin/announce_pubkey b/retiolum/bin/announce_pubkey
new file mode 100755
index 00000000..ce5aed19
--- /dev/null
+++ b/retiolum/bin/announce_pubkey
@@ -0,0 +1,35 @@
+#!/bin/sh
+set -euf
+HOST="${1:-}"
+
+usage (){
+cat <<EOF
+usage: $0 HOSTNAME
+
+also, you are made of stupid
+EOF
+exit 23
+}
+
+[ "x$HOST" = "x" ] && usage
+
+CHANNEL="#krebsco"
+IRCHOST="irc.freenode.net"
+PORT=6667
+RETIOLUM="/etc/tinc/retiolum"
+PUBFILE="$RETIOLUM/hosts/$HOST"
+
+if [ ! -e $PUBFILE ] ;then
+ echo "cannot find $PUBFILE - host $HOST wrong?" ;
+ echo
+ usage
+fi
+
+NICK="${HOST}_$((RANDOM%666))"
+
+( echo "NICK $NICK";
+ echo "USER $NICK $IRCHOST bla : $NICK";
+ echo "JOIN $CHANNEL";
+ sleep 23;
+ sed "s/^\(.*\)/PRIVMSG $CHANNEL : \1/" $PUBFILE;
+ sleep 5; ) | telnet $IRCHOST $PORT
diff --git a/retiolum/bin/check-free-retiolum-v4 b/retiolum/bin/check-free-retiolum-v4
new file mode 100755
index 00000000..3492f7f6
--- /dev/null
+++ b/retiolum/bin/check-free-retiolum-v4
@@ -0,0 +1,21 @@
+#! /bin/sh
+netname=retiolum
+myipv4=${1-10.243.0.-1}
+v4num=${myipv4##*.}
+printf "Retard check: "
+if [ "$v4num" -gt 0 -a "$v4num" -lt "256" ];
+then
+ printf "No retard detected\n"
+ cd /etc/tinc/$netname/hosts
+ printf "Check if ip is still free: "
+ for i in `ls -1`; do
+ if grep -q -e $myipv4\$ $i ;then
+ echo "Host IP already taken by $i! "
+ exit 1
+ fi
+ done
+ printf "Passed\n"
+else
+ printf "you are made of stupid. bailing out\n"
+ exit 1
+fi
diff --git a/retiolum/bin/check-free-retiolum-v6 b/retiolum/bin/check-free-retiolum-v6
new file mode 100755
index 00000000..20f87efe
--- /dev/null
+++ b/retiolum/bin/check-free-retiolum-v6
@@ -0,0 +1,2 @@
+#! /bin/sh
+exit 0
diff --git a/retiolum/bin/create-host-tar b/retiolum/bin/create-host-tar
new file mode 100755
index 00000000..48ce26d5
--- /dev/null
+++ b/retiolum/bin/create-host-tar
@@ -0,0 +1,15 @@
+#!/bin/sh
+set -euf
+if [ x"${1:-}" = "x" ];then
+ echo "usage: $0 DIRECTORY"
+ exit 1
+fi
+
+WEBDIR=$1
+HOSTDIR=${HOSTDIR:-../hosts}
+HOSTFILE=$WEBDIR/hosts.tar.gz
+
+cd $(dirname $(readlink -f $0))
+rm -f $HOSTFILE
+tar czf $HOSTFILE -C $HOSTDIR .
+chmod a+rx $HOSTFILE
diff --git a/retiolum/bin/create-supernode-tar b/retiolum/bin/create-supernode-tar
new file mode 100755
index 00000000..1e90c26c
--- /dev/null
+++ b/retiolum/bin/create-supernode-tar
@@ -0,0 +1,13 @@
+#!/bin/sh
+set -euf
+if [ x"${1:-}" = "x" ];then
+ echo "usage: $0 DIRECTORY"
+ exit 1
+fi
+HOSTDIR=${HOSTDIR:-../hosts}
+WEBDIR=$1
+HOSTFILE=$WEBDIR/supernodes.tar.gz
+cd $(dirname $(readlink -f $0))
+rm -f $HOSTFILE
+tar czf $HOSTFILE -C $HOSTDIR `python ../scripts/adv_graphgen/tinc_stats/Supernodes.py |cut -d\ -f1`
+chmod a+rx $HOSTFILE
diff --git a/retiolum/bin/dump-graph b/retiolum/bin/dump-graph
new file mode 100755
index 00000000..87539f49
--- /dev/null
+++ b/retiolum/bin/dump-graph
@@ -0,0 +1,9 @@
+#! /bin/sh
+set -euf
+
+t0="`date '+%Y-%m-%d %H:%M:%S'`"
+systemctl kill --signal=USR2 tincd@retiolum
+sleep 5
+journalctl --since="$t0" | sed -n '
+ s/.*tinc\.retiolum\[[0-9]\+\]: \([^ ]\+\) to \([^ ]\+\) at \([^ ]\+\) .*$/\1 \2 \3/p
+'
diff --git a/retiolum/bin/fillxx b/retiolum/bin/fillxx
new file mode 100755
index 00000000..5e558362
--- /dev/null
+++ b/retiolum/bin/fillxx
@@ -0,0 +1,6 @@
+#! /bin/sh
+while echo $1 | grep -q xx; do
+ xx=`od -An -tx1 -N 1 /dev/urandom | tr -d \ `
+ set -- `echo $1 | sed s/xx/$xx/`
+done
+echo $1
diff --git a/retiolum/bin/find-active-nodes b/retiolum/bin/find-active-nodes
new file mode 100755
index 00000000..2c316d0e
--- /dev/null
+++ b/retiolum/bin/find-active-nodes
@@ -0,0 +1,21 @@
+#! /bin/dash
+set -eu
+cd /etc/tinc/retiolum/hosts
+for name in `
+ grep '^[[:space:]]*Address[[:space:]]*=' * |
+ cut -d: -f1 | sort | uniq
+`; do
+ if eval "`sed -n '
+ s/[[:space:]]\+//g
+ s/^\(Address\|Port\)=\(.*\)/\1="\${\1+\$\1\n}\2"/p
+ ' $name`"; then
+ port=${Port-655}
+ for host in $Address; do
+ if nc -zw 2 $host $port 2>/dev/null; then
+ echo "$name [('$host', $port)]"
+ fi &
+ done
+ wait
+ fi &
+done
+wait
diff --git a/retiolum/bin/find-supernodes b/retiolum/bin/find-supernodes
new file mode 100755
index 00000000..2c316d0e
--- /dev/null
+++ b/retiolum/bin/find-supernodes
@@ -0,0 +1,21 @@
+#! /bin/dash
+set -eu
+cd /etc/tinc/retiolum/hosts
+for name in `
+ grep '^[[:space:]]*Address[[:space:]]*=' * |
+ cut -d: -f1 | sort | uniq
+`; do
+ if eval "`sed -n '
+ s/[[:space:]]\+//g
+ s/^\(Address\|Port\)=\(.*\)/\1="\${\1+\$\1\n}\2"/p
+ ' $name`"; then
+ port=${Port-655}
+ for host in $Address; do
+ if nc -zw 2 $host $port 2>/dev/null; then
+ echo "$name [('$host', $port)]"
+ fi &
+ done
+ wait
+ fi &
+done
+wait
diff --git a/retiolum/bin/get-tinc-dir b/retiolum/bin/get-tinc-dir
new file mode 100755
index 00000000..3f48b2cd
--- /dev/null
+++ b/retiolum/bin/get-tinc-dir
@@ -0,0 +1,9 @@
+#!/bin/ksh
+case `uname -a` in
+ Linux*|CYGWIN*|MING*) echo "/etc/tinc"
+ ;;
+ SunOS*|Darwin*) echo "/usr/local/etc/tinc"
+ ;;
+ *) echo "/etc/tinc"
+ ;;
+esac
diff --git a/retiolum/bin/hosts b/retiolum/bin/hosts
new file mode 100755
index 00000000..44dbd88d
--- /dev/null
+++ b/retiolum/bin/hosts
@@ -0,0 +1,13 @@
+#! /bin/sh
+set -euf
+
+netname=${1-retiolum}
+
+cd /etc/tinc/$netname/hosts
+
+for i in `ls`; do
+ sed -En '
+ s|^ *Subnet *= *([^ /]*)(/[0-9]*)? *$|\1 '$i'.'$netname' '$i'|p
+ ' $i
+done | sort
+
diff --git a/retiolum/bin/install b/retiolum/bin/install
new file mode 100755
index 00000000..9e4459fb
--- /dev/null
+++ b/retiolum/bin/install
@@ -0,0 +1,18 @@
+#! /bin/sh
+#
+#
+#
+set -euf
+
+trap 'echo "${comment+$comment
+}You are made of stupid!">&2; exit 23' EXIT
+
+if ! test -e /usr/sbin/tincd; then
+ if grep -iq ubuntu /etc/issue; then
+ sudo apt-get install --yes tinc
+ else
+ comment='Install tinc to continue.' exit
+ fi
+fi
+
+trap - EXIT
diff --git a/retiolum/bin/ipv6 b/retiolum/bin/ipv6
new file mode 100755
index 00000000..34c6de71
--- /dev/null
+++ b/retiolum/bin/ipv6
@@ -0,0 +1,35 @@
+#! /bin/sh
+#
+# Manage IPv6 of the retiolum interface.
+#
+# usage: ipv6 {start,stop}
+#
+set -euf
+
+if test `id -u` != 0; then
+ echo "we're going sudo..." >&2
+ exec sudo "$0" "$@"
+ exit 23 # go to hell
+fi
+
+file=/etc/tinc/retiolum/hosts/`hostname`
+addr=`sed -n 's|^Subnet *= *\(42:[0-9A-Fa-f:]*/128\)|\1|p' $file`
+route=42::/16
+
+start() {
+ stop
+ ip -6 addr add $addr dev retiolum
+ ip -6 route add $route dev retiolum
+}
+
+stop() {
+ ip -6 addr del $addr dev retiolum 2>/dev/null || :
+ ip -6 route del $route dev retiolum 2>/dev/null || :
+}
+
+## dispatch
+case "$1" in
+ (start) start;;
+ (stop) stop;;
+ (*) echo "You're made of stupid" 2>/dev/null; exit 23;;
+esac
diff --git a/retiolum/bin/list-known-public-addresses b/retiolum/bin/list-known-public-addresses
new file mode 100755
index 00000000..21b1c389
--- /dev/null
+++ b/retiolum/bin/list-known-public-addresses
@@ -0,0 +1,38 @@
+#! /bin/sh
+#
+# printf '%s %s\n' hostname IP-address for each known public retiolum address
+#
+set -eu
+
+_list_hostname_address() {
+ cd /etc/tinc/retiolum/hosts
+ grep --with-filename '^Address' * |
+ sed -n '
+ s/: */ /
+ s/ *= */ /
+ s/ Address \([a-zA-Z0-9.:_]*\) \?.*/ \1/p'
+}
+_lookup_address() {
+ sed '
+ /:/!{/ [0-9.]*$/!{s/ / `dig +short /;s/$/` \&/}}
+ s/^/echo /
+ $s/$/\nwait/
+ ' | sh
+}
+_filter_public() {
+ sed '
+ # drop private IPv4 addresses
+ / 10\./d
+ / 172\.\(1[6-9]\|2[0-9]\|3[01]\)\./d
+ / 192\.168\./d
+ # TODO drop private IPv6 addresses
+ '
+}
+_filter_online() {
+ awk '
+ {print"nc -zw 2 "$2" 655 2>/dev/null && echo "$1" "$2" &"}
+ END {print"wait"}
+ ' | sh
+}
+
+_list_hostname_address | _lookup_address | _filter_public
diff --git a/retiolum/bin/nodes-to-json b/retiolum/bin/nodes-to-json
new file mode 100644
index 00000000..ca9d3c8c
--- /dev/null
+++ b/retiolum/bin/nodes-to-json
@@ -0,0 +1,37 @@
+#!/usr/bin/python
+
+def parse_hosts_path(path="/etc/tinc/retiolum/hosts"):
+ import os
+ import re
+
+ needle_addr = re.compile("Subnet\s*=\s*(.*)/[0-9]+")
+ needle_port = re.compile("Port\s*=\s*(.*)")
+ for f in os.listdir(path):
+ with open(path+"/"+f) as of:
+ addrs = []
+ port = "655"
+
+ for line in of.readlines():
+
+ addr_found = needle_addr.match(line)
+ if addr_found:
+ addrs.append(addr_found.group(1))
+
+ port_found = needle_port.match(line)
+ if port_found:
+ port = port_found.group(1)
+
+ if addrs : yield (f ,[(addr ,int(port)) for addr in addrs])
+
+
+
+if __name__ == "__main__":
+ """
+ usage
+ """
+ import json
+ import sys
+ db={}
+ for host,addrs in parse_hosts_path(sys.argv[1] if len(sys.argv) > 2 else "/etc/tinc/retiolum/hosts"):
+ db[host] = addrs
+ print(json.dumps(db))
diff --git a/retiolum/bin/patch-retiolum-hosts b/retiolum/bin/patch-retiolum-hosts
new file mode 100755
index 00000000..69d7b92c
--- /dev/null
+++ b/retiolum/bin/patch-retiolum-hosts
@@ -0,0 +1,13 @@
+#! /bin/sh
+#
+# Apply custom retiolum hosts patches, if any.
+#
+# usage: patch-retiolum-hosts [--reverse]
+#
+set -euf
+
+patch=/etc/tinc/retiolum/hosts.patch
+
+if test -e $patch; then
+ patch -N -d /etc/tinc/retiolum/hosts -r - "$@" < $patch
+fi
diff --git a/retiolum/bin/supernode-update-hosts-and-hup b/retiolum/bin/supernode-update-hosts-and-hup
new file mode 100755
index 00000000..b6b03c69
--- /dev/null
+++ b/retiolum/bin/supernode-update-hosts-and-hup
@@ -0,0 +1,44 @@
+#! /bin/sh
+#
+# @oxberg we do put this into crontab:
+# * * * * * /supernode-update-hosts-and-hup
+#
+set -euf
+
+cd /etc/tinc/retiolum/hosts
+
+temp1="`mktemp`"
+temp2="`mktemp`"
+trap "rm -f $temp1 $temp2" EXIT INT TERM
+
+old_commit="`cat .commit 2>/dev/null || :`"
+
+_hrefs() {
+ sed -n 's/href="\([^"]\+\)"/\n&\n/gp' |
+ sed -n 's/^href="\([^"]\+\)"$/\1/p'; }
+
+if curl -fsS \
+ "https://github.com/krebscode/painload/tree/master/retiolum/hosts" |
+ _hrefs |
+ grep '^/krebscode/painload/blob/' |
+ grep -v "/blob/$old_commit/" >$temp1
+then
+
+ new_commit=`sed 's|^/krebscode/painload/blob/\([^/]*\)/.*|\1|;q' $temp1`
+
+ sed '
+ s|^/krebscode/painload/blob/[^/]*/retiolum/hosts/\([^/]*\)$|\1|
+ ' $temp1 > $temp2
+
+ xargs rm -v -f <$temp2
+
+ sed "
+ s|^.*$|https://raw.github.com/krebscode/painload/$new_commit/retiolum/hosts/&|
+ " $temp2 > $temp1
+
+ wget -qi- < $temp1
+
+ echo $new_commit > .commit
+
+ pkill -HUP tincd
+fi
diff --git a/retiolum/bin/tinc b/retiolum/bin/tinc
new file mode 100755
index 00000000..ffa1dbee
--- /dev/null
+++ b/retiolum/bin/tinc
@@ -0,0 +1,18 @@
+#! /bin/sh
+#
+set -euf
+
+init() {
+ f=/tmp/retiolum.GraphDumpFile
+ if ! test -f $f; then
+ touch $f &&
+ chown -v tincd: $f
+ fi
+
+ modprobe -v tun
+}
+
+if init; then
+ exec tincd --user=tincd --net=retiolum "$@"
+fi
+
diff --git a/retiolum/bin/tinc2json b/retiolum/bin/tinc2json
new file mode 120000
index 00000000..31bd0775
--- /dev/null
+++ b/retiolum/bin/tinc2json
@@ -0,0 +1 @@
+../scripts/adv_graphgen/tinc_stats/Log2JSON.py \ No newline at end of file
diff --git a/retiolum/bin/update-retiolum-hosts b/retiolum/bin/update-retiolum-hosts
new file mode 100755
index 00000000..0eae1c29
--- /dev/null
+++ b/retiolum/bin/update-retiolum-hosts
@@ -0,0 +1,14 @@
+#! /bin/sh
+set -euf
+
+if test "${nosudo-false}" != true -a `id -u` != 0; then
+ echo "we're going sudo..." >&2
+ exec sudo "$0" "$@"
+ exit 23 # go to hell
+fi
+
+# cd //retiolum
+cd -P "$(dirname "$0")/.."
+
+mkdir -p /etc/tinc/retiolum/hosts
+rsync -va -I --delete hosts/ /etc/tinc/retiolum/hosts/
diff --git a/retiolum/bin/update_tinc_hosts b/retiolum/bin/update_tinc_hosts
new file mode 100755
index 00000000..46076cf2
--- /dev/null
+++ b/retiolum/bin/update_tinc_hosts
@@ -0,0 +1,53 @@
+#! /bin/sh
+set -euf
+
+if test "${nosudo-false}" != true -a `id -u` != 0; then
+ echo "we're going sudo..." >&2
+ exec sudo "$0" "$@"
+ exit 23 # go to hell
+fi
+
+list_hosts=$(cd -P "$(dirname "$0")" && pwd -P)/hosts
+
+hosts() { "$list_hosts"; }
+
+hosts="${hosts-/etc/hosts}"
+
+bs='# BEGIN OF RETIOLUM'
+es='# END OF RETIOLUM'
+
+case "${*-I am made of stupid}" in
+ (start|restart)
+ hosts | egrep "^(10|42)" | $0 replace magic
+ ;;
+ (stop)
+ $0 clear magic
+ ;;
+ ('print magic')
+ echo "$bs"
+ cat
+ echo "$es"
+ ;;
+ ('create magic')
+ $0 has magic || $0 print magic >> $hosts < /dev/null
+ $0 start
+ ;;
+ ('destroy magic')
+ if $0 has magic; then
+ cache="`cat $hosts`"
+ echo "$cache" | sed "/^$bs$/,/^$es$/d" > $hosts
+ fi
+ ;;
+ ('has magic')
+ grep -q "^$bs$" $hosts && grep -q "^$es$" $hosts
+ ;;
+ ('replace magic')
+ $0 destroy magic && $0 print magic >> $hosts
+ ;;
+ ('clear magic')
+ $0 replace magic < /dev/null
+ ;;
+ (*)
+ echo 'Error 1: You are made of stupid!' >&2
+ exit 23
+esac
diff --git a/retiolum/doc/cronjob b/retiolum/doc/cronjob
new file mode 100644
index 00000000..3f640311
--- /dev/null
+++ b/retiolum/doc/cronjob
@@ -0,0 +1,7 @@
+cron-eintrag fuer automatisches hosts-update
+
+ueberschreibt keine bearbeitete host-dateien
+if ping -c 1 euer.krebsco.de -W 5 &>/dev/null; then (curl http://euer.krebsco.de/retiolum/hosts.tar.gz | tar xzk -C /etc/tinc/retiolum/hosts/);fi
+
+ueberschreibt bearbeitete hostdateien
+if ping -c 1 euer.krebsco.de -W 5 &>/dev/null; then (curl http://euer.krebsco.de/retiolum/hosts.tar.gz | tar xz -C /etc/tinc/retiolum/hosts/);fi
diff --git a/retiolum/doc/device.c b/retiolum/doc/device.c
new file mode 100644
index 00000000..7ffe51dd
--- /dev/null
+++ b/retiolum/doc/device.c
@@ -0,0 +1,37 @@
+#include "system.h"
+#include "conf.h"
+#include "logger.h"
+#include "net.h"
+#include "route.h"
+#include "utils.h"
+#include "xalloc.h"
+
+int device_fd = -1;
+char *device = NULL;
+char *iface = NULL;
+
+
+bool setup_device(void) {
+ device = xstrdup("null");
+ iface = xstrdup("null");
+ device_fd = -1;
+
+ return true;
+}
+
+void close_device(void) {
+ free(device);
+ free(iface);
+}
+
+bool read_packet(vpn_packet_t *packet) {
+
+ return true;
+}
+
+bool write_packet(vpn_packet_t *packet) {
+ return true;
+}
+
+void dump_device_stats(void) {
+}
diff --git a/retiolum/doc/git_checkout_only_hosts b/retiolum/doc/git_checkout_only_hosts
new file mode 100644
index 00000000..2286169d
--- /dev/null
+++ b/retiolum/doc/git_checkout_only_hosts
@@ -0,0 +1,11 @@
+# Reference
+http://jasonkarns.com/blog/subdirectory-checkouts-with-git-sparse-checkout/
+
+# Code
+
+ git init painload
+ cd painload
+ git remote add -f origin https://github.com/krebscode/painload.git
+ git config core.sparsecheckout true
+ echo retiolum/hosts/ >> .git/info/sparse-checkout
+ git pull origin master
diff --git a/retiolum/doc/highping b/retiolum/doc/highping
new file mode 100644
index 00000000..e3d9a47c
--- /dev/null
+++ b/retiolum/doc/highping
@@ -0,0 +1,2 @@
+in der tinc.conf darf nicht zu einem Host connectet werden der einen DNS namen benutzt.
+wenn ein nicht erreichbarer DNS name versucht wird zu erreichen pausiert tinc jedesmal alle transfers bis der DNS-Request einen Timeout hat.
diff --git a/retiolum/doc/install_dotcloud b/retiolum/doc/install_dotcloud
new file mode 100644
index 00000000..ea976c55
--- /dev/null
+++ b/retiolum/doc/install_dotcloud
@@ -0,0 +1,85 @@
+The Dotcloud provided by duostack.com is a application development platform
+for simple deployment of your stuff.
+
+It also provides an ssh-interface via:
+<code>
+ dotcloud ssh project.module
+</code>
+
+to be able to use it without the hassle of going through the api, you will
+need to create an own dsa-key for ssh to use and deploy this public key on
+the machine
+<code>
+ ssh-keygen -t dsa -f dotcloud_project.dss
+ cat dotcloud_project.dss.pub (copy the contents to the dotclouds
+ ~/.ssh/authorized_keys2)
+</code>
+find your dotcloud host ip via
+<code>
+ dotcloud info project.module
+</code>
+
+You will gain a user shell with
+<code>
+ ssh dotcloud@module.project -p 5960
+</code>
+we will need to build some stuff in order to get a working copy of tinc.
+Everything needs to be done in userspace.
+<code>
+ mkdir build
+ cd build
+ curl http://www.openssl.org/source/openssl-1.0.0d.tar.gz | tar xz
+ cd openssl-1.0.0d
+ ./config --prefix=$HOME/usr -fPIC
+ make install
+ cp lib* $HOME/usr/lib
+ cd ..
+
+ curl http://www.oberhumer.com/opensource/lzo/download/lzo-2.04.tar.gz | tar xz
+ cd lzo-2.04
+ ./configure --prefix=$HOME/usr
+
+ curl http://zlib.net/zlib-1.2.5.tar.gz | tar xz
+ cd zlib-1.2.5/
+ ./configure --prefix=$HOME/usr
+ make install
+</code>
+before building we need to patch the tinc daemon to run without the need
+for a tun device.
+
+tutorial is here:
+https://hackerspace.be/TincVPN
+<code>
+
+ curl http://www.tinc-vpn.org/packages/tinc-1.0.14.tar.gz | tar xz
+ cd tinc-1.0.14
+ #replace the device.c with the patched (empty) one from the webpage
+ ./configure --prefix=$HOME/usr --sysconfdir=$HOME/etc \
+ --localstatedir=$HOME/var --with-openssl=`pwd`/../openssl-1.0.0d/ \
+ --with-openssl-lib=`pwd`/../openssl-1.0.0d/ \
+ --with-zlib-include=$HOME/usr/include --with-zlib-lib=$HOME/usr/lib
+ make
+ make install
+ mkdir ~/etc
+ mkdir -p ~/var/run
+ cd ~/painload/retiolum/scripts/tinc_setup
+ ./install cloudkrebs 10.7.7.221
+</code>
+
+be sure to fix the portnumber in the generated host file and add your own
+address in hosts/cloudkrebs:
+<code>
+ Address = my.public.address
+ Port = 1655
+
+ PUBKEY
+</code>
+
+also write the right in tinc.conf:
+<code>
+ Name = cloudkrebs
+
+ Mode = switch
+ #device = ...
+ # no device :)
+</code>
diff --git a/retiolum/doc/install_no.de b/retiolum/doc/install_no.de
new file mode 100644
index 00000000..69fecc61
--- /dev/null
+++ b/retiolum/doc/install_no.de
@@ -0,0 +1,16 @@
+ok, i tried to just do the same step i did in the other cloud service, but
+it failed when trying to include tunnel headers.this is what to do:
+
+./configure
+./configure --prefix=$HOME/usr --sysconfdir=$HOME/etc --disable-lzo --disable-zlib --localstatedir=$HOME/var
+# add PATH_MAX to conf.c
+
+Add to your own path:
+$PATH:/home/node/usr/sbin/:/home/node/painload/modules/retiolum/bin/
+
+patch the install paths in modules/retiolum/scripts/tinc_setup/krebs
+
+update the write_channel script with the correct path
+
+mkdir -p ~/var/run
+
diff --git a/retiolum/doc/routing/ip-ranges b/retiolum/doc/routing/ip-ranges
new file mode 100644
index 00000000..06f23e4e
--- /dev/null
+++ b/retiolum/doc/routing/ip-ranges
@@ -0,0 +1,5 @@
+youtube
+ 209.85.0.0/16
+ 208.65.0.0/16
+
+
diff --git a/retiolum/doc/routing/tun b/retiolum/doc/routing/tun
new file mode 100644
index 00000000..a83ffc27
--- /dev/null
+++ b/retiolum/doc/routing/tun
@@ -0,0 +1,30 @@
+tunneling:
+ovpn relevant fixes:
+
+ -up /etc/openvpn/update-resolv-conf
+ -down /etc/openvpn/update-resolv-conf
+ +#up /etc/openvpn/update-resolv-conf
+ +#down /etc/openvpn/update-resolv-conf
+
+ +route-nopull
+ -redirect-gateway $def1
+ -dev tun
+ +dev $(your interfacename here)
+ +dev-type tun
+
+ -auth-user-pass
+ +auth-user-pass $(your openvpn user_pass_file here)
+
+normal firewall stuff:
+ shorewall:
+ in /etc/shorewall/interfaces
+ +loc $(interfacename) detect tcpflags,nosmurfs,routefilter,logmartians
+
+ip+iptables
+ iptables --table nat -A POSTROUTING -o $(your interfacename here) -j MASQUERADE
+ ip route add table $(interfacename) via $(route -n | grep $(interfacename) | grep 0.0.0.0 | awk '{print $1}') dev $(interfacename)
+ ip rule add $(your rule spec here) table $(interfacename)
+
+
+
+
diff --git a/retiolum/hosts/Styx b/retiolum/hosts/Styx
new file mode 100644
index 00000000..fad45316
--- /dev/null
+++ b/retiolum/hosts/Styx
@@ -0,0 +1,10 @@
+Subnet = 10.243.0.42/32
+Compression = 9
+-----BEGIN RSA PUBLIC KEY-----
+MIIBCgKCAQEA4jbOi+HZIGOGNm4aBSwnq4m3Vg3IXHmYUbJx1AzP4a/yvEgswfk6
+MP5FXvoY/hZ0NQ0IRzbbJxGbcUdulz0WSjX1C+8uQUZstz+lvYZ4FeCXcdE5cuFM
+ROKAbA4qxO3WOFhPAs4G+K6srDqswmmBSfgPAfOBexEZxHweoBQLOYKUPnBCWf5q
+I1gKWgMVWv6KY/pgYxloarycb8gEd2GsNZcNwoNhRd2G/Tn6idh1qRBI96eaasbV
+P24FEVkPVFVgIGrvFZCICCeQzA4g+Sn4TmgxnTWLQxG4hAHOZQX/ld8u7NHTU9Qm
+PwmjESwfas9Z8UjknrbcaZvuqKrnMp7JwwIDAQAB
+-----END RSA PUBLIC KEY-----
diff --git a/retiolum/hosts/ThinkArmageddon b/retiolum/hosts/ThinkArmageddon
new file mode 100644
index 00000000..e51e1c92
--- /dev/null
+++ b/retiolum/hosts/ThinkArmageddon
@@ -0,0 +1,9 @@
+Subnet = 10.243.0.137/32
+-----BEGIN RSA PUBLIC KEY-----
+MIIBCgKCAQEA1EAiyBWICkyB1zHE31fHSbGR1nJJmXSfnrqm9yXRZSGweIKrbsof
+QVcRzM4vsFBRUMBeKW7fzlGcvgXULFRnGelvEl4GRiBMO9odBlBI3t8CjZW7X2N7
+JqCMkB+CRuiHbNYQdRFTozQEfPq+DNh8accD5LjUM6gF0dKUdby5qNeHCfZSxU4v
+YZDRqq/haO4up6m8/S6YhnHPOSaIAu7R7hFaUeB/FPT+s5irKk6WtAiWnIdXb22q
+0zxT4+t9sWFb4V9u/MImggYQVWjk+TfF5KpihBOvExEQsSR8JJcRUJAtN4W0w2Pc
+S4/j9ArKcBj5Wf2qHcJMN5MbwUFW1oMkGwIDAQAB
+-----END RSA PUBLIC KEY-----
diff --git a/retiolum/hosts/TriBot b/retiolum/hosts/TriBot
new file mode 100644
index 00000000..821046f5
--- /dev/null
+++ b/retiolum/hosts/TriBot
@@ -0,0 +1,11 @@
+Subnet = 10.243.117.163
+Subnet = 42:ff05:504f:f27a:3534:9be1:4343:5e95
+
+-----BEGIN RSA PUBLIC KEY-----
+MIIBCgKCAQEAz8pZtvSqDEKo/8IHt71GzWa2oTqZPUv2kRoipUXbJGv3eWpkbd4n
+OpaLuY7MjUveZ39m830t5RAkgB9iChU5wurszgfLrxJ15uibJe+yFJl9O6kuYJr1
+69s12F/v/pPno5eWuXWJ+CdMW8srZB1I/ZIL1/GaptuDoMxu7uBnDbL/NJrpPBSr
+JxCJGHET8jh2++B3cqsBWNGkQjQTM8NwwAup6HQjBrbOQYOAQbcOTMmalc/9JFfO
+LUz63LrCPk5pIeLi+876IdAJBuJsVWwmTbl/D9R6D34Z8bYHIv9mDmO/omckcxX2
+JJgEq5/xlLb2gHt/qfUunbYHIstp/s2bSwIDAQAB
+-----END RSA PUBLIC KEY-----
diff --git a/retiolum/hosts/ach b/retiolum/hosts/ach
new file mode 100644
index 00000000..7774f17c
--- /dev/null
+++ b/retiolum/hosts/ach
@@ -0,0 +1,11 @@
+Subnet = 10.243.32.89
+Subnet = 42:6bb3:0a07:6777:9aa5:e39c:e140:cb68
+
+-----BEGIN RSA PUBLIC KEY-----
+MIIBCgKCAQEAsTyjNQ5aO2aIKXgkgZSiUb0POtEVoAPFrIkSv5Ci+7AYv+CLXsIr
+TKBfFIg474KZ4MCrX0oA3Z66s9d2UW6mcH5JufW8siRPJvdydqaANyF6Fvk++59R
++GMKR0MGdPGfcxjaw64ChemOZx1T6ODHF7KTgaWRI+Aiz+jWsvVCSKutSwVDJTgJ
+4lub95/gbWckRY6fchkh7rSTfNXXYevbysQYdZaAR/qgquUNt23/ewlagF7uqgZt
+CQx7MHMU2quEdvIfZuUPFWe0yHBb1bZCHYxKXo6XG8I7WdUAFRuwFLTjqgSYPD1j
+EpUyU0+xxfyXB3vWrM/jcw8XKzi04wWHuQIDAQAB
+-----END RSA PUBLIC KEY-----
diff --git a/retiolum/hosts/air b/retiolum/hosts/air
new file mode 100644
index 00000000..f27106f0
--- /dev/null
+++ b/retiolum/hosts/air
@@ -0,0 +1,11 @@
+Subnet = 10.243.0.99
+Subnet = 42:32d7:b589:8ae8:57a5:4cde:f49e:851d/128
+
+-----BEGIN RSA PUBLIC KEY-----
+MIIBCgKCAQEA1yNqMyy9C1O031M518kzLYLh+Ox0D2r9UgVSSb9OgpQ85ZJgl7Kb
+SUzlZLbC9CX4O+PmtWvZwtPfLjua9VbVOtUJTB6zTB9Oqe4hTmX0oKIgheGf1rKS
+ylOaLfSz7PaPR3zGms17F4ovLDUBG2rpOyoHJM54T9LyJbPny/t7v/fjAFqu6atK
+1RgER3j3s5oPaRPw0pYR0kiGXayZRL6q7Qc6AXMlMi22sdRI9e1YCMCyC4u1oU6U
+grw7khyPWoEaue9B7fKfG5PixRHHlrsVDdwXEVvH87+/X2IU3H3C1/pslenAQ98i
+qGNJOl2eJ9FHInQjI1cDMgFURcT6i8mGpQIDAQAB
+-----END RSA PUBLIC KEY-----
diff --git a/retiolum/hosts/alarmpi b/retiolum/hosts/alarmpi
new file mode 100644
index 00000000..205b0d83
--- /dev/null
+++ b/retiolum/hosts/alarmpi
@@ -0,0 +1,11 @@
+Subnet = 10.243.124.187
+Subnet = 42:2de9:fab6:7460:2fee:9199:fa1d:70ea
+
+-----BEGIN RSA PUBLIC KEY-----
+MIIBCgKCAQEAunQOFP1mnEmsmnMYjCwbWdbGe0/hHQs2bxIdwO1RXngXgw/TBBhN
+Xlp75LzPiT0ELF5WBPVclqskT+bl+FOOITH9XDkYzm22jzeLHq3bs3YiZhwzidkO
+Xhq5pwGY4HL4o3SfFtfOHse688qqLXefoc9CfyAIKMCRRAxlzpqNVuZEg1eUcuUJ
+z6gugJj+YyA4V3JGq7GuJDiPPOMrGel0rITMlWtYYtm0jf6deYBPjo+ZogDESlez
+tBmPKNCXynSxb6cV39StUsbUQbLvHgPBrA01T+Hw1DV5eHmWoycvD4IfJqXdfMbc
+BOqRHOlErXGTG5m2EUoU0VSj75zl06gW6wIDAQAB
+-----END RSA PUBLIC KEY-----
diff --git a/retiolum/hosts/albi10 b/retiolum/hosts/albi10
new file mode 100644
index 00000000..9bcca7cc
--- /dev/null
+++ b/retiolum/hosts/albi10
@@ -0,0 +1,11 @@
+Address = 74.122.198.15
+Subnet = 10.243.0.10
+Subnet = 42:aaa9:4ba3:8c43:bdd8:2cc8:29a0:e8e6/128
+-----BEGIN RSA PUBLIC KEY-----
+MIIBCgKCAQEA0Jz5rQ7NpIQWwhDsrZHlJYAnC1k1onl2ln/6CJbdV9t3gG2hlx/9
+0SEARo6sq9fftyzzZd3iY4WK7+zRXJFXHsLmDa6mq8Mme7Yv+YHZoHPTm9c3tN3v
+laiV/qAdoi/sv43DCo7JywI2lTW1pPxuitXuud2ajd7GXuCoRqFRqLtaURorVKkW
+4j9UGpMKrEa+CV9wP5jZ57RSPQ7aMq8D4GiMqKDgUeCZnvXxpYWDOEdGNlpuUcWt
+/erC6u50/vnjUkkHx66OmkZe5AX5MmwNp2q4zC4sTh/BRhqk27AmNl5wbp0kL7/B
+hg+r0F8ckrdLc21sSU36lUIeeFa/S+A06QIDAQAB
+-----END RSA PUBLIC KEY-----
diff --git a/retiolum/hosts/albi7 b/retiolum/hosts/albi7
new file mode 100644
index 00000000..32cf0dc8
--- /dev/null
+++ b/retiolum/hosts/albi7
@@ -0,0 +1,10 @@
+Subnet = 10.243.0.7/32
+Subnet = 42:6c61:6962:6137:626c:3769:000a:1337/128
+-----BEGIN RSA PUBLIC KEY-----
+MIIBCgKCAQEA+SwdWv1anjIaKSnvel9d23tgqye5RguIVfgMnjpMsqOYpFklLIa8
+4wREhVvpiArnIsoTXbKzdeCFgaAbMS6aQ701Pyv7QriVy8m3iUlgqvB/znogxN8U
+z1fqL0jAHLkQkoyZ2a6mUgHpByvUqZNcq6istYLwGnXO3JQrS7U54hHPpXbxwFY5
+0/Wli9OueG4fWaZ9skDa2Faq4c/Lngku+Iv1gBBgII1EDSsgedNWw3YBTmHDFNTZ
+SsORj2ho5nQgdvw42qEINbxpU01jK8XB+jmVEO+ixZZCsWlOeCjl9Zym4MZDRePg
+euTLTbgs/809ElM8V+EzRKSPNR2k6FrBXwIDAQAB
+-----END RSA PUBLIC KEY-----
diff --git a/retiolum/hosts/alphalabs b/retiolum/hosts/alphalabs
new file mode 100644
index 00000000..e5f98d69
--- /dev/null
+++ b/retiolum/hosts/alphalabs
@@ -0,0 +1,10 @@
+Subnet = 42:0:0:0:0:0:0:a1fa/128
+Subnet = 10.243.1.10/32
+-----BEGIN RSA PUBLIC KEY-----
+MIIBCgKCAQEAvUAbMmmOFn+4kOvJAvmi0R/XCQa1YBlkjUvC6Pmt0Q8gV1DodXjB
+DgwP8yhLcxaVy2Hk82aJvNTUrfMeB2sdt1RJHQiEPQkHthdp8Spm0Px4uTiMjmFB
+ev91xi00eCCGIKsXdh/qso1K7EDHt9MEVHOvSlkawWzoyJ6AaHStW1ElwDdGjZpl
+0YWrhx4Gk5X7pCp3LKkQJFfGtqoqGOVg2JjqK3qMsAdRo6QvYDqjFzARed/D0k55
+kcKXjBJAVxoU/CqGfS/Lr0fL8tdYgXaAXvPO9dbr1t0KyOUY2KRNBePeSvRp/etb
+H0LBPsO9F7PQiPI3DBoWCYgsuj/hBXapvwIDAQAB
+-----END RSA PUBLIC KEY-----
diff --git a/retiolum/hosts/apfull b/retiolum/hosts/apfull
new file mode 100644
index 00000000..c64750b8
--- /dev/null
+++ b/retiolum/hosts/apfull
@@ -0,0 +1,11 @@
+Subnet = 10.243.138.112
+Subnet = 42:0707:afc5:96a3:8215:305e:0474:02fb
+
+-----BEGIN RSA PUBLIC KEY-----
+MIIBCgKCAQEAxNnJB29djjUFUZqM7EQ8kj+IRx/a+2fA0ZdNoUm4ar6t7kTmOc40
+GzGr0zE+QPqQ3abDk7eTmZbU3yUNiAUDzDMD+iqwKAVJnMb8pjXlGmcpdvMuxwbz
+bHeTEaVqBmF4seXlwUKL+waa2Yr1t0YsynCUte8dbcauaD9CY61QjDUP7TQBglmk
+eKq+qbFNKjzIjLQf2iXsl2+dzuFqg4OUaUD0zZJVzjNpKSz24uEK2mD9fSmS3oYF
+yzsNaOKaXr/j+1Xlosxy9Rde/o54UbtZTPYsNdhNgnXmBan4zTv/QnI67Uf9RqiK
+PHsSAkfCj/K7iAOKE/A30xYbd8eV2tPANwIDAQAB
+-----END RSA PUBLIC KEY-----
diff --git a/retiolum/hosts/bitchctl b/retiolum/hosts/bitchctl
new file mode 100644
index 00000000..8f188a2a
--- /dev/null
+++ b/retiolum/hosts/bitchctl
@@ -0,0 +1,11 @@
+Subnet = 10.243.104.101
+Subnet = 42:5ac9:c698:4d1d:6ec5:45b9:647b:a8ee
+
+-----BEGIN RSA PUBLIC KEY-----
+MIIBCgKCAQEAuxd4ZU3y1ZgvI+/7mQkWBlF6VvX6ty8+iKYwmjsSUCclxz3O5DB+
+clps9k+0tQvtKlsxG3lnFQz9fd4Pj0GIuWsAdHRH/hpnb9nYSRePKWy0RBjAZRr4
+8rXqI8NOdkQiIQT8gWw3ujzw/Mau/bV6AWqi+CbeExm+J0bPW/QZlAZ4BEKFvuqK
+U8yOQ38p9s3Dpe4S5JZ3cu54j5f5JygXTZgk2ZW3frJ/JS+lRHfFlIW0ZAuTqn/u
+GD5ahHLbRZPGsG5aSR+agfOVIAHLBnDoFx6AQUr09m4zyMgPEC+Xq/DvdP/Hvuas
+RYRol9qHtNeFJViWIUOQPHypTw2a4Ev7fQIDAQAB
+-----END RSA PUBLIC KEY-----
diff --git a/retiolum/hosts/box b/retiolum/hosts/box
new file mode 100644
index 00000000..e02f8ca6
--- /dev/null
+++ b/retiolum/hosts/box
@@ -0,0 +1,10 @@
+Subnet = 10.243.43.43
+
+-----BEGIN RSA PUBLIC KEY-----
+MIIBCgKCAQEAvUMfRZOPb/zKvALZTyxKQuzowqqJ/HW2lm/RIOKL2uoTUgVX1DJB
+fCLf66e2fHnjnStXuaMDNs1kq2gi4EyK5Q50RxVBq7XayXYqfnFwzTE+Iqape542
+vYSWKLdrxljln8a2EYU7njtcWkTpW+cJIwSHEUkDLAowF87ElQ0gBmyX4p107pow
+jg7zcYierVdQXkI7mO4g2zWsywfhwscbu5hdCp1Fw3wHFDatgyhPj1pJruKe+O3c
+AebF5yQOAsCxAk8ZcwGLmmF5xK7lAeux2Qzu1B4Pkfxi97g1GVLnX+so7PR+vvkQ
++OMzQGIWXtaOqov5q2O1N5RJzng/kCjC/QIDAQAB
+-----END RSA PUBLIC KEY-----
diff --git a/retiolum/hosts/bridge b/retiolum/hosts/bridge
new file mode 100644
index 00000000..db75113b
--- /dev/null
+++ b/retiolum/hosts/bridge
@@ -0,0 +1,12 @@
+Subnet = 10.243.26.29
+Subnet = 42:927a:3d59:1cb3:29d6:1a08:78d3:812e
+
+-----BEGIN RSA PUBLIC KEY-----
+MIIBCgKCAQEApeeMSYMuXg4o/fNHnG2ftp2WskZLrt63zhRag7U1HqYUnuPqY60d
+VVy9MBTawm6N02nC2Svm3V07ZXaRp/XsXQLx+evZcDjPjnDYgl2ZGX0ir5Cn50bm
+UzhJiMW6/J7AYvucgeAaVJ0YmIwRw6ndYGcxmXWi4TK0jSzhuSLgookWM6iJfbdB
+oaYsjiXisEvNxt7rBlCfacaHMlPhz3gr1gc4IDCwF+RAMM29NUN3OinI+/f56d7b
+/hLZWbimiwtvGVsGLiA2EIcfxQ7aD/LINu+XXMaq7f8QByXj/Lzi7456tDi3pdJg
+lyg9yqRJYt4Zle5PVejn08qiofTUmlEhnwIDAQAB
+-----END RSA PUBLIC KEY-----
+
diff --git a/retiolum/hosts/c2ft b/retiolum/hosts/c2ft
new file mode 100644
index 00000000..8ce0539e
--- /dev/null
+++ b/retiolum/hosts/c2ft
@@ -0,0 +1,10 @@
+Subnet = 42:e674:8a82:7fe4:fa51:d305:192e:846b/128
+Subnet = 42.221.17.214/32
+-----BEGIN RSA PUBLIC KEY-----
+MIIBCgKCAQEAqS+nvuQnAlhsGHgjKRz0nq2nj9HWwzrA96xnng6UCmkTpFyprM7b
+20vQ5wqcHFAbuZh1dOOb9G2qqsZYE6V1452YLZZLMsnxiJD8kSorHrF6kJid5JjH
+xyyqSvkXaHClQItVjo7rIn5P/Tl+BMt64KaPxpu/4GBVHkCE1apLtaVRnEq5t2DG
+htZuUqzhuLN4TQiSVC++7qY1UQotjLbAQpYxf67np5sKWMOqg5UA+ghuLeO9jpqL
+qKoh2TMzotGwlYBMXVA0jJtQu5Sq/IWKWAyk9zca2LT0W0ZZWYiTl+Ai5urbJgCV
+GvWeJCoBKteIKUHRVNK1RLDFl6/ITOu9XQIDAQAB
+-----END RSA PUBLIC KEY-----
diff --git a/retiolum/hosts/c2fthome b/retiolum/hosts/c2fthome
new file mode 100644
index 00000000..a8eaabc9
--- /dev/null
+++ b/retiolum/hosts/c2fthome
@@ -0,0 +1,10 @@
+Address = samularity.mine.nu
+Subnet = 42.44.64.126/32
+-----BEGIN RSA PUBLIC KEY-----
+MIIBCgKCAQEA4ADumWibheOOocw3diK27ww4xfyptLZzlPcih5BJFUPOljXN33th
+1rbFwBr0QyRSad5U+/w1qlTCCqadjNdu+0RPGxbCrEqE3bUlrbES3Fw1ZtyIeuRH
+v6yTQuOzJXyceGGYJpK4JjFgFOggSH35dURDa1+x3pJECyWUAVDknWE5CS7HNufW
+bcREh18LoTUi7SGPeWauDLvVb/eeuDNJkoFj+HWpNqupFXpXUD7vQ+FBTtKO9FZu
+vd/QGYv7gkRGQfma3+2XW9fWgIfE1oS0qf4UfbycaEKMFS5Tn7li3tzCcH9Da4iB
+SsyWm1Hg1UYXccBdDYWYo+vdG59hIjmh8wIDAQAB
+-----END RSA PUBLIC KEY-----
diff --git a/retiolum/hosts/casino b/retiolum/hosts/casino
new file mode 100644
index 00000000..e35691c3
--- /dev/null
+++ b/retiolum/hosts/casino
@@ -0,0 +1,11 @@
+Subnet = 10.243.0.233
+Subnet = 42:3c1f:ea16:e181:7ab2:c51a:8892:7fb7/128
+
+-----BEGIN RSA PUBLIC KEY-----
+MIIBCgKCAQEAzmZ7x4HVpW8RC3ZkwmNKY/6VGlMKQbpBQtmrUzV1XFxKWZRhH3VI
+NOqlfVpTEaRTorht7R8F1aw9psDDUcg7yuQFcUdoXxBJxwbc1h0FKyZZr5kAIfpS
+ObE0rbBRRqJVAWgztpQAalWC95D73y/+tpHnQ+LRFq9IWeX5+QobaSym1oG4Y0Jz
+STSbw2ksjH8CuWHS5TjZr50Nyx6cH99HABDnadxhLBtQriJPSYRYdWyp7tYrW3jd
+As28mxkyFj0sFV3IJ/bYfZD9KSGg1KjQu+c73xKOBUhNtSHFjUzN5myYGd/nWCw8
+0PUReLrWC1ZHYPzqiwelTHcNJ3UcojpO9wIDAQAB
+-----END RSA PUBLIC KEY-----
diff --git a/retiolum/hosts/cat1 b/retiolum/hosts/cat1
new file mode 100644
index 00000000..1a9dd2fe
--- /dev/null
+++ b/retiolum/hosts/cat1
@@ -0,0 +1,11 @@
+Subnet = 10.243.244.32
+Subnet = 42:86cf:a3fb:16b4:edbb:df13:a7a9:cd61
+
+-----BEGIN RSA PUBLIC KEY-----
+MIIBCgKCAQEAyjmB9IyBYexahK+fxSzVNrVxMXroXMc4Fyx16+XOt9hugn24Suht
+06kQwwbpkwjWfIEONzr0UPAbsOWG/Qj3w+dqiC5iqHZWFW/NdBgwunF5+INnEamj
+eIIqei1230C/NNpTph9u3UsT+ZgZnc+r4usEmTpZslvtkVwg20jwT4w3Vq1ws1Jc
+8Ccy8vk4FjgBP88zuvqzjBtTGQMrDgBd68XlGVKOhrvxCebHknbcHWpUz4cN8TX7
+bRNpSUTCSGd2taY6g4cUxiegbTeK2LDVvW/6XtISvJqVVllLD/p661W6gRUlkspv
+phLJc+zNLRxOC624JRivt+Ag5iBI4YP4SQIDAQAB
+-----END RSA PUBLIC KEY-----
diff --git a/retiolum/hosts/cband b/retiolum/hosts/cband
new file mode 100644
index 00000000..51c51e9c
--- /dev/null
+++ b/retiolum/hosts/cband
@@ -0,0 +1,11 @@
+Subnet = 10.243.7.76
+Subnet = 42:c293:090f:df44:0926:c7af:5012:7cd8
+
+-----BEGIN RSA PUBLIC KEY-----
+MIIBCgKCAQEA11kwqXkkDRmxmoZNFDqtUsxK6d/HzTdFC/v1V3fttePuYFiEOhZl
+rLBS3+Eei4CsQrOwnaRBhHdnoOZGEdxJmq3YXDWGoVAn4bEgommCddzssVzWtVMf
+hIntuCExczEMIY+MGzM3QupYxUgRRVjFtvxoC9kKOSlaq0BhkdJiWygzN/NUfqpv
+HgDufoAcORLQInTpmQYEkZO+XmXejcCY/C+VD0MENqj3SijGw9tm2YmInwSwZnwX
+Zjh2xn96QbV9O7bpfGHcLxWhsUyyRC46knbbBXuAdbDsa2TUdzT5D7nb/TLfP412
+agIhk+cwFM24y/ChHdfoUBakKF4wZI3l4wIDAQAB
+-----END RSA PUBLIC KEY-----
diff --git a/retiolum/hosts/cd b/retiolum/hosts/cd
new file mode 100644
index 00000000..3cdd9c0e
--- /dev/null
+++ b/retiolum/hosts/cd
@@ -0,0 +1,12 @@
+Address = 162.219.5.183
+Subnet = 10.243.113.222
+Subnet = 42:4522:25f8:36bb:8ccb:0150:231a:2af3
+
+-----BEGIN RSA PUBLIC KEY-----
+MIIBCgKCAQEAob/6umTaEa8jtU79nYzHa6vyEjFtg3ATh7uTvafmE0b2845Tf2hC
+IpSBw//FOnkq2sUvj9IymMnMFBcPq6VZisvXq2B25BJZn16X8PJmkXptCckDoqVj
+qRjg/H4q8aryp74dGYDp4ibBKyhN/BP3N5DXH4vkj4A8qHuekJWQD7wWcXj6Jcx5
+otDsj5LZYh0J8LJOXQYxmcadrZoLnkL6s3SkWbgexkJ2l5bhYSVBOEtjKQ8Eq1k3
+Iyao+iyaffUEhcaiwRBXovt77B8RYYY2DjKKVuR4LCxIbB7NKF03tETjensLBw2t
+9sV7J5zBGDGbDIOliGBfRABBBlopgaOAsQIDAQAB
+-----END RSA PUBLIC KEY-----
diff --git a/retiolum/hosts/cloudkrebs b/retiolum/hosts/cloudkrebs
new file mode 100644
index 00000000..a6783d0b
--- /dev/null
+++ b/retiolum/hosts/cloudkrebs
@@ -0,0 +1,12 @@
+Address = 167.88.34.190
+Subnet = 10.243.206.102
+Subnet = 42:941e:2816:35f4:5c5e:206b:3f0b:f762
+
+-----BEGIN RSA PUBLIC KEY-----
+MIIBCgKCAQEAoXp4UXctvHQRiJps4CzURNBsZE8mC8emtXK6pjfq73Pg4R94ayx4
++JtgEFY+VZeNIKHlaAqfNm8+RfHS7AFgMkiA4WBK2PI8Vpj64wUHz+EcySIInIdx
+9J00KRUYA9w8pC8qxjZlxsFlDb4i/kzk1Qt4izV++itzICRolHcuHCeWN3ceok1O
+gckSSi+zSyGiukRlIHqFkHRCJzt2LV06BV+8ARvLBsF/N9imfVxlfNpEcJCjwgFY
+E5kcr7HpywYA3myphmvrGTPV/xy0m1tfNsWNMWXdk75K2Pl8h3h8b2ViHgcWjmNY
+jDeTVvaoGgFRzfu+3cA1TiHwDcQKKZodBQIDAQAB
+-----END RSA PUBLIC KEY-----
diff --git a/retiolum/hosts/darth b/retiolum/hosts/darth
new file mode 100644
index 00000000..bcabc5f5
--- /dev/null
+++ b/retiolum/hosts/darth
@@ -0,0 +1,12 @@
+Subnet = 10.243.0.84
+Subnet = 42:ff6b:5f0b:460d:2cee:4d05:73f7:5566/128
+
+-----BEGIN RSA PUBLIC KEY-----
+MIIBCgKCAQEAyx5x0jzfhex8EBSFLlOIkP1yJ5cSPLQ3hpPMvN0J7QdVbypU6a9C
+fzGpzBph1sRwXnaqCMe0og5VT3EdFtngbmm6t/CyMhBojkxMQI08m71JT5c07+1U
+OSSLXBXYHcN6cAEYEsvTiSuvP9RoAbUeQQbZryI4wpzzQ7ET1l7k/3eeXAwqRKR6
+xiqn/4597U09QYmllqfplJUBv2pIAIcFlm/KHvNTZGEZS83udfnECwDwgU63PMns
+38yiCpI79kagXyTOGCbkUatt0KNTzGNLAm0CyeFd1AdgUrj8fVg2jQLQlBrze+Gx
+jkphgkVEgMtVMTz8WKfz+Dro3jBfQstIjQIDAQAB
+-----END RSA PUBLIC KEY-----
+
diff --git a/retiolum/hosts/dei b/retiolum/hosts/dei
new file mode 100644
index 00000000..0d401b01
--- /dev/null
+++ b/retiolum/hosts/dei
@@ -0,0 +1,11 @@
+Subnet = 10.243.247.164
+Subnet = 42:d702:e261:bf4d:2f5f:00e8:bf56:4d50
+
+-----BEGIN RSA PUBLIC KEY-----
+MIIBCgKCAQEAva8pJ7H+ebQFEpqLZhr6hE6OlCRhSlPQwEoWtQLHT/zsgmUEhXcw
+9045IAAgALc1Wf6lVWKwNEBNyLNULUgmkXzgjCG1OuLAn7jWtaNQZT+b6ZM/b2Qn
+hrGdHCcpvW1kpIfho3zMts4dVx28Z85JJlI4ZqfFZWwiuCj+x8OELdqtm2IYryiu
+6dHRR+4WkgEvqL+1YF2RRxXIcSW2wFdZOggjXYobzC2wl9zWkTBPC6lKQjlKlSrV
+ZZBKRwuHloHPt7HJTjWZTX28CbC/P+3l5NyMhfmqtFPZuhC4p7EAWwcXXDz1Gkxl
+w5EbcTz01pePFj5oVfK5aUoi1JFZ9GSZFQIDAQAB
+-----END RSA PUBLIC KEY-----
diff --git a/retiolum/hosts/destroy b/retiolum/hosts/destroy
new file mode 100644
index 00000000..8b5f7f5a
--- /dev/null
+++ b/retiolum/hosts/destroy
@@ -0,0 +1,11 @@
+Subnet = 42:9277:1f1e:7599:ae4b:7cca:b4a3:fe47/128
+Subnet = 10.243.0.31/32
+Compression = 9
+-----BEGIN RSA PUBLIC KEY-----
+MIIBCgKCAQEAofIF/j4ddJEG0sOJJNp6hVXqLpj9FPw6a1vLLqZsn/NuZi3QCZ/w
+xj1nIsQbc1TnPLluHhpn5kuvzb0lThqmPJvX2uXnbq7WH6OvRyN/FV/Gn40txdni
+MFWD53zGlAle1/Jdt+to/+0mvRP8U+dKuggemGljX2nrUxaJgVRVzynvkys5l6vZ
+2oMeO/LnFcAt9ZkMFoqDfKB/RPOqTD9k6Sz8xubVtasQ4ufpQl8Uv6zcYl1PnV7C
+9Pj5MMtQVtRRV8hljImqpERunU6ZsXhyqI9O/cVw9+QkWf7Qh5E0vUKTT9FISyTV
+nmQ9v8JGV2zPDVMmwP1ewyA1W9YhGiFd7QIDAQAB
+-----END RSA PUBLIC KEY-----
diff --git a/retiolum/hosts/devstar b/retiolum/hosts/devstar
new file mode 100644
index 00000000..875f62e2
--- /dev/null
+++ b/retiolum/hosts/devstar
@@ -0,0 +1,11 @@
+Subnet = 10.243.0.133
+Subnet = 42:2be0:92f5:3546:5f0f:8f22:6244:25f4/128
+
+-----BEGIN RSA PUBLIC KEY-----
+MIIBCgKCAQEAwkkmkhGMnI0x5VIgdLwV2SvXO9Bw3Sy1U5AToZiG2dSB+OiwwLir
+JIrTHv4r73lMLROJjQhznq06VMmNviC82178H7/DZqgSqlGU7d9p1Okd5XCs6LI3
+eaL5mYTXFuA+PMHVvYqQ5fDQRQ4KoWmlSV65XUPejPlxtl3FXqOSHVuuBSbka+St
+qLyWLAh9d8AfWjxbAIv41fl6WOyw2IuDc05K36aT/TwzA3ykl+ekNObAjvpI0cxI
++d3j8H8JY5jDcg1hvWT06JqpUcTJRkWLL7BBdQvWySaBcET1Flfo8eYVqVQDK4kU
+XV/tA1ax7YPFBQ7Lh3Ru9nEC45Gv6R4HbwIDAQAB
+-----END RSA PUBLIC KEY-----
diff --git a/retiolum/hosts/eigenserv b/retiolum/hosts/eigenserv
new file mode 100644
index 00000000..f5966794
--- /dev/null
+++ b/retiolum/hosts/eigenserv
@@ -0,0 +1,11 @@
+Subnet = 42:c9d8:ab9e:c7fe:43ff:0268:f862:42f7/128
+Subnet = 10.243.0.32/32
+Compression = 9
+-----BEGIN RSA PUBLIC KEY-----
+MIIBCgKCAQEAyy060LWeo6Z+Kp2h5LtyMx+KGdxL9/WjWfc1yf/YZ8lhZutNb+Kd
+u9AHbnrqTRWRslP+toNiC55aJ/KlTBFQA5nBu2DC1KdG71AX5th7bRvUMfEAEG1+
+7MpcyuC8Owvleg/b4Ihr+/kQNbIPPhAraPJU780Oy173jnt+PCIYY+aTnEuO3UBh
+yt3oPhfwMa2ssPL8GfF3YL9Pvh4UEbUu1E7zSOqzCOzH3od5I/G/TjvfHl3u4tEr
+6kWHVqOYaKMJlqYvb7tnw7QjJNFhVneBJN6eMaWfcmTp2G9S+SwOppW3P4yRxrar
+GLWPgEU6to1wduAktecWU/oWambgXb/hUQIDAQAB
+-----END RSA PUBLIC KEY-----
diff --git a/retiolum/hosts/elvis b/retiolum/hosts/elvis
new file mode 100644
index 00000000..c98ce786
--- /dev/null
+++ b/retiolum/hosts/elvis
@@ -0,0 +1,12 @@
+Address = 94.79.154.86
+Subnet = 10.243.228.181
+Subnet = 42:42a3:7ad4:f156:906f:f6f3:943b:7b1d
+
+-----BEGIN RSA PUBLIC KEY-----
+MIIBCgKCAQEAv7wpfzpazvXzKJsDkJ8J9zsTZRoI6LnpSIcO8hLQcHNk6LTWjBy1
+xdnsSe3eQYxNmZPKi28PdbMo4YQlFdewLSB69PP6ZX5ISNXVlCZ5Cend/kfU1fXV
+tcZ4JQCl/adHqg8niLAODfnXhwVjMpllgq6gCg5mVPILy+CZ08OM6Ij7Q5d+3Jr4
+1zMvAXyeuNQcL+MkBveblKC6j/e9fqaK86sUh/4unfgmkB7GWjqFwmoHZepR83o9
+HTBmKxEIDKYjLWVXV1Wph3/JN/65igTtju26cVarUmTtGIhU44NzCi+94+wKuJMU
+Bbjk/CnuWQoU2ABPsxtW3r6m4pSDhypNZQIDAQAB
+-----END RSA PUBLIC KEY-----
diff --git a/retiolum/hosts/exile b/retiolum/hosts/exile
new file mode 100644
index 00000000..25d68ca4
--- /dev/null
+++ b/retiolum/hosts/exile
@@ -0,0 +1,9 @@
+Subnet = 42.116.243.248/32
+-----BEGIN RSA PUBLIC KEY-----
+MIIBCgKCAQEA0H+DslKV6EDCZWBCJs+MFyvTR9Ej0yWthIHKzFrA4qI8rxskrGGP
+xhb16keQLPCAgBVVVmikh3pQVMq1K6ry5Of0uM7rU7crBzRfJ8zpGZXfYlBDFDAd
+Vg8wwDvEYsYCAKrZbYIKb88WR0mT7K47ipTbXd9utzmoWGa/SuGtPkYOigcWYMRN
+4QClPDLdICQvdohVvfd7/LXRNuwrWOJcmtLitTEZY9lo2hhv+ZKs7PBrmpTBhTMY
+N2Et69tVPQh1t7cljf3Esij5AUczv979C9Lvukj8Kb51Et0T9qcGAs/M3b64X7FO
+KjWVVQttj3AkjgLZ5OdYlm7uRRmYmKQ95wIDAQAB
+-----END RSA PUBLIC KEY-----
diff --git a/retiolum/hosts/exitium_mobilis b/retiolum/hosts/exitium_mobilis
new file mode 100644
index 00000000..3b112a0f
--- /dev/null
+++ b/retiolum/hosts/exitium_mobilis
@@ -0,0 +1,10 @@
+Subnet = 42:0:0:0:0:0:0:AFFF/128
+Subnet = 42.127.75.187/32
+-----BEGIN RSA PUBLIC KEY-----
+MIIBCgKCAQEA1zv7tkHIUxJX2FIFcfakvZZYuI3VH56nkQYlpTUzO9WscMF1BgoH
+WKOvHy9QzxAJgqmceroZKbV2PIws/PZgwk7vNGPmmZtzkTuNS+RXd2y1WwKTHpxT
+IZ5TKo9AGuU4dcMLAR2xheCJzTRNoxj4UrUgN1WkAqdKhN0Dysglfb+FuUiMdbop
+rbzsKhJZKnJOnS00Z9K7ZrTWkYQR6nhMuZ0EMggc+pa5NesHfIoeitXQxB7tz9M4
+6O7xE8ZkECdKXmRBGhSU2ghnCqiomDj9l6L6S6Ms8Q0ElPM78RTh1a32Euj9Ffob
+v4gQuzI0fUKe+pbm3VC6B+9awkdd8n1AzwIDAQAB
+-----END RSA PUBLIC KEY-----
diff --git a/retiolum/hosts/falk b/retiolum/hosts/falk
new file mode 100644
index 00000000..a8c9e2f2
--- /dev/null
+++ b/retiolum/hosts/falk
@@ -0,0 +1,11 @@
+Subnet = 10.243.120.19
+Subnet = 42:845f:0432:a816:c623:fa89:8485:8700
+
+-----BEGIN RSA PUBLIC KEY-----
+MIIBCgKCAQEA961eCQE562VPYjuZtd0+FNRfUghvD2ccjUlihMjzg46GAK+duqK+
+4peWklGOL4eRYQBg6G2VDzWiU2MxXVbXUZaMrxh7fTc3G3LdbqTxzAv3GQKR/6iA
+9bGUf6u4ztVNAcj2mrY3mfs4gMlBQyQ2wcM0ZUpiAMaRB4cdq7I4GVHbYTFYfQuI
+2zdnr0w8AjlMpFFcD0ExsWeppiJsE7iiME/S2VVfh2NrEpAKQbLH9fKrfkiJA/+9
+0VIH9wLLIYngUtQKbvEQ5xgx6ybrg0vO8ZqZ1ZGXYxOQZzWzPP0tvDU0QHSKYSWb
+FjcOf1lWSWjsjHxMl/Gh57hjNJFCbs8yjQIDAQAB
+-----END RSA PUBLIC KEY-----
diff --git a/retiolum/hosts/fastpoke b/retiolum/hosts/fastpoke
new file mode 100644
index 00000000..c897a97b
--- /dev/null
+++ b/retiolum/hosts/fastpoke
@@ -0,0 +1,12 @@
+Address = 193.22.164.36
+Subnet = 10.243.253.152
+Subnet = 42:422a:194f:ff3b:e196:2f82:5cf5:bc00
+
+-----BEGIN RSA PUBLIC KEY-----
+MIIBCgKCAQEAs4p5xsQYx06v+OkUbc09K6voFAbkvO66QdFoM71E10XyCeLP6iuq
+DaIOFN4GrPR36pgyjqtJ+62G9uR+WsB/y14eio1p1ivDWgcpt5soOZAH5zVRRD9O
+FBDlgVNwIJ6stMHy6OenEKWsfEiZRN3XstnqAqyykzjddglth1tJntn6kbZehzNQ
+ezfIyN4XgaX2fhSu+UnAyLcV8wWnF9cMABjz7eKcSmRJgtG4ZiuDkbgiiEew7+pB
+EPqOVQ80lJvzQKgO4PmVoAjD9A+AHnmLJNPDQQi8nIVilGCT60IX+XT1rt85Zpdy
+rEaeriw/qsVJnberAhDAdQYYuM1ai2H5swIDAQAB
+-----END RSA PUBLIC KEY-----
diff --git a/retiolum/hosts/filebitch b/retiolum/hosts/filebitch
new file mode 100644
index 00000000..64c88cb0
--- /dev/null
+++ b/retiolum/hosts/filebitch
@@ -0,0 +1,11 @@
+Subnet = 10.243.189.130
+Subnet = 42:c64e:011f:9755:31e1:c3e6:73c0:af2d
+
+-----BEGIN RSA PUBLIC KEY-----
+MIIBCgKCAQEA2VjW30A3uQoo5QwbFTnl5fuGg81DZVu8HXmDwgEkhZYr5Xf3V5/d
+fmPlX1igzatWYX0OylFAY69r0V4dqeTubIf83sz1eqtpXjK4czG8A3wMHEXj5Pzs
+e1Qh8K4rHMEATc7Y/cwpQBi2THn2bhufqgaz94m8HrStCZcKCin3fDMbE01WHWX1
+KFqeBtUd7b9pWbXKlLBNpHTZoGxVQk0Hto9pxYzHecRsbQXykYk3Rw2tSuf0aH99
+oY0i3LjOb+f2oq2S4qVHqHZsMJfDVr+x2/LP1SIcc1lVTztWSSAzZEokE0/ejvXf
+wkquBVHXdl6LuzH+/V1I7OsaMhHShYu1LwIDAQAB
+-----END RSA PUBLIC KEY-----
diff --git a/retiolum/hosts/filepimp b/retiolum/hosts/filepimp
new file mode 100644
index 00000000..c689c885
--- /dev/null
+++ b/retiolum/hosts/filepimp
@@ -0,0 +1,11 @@
+Subnet = 10.243.153.102
+Subnet = 42:4b0b:d990:55ba:8da8:630f:dc0e:aae0
+
+-----BEGIN RSA PUBLIC KEY-----
+MIIBCgKCAQEA43w+A1TMOfugZ/CVwilJn4c36wWSjihaeVe7suZD0DSscKBcbkGg
+3dTCSTnu6Qb9sYd2mKebKXLreO6nhEEoFGsRU0yw/1h8gl7mWYEdTifPfvM5EWwS
+wkN9dJ5njwIUSRyWH7QTsLkiRJVFN2UxEwrhAbo1FJ7yuhRgAKqKJSN4yPVViZwR
+oHyyobvm/i2J+XSiDI9MRo74vNjnDLvO7R6ErIrhOPP1bD9fx3u+UYUfgS0iCO3X
+UN0duBz/faRcl6IRytZOuHaIp30eJ4850ZK8RPz/Dqqj+USMFq60i0oMsuAi/ljB
+8b+eQBt6OXu4MSntxoR8Ja7ht+EOTDnBOwIDAQAB
+-----END RSA PUBLIC KEY-----
diff --git a/retiolum/hosts/flap b/retiolum/hosts/flap
new file mode 100644
index 00000000..ea6aace5
--- /dev/null
+++ b/retiolum/hosts/flap
@@ -0,0 +1,11 @@
+Subnet = 10.243.211.172
+Subnet = 42:472a:3d01:bbe4:4425:567e:592b:065d
+
+-----BEGIN RSA PUBLIC KEY-----
+MIIBCgKCAQEAwtLD+sgTQGO+eh2Ipq2r54J1I0byvfkaTBeBwhtUmWst+lUQUoGy
+2fGReRYsb4ThDLeyK439jZuQBeXSc5r2g0IHBJCSWj3pVxc1HRTa8LASY7QuprQM
+8rSQa2XUtx/KpfM2eVX0yIvLuPTxBoOf/AwklIf+NmL7WCfN7sfZssoakD5a1LGn
+3EtZ2M/4GyoXJy34+B8v7LugeClnW3WDqUBZnNfUnsNWvoldMucxsl4fAhvEehrL
+hGgQMjHFOdKaLyatZOx6Pq4jAna+kiJoq3mVDsB4rcjLuz8XkAUZmVpe5fXAG4hr
+Ig8l/SI6ilu0zCWNSJ/v3wUzksm0P9AJkwIDAQAB
+-----END RSA PUBLIC KEY-----
diff --git a/retiolum/hosts/foobar b/retiolum/hosts/foobar
new file mode 100644
index 00000000..2c77b79c
--- /dev/null
+++ b/retiolum/hosts/foobar
@@ -0,0 +1,11 @@
+Subnet = 10.243.135.219
+Subnet = 42:edd1:d518:f7d8:ada3:1ce3:f4f5:a986
+
+-----BEGIN RSA PUBLIC KEY-----
+MIIBCgKCAQEAsCu6xC0OctUKu0UsscOWfyQlMtMrD0Pt/wB+IDOnkEgDKqcTYGXW
+h6VqMqE2cQhV3ThoxqeIPnQzwiMuVd0n2q3ZDexfYvHmqTZoaMrQZJlgY4rDx8jC
+USFqnvtkJbOxFBiS3c5yjOIybGSGDXrAaxmn80xewNIsdSqaY1/2FxKwx1Fn+Kf2
+hIQOEYkdLhwPso+HyNGUwVKjsRVCSWdJSzBHB38cPZRoPpcmRHOTs/Jtx0b4RXQr
+tVYW8i+Jq6hCt9sDLJexP9unPGl30Gn052noj1t4DRCPFpOYSLJFcGU4n/OzYbzY
+O8VB5DjgGK0eyEXvtByxvWYPnuRwSLaH3wIDAQAB
+-----END RSA PUBLIC KEY-----
diff --git a/retiolum/hosts/fuerkrebs b/retiolum/hosts/fuerkrebs
new file mode 100644
index 00000000..35bbcf18
--- /dev/null
+++ b/retiolum/hosts/fuerkrebs
@@ -0,0 +1,10 @@
+Subnet = 42:0f19:8a1e:7865:721b:2378:bef7:1159/128
+Subnet = 10.243.0.144/32
+-----BEGIN RSA PUBLIC KEY-----
+MIIBCgKCAQEA1HoKqh7HvXCKybe2FNBI/wuOvkZuftL0/DDZfZtPlCRtdcOA4XFj
+hQng5+VE3NG0yKcRs59U8iHSeN9b7Is1YF4q0RtM9YQTDhvS/vfpHDq42ftjMs/e
+MIFvYBGr2WIOzOYPiACURRcaMmoAViqK2Bwda45jORPUGo1afibH9UcDs76lFuaI
+f3mUZvLlqdJEtG040WoT1douGWtUWkCB6/pVUgLAurncOz/XiSI3GFzkMUY+0pT6
+0G34AcYqvdQyxH3x0ebclFlfY2aPStf6bGMejcpRJm4M02xF809DVYlUL3mG6krF
+MdWP85dCQ4V/RL0HdZ9PEjlVhgNOF1aQowIDAQAB
+-----END RSA PUBLIC KEY-----
diff --git a/retiolum/hosts/go b/retiolum/hosts/go
new file mode 100644
index 00000000..de9ebeb7
--- /dev/null
+++ b/retiolum/hosts/go
@@ -0,0 +1,13 @@
+Subnet = 10.243.109.132
+Subnet = 42:f9f0:be1f:b191:116a:3db0:d546:70d2
+# dn42 routing
+Subnet = 172.22.0.0/15
+
+-----BEGIN RSA PUBLIC KEY-----
+MIIBCgKCAQEApKt/lYqRgl4KE1ouSi5nbt7n7FEjECkGtkRhLFDJs0uWNvPj7wEh
+nTtqzk7lJ8upHgmNN+1w98n2bcJ7Qcbz8vCcMEO7MXdlzGH9vet/g6ZgQ/Z1ijHl
+IxYeH7yyBDLoJ2gghMhiSF0cezFDmNKPMhN+cGr9Lou54igK3I5CMIMN8cx0Fu0G
+uLAxvnZfxIzzCnrF9xvZ6i3g/rEcaGjxmAysCW8SQdRmBKlkzQaUbLy39V2Z5y6m
+SWR7gIGgMVCkpSeWUVSi05wgnMhoEu6LEYTBy/3bPK96O/Y7JBVpYUHqk/ya2PNR
+eaHfEpCrKsek4t/5hcLk64Eo/ydzeU+gAQIDAQAB
+-----END RSA PUBLIC KEY-----
diff --git a/retiolum/hosts/gum b/retiolum/hosts/gum
new file mode 100644
index 00000000..b3295f98
--- /dev/null
+++ b/retiolum/hosts/gum
@@ -0,0 +1,13 @@
+Address= 195.154.108.70
+Subnet = 10.243.0.211
+Subnet = 42:f9f0:0000:0000:0000:0000:0000:70d2
+
+
+-----BEGIN RSA PUBLIC KEY-----
+MIIBCgKCAQEAvgvzx3rT/3zLuCkzXk1ZkYBkG4lltxrLOLNivohw2XAzrYDIw/ZY
+BTDDcD424EkNOF6g/3tIRWqvVGZ1u12WQ9A/R+2F7i1SsaE4nTxdNlQ5rjy80gO3
+i1ZubMkTGwd1OYjJytYdcMTwM9V9/8QYFiiWqh77Xxu/FhY6PcQqwHxM7SMyZCJ7
+09gtZuR16ngKnKfo2tw6C3hHQtWCfORVbWQq5cmGzCb4sdIKow5BxUC855MulNsS
+u5l+G8wX+UbDI85VSDAtOP4QaSFzLL+U0aaDAmq0NO1QiODJoCo0iPhULZQTFZUa
+OMDYHHfqzluEI7n8ENI4WwchDXH+MstsgwIDAQAB
+-----END RSA PUBLIC KEY-----
diff --git a/retiolum/hosts/heidi b/retiolum/hosts/heidi
new file mode 100644
index 00000000..c8af51b0
--- /dev/null
+++ b/retiolum/hosts/heidi
@@ -0,0 +1,11 @@
+Subnet = 10.243.124.21
+Subnet = 42:9898:a8be:ce56:0ee3:b99c:42c5:109e
+
+-----BEGIN RSA PUBLIC KEY-----
+MIIBCgKCAQEAqRLnAJNZ1OoO1bTS58DQgxi1VKgITHIuTW0fVGDvbXnsjPUB3cgx
+1GEVtLc0LN6R9wrPKDaqHS6mkiRSDVScaW/FqkdFhTDaBJy8LfomL9ZmkU9DzkvQ
+jncDjr0WoR+49rJHYsUULp1fe98Ev+y3VwVdJOOH92pAj1CAAUdtfG7XcGyHznYY
+ZNLriGZe3l1AwsWMEflzHLeXcKQ/ZPOrjZ4EFVvfGfdQdJ24UUF3r4sBypYnasmA
+q8lCw9rCrFh1OS6mHLC9qsvGfal6X4x2/xKc5VxZD4MQ/Bp7pBi1kwfHpKoREFKo
+w/Jr3oG/uDxMGIzphGX185ObIkZ1wl/9DwIDAQAB
+-----END RSA PUBLIC KEY-----
diff --git a/retiolum/hosts/horisa b/retiolum/hosts/horisa
new file mode 100644
index 00000000..ac4ed6da
--- /dev/null
+++ b/retiolum/hosts/horisa
@@ -0,0 +1,12 @@
+Subnet = 10.243.226.213
+Subnet = 42:432e:2379:0cd2:8486:f3b5:335a:5d83
+
+-----BEGIN RSA PUBLIC KEY-----
+MIIBCgKCAQEA1hhBqCku98gimv0yXr6DFwE2HUemigyqX8o7IsPOW5XT/K8o+V40
+Oxk3r0+c7IYREvug/raxoullf5TMJFzTzqzX4njgsiTs25V8D7hVT4jcRKTcXmBn
+XpjtD+tIeDW1E6dIMMDbxKCyfd/qaeg83G7gPobeFYr4JNqQLXrnotlWMO9S13UT
++EgSP2pixv/dGIqX8WRg23YumO8jZKbso/sKKFMIEOJvnh/5EcWb24+q2sDRCitP
+sWJ5j/9M1Naec/Zl27Ac2HyMWRk39F9Oo+iSbc47QvjKTEmn37P4bBg3hY9FSSFo
+M90wG/NRbw1Voz6BgGlwOAoA+Ln0rVKqDQIDAQAB
+-----END RSA PUBLIC KEY-----
+
diff --git a/retiolum/hosts/horreum_magnus b/retiolum/hosts/horreum_magnus
new file mode 100644
index 00000000..3019e9cf
--- /dev/null
+++ b/retiolum/hosts/horreum_magnus
@@ -0,0 +1,15 @@
+Subnet = 42:0:0:0:0:0:0:affe/128
+Subnet = 42.35.89.21/32
+-----BEGIN RSA PUBLIC KEY-----
+MIICCgKCAgEA4PcEqnw1ZrBgPl0yNO7eQ9aJpV4HKlENVhc/cobLh3dQgbmpw2Qr
+MQODR5qPxY+WmyZiQeU5sh8WutfpVn6xBCmR7QDqA+xpPhe/Y6uqWGDjxNftnetz
+gphYv/nPGj0Dv5mo2HGPFK1VG+kp9k+vlZb3r+03OVFrIVHsUg6qE4e8o7pN4OmF
+O10i85csMyKvSfA/rNHC7RdYP0tVLZTw4ZMTQh5t6zr/foHMr5KPXGVM/hjUWXW+
+ujSxUam6JxS1wk1zFp72Vd3X+JQH1eaDHidm3BBVAvCynyhUyaQh7nSjIDWZdGqQ
+GmBcj0M05o1tVGV/7sgQUTNHiLaX6vE35hQoq0Jr2bhfIzjhESLl7HuBMpvDntLE
+Tv+c/R3qryTNBBHFZOvYU0qx7I0cq5NLx4BqUXd6EykQvLZ53TyjFlINGQuEZXsj
+LOtyAj4n2EEg6WmSUhrB+tyowqumdT8ltemuhZ2zDmimep9EvMiZOVns8VkTqmBw
+lRzatTHS5tv6NieDzWTBuMqZiWjgpK8GILUn5e/ecIT2xTSVvo0jzIBwKtFpwf+X
+CkBB0tNlYYmDmHJxiKWBsgw27BFmQI59h3wGHXHSDRgShLBjNH62Lm6omDwivDJQ
+CJaTYPIsL8sdoCglCIV9NwUkj8tM+cvxZiZjvB3zizNxL57ZqpAcNGsCAwEAAQ==
+-----END RSA PUBLIC KEY-----
diff --git a/retiolum/hosts/incept b/retiolum/hosts/incept
new file mode 100644
index 00000000..348e44b1
--- /dev/null
+++ b/retiolum/hosts/incept
@@ -0,0 +1,13 @@
+Address = 77.95.224.63
+#Address = incept.krebsco.de
+Address = 2a00:7b80:3008:3::fafc:241
+Subnet = 10.243.0.174
+Subnet = 42:a2fc:1c89:65c7:6e60:1f62:eaf9:e9b6/128
+-----BEGIN RSA PUBLIC KEY-----
+MIIBCgKCAQEAvy4J8CewsXeFkFOLqDwiTN+3fF0yjmP5ZVtrLrPJn7Ux75elTdn3
+iLcJYTgaO1/dmw8fPD5DkNnb3wiadZiFGXpsTd1jD69mHcn/6RY/0Fcne9qDiqgp
+vafpUD5UP7/7S+l5kkD6n7HVRblLXJIJk6Z8RCRN8OGyfjMM1IKeoR8kR1+85fpf
+C28fnU3Nz3YJDazOaMD7aGiyGZDRyY+wRjbWtMXE/NH8ydN148ZpFaMvBjM7fl/B
+q8XS5Rs9lFlW2jpex+W2DNq5t4QRMUDrLgD0gug0UiYCYw4IJg7OiI3g6vwjSDtq
+hRxpQ4nq3avmTR/NWzZ97PP4eXTCIQhiQQIDAQAB
+-----END RSA PUBLIC KEY-----
diff --git a/retiolum/hosts/ire b/retiolum/hosts/ire
new file mode 100644
index 00000000..724158cb
--- /dev/null
+++ b/retiolum/hosts/ire
@@ -0,0 +1,12 @@
+Address = 198.147.23.143
+Subnet = 10.243.231.66
+Subnet = 42:b912:0f42:a82d:0d27:8610:e89b:490c
+
+-----BEGIN RSA PUBLIC KEY-----
+MIIBCgKCAQEAwofjmP/XBf5pwsJlWklkSzI+Bo0I0B9ONc7/j+zpbmMRkwbWk4X7
+rVLt1cWvTY15ujg2u8l0o6OgEbIkc6rslkD603fv1sEAd0KOv7iKLgRpE9qfSvAt
+6YpiSv+mxEMTpH0g36OmBfOJ10uT+iHDB/FfxmgGJx//jdJADzLjjWC6ID+iGkGU
+1Sf+yHXF7HRmQ29Yak8LYVCJpGC5bQfWIMSL5lujLq4NchY2d+NZDkuvh42Ayr0K
+LPflnPBQ3XnKHKtSsnFR2vaP6q+d3Opsq/kzBnAkjL26jEuFK1v7P/HhNhJoPzwu
+nKKWj/W/k448ce374k5ycjvKm0c6baAC/wIDAQAB
+-----END RSA PUBLIC KEY-----
diff --git a/retiolum/hosts/ire2 b/retiolum/hosts/ire2
new file mode 100644
index 00000000..6b9d0a79
--- /dev/null
+++ b/retiolum/hosts/ire2
@@ -0,0 +1,9 @@
+
+-----BEGIN RSA PUBLIC KEY-----
+MIIBCgKCAQEAwXkn0H/+BUiARYSzZCpjqEwGeDZsbRHoWcRNlmlP6XjPMbKKQBHf
+gdERPevhoGaNtQdW6SEA5xb1cJDHZILHZtpJ63hs6999gB9x/n4x7eR6C9d7HPDD
+rGv+tBdwo8QWOIQIVnSAr6WdduSg2CyZbHd6d2Xd12vrfqJxnODSUHibrUusEc/D
+XBK2n1un3znzk7P+KT0xXMtNPU2678tGuwsvSIOoDfDx9+2xuxGANeqvEOeSAgg/
+SUH5CbcAFI2/4AKWP4e/yxM26YoKdz1Fu/hx7WqKwYmPERrgcr8ienx4WFGG83AJ
+CmiYwO23L4qSp1KZT8SbGDh2YpamZg2BZwIDAQAB
+-----END RSA PUBLIC KEY-----
diff --git a/retiolum/hosts/irkel b/retiolum/hosts/irkel
new file mode 100644
index 00000000..b197e5d2
--- /dev/null
+++ b/retiolum/hosts/irkel
@@ -0,0 +1,12 @@
+Subnet = 10.243.253.117
+Subnet = 42:1970:cb1b:d9e2:4603:c1fe:ee00:8145
+Address = 2a01:4f8:140:21cb::5
+
+-----BEGIN RSA PUBLIC KEY-----
+MIIBCgKCAQEA1i2XcUold9p5aa4qGv2o3hMwlIt4+CBxuOwnzMOp4WjJyGWBrQiM
+Lw9qpwvc0W6c/MYTAUzkq42766jlYRzA/yse0/DeKJvF5BrCk36eH9R2okK1A7K5
+tk725pTf6D37mkjbiupo7FFfHNGjFdSH7174ZpK/N81YWgrGo1cQUU8JJKGgFv6S
+XZWiWbJWKnLW/a4zyg7wnkH3KlvOAthSNgyrVqZazi6gTJ12kZTg9DGg+Q7iTdi5
+oXc4hilymCdF2fDfmG7M3naaRQKntjlpJmc2Au7wTVXj3525c3Ms+1k//HlX8DQK
+a93ZJA25nfpoYznx73lz/IASO2n/jn/3mwIDAQAB
+-----END RSA PUBLIC KEY-----
diff --git a/retiolum/hosts/juhulian b/retiolum/hosts/juhulian
new file mode 100644
index 00000000..d9da75aa
--- /dev/null
+++ b/retiolum/hosts/juhulian
@@ -0,0 +1,11 @@
+Subnet = 10.243.0.38
+Subnet = 42:449f:b00a:e973:514c:3e9f:97ed:aac2/128
+
+-----BEGIN RSA PUBLIC KEY-----
+MIIBCgKCAQEAnNyOsNItOzNQndheZ3ppOMWvIOuO1wgLXArINS1ORcgIAJmLpqDI
+whsZFCVifwAXsdeBJyyZOPZrc2PQ4F3KB9ByX6PQ9jqAhun1aE9SDDqp+woOrTlP
+BtJ/8zAmRhrfak61TxpeTndLk95xOLaCwvS2P4SJLIcyutTbbFdBCqpu7cFUGOOP
+qCKLX7/mv2L+GNmQAnWZ5HwXQzBS6gNaNIcQ8mPCUAIZgRU2T83x/tnyH1RlATK2
+lYUWRM0ie+dRMhiDcwmmZrwYl8wzyvuBPEr/p8ZBM2tua8GlQzJUJl44AiAcx3w9
+0EB5MIRL5Qb0yBvXD0yR+bDizqvhd40LvQIDAQAB
+-----END RSA PUBLIC KEY-----
diff --git a/retiolum/hosts/k2 b/retiolum/hosts/k2
new file mode 100644
index 00000000..588f96cc
--- /dev/null
+++ b/retiolum/hosts/k2
@@ -0,0 +1,28 @@
+Subnet = 10.243.97.72
+Subnet = 42:717e:2a17:e7ff:eb6f:b760:5af4:7da9
+
+
+-----BEGIN RSA PUBLIC KEY-----
+MIIECgKCBAEA53djolgdUlLom7SDi+x1jscvLduf+fzPNlVRk0c6UtR54iHpzVrg
+7OT+PZEAirhWrHyhQQIRoKRK6vRKMwm0PfrMjQXo+1zhBVD/JiPzVGSBfETqVI8E
+jeCS7EaKsZ8gRdWZ4QkDfaQhdWA2RrvVcwpVVxMkjYsHj3EtaHkWGcJs1JAuOsK5
+Zo8ZbxpzgcNz3tiFR4PSp+N3ARE7t2sj8U6z2lk/0TIff3To56u8rDasUGAKf3Rp
+okQmG0EGgTN+qJs/dwIdeKtxcZrRCVd68shphiYE9wC4WXELgJJ8jo4tIiZRu7n4
+lXRn9zQYY2lax4OlBZSkRiaPEISwv5Vv48/H+I1vRaEhx02QL/PnODWSlqMNGiic
+wMBh+DdvQIXRm1W0xxlsY2YOo7GdCywJyLDue6v7ykmQBFgYqP/gVrsoR1y68IdS
+3/dT0lYhrNL+PwKjI0iXPBvA018yw0Dvdgup681C9nzdyvd7y9NorxjeE9Gl9/yd
+X6W8ZE2WIAsli2wGsZLuedcn0mZ25flXbFn6OhrPhP++Kub5IBid/iT60KvxY6H1
+l/DEBJJmFJBsBvFPyFXoEkPJSD/Uc/2veMlb/ues4ur0eBMVML1ZaiK0EzdBYfCv
+kgnVwQG6c5+0XkMk3x5kQ93E0Mr5whILK2upI2tBygAN/SpTsoNXvOFIHw/Ksmcl
+Eqly4P7DtQ9Lu+1DkoLa4ltcejZj0Jjy1j3AI59v0p3Ygx2OWHFv4H5GVjq1T2Pk
+1IAU8X2UTNmcQw5UReJxkNdREOw/XI2pNSBKBDOCMKXH4+a7P3GwheadQiVU5z/Z
+ie/wbsAtp8MGd67aN/i2nrTQfk7RZzIec/UG1XhlQPmJAVIfS5QnFnw+cTAMtYeU
+wHHe4Q3m2+bikBFoqdhJo93Ut5ywGeueKXSyJX6I5AXiiiWnme+IHuNH0G5568yO
+bA9OwDLt4C2U6BFEQtHBA0I8Hh2RT9ObrLUVBUK1aAujLvGvfPhq8QYCcWDJsvxm
+/uAJGb8UdPScTEjftYTWIc1/jikIpK70qOeKiQfxT91hQEBw5mgMCRnAy4m9OjCI
+ntVpHGpylesZWM/na8gZe4lo2dXI7tc2urpqyOThkbpYXNdlNG4F/QcuP90QmiV1
+hyriyHPjbSwIRM3aX7Y/WKwzky0swW+J6mW78yqa5Gt4SzDQxd3KHDAP5lZuFgEM
+aHLOkmOoYlOxWi8eOIWByoH77GFyudeH0EMZV8pwCOTw3GUa1ehhOUlDD6i3CH1/
+gJOQjoKC/ndny8Qz/S+tCLjRHIpQAx36yLME3AvXoKXctuZsZy/9CAsLt9tLZJI5
+AqC/vsOcurKsk1i4GtwuCFnu3qr4OvhwywIDAQAB
+-----END RSA PUBLIC KEY-----
diff --git a/retiolum/hosts/kabinett b/retiolum/hosts/kabinett
new file mode 100644
index 00000000..e434d419
--- /dev/null
+++ b/retiolum/hosts/kabinett
@@ -0,0 +1,11 @@
+Subnet = 10.243.213.120
+Subnet = 42:e792:1d5c:c89f:f932:e954:6ada:1dbf
+
+-----BEGIN RSA PUBLIC KEY-----
+MIIBCgKCAQEA1sVtqyeCdKB1nabs0FOC62J+J+grP5B/3/s1cuAxcJmER+NaT/Kv
+rvQeB13BmrIjfJTBaezdR+wp0RiPB7s/aMPjWwS5rzh3KhSFk2SFpnLjB2WIpKqs
+N9TQEf2xB0TBWHqcpSqSthjP3SOGNP7gt5l0D13QIHkRQ2xX1PqYikkYi07cQLO4
+rwXrlEBOY8Dn0GR37NA0k+zt0AIdJ78zXHNjVn5hRj8aLGKB0q/FOtdMNRYEGD40
+An82Y2sW+b7U6Tnrw43TOO+AP/OrclEjmNDTRqYLiVAeFHXKjwbCsSlof0qmoipZ
+H+nbsB3qkFpNEy1cA9c/pqHfSpqV3WihRQIDAQAB
+-----END RSA PUBLIC KEY-----
diff --git a/retiolum/hosts/kaepsele b/retiolum/hosts/kaepsele
new file mode 100644
index 00000000..fc8bf458
--- /dev/null
+++ b/retiolum/hosts/kaepsele
@@ -0,0 +1,11 @@
+Subnet = 10.243.166.2
+Subnet = 42:0b9d:6660:d07c:2bb7:4e91:1a01:2e7d
+
+-----BEGIN RSA PUBLIC KEY-----
+MIIBCgKCAQEAxj7kaye4pGLou7mVRTVgtcWFjuEosJlxVg24gM7nU1EaoRnBD93/
+Y3Je7BSUbz5xMXr5SFTPSkitInL7vU+jDOf2bEpqv+uUJAJIz85494oPS9xocdWo
+rQsrQRAtOg4MLD+YIoAxQm2Mc4nt2CSE1+UP4uXGxpuh0c051b+9Kmwv1bTyHB9y
+y01VSkDvNyHk5eA+RGDiujBAzhi35hzTlQgCJ3REOBiq4YmE1d3qpk3oNiYUcrcu
+yFzQrSRIfhXjuzIR+wxqS95HDUsewSwt9HgkjJzYF5sQZSea0/XsroFqZyTJ8iB5
+FQx2emBqB525cWKOt0f5jgyjklhozhJyiwIDAQAB
+-----END RSA PUBLIC KEY-----
diff --git a/retiolum/hosts/kalle b/retiolum/hosts/kalle
new file mode 100644
index 00000000..8238887c
--- /dev/null
+++ b/retiolum/hosts/kalle
@@ -0,0 +1,11 @@
+Subnet = 10.243.154.218
+Subnet = 42:05bb:0d2f:4f25:2c6c:1217:6264:dee0
+
+-----BEGIN RSA PUBLIC KEY-----
+MIIBCgKCAQEAtILSBsb+ISWiyUjJHWN5JWNY7Z5hxxxFADQbK/1ZdlCdeIorQI2j
+gDHdWgck9NasXXa04I+5jw2eDLjU26+r+T1vP/fdOg5yLOgnknL4jkHFVCb/ScRM
+2JZAEXLSAz6g33ks2snQzuyAPTEvZhp49+PN9VmX0JBr/ErKGZzFKVVU+gREVRKa
+fOC4+daKrmRzZWg9DFaH5DIrIEiXidixuX/boHprJeULdp81NbnymXxhc929UWbV
+5g8BnuTlKqDDM7stJC4dwKizrv6wXuH6GD0OsDiU8JcoxV3jvM16NmgtAe9BKH1q
+tg1fIY6f67eIihr3Lnjb3UPw3UqwFXosGQIDAQAB
+-----END RSA PUBLIC KEY-----
diff --git a/retiolum/hosts/karthus b/retiolum/hosts/karthus
new file mode 100644
index 00000000..75a8d15d
--- /dev/null
+++ b/retiolum/hosts/karthus
@@ -0,0 +1,10 @@
+Subnet = 10.243.42.13
+Subnet = 42:42:42:42:23:23:23:23
+-----BEGIN RSA PUBLIC KEY-----
+MIIBCgKCAQEAtGL2Gu8Dw/NsgJNcu4XY9eWUM8prL0JC1UfnACXuOCPns+Bdm/dG
+uVTHdejjxv6y4FjWNCoD+45lP31QfBIqIOtUsfz/4ox9bvyTOUWQCe0NtBs2SMyO
+O1eWSD4cnNfskYdyOHQbD+KSSiksyzaZdcqqx9FgWo1VT0f+oElnZ4nLBKRNBguN
+GwVLjreE0GSxhcV2r6oHsaT+udvQ/PlQgn/zia2tKT+OI54WDJGXsKEvwRRnaRz5
+33Di58g3dffo0i7B3S889sa5B7l1kh229cw24Gc0AOtmm8Vacle6iTw3Eg0uLzxM
+nKpOma0+K7CoE4IqSZy350iTgheHwq+y0QIDAQAB
+-----END RSA PUBLIC KEY-----
diff --git a/retiolum/hosts/khackplug b/retiolum/hosts/khackplug
new file mode 100644
index 00000000..c149d93b
--- /dev/null
+++ b/retiolum/hosts/khackplug
@@ -0,0 +1,11 @@
+Subnet = 10.243.217.107
+Subnet = 42:ebe3:90b0:539a:6ef0:0910:b724:00b1
+ │
+-----BEGIN RSA PUBLIC KEY-----
+MIIBCgKCAQEAvytShP1vgYLDYJhiC26Vc1/cVJOptUnuyTc8Id9vkCkgHZRpKs3T
+jO2KRaQMDWMXfXkMfVp84/2Q85hpUzYqXQHaNzitg9nHGR2n+a6zfwNKWAm6n2WK
+AMsPf1weamzs6EfCm5WztqenoHKNUxpzXVyLJES/WK6e5ba7FEpszZx+ydoc5GjL
+kezqch5p+U/J2JoUx3aIpQuWvc0i/4KYOuGzlWgUYLNyqL1m3gBkahiPuOtzf9Ul
+EP8QY/GQa1HTFuhLS0Y5nVjZvWnjVVEloXbq9SD2I2fc4GD4+F8wtFMsJyEF2qxY
+XfSLTlpHaJbSBNiopQyWG62RZda/p0yq3QIDAQAB
+-----END RSA PUBLIC KEY-----
diff --git a/retiolum/hosts/kheurop b/retiolum/hosts/kheurop
new file mode 100644
index 00000000..bbe93fe0
--- /dev/null
+++ b/retiolum/hosts/kheurop
@@ -0,0 +1,12 @@
+Address = 91.250.101.180
+Subnet = 10.243.78.78
+Subnet = 42:bcd9:7340:9628:9604:7068:5061:4976
+
+-----BEGIN RSA PUBLIC KEY-----
+MIIBCgKCAQEAqIFB0Nk2eSg/K/dJGOEegtezhn5P1RUi1ZgxoZoTR6K4T/tSbD2u
+gjPU53mhRN622lLayMMXtWVKdhO4IUu3mKfemA/8/fy7Qu9T51UUS+NXu/4g5X3W
+Jg2a37TrnQUrsqNud7QQhPTGF8L0+UT2mHlfRYggtAO1J2pSWtsqDiMAOD+89zvg
+Gta8aMdaFPhdkfboaHH6mVJBFOkrjQJE4RiUzwZS24PKh6gRJV4cENdcNRYdVwhv
+dOM+SWzPZXDTAVyG6HptvSdfDUKi4hJY4yS+TIf9j7yR0YpUie3CsbN4a9jP2KVt
+/NhzZ9nNaEv6O8Nk+7Zu8OaxUPgctEFYfQIDAQAB
+-----END RSA PUBLIC KEY-----
diff --git a/retiolum/hosts/kiosk b/retiolum/hosts/kiosk
new file mode 100644
index 00000000..8f53a08f
--- /dev/null
+++ b/retiolum/hosts/kiosk
@@ -0,0 +1,12 @@
+Address = 2003:6a:674e:1001:211:25ff:fe05:a54d/64
+Subnet = 10.243.232.122
+Subnet = 42:1ad1:b481:00f5:aab8:f8cc:51fe:4b87
+
+-----BEGIN RSA PUBLIC KEY-----
+MIIBCgKCAQEAwohazY/T/cp5Na3zLEWhz9Lnz78PladH7CMN+1TLzNXgK96bPvrN
+6ktxIFc0s4m/jWW1AZOjxxGZGmwvaGag9XH8NLMmaqtd2NpASI4c801wEVLuNpss
+gqPAIhDdDWV0WmiDiHe96qQuBVNGv7jlHTuNghwlmgLF0csRDiZZDHn5Bq7plAJB
+0kQSspvq7UpBzVHVlDefIIe15/Yyt9IC21S1o746ZIZ8RYCG63Mnbcs4vfShVxJX
+NnD9++HJV39NA9ozR0bDQUw6s0rVHH/n5iWaktJZ23r2TG3O+7ZZj4QHmkng/Xow
+pgIjcpIWlaqfG29Gl43SWgsVnphemvyP3QIDAQAB
+-----END RSA PUBLIC KEY-----
diff --git a/retiolum/hosts/krebsplug b/retiolum/hosts/krebsplug
new file mode 100644
index 00000000..ab9c966c
--- /dev/null
+++ b/retiolum/hosts/krebsplug
@@ -0,0 +1,10 @@
+Subnet = 10.243.0.182
+
+-----BEGIN RSA PUBLIC KEY-----
+MIIBCgKCAQEAyd4FnOIEcUDQDudDOhU4wwKT+lqV4RJMfg9QgZC2O3xTGvzsFeRG
+aSMIDMkPzhJ/ggIWAzC+IM2kBv+YCRhu4zOnzWIo5IaC8Me2TZ1JhZ0nZN1YzEGD
+LmBsnngO5L1VnWLYSKRALa5Kv6wQHHz0T6PlsvBQ8SWDG3IKIe/gOFz7eh1Z+ss/
+5XaiYeLMmukEuuilOJZhfDiZPmYOeFI5w7YTM+8Iz/oZRyf8P57pjN21R3feoyTm
+WusgHUuRLRqSUHdYu/E36EyZ9Oc0WPk5yLUhstkPaS1Y35xMEhZfQQpIruQxOst1
+fgiOQg/gKmizzgzdCbfAf13dknkWsqoc0wIDAQAB
+-----END RSA PUBLIC KEY-----
diff --git a/retiolum/hosts/kvasir b/retiolum/hosts/kvasir
new file mode 100644
index 00000000..6e5772a5
--- /dev/null
+++ b/retiolum/hosts/kvasir
@@ -0,0 +1,10 @@
+Subnet = 10.243.222.181
+Subnet = 42:77e5:5496:7cd9:78aa:c4ab:ca70:6860
+-----BEGIN RSA PUBLIC KEY-----
+MIIBCgKCAQEAv8wui/1n4VhSd8BK1yswCrHydiYFx/+5Jdi7cB+S+qJU0FCsKs7i
+9BdrTcJ+djBn6WXA6UXSHtQxoRPqT4OH9nW4HnXaMGvJJbJhHtX6C/Kun1p66zUE
+oEBV0+WqSvN7+xgsMxoXjxB4YMmvMyI5zSl0uEx3sBfvkftoISQHruD3PoWInE9H
+CfVcuk1qzvsbk23uEyGjS1k6z0rI/HunmcEHw1r3oTAgFg7ZXH9ElCBBDbwECjMI
+x+DREZlH3kqJ/W4ulg6+tf9bh/22oBbJu2H4hza9k8lx4z1jUARqeJVhNVKOiyXM
+l8rFUiGAXortMoSlslnPXvShSuskMJP2CQIDAQAB
+-----END RSA PUBLIC KEY-----
diff --git a/retiolum/hosts/laqueus b/retiolum/hosts/laqueus
new file mode 100644
index 00000000..0bdef307
--- /dev/null
+++ b/retiolum/hosts/laqueus
@@ -0,0 +1,11 @@
+Subnet = 42:0:0:0:0:0:0:1a1a/128
+Subnet = 10.243.0.12/32
+
+-----BEGIN RSA PUBLIC KEY-----
+MIIBCgKCAQEAy9lnH4qDSYeNbpzpcQyq2LzzxkVy2N1vGgKkVttzx0cgMvyRm3aX
+wlacS+3ILBZ3tw+JuCKR9gjRluwKkqoReEINcAam/GbubJ6QBpV54goYm7YGOIuf
+GkbWVk7Kts67KWWhZDzEL30GRv94K6e+m8e7rhnqrTgPyPk3oSwHzvPy1oaf6bTI
+Y/aDQjohFVvQZxF8joKhAE8JrzjKAn8yXmX8VlGW53XBXAb88Ggkr5raMZ24Rcc4
+pdkOc7sFfVImH/ASwkcPi2xX0adlz937lD7rkn5/Q9B9AwsHb1yQKJgWEeYWOQ8C
+F0SzpZiwHz5qB+eg3wMT0ZnvPJKitshyjQIDAQAB
+-----END RSA PUBLIC KEY-----
diff --git a/retiolum/hosts/linuxatom b/retiolum/hosts/linuxatom
new file mode 100644
index 00000000..dfd09b51
--- /dev/null
+++ b/retiolum/hosts/linuxatom
@@ -0,0 +1,11 @@
+Subnet = 10.243.173.58
+Subnet = 42:1c07:1a24:1a26:c799:3b44:a8f5:59ea
+
+-----BEGIN RSA PUBLIC KEY-----
+MIIBCgKCAQEAvGy172meTuwHfGZLVHi04+7jb+GRumqNRowffrmMOxFAq6wiL1E6
+7NfJFSc2/wmLZdTCnAtScVicVFZ8UEK2Uv/WMdevJWP63LxUOXpSFtoxNAlpSk9e
+rzwxWj3VxHru7EZA6gu45ff4/seApy/jDy+hceOmOiG5z8VudoRYWe98IoO1ua0E
+rtz415WP0xN+Mb4mGU48JSLYZkOHVIvkf+VVF5jXFbbnH+w0kkTuRMMp6Z7ETvdZ
+RU9nKJ55sflkPhs1/ttU4cYkci55YPVGl7GCCr6Xw4oerIz/jHnzBGroh/wDpEXm
+6RxpsC6DnVQUW3zw0DXuSKoAy0UoQPYqQwIDAQAB
+-----END RSA PUBLIC KEY-----
diff --git a/retiolum/hosts/luminos b/retiolum/hosts/luminos
new file mode 100644
index 00000000..fe04b33d
--- /dev/null
+++ b/retiolum/hosts/luminos
@@ -0,0 +1,11 @@
+Subnet = 42:23:42:23:42:23:42:23
+Subnet = 10.243.42.129
+
+-----BEGIN RSA PUBLIC KEY-----
+MIIBCgKCAQEAuxgY9SfSCyCuTw2bPtC/He2/NZDYQOcGd8+5Bo6h1/h2pU+qKPQB
+0digU617dG2NVMaT0qmzEz86e2avr0PQsyfhmHO8JNOTqwjyQzKcv3iA+B0jU7Gh
+F/PaW+e+0O+a3LO27FCA0uuxEHyWaXqk53a3wKmjo4fuVy1QKOOoiaFaYLaaTgmm
+8OJG+AKWR/ArihpopgAHFjiqB89xWVw5CgxHDwfzVcmI9SOAaEuTfL065XM4uoH/
+LnbtoyT8zN+He1AlaEJMUaWdo8SWfjBFyVrT1zRQ+0S47tlTCW8Neb0KKs+m9d0G
+rAdv6+iFmQzpv76cgYQw2+AkqkUF8Y8xSwIDAQAB
+-----END RSA PUBLIC KEY-----
diff --git a/retiolum/hosts/machine b/retiolum/hosts/machine
new file mode 100644
index 00000000..4927fc84
--- /dev/null
+++ b/retiolum/hosts/machine
@@ -0,0 +1,11 @@
+Subnet = 10.243.60.31
+Subnet = 42:698d:4e02:4d70:b080:acdd:513d:70aa
+
+-----BEGIN RSA PUBLIC KEY-----
+MIIBCgKCAQEAvkLboZ6wRALd++ntUXfyzCT9G1pWSJNJhrdut8dPfz/+IIbx4thz
+tbq5apWQRaHj6IILMiQqpfUkhbfz3WS2YP62f8nAzKLKB0zzRAJ1lQjoZOXQseQJ
+Ydyf9dEDhRtnSnOwsmSDEch/2KhgCj+fdMcnbcoAg3PYJGzsz2ykEtoh80Rv1IQa
+tW285CP2GooRp1gwy3WKL6at/uW6D4/tTIimHML5JbLKj7mH+3nOyrhRGyZP1b9s
+XtdkePuaQKrIjmv4rEIYx2taFmmQp7XpC2m4Vdoy7WdIzR3WTgWo546IOygY1KIW
+fDOH+3UoG5oI6y4hNNa7+NH8DpmdtzXYnQIDAQAB
+-----END RSA PUBLIC KEY-----
diff --git a/retiolum/hosts/makalu b/retiolum/hosts/makalu
new file mode 100644
index 00000000..3d080ca5
--- /dev/null
+++ b/retiolum/hosts/makalu
@@ -0,0 +1,11 @@
+Subnet = 10.243.90.132
+Subnet = 42:5ee8:8626:f03e:bdf1:562d:94d1:f395
+
+-----BEGIN RSA PUBLIC KEY-----
+MIIBCgKCAQEArFuedyPX7kDeH2GwYD3UcRoFjGpTBJXjJzm3LoleyXOeYSdkZZ3d
+ljIeEq9alf6UtqEvYH2HfX8m9fEcHxwFMmJ1CPEwkDZI2IgbLOYV0x2MWLShEvtC
+vGeNyPt+TdiDqDhN8EyRvhB/KzEXdbCUZ79htf8lRonNLYPSRNh58CTZ18T/+3iF
+vy6igdpj4JiLGzdXEggO0KToW5ZVCRjuEaH65BlXdjkCM0dk28FJGh/oakv7hjlZ
+M6c3HJY5RAygO4uLWOyB37j38GDAseDYnNwnLt4jCk7gO48SnsS77efEghEMVVXK
+qnSKbX0KCSvVOJbrvVyP/16o2521eGl3MQIDAQAB
+-----END RSA PUBLIC KEY-----
diff --git a/retiolum/hosts/mako b/retiolum/hosts/mako
new file mode 100644
index 00000000..0488bcaa
--- /dev/null
+++ b/retiolum/hosts/mako
@@ -0,0 +1,11 @@
+Subnet = 10.243.7.19
+Subnet = 42:4522:2222:2222:2222:2222:fefe:fefe
+
+-----BEGIN RSA PUBLIC KEY-----
+MIIBCgKCAQEA0FQq5EDxcRUfquoDottz1urpT72PB7pReCSZ1fLGqK5z8+DLW4m9
+YB36xW4jJ8pct9iD6kKnX1JCNt11h19QZvc8GI/9pELV3nNaliz+PI1SQNhOrwM+
+Lza/lnddpmvQmJvF6TTLtuGqTANEZcJ7MUpLJ5x/XEFwIcZb9L30EDIaQQNeRyIs
+xJbuAxHquKrb2Wpanm4hWNYqknV1W7lNbcvmONZ/GupQ411XBhXs4EIAA7fqBEcp
+7FAgjgHIxiAT07Z1hBclv6CPDjFT4ieJAq6giCR/gc484x0UNwSpHBkalK558m4e
+icDuVgajrCZ0ShIAQXgtrSpSM3Y53GUhnwIDAQAB
+-----END RSA PUBLIC KEY-----
diff --git a/retiolum/hosts/miefda0 b/retiolum/hosts/miefda0
new file mode 100644
index 00000000..acf00124
--- /dev/null
+++ b/retiolum/hosts/miefda0
@@ -0,0 +1,10 @@
+Subnet = 10.243.8.1
+-----BEGIN RSA PUBLIC KEY-----
+MIIBCgKCAQEAqrYc7LfSPjKpgnbfENU3oeAoFIRnG1CKHi0r4Tvy34anMBRHA4yY
+olPC/IWiNoEadnCvlAEGtcFFh/xncNm+rW+BhO1WPLuo0wDe5fxJrkApuuhwP/lk
+DMNrKtPOH6PV18yuQTtWgmiLo9gT15rRTDs8SaEf9eyTEV6zWVRDFDiFqwuY77iJ
+GihKSlKGDYCUdT8TdaguUQ8akdAUhfXk0F33fAqTYwT25BDAXJdeldTLTb/5EADx
+UMhnY0CsWgDYz9fpL5UNUDe3Gu53GghFS5RWvApasbzmlbrCwCF7MFDfc/yJFCrE
+lF3Nm+GVqU6Uu6cNJ9VYHCu+uxk4PIU5GQIDAQAB
+-----END RSA PUBLIC KEY-----
+ECDSAPublicKey = DEwsTd8tdaQLx/o0EgIOl9l+d0MqDRLEVWnBT9imfRyuzXWatwgXotADc723HxhZ4NXlvuOu+er7PdWstif3nS9/qC
diff --git a/retiolum/hosts/minikrebs b/retiolum/hosts/minikrebs
new file mode 100644
index 00000000..b0d60558
--- /dev/null
+++ b/retiolum/hosts/minikrebs
@@ -0,0 +1,10 @@
+Subnet = 10.243.1.1/32
+#Subnet = 42:0:0:0:0:0:1:1/128
+-----BEGIN RSA PUBLIC KEY-----
+MIIBCgKCAQEA0fu8F+XJ6hHsIj8QtdSZIhE+Ae2sEIY4dHcnHbCOeHJlOQQDJrme
+frmG65BX4BMcClUyhvvMwlZIerFwsJoEwa39lB3/Y58OwSS9cNCZTShQPbyVy5wo
+oS97tVUyQENMELXgodg7CUNaloVXGOyXgCOkfYOb5CpWi8NXNsSE1CjZc1XZNI2Q
+2dFBzp6FtRcKc5x5xWuUMnw1Ll2upW2uHZWfgRtgv+pzxVTiNvDqACu8Klwj0bls
+B87DEYeUmiC+CioOtyhiQimUGE8lU1aMaqCyfSsqeBEclSvOCnpaEQu4j6aiY8SE
+5Gm+rteYWKfK2LYV2NOg7n9AUR6d0v8P2wIDAQAB
+-----END RSA PUBLIC KEY-----
diff --git a/retiolum/hosts/monitor b/retiolum/hosts/monitor
new file mode 100644
index 00000000..8584f70b
--- /dev/null
+++ b/retiolum/hosts/monitor
@@ -0,0 +1,11 @@
+Subnet = 10.243.227.145
+Subnet = 42:2ae3:6ed3:a317:d0be:022f:6343:1de8
+
+-----BEGIN RSA PUBLIC KEY-----
+MIIBCgKCAQEAlNDrSskoSPInRiO8JW529o178D2kDdHbt3zZklM+jveFZuynDH2/
+WTfxr7wAIUd26jb12/6zLZ/gnEikLd3LpYiTA1J+ZL2c5SvXOoIqTU3Q3dwEecG2
+qwLcZ8UCjjOKiwWmjGHhNgEx/XUF7gpMwXb/m7fqzTGEiQozaCnQ3ZJA4t8GG00Z
+PZnDZHj8xYtXK3c3vOUa11xj9/dOwZb9e+VON0bXJxvxh+C7XkLO3NYTayyRX9qL
++OOdRLSkzINzoj94+juPepCEQtRusrIbOkSPwCl2u29rKRNfPBkqbAcN3zP1mfDC
+IXNqUobWP8xvSLyBZh5zglcbQbczxMkKiwIDAQAB
+-----END RSA PUBLIC KEY-----
diff --git a/retiolum/hosts/mors b/retiolum/hosts/mors
new file mode 100644
index 00000000..be9782b1
--- /dev/null
+++ b/retiolum/hosts/mors
@@ -0,0 +1,10 @@
+Subnet = 42:0:0:0:0:0:0:dea7/128
+Subnet = 10.243.0.2/32
+-----BEGIN RSA PUBLIC KEY-----
+MIIBCgKCAQEAsj1PCibKOfF68gmFQ+wwyfhUWpqKqpznrJX1dZ+daae7l7nBHvsE
+H0QwkiMmk3aZy1beq3quM6gX13aT+/wMfWnLyuvT11T5C9JEf/IS91STpM2BRN+R
++P/DhbuDcW4UsdEe6uwQDGEJbXRN5ZA7GI0bmcYcwHJ9SQmW5v7P9Z3oZ+09hMD+
+1cZ3HkPN7weSdMLMPpUpmzCsI92cXGW0xRC4iBEt1ZeBwjkLCRsBFBGcUMuKWwVa
+9sovca0q3DUar+kikEKVrVy26rZUlGuBLobMetDGioSawWkRSxVlfZvTHjAK5JzU
+O6y6hj0yQ1sp6W2JjU8ntDHf63aM71dB9QIDAQAB
+-----END RSA PUBLIC KEY-----
diff --git a/retiolum/hosts/motor b/retiolum/hosts/motor
new file mode 100644
index 00000000..41ff5743
--- /dev/null
+++ b/retiolum/hosts/motor
@@ -0,0 +1,12 @@
+Subnet = 10.243.167.69
+Subnet = 42:e31e:c798:6192:c408:8520:df6c:9d76
+
+-----BEGIN RSA PUBLIC KEY-----
+MIIBCgKCAQEA4xYBdiGtzg77lLeIjbpdXDb6hEfAhcdZgEZeKYWqyeMeu0D5tHod
+3nSPTZu70XhLGgzM3vG1GSmcmg0BeJPQCZkEcyu10RtLN6gvMVqtU54IT57RpoXi
+3MKfMKuHkohzeir0ihlwaN1XF2CbuNiE5q1IaW15lz9IAPE0WuRKcaHs4fc9n6wh
+dk/4pQ74M+/gYHdCNWoxqklpY61tk/QBIS0bAs2wKCSER9rahtLAttAC0Dccgxkq
+vrs3IkJg5omjgJ9pgCo/VeX4JJuVFlrVa9o1D0OMUDssyymt/RjYyXejxvemyeV0
+jbavVMB9GEDIZxD7w2ef18FsvZZnILPQHwIDAQAB
+-----END RSA PUBLIC KEY-----
+
diff --git a/retiolum/hosts/mu b/retiolum/hosts/mu
new file mode 100644
index 00000000..90bca775
--- /dev/null
+++ b/retiolum/hosts/mu
@@ -0,0 +1,10 @@
+Subnet = 10.243.20.01/32
+Subnet = 42:0:0:0:0:0:0:2001/128
+-----BEGIN RSA PUBLIC KEY-----
+MIIBCgKCAQEApXErmPSn2CO4V25lqxanCGCFgxEAjdzFUiTCCu0IvELEuCc3PqVA
+g4ecf8gGwPCbzMW/1txjlgbsQcm87U5enaCwzSv/pa7P9/memV74OhqEVOypFlDE
+XeZczqQfNbjoLYl4cKZpTsSZmOgASXaMDrH2N37f50q35C0MQw0HRzaQM5VLrzb4
+o87MClS+yPqpvp34QjW+1lqnOKvMkr6mDrmtcAjCOs9Ma16txyfjGVFi8KmYqIs1
+QEJmyC9Uocz5zuoSLUghgVRn9yl4+MEw6++akFDwKt/eMkcSq0GPB+3Rz/WLDiBs
+FK6BsssQWdwiEWpv6xIl1Fi+s7F0riq2cwIDAQAB
+-----END RSA PUBLIC KEY-----
diff --git a/retiolum/hosts/muhbaasu b/retiolum/hosts/muhbaasu
new file mode 100644
index 00000000..490fe3fa
--- /dev/null
+++ b/retiolum/hosts/muhbaasu
@@ -0,0 +1,13 @@
+Address = 217.160.206.154
+#Address = muhbaasu.de
+Subnet = 10.243.139.184
+Subnet = 42:d568:6106:ba30:753b:0f2a:8225:b1fb
+
+-----BEGIN RSA PUBLIC KEY-----
+MIIBCgKCAQEA0f4C4xKXpnyV1ig03O2Kef8ag+/5WGkW90uxEBb/h5NY9barex+Z
+KqVbkPdHhwoCIINuCVcOnJXzeo0FZtSEq3zVhscVm0PVdNfjct8a9KMsK0iUmuul
+5WD9Glh5/1wkEmbRfVxDErhssz1b8YmFOAGQn+ujO/Znn3BLv36uKQvpqU2y5bzb
++rVnq3eE1bCSeuj41bgEve8+vxpforjLO6gbE91mwp3Ol6nkkp6CjpG+aFTuLCAj
+YR0MIl2gGwskOGSI38QxlLouOlIGwus5f+KfC94ZP0pMwu5pT45UOUkVnlBXuZ9E
+igNHG2Vtm76nB3yYHndOvuDTOufatX61dQIDAQAB
+-----END RSA PUBLIC KEY-----
diff --git a/retiolum/hosts/nomic b/retiolum/hosts/nomic
new file mode 100644
index 00000000..f418233c
--- /dev/null
+++ b/retiolum/hosts/nomic
@@ -0,0 +1,10 @@
+Subnet = 10.243.0.110/32
+Subnet = 42:02d5:733f:d6da:c0f5:2bb7:2b18:09ec/128
+-----BEGIN RSA PUBLIC KEY-----
+MIIBCgKCAQEAwb8Yk/YRc17g2J9n960p6j4W/l559OPyuMPdGJ4DmCm3WNQtxoa+
+qTFUiDiI85BcmfqnSeddLG8zTC2XnSlIvCRMJ9oKzppFM4PX4OTAaJZVE5WyCQhw
+Kd4tHVdoQgJW5yFepmT9IUmHqkxXJ0R2W93l2eSZNOcnFvFn0ooiAlRi4zAiHClu
+5Mz80Sc2rvez+n9wtC2D06aYjP23pHYld2xighHR9SUqX1dFzgSXNSoWWCcgNp2a
+OKcM8LzxLV7MTMZFOJCJndZ77e4LsUvxhQFP6nyKZWg30PC0zufZsuN5o2xsWSlA
+Wi9sMB1AUR6mZrxgcgTFpUjbjbLQf+36CwIDAQAB
+-----END RSA PUBLIC KEY-----
diff --git a/retiolum/hosts/nomic2 b/retiolum/hosts/nomic2
new file mode 100644
index 00000000..63d83ff5
--- /dev/null
+++ b/retiolum/hosts/nomic2
@@ -0,0 +1,10 @@
+Subnet = 10.243.0.111/32
+Subnet = 42:02d5:733f:d6da:c0f5:2bb7:2b18:09ed/128
+-----BEGIN RSA PUBLIC KEY-----
+MIIBCgKCAQEA4RATrMG+MJyNq77+qUqoXkBIpUeytIvUNXT5OdvU5v91Xo2eGI23
+NXiFtILDb1nEPB+L4vVWkUKRuPAy+ThgqgTH1vyugT6jRoRhWWmGmSn2GjaF+UxK
+edTfGJqO0Iwn0kZsIFxXUibkmG5iRbJBoPXXz33VtNxOv2gZZ6klfv/pYWnrxmLm
+RZXkE1H3Y0U2ulQEXvpexzVscfYmlAw7h0Ew4aaY2LK4spLLPjx9RdDgfwZOZdS+
+gi5cmi/qM71/o67/4XippR9+7GQ8YecbeoR4bcZpDNoDy1ri7HPPu/t6CiqsYVyg
+jYGBm+IGbwI9hxGel2bXCVBGLE7gpN51TwIDAQAB
+-----END RSA PUBLIC KEY-----
diff --git a/retiolum/hosts/omo b/retiolum/hosts/omo
new file mode 100644
index 00000000..d2788d28
--- /dev/null
+++ b/retiolum/hosts/omo
@@ -0,0 +1,9 @@
+Subnet = 10.243.0.89/32
+-----BEGIN RSA PUBLIC KEY-----
+MIIBCgKCAQEAuHQEeowvxRkoHJUw6cUp431pnoIy4MVv7kTLgWEK46nzgZtld9LM
+ZdNMJB9CuOVVMHEaiY6Q5YchUmapGxwEObc0y+8zQxTPw3I4q0GkSJqKLPrsTpkn
+sgEkHPfs2GVdtIBXDn9I8i5JsY2+U8QF8fbIQSOO08/Vpa3nknDAMege9yEa3NFm
+s/+x+2pS+xV6uzf/H21XNv0oufInXwZH1NCNXAy5I2V6pz7BmAHilVOGCT7g2zn6
+GasmofiYEnro4V5s8gDlQkb7bCZEIA9EgX/HP6fZJQezSUHcDCQFI0vg26xywbr6
+5+9tTn8fN2mWS5+Pdmx3haX1qFcBP5HglwIDAQAB
+-----END RSA PUBLIC KEY-----
diff --git a/retiolum/hosts/pic b/retiolum/hosts/pic
new file mode 100644
index 00000000..fb091856
--- /dev/null
+++ b/retiolum/hosts/pic
@@ -0,0 +1,11 @@
+Subnet = 10.243.64.210
+Subnet = 42:8115:848f:f56d:4025:49bf:9042:d3b8
+
+-----BEGIN RSA PUBLIC KEY-----
+MIIBCgKCAQEA7jWZo6QlyLMW1BK/PxBDgU/qBZajMfSo5nLtp/WUMSMa6cJCjFFO
+ppUSfAKBu4uwzjYUmdzQMoxE2AQKT2+gMc7moxz18sVBTbbWlyueBlsTvhpC1b9k
+YPs3eAJDV6mQPvKb908iubqhardaZAdODDas1S5W4N7DuZZBKryARYOoO7cN6/wd
++YDTAxf97sV5IuxCDOV1inTuOrNx8XfGU4wVVELqzd9VLCHGuD8kAcz0+emDrI9d
+MSo8ryCL9tbF5owtC1A8HFDo3LM4da7411HrPHpVyOVgjXmX6bjlLIQ23XNDQOC9
+IbyhK2tCc5q+pms7gYEWPByxmy/mb6WBBQIDAQAB
+-----END RSA PUBLIC KEY-----
diff --git a/retiolum/hosts/pigstarter b/retiolum/hosts/pigstarter
new file mode 100644
index 00000000..dd12a0d8
--- /dev/null
+++ b/retiolum/hosts/pigstarter
@@ -0,0 +1,13 @@
+Address = 192.40.56.122
+Address = 2604:2880::841f:72c
+#Address = pigstarter.de
+Subnet = 10.243.0.153
+Subnet = 42:9143:b4c0:f981:6030:7aa2:8bc5:4110/128
+-----BEGIN RSA PUBLIC KEY-----
+MIIBCgKCAQEA/efJuJRLUIZROe3QE8WYTD/zyNGRh9I2/yw+5It9HSNVDMIOV1FZ
+9PaspsC+YQSBUQRN8SJ95G4RM6TIn/+ei7LiUYsf1Ik+uEOpP5EPthXqvdJEeswv
+3QFwbpBeOMNdvmGvQLeR1uJKVyf39iep1wWGOSO1sLtUA+skUuN38QKc1BPASzFG
+4ATM6rd2Tkt8+9hCeoePJdLr3pXat9BBuQIxImgx7m5EP02SH1ndb2wttQeAi9cE
+DdJadpzOcEgFatzXP3SoKVV9loRHz5HhV4WtAqBIkDvgjj2j+NnXolAUY25Ix+kv
+sfqfIw5aNLoIX4kDhuDEVBIyoc7/ofSbkQIDAQAB
+-----END RSA PUBLIC KEY-----
diff --git a/retiolum/hosts/pike b/retiolum/hosts/pike
new file mode 100644
index 00000000..1d47a614
--- /dev/null
+++ b/retiolum/hosts/pike
@@ -0,0 +1,11 @@
+Subnet = 10.243.97.232
+Subnet = 42:4d6d:8699:99c2:0de9:ea78:8d50:f53a
+
+-----BEGIN RSA PUBLIC KEY-----
+MIIBCgKCAQEA0CS28CMhqeUuJxY+JEISeEDzP2I5T5ILFn4/3loEagEtS90QAm/K
+rbMDbvJENrNCnaaOcHuOsG3vS8s31ffY9RM89Na2zjcV9l0QBhBkNebUr/Ol0nQp
+ONWXEgmXV2mCGfFnC4uOHhELkZhnkwJduWfR5kyGPPApjxlBVIbI8pkAV4GFqjoF
+WTTm9qp80G26sD4O2q+Ldv9eIKquPAHN/zMFk0TzhgmAylgQUcc84HdUDZ+g9n1Q
+Ap62VwM8lGcnRy+f03cBaPyWQEEdnA3hG2mMfaaAoVYw4eruBbAz8GGUPMT3UH/E
+rGGNmyVzzUQOKvnOjB4qvyseSI+/mPzGJQIDAQAB
+-----END RSA PUBLIC KEY-----
diff --git a/retiolum/hosts/pornocauster b/retiolum/hosts/pornocauster
new file mode 100644
index 00000000..cc7d8955
--- /dev/null
+++ b/retiolum/hosts/pornocauster
@@ -0,0 +1,10 @@
+Subnet = 42:0b2c:d90e:e717:03dc:9ac1:7c30:a4db/128
+Subnet = 10.243.0.91/32
+-----BEGIN RSA PUBLIC KEY-----
+MIIBCgKCAQEAnztrijsfao+fmNtwAjqwIDKsRaMP3ECsq2T2zqKvxwCyXk69G9bG
+RFhWjgaawS9ZhnHSlgWK/vtoR0O9NxpzdU/mvdQijbVGxM02DegjO9qDSIe8EGmA
+kscW4nDqYtw4rtjOVPfnNiWXbcWD8eiYR0kcSWmSvfOpVvdhTETqduTx5HRHyEFD
+JRQYR/tJSvVWXmM670PENAPNJFJ4VSJR60s5A+bFT7J/uw7HzJXX28LygJz73Dj2
+2a4ev0WcZQngLq072h/91R/TOpg+ogUDVhXkQtKyFj7im0287JTL4bXGofZBhzaf
++h9dFGs1QLoNyhG/cgt9fog7boSXTelAiQIDAQAB
+-----END RSA PUBLIC KEY-----
diff --git a/retiolum/hosts/radiotuxmini b/retiolum/hosts/radiotuxmini
new file mode 100644
index 00000000..96c06931
--- /dev/null
+++ b/retiolum/hosts/radiotuxmini
@@ -0,0 +1,11 @@
+Subnet = 10.243.0.185
+Subnet = 42:5553:9d1f:5e66:ed7f:bbd6:b7fd:51b2/128
+
+-----BEGIN RSA PUBLIC KEY-----
+MIIBCgKCAQEA3A0wJPSrNGpb3g98iv1EDTk7s9dgUKSHf7rmqrN2IlW9g21pkGEY
+T3EWz5X8mGEQbDw2im9W8Lm7OSnYuRQjNxacq5WMIN3AGpsiGB6KWEXu73lDWDkE
+hL7dxjSWFSQQMUkbjhduxyaibmLLI748w5npYzhAsjICs4MsrBhcL/ER7tCwVyKm
+AEKUBbLd21tVLGM5dapJslKamZ5NxeHY6TBdtbd2AQZ+67EINKt/WEx9Ruw/t57P
+OAa37NhFrjBbRClQQZVOunbh1Sb0EX3Abj4oZczrtAaBfcDQbA7x2LwbqugZH/EN
+i/oa3sCqOLo7ZcYvuvyxaZgWLK3KB2MEQwIDAQAB
+-----END RSA PUBLIC KEY-----
diff --git a/retiolum/hosts/random b/retiolum/hosts/random
new file mode 100644
index 00000000..59a354e9
--- /dev/null
+++ b/retiolum/hosts/random
@@ -0,0 +1,10 @@
+Subnet = 10.243.0.134
+Subnet = 42:725b:abec:0922:09c6:b51e:1a33:b93a/128
+-----BEGIN RSA PUBLIC KEY-----
+MIIBCgKCAQEApgs77ljzQp7I8/9KbqzGjoDdNAA3Bp6dKziIJnHLAIDAHD30yY+o
+UHbRPhaCP9s2M4A39wTDjrakngF75M+0covz4WBIiuGdwZywgVnliRk/9dcnqdZm
+OeCxeRJ0BY3Iy8oMieFaPJW1XgwKYi2p0eSpBeKasBct2xNQwyvh+r+xHBa6NK0P
+vV6rK04OrJu04U/tqklTFMTHGmZfjx1vmuecuPWZlgT39788/5aD9uqg2ldMoenE
+eamrPdU2Vh6qlZc8CyHVy5YZDykbXTauUL5OmW2Om4Qc05pinsNnDXfMTkSSmWpN
+oj6nieBqbp/ExuZ79LC5XxvQcAMQtk7gUwIDAQAB
+-----END RSA PUBLIC KEY-----
diff --git a/retiolum/hosts/raspafari b/retiolum/hosts/raspafari
new file mode 100644
index 00000000..1e1b4850
--- /dev/null
+++ b/retiolum/hosts/raspafari
@@ -0,0 +1,11 @@
+Subnet = 10.243.0.156
+#Subnet = 42:9571:c499:5adc:f9e1:8982:3cb1:cf91/128
+
+-----BEGIN RSA PUBLIC KEY-----
+MIIBCgKCAQEA14OlKZwL5+ZMwxoMTuTpt+PLr1Mp6pIlfIdYfkkx1od6c3fuvNi6
+CHLpR0fAWDDec/hDwR55VLzonDrPa/nOj6yHCXCTpHhQXJIdZTazxSPAsUuzzKa+
+TZQcCGZWJKG09Rg8gIceTjS99l7BOVtPQXnVQc7Gfxu8csjynHOHWinZy34JU9FA
+HdcTzKsxrAr297iQCPEht7XPDCJj2hRy+NS5UOzkTF7UGTKveyRdsqVIWx/rMrll
+UlBEwxRpstuhG33bv+tAXKNi2eJn32IvHDhPZtHgrvXE71FT43V6bJLT0+xH2qFc
+SGZCCdjv3/3mO/g7Kkth64mpxMw93NGkEQIDAQAB
+-----END RSA PUBLIC KEY-----
diff --git a/retiolum/hosts/reimae b/retiolum/hosts/reimae
new file mode 100644
index 00000000..125cde65
--- /dev/null
+++ b/retiolum/hosts/reimae
@@ -0,0 +1,12 @@
+Address = 193.22.164.39
+Subnet = 10.243.177.212
+Subnet = 42:5965:bb44:aed3:9d3d:29f6:201d:7adf
+
+-----BEGIN RSA PUBLIC KEY-----
+MIIBCgKCAQEA37lXlJpfT4pgxV1XB3VzUiALVjOexrHezJZ3YxgZTVUtTTxOnydl
+urN7S4WaRgFkRPlwATGrp+KzJ6fz5/zeryYwbBUY66kcTEfJBP3+zKgWu3NIqOll
+SCcnpjlEm46FcstJ5dnnuYqhpnp98z8QkTiXHZKMI4rB+yf5NdKnMetAUsSUe2wI
+bXSxJ9lNrSm/IFToaVZ3KPYZwQ0HgzUxSWb5grkCuK5iWtGhqdf0/pqEzMpI1Y1c
+QKepcJkRCUcd2InKb9AdpwT/xygNwbPkvjxIAKj7vK/4rr5LApJAOcFL+HJRz4CT
+lDrM5LDeGtsIr+mIUbSTR6R0onWCn543LQIDAQAB
+-----END RSA PUBLIC KEY-----
diff --git a/retiolum/hosts/robchina b/retiolum/hosts/robchina
new file mode 100644
index 00000000..ee67405a
--- /dev/null
+++ b/retiolum/hosts/robchina
@@ -0,0 +1,11 @@
+Subnet = 10.243.131.174
+Subnet = 42:c483:5bdb:f54e:dc72:f682:ddd1:14f8
+
+-----BEGIN RSA PUBLIC KEY-----
+MIIBCgKCAQEAxfCyJD9G9BgUtdZoT/t8rr6TzzcNDyUex46D0arMOliJUWTvkP9I
+m7YHzxZNeb4QoWGW3TZwDGq63OuSDLfXcmKbeTAs9hLDFFOcAzuBeACnQzd5SIqW
+sxjWOgI1yn/Thk2GVzjs2YXIKSCFwpRRR9r0d+YjuSF87ByBXkhgMmoIxn9tQYjx
+RqpAd1ELWRqGgi5W6qbN3m3C3R/3g86SsiOvJ/HbJ+MaRy+b9EC2+XoPRoSAJqWg
+XN5MHY01EmDaz2gRB2kAo1j90y6Xi3JdzMn+nl53nOdSGIBWn6dWbm3gd8KBtn5X
+KernecPr3o4YT77C481hRc68hpi+1aff8wIDAQAB
+-----END RSA PUBLIC KEY-----
diff --git a/retiolum/hosts/rockit b/retiolum/hosts/rockit
new file mode 100644
index 00000000..e67272c3
--- /dev/null
+++ b/retiolum/hosts/rockit
@@ -0,0 +1,11 @@
+Subnet = 10.243.199.33
+Subnet = 42:cec2:0a67:0ebb:7d97:8138:ac9a:8a58
+
+-----BEGIN RSA PUBLIC KEY-----
+MIIBCgKCAQEAnUtx3KPzNmS6/LxpYSolmhmF+Xqsum2po3lvmZszu2aIKdcAeIfb
+B6bwz08zC9UNQjnO+27px5LMTTH9zhzRxo5xP/mcco2mVQFl5V+/73qBW5NnUV+4
+nPvUDi0+IhuVixHc+KlkxiHhgIDLdCN2WvVTkUCgxT2xVlPoESXq1dhdE3/5vvJt
+0tphFUnP0sLCVzV25IYCocul+ELj8PAc/9mP4twifM4V0uwhh+J3AHR0+14QM61r
+9qRhEnNEEkGeToYQPsoromiKPWczerUPBpaQHOpjnjg08Coz4OyrrM7+DXyspPfT
+/862pAygKmeJMuzT2b52JbRlk3NMCxw5wQIDAQAB
+-----END RSA PUBLIC KEY-----
diff --git a/retiolum/hosts/rtjure_debian_oder_so b/retiolum/hosts/rtjure_debian_oder_so
new file mode 100644
index 00000000..3000705b
--- /dev/null
+++ b/retiolum/hosts/rtjure_debian_oder_so
@@ -0,0 +1,11 @@
+Subnet = 10.243.124.21
+Subnet = 42:9d30:3845:c822:988b:96c5:39ab:90b7
+
+-----BEGIN RSA PUBLIC KEY-----
+MIIBCgKCAQEA6J+B/2Wpr9MKu5fuWg9LSoabBKmWmXEWfN7Bs5KMyux9obSBaM8y
+dUEx0ayGwUOvDxizuhma9YCbys4P9SDGmocxrhFz2yQeyinEj03EB9ZZiPNQSqbI
+Jia39Q/fkxeCescUjr63wR0OY++a+NdefVG5OaSRhNwAmjENZzAxTE/1y5lR7mf4
+U0Pyik/BIARZIc7rnwoYn2TlGgUlu3HX7BxCXIndOFeIjtRzoSG6d+XKhcTXOvvH
+WnBNl2D5i48l+V/mDDbLYcXS0al3lgFAOgqXxVXr9WufCBGtNdxlgWlM4zSTUQZw
+UopJToHcnucM3ofb/NrDs3ygHdQPSRkhhQIDAQAB
+-----END RSA PUBLIC KEY-----
diff --git a/retiolum/hosts/rtjure_ras b/retiolum/hosts/rtjure_ras
new file mode 100644
index 00000000..ba44cb02
--- /dev/null
+++ b/retiolum/hosts/rtjure_ras
@@ -0,0 +1,11 @@
+Subnet = 10.243.212.68
+Subnet = 42:627f:6f2a:b631:26f7:8d69:4c3a:23b0
+
+-----BEGIN RSA PUBLIC KEY-----
+MIIBCgKCAQEAvu1ZjElrPpJ/ery0BAYxWPtb/ZLio+PuhrsOy9BBq6b7/FHw/1yf
+GOCDa2fkdE1/pVLhI62KL+j/nDCgpHtVxzupVYKSyKOuZXnNGAS7vAHNM27jaYHp
+3DTI0Npu13v2r5rgraPOm6eGrd/D0u2gr3T9Zq8PRtg5JrXBWMU4Ugt+Kfv0V+xL
+v0lX21xZrUjvhtd0/vTcNkYLWZK5ftfU18/i3D6CimlG+AsKyeAnYe9Nkcmet84s
+65SbgQ6SBr2YyN5c7wC9j1/Ney3k+aTbxsvHqDyQ8bq8WnsDQR2B8JPZGPLd7VHD
+hdPGzus2PmJa84oB7smuUdt/5oAjzgghkQIDAQAB
+-----END RSA PUBLIC KEY-----
diff --git a/retiolum/hosts/rtjure_rdrlab_linkstation b/retiolum/hosts/rtjure_rdrlab_linkstation
new file mode 100644
index 00000000..dfc8c031
--- /dev/null
+++ b/retiolum/hosts/rtjure_rdrlab_linkstation
@@ -0,0 +1,11 @@
+Subnet = 10.243.188.107
+Subnet = 42:b859:6e9e:21ee:6884:171e:ebd3:3316
+
+-----BEGIN RSA PUBLIC KEY-----
+MIIBCgKCAQEA3nKxW4euCO/XN/0C2H4pvTMRLJAXCbMlsGVR80U9JXFYz85x5yDY
+6UDLJfhROCMPg8JJa1WwG9+jF9uUD315hF/wMmMReqKAX0ct50Uhr5iv5QA0ER/3
+q4eg1dh920K+qZ2LAweCDt2pnJYZYw3pSX2jfiFEu1/DfwZIVUkymEKC27ObC+Zw
+KMderOYU4UPkTmrg4WkAUiHH09PToMVQukL4PLslhNMvFqhdLdGMyY2hqEltK+QP
+6cKFDUCAoZRc/L5JhNtklr7RLqYhwkQ7kgPWqbW50tdi9B8YDJfBbfAT7+QS70gj
+THyNfEm3R4Xc8FrbKw3ju1PO4LDb9KOhUQIDAQAB
+-----END RSA PUBLIC KEY-----
diff --git a/retiolum/hosts/rubus b/retiolum/hosts/rubus
new file mode 100644
index 00000000..aef8d4b3
--- /dev/null
+++ b/retiolum/hosts/rubus
@@ -0,0 +1,9 @@
+Subnet = 42:537a:0c95:6315:6598:e109:74b2:0887/128
+-----BEGIN RSA PUBLIC KEY-----
+MIIBCgKCAQEAqudpo1cC1ETPA3d16cNTAwwud195Yetdx32ty5/VkY2KgLnnl672
+XTPZBVhFppG+NU6QIYq2c0+BdUV+42XNnSeTKy79xr49eSMDaAXuWiX4eY8dh4v9
+n7elTWikzTaElS5SI3wcJPz8SdajWclnRkqXbyMY7Pw7uJMgT3svC/chN8tgp1LT
+2s1DdvxaHhnFPef2NQvIWgfgytReLB8dQnSYoAiwIGvNXQT4OXgshJkTAwmok/Sq
+io8K1FeJyOranBM/ZyYbQWMEXuknoJ9PXKPbrGjD+ftS18Gs75ODWqh/Bpj75rpT
+q6HLJv6H6YpToxueTL1iYM00MNW4g/oPZQIDAQAB
+-----END RSA PUBLIC KEY-----
diff --git a/retiolum/hosts/senderechner b/retiolum/hosts/senderechner
new file mode 100644
index 00000000..4cce73ca
--- /dev/null
+++ b/retiolum/hosts/senderechner
@@ -0,0 +1,10 @@
+Subnet = 10.243.0.163
+Subnet = 42:b67b:5752:a730:5f28:d80d:6b37:5bda/128
+-----BEGIN RSA PUBLIC KEY-----
+MIIBCgKCAQEA0zCc5aLVRO6NuxUoR6BVzq2PQ/U5AEjYTdGkQufRot42N29MhxY7
+lJBfPfkw/yg2FOzmAzTi62QyrLWSaF1x54rKu+JeNSsOAX+BorGhM67N45DGvJ0X
+rakIL0BrVoV7Kxssq3DscGVbjbNS5B5c+IvTp97me/MpuDrfYqUyZk5mS9nB0oDL
+inao/A5AtOO4sdqN5BNE9/KisN/9dD359Gz2ZGGq6Ki7o4HBdBj5vi0f4fTofZxT
+BJH4BxbWaHwXMC0HYGlhQS0Y7tKYT6h3ChxoLDuW2Ox2IF5AQ/O4t4PIBDp1XaAO
+OK8SsmsiD6ZZm6q/nLWBkYH08geYfq0BhQIDAQAB
+-----END RSA PUBLIC KEY-----
diff --git a/retiolum/hosts/seruundroid b/retiolum/hosts/seruundroid
new file mode 100644
index 00000000..b4f0848e
--- /dev/null
+++ b/retiolum/hosts/seruundroid
@@ -0,0 +1,12 @@
+Subnet = 10.243.127.2
+Subnet = 42:81de:f850:152b:0988:1942:265d:dacb
+
+-----BEGIN RSA PUBLIC KEY-----
+MIIBCgKCAQEAvNtSbaaacF05L2mAxxA5SYc6DuoZEAkXlhcvLTlpu9f/0vZwUWh7
+175pLn6VqUijVoFb9vyoOwkrs9Uk3aX8mYws+5yJLwXhIje+U3uiVTphowKva+m9
+BzV6waZ5dLbh+3CGimx1TBkFTly3NkdZs886QWSO4aXLdU6lt3jRYsuay0Eop/j0
+eQ0BWg9o0QEcfDRQ7RirXrD0B7TSo6qZC0b4NSAMHTE+dvOMo7c+Z7cIPNLS0B+T
+Am7ju3gF7UU68kKPyczrNSPPPZayEvZYUZE4PHt8dyIsppojoRq0SJqsMr/mOC15
+dg/KnoKezn9nqUWzisRWrrqWStAKITJkjQIDAQAB
+-----END RSA PUBLIC KEY-----
+
diff --git a/retiolum/hosts/sir_krebs_a_lot b/retiolum/hosts/sir_krebs_a_lot
new file mode 100644
index 00000000..f4fffd9d
--- /dev/null
+++ b/retiolum/hosts/sir_krebs_a_lot
@@ -0,0 +1,11 @@
+Address = 84.23.79.81
+Subnet = 42:48bd:f4cd:b2f1:ff6b:865c:d041:def6/128
+Subnet = 42.130.57.249/32
+-----BEGIN RSA PUBLIC KEY-----
+MIIBCgKCAQEAzkVF0BSWUEqzdUidLTa6qL4wlNSb8gaxyZperzoAj65d5l25SCqc
+jjqvREcE6p+jM4t1STXoohnNvexubNXW3PVo5Zpew+BsaGjVvow0LkqCJ9k96Rrk
+JzU5lAVH6om3/QYws/Ot0zq1Z/+Xw/0+9JpVKhEipMWLpLgjAvWdvzSW6aBIHVN1
+3E85fkTE5f0azct+XNSNzUebdyIy8wu/EexGmFI9bN+ewIvqjZJdvxP+Ank55MsE
+8P7K9TKwVXw440MGqqoQaOhdaT75TL+2nsAfWYcrNnE3YehMOmCMp9oY+RAvsIkK
+iAYyF5l7ZTi/7KGHNsG7rr0cbytiz2nS6wIDAQAB
+-----END RSA PUBLIC KEY-----
diff --git a/retiolum/hosts/skirfir b/retiolum/hosts/skirfir
new file mode 100644
index 00000000..0214e7a1
--- /dev/null
+++ b/retiolum/hosts/skirfir
@@ -0,0 +1,11 @@
+Subnet = 10.243.0.18/32
+Subnet = 42:423b:0f94:6b03:7c3c:593e:67e8:c857/128
+
+-----BEGIN RSA PUBLIC KEY-----
+MIIBCgKCAQEAvQ2yhEbW2a7rOlJGb7pV8OhDMQC00jNffM9LML+sn/BAbIX6jzzi
+XgD9o5qwyW/ktpEViUbYepIB/wBbHdMgHRWux5nPS/WygxnVKcf4mPr846udJ2kx
+/38l40DjHTzMWTV6G+TFm4+Wg7++B/NUonMJczRNjX4zDVwmObZpS+XSjl8bT1DP
+vvNHeUOr06a/IPyOF7b6B/dlr+0pr4YLFw587M1KA+eee8gvJx7YvCdwUMMJP++K
+KX30apeJQ+jpf9CsVvpxGefysMTv0uUB7Rmya3b5jjddnW0ge6lTMwT87TzIF5jz
+e3hIt+dvvq7cHI7nnyyRtKcvcm1hH+ZIaQIDAQAB
+-----END RSA PUBLIC KEY-----
diff --git a/retiolum/hosts/smove b/retiolum/hosts/smove
new file mode 100644
index 00000000..fc7e194f
--- /dev/null
+++ b/retiolum/hosts/smove
@@ -0,0 +1,9 @@
+Subnet = 10.243.42.42
+-----BEGIN RSA PUBLIC KEY-----
+MIIBCgKCAQEAzFFj6yAy2qC4gVrUV5vN6PztulRggkyXIMr2oPmPLuB85uxJE9nI
+9uvsQdbgcmmEM++moPM/ASCEXuu1ikUK1Gl+8C3rv2IxF/zhcrWEJV4e4EvHrBWP
+Xt4hSPyFG3LYpaX1OAWL2zmCvGVDmflWp+YkbBRrkMMEyXg0gZMNx+E7yJiNVYFo
+DZ7p4VSncWsAqk0I1varQpkl7BR6p7QcJlMO403Rh2oQT1bPXskkZsfAyXN8wJTP
+ATiTm5vijXiRUao+h9L60oxQTcvi9hcbhg+FpB3HYx2Rq6lWR0SqDO2OiBTTJnFM
+6qvN7Wfdmxim0mLAwaqccRLCWA06iN8b7wIDAQAB
+-----END RSA PUBLIC KEY-----
diff --git a/retiolum/hosts/sokrates b/retiolum/hosts/sokrates
new file mode 100644
index 00000000..97cf1b47
--- /dev/null
+++ b/retiolum/hosts/sokrates
@@ -0,0 +1,11 @@
+Subnet = 10.243.97.126
+Subnet = 42:28be:6907:ab4b:5c79:99f5:a4a1:2a25
+
+-----BEGIN RSA PUBLIC KEY-----
+MIIBCgKCAQEA0emA0JAong4wHSAEUrLrkh21n8I/+pLtpS4uGTcMHn9ZrS8Tg101
+S2poRE0jZUZu868mDeOwwxZRLmCE+bL0q1OrAUDY7+ricQSAz3CNQAAQB0Sjp7ju
+YXKqLZQEYyOV3M8IJOALS72q4g1VTv5jQrLhGzMsv9vzuRSZV0pEV8tZwb187wLi
+n27rwB6SPZv7uhC3R060x8Ze/pLmfmVfrxb9DwZS3d8X1PwygTrTjSAUTeMaDa69
+NSOzvKLx25fhZ0Gm3BA3pUQDEOiGOze3oT/0l3QJMvZ48TbG1KlSBOVwtL3+f5yM
+gJZLF/JoTsYL0aZM+zHL6NAUmciy9dNXEQIDAQAB
+-----END RSA PUBLIC KEY-----
diff --git a/retiolum/hosts/sokrateslaptop b/retiolum/hosts/sokrateslaptop
new file mode 100644
index 00000000..e05f2415
--- /dev/null
+++ b/retiolum/hosts/sokrateslaptop
@@ -0,0 +1,11 @@
+Subnet = 10.243.142.104
+Subnet = 42:f8a1:044d:0f75:9d73:56d8:f432:c6cc
+
+-----BEGIN RSA PUBLIC KEY-----
+MIIBCgKCAQEA0EMbBv5NCSns4V/VR/NJHhwe2qNLUYjWWtCDY4zDuoiJdm3JNZJ2
+t0iKNxFwd6Mmg3ahAlndsH4FOjOBGBQCgBG25VRnQgli1sypI/gYTsSgIWHVIRoZ
+rgrng0K3oyJ6FuTP+nH1rd7UAYkrOQolXQBY+LqAbxOVjiJl+DpbAXIxCIs5TBeW
+egtBiXZ1S53Lv5EGFXug716XlgZLHjw7PzRLJXSlvUAIRZj0Sjq4UD9VrhazM9s5
+aDuxJIdknccEEXm6NK7a51hU/o8L+T0IUpZxhaXOdi6fvO/y3TbffKb1yRTbN0/V
+VBjBh18Le7h0SmAEED5tz7NOCrAjMZQtJQIDAQAB
+-----END RSA PUBLIC KEY-----
diff --git a/retiolum/hosts/soundflower b/retiolum/hosts/soundflower
new file mode 100644
index 00000000..4085fd11
--- /dev/null
+++ b/retiolum/hosts/soundflower
@@ -0,0 +1,10 @@
+Subnet = 10.243.69.184
+
+-----BEGIN RSA PUBLIC KEY-----
+MIIBCgKCAQEA0a0oenAy9MDa2M6NoLtB8elduGgc3oLtUwsm3iUu6w8L+Je5TndN
+H8dPn3sByUk1Jkd8tGGRk/vSFj/mtUn7xXKCnFXfKDqVowu/0KS3Q+6o4mcoATeb
+Ax7e6Cz1YH5+qhQjR7apuase9X9Dzp56//5VW2gaScvWevvzrij2x7eNvJRF+W/l
+FDXc8zBPkFW5TLFHOizRoLl4mK1hz2NrUiqcq5Ghs2yPsFxl/o5+e2MOwtdI49T6
+lMkeshAeNOSMKYfP9nmHZoKI/MIpGak0EF3ZQtLvyv+tM2Q0nuwH3RvxlK/Xf6U+
+8SoQu4yRIeK+pMiLEHhFPzBpk+sblUlG7QIDAQAB
+-----END RSA PUBLIC KEY-----
diff --git a/retiolum/hosts/steve b/retiolum/hosts/steve
new file mode 100644
index 00000000..f86eaa50
--- /dev/null
+++ b/retiolum/hosts/steve
@@ -0,0 +1,10 @@
+Subnet = 42:58a0:e7b1:506e:b09e:1b68:5149:c6e8/128
+Subnet = 42.145.33.57/32
+-----BEGIN RSA PUBLIC KEY-----
+MIIBCgKCAQEA2mt6xByDU2eVsQhjG33vT18Byfxqq4TPOvbV8RAyx0RWeolXGWnx
+p+wKHVITCyL5JCYs7fUYQoDC900bQa/waWgcN8dHfiUmUPtiUjcc35UWaNTLkVGs
+XEe47JMpnnB3D8ynXXKHsG8JXFjpxQpan/fnSuUG7nsB6anxjNHstkmsGGp60P1V
+6Xt5GcN+Mw1peH5LhIOcXaMNEHj/DlIjQSubCf3yelcxoSgnZibP5GfiI6JwKXDu
+A3Sv+wfAGTYdTOE6RBsvBI0lTNUSw02WxaMG4Hfe6+19XEnC1bSwg8+7VsqFmeWi
+uoaQeerhP1QD3GIX81Xe8ENvvFGzCdfARwIDAQAB
+-----END RSA PUBLIC KEY-----
diff --git a/retiolum/hosts/tahoe b/retiolum/hosts/tahoe
new file mode 100644
index 00000000..3e78595d
--- /dev/null
+++ b/retiolum/hosts/tahoe
@@ -0,0 +1,12 @@
+Address = 148.251.47.69
+Subnet = 10.243.57.85
+Subnet = 42:2f06:b899:a3b5:1dcf:51a4:a02b:8731
+
+-----BEGIN RSA PUBLIC KEY-----
+MIIBCgKCAQEAx6R+CuJu4Bql+DgGPpE7wI+iasRY6ltxW0/L04uW9XiOKiEjx66y
+QMMaW18bcb0SOfTE8qYo8pOsZ5E9FFPY6cKH4DGi8g1FpaODle9V8RrVg3F7RuZ8
+dXDXeZxvYvJ2LwPBvlr1aisqJqgxAwF2ipPPX97rAYbp46a/vkgU5bPF1OFlTDaH
+9jjThuidiEwY4EMtJGKisnTGx8yS5iQibDMqzrcRpCxCLcl68FgFNKCTtSIj1mo6
+hgO1ZKmHw73ysmrL2tImmalHYcqDJnq/KInG2ZkCZI/2ZqfJyrRSTk86t5ubfD6p
+egC5N0Y5dQHJd66AytNwXxymiAcWuYth9QIDAQAB
+-----END RSA PUBLIC KEY-----
diff --git a/retiolum/hosts/taschenkrebs b/retiolum/hosts/taschenkrebs
new file mode 100644
index 00000000..94c37ead
--- /dev/null
+++ b/retiolum/hosts/taschenkrebs
@@ -0,0 +1,11 @@
+Subnet = 10.243.0.66/32
+Subnet = 42:55bf:5f2b:73f4:f989:910e:ee73:2831/128
+
+-----BEGIN RSA PUBLIC KEY-----
+MIIBCgKCAQEA0YAfK9s29WDjJmiri3Oj0hEyjKui9ylA3mlmWSiTLnk1O2REOwgD
+5DPsdYPbu+bTkW7GdzcxX/mNvHogWgC+2+F70dles1lDiSDUhSQOEHFMlz+rBbvz
+FGY3Xmm3m3qdRYOcpHUXL/ZXN6kBvsl2b5rfEkejRb+Z1OOLjssISEzNe2vPEnp4
+OmY8ZQA5UAjnxsX+GKsH2OBqD+6Xm+/l/XLHDApHfby+X3upXaJRBjUAp8DiOm0T
+hVHfYXEE3iuC8JaCzWSFtG+4qLXf9MJ5xRfwUkuyPqiiTIpeM8GxHQJ+l+QKycNd
+Dk+9AwsQ/WsoXMHqIWHyNmuqhr82wEQo4QIDAQAB
+-----END RSA PUBLIC KEY-----
diff --git a/retiolum/hosts/terrapi b/retiolum/hosts/terrapi
new file mode 100644
index 00000000..cf1748eb
--- /dev/null
+++ b/retiolum/hosts/terrapi
@@ -0,0 +1,11 @@
+Subnet = 10.243.30.159
+Subnet = 42:b0bd:090e:2a37:2cb4:3314:58e7:20d1
+
+-----BEGIN RSA PUBLIC KEY-----
+MIIBCgKCAQEAtVhVDRBzq0L6JtdVUVEakBzhMP2RjOj7cHZnEUsXzl1TXxuOBhL1
+XOXd3LUuU0jNMMvzxO2VU7K/wM6lX30B6ryqDSfsXKEBM60BiGVzb4Kd+7No76RN
+0NsoLygtvtOm1SmvvT1UCsjomoIE4eGdBDsfQzNKt2PUoh/0rTZBHd6qGJuCZQSX
+F4IRby4jzYvjOsaSi7GVadvhoyETVxbUAi9VquxOltytA+Ud4CXPb/JW25uVmQQK
+RXhoWahWJGJ2WJLGnT1RkTvFQk0zM3XJfPBVItnKCYHuE5HMU/5nnnPvKWiICdsA
+1NNU8+kXtK3IJEHwfpRWe/isMj8rROU37wIDAQAB
+-----END RSA PUBLIC KEY-----
diff --git a/retiolum/hosts/thomasDOTde b/retiolum/hosts/thomasDOTde
new file mode 100644
index 00000000..ce47b39e
--- /dev/null
+++ b/retiolum/hosts/thomasDOTde
@@ -0,0 +1,9 @@
+Subnet = 10.243.42.23/32
+-----BEGIN RSA PUBLIC KEY-----
+MIIBCgKCAQEA3btaQpK89aRDJ66cW8H9RlDIzr4k4WIGiqNCsIAE5MhSGCtjboWO
+elgRWlYP59l54yRzn5FpvABAWeRupbX/AMhG8IiBgU6438+F2kVlZdJM4DP51F7c
+N2Ek2WKSoIJuiv7Aqb1WlHIWlN3ehg/BXcFPLSav+iChWXAD+MkKmMwL8lGEzsus
+MdbpRLxB0g90FUmpwr2f8euanOXYhU6sjnxH+0JY+j9AwWQLfAqtQ1eGO5MK75Dw
+htPM3Pj90bkfnYNjNXvnyjsQScDjYG/cv/zDwqRQWNcsmT3EqsBnmM5q0EL+Djo1
+lsPTacJdRtHsnQne9daNadnHywQPX+t/QwIDAQAB
+-----END RSA PUBLIC KEY-----
diff --git a/retiolum/hosts/tincdroid b/retiolum/hosts/tincdroid
new file mode 100644
index 00000000..c240f3d6
--- /dev/null
+++ b/retiolum/hosts/tincdroid
@@ -0,0 +1,9 @@
+Subnet = 10.243.0.11/32
+-----BEGIN RSA PUBLIC KEY-----
+MIIBCgKCAQEAwZSgdnymspnwy8NOJ1UKVIbUXxaDUCLWGGtSpYvRt4wrzkIMpeyc
++Bi2c/85Guy6B5H7X+3hMY7YFzM8AiixVr/FCAlKFwseZOc8ld07PuUPVtqdRN9N
+Dy4dqATaaWvjGL9320AJmccbYvoV0MZGTmWk86ZaA06tgDb0ZihEfYEFhw+5fakE
+7mxpdYmVdzaqScRyKWCF7ogn91/fQ01om/hsl+wzTI/ykqPTUumdNcijBMIK8EtZ
+qJbgOt9NSKulhDBFJ02vJmt3o6hmJSONjKcN7dify/ZotQffGCRMgdaWx0YTQJxY
+VJ1rPLlbZaPWRydsbMm3BTZAdMRXUq3uDwIDAQAB
+-----END RSA PUBLIC KEY-----
diff --git a/retiolum/hosts/tpsw b/retiolum/hosts/tpsw
new file mode 100644
index 00000000..4e7b2a89
--- /dev/null
+++ b/retiolum/hosts/tpsw
@@ -0,0 +1,11 @@
+Subnet = 10.243.183.236
+Subnet = 42:8ca8:d2e4:adf6:5c0f:38cb:e9ef:eb3c
+
+-----BEGIN RSA PUBLIC KEY-----
+MIIBCgKCAQEAvwYPFAINwV0EH0myFpNzRjVbqXdAmJP616C5JvODklhZWJxFxlKJ
+Poczl57j2Z+4bonkTrJmsNtSaQLPKYH4H1qfo/lwz7nqEpPi3Xp4Fgts23w36eML
+WBvbw0fQO9R8zZJIIdRkJ2qqlhZiTlor1Gtlm8Z1RmpKkhL9O6Yzj94VhGLhABVl
+OsaF2M3PgXJMiLry67jzbAs3+mVaT3iBTzWOaOyREjKQEUg9B9IDxrmZMSWqdXZM
+0wfzaCjS40jD73m7tqi7W3tXzAUP4mEeUqkC+NC2Zgm/lJ5B1KPx7AyNqtRLsBLd
+pIdJs6ng63WV1fyHYUWMYqZk9zB/tQ0b0wIDAQAB
+-----END RSA PUBLIC KEY-----
diff --git a/retiolum/hosts/ufo b/retiolum/hosts/ufo
new file mode 100644
index 00000000..7103515b
--- /dev/null
+++ b/retiolum/hosts/ufo
@@ -0,0 +1,11 @@
+Subnet = 10.243.223.142
+Subnet = 42:d9d0:64b5:4dc5:21cc:6a57:cbc9:fac6
+
+-----BEGIN RSA PUBLIC KEY-----
+MIIBCgKCAQEAuOly18THum73KzUbky8Vwmjz33sLl67bvm338Nacq8nuV1/8RkHz
+O1VWSnPiyUEpwf69jE5VP8GE/v+7gvJJ5WW/7A7K7A1Ox3vRjwDnO8PllCrzfei3
+jKffWRP9PcxwaWOjE7LKK16Y7t6ZM9k2zMyxAJtM+MmSnBvLoyd+14bIltXz+ZEU
+bpFk1g75CXMrqj29SDGfuFPWxbDfjr2bfNuYr3fCLIOKXyfBmHRaLiuPynezbZxQ
+HlLVMtCCZoKCctmlOlHON/JaL0ZHM1ZA1l6n4EaaPAL2nakMTU513LqQiCqTMej5
+r+wxsrjhHxVmWYhtPrJGOPlkQyJx9LiWjwIDAQAB
+-----END RSA PUBLIC KEY-----
diff --git a/retiolum/hosts/uriel b/retiolum/hosts/uriel
new file mode 100644
index 00000000..76e43047
--- /dev/null
+++ b/retiolum/hosts/uriel
@@ -0,0 +1,11 @@
+Subnet = 10.243.81.176
+Subnet = 42:dc25:60cf:94ef:759b:d2b6:98a9:2e56
+
+-----BEGIN RSA PUBLIC KEY-----
+MIIBCgKCAQEAnj73pgX0RqQ3T6AIgWYpGS8FYLTQfj4BPOprWXBCi4msHKPv1NDP
+rjn7XqckThm/gKY+epfaCQWBMi3jh6Tq4MZe3EbTl9vXm2AZNQSIF9ycVoNDBaC0
+wpEbNAelDFeyAqXwR58v7FzayWkHKpEGNAivROEDohmJ3ZbR42K656A7j2hODC28
+uUuvHzUTat1B/tdX5TBV6qU96NueIKkACuV+QTP6vWl3M44SQhZkimzHEZniDwnH
+F2Kj3EWml5BUySzS3sDuCrg9xTbYxhrkpOOpr8ekWBNSj74qmwEIKj66+ZQ4M8JK
+U6D3iLCe2/W0NbbYU1Xdq5ANjBisOqUadwIDAQAB
+-----END RSA PUBLIC KEY-----
diff --git a/retiolum/hosts/vault b/retiolum/hosts/vault
new file mode 100644
index 00000000..7ed3866c
--- /dev/null
+++ b/retiolum/hosts/vault
@@ -0,0 +1,10 @@
+Subnet = 10.243.229.17
+Subnet = 42:17ed:1eff:5aab:a541:57a2:7ca2:5c38
+-----BEGIN RSA PUBLIC KEY-----
+MIIBCgKCAQEAzra4v9cIU8mUeC8Vr1YUTWxir/IexD4FlGc087+i7hu6LLpt7Xi8
+XdwiGMTmQLegohtaVN3yShX1a5YywAboxaZFS1aLFBptmV9VIMtsTJRIgm2dBwMy
+5tFRfu3ElV408JBr8OGwYC967p/SY5hxvSAQRc2cmSeY5duWGxybpzfdKmnjnmLr
+pGfmavBaLAi2DP+KejCFjAu4oWayVlM2BIXtbtxxn90JvZ8HI4gdfHLBbwfxiEHb
+qODqiWbu7wznQ3g4N5SUW2rq8WUqubufcx30Z+096doc0i+Zdxb5JBU79CGTNcbZ
+X6Spc/CtkrLNbsTCjVmXgNvYo6WZeg4+rwIDAQAB
+-----END RSA PUBLIC KEY-----
diff --git a/retiolum/hosts/wooktop b/retiolum/hosts/wooktop
new file mode 100644
index 00000000..4b6a0b45
--- /dev/null
+++ b/retiolum/hosts/wooktop
@@ -0,0 +1,11 @@
+Subnet = 10.243.116.166
+Subnet = 42:3300:c119:dd94:07c2:8331:a1db:8a83
+
+-----BEGIN RSA PUBLIC KEY-----
+MIIBCgKCAQEAxRQfmz5rmX0FUYdyUrdBBYvcYcUnDms3QJOQwvqyRMzVG2CU1Dhk
+nxgd52slPB3mMtVVLZ9miz6G4UScVPiB2UXPCmEYNseE/X32uvDiqX52DN5p59Yi
+upA6AvhJyUe4L8W2J5esrUHJa8iDjK+bP7luACLZ3a2/oeJtv/5WSwOUvFVhpYU/
++XHg2yfsFmalXQfYbJlBgBd++YmbmGq4bcbeXlZ0krbkQxKaIJQGBV28BlC6fTbO
+mAqmniw24I/6Q8m3khSnxdILQkYAdFJI6CY1xl5GiTp1I3cEujY3uWW+vU/3Toss
+ibg+cNVL4DXhuwmwiqnHXmrIpIjpXNQ9EQIDAQAB
+-----END RSA PUBLIC KEY-----
diff --git a/retiolum/hosts/wu b/retiolum/hosts/wu
new file mode 100644
index 00000000..a63adc7c
--- /dev/null
+++ b/retiolum/hosts/wu
@@ -0,0 +1,10 @@
+Subnet = 10.243.13.37/32
+Subnet = 42:0:0:0:0:0:0:1337/128
+-----BEGIN RSA PUBLIC KEY-----
+MIIBCgKCAQEArDvU0cuBsVqTjCX2TlWL4XHSy4qSjUhjrDvUPZSKTVN7x6OENCUn
+M27g9H7j4/Jw/8IHoJLiKnXHavOoc9UJM+P9Fla/4TTVADr69UDSnLgH+wGiHcEg
+GxPkb2jt0Z8zcpD6Fusj1ATs3sssaLHTHvg1D0LylEWA3cI4WPP13v23PkyUENQT
+KpSWfR+obqDl38Q7LuFi6dH9ruyvqK+4syddrBwjPXrcNxcGL9QbDn7+foRNiWw4
+4CE5z25oGG2iWMShI7fe3ji/fMUAl7DSOOrHVVG9eMtpzy+uI8veOHrdTax4oKik
+AFGCrMIov3F0GIeu3nDlrTIZPZDTodbFKQIDAQAB
+-----END RSA PUBLIC KEY-----
diff --git a/retiolum/hosts/ytart b/retiolum/hosts/ytart
new file mode 100644
index 00000000..09a55f65
--- /dev/null
+++ b/retiolum/hosts/ytart
@@ -0,0 +1,9 @@
+Subnet = 10.243.65.226/32
+-----BEGIN RSA PUBLIC KEY-----
+MIIBCgKCAQEA2yCCN8nAPmZNL75Jr+FtfP5jmyuqg7IpgfW03L3s8Gg7NB1eTQAg
+UFPh13cj4lZleZOl3Yus7yx4HxMO8tYCptqnRPyP+UXrxvL+kECS4J3rLzjH/eOM
+0oAxuEe+DOa5R9Vj2bRtTouePlEvXDpgZZcDnedutRUYFGLNvkoWxu0RGqfQaJmd
+7KtOk1NJn9efNqwpl6ejPj5A+ivh2T1vAMWherM60JTjjhNGiSP4so0WG8PlBPYc
+GKnmMSQl0u5n10uTvLoVvnSfLj/QvL3d8abTrFV2lRqaCTJy+lxgkS1A5AnsTP1G
+OBbm/Gk9hRuYy2iP6FQ65q64/JfoeoqpPwIDAQAB
+-----END RSA PUBLIC KEY-----
diff --git a/retiolum/hosts/zombiecancer b/retiolum/hosts/zombiecancer
new file mode 100644
index 00000000..c073123f
--- /dev/null
+++ b/retiolum/hosts/zombiecancer
@@ -0,0 +1,11 @@
+Subnet = 10.243.226.40
+Subnet = 42:2cb2:77f2:86c1:ffcc:f9ff:fdcb:726f
+
+-----BEGIN RSA PUBLIC KEY-----
+MIIBCgKCAQEAwmIAhFzsJb6Pjy8TjAWMECwh8TRYIFaL0sAzGMtoibyAUnIpX6UU
+kYLYUjsd6Wo8HZUn38awjoa0tD1SE43UueyD45OAEk3zYY9/ku0BVBOgGYZahcWO
+cKMkO1BtIle7lI4/+gxyfoSrj+2/0pf56odFIZTIV+kyKtFg+97Mn/eb6o7b46oR
+edhU+Nz02YGLuSs4Pv663GAuIyCUj0OTxhX3F3lYWYyP6Hbj4FW5W8YJrlfw12x3
+f5OUceLLBz2JTk2thBSgd/bXW4hAOFgpuHTu8FWZ4sh7vKFiRmPyTTN0uE7NaVdX
+vSw7x+V9kSeonkW7uPp6A3ngl1ki2xc8AwIDAQAB
+-----END RSA PUBLIC KEY-----
diff --git a/retiolum/scripts/README b/retiolum/scripts/README
new file mode 100644
index 00000000..4dbb42af
--- /dev/null
+++ b/retiolum/scripts/README
@@ -0,0 +1,16 @@
+This Folder contains all the cool scripts created for tinc_retiolum
+
+currently the following functions are deployed:
+
+adv_graphgen/ - makefu
+ this folder contains a script suite which parses the interesting
+ parameters from the syslog file by sending SIGUSR2 to the tinc process
+
+tinc_multicast/ - Miefda,Lassulus
+ A tinc multicast script suite which provides automagic-discovery in a
+ local network by utilizing multicast
+
+tinc_setup/ - makefu (i am so sorry...)
+ A number of scripts which build and configure tinc on a local machine.
+ Core is the install.sh script which actually writes the configuration
+ and creates users as well as private/public keys
diff --git a/retiolum/scripts/adv_graphgen/DEPS b/retiolum/scripts/adv_graphgen/DEPS
new file mode 100644
index 00000000..b9a591d3
--- /dev/null
+++ b/retiolum/scripts/adv_graphgen/DEPS
@@ -0,0 +1,4 @@
+graphviz
+imagemagick
+python2
+pygeoip
diff --git a/retiolum/scripts/adv_graphgen/Makefile b/retiolum/scripts/adv_graphgen/Makefile
new file mode 100644
index 00000000..fafac84e
--- /dev/null
+++ b/retiolum/scripts/adv_graphgen/Makefile
@@ -0,0 +1,4 @@
+install:
+ #punani install graphviz
+ echo "add this line to your tinc.conf if you dare:"
+ echo 'GraphDumpFile = |/krebs/retiolum/scripts/adv_graphgen /srv/http/tmp/graphs/'
diff --git a/retiolum/scripts/adv_graphgen/README b/retiolum/scripts/adv_graphgen/README
new file mode 100644
index 00000000..082e0f2b
--- /dev/null
+++ b/retiolum/scripts/adv_graphgen/README
@@ -0,0 +1,28 @@
+The folder contains a number of scripts which provide a convenient way to
+generate advanced graphs from the SIGUSR2 output of tinc.
+
+it currently contains the following files:
+
+sanitize.sh:
+ wrapper arond parse.py which filters the syslog file for all tinc
+ related lines and removes the status informations:
+ this means that
+ <code>
+ May 19 20:40:44 servarch dnsmasq[5382]: reading /etc/resolv.conf
+ May 19 20:41:38 servarch tinc.retiolum[4780]: Error looking up pa-sharepoint.informatik.ba-stuttgart.de port 655: Name or service not known
+ </code>
+ becomes
+ <code>
+ Error looking up pa-sharepoint.informatik.ba-stuttgart.de port 655: Name or service not known
+ </code>
+ and so on.
+ It also provides a wrapper around graphviz which automagically
+ generates graphs from the produced graph file
+
+parse.py:
+ reads from stdin the sanitized syslog file and prints a valid dot file
+ from the given output.
+ The parser module may also produce any other output (e.g. for dns
+ entries and so on) you will need to actually read and modify the source
+ in order to be able to do this. ~May the source be with you~
+
diff --git a/retiolum/scripts/adv_graphgen/USAGE.md b/retiolum/scripts/adv_graphgen/USAGE.md
new file mode 100644
index 00000000..9fa541ed
--- /dev/null
+++ b/retiolum/scripts/adv_graphgen/USAGE.md
@@ -0,0 +1,27 @@
+# Example usage
+make sure you have the correct permissions!
+
+# High Level
+
+ # creates all graphs with predefined paths (see source code of this script)
+ ./all_the_graphs.sh
+
+ # create anonymized graphs to /tmp
+ ./anonytize.sh /tmp
+
+ # create full detail graphs to /var/www/graph.retiolum
+ ./sanitize.sh /var/ww/graph.retiolum
+
+ # return currently availabe supernodes
+ tinc_stats/Supernodes.py
+
+# Low Level
+
+ # returns the current tinc graph as json
+ tinc_stats/Log2JSON.py
+
+ # adds GEOIP information to the json file
+ tinc_stats/Log2JSON.py | tinc_stats/Geo.py
+
+ # creates a grapviz file from current graph, pipes into a timpfile
+ tinc_stats/Log2JSON.py | tinc_stats/Graph.py complete > /tmp/out.graphviz
diff --git a/retiolum/scripts/adv_graphgen/all_the_graphs.sh b/retiolum/scripts/adv_graphgen/all_the_graphs.sh
new file mode 100755
index 00000000..9f3bf82b
--- /dev/null
+++ b/retiolum/scripts/adv_graphgen/all_the_graphs.sh
@@ -0,0 +1,16 @@
+#!/bin/bash
+
+(
+ echo "`date` begin all graphs" >> /tmp/build_graph
+ cd $(dirname $(readlink -f $0))
+ PATH=$PATH:../../../util/bin/
+ EXTERNAL_FOLDER=/var/www/euer.krebsco.de/graphs/retiolum
+ INTERNAL_FOLDER=/var/www/euer/graphs/retiolum
+ begin=`timer`
+ export GEOCTIYDB="$PWD/GeoLiteCity.dat"
+ (python tinc_stats/Log2JSON.py | python tinc_stats/Geo.py > $INTERNAL_FOLDER/marker.json)&
+ (./anonytize.sh $EXTERNAL_FOLDER && echo "`date` anonytize done" >> /tmp/build_graph)&
+ (./sanitize.sh $INTERNAL_FOLDER && echo "`date` sanitize done" >> /tmp/build_graph)&
+# wait
+ echo "`date` end all graphs" >> /tmp/build_graph
+)&
diff --git a/retiolum/scripts/adv_graphgen/anonytize.sh b/retiolum/scripts/adv_graphgen/anonytize.sh
new file mode 100755
index 00000000..04a68869
--- /dev/null
+++ b/retiolum/scripts/adv_graphgen/anonytize.sh
@@ -0,0 +1,29 @@
+#!/bin/sh
+set -euf
+cd $(dirname `readlink -f $0`)
+GRAPH_SETTER1=dot
+GRAPH_SETTER2=circo
+GRAPH_SETTER3='neato -Goverlap=prism '
+GRAPH_SETTER4=sfdp
+TYPE=svg
+TYPE2=png
+OPENER=/bin/true
+DOTFILE=`mktemp --suffix=anon`
+trap 'rm $DOTFILE' INT TERM KILL EXIT
+sudo -E python tinc_stats/Log2JSON.py |\
+ python tinc_stats/Graph.py anonymous> $DOTFILE
+
+
+i=1
+for setter in dot circo 'neato -Goverlap=prism ' sfdp
+do
+ tmpgraph=`mktemp --tmpdir=$1`
+ $setter -T$TYPE -o $tmpgraph $DOTFILE
+ chmod go+rx $tmpgraph
+ mv $tmpgraph $1/retiolum_$i.$TYPE
+ i=`expr $i + 1`
+done
+convert $1/retiolum_1.$TYPE $1/retiolum_1.$TYPE2
+#convert -resize 20% $1/retiolum_2.$TYPE $1/retiolum_2.$TYPE2
+#convert -resize 20% $1/retiolum_3.$TYPE $1/retiolum_3.$TYPE2
+#convert -resize 20% $1/retiolum_4.$TYPE $1/retiolum_4.$TYPE2
diff --git a/retiolum/scripts/adv_graphgen/map.html b/retiolum/scripts/adv_graphgen/map.html
new file mode 100644
index 00000000..ef8a0565
--- /dev/null
+++ b/retiolum/scripts/adv_graphgen/map.html
@@ -0,0 +1,88 @@
+
+
+<!DOCTYPE html>
+<html>
+ <head>
+ <title>Simple Map</title>
+ <meta name="viewport" content="initial-scale=1.0, user-scalable=no">
+ <meta charset="utf-8">
+ <style>
+ html, body, #map-canvas {
+ margin: 0;
+ padding: 0;
+ height: 100%;
+ }
+ </style>
+ <script src="https://maps.googleapis.com/maps/api/js?v=3.exp&sensor=false"></script>
+ <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.7/jquery.min.js"></script>
+ <script type="text/javascript" src="jquery.ui.map.js"></script>
+ <script>
+ var map;
+ var markerlist ={};
+ function addInfoWindow(marker, message) {
+ var info = message;
+
+ var infoWindow = new google.maps.InfoWindow({
+ content: message
+ });
+
+ google.maps.event.addListener(marker, 'click', function () {
+
+ // close all the infowindows
+ $.each(markerlist,function (k,v){
+ v["infowin"].close()
+ });
+ infoWindow.open(map, marker);
+ });
+ return infoWindow;
+ }
+ function initialize() {
+ var mapOptions = {
+ zoom: 5,
+ center: new google.maps.LatLng(51,9),
+ mapTypeId: google.maps.MapTypeId.ROADMAP
+ };
+ map = new google.maps.Map(document.getElementById('map-canvas'),
+ mapOptions);
+
+ $.getJSON("marker.json",function (data){
+ $.each(data,function (k,v) {
+
+ // add initial marker
+ var pt=new google.maps.LatLng(v["latitude"],v["longitude"])
+ var marker= new google.maps.Marker({
+ id: k,map:map,title: k,position:pt,content:k})
+
+ // add edges
+ $.each(v["to"],function(iter,val){
+ var line = [
+ pt,
+ new google.maps.LatLng(val['latitude'],val['longitude'])
+ ]
+
+ var connector = new google.maps.Polyline({
+ path:line,
+ strokeColor: "#FF0000",
+ strokeOpacity: 1.0,
+ strokeWeight: 2
+ })
+ connector.setMap(map);
+ val["line"]=connector
+
+ })
+
+
+ marker["infowin"]=addInfoWindow(marker,k+'<br/>'+v["city"]);
+ markerlist[k] = marker;
+ });
+ })
+ };
+
+ google.maps.event.addDomListener(window, 'load', initialize);
+
+ </script>
+ </head>
+ <body>
+ <div id="map-canvas"></div>
+ </body>
+</html>
diff --git a/retiolum/scripts/adv_graphgen/sanitize.sh b/retiolum/scripts/adv_graphgen/sanitize.sh
new file mode 100755
index 00000000..f7d0e7e7
--- /dev/null
+++ b/retiolum/scripts/adv_graphgen/sanitize.sh
@@ -0,0 +1,31 @@
+#!/bin/sh
+set -euf
+cd $(dirname `readlink -f $0`)
+GRAPH_SETTER1=dot
+GRAPH_SETTER2=circo
+GRAPH_SETTER3='neato -Goverlap=prism '
+GRAPH_SETTER4=sfdp
+TYPE=svg
+TYPE2=png
+OPENER=/bin/true
+DOTFILE=`mktemp --suffix=san`
+trap 'rm $DOTFILE' INT TERM KILL EXIT
+sudo -E python tinc_stats/Log2JSON.py |\
+ python tinc_stats/Graph.py complete > $DOTFILE
+
+
+i=1
+for setter in dot circo 'neato -Goverlap=prism ' sfdp
+do
+ tmpgraph=`mktemp --tmpdir=$1`
+ $setter -T$TYPE -o $tmpgraph $DOTFILE
+ chmod go+rx $tmpgraph
+ mv $tmpgraph $1/retiolum_$i.$TYPE
+ i=`expr $i + 1`
+done
+
+convert $1/retiolum_1.$TYPE $1/retiolum_1.$TYPE2
+#convert -resize 20% $1/retiolum_2.$TYPE $1/retiolum_2.$TYPE2
+#convert -resize 20% $1/retiolum_3.$TYPE $1/retiolum_3.$TYPE2
+#convert -resize 20% $1/retiolum_4.$TYPE $1/retiolum_4.$TYPE2
+rm $DOTFILE
diff --git a/retiolum/scripts/adv_graphgen/tinc_stats/Availability.py b/retiolum/scripts/adv_graphgen/tinc_stats/Availability.py
new file mode 100755
index 00000000..66defa44
--- /dev/null
+++ b/retiolum/scripts/adv_graphgen/tinc_stats/Availability.py
@@ -0,0 +1,58 @@
+#!/usr/bin/python
+# -*- coding: utf8 -*-
+
+import sys,json
+""" TODO: Refactoring needed to pull the edges out of the node structures again,
+it should be easier to handle both structures"""
+DUMP_FILE = "/krebs/db/availability"
+
+def get_all_nodes():
+ import os
+ return os.listdir("/etc/tinc/retiolum/hosts")
+
+def generate_stats():
+ """ Generates availability statistics of the network and nodes
+ """
+ import json
+ jlines = []
+ try:
+ f = open(DUMP_FILE,'r')
+ for line in f:
+ jlines.append(json.loads(line))
+ f.close()
+ except Exception as e:
+ pass
+ all_nodes = {}
+ for k in get_all_nodes():
+ all_nodes[k] = get_node_availability(k,jlines)
+ print ( json.dumps(all_nodes))
+
+def get_node_availability(name,jlines):
+ """ calculates the node availability by reading the generated dump file
+ adding together the uptime of the node and returning the time
+ parms:
+ name - node name
+ jlines - list of already parsed dictionaries node archive
+ """
+ begin = last = current = 0
+ uptime = 0
+ for stat in jlines:
+ if not stat['nodes']:
+ continue
+ ts = stat['timestamp']
+ if not begin:
+ begin = last = ts
+ current = ts
+ if stat['nodes'].get(name,{}).get('to',[]):
+ uptime += current - last
+ else:
+ pass
+ last = ts
+ all_the_time = last - begin
+ try:
+ return uptime/ all_the_time
+ except:
+ return 1
+
+if __name__ == "__main__":
+ generate_stats()
diff --git a/retiolum/scripts/adv_graphgen/tinc_stats/BackwardsReader.py b/retiolum/scripts/adv_graphgen/tinc_stats/BackwardsReader.py
new file mode 100644
index 00000000..6bdbf43c
--- /dev/null
+++ b/retiolum/scripts/adv_graphgen/tinc_stats/BackwardsReader.py
@@ -0,0 +1,35 @@
+import sys
+import os
+import string
+
+class BackwardsReader:
+ """ Stripped and stolen from : http://code.activestate.com/recipes/120686-read-a-text-file-backwards/ """
+ def readline(self):
+ while len(self.data) == 1 and ((self.blkcount * self.blksize) < self.size):
+ self.blkcount = self.blkcount + 1
+ line = self.data[0]
+ try:
+ self.f.seek(-self.blksize * self.blkcount, 2)
+ self.data = string.split(self.f.read(self.blksize) + line, '\n')
+ except IOError:
+ self.f.seek(0)
+ self.data = string.split(self.f.read(self.size - (self.blksize * (self.blkcount-1))) + line, '\n')
+
+ if len(self.data) == 0:
+ return ""
+
+ line = self.data[-1]
+ self.data = self.data[:-1]
+ return line + '\n'
+
+ def __init__(self, file, blksize=4096):
+ """initialize the internal structures"""
+ self.size = os.stat(file)[6]
+ self.blksize = blksize
+ self.blkcount = 1
+ self.f = open(file, 'rb')
+ if self.size > self.blksize:
+ self.f.seek(-self.blksize * self.blkcount, 2)
+ self.data = string.split(self.f.read(self.blksize), '\n')
+ if not self.data[-1]:
+ self.data = self.data[:-1]
diff --git a/retiolum/scripts/adv_graphgen/tinc_stats/Geo.py b/retiolum/scripts/adv_graphgen/tinc_stats/Geo.py
new file mode 100755
index 00000000..038ca9c0
--- /dev/null
+++ b/retiolum/scripts/adv_graphgen/tinc_stats/Geo.py
@@ -0,0 +1,54 @@
+#!/usr/bin/python3
+# -*- coding: utf8 -*-
+import sys,json,os
+from Graph import delete_unused_nodes,resolve_myself
+GEODB=os.environ.get("GEOCITYDB","GeoLiteCity.dat")
+
+def add_geo(nodes):
+ from pygeoip import GeoIP
+ gi = GeoIP(GEODB)
+
+ for k,v in nodes.iteritems():
+ try:
+ nodes[k].update(gi.record_by_addr(v["external-ip"]))
+ except Exception as e:
+ sys.stderr.write(str(e))
+ sys.stderr.write("Cannot determine GeoData for %s\n"%k)
+
+ return nodes
+def add_coords_to_edges(nodes):
+ from pygeoip import GeoIP
+ gi = GeoIP(GEODB)
+
+ for k,v in nodes.iteritems():
+ for i,j in enumerate(v.get("to",[])):
+ data=gi.record_by_addr(j["addr"])
+ try:
+ j["latitude"]=data["latitude"]
+ j["longitude"]=data["longitude"]
+ except Exception as e: pass
+
+ return nodes
+
+def add_jitter(nodes):
+ from random import random
+ #add a bit of jitter to all of the coordinates
+ max_jitter=0.005
+ for k,v in nodes.iteritems():
+ jitter_lat= max_jitter -random()*max_jitter*2
+ jitter_long= max_jitter -random()*max_jitter*2
+ try:
+ v["latitude"]= v["latitude"] + jitter_lat
+ v["longitude"]= v["longitude"] + jitter_long
+ for nodek,node in nodes.iteritems():
+ for to in node['to']:
+ if to['name'] == k:
+ to['latitude'] = v["latitude"]
+ to['longitude'] = v["longitude"]
+ except Exception as e: pass
+ return nodes
+
+if __name__ == "__main__":
+ import json
+ nodes = add_jitter(add_coords_to_edges(add_geo(resolve_myself(delete_unused_nodes(json.load(sys.stdin))))))
+ print (json.dumps(nodes))
diff --git a/retiolum/scripts/adv_graphgen/tinc_stats/Graph.py b/retiolum/scripts/adv_graphgen/tinc_stats/Graph.py
new file mode 100755
index 00000000..2fb09a58
--- /dev/null
+++ b/retiolum/scripts/adv_graphgen/tinc_stats/Graph.py
@@ -0,0 +1,250 @@
+#!/usr/bin/python
+from BackwardsReader import BackwardsReader
+import sys,json,os
+from Supernodes import check_all_the_super
+from Services import add_services
+from Availability import get_node_availability
+import sys,json
+from time import time
+DUMP_FILE = "/krebs/db/availability"
+
+
+def resolve_myself(nodes):
+ #resolve MYSELF to the real ip
+ for k,v in nodes.items():
+ if v["external-ip"] == "MYSELF":
+ for nodek,node in nodes.items():
+ for to in node['to']:
+ if to['name'] == k:
+ v["external-ip"] = to["addr"]
+ return nodes
+
+def dump_graph(nodes):
+ from time import time
+ graph = {}
+ graph['nodes'] = nodes
+ graph['timestamp'] = time()
+ f = open(DUMP_FILE,'a')
+ json.dump(graph,f)
+ f.write('\n')
+ f.close()
+
+def generate_availability_stats(nodes):
+ """ generates stats of from availability
+ """
+ jlines = []
+ try:
+ f = BackwardsReader(DUMP_FILE)
+ lines_to_use = 1000
+ while True:
+ if lines_to_use == 0: break
+ line = f.readline()
+ if not line: break
+ jline = json.loads(line)
+ if not jline['nodes']: continue
+
+ jlines.append(jline)
+ lines_to_use -=1
+ except Exception as e: sys.stderr.write(str(e))
+
+ for k,v in nodes.items():
+ v['availability'] = get_node_availability(k,jlines)
+ sys.stderr.write( "%s -> %f\n" %(k ,v['availability']))
+
+def generate_stats(nodes):
+ """ Generates some statistics of the network and nodes
+ """
+ for k,v in nodes.items():
+ conns = v.get('to',[])
+ for c in conns: #sanitize weights
+ if float(c['weight']) > 9000: c['weight'] = str(9001)
+ elif float(c['weight']) < 0: c['weight'] = str(0)
+ v['num_conns'] = len(conns)
+ v['avg_weight'] = get_node_avg_weight(conns)
+
+def get_node_avg_weight(conns):
+ """ calculates the average weight for the given connections """
+ if not conns:
+ sys.syderr.write("get_node_avg_weight: connection parameter empty")
+ return 9001
+ else:
+ return sum([float(c['weight']) for c in conns])/len(conns)
+
+def delete_unused_nodes(nodes):
+ """ Deletes all the nodes which are currently not connected to the network"""
+ new_nodes = {}
+ for k,v in nodes.items():
+ if v['external-ip'] == "(null)":
+ continue
+ if v.get('to',[]):
+ new_nodes[k] = v
+ for k,v in new_nodes.items():
+ if not [ i for i in v['to'] if i['name'] in new_nodes]:
+ del(k)
+ return new_nodes
+
+def merge_edges(nodes):
+ """ merge back and forth edges into one
+ DESTRUCTS the current structure by deleting "connections" in the nodes
+ """
+ for k,v in nodes.items():
+ for con in v.get('to',[]):
+ for i,secon in enumerate(nodes.get(con['name'],{}).get('to',[])):
+ if k == secon['name']:
+ del (nodes[con['name']]['to'][i])
+ con['bidirectional'] = True
+
+
+def print_head():
+ print ('digraph retiolum {')
+ print (' graph [center=true packMode="clust"]')
+ print (' node[shape=box,style=filled,fillcolor=grey]')
+ print (' overlap=false')
+
+def print_stat_node(nodes):
+ ''' Write a `stats` node in the corner
+ This node contains infos about the current number of active nodes and connections inside the network
+ '''
+ from time import localtime,strftime
+ num_conns = 0
+ num_nodes = len(nodes)
+ try:
+ msg = '%s.num_nodes %d %d\r\n' %(g_path,num_nodes,begin)
+ s.send(msg)
+ except Exception as e: pass
+ for k,v in nodes.items():
+ num_conns+= len(v['to'])
+ node_text = " stats_node [label=\"Statistics\\l"
+ node_text += "Build Date : %s\\l" % strftime("%Y-%m-%d %H:%M:%S",localtime())
+ node_text += "Active Nodes: %s\\l" % num_nodes
+ node_text += "Connections : %s\\l" % num_conns
+ node_text += "\""
+ node_text += ",fillcolor=green"
+ node_text += "]"
+ print(node_text)
+
+def print_node(k,v):
+ """ writes a single node and its edges
+ edges are weightet with the informations inside the nodes provided by
+ tinc
+ """
+
+ node = " "+k+"[label=<<TABLE border='0' title='%s' cellborder='1' >" %k
+ node += "<TR><TD colspan='2'><B>%s</B></TD></TR>"%k
+ if 'availability' in v:
+ node += "<TR><TD>availability:</TD><TD>%f</TD></TR>" % v['availability']
+
+ if 'num_conns' in v:
+ node += "<TR><TD>Num Connects:</TD><TD>%s</TD></TR>"%str(v['num_conns'])
+
+ node += "<TR><TD>external:</TD><TD>"+v['external-ip']+":"+v['external-port']+"</TD></TR>"
+ for addr in v.get('internal-ip',['dunno lol']):
+ node += "<TR><TD>internal:</TD><TD>%s</TD></TR>"%addr
+
+ if 'services' in v:
+ node +="<TR><TD colspan='2'><B>Services:</B></TD></TR>"
+ for service in v['services']:
+ try:uri,comment = service.split(" ",1)
+ except:
+ uri = service
+ comment =""
+ node +="<TR >"
+ uri_proto=uri.split(":")[0]
+ uri_rest = uri.split(":")[1]
+ if not uri_rest:
+ node +="<TD title='{0}' align='left' colspan='2' \
+href='{0}'><font color='darkred'>{0}</font>".format(uri)
+ else:
+ node +="<TD title='{0}' align='left' colspan='2' \
+href='{0}'><U>{0}</U>".format(uri)
+ if comment:
+ node += "<br align='left'/> <I>{0}</I>".format(comment)
+ node +="</TD></TR>"
+ # end label
+ node +="</TABLE>>"
+
+ if v['num_conns'] == 1:
+ node += ",fillcolor=red"
+ elif k in supernodes:
+ node += ",fillcolor=steelblue1"
+ node += "]"
+
+ print(node)
+
+def print_anonymous_node(k,v):
+ """ writes a single node and its edges
+ edges are weightet with the informations inside the nodes provided by
+ tinc
+ """
+
+ node = " "+k #+"[label=\""
+ print(node)
+
+def print_edge(k,v):
+ for con in v.get('to',[]):
+ label = con['weight']
+ w = int(con['weight'])
+ weight = str(1000 - (((w - 150) * (1000 - 0)) / (1000 -150 )) + 0)
+
+ length = str(float(w)/1500)
+ if float(weight) < 0 :
+ weight= "1"
+
+ edge = " "+k+ " -> " +con['name'] + " [label="+label + " weight="+weight
+ if con.get('bidirectional',False):
+ edge += ",dir=both"
+ edge += "]"
+ print(edge)
+
+def anonymize_nodes(nodes):
+ #anonymizes all nodes
+ i = "0"
+ newnodes = {}
+ for k,v in nodes.items():
+ for nodek,node in nodes.items():
+ for to in node['to']:
+ if to['name'] == k:
+ to['name'] = i
+ newnodes[i] = v
+ i = str(int(i)+1)
+ return newnodes
+
+if __name__ == "__main__":
+ supernodes= []
+ if len(sys.argv) != 2 or sys.argv[1] not in ["anonymous","complete"]:
+ print("usage: %s (anonymous|complete)")
+ sys.exit(1)
+
+ nodes = json.load(sys.stdin)
+ nodes = delete_unused_nodes(nodes)
+ print_head()
+ generate_stats(nodes)
+ merge_edges(nodes)
+
+
+ if sys.argv[1] == "anonymous":
+ nodes = anonymize_nodes(nodes)
+
+ for k,v in nodes.items():
+ print_anonymous_node(k,v)
+ print_edge(k,v)
+
+ elif sys.argv[1] == "complete":
+ for supernode,addr in check_all_the_super():
+ supernodes.append(supernode)
+
+ generate_availability_stats(nodes)
+ add_services(nodes)
+ for k,v in nodes.items():
+ print_node(k,v)
+ print_edge(k,v)
+ try:
+ dump_graph(nodes)
+ except Exception as e:
+ sys.stderr.write("Cannot dump graph: %s" % str(e))
+ else:
+ pass
+
+ print_stat_node(nodes)
+ print ('}')
+# vim: set sw=2:ts=2
diff --git a/retiolum/scripts/adv_graphgen/tinc_stats/Log2JSON.py b/retiolum/scripts/adv_graphgen/tinc_stats/Log2JSON.py
new file mode 100755
index 00000000..a81e2bef
--- /dev/null
+++ b/retiolum/scripts/adv_graphgen/tinc_stats/Log2JSON.py
@@ -0,0 +1,125 @@
+#!/usr/bin/python
+import subprocess
+import os
+import re
+import sys
+import json
+
+
+TINC_NETWORK =os.environ.get("TINC_NETWORK","retiolum")
+
+# is_legacy is the parameter which defines if the tinc config files are handled old fashioned (parse from syslog),
+# or if the new and hip tincctl should be used
+
+
+# Tags and Delimiters
+TINC_TAG="tinc.%s" % TINC_NETWORK
+BEGIN_NODES = "Nodes:"
+END_NODES = "End of nodes."
+BEGIN_SUBNET = "Subnet list:"
+END_SUBNET = "End of subnet list"
+BEGIN_EDGES = "Edges:"
+END_EDGES = "End of edges."
+def usage():
+ from sys import argv,exit
+ print("""usage: %s
+This tool dumps all tinc node informations as json
+
+ENVIRONMENT VARIABLES:
+ TINC_NETWORK The tinc network to dump
+ (default: retiolum)
+ LOG_FILE If legacy tinc is used, defines the log file where tinc stats are dumped in
+ (default: /var/log/everything.log)
+""" % argv[0])
+ exit(1)
+def debug(func):
+ from functools import wraps
+ @wraps(func)
+ def with_debug(*args,**kwargs):
+ print( func.__name__ + " (args: %s | kwargs %s)"% (args,kwargs))
+ return func(*args,**kwargs)
+ return with_debug
+
+
+def parse_tinc_stats():
+ import subprocess
+ from time import sleep
+ from distutils.spawn import find_executable as which
+ #newest tinc
+ if which("tinc"):
+ return parse_new_input("tinc")
+ #new tinc
+ elif which("tincctl"):
+ return parse_new_input("tincctl")
+ #old tinc
+ else:
+ raise Exception("no tinc executable found!")
+
+#@debug
+def get_tinc_block(log_file):
+ """ returns an iterateable block from the given log file (syslog)
+ This function became obsolete with the introduction of tincctl
+ """
+ from BackwardsReader import BackwardsReader
+ tinc_block = []
+ in_block = False
+ bf = BackwardsReader(log_file)
+ BOL = re.compile(".*tinc.%s\[[0-9]+\]: " % TINC_NETWORK)
+ while True:
+ line = bf.readline()
+ if not line:
+ raise Exception("end of file at log file? This should not happen!")
+ line = BOL.sub('',line).strip()
+
+ if END_SUBNET in line:
+ in_block = True
+
+ if not in_block:
+ continue
+ tinc_block.append(line)
+
+ if BEGIN_NODES in line:
+ break
+ return reversed(tinc_block)
+
+def parse_new_input(tinc_bin):
+ nodes = {}
+ pnodes = subprocess.Popen(
+ [tinc_bin,"-n",TINC_NETWORK,"dump","reachable","nodes"],
+ stdout=subprocess.PIPE).communicate()[0].decode()
+ #pnodes = subprocess.check_output(["tincctl","-n",TINC_NETWORK,"dump","reachable","nodes"])
+ for line in pnodes.split('\n'):
+ if not line: continue
+ l = line.split()
+ nodes[l[0]]= { 'external-ip': l[2], 'external-port' : l[4] }
+ psubnets = subprocess.check_output(
+ [tinc_bin,"-n",TINC_NETWORK,"dump","subnets"]).decode()
+ for line in psubnets.split('\n'):
+ if not line: continue
+ l = line.split()
+ try:
+ if not nodes[l[2]].get('internal-ip',False):
+ nodes[l[2]]['internal-ip'] = []
+ nodes[l[2]]['internal-ip'].append(l[0].split('#')[0])
+ except KeyError:
+ pass # node does not exist (presumably)
+ pedges = subprocess.check_output(
+ [tinc_bin,"-n",TINC_NETWORK,"dump","edges"]).decode()
+ for line in pedges.split('\n'):
+ if not line: continue
+ l = line.split()
+ try:
+ if not 'to' in nodes[l[0]] :
+ nodes[l[0]]['to'] = []
+ nodes[l[0]]['to'].append(
+ {'name':l[2],'addr':l[4],'port':l[6],'weight' : l[10] })
+ except KeyError:
+ pass #node does not exist
+ return nodes
+
+if __name__ == '__main__':
+ from sys import argv
+ if len(argv) > 1:
+ usage()
+ else:
+ print (json.dumps(parse_tinc_stats()))
diff --git a/retiolum/scripts/adv_graphgen/tinc_stats/Services.py b/retiolum/scripts/adv_graphgen/tinc_stats/Services.py
new file mode 100644
index 00000000..6752e116
--- /dev/null
+++ b/retiolum/scripts/adv_graphgen/tinc_stats/Services.py
@@ -0,0 +1,17 @@
+services_dir="/home/makefu/r/services"
+def add_services(nodes):
+ for k,v in nodes.items():
+ n = nodes[k]
+ try:
+ with open("{0}/{1}".format(services_dir,k)) as f:
+ n["services"] = []
+ for line in f.readlines():
+ n["services"].append(line.strip())
+ except Exception as e:
+ n["services"] = ["Error: No Service File!"]
+ return nodes
+if __name__ == "__main__":
+ import json,sys
+ nodes = add_services(json.load(sys.stdin))
+ print (json.dumps(nodes,indent=4))
+# vim: set expandtab:ts=4:sw=4
diff --git a/retiolum/scripts/adv_graphgen/tinc_stats/Supernodes.py b/retiolum/scripts/adv_graphgen/tinc_stats/Supernodes.py
new file mode 100755
index 00000000..7e1f4dae
--- /dev/null
+++ b/retiolum/scripts/adv_graphgen/tinc_stats/Supernodes.py
@@ -0,0 +1,59 @@
+#!/usr/bin/python3
+
+def find_potential_super(path="/etc/tinc/retiolum/hosts"):
+ import os
+ import re
+
+ needle_addr = re.compile("Address\s*=\s*(.*)")
+ needle_port = re.compile("Port\s*=\s*(.*)")
+ for f in os.listdir(path):
+ with open(path+"/"+f) as of:
+ addrs = []
+ port = "655"
+
+ for line in of.readlines():
+
+ addr_found = needle_addr.match(line)
+ if addr_found:
+ addrs.append(addr_found.group(1))
+
+ port_found = needle_port.match(line)
+ if port_found:
+ port = port_found.group(1)
+
+ if addrs : yield (f ,[(addr ,int(port)) for addr in addrs])
+
+def try_connect(addr):
+ try:
+ from socket import socket,AF_INET,SOCK_STREAM
+ s = socket(AF_INET,SOCK_STREAM)
+ s.settimeout(2)
+ s.connect(addr)
+ s.settimeout(None)
+ s.close()
+ return addr
+ except Exception as e:
+ pass
+ #return ()
+
+def check_one_super(ha):
+ host,addrs = ha
+ valid_addrs = []
+ for addr in addrs:
+ ret = try_connect(addr)
+ if ret: valid_addrs.append(ret)
+ if valid_addrs: return (host,valid_addrs)
+
+def check_all_the_super(path="/etc/tinc/retiolum/hosts"):
+ from multiprocessing import Pool
+ p = Pool(20)
+ return filter(None,p.map(check_one_super,find_potential_super(path)))
+
+
+
+if __name__ == "__main__":
+ """
+ usage
+ """
+ for host,addrs in check_all_the_super():
+ print("%s %s" %(host,str(addrs)))
diff --git a/retiolum/scripts/adv_graphgen/tinc_stats/__init__.py b/retiolum/scripts/adv_graphgen/tinc_stats/__init__.py
new file mode 100644
index 00000000..f0fc8520
--- /dev/null
+++ b/retiolum/scripts/adv_graphgen/tinc_stats/__init__.py
@@ -0,0 +1,7 @@
+import Availability
+import BackwardsReader
+import Log2JSON
+import Supernodes
+import Geo
+import Graph
+import Services
diff --git a/retiolum/scripts/autostart/create-startup.sh b/retiolum/scripts/autostart/create-startup.sh
new file mode 100755
index 00000000..37edb972
--- /dev/null
+++ b/retiolum/scripts/autostart/create-startup.sh
@@ -0,0 +1,22 @@
+#!/bin/sh
+
+if test "${nosudo-false}" != true -a `id -u` != 0; then
+ echo "we're going sudo..." >&2
+ exec sudo "$0" "$@"
+ exit 23 # go to hell
+fi
+
+readlink="`readlink -f "$0"`"
+dirname="`dirname "$0"`"
+cd "$dirname"
+
+if [ -e /etc/init.d ];then
+ INIT_FOLDER=/etc/init.d
+ update-rc.d tinc defaults #TODO debian specific
+else
+ INIT_FOLDER=/etc/rc.d
+ echo "add tinc to DAEMONS in /etc/rc.conf" #TODO archlinux specific
+fi
+
+echo "retiolum" > /etc/tinc/nets.boot
+cp -a tinc $INIT_FOLDER
diff --git a/retiolum/scripts/autostart/tinc b/retiolum/scripts/autostart/tinc
new file mode 100755
index 00000000..12e77d6a
--- /dev/null
+++ b/retiolum/scripts/autostart/tinc
@@ -0,0 +1,94 @@
+#! /bin/sh
+#
+### BEGIN INIT INFO
+# Provides: tinc
+# Required-Start: $remote_fs $network
+# Required-Stop: $remote_fs $network
+# Should-Start: $syslog $named
+# Should-Stop: $syslog
+# Default-Start: 2 3 4 5
+# Default-Stop: 0 1 6
+# Short-Description: Start tinc daemons
+# Description: Create a file $NETSFILE (/etc/tinc/nets.boot),
+# and put all the names of the networks in there.
+# These names must be valid directory names under
+# $TCONF (/etc/tinc). Lines starting with a # will be
+# ignored in this file.
+### END INIT INFO
+#
+# Based on Lubomir Bulej's Redhat init script.
+
+DAEMON="/usr/sbin/tincd"
+NAME="tinc"
+DESC="tinc daemons"
+TCONF="/etc/tinc"
+NETSFILE="$TCONF/nets.boot"
+NETS=""
+
+modprobe tun
+
+test -f $DAEMON || exit 0
+
+[ -r /etc/default/tinc ] && . /etc/default/tinc
+
+# foreach_net "what-to-say" action [arguments...]
+foreach_net() {
+ if [ ! -f $NETSFILE ] ; then
+ echo "Please create $NETSFILE."
+ exit 0
+ fi
+ echo -n "$1"
+ shift
+ egrep '^[ ]*[a-zA-Z0-9_-]+' $NETSFILE | while read net args; do
+ echo -n " $net"
+ "$@" $net $args
+ done
+ echo "."
+}
+
+start() {
+ $DAEMON $EXTRA -n "$@"
+}
+stop() {
+ $DAEMON -n $1 -k
+}
+reload() {
+ $DAEMON -n $1 -kHUP
+}
+restart() {
+ stop "$@"
+ sleep 0.5
+ i=0;
+ while [ -f /var/run/tinc.$1.pid ] ; do
+ if [ $i = '10' ] ; then
+ break
+ else
+ echo -n "."
+ sleep 0.5
+ i=$(($i+1))
+ fi
+ done
+ start "$@"
+}
+
+case "$1" in
+ start)
+ foreach_net "Starting $DESC:" start
+ ;;
+ stop)
+ foreach_net "Stopping $DESC:" stop
+ ;;
+ reload|force-reload)
+ foreach_net "Reloading $DESC configuration:" reload
+ ;;
+ restart)
+ foreach_net "Restarting $DESC:" restart
+ ;;
+ *)
+ echo "Usage: /etc/init.d/$NAME {start|stop|reload|restart|force-reload}"
+ exit 1
+ ;;
+esac
+
+exit 0
+
diff --git a/retiolum/scripts/github_hosts_sync/README b/retiolum/scripts/github_hosts_sync/README
new file mode 100644
index 00000000..12aa8dfe
--- /dev/null
+++ b/retiolum/scripts/github_hosts_sync/README
@@ -0,0 +1,26 @@
+#? /bin/sh
+
+useradd -m hosts-sync
+cp systemd/hosts-sync.service /etc/systemd/system/
+cp systemd/hosts-sync.conf /etc/conf.d/
+
+sudo -u hosts-sync -i ssh-keygen
+add /home/hosts-sync/.ssh/id_rsa.pub as github/krebscode/hosts deploy key
+sudo -u hosts-sync -i git clone git@github.com:krebscode/hosts.git ~hosts-sync/hosts # to accept the remote key (and have an initial copy)
+
+sudo -u hosts-sync -i git config --global user.email hosts-sync@ire.retiolum
+sudo -u hosts-sync -i git config --global user.name hosts-sync
+sudo -u hosts-sync -i git config --global push.default simple
+
+systemctl start hosts-sync
+systemctl enable hosts-sync
+
+TODO firewall setup
+
+#? /bin/sh (update service)
+git pull
+cp retiolum/scripts/github_hosts_sync/systemd/hosts-sync.service /etc/systemd/system/
+systemctl daemon-reload
+systemctl restart hosts-sync
+
+
diff --git a/retiolum/scripts/github_hosts_sync/hosts-sync b/retiolum/scripts/github_hosts_sync/hosts-sync
new file mode 100755
index 00000000..53c96efd
--- /dev/null
+++ b/retiolum/scripts/github_hosts_sync/hosts-sync
@@ -0,0 +1,64 @@
+#! /bin/sh
+# TODO do_work should retry until success
+set -euf
+
+port=${port-1028}
+local_painload=$HOME/painload
+remote_painload="https://github.com/krebscode/painload"
+local_hosts=$HOME/hosts
+remote_hosts="git@github.com:krebscode/hosts.git"
+
+main() {
+ ensure_local_painload
+ ensure_local_hosts
+ is_worker && do_work || become_server
+}
+
+ensure_local_painload() {
+ test -d "$local_painload" || git clone "$remote_painload" "$local_painload"
+}
+
+ensure_local_hosts() {
+ test -d "$local_hosts" || git clone "$remote_hosts" "$local_hosts"
+}
+
+become_server() {
+ exec socat "TCP-LISTEN:$port,reuseaddr,fork" "EXEC:$0"
+}
+
+is_worker() {
+ test "${SOCAT_SOCKPORT-}" = "$port"
+}
+
+do_work() {
+ # read request
+ req_line="$(read line && echo "$line")"
+ req_hdrs="$(sed -n '/^\r$/q;p')"
+
+ set -x
+
+ cd "$local_hosts"
+ git pull >&2
+
+ cd "$local_hosts"
+ find . -name .git -prune -o -type f -exec git rm \{\} \; >/dev/null
+
+ cd "$local_painload"
+ git pull >&2
+
+ find "$local_painload/retiolum/hosts" -type f -exec cp \{\} "$local_hosts" \;
+
+ cd "$local_hosts"
+ find . -name .git -prune -o -type f -exec git add \{\} \; >&2
+ if git status --porcelain | grep -q .; then
+ git commit -m bump >&2
+ git push >&2
+ fi
+
+ echo "HTTP/1.1 200 OK"
+ echo
+ echo "https://github.com/krebscode/hosts/archive/master.tar.gz"
+ echo "https://github.com/krebscode/hosts/archive/master.zip"
+}
+
+main "$@"
diff --git a/retiolum/scripts/github_hosts_sync/systemd/hosts-sync.conf b/retiolum/scripts/github_hosts_sync/systemd/hosts-sync.conf
new file mode 100644
index 00000000..606f17b4
--- /dev/null
+++ b/retiolum/scripts/github_hosts_sync/systemd/hosts-sync.conf
@@ -0,0 +1 @@
+port=1028
diff --git a/retiolum/scripts/github_hosts_sync/systemd/hosts-sync.service b/retiolum/scripts/github_hosts_sync/systemd/hosts-sync.service
new file mode 100644
index 00000000..5fb9ed41
--- /dev/null
+++ b/retiolum/scripts/github_hosts_sync/systemd/hosts-sync.service
@@ -0,0 +1,14 @@
+[Unit]
+Description=retiolum github hosts sync
+After=network.target
+
+[Service]
+EnvironmentFile=/etc/conf.d/hosts-sync.conf
+ExecStart=/krebs/retiolum/scripts/github_hosts_sync/hosts-sync
+KillMode=process
+User=hosts-sync
+Group=hosts-sync
+
+[Install]
+WantedBy=multi-user.target
+
diff --git a/retiolum/scripts/github_listener/INSTALL b/retiolum/scripts/github_listener/INSTALL
new file mode 100644
index 00000000..20c0845c
--- /dev/null
+++ b/retiolum/scripts/github_listener/INSTALL
@@ -0,0 +1,13 @@
+# HowTo
+
+ useradd -r tinc
+ mkdir -p /opt/
+ git init github_listener
+ git remote add -f origin https://github.com/krebscode/painload.git
+ git config core.sparsecheckout true
+ echo retiolum/hosts/ >> .git/info/sparse-checkout
+ git pull origin master
+ ln -s $static_painload/retiolum/{scripts,bin} retiolum/
+ cp scripts/github_listener/github_listener.conf /etc/supervisor/conf.d/
+ cd ..
+ chown tinc:tinc -R github_listener
diff --git a/retiolum/scripts/github_listener/README b/retiolum/scripts/github_listener/README
new file mode 100644
index 00000000..57c30896
--- /dev/null
+++ b/retiolum/scripts/github_listener/README
@@ -0,0 +1,22 @@
+GITHUB_LISTENER
+===============
+
+The github listener is an application which listens for github post-receive
+hook calls and runs a script each time currently the github listener is
+used to create a tarball of all nodes in the retiolum darknet. the current
+tarball can be retrieved at http://euer.krebsco.de/retiolum/hosts.tar
+
+listen script
+=============
+
+the listen script is a quick hack which runs netcat in an e-loop together
+with a "logger" command to signalise successful tarball generation.
+
+
+github_listener.conf
+===================
+the supervisor config file
+
+References
+==========
+also see //retiolum/doc/git_checkout_only_hosts
diff --git a/retiolum/scripts/github_listener/github-listener.service b/retiolum/scripts/github_listener/github-listener.service
new file mode 100644
index 00000000..70e2676a
--- /dev/null
+++ b/retiolum/scripts/github_listener/github-listener.service
@@ -0,0 +1,15 @@
+[Unit]
+Description=github_listener
+After=network.target
+
+[Service]
+ExecStart=/bin/nc -lvv -p 5432 -c "./handle_request /opt/github_listener/retiolum/hosts /var/www/euer.krebsco.de/retiolum/"
+User=tinc
+WorkingDirectory=/krebs/retiolum/scripts/github_listener/
+[Install]
+WantedBy=multi-user.target
+
+# program:github_listener]
+#command=nc -lvv -p 5432 -c "./handle_request /opt/github_listener/retiolum/hosts /var/www/euer.krebsco.de/retiolum/"
+#user=tinc
+#directory=/krebs/retiolum/scripts/github_listener/
diff --git a/retiolum/scripts/github_listener/github_listener.conf b/retiolum/scripts/github_listener/github_listener.conf
new file mode 100644
index 00000000..3ab07a21
--- /dev/null
+++ b/retiolum/scripts/github_listener/github_listener.conf
@@ -0,0 +1,6 @@
+[program:github_listener]
+command=nc -lvv -p 5432 -c "./handle_request /opt/github_listener/retiolum/hosts /var/www/euer.krebsco.de/retiolum/"
+user=tinc
+directory=/krebs/retiolum/scripts/github_listener/
+autorestart=true
+environment=GRAPHITE_HOST=no_omo
diff --git a/retiolum/scripts/github_listener/handle_request b/retiolum/scripts/github_listener/handle_request
new file mode 100755
index 00000000..a5209048
--- /dev/null
+++ b/retiolum/scripts/github_listener/handle_request
@@ -0,0 +1,29 @@
+#!/bin/sh
+# Possible Shell Vars
+# WEBDIR
+# HOSTFOLDER
+
+set -euf
+#export GRAPHITE_HOST=${GRAPHITE_HOST:-no_omo}
+PATH=$PATH:../../../util/bin
+if [ "x${2:-}" = x ];then
+ echo "usage: $0 HOSTDIRECTORY WEBDIRECTORY"
+ exit 1
+fi
+NOW=$(timer)
+export HOSTDIR=${1:-../../hosts}
+WEBDIR=${2:-/var/www/euer.krebsco.de/retiolum/}
+echo "sorry for keeping you waiting, please be patient"
+logger "github_listener: received hook"
+cd $(dirname $(readlink -f $0))
+
+cd "$HOSTDIR"
+git pull origin master | logger
+echo "First step done"
+cd - >&2
+../../bin/create-supernode-tar $WEBDIR
+echo "almost done..."
+../../bin/create-host-tar $WEBDIR
+echo "Thank you for your patience! I stole $(timer $NOW)ms of your time, sorry about that."
+#graphitec 'retiolum.pack.build_time' $(timer $NOW)
+logger "github_listener: finished"
diff --git a/retiolum/scripts/routing/defaultroute.sh b/retiolum/scripts/routing/defaultroute.sh
new file mode 100755
index 00000000..d54e8bcf
--- /dev/null
+++ b/retiolum/scripts/routing/defaultroute.sh
@@ -0,0 +1,38 @@
+#!/bin/bash
+usage()
+{
+ echo "usage:"
+ echo "-h, print this help youre currently reading"
+ echo "-a activate routing"
+ echo "-d deactivate routing"
+}
+
+defaultroute=$(ip route show | grep default | awk '{ print $3 }')
+tincdir="/etc/tinc/retiolum"
+
+if [[ $(id -u) -gt 0 ]]; then
+ echo "This script should be run as root."
+ exit 1
+fi
+
+case "$1" in
+ -h|-help)
+ usage
+ exit 0;;
+ -a)
+ command="add"
+ ;;
+ -d)
+ command="del"
+ ;;
+ -*|*)
+ usage
+ exit 1;;
+esac
+
+cat $tincdir/tinc.conf | grep ConnectTo | cut -b 13- |
+while read host
+do
+ addr=$(cat $tincdir/hosts/$host | grep Address | cut -b 11-)
+ route $command $addr gw $defaultroute && echo $command $addr via $defaultroute
+done
diff --git a/retiolum/scripts/tinc_setup/README.md b/retiolum/scripts/tinc_setup/README.md
new file mode 100644
index 00000000..c4892474
--- /dev/null
+++ b/retiolum/scripts/tinc_setup/README.md
@@ -0,0 +1,10 @@
+# Description
+new_install.sh is the script fur bootstrapping tinc.
+We use irc for the initial key exchange, specifically
+irc.freenode.com#krebs_incoming .
+
+# Usage
+
+ curl tinc.krebsco.de | HOSTN=bobkhan sh
+ # or
+ HOSTN=wrryyyyy ./new_install.sh
diff --git a/retiolum/scripts/tinc_setup/autoupdate_cron.sh b/retiolum/scripts/tinc_setup/autoupdate_cron.sh
new file mode 100644
index 00000000..d5d41aaf
--- /dev/null
+++ b/retiolum/scripts/tinc_setup/autoupdate_cron.sh
@@ -0,0 +1,7 @@
+cat <<EOF
+# Add these lines to your crontab:
+
+12 23 * * * /home/node/usr/sbin/tincd -n retiolum &>/dev/null
+12 23 * * * cd /home/node/etc/tinc/retiolum/hosts/ && /opt/local/bin/git pull && pkill -HUP tincd
+EOF
+
diff --git a/retiolum/scripts/tinc_setup/new_install.sh b/retiolum/scripts/tinc_setup/new_install.sh
new file mode 100755
index 00000000..a788da13
--- /dev/null
+++ b/retiolum/scripts/tinc_setup/new_install.sh
@@ -0,0 +1,371 @@
+#!/bin/sh
+main(){
+
+ #get sudo
+ if test "${nosudo-false}" != true -a `id -u` != 0; then
+ echo "we're going sudo..." >&2
+ exec sudo -E "$0" "$@"
+ exit 23 # go to hell
+ fi
+ set -euf
+ #
+ SUBNET4=${SUBNET4:-10.243}
+ SUBNET6=${SUBNET6:-42}
+ TEMPDIR=${TEMPDIR:-auto}
+ TINCDIR=${TINCDIR:-auto}
+ exists() { type "$1" >/dev/null 2>/dev/null; }
+
+ if exists hostname ;then SYSHOSTN=${HOSTNAME:-$(hostname)}
+ elif exists uci ;then SYSHOSTN=$(uci get system.@system[0].hostname)
+ elif [ -e /etc/hostname ] ;then SYSHOSTN=$(cat /etc/hostname)
+ else SYSHOSTN="unknown"
+ fi
+
+ #overwrite `found` hostname
+ HOSTN=${HOSTN:-$SYSHOSTN}
+ NETNAME=${NETNAME:-retiolum}
+ MASK4=${MASK4:-16}
+ MASK6=${MASK6:-16}
+ RMASK=${RMASK:-255.255.0.0}
+ URL=${URL:-http://euer.krebsco.de/retiolum/hosts.tar.gz}
+ SURL=${SURL:-http://euer.krebsco.de/retiolum/supernodes.tar.gz}
+
+ IRCCHANNEL=${IRCCHANNEL:-"#krebs_incoming"}
+ IRCSERVER=${IRCSERVER:-"irc.freenode.net"}
+ IRCPORT=${IRCPORT:-6667}
+
+ OS=${OS:-0}
+ TELNET=${TELNET:-}
+
+ IP4=${IP4:-0}
+ IP6=${IP6:-0}
+
+ RAND4=1
+ RAND6=1
+
+ if $(echo $HOSTN | grep -q -); then
+ echo 'invalid hostname, - not allowed'
+ exit 1
+ fi
+
+
+ if [ $IP4 -eq 0 ]; then
+ RAND4=1
+ elif ! check_ip_valid4 $IP4; then
+ echo 'ip4 is invalid'
+ exit 1
+ fi
+ if [ $IP6 -eq 0 ]; then
+ RAND6=1
+ elif ! check_ip_valid6 $IP6; then
+ echo 'ip6 is invalid'
+ exit 1
+ fi
+
+ #find OS
+ if [ $OS -eq 0 ]; then
+ find_os
+ fi
+ if [ -z "$TELNET" ]; then
+ find_telnet
+ fi
+ #check if everything is installed
+ if ! exists awk ; then
+ echo "Please install awk"
+ exit 1
+ fi
+
+ if ! exists curl ; then
+ if ! exists wget ; then
+ echo "Please install curl or wget"
+ exit 1
+ else
+ LOADER='wget -O-'
+ HEAD_LOADER="$LOADER --spider"
+ fi
+ else
+ LOADER=curl
+ HEAD_LOADER="$LOADER -I"
+ fi
+
+ if ! $HEAD_LOADER $SURL >/dev/null 2>/dev/null ;then
+ echo "Cannot find supernode package, check if your internet is working"
+ exit 1
+ fi
+
+ #check if everything is installed
+ if [ $OS = 'android' ]; then
+ if ! test -e /data/data/org.poirsouille.tinc_gui/files/tincd; then
+ echo "Please install tinc-gui"
+ exit 1
+ else
+ TINCBIN=/data/data/org.poirsouille.tinc_gui/files/tincd
+ DEV="/dev/tun"
+ if [ $TINCDIR = 'auto' ]; then TINCDIR="/usr/local/etc/tinc" ;fi
+ if [ $TEMPDIR = 'auto' ]; then TEMPDIR="/storage/sdcard0/tinc-fu" ;fi
+ mount -o remount,rw /
+ mount -o remount,rw /system
+ fi
+ elif [ $OS = 'osx' ]; then
+ if ! exists tincd >/dev/null; then
+ echo "Please install tinc"
+ exit 1
+ else
+ TINCBIN=tincd
+ DEV="/dev/net/tun"
+ if [ $TINCDIR = 'auto' ]; then TINCDIR="/usr/local/etc/tinc" ;fi
+ if [ $TEMPDIR = 'auto' ]; then TEMPDIR="/tmp/tinc-install-fu" ;fi
+ fi
+ else
+ if ! exists tincd >/dev/null; then
+ echo "Please install tinc"
+ exit 1
+ else
+ TINCBIN=tincd
+ DEV="/dev/net/tun"
+ if [ $TINCDIR = 'auto' ]; then TINCDIR="/etc/tinc" ;fi
+ if [ $TEMPDIR = 'auto' ]; then TEMPDIR="/tmp/tinc-install-fu" ;fi
+ fi
+ fi
+
+ #generate full subnet information for v4
+
+ #test if tinc directory already exists
+ if test -e $TINCDIR/$NETNAME; then
+ echo "tinc config directory $TINCDIR/$NETNAME does already exist. (backup and) delete config directory and restart"
+ exit 1
+ fi
+
+ #get tinc-hostfiles
+ mkdir -p $TEMPDIR/hosts
+ $LOADER $URL | tar zx -C $TEMPDIR/hosts/
+
+ #check for free ip
+ #version 4
+ until check_ip_taken $IP4; do
+ if [ $RAND4 -eq 1 ]; then
+ IP4="$SUBNET4.$(( $(head /dev/urandom | tr -dc "123456789" | head -c3) %255)).$(( $(head /dev/urandom | tr -dc "123456789" | head -c3) %255))"
+ else
+ printf 'choose new ip: '
+ read IP4
+ while ! check_ip_valid4 $IP4; do
+ printf 'the ip is invalid, retard, choose a valid ip: '
+ read IP4
+ done
+ fi
+ done
+
+ #version 6
+ until check_ip_taken $IP6; do
+ if [ $RAND6 -eq 1 ]; then
+ NETLENGTH=$(expr $(expr 128 - $MASK6) / 4)
+ IP6="$SUBNET6$(head /dev/urandom | tr -dc "0123456789abcdef" | head -c$NETLENGTH | sed 's/..../:&/g')" #todo: generate ip length from hostmask
+ else
+ printf 'ip taken, choose new ip: '
+
+ read IP6
+ while ! check_ip_valid6 $IP6; do
+ printf 'the ip is invalid, retard, choose a valid ip: '
+ read IP6
+ done
+ fi
+ done
+
+
+ #check for free hostname
+ get_hostname $HOSTN
+
+
+ #create the configs
+ mkdir -p $TINCDIR/$NETNAME
+ cd $TINCDIR/$NETNAME
+
+ if [ $OS = 'openwrt' ]; then
+ mkdir hosts
+ $LOADER $SURL | tar xz -C hosts/
+ else
+ mv $TEMPDIR/hosts ./
+ fi
+
+ rm -r $TEMPDIR || echo "$TEMPDIR does not exist, skipping removal"
+
+ echo "Subnet = $IP4" > hosts/$HOSTN
+ echo "Subnet = $IP6" >> hosts/$HOSTN
+
+ cat>tinc.conf<<EOF
+Name = $HOSTN
+Device = $DEV
+
+#newer tinc features
+LocalDiscovery = yes
+AutoConnect = 3
+
+#ConnectTos
+ConnectTo = fastpoke
+ConnectTo = pigstarter
+ConnectTo = reimae
+ConnectTo = ire
+ConnectTo = tahoe
+EOF
+
+ host2subnet $MASK4
+
+ #check if ip is installed
+ if exists ip >/dev/null; then
+ echo 'dirname="`dirname "$0"`"' > tinc-up
+ echo '' >> tinc-up
+ echo 'conf=$dirname/tinc.conf' >> tinc-up
+ echo '' >> tinc-up
+ echo 'host=$dirname/hosts/$NAME' >> tinc-up
+ echo '' >> tinc-up
+ echo 'ip link set $INTERFACE up' >> tinc-up
+ echo '' >> tinc-up
+ echo "addr4=\$(sed -n \"s|^ *Subnet *= *\\($SUBNET4[.][^ ]*\\) *\$|\\\\1|p\" \$host)" >> tinc-up
+ echo 'ip -4 addr add $addr4 dev $INTERFACE' >> tinc-up
+ echo "ip -4 route add $FULLSUBNET/$MASK4 dev \$INTERFACE" >> tinc-up
+ #TODO: variable for network announced
+ echo "ip -4 route add 172.22.0.0/15 dev \$INTERFACE" >> tinc-up
+ echo '' >> tinc-up
+ echo "addr6=\$(sed -n \"s|^ *Subnet *= *\\($SUBNET6[:][^ ]*\\) *\$|\\\\1|p\" \$host)" >> tinc-up
+ echo 'ip -6 addr add $addr6 dev $INTERFACE || exit 0' >> tinc-up
+ echo "ip -6 route add $SUBNET6::/$MASK6 dev \$INTERFACE" >> tinc-up
+ else
+ echo 'dirname="`dirname "$0"`"' > tinc-up
+ echo '' >> tinc-up
+ echo 'conf=$dirname/tinc.conf' >> tinc-up
+ echo '' >> tinc-up
+ echo 'name=$(sed -n "s|^ *Name *= *\([^ ]*\) *$|\\1|p" $conf)' >> tinc-up
+ echo '' >> tinc-up
+ echo 'host=$dirname/hosts/$name' >> tinc-up
+ echo '' >> tinc-up
+ echo "addr4=\$(sed -n \"s|^ *Subnet *= *\\($SUBNET4[.][^ ]*\\) *$|\\\\1|p\" \$host)" >> tinc-up
+ echo 'ifconfig $INTERFACE $addr4' >> tinc-up
+ echo "route add -net $FULLSUBNET netmask $RMASK dev \$INTERFACE " >> tinc-up
+ fi
+
+ #fix permissions
+ chmod +x tinc-up
+ chown -R 0:0 .
+
+ #generate keys with tinc
+ if exists tinc ; then
+ yes | tinc -n $NETNAME generate-keys
+ else
+ yes | $TINCBIN -n $NETNAME -K
+ fi
+
+ if [ $OS = 'android' ]; then
+ mkdir /etc/tinc
+ cd /
+ mv $TINCDIR/$NETNAME /etc/tinc/
+ cd /etc/tinc/$NETNAME
+ fi
+ #write to irc-channel
+ NICK="${HOSTN}_$(head /dev/urandom | tr -dc "0123456789" | head -c3)"
+
+ ( echo "NICK $NICK";
+ echo "USER $NICK $IRCSERVER bla : $NICK";
+ echo "JOIN $IRCCHANNEL";
+ sleep 23;
+ echo "PRIVMSG $IRCCHANNEL : This is $HOSTN";
+ sed "s/^\(.*\)/PRIVMSG $IRCCHANNEL : \1/" hosts/$HOSTN;
+ sleep 5; ) | $TELNET $IRCSERVER $IRCPORT
+
+
+ # finish what you have begun!
+ tincd -n $NETNAME
+ echo "if you are new, go into irc://freenode/krebs and introduce yourself"
+ echo "do not forget to add the host to the 'services' repository"
+}
+
+
+#convert hostmask to subnetmask only version 4
+host2subnet()
+{
+ NEEDDOTSINSUB=$(expr 3 - $( echo $SUBNET4 | tr -C -d . | wc -c))
+ case $NEEDDOTSINSUB in
+ 3) FULLSUBNET=$SUBNET4.0.0.0 ;;
+ 2) FULLSUBNET=$SUBNET4.0.0 ;;
+ 1) FULLSUBNET=$SUBNET4.0 ;;
+ 0) FULLSUBNET=$SUBNET4 ;;
+ *) echo "cannot read subnet" && exit 1;;
+ esac
+}
+
+#check if ip is valid ipv4 function
+check_ip_valid4()
+{
+ if [ "$(echo $1 | awk -F"\." ' $0 ~ /^([0-9]{1,3}\.){3}[0-9]{1,3}$/ && $1 <=255 && $2 <= 255 && $3 <= 255 && $4 <= 255 ' 2>/dev/null)" == "$1" ] && [ ${1:0:${#SUBNET4}} == $SUBNET4 ]
+ then
+ return 0
+ else
+ return 1
+ fi
+}
+
+#check if ip is valid ipv6 function
+check_ip_valid6()
+{
+ if [ "$(echo $1 | awk -F"." ' $0 ~ /^([0-9a-fA-F]{1,4}\:){7}[0-9a-fA-F]{1,4}$/' 2>/dev/null)" == $1 ] && [ ${1:0:${#SUBNET6}} == $SUBNET6 ]
+ then
+ return 0
+ else
+ return 1
+ fi
+}
+
+#check if ip is taken function
+check_ip_taken()
+{
+ if grep -q -r -E "$1(#|/)" $TEMPDIR/hosts/ ;then
+ return 1
+ else
+ return 0
+ fi
+}
+
+#if hostname is taken, count upwards until it isn't taken function
+get_hostname()
+{
+ TSTFILE=$TEMPDIR/hosts/$1
+ LCOUNTER=0
+ if test -e $TSTFILE; then
+ while test -e $TSTFILE; do
+ : $((LCOUNTER+=1))
+ TSTFILE=$TEMPDIR/hosts/$1$LCOUNTER
+ done
+ HOSTN=$1$LCOUNTER
+ else
+ HOSTN=$1
+ fi
+}
+
+#os autodetection
+find_os()
+{
+ if grep -qe 'Linux' /etc/*release 2>/dev/null || grep -qe 'Linux' /etc/issue 2>/dev/null; then
+ OS='linux'
+ elif test -e /etc/preferred-apps/google.xml; then
+ OS='android'
+ elif test -e /etc/openwrt_release; then
+ OS='openwrt'
+ elif uname -s | grep -qi 'darwin'; then
+ OS='osx'
+ else
+ echo "Cannot determine your operating system, falling back to Linux"
+ OS='linux'
+ fi
+}
+
+find_telnet(){
+ if exists telnet >/dev/null;then
+ TELNET="`command -v telnet`"
+ elif exists busybox >/dev/null;then
+ TELNET="`command -v busybox` telnet"
+ else
+ echo "cannot find telnet binary, please install either telnet-client or busybox"
+ echo "bailing out!"
+ exit 1
+ fi
+}
+main
diff --git a/retiolum/scripts/tinc_setup/tinc-up b/retiolum/scripts/tinc_setup/tinc-up
new file mode 100755
index 00000000..acb81b5d
--- /dev/null
+++ b/retiolum/scripts/tinc_setup/tinc-up
@@ -0,0 +1,18 @@
+# source: krebscode/painload/retiolum/scripts/tinc_setup/tinc-up
+
+dirname="`dirname "$0"`"
+
+conf=$dirname/tinc.conf
+
+host=$dirname/hosts/$NAME
+
+ip link set $INTERFACE up
+
+addr4=`sed -n 's|^ *Subnet *= *\(10[.][^ ]*\) *$|\1|p' $host`
+ip -4 addr add $addr4 dev $INTERFACE
+ip -4 route add 10.243.0.0/16 dev $INTERFACE
+ip -4 route add 172.22.0.0/15 dev $INTERFACE
+
+addr6=`sed -n 's|^ *Subnet *= *\(42[:][^ ]*\) *$|\1|p' $host`
+ip -6 addr add $addr6 dev $INTERFACE || exit 0
+ip -6 route add 42::/16 dev $INTERFACE
diff --git a/retiolum/t/docker/.test_bootstrap.swp b/retiolum/t/docker/.test_bootstrap.swp
new file mode 100644
index 00000000..11d78d1a
--- /dev/null
+++ b/retiolum/t/docker/.test_bootstrap.swp
Binary files differ
diff --git a/retiolum/t/docker/README.md b/retiolum/t/docker/README.md
new file mode 100644
index 00000000..a33d665f
--- /dev/null
+++ b/retiolum/t/docker/README.md
@@ -0,0 +1,7 @@
+This repository contains tests which can be run with an working docker installation.
+The basic idea is to test all the bootstrapping scripts without having to
+verkrepel real computers
+
+Currently there is a test runner in this directory and a test script for the docker
+instance in `docker_tests/`
+
diff --git a/retiolum/t/docker/docker_boostrap.sh b/retiolum/t/docker/docker_boostrap.sh
new file mode 100755
index 00000000..82673dd4
--- /dev/null
+++ b/retiolum/t/docker/docker_boostrap.sh
@@ -0,0 +1,5 @@
+#!/bin/sh
+cd $(dirname $(readlink -f $0))
+docker_id=$(docker run -d -v $PWD/docker_tests/:/test ubuntu /bin/sh /test/bootstrap )
+trap "docker rm $docker_id" INT TERM EXIT QUIT
+docker wait $docker_id
diff --git a/retiolum/t/docker/docker_tests/bootstrap b/retiolum/t/docker/docker_tests/bootstrap
new file mode 100644
index 00000000..7d93828a
--- /dev/null
+++ b/retiolum/t/docker/docker_tests/bootstrap
@@ -0,0 +1,10 @@
+#!/bin/sh
+echo "deb http://archive.ubuntu.com/ubuntu precise main universe" > /etc/apt/sources.list
+
+apt-get update
+apt-get install -y tinc wget busybox
+wget -O- tinc.krebsco.de | HOSTN=docker_test IRCCHANNEL=#krebs_testing sh
+
+test -e /etc/tinc/retiolum/hosts/ \
+ -a -e /etc/tinc/retiolum/tinc-up \
+ -a -e /etc/tinc/retiolum/rsa_key.priv
diff --git a/retiolum/t/pigstarter/refresh_hosts.sh b/retiolum/t/pigstarter/refresh_hosts.sh
new file mode 100755
index 00000000..0e53e1c0
--- /dev/null
+++ b/retiolum/t/pigstarter/refresh_hosts.sh
@@ -0,0 +1,4 @@
+#!/bin/sh
+HOSTS_SRV=pigstarter.krebsco.de
+HOSTS_PORT=5432
+curl $HOSTS_SRV:$HOSTS_PORT | grep -q "Thank you for your patience"
diff --git a/services/Makefile b/services/Makefile
new file mode 100644
index 00000000..c537b50d
--- /dev/null
+++ b/services/Makefile
@@ -0,0 +1,43 @@
+help:;@cat Makefile
+export authorized_keys_file := authorized_keys
+export debug_log := true
+export services_file := services.txt
+export host_key_file := test.key
+export services_home := /opt/services
+
+.PHONY: authorized_keys
+
+
+service-user: $(services_home)/services.txt ssh_authorized_keys
+ @echo 'also make sure that the user is created: make create-service-user'
+
+create-service-user:
+ mkdir -p $(services_home)
+ rmdir $(services_home)
+ useradd -m -r -l -f -1 -d $(services_home) services
+
+ssh_authorized_keys: $(services_home)/.ssh/authorized_keys
+
+$(services_home)/.ssh:
+ mkdir $@
+ chown services:services $@
+
+$(services_home)/.ssh/authorized_keys: $(services_home)/.ssh $(authorized_keys_file)
+ cp $(authorized_keys_file) $(services_home)/.ssh/authorized_keys
+ @echo "restricting authorized_keys..."
+ @sed -i 's#^#command="/bin/cat $(services_home)/services.txt",no-port-forwarding,no-X11-forwarding,no-agent-forwarding,no-pty #' $(services_home)/.ssh/authorized_keys
+ chown services:services $(authorized_keys_file)
+
+$(services_home)/services.txt:
+ @echo 'make sure to configure the services correctly in $(services_home)/services.txt'
+ cp $(services_file) $(services_home)/services.txt
+
+
+test-client:
+ ssh localhost -p 1337 2>/dev/null
+
+test-server:
+ ./test-server.py
+
+$(host_key_file):
+ ssh-keygen -t rsa -P '' -f $@
diff --git a/services/README.md b/services/README.md
new file mode 100644
index 00000000..1fc2bfe3
--- /dev/null
+++ b/services/README.md
@@ -0,0 +1,30 @@
+# //services
+
+## install service user
+
+ make create-service-user service-user
+ $EDITOR /opt/services/services.txt
+
+## install and run test-server.py as systemd service
+
+### install dependencies
+
+ pacman -S python2-pyasn1 twisted
+
+### install systemd service and configuration
+
+ cp /krebs/services/etc/systemd/system/krebs-services-test-server.service \
+ /etc/systemd/system/
+ cp /krebs/services/etc/conf.d/krebs-services-test-server \
+ /etc/conf.d/
+
+### create services user and populate it's home
+
+ useradd -m -r -l -f -1 -d /opt/services -k /var/empty services
+ sudo -u services ssh-keygen -t rsa -P '' -f /opt/services/test.key
+ $EDITOR /opt/services/services.txt
+
+### run now and every reboot
+
+ systemctl start krebs-services-test-server
+ systemctl enable krebs-services-test-server
diff --git a/services/authorized_keys b/services/authorized_keys
new file mode 100644
index 00000000..03774041
--- /dev/null
+++ b/services/authorized_keys
@@ -0,0 +1,7 @@
+ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQC7YrLdnXDRU2XEdZDu1BmgiT0Vaxplf3bfvSm+5o3g4AcR2yCv7h2D633c9uA0gq52EJ3V5m8B1ZcxqA0zqDptKwx+ZTMUGDls7StH5xpJyk9j5gf8DzyDLQPQG2IYszCH+8esKjo3BOFxfey8NaX+k6gvQsG3lyV0PjLvvIy4gDuMn6dPZfVAlwNYFOUNgwpku3W3A0d+UFyVjt3/sgZxM+8C3y6QE1gwT5/NfBbHM5vaEqjHcVq1ui+7a4iOXFGKkZDcd7EX6cQZSbCzZL7sZ0OmB1WpAsDCvIXfzX1YfNA0sso7ldSF6ZUGNgwEk1LootnQlCK/dfbM+i62SZ+1 tv@iiso
+ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQCv9TTt4FkzT3jlQ0VS2tX/GpQO9Ef0wIQ+g96foe4qSniBwR667T1gIhURrod/p7N9oQcWRrNohjgmSBZRYA0kW6ZyqYJkLvRv54nXv6j/8Xq2nG/KVfDqL0kp8if+JGeFlQElpWJiAbGifYkopFy69QiLYU2ndR7aPbx+5qm/dcwPJ7K+n6dyePynCZadtcabm3PuBFUxGLdT9ImDXMOPfXxPMlN/3eb78byuEuHnhCIvIGLMBGx+8QTXvu7kHpZObvkbsF1xjVs9fDpwVLjh7GWdwf3BZ/agFlI24ffyqCPFnuaxUVyfUZeqf4twRsIZkTTB47lHDhYiVkyGe8gd root@pigstarter.de
+ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQCl3RTOHd5DLiVeUbUr/GSiKoRWknXQnbkIf+uNiFO+XxiqZVojPlumQUVhasY8UzDzj9tSDruUKXpjut50FhIO5UFAgsBeMJyoZbgY/+R+QKU00Q19+IiUtxeFol/9dCO+F4o937MC0OpAC10LbOXN/9SYIXueYk3pJxIycXwUqhYmyEqtDdVh9Rx32LBVqlBoXRHpNGPLiswV2qNe0b5p919IGcslzf1XoUzfE3a3yjk/XbWh/59xnl4V7Oe7+iQheFxOT6rFA30WYwEygs5As//ZYtxvnn0gA02gOnXJsNjOW9irlxOUeP7IOU6Ye3WRKFRR0+7PS+w8IJLag2xb makefu@pornocauster
+ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQC7df1RfMGNHPJe0iF6rD9DBs/4VujN6nNr7RbRCFk7HF/JzLXSn9Vcwk+3JefP4/d/bUo0h03rhQaRohDhBScrJidj2YacF6gmZOuTf3AMWprdz9D/1dDkN/ytwzGhADhqbHEWeomIllsa8Up4PvEeDcIHJGzYvuc0BbGqRk0XgxwqIrLAhdpTfEKaTbt7IzmUqEofxThTZ/4k020PKn2WDBWKQYGZJ9Ba2WzlKUXWx842ncW29oxC2faRz4M3eMPy0JMpBLkK9U3dccE75dgT/89/4ofVjM7+J3FOP3dgXzrtk+A5aN5a/veJUViQ9xdGxXvoa++iCr5q/BVRv0Bb sammy@muhbaasu.de
+ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDOIRWLC4ESCDxjyoJUqaUNC8ZDiE4UICZk3cbDptdtendTQvjSXz0RW6MWhJ+F6wWZntL1EibKn8djax1tzgcvNASCUEtGey/850IzBIrETs+WQDRjV2QqBKWxVaQPIFjw2V3vFSKKNxq01qznVBY510DIf4+0WR8b1ZPD/XbuyQLGYM3N7dP4JQSnnNAgtyutBKdomWfT18hW1lLjkP8h1IOiC03HxXTYX+nMUiLDff3D5GT5u3Ke2+VigXjz4Ue8rVsOg/zgqrwEAfx8o1q83uSB23oqUqWkqlxOC/4QY5kpdNqW/Iz89zHibp5ZceHd2ZSoGefv7UZM0lRIDHjJ retiolum@ire
+ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQC3+2vSwiJoIpHpnkw4SslPrlR6/z43nZ7s1tGXkkNnVDB2uzxMaISNRjSk0GgXpDx4hLEi6074hSvv5JWbUuMyKr9n6GVVeYNCjsiPcRkL3d7zDwFwqyndhVeWgmpuylYx4XKIbTvpBVyG3CRT1+D4apVUgiDa9lVfjBk7/ESxBzt0dXtlJEzQBBoCo0C8jeeIpvZKbq1zeM9wvLsgFaT7fsSxrg5BEb/tQl6pbkykWFXbzzd91liEQaSqai7Ux2355ZXGANQBCTglKhdTcir0RuHNtQGrZHBxL9qVfJjJJNZg1b6UAhDanqE/HyOI3sp6LGBvpW5afLKOdj9ppQQN retiolum@nomic
+ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAQEAp83zynhIueJJsWlSEykVSBrrgBFKq38+vT8bRfa+csqyjZBl2SQFuCPo+Qbh49mwchpZRshBa9jQEIGqmXxv/PYdfBFQuOFgyUq9ZcTZUXqeynicg/SyOYFW86iiqYralIAkuGPfQ4howLPVyjTZtWeEeeEttom6p6LMY5Aumjz2em0FG0n9rRFY2fBzrdYAgk9C0N6ojCs/Gzknk9SGntA96MDqHJ1HXWFMfmwOLCnxtE5TY30MqSmkrJb7Fsejwjoqoe9Y/mCaR0LpG2cStC1+37GbHJNH0caCMaQCX8qdfgMVbWTVeFWtV6aWOaRgwLrPDYn4cHWQJqTfhtPrNQ== death@uriel
diff --git a/services/bin/obsolete/copy-services b/services/bin/obsolete/copy-services
new file mode 100755
index 00000000..381d39a3
--- /dev/null
+++ b/services/bin/obsolete/copy-services
@@ -0,0 +1,34 @@
+#!/bin/bash
+
+set -euf
+cd $(dirname $(readlink -f $0))
+usage(){
+ cat <<EOF
+usage: $0 [pubkey-file] [bootstrap-file]
+ if pubkey-file is "" it will be skipped.
+
+ e.g.:
+ $0 "" ../path/to/other/bootstrap
+EOF
+
+}
+pubfile=${1:-}
+bootfile=${2:-../etc/services/bootstrap}
+outdir=$PWD/out
+mkdir -p "$outdir"
+for i in `cat $bootfile`; do
+ # retard uriparsing but good enough for our use case
+ netloc=${i##*//}
+ host=${netloc%%:*}
+ port=${netloc##*:}
+ [ "$port" == "$host" ] && port=1337
+
+ pubarg="${pubfile:+-i $pubfile}"
+ #printf ""
+ cat >$outdir/$host <<EOF
+$(ssh ${pubarg} "services@$host" -p "$port" -o PasswordAuthentication=no
+ 2>/dev/null||: )
+EOF
+ #printf ""
+done
+
diff --git a/services/bin/services b/services/bin/services
new file mode 100755
index 00000000..aa65e81e
--- /dev/null
+++ b/services/bin/services
@@ -0,0 +1,40 @@
+#! /bin/sh
+# usage: services [user@]hostname[:port]
+# environment:
+# services_identity_file path to ssh(1) identity_file
+set -euf
+
+user=services
+hostname=${1-localhost}
+port=1337
+
+options="${options+$options }-o ControlMaster=no"
+
+if test -n "${services_identity_file-}"; then
+ options="${options+$options }-i $services_identity_file"
+fi
+
+if echo $hostname | grep -q @; then
+ user=`echo $hostname | cut -d@ -f1`
+ hostname=`echo $hostname | cut -d@ -f2`
+fi
+if echo $hostname | grep -q :; then
+ port=`echo $hostname | cut -d: -f2`
+ hostname=`echo $hostname | cut -d: -f1`
+fi
+
+exec 3>&1
+{
+ set +e
+ ssh -T $options $user@$hostname -p $port
+ echo "# Exit:$?" >&2
+} 2>&1 1>&3 | {
+ err="`cat`"
+ code=`echo "$err" | sed -n 's/^# Exit:\([0-9]\+\)/\1/p'`
+ echo "$err" | sed '
+ /^Connection to '$hostname' closed/d
+ /^Shared connection to '$hostname' closed/d
+ /^# Exit:/d
+ ' >&2
+ exit $code
+}
diff --git a/services/bin/show-services b/services/bin/show-services
new file mode 100755
index 00000000..e94eb7c8
--- /dev/null
+++ b/services/bin/show-services
@@ -0,0 +1,31 @@
+#!/bin/bash
+
+set -euf
+cd $(dirname $(readlink -f $0))
+usage(){
+ cat <<EOF
+usage: $0 [pubkey-file] [bootstrap-file]
+ if pubkey-file is "" it will be skipped.
+
+ e.g.:
+ $0 "" ../path/to/other/bootstrap
+EOF
+
+}
+pubfile=${1:-}
+bootfile=${2:-../etc/services/bootstrap}
+
+for i in `cat $bootfile`; do
+ # retard uriparsing but good enough for our use case
+ netloc=${i##*//}
+ host=${netloc%%:*}
+ port=${netloc##*:}
+ [ "$port" == "$host" ] && port=1337
+ echo $netloc
+ pubarg="${pubfile:+-i $pubfile}"
+ printf ""
+ ssh ${pubarg} "services@$host" -p "$port" \
+ -o PasswordAuthentication=no 2>/dev/null||:
+ printf ""
+done
+
diff --git a/services/bin/sync-host-to-services b/services/bin/sync-host-to-services
new file mode 100755
index 00000000..526bc569
--- /dev/null
+++ b/services/bin/sync-host-to-services
@@ -0,0 +1,15 @@
+#!/bin/sh
+green='\e[0;32m'
+red='\e[0;31m'
+nc='\e[0m'
+
+outdir=${1?please provide services-outdir}
+find ../../retiolum/hosts -type f | while read hostfile;do
+ host=$(basename "$hostfile")
+ if test -e "$outdir/$host";then
+ printf "${green}$host already exists$nc\n"
+ else
+ printf "${red}$host missing, adding${nc}\n"
+ cat ../services.txt | sed "s#{{hostname}}#$host#" > $outdir/$host
+ fi
+done
diff --git a/services/bin/update-services-pubkeys b/services/bin/update-services-pubkeys
new file mode 100755
index 00000000..9936c402
--- /dev/null
+++ b/services/bin/update-services-pubkeys
@@ -0,0 +1,3 @@
+#!/bin/sh
+KREBS_ROOT="${KREBS_ROOT:-/krebs}"
+ssh $1 -t "cd ${KREBS_ROOT};git pull origin master;sudo -u services make -C $KREBS_ROOT/services ssh_authorized_keys"
diff --git a/services/checkers.py b/services/checkers.py
new file mode 100644
index 00000000..dbfe1323
--- /dev/null
+++ b/services/checkers.py
@@ -0,0 +1,25 @@
+
+import base64, binascii
+from twisted.python.filepath import FilePath
+from twisted.conch.checkers import SSHPublicKeyDatabase
+
+
+class PublicKeyChecker(SSHPublicKeyDatabase):
+
+ def __init__(self, filename):
+ self.filepath = FilePath(filename)
+
+ def getAuthorizedKeysFiles(self, credentials):
+ return [self.filepath]
+
+ def checkKey(self, credentials):
+ for line in self.filepath.open():
+ parts = line.split()
+ if len(parts) < 2:
+ continue
+ try:
+ if base64.decodestring(parts[1]) == credentials.blob:
+ return True
+ except binascii.Error:
+ continue
+ return False
diff --git a/services/etc/conf.d/krebs-services-test-server b/services/etc/conf.d/krebs-services-test-server
new file mode 100644
index 00000000..243054f4
--- /dev/null
+++ b/services/etc/conf.d/krebs-services-test-server
@@ -0,0 +1,3 @@
+authorized_keys_file=/krebs/services/authorized_keys
+services_file=/opt/services/services.txt
+host_key_file=/opt/services/test.key
diff --git a/services/etc/services/bootstrap b/services/etc/services/bootstrap
new file mode 100644
index 00000000..7dd9976c
--- /dev/null
+++ b/services/etc/services/bootstrap
@@ -0,0 +1,13 @@
+services://destroy
+services://ire
+services://darth:22
+services://pigstarter:22
+services://incept:22
+services://rage:22
+services://devstar:22
+services://heidi:22
+services://geisha:22
+services://slowpoke:22
+services://omo:22
+services://pico:22
+services://cband:22
diff --git a/services/etc/systemd/system/krebs-services-test-server.service b/services/etc/systemd/system/krebs-services-test-server.service
new file mode 100644
index 00000000..99578cce
--- /dev/null
+++ b/services/etc/systemd/system/krebs-services-test-server.service
@@ -0,0 +1,14 @@
+[Unit]
+Description=services: provider
+After=network.target
+
+[Service]
+EnvironmentFile=/etc/conf.d/krebs-services-test-server
+ExecStart=/krebs/services/test-server.py
+KillMode=process
+User=services
+Group=services
+Restart=no
+
+[Install]
+WantedBy=multi-user.target
diff --git a/services/lib/filter b/services/lib/filter
new file mode 100755
index 00000000..f69a5b0d
--- /dev/null
+++ b/services/lib/filter
@@ -0,0 +1,54 @@
+#! /bin/sh
+#
+# usage:
+# export PATH="//services/lib:$PATH"
+# cd services
+# ls | filter owner == $LOGNAME | filter hasnt mail
+#
+set -euf
+
+main() {
+ case $# in
+ 2) op1 "$@";;
+ 3) op2 "$@";;
+ *) echo 'You are made of stupid!' >&2; exit 23;;
+ esac
+}
+
+# op1 OP SCHEMA
+op1() {
+ case "$1" in
+ has)
+ xargs grep -H "^$2:" \
+ | cut -d: -f1
+ ;;
+ hasnt)
+ a=$(mktemp)
+ b=$(mktemp)
+ trap "rm $a $b; trap - EXIT INT QUIT" EXIT INT QUIT
+ cat > $a
+ cat $a | xargs grep -H "^$2:" | cut -d: -f1 > $b
+ diff -u $b $a | sed -n '/^++/d;s/^+\(.*\)/\1/p' | grep .
+ esac
+}
+
+# op2 SCHEMA OP RHS
+op2() {
+ case "$2" in
+ ==|is)
+ xargs grep -H "^$1:$3$" \
+ | cut -d: -f1
+ ;;
+ !=|isnt)
+ xargs grep -H "^$1:" \
+ | grep -v ":$1:$3" \
+ | cut -d: -f1
+ ;;
+ contains)
+ xargs grep -H "^$1:.*$3.*$" \
+ | cut -d: -f1
+ ;;
+ esac
+}
+
+main "$@"
diff --git a/services/services.txt b/services/services.txt
new file mode 100644
index 00000000..ad9efde6
--- /dev/null
+++ b/services/services.txt
@@ -0,0 +1,6 @@
+owner:
+type:
+mail:
+expires:
+location:
+tinc://{{hostname}}
diff --git a/services/test-server.py b/services/test-server.py
new file mode 100755
index 00000000..176373cf
--- /dev/null
+++ b/services/test-server.py
@@ -0,0 +1,113 @@
+#! /usr/bin/env python2
+
+from os import environ as env
+
+authorized_keys_file = env.get('authorized_keys_file', '/dev/null')
+debug_log = env.get('debug_log', 'false')
+services_file = env.get('services_file', '/dev/null')
+host_key_file = env.get('host_key_file', '/dev/null')
+host_key_pub_file = host_key_file + '.pub'
+
+
+from checkers import PublicKeyChecker
+from twisted.conch.avatar import ConchUser
+from twisted.conch.ssh.connection import SSHConnection
+from twisted.conch.ssh.factory import SSHFactory
+from twisted.conch.ssh.keys import Key
+from twisted.conch.ssh.session import SSHSession, ISession, wrapProtocol
+from twisted.conch.ssh.userauth import SSHUserAuthServer
+from twisted.cred.error import UnauthorizedLogin
+from twisted.cred.portal import IRealm, Portal
+from twisted.internet.protocol import Protocol
+from twisted.internet.reactor import listenTCP, run
+from twisted.internet.error import ProcessTerminated
+from twisted.python.components import registerAdapter
+from twisted.python.failure import Failure
+from zope.interface import implements
+
+if debug_log == 'true':
+ from twisted.python.log import startLogging
+ from sys import stderr
+ startLogging(stderr)
+
+
+class MyRealm:
+ implements(IRealm)
+
+ def requestAvatar(self, avatarId, mind, *interfaces):
+ return interfaces[0], MyUser(), lambda: None
+
+
+class MyUser(ConchUser):
+ def __init__(self):
+ ConchUser.__init__(self)
+ self.channelLookup.update({ 'session': SSHSession })
+
+
+class MySession:
+
+ def __init__(self, avatar):
+ pass
+
+ def getPty(self, term, windowSize, attrs):
+ pass
+
+ def execCommand(self, proto, cmd):
+ raise Exception("no executing commands")
+
+ def openShell(self, trans):
+ ep = MyProtocol()
+ ep.makeConnection(trans)
+ trans.makeConnection(wrapProtocol(ep))
+
+ def eofReceived(self):
+ pass
+
+ def closed(self):
+ pass
+
+
+registerAdapter(MySession, MyUser, ISession)
+
+
+def slurpTextfile(filename):
+ file = open(filename, 'r')
+ try:
+ return file.read()
+ finally:
+ file.close()
+
+class MyProtocol(Protocol):
+ def connectionMade(self):
+ data = slurpTextfile(services_file).replace('\n', '\r\n')
+ self.transport.write(data)
+ self.transport.processEnded(Failure(ProcessTerminated(0, None, None)))
+ self.transport.loseConnection()
+
+ #def dataReceived(self, data):
+ # if data == '\r':
+ # data = '\r\n'
+ # elif data == '\x03': #^C
+ # self.transport.loseConnection()
+ # return
+ # self.transport.write(data)
+
+
+class MyFactory(SSHFactory):
+ privateKeys = {
+ 'ssh-rsa': Key.fromFile(filename=host_key_file)
+ }
+ publicKeys = {
+ 'ssh-rsa': Key.fromFile(filename=host_key_pub_file)
+ }
+ services = {
+ 'ssh-userauth': SSHUserAuthServer,
+ 'ssh-connection': SSHConnection
+ }
+
+if __name__ == '__main__':
+ portal = Portal(MyRealm())
+ portal.registerChecker(PublicKeyChecker(authorized_keys_file))
+ MyFactory.portal = portal
+ listenTCP(1337, MyFactory())
+ run()
diff --git a/ship/.gitignore b/ship/.gitignore
new file mode 100644
index 00000000..89f9ac04
--- /dev/null
+++ b/ship/.gitignore
@@ -0,0 +1 @@
+out/
diff --git a/ship/Makefile b/ship/Makefile
new file mode 100644
index 00000000..4805613d
--- /dev/null
+++ b/ship/Makefile
@@ -0,0 +1,56 @@
+exesrcdir := src
+libsrcdir := lib
+tmpoutdir := tmp
+finoutdir := ../bin
+
+exesrcs := $(notdir $(wildcard $(exesrcdir)/*))
+exetmpouts := $(addprefix $(tmpoutdir)/,$(exesrcs))
+exefinouts := $(addprefix $(finoutdir)/,$(exesrcs))
+
+build := BUILD_PATH=$(libsrcdir) ./build
+
+.PHONY: all install clean distclean
+
+all: $(exetmpouts)
+
+install: $(exefinouts)
+
+clean:
+ rm -f $(exetmpouts)
+
+distclean: clean
+ rm -f $(exefinouts)
+
+define buildrule
+$(tmpoutdir)/$(1): $(exesrcdir)/$(1) $(shell $(build) deps $(exesrcdir)/$(1))
+ $(build) compile $$< $$@
+endef
+
+$(foreach exe, $(exesrcs), $(eval $(call buildrule,$(exe))))
+
+$(finoutdir)/%: $(tmpoutdir)/%
+ cp $< $@
+
+test:
+ @export PATH="$(CURDIR)/bin:$(PATH)"; \
+ tests="`find t -type f -executable`"; \
+ i=1; \
+ pids="";\
+ n=`echo "$$tests" | wc -l`; \
+ echo $$i..$$n; \
+ for exe in $$tests; do \
+ { \
+ ./$$exe; \
+ ret=$$?; \
+ case $$ret in 0) result=ok;; *) result='not ok';; esac; \
+ echo $$result $$i - $$exe; \
+ exit $$ret;\
+ } & \
+ pids="$${pids} $$!" \
+ i=$$(( i+1 )); \
+ done; \
+ ret=0;\
+ for pid in $$pids; do \
+ wait $$pid || ret=23;\
+ done; \
+ exit $$ret;
diff --git a/ship/README.markdown b/ship/README.markdown
new file mode 100644
index 00000000..a84f542c
--- /dev/null
+++ b/ship/README.markdown
@@ -0,0 +1,54 @@
+# ship - shellscript installation processor
+
+ This utility is used to build modular shell scripts using recursive macro
+ expansion.
+
+## Quickstart Guide
+
+ BUILD_PATH=libs ./build compile INPUTFILE OUTPUTFILE
+
+ If this doesn't make science to you, then prepend `debug=true` to get all
+ the intermediate files printed to stdout.
+
+## Make Interface
+
+ Put libraries into `lib`.
+ Put executables into `src`.
+
+ Build all executables from `src` into `tmp` with
+
+ make [all]
+
+ Build all executables from `src` into `tmp` and `//bin` with
+
+ make install
+
+ Undo `make [all]` with
+
+ make clean
+
+ Undo `make install` with
+
+ make distclean
+
+## Macro Development
+
+ To define a new macro, you have to add a function like
+
+ ## usage: BRE -> FUNCTION_NAME \1 [\2 ...]
+
+ where `BRE` is a basic regular expression, that has to match a whole
+ line. `FUNCTION_NAME` should be the name of a function that outputs
+ a `sed` script. `\1` refers to the line number, where the macro is
+ used and `\2 ...` are the backreferences into `BRE`. E.g.
+
+ ## usage: #@date \([.*]\) -> build_datemacro \1 \2
+ build_datemacro() {
+ printf '%da\\\n%s\n' "$1" "$(date +"$2")"
+ }
+
+ Like in this example, the line number `\1`, which gets mapped to `$1`,
+ is usually used to only change the line, where the macro got called.
+ The second argument gets passed as format specifier to `date`.
+
+ Further examples can be found in `./build`.
diff --git a/ship/TODO b/ship/TODO
new file mode 100644
index 00000000..7c2fe73f
--- /dev/null
+++ b/ship/TODO
@@ -0,0 +1,2 @@
+- refresh-supers: somehow test if a real tinc connection is possible to new
+ given supernodes
diff --git a/ship/build b/ship/build
new file mode 100755
index 00000000..0e8e1013
--- /dev/null
+++ b/ship/build
@@ -0,0 +1,210 @@
+#! /bin/sh
+set -euf
+
+## SYNOPSIS
+# [debug=true] build compile SRCFILE DSTFILE
+# [debug=true] build deps SRCFILE...
+build() {
+
+ ## Load macro definitions.
+ defmacro_pattern='## usage: \(.*\) -> \([^ ]\+\) \(.*\)'
+ script='s/^'"$defmacro_pattern"'$/\2_macro='"'"'\1'"'"'/p' \
+ setf defmacros '$(sed -n "$script" "$%s")' 0
+ eval "$defmacros"
+
+ ## Dispatch.
+ case "$1" in
+ compile) build_compile "$2" "$3";;
+ deps) shift; build_deps "$@";;
+ *) echo "build: $1: bad command" >&2; return 23;;
+ esac
+}
+
+###
+### macros
+###
+
+## usage: #@include \([0-9A-Za-z_]\+\) -> build_include \1 \2
+build_include() {
+ if buildcache_has "#@include:$2"; then
+ printf '%da\\\n##include %s: already done\n' $1 $2
+ else
+ buildcache_add "#@include:$2"
+ cat<<EOF
+$1a\\
+# begin $2
+$1r$(build_resolve $2)
+$1a\\
+# end $2
+EOF
+ fi
+}
+
+## usage: #@strict -> build_strict_mode \1
+build_strict_mode() { cat<<EOF
+$1a\\
+set -euf\\
+(set -o posix 2>/dev/null) && set -o posix || :
+EOF
+}
+
+## usage: #@info -> build_info \1
+build_info() {
+ gitinfo=$(git describe --always --dirty --abbrev=0 2>/dev/null || :)
+cat<<EOF
+$1a\\
+# this file was generated by //ship/build\\
+# build date: $(date -u --rfc-3339=s)\\
+# git describe: ${gitinfo:-not under version control}
+EOF
+}
+
+## usage: #@mainifyme\( \([A-Za-z_][A-Za-z0-9_]*\)\)\? -> build_mainifyme \1 \3
+build_mainifyme() {
+ mainifyme_name="${2:-main}"
+ cat<<EOF
+ $1a\\
+$mainifyme_name(){
+ \$a\\
+}\\
+$mainifyme_name "\$@"
+EOF
+}
+
+###
+### main subroutines
+###
+
+## usage: build_compile SRCFILE DSTFILE
+build_compile() {
+
+ script='s/^'"$defmacro_pattern"'$/\2_macro/p' \
+ setf macro_names '$(sed -n "$script" "$%s")' 0
+
+ setf unexpanded_macros_pattern \
+ '$(make_unexpanded_macros_pattern $%s)' macro_names
+
+ script='
+ s/^'"$defmacro_pattern"'$/s:^ *\\([0-9]\\+\\) \1$:\2 \3:/p
+ $a\
+t;s:^ *\\([0-9]\\+\\) .*:echo \\1p:
+ ' \
+ setf input_parser '$(sed -n "$script" "$%s")' 0
+
+ SRCFILE="$1" setf src '$(cat "$%s")' SRCFILE
+
+ buildcache_initialize "$2"
+
+ while echo "$src" | grep -q "$unexpanded_macros_pattern"; do
+ setf sedgen '$(echo "$%s" | nl -b a -s \ | sed "$%s")' src input_parser
+ setf sedscript '$(eval "$%s")' sedgen
+ setf src '$(echo "$%s" | sed -n "$%s")' src sedscript
+ done
+
+ buildcache_finalize
+
+ echo "$src" > "$2"
+ chmod +x "$2"
+}
+
+## usage: build_deps SRCFILE...
+# Print all the dependencies of SRCFILE... to stdout. (alphabetic order)
+build_deps() {
+ while test $# -gt 0; do
+ deps="$(
+ for f; do
+ for d in $(sed -n 's:^'"$build_include_macro"'$:\1:p' "$f"); do
+ build_resolve $d
+ done
+ done
+ )"
+ set -- $deps
+ if test $# -gt 0; then
+ echo "$deps"
+ fi
+ done | sort | uniq
+}
+
+###
+### misc utilities
+###
+
+## usage: build_resolve LIBNAME
+build_resolve() {
+ echo "$BUILD_PATH" | tr : \\n |
+ xargs -I: printf '%s/%s\n' : "$1" |
+ xargs -I: ls -d : 2>/dev/null |
+ head -n 1 |
+ grep . ||
+ {
+ echo "build resolve: $1: library not found" >&2
+ return 23
+ }
+}
+
+## usage: make_unexpanded_macros_pattern BUILD_DIRECTIVES...
+make_unexpanded_macros_pattern() {
+ echo "^\\($(
+ for macro; do
+ eval echo \"\$$macro\"
+ done |
+ tr \\n \| |
+ sed 's/|/\\|/'
+ )\\)$"
+}
+
+## usage: setf NAME FMT [ARG...]
+setf() {
+ value_script="$(shift; printf "$@")"
+
+ eval "$1=$value_script"
+
+ if is_debug_mode; then
+ eval 'echo "$1=\"$value_script\""'
+ eval 'echo "'"\$$1"'"' | nl -b a
+ fi >&2
+}
+
+## usage: is_debug_mode
+is_debug_mode() {
+ test "${debug-false}" = true
+}
+
+###
+### buildcache utilities
+###
+
+## usage: buildcache_initialize DESTFILE
+buildcache_initialize() {
+ buildcache="$1.buildcache"
+ cat /dev/null > "$buildcache"
+}
+
+## usage: buildcache_finalize
+buildcache_finalize() {
+ if is_debug_mode; then
+ rm "$buildcache"
+ fi
+}
+
+## usage: buildcache_has BRE
+# Check if buildcache contains a line matching BRE.
+buildcache_has() {
+ grep -q "^$1\$" "$buildcache"
+}
+
+## usage: buildcache_add LINE
+# Add LINE to buildcache.
+buildcache_add() {
+ echo "$1" >> "$buildcache"
+}
+
+
+
+###
+### main invocation
+###
+
+if echo "$0" | grep -q '^\(.*/\)\?build$'; then
+ build "$@"
+fi
diff --git a/ship/lib/_punani_db b/ship/lib/_punani_db
new file mode 100644
index 00000000..6f89029f
--- /dev/null
+++ b/ship/lib/_punani_db
@@ -0,0 +1,57 @@
+_punanidb_pacman_=
+_punanidb_yum_=
+_punanidb_aptget_=
+
+_punanidb_pacman_git=git
+_punanidb_yum_git=git
+_punanidb_aptget_git=git-core
+
+_punanidb_pacman_python2=python2
+_punanidb_yum_python2=python
+_punanidb_aptget_python2=python
+
+_punanidb_pacman_python3=python
+_punanidb_aptget_python3=python3
+
+_punanidb_pacman_pip2=python2-pip
+_punanidb_aptget_pip2=python-pip
+
+_punanidb_pacman_virtualenv=python-virtualenv
+_punanidb_aptget_virtualenv=python-virtualenv
+
+_punanidb_pacman_gpp=gcc
+_punanidb_aptget_gpp=gcc
+
+_punanidb_pacman_python2_dev=python2
+_punanidb_aptget_python2_dev=python-dev
+
+_punanidb_pacman_hostname=inetutils
+_punanidb_aptget_hostname=hostname
+
+_punanidb_pacman_hostname=inetutils
+_punanidb_aptget_hostname=hostname
+
+_punanidb_pacman_make=make
+_punanidb_yum_make=make
+_punanidb_aptget_make=make
+
+_punanidb_pacman_tinc=tinc
+_punanidb_yum_tinc=tinc
+_punanidb_aptget_tinc=tinc
+
+_punanidb_pacman_zsh=zsh
+_punanidb_yum_zsh=zsh
+_punanidb_aptget_zsh=zsh
+
+_punanidb_pacman_tor=tor
+_punanidb_yum_tor=tor
+_punanidb_aptget_tor=tor
+
+_punanidb_pacman_nano=nano
+_punanidb_yum_nano=nano
+_punanidb_aptget_nano=nano
+
+_punanidb_pacman_vim=vim
+_punanidb_yum_vim=vim-enhanced
+_punanidb_aptget_vim=vim
+
diff --git a/ship/lib/color b/ship/lib/color
new file mode 100644
index 00000000..cec2044e
--- /dev/null
+++ b/ship/lib/color
@@ -0,0 +1,7 @@
+# superseed logging with color
+green='\e[0;32m'
+red='\e[0;31m'
+nc='\e[0m'
+msg() { printf "$*\n" >&2; }
+info() { msg "$green$*$nc"; }
+error() { msg "$green$*$nc"; }
diff --git a/ship/lib/core b/ship/lib/core
new file mode 100644
index 00000000..0c321525
--- /dev/null
+++ b/ship/lib/core
@@ -0,0 +1,80 @@
+# logging
+msg() { echo "$*" >&2; }
+info() { msg "** $*"; }
+error() { msg "!! $*"; }
+## usage: die [REASON...]
+die() {
+ test $# -gt 0 && error "$*"
+ error 'Bailing out.'
+ exit 1
+}
+exists(){
+ type "$1" >/dev/null 2>/dev/null;
+}
+
+is_root(){
+ test $(id -u) -eq 0
+}
+
+defer(){
+ #close enough
+ trapstr="$1;${trapstr:-exit}"
+ trap "$trapstr" INT TERM EXIT KILL
+}
+
+esudo(){
+ # weaksauce esudo (expect sudo)
+ if ! is_root; then
+ # for the record:
+ # exec sudo -E "$0" "$@"
+ error "You are not root enough for this script"
+ exit 23 # go to hell
+ fi
+}
+
+get_hostname(){
+ # finds the current hostname
+ # if ENV HOSTN is set echo $HOSTN
+ # We try the following:
+ # $HOSTN
+ # $HOSTNAME
+ # hostname
+ # uci system.hostname
+ # /etc/hostname
+ # if everything fails, it returns 1 and prints 'unknown'
+
+ if [ -n "${HOSTN:-}" ] ; then printf "${HOSTN:-}"
+ elif [ -n "${HOSTNAME:-}" ] ;then printf "$HOSTNAME"
+ elif exists hostname ; then printf "$(hostname)"
+ elif exists uci ; then printf "$(uci get system.@system[0].hostname)"
+ elif [ -e /etc/hostname ] ;then printf "$(cat /etc/hostname)"
+ else printf "unknown"; return 1
+ fi
+ return 0
+}
+
+line_to_dot(){
+ while read line; do printf .; done;
+}
+
+get_os(){
+ # TODO: find all the release files
+ #if grep -q 'Linux' /etc/*release 2>/dev/null || grep -qe 'Linux' /etc/issue 2>/dev/null; then
+ if grep -q 'Linux' /etc/lsb-release 2>/dev/null || grep -q 'Linux' /etc/issue 2>/dev/null; then
+ echo 'linux'
+ elif test -e /etc/preferred-apps/google.xml; then
+ echo 'android'
+ elif test -e /etc/openwrt_release; then
+ echo 'openwrt'
+ elif uname -s | grep -qi 'darwin'; then
+ echo 'osx'
+ else
+ warn "Cannot determine your operating system, falling back to Linux"
+ echo 'linux'
+ fi
+}
+
+# user management
+has_user(){
+ egrep "^$1:" /etc/passwd >/dev/null
+}
diff --git a/ship/lib/filehooker b/ship/lib/filehooker
new file mode 100644
index 00000000..72be751a
--- /dev/null
+++ b/ship/lib/filehooker
@@ -0,0 +1,117 @@
+#@include core
+#@include network
+ncdc_user=${ncdc_user:-hooker}
+ncdc_bin=${ncdc_bin:-/usr/bin/ncdc}
+
+ncdc_config(){
+ # maybe we want to use the running ncdc process and communicate via tmux send-keys ?
+ (sleep 1;cat;printf "/quit\n") | sudo -u $ncdc_user "$ncdc_bin"
+}
+
+ncdc_configure_netshare(){
+ : "${1?provide path to share}"
+ rnd=`hexdump -n 2 -e '/2 "%u"' /dev/urandom`
+ rnd_name="${2:-share_$rnd}"
+ info "adding share"
+ (echo "/share $rnd_name $1") | ncdc_config
+}
+
+ncdc_configure_nick(){
+ nick=${1?nick must be provided}
+ info "configuring DC Nick: $nick"
+ echo "/nick $nick" | ncdc_config
+}
+ncdc_configure_hub(){
+ rnd=`hexdump -n 2 -e '/2 "%u"' /dev/urandom`
+ hubname="hub_$rnd"
+ hub=${1?adcs://localhost:2781}
+ info "configuring DC Hub: $hub, activating autconnect"
+ info "setting active as true"
+ (echo "/open ${hubname} ${hub}" ;
+ echo "/hset autoconnect true") | ncdc_config
+}
+
+ncdc_download(){
+install_dir="$(dirname "${ncdc_bin}")"
+info "installing ncdc to $install_dir"
+curl http://dev.yorhel.nl/download/ncdc-linux-x86_64-1.19.tar.gz | tar xz -C "$install_dir"
+}
+ncdc_install(){
+useradd -m $ncdc_user ||:
+}
+
+ncdc_autostart(){
+# only systemd
+# punani install tmux
+cat > /etc/systemd/system/ncdc@.service <<EOF
+[Unit]
+Description=ncdc
+Requires=network.target local-fs.target
+
+[Service]
+Type=oneshot
+RemainAfterExit=yes
+KillMode=none
+User=%I
+ExecStart=/usr/bin/tmux new-session -s dcpp -n ncdc -d ncdc
+ExecStop=/usr/bin/tmux send-keys -t dcpp:ncdc "/quit" C-m
+
+[Install]
+WantedBy=multi-user.target
+EOF
+systemctl enable ncdc@$ncdc_user
+}
+
+# 20gig in bytes
+min_netshare_size=${min_netshare_size:-20000000000}
+get_disksize(){
+fdisk -l ${1?provide disk} | grep '^Disk ' | cut -d\ -f 5
+}
+
+prepare_netshares(){
+ count=0
+ fdisk -l | grep '^Disk ' | egrep '(/dev/sd|/dev/hd)' | cut -d\ -f 2 | tr -d : | while read disk;do
+ size=$(get_disksize $disk)
+ if test "$size" -gt "$min_netshare_size";
+ then
+ info "using $disk with $size bytes"
+ dd if=/dev/zero of=$disk bs=1M count=1 >/dev/null
+ sleep 1
+ (printf "o\nn\np\n\n\n\nw\n\n") |fdisk $disk >/dev/null ||:
+ #partprobe $disk
+ mkfs.btrfs -f ${disk}1 >/dev/null
+ uuid="$(blkid ${disk}1 -o value | head -n 1)"
+ mountpoint="/media/vag${count}"
+ mkdir -p "$mountpoint"
+ echo "UUID=$uuid $mountpoint btrfs rw,relatime,space_cache 0 0" >> /etc/fstab
+ echo "$mountpoint"
+ : $((count++))
+ else
+ info "skipping $disk"
+ fi
+ done
+}
+install_tor_announce(){
+# systemd only
+info "writing tor_announce.service"
+cat > /etc/systemd/system/tor_announce.service<<EOF
+[Unit]
+Description=Announce Tor Hidden Address
+After=network.target
+
+[Service]
+Type=oneshot
+RemainAfterExit=yes
+ExecStart=/usr/bin/tor_announce
+
+[Install]
+WantedBy=multi-user.target
+EOF
+info "writing tor_announce to /usr/bin/tor_announce"
+printf '#!/bin/sh\nsleep 20\n' > /usr/bin/tor_announce
+http_get conf.krebsco.de/tor_publish_ssh >> /usr/bin/tor_announce
+chmod +x /usr/bin/tor_announce
+info "enable tor_announce"
+systemctl enable tor_announce
+#systemctl start tor_announce
+}
diff --git a/ship/lib/iso b/ship/lib/iso
new file mode 100644
index 00000000..0776d796
--- /dev/null
+++ b/ship/lib/iso
@@ -0,0 +1,7 @@
+get_volid(){
+ #returns the volume id of the iso given
+ # is needed for remastering the archlinux iso
+
+ #punani install genisoimage
+ isoinfo -d -i "${1?path to iso must be given}" | grep "^Volume id:" | cut -d: -f 2 |xargs
+}
diff --git a/ship/lib/krebs b/ship/lib/krebs
new file mode 100644
index 00000000..e47031d6
--- /dev/null
+++ b/ship/lib/krebs
@@ -0,0 +1,16 @@
+#@include core
+krebs_pubkeys="ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQC7YrLdnXDRU2XEdZDu1BmgiT0Vaxplf3bfvSm+5o3g4AcR2yCv7h2D633c9uA0gq52EJ3V5m8B1ZcxqA0zqDptKwx+ZTMUGDls7StH5xpJyk9j5gf8DzyDLQPQG2IYszCH+8esKjo3BOFxfey8NaX+k6gvQsG3lyV0PjLvvIy4gDuMn6dPZfVAlwNYFOUNgwpku3W3A0d+UFyVjt3/sgZxM+8C3y6QE1gwT5/NfBbHM5vaEqjHcVq1ui+7a4iOXFGKkZDcd7EX6cQZSbCzZL7sZ0OmB1WpAsDCvIXfzX1YfNA0sso7ldSF6ZUGNgwEk1LootnQlCK/dfbM+i62SZ+1 tv@iiso
+ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQCv9TTt4FkzT3jlQ0VS2tX/GpQO9Ef0wIQ+g96foe4qSniBwR667T1gIhURrod/p7N9oQcWRrNohjgmSBZRYA0kW6ZyqYJkLvRv54nXv6j/8Xq2nG/KVfDqL0kp8if+JGeFlQElpWJiAbGifYkopFy69QiLYU2ndR7aPbx+5qm/dcwPJ7K+n6dyePynCZadtcabm3PuBFUxGLdT9ImDXMOPfXxPMlN/3eb78byuEuHnhCIvIGLMBGx+8QTXvu7kHpZObvkbsF1xjVs9fDpwVLjh7GWdwf3BZ/agFlI24ffyqCPFnuaxUVyfUZeqf4twRsIZkTTB47lHDhYiVkyGe8gd root@pigstarter.de
+ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQCl3RTOHd5DLiVeUbUr/GSiKoRWknXQnbkIf+uNiFO+XxiqZVojPlumQUVhasY8UzDzj9tSDruUKXpjut50FhIO5UFAgsBeMJyoZbgY/+R+QKU00Q19+IiUtxeFol/9dCO+F4o937MC0OpAC10LbOXN/9SYIXueYk3pJxIycXwUqhYmyEqtDdVh9Rx32LBVqlBoXRHpNGPLiswV2qNe0b5p919IGcslzf1XoUzfE3a3yjk/XbWh/59xnl4V7Oe7+iQheFxOT6rFA30WYwEygs5As//ZYtxvnn0gA02gOnXJsNjOW9irlxOUeP7IOU6Ye3WRKFRR0+7PS+w8IJLag2xb makefu@pornocauster
+ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQC7df1RfMGNHPJe0iF6rD9DBs/4VujN6nNr7RbRCFk7HF/JzLXSn9Vcwk+3JefP4/d/bUo0h03rhQaRohDhBScrJidj2YacF6gmZOuTf3AMWprdz9D/1dDkN/ytwzGhADhqbHEWeomIllsa8Up4PvEeDcIHJGzYvuc0BbGqRk0XgxwqIrLAhdpTfEKaTbt7IzmUqEofxThTZ/4k020PKn2WDBWKQYGZJ9Ba2WzlKUXWx842ncW29oxC2faRz4M3eMPy0JMpBLkK9U3dccE75dgT/89/4ofVjM7+J3FOP3dgXzrtk+A5aN5a/veJUViQ9xdGxXvoa++iCr5q/BVRv0Bb sammy@muhbaasu.de
+ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDOIRWLC4ESCDxjyoJUqaUNC8ZDiE4UICZk3cbDptdtendTQvjSXz0RW6MWhJ+F6wWZntL1EibKn8djax1tzgcvNASCUEtGey/850IzBIrETs+WQDRjV2QqBKWxVaQPIFjw2V3vFSKKNxq01qznVBY510DIf4+0WR8b1ZPD/XbuyQLGYM3N7dP4JQSnnNAgtyutBKdomWfT18hW1lLjkP8h1IOiC03HxXTYX+nMUiLDff3D5GT5u3Ke2+VigXjz4Ue8rVsOg/zgqrwEAfx8o1q83uSB23oqUqWkqlxOC/4QY5kpdNqW/Iz89zHibp5ZceHd2ZSoGefv7UZM0lRIDHjJ retiolum@ire
+ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQC3+2vSwiJoIpHpnkw4SslPrlR6/z43nZ7s1tGXkkNnVDB2uzxMaISNRjSk0GgXpDx4hLEi6074hSvv5JWbUuMyKr9n6GVVeYNCjsiPcRkL3d7zDwFwqyndhVeWgmpuylYx4XKIbTvpBVyG3CRT1+D4apVUgiDa9lVfjBk7/ESxBzt0dXtlJEzQBBoCo0C8jeeIpvZKbq1zeM9wvLsgFaT7fsSxrg5BEb/tQl6pbkykWFXbzzd91liEQaSqai7Ux2355ZXGANQBCTglKhdTcir0RuHNtQGrZHBxL9qVfJjJJNZg1b6UAhDanqE/HyOI3sp6LGBvpW5afLKOdj9ppQQN retiolum@nomic
+ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAQEAp83zynhIueJJsWlSEykVSBrrgBFKq38+vT8bRfa+csqyjZBl2SQFuCPo+Qbh49mwchpZRshBa9jQEIGqmXxv/PYdfBFQuOFgyUq9ZcTZUXqeynicg/SyOYFW86iiqYralIAkuGPfQ4howLPVyjTZtWeEeeEttom6p6LMY5Aumjz2em0FG0n9rRFY2fBzrdYAgk9C0N6ojCs/Gzknk9SGntA96MDqHJ1HXWFMfmwOLCnxtE5TY30MqSmkrJb7Fsejwjoqoe9Y/mCaR0LpG2cStC1+37GbHJNH0caCMaQCX8qdfgMVbWTVeFWtV6aWOaRgwLrPDYn4cHWQJqTfhtPrNQ== death@uriel"
+
+authorized_keys_file="${authorized_keys:-$HOME/.ssh/authorized_keys}"
+deploy_krebs_pubkeys(){
+info "deploying pubkeys in $authorized_keys_file"
+mkdir -p "$(dirname "$authorized_keys_file")"
+printf "$krebs_pubkeys\n" >> "$authorized_keys_file"
+
+}
diff --git a/ship/lib/network b/ship/lib/network
new file mode 100644
index 00000000..6c8970a0
--- /dev/null
+++ b/ship/lib/network
@@ -0,0 +1,110 @@
+#@include core
+
+# TODO refactor this
+which_get_loader(){
+ if ! exists curl ; then
+ if ! exists wget ; then
+ warn "Please install curl or wget"
+ return 1
+ else
+ echo "wget -q -O-"
+ fi
+ else
+ echo "curl -L -s"
+ fi
+ return 0
+}
+
+which_head_loader(){
+ if ! exists curl ; then
+ if ! exists wget ; then
+ warn "Please install curl or wget"
+ return 1
+ else
+ echo "wget -O- --spider -S -q"
+ fi
+ else
+ echo "curl -L -I -s"
+ fi
+ return 0
+}
+
+http_get(){
+ eval "$(which_get_loader)" "${1?please provide url}"
+}
+http_head(){
+ eval "$(which_head_loader)" "${1?please provide url}" 2>&1
+}
+
+internet(){
+ secret=$(http_get http://krebsco.de/secret 2>/dev/null)
+ if [ "$secret" = "1337" ]; then
+ return 0
+ else
+ echo "cannot load secret or secret incorrect" >&2
+ return 1
+ fi
+}
+
+which_telnet(){
+ # find Telnet or similar and executes it at the end
+ # requires exist
+ # if env TELNET is set, will be trying to run this
+ # Tries the following things:
+ # telnet
+ # nc
+ # netcat
+ # busybox telnet
+ if [ -e "${TELNET:-does_not_exist}" ]; then
+ info "Will be using $TELNET as Telnet Client"
+ echo $TELNET
+ elif exists telnet ;then
+ command -v telnet
+ elif exists nc ;then
+ command -v nc
+ elif exists netcat;then
+ command -v netcat
+ elif exists busybox;then
+ echo `command -v busybox` telnet
+ else
+ die 'Cannot find telnet binary, please install either telnet-client or busybox or netcat or provided TELNET environment.'
+ fi
+}
+
+run_telnet(){
+ host="$1"
+ port="$2"
+ $(which_telnet) "$host" "$port"
+}
+port_open(){
+ # $1 - host
+ # $2 - port
+ # nc -zw 2 $1 $2
+ echo | run_telnet "$1" "$2" & pid=$!
+ { sleep 5; kill $pid;} & wid=$!
+ wait $pid
+ RET=$?
+ kill $wid >/dev/null 2>&1
+ return $RET
+}
+
+send_irc(){
+ ## reads from stdin, writes to IRC
+ ##
+ ## requires func: exists() anytelnet()
+ if [ -z "${HOSTN:-}" ]; then
+ HOSTN="$(get_hostname)"
+ info "no HOSTN given, using $HOSTN instead"
+ fi
+ IRCCHANNEL=${IRCCHANNEL:-"#krebs_incoming"}
+ IRCSERVER=${IRCSERVER:-"irc.freenode.net"}
+ IRCPORT=${IRCPORT:-6667}
+ NICK="${HOSTN}_$(head /dev/urandom | tr -dc "0123456789" | head -c3)"
+ info "starting irc connect as $NICK"
+ ( echo "NICK $NICK";
+ echo "USER $NICK $IRCSERVER bla : $NICK";
+ echo "JOIN $IRCCHANNEL";
+ sleep 23;
+ while read line; do echo "PRIVMSG $IRCCHANNEL :$line";sleep 1;done
+ sleep 5; ) | run_telnet $IRCSERVER $IRCPORT 2>/dev/null
+}
diff --git a/ship/lib/punani b/ship/lib/punani
new file mode 100644
index 00000000..4338d19d
--- /dev/null
+++ b/ship/lib/punani
@@ -0,0 +1,99 @@
+#@include core
+#@include _punani_db
+
+## usage: punani_has PACKAGE
+punani_has() {
+ eval "_punani_${PACKER}_has \"\$1\""
+}
+
+## usage: punani_owner PACKAGE
+punani_owner() {
+ eval "_punani_${PACKER}_owner \"\$1\""
+}
+
+## usage: punani_install PACKAGE
+punani_install() {
+ eval "_punani_${PACKER}_install \"\$1\""
+}
+
+## usage: punani_remove PACKAGE
+punani_remove() {
+ eval "_punani_${PACKER}_remove \"\$1\""
+}
+
+## usage: _punani_resolve_package PKGNAME
+_punani_resolve_package(){
+ eval "set -u; echo \"\${_punanidb_${PACKER}_$1}\"" 2>/dev/null
+}
+
+## usage: _punani_select_packer
+_punani_select_packer() {
+ for p in ${_punani_known_packers:-null}; do
+ exists $p && info "using $p" && PACKER=`echo $p | tr -d -` && break
+ done
+}
+_punani_known_packers='pacman apt-get yum brew'
+_punani_pacman_install(){ pacman --noconfirm -S --needed "$@" ;}
+_punani_pacman_remove(){ pacman --noconfirm -Rcs "$@" ;}
+_punani_pacman_has(){ pacman -Q "$1" >/dev/null;}
+_punani_pacman_owner() { pacman -Qo "$1"; }
+_punani_aptget_install(){ apt-get -y install "$@" ;}
+_punani_aptget_remove(){ apt-get -y remove "$@" ;}
+_punani_aptget_has() { dpkg -s "$1" | grep -q "Status: install";}
+_punani_aptget_owner() { dpkg-query -S "$1" | cut -d: -f1;}
+_punani_yum_install(){ yum -y install "$@" ;}
+_punani_yum_remove(){ yum -y remove "$@" ;}
+_punani_yum_has() { rpm -qa --qf "%{NAME}\n"| egrep "^${1}\$" >/dev/null ;}
+_punani_yum_owner(){ rpm -qf "$1" ;}
+_punani_brew_install(){ brew install "$@"; }
+_punani_brew_remove(){ brew remove "$@";}
+# TODO _punani_brew_has
+
+punani(){
+ # punani UI
+ _punani_usage='punani {install,remove,has,owner} PACKAGE...'
+ _punani_select_packer || die 'no package manager found; no punani for you!'
+
+ ACTION="$1"; shift
+
+ if test $# = 0; then
+ error 'no PACKAGE specified.'
+ die "usage: $_punani_usage"
+ fi
+
+ for PKG; do
+ RES="`_punani_resolve_package $PKG`" ||
+ die "could not resolve '$PKG'; no punani for you!"
+
+ case "$ACTION" in
+ install)
+ if punani_has $RES; then
+ info "$RES already installed, skipping"
+ else
+ punani_install $RES || die "cannot install $RES with $PACKER"
+ fi
+ ;;
+ remove)
+ if ! punani_has $RES; then
+ info "$RES not installed, skipping"
+ else
+ punani_remove $RES || die "cannot install $RES with $PACKER"
+ fi
+ ;;
+ has)
+ if punani_has $RES; then
+ info "$RES is installed"
+ else
+ info "$RES is not installed"
+ exit 1
+ fi
+ ;;
+ owner)
+ punani_owner $RES
+ ;;
+ *)
+ error "bad action: $ACTION"
+ die "usage: $_punani_usage"
+ esac
+ done
+}
diff --git a/ship/lib/retiolum b/ship/lib/retiolum
new file mode 100644
index 00000000..eba2775e
--- /dev/null
+++ b/ship/lib/retiolum
@@ -0,0 +1,109 @@
+#!/bin/sh
+# retiolum host functions
+#@include core
+#@include network
+tinc_path=${tinc_path:-/etc/tinc}
+netname=${netname:-retiolum}
+hosts_dir=${hosts_dir:-$tinc_path/$netname/hosts}
+supernode_urls="http://euer.krebsco.de/retiolum/supernodes.tar.gz"
+reload_tinc(){
+ info "reloading tinc configuration"
+ pkill -HUP tincd || tinc -n $netname reload;
+}
+
+refresh_supernode_keys(){
+ for url in $supernode_urls;do
+ info "Trying $url to retrieve supernodes"
+ if http_get "$url" \
+ | tar xvz -C $hosts_dir | xargs -n1 echo "refreshed:" ;then
+ info "refreshed supernode keys"
+ return 0
+ else
+ error "$url unusable for retrieving supernode host files"
+ fi
+ done && return 1
+}
+port_open(){
+ # $1 - host
+ # $2 - port
+ # nc -zw 2 $1 $2
+ echo | run_telnet "$1" "$2" & pid=$!
+ { sleep 5; kill $pid;} & wid=$!
+ wait $pid
+ RET=$?
+ kill $wid >/dev/null 2>&1
+ return $RET
+}
+find_supernodes(){
+ cd $hosts_dir
+ set +f
+ for name in `
+ grep '^[ ]*Address[ ]*=' * |
+ cut -d: -f1 | sort | uniq
+ `; do
+ if eval "`sed -n '
+ s/[ ]\+//g
+ s/^\(Address\|Port\)=\(.*\)/\1="\${\1+\$\1\n}\2"/p
+ ' $name`"; then
+ port=${Port-655}
+ for host in $Address; do
+ if port_open $host $port 2>/dev/null; then
+ echo "$name [('$host', $port)]"
+ fi &
+ done
+ wait
+ fi &
+ done
+ wait
+ cd - >/dev/null
+}
+
+find_active_nodes(){
+ # TODO this function currently only supports a single address for a host
+ cd $hosts_dir
+ # posix grep does not support [[:space:]]
+ set +f
+ for name in `
+ grep '^[ ]*Address[ ]*=' * |
+ cut -d: -f1 | sort | uniq
+ `; do
+ if eval "`sed -n '
+ s/[ ]\+//g
+ s/^\(Address\|Port\)=\(.*\)/\1="\${\1+\$\1\n}\2"/p
+ ' $name`"; then
+ port=${Port-655}
+ for host in $Address; do
+ if port_open $host $port 2>/dev/null; then
+ echo "$name [('$host', $port)]"
+ fi &
+ done
+ wait
+ fi &
+ done
+ wait
+ cd - >/dev/null
+}
+
+check_free_v4(){
+ myipv4=${1-10.243.0.-1}
+ v4num=${myipv4##*.}
+ printf "Retard check: "
+ if [ "$v4num" -gt 0 -a "$v4num" -lt "256" ];
+ then
+ info "No retard detected\n"
+ cd $hosts_dir
+ info "Check if ip is still free: "
+ for i in `ls -1`; do
+ if grep -q -e $myipv4\$ $i ;then
+ error "Host IP already taken by $i! "
+ return 1
+ fi
+ done
+ info "Passed\n"
+ return 0
+ else
+ error "you are made of stupid. bailing out\n"
+ return 1
+ fi
+ cd - >/dev/null
+}
diff --git a/ship/lib/tahoe b/ship/lib/tahoe
new file mode 100644
index 00000000..6960b3e7
--- /dev/null
+++ b/ship/lib/tahoe
@@ -0,0 +1,34 @@
+#@include core
+#@include network
+#@include punani
+
+tahoe_home=/home/tahoe
+tahoe_dir=$tahoe_home/.tahoe
+tahoe_init(){
+ # installs dependencies, user and a virtual environment for the tahoe user
+ punani install gpp pip2 python2_dev python2 virtualenv
+ has_user tahoe || useradd -r -m -b $tahoe_home -s /bin/false
+ cd $tahoe_home
+ virtualenv --no-site-packages -p "`type -p python2.7`"
+ . bin/activate
+ pip install twisted pyasn1
+ pip install allmydata-tahoe
+ chown tahoe -R $tahoe_home
+}
+tahoe_create_node(){
+ # requires tahoe_init
+ sudo -u tahoe create-node $tahoe_dir
+ sudo -u tahoe cat > $tahoe_dir/tahoe.cfg <<EOF
+[node]
+nickname = $(get_hostname)
+web.port =
+web.static = public_html
+
+[client]
+introducer.furl = $(http_get http://pigstarter/tahoe/introducer.furl)
+helper.furl = $(http_get http://pigstarter/tahoe/helper.furl)
+[storage]
+enabled = true
+reserved_space = 1G
+EOF
+}
diff --git a/ship/lib/tor b/ship/lib/tor
new file mode 100644
index 00000000..0911e92a
--- /dev/null
+++ b/ship/lib/tor
@@ -0,0 +1,20 @@
+# can be set via env:
+# torrc - path to torrc (default: /etc/tor/torrc )
+# hidden_service_dir - path to hidden service (default: /var/lib/tor/hidden_service/ )
+
+
+torrc=${torrc:-/etc/tor/torrc}
+hidden_service_dir=${hidden_service_dir:-/var/lib/tor/hidden_service/}
+
+configure_hidden_service(){
+ mkdir -p "$hidden_service_dir"
+ if ! grep -q '^HiddenService' "$torrc" ;then
+ info "adding hidden service to $torrc"
+ cat >> "$torrc" << EOF
+HiddenServiceDir ${hidden_service_dir}
+HiddenServicePort 22 127.0.0.1:22
+EOF
+ else
+ info "HiddenServiceDir or Port already in $torrc, skipping!"
+ fi
+}
diff --git a/ship/lib/vim b/ship/lib/vim
new file mode 100644
index 00000000..f75f3d0e
--- /dev/null
+++ b/ship/lib/vim
@@ -0,0 +1,40 @@
+# configure vim
+
+vimrc=$HOME/.vimrc
+
+vim_conf_sane_defaults(){
+ # TODO - make stuff more modular?
+ cat >>$vimrc<<EOF
+set nocompatible
+filetype plugin indent on
+syntax on
+set vb
+set foldenable
+set foldmethod=syntax
+set ignorecase
+set incsearch
+set showmatch
+set matchtime=3
+set hlsearch
+set backupdir=~/.vim/backup
+set directory=~/.vim/backup
+inoremap <F1> <ESC>
+nnoremap <F1> <ESC>
+vnoremap <F1> <ESC>
+set wildignore=*.o,*.obj,*.bak,*.exe,*.os
+cmap w!! w !sudo tee > /dev/null %
+colorscheme darkblue
+set background=dark
+set number
+set mouse=
+set shiftwidth=2
+set tabstop=2
+set et
+set sw=2
+set smarttab
+set autoindent
+set backspace=indent,eol,start
+set nocp
+EOF
+ mkdir -p $HOME/.vim/backup
+}
diff --git a/ship/src/arch_autoinstall b/ship/src/arch_autoinstall
new file mode 100755
index 00000000..c9b6c4d4
--- /dev/null
+++ b/ship/src/arch_autoinstall
@@ -0,0 +1,164 @@
+#/bin/sh
+#@strict
+#@include core
+#@include color
+#@include network
+#@include tor
+pass=shackit
+shack_printer_ip=10.42.0.135
+extra_pkg="xorg vim xfce4 feh chromium zsh sudo git flashplugin alsa-oss alsa-lib alsa-utils grub-bios slim ntp tor network-manager-applet networkmanager openssh cups cups-filters"
+
+info "writing stdout to /tmp/install.log"
+defer 'pkill tail'
+
+installer_disk(){
+ find /dev/disk/by-label/ -name ARCH_\* 2>/dev/null | xargs readlink
+}
+
+find_rootdisk(){
+ for i in sd vd hd;do
+ for j in a b;do
+ dsk="/dev/$i$j"
+ test "$(installer_disk)" == "$dsk" && continue
+ test -e "$dsk" && echo "$dsk" && return
+ done
+ done
+}
+
+rootdisk=$(find_rootdisk)
+test "$rootdisk" || die "cannot find your root disk"
+
+info "Your rootdisk is $rootdisk"
+sleep 3
+
+umount /mnt/boot ||:
+umount /mnt ||:
+info "starting partitioning"
+(printf "o\nn\np\n\n\n+256M\n\a\nn\np\n\n\n\nw\n\n") |fdisk $rootdisk||:
+info "done partitioning"
+sleep 1
+info "generating filesystem on /boot"
+mkfs.ext2 ${rootdisk}1
+info "Done"
+sleep 1
+info "starting LVM magic"
+vgchange -an ||:
+vgremove -f pool0 ||:
+pvcreate ${rootdisk}2
+vgcreate -ff pool0 ${rootdisk}2
+lvcreate -l 100%free -n root pool0
+info "finished creating LVM"
+sleep 1
+info "generating filesystems on the LVM"
+mkfs.ext4 /dev/mapper/pool0-root
+info "finished generating filesystems"
+sleep 1
+info "mounting"
+mount /dev/mapper/pool0-root /mnt
+mkdir /mnt/boot
+mount ${rootdisk}1 /mnt/boot
+
+info "finished mounting!"
+sleep 1
+info "installing!"
+
+info "Setting http proxy"
+if http_head heidi.shack:3142 &>/dev/null; then
+ http_proxy=heidi.shack:3142
+ info "Heidi is reachable, will use this box as proxy"
+else
+ http_proxy=''
+ info "Will not use any proxy"
+fi
+info "Installing the following packages: $extra_pkg"
+if [ -n "${user_pkg:-}" ] ;then
+ info "User chooses additional packages: $user_pkg"
+else
+ info "No additional packages set by user (\$user_pkg unset)"
+fi
+http_proxy=${http_proxy} pacstrap /mnt base base-devel $extra_pkg ${user_pkg:-}
+info "installation done"
+sleep 1
+info "generating configs"
+genfstab -U -p /mnt > /mnt/etc/fstab
+
+info "beginning chroot!"
+arch-chroot /mnt << EOF
+
+msg() { printf "\$*\n" >&2; }
+info() { msg "$green\$*$nc"; }
+error() { msg "$green\$*$nc"; }
+
+info "generating locales"
+ln -s /usr/share/zoneinfo/Europe/Berlin /etc/localtime
+echo "LANG=en_US.UTF-8" >> /etc/locale.conf
+echo "en_US.UTF-8 UTF-8" >> /etc/locale.gen
+locale-gen
+echo "shackbook$RANDOM" > /etc/hostname
+sed -i 's/block/& lvm2/g' /etc/mkinitcpio.conf
+info "Done! "
+mkinitcpio -p linux
+info "setting root password"
+printf "${pass}\n${pass}\n" | (passwd )
+info "adding user"
+useradd -d /home/shack -m -G audio,video,wheel -s /usr/bin/zsh shack
+printf "${pass}\n${pass}\n" | (passwd shack)
+
+info "editing sudoers"
+printf "root ALL=(ALL) ALL\n%s ALL=(ALL) ALL\n" %wheel >> /etc/sudoers
+info "configuring slim"
+printf "default_user\tshack\nfocus_password\tyes\nauto_login\tyes\n" >> /etc/slim.conf
+info "configuring .xinitrc"
+printf "exec startxfce4\n" >> /home/shack/.xinitrc
+
+for i in slim NetworkManager ntpd tor cups; do
+ info "enabling \$i"
+ systemctl enable \$i
+done
+
+### CUPS
+mkdir -p /etc/cups
+cat >>/etc/cups/printers.conf<<EOT
+<Printer HP_LaserJet_5000_Series>
+Info Shack Printer HP 5000
+Location lounge
+MakeModel HP LaserJet Series PCL 6 CUPS
+DeviceURI socket://$shack_printer_ip
+State Idle
+StateTime 1387400063
+Type 8400964
+Accepting Yes
+Shared No
+JobSheets none none
+QuotaPeriod 0
+PageLimit 0
+KLimit 0
+OpPolicy default
+ErrorPolicy stop-printer
+</Printer>
+EOT
+
+info "installing grub"
+grub-install ${rootdisk} 2>/dev/null
+echo "GRUB_DISABLE_LINUX_UUID=true" >> /etc/default/grub
+grub-mkconfig > /boot/grub/grub.cfg 2>/dev/null
+
+info "installing oh-my-zsh"
+curl -L https://github.com/robbyrussell/oh-my-zsh/raw/master/tools/install.sh | sudo -u shack sh
+sed -i 's/robbyrussell/afowler/g' /home/shack/.zshrc
+info "fixing chrome for incognito use"
+sed -i 's/Exec=chromium/Exec=chromium --incognito/g' /usr/share/applications/chromium.desktop
+exit
+EOF
+
+info "configuring tor"
+torrc=/mnt/etc/tor/torrc
+hidden_service_dir=/var/lib/tor/hidden_service/
+configure_hidden_service
+#TODO publish tor address after reboot
+#info "publishing hidden service address"
+#cat $hidden_service_dir/hostname | send_irc
+
+
+info "We're all done, simply reboot!"
+reboot
diff --git a/ship/src/bootstrap_env_makefu b/ship/src/bootstrap_env_makefu
new file mode 100755
index 00000000..e61f4e99
--- /dev/null
+++ b/ship/src/bootstrap_env_makefu
@@ -0,0 +1,171 @@
+#!/bin/sh
+# TODO: modularize zsh configuration and vim configuration
+#@info
+#@strict
+#@include core
+#@include punani
+#@include vim
+
+# vim +python
+_punanidb_pacman_vim_python=gvim
+_punanidb_yum_vim_python=vim-enhanced
+_punanidb_aptget_vim_python=vim
+
+# TODO pull out youcompleteme into a vim function
+# cmake ,make,g++,python-dev for youcompleteme
+_punanidb_pacman_cmake=cmake
+_punanidb_yum_cmake=cmake
+_punanidb_aptget_cmake=cmake
+#@mainifyme
+
+info "Configuring environment for $(id -un)"
+cd $(readlink -f $(dirname $0))
+info "Using punani to install git vim and zsh"
+punani install git vim_python zsh gpp cmake make python2_dev || die "cannot install some shit"
+
+info "writing dotfiles"
+# deploying zshrc
+# TODO modularize zshrc
+cat > $HOME/.zshrc <<EOF
+# Path to your oh-my-zsh configuration.
+export ZSH=\$HOME/.oh-my-zsh
+
+# Look in ~/.oh-my-zsh/themes/
+export ZSH_THEME="gallifrey"
+
+# Comment this out to disable weekly auto-update checks
+export DISABLE_AUTO_UPDATE="true"
+
+plugins=(git ssh-agent)
+. \$ZSH/oh-my-zsh.sh
+test -e \$HOME/.aliases && source \$HOME/.aliases
+
+# Customize to your needs...
+export PATH=/usr/sbin:/krebs/bin:\$HOME/bin:\$PATH:/sbin
+HISTFILE=~/.histfile
+HISTSIZE=9000001
+SAVEHIST=9000001
+
+export EDITOR=vim
+
+export JAVA_HOME=\$JAVA_HOME:/opt/java/jre
+
+GREP_COLOR="1;33"
+alias grep='grep --color=auto'
+alias vi=vim
+
+export MANPATH=\$MANPATH:\$HOME/man
+
+if [ -f "\$HOME/.dircolors" ] ; then
+ eval \$(dircolors -b "\$HOME/.dircolors")
+ export LS_COLORS
+fi
+
+which fortune >/dev/null && fortune -a
+which task >/dev/null && task
+echo "--"
+test -r ~/TODO && cat ~/TODO
+
+setopt menu_complete
+unsetopt correct_all
+export PYTHONSTARTUP=~/.pythonrc
+EOF
+info 'deploying pythonrc'
+cat > $HOME/.pythonrc <<EOF
+import rlcompleter, readline
+readline.parse_and_bind('tab:complete')
+EOF
+info "deploying vim config"
+if [ -e $HOME/.vim ] ; then
+ oldvim=$HOME/.vim.`date +%Y%M%d`
+ info "Backing up old vim folder to $oldvim"
+ mv -v $HOME/.vim $oldvim
+fi
+
+mkdir -p $HOME/.vim
+
+# TODO modilarize vimconfig
+
+cat > $HOME/.vim/vimrc <<EOF
+filetype off
+set rtp+=~/.vim/bundle/vundle
+call vundle#rc()
+" TODO refactor this
+Bundle 'gmarik/vundle'
+Bundle 'SudoEdit.vim'
+Bundle 'snipMate'
+Bundle 'tpope/vim-fugitive'
+Bundle 'Valloric/YouCompleteMe'
+Bundle 'scrooloose/syntastic'
+Bundle 'sjl/gundo.vim'
+
+nnoremap <F5> :GundoToggle<CR>
+set undodir=~/.vim/undo
+set undofile
+"maximum number of changes that can be undone
+set undolevels=1000000
+"maximum number lines to save for undo on a buffer reload
+set undoreload=10000000
+
+set pastetoggle=<F2>
+set showmode
+filetype plugin indent on
+
+
+filetype plugin indent on
+
+let g:snips_author = 'Bob Ross <root@syntax-fehler.de>'
+let g:makefu_author = 'makefu'
+
+" pasting
+nnoremap <F2> :set invpaste paste?<CR>
+set pastetoggle=<F2>
+set showmode
+
+" save on focus lost
+au FocusLost * :wa
+
+set spelllang=en
+
+set textwidth=9001
+autocmd BufRead *.json set filetype=json
+EOF
+if [ -e $HOME/.vimrc ] ; then
+ oldvim=$HOME/.vimrc.`date +%Y%M%d`
+ info "Backing up old vimrc file to $oldvim"
+ mv -v $HOME/.vimrc $oldvim
+fi
+info "Symlinking .vimrc to .vim/vimrc"
+ln -vs $HOME/.vim/vimrc $HOME/.vimrc
+vim_conf_sane_defaults
+
+#install all the vim stuff with the help of vundle
+cd $HOME/.vim
+mkdir -p bundle undo backup
+info "Fetching vim-vundle"
+git clone https://github.com/gmarik/vundle.git bundle/vundle > /dev/null && \
+ info "Vim Vundle deployed"
+info "Installing Vundle Bundles"
+vim "+:BundleInstall" "+:qall"
+
+info "building youcompleteme libs"
+cd $HOME/.vim/bundle/YouCompleteMe
+./install.sh
+cd -
+
+info "configuring zsh"
+if exists zsh; then
+ if [ "$SHELL" != "`which zsh`" ] ;then
+ info "setting zsh as new shell,please enter your user password"
+ chsh -s `which zsh`
+ else
+ info "zsh already set as default shell"
+ fi
+ if [ ! -d ~/.oh-my-zsh ] ; then
+ git clone https://github.com/robbyrussell/oh-my-zsh.git ~/.oh-my-zsh > /dev/null && info "oh-my-zsh deployed"
+ else
+ info "oh-my-zsh already installed"
+ fi
+else
+ error "cannot find zsh :("
+fi
diff --git a/ship/src/deploy-ssh-keys b/ship/src/deploy-ssh-keys
new file mode 100644
index 00000000..7eedb2cb
--- /dev/null
+++ b/ship/src/deploy-ssh-keys
@@ -0,0 +1,15 @@
+#!/bin/sh
+#@info
+#@strict
+#@include core
+cd $(dirname $0)
+U="${1:-$(id -u -n)}"
+H="$(grep "^$U" /etc/passwd | cut -d : -f 6)"
+krebsdir=${krebsdir:-/krebs}
+
+info "deploying for user $U to $H/.ssh"
+mkdir -p $H/.ssh
+
+cp -vr $krebsdir/infest/skel/home/.ssh/authorized_keys $H/.ssh
+chown $U $H
+chown -R $U $H/.ssh
diff --git a/ship/src/filehooker_configure_ncdc b/ship/src/filehooker_configure_ncdc
new file mode 100644
index 00000000..c980ebf2
--- /dev/null
+++ b/ship/src/filehooker_configure_ncdc
@@ -0,0 +1,15 @@
+#!/bin/sh
+#@info
+#@strict
+#@include filehooker
+
+dc_hub="adcs://elch.nsupdate.info:2781"
+rnd=`hexdump -n 2 -e '/2 "%u"' /dev/urandom`
+nick="filehooker_$rnd"
+
+
+ncdc_install
+ncdc_autostart
+
+ncdc_configure_nick "$nick"
+ncdc_configure_hub "$dc_hub"
diff --git a/ship/src/filehooker_configure_netshare b/ship/src/filehooker_configure_netshare
new file mode 100644
index 00000000..438ac133
--- /dev/null
+++ b/ship/src/filehooker_configure_netshare
@@ -0,0 +1,7 @@
+#!/bin/sh
+#@info
+#@strict
+#@include filehooker
+for i in $(prepare_netshares) ;do
+ ncdc_configure_netshare "$i" "${i##*/}"
+done
diff --git a/ship/src/filehooker_install b/ship/src/filehooker_install
new file mode 100755
index 00000000..eb2d5fd1
--- /dev/null
+++ b/ship/src/filehooker_install
@@ -0,0 +1,143 @@
+#/bin/sh
+#@info
+#@strict
+#@include core
+## colored logging
+#@include color
+#@include network
+
+## for tor hidden service
+#@include tor
+
+## for ncdc
+#@include filehooker
+pass=lolwut.aidsballs
+# 20gig
+#min_netshare_size=20000000000
+admin=pimp
+extra_pkg="vim sudo grub-bios ntp tor openssh btrfs-progs tmux"
+
+info "writing stdout to /tmp/install.log"
+
+
+installer_disk(){
+ find /dev/disk/by-label/ -name ARCH_\* 2>/dev/null | xargs readlink
+}
+
+find_rootdisk(){
+ for i in sd vd hd;do
+ for j in a b c;do
+ dsk="/dev/$i$j"
+ test ! -e "$dsk" && continue
+ test "$(installer_disk)" == "$dsk" && continue
+ test "$(get_disksize $dsk)" -gt "$min_netshare_size" && info "not using $dsk as it is too big" && continue
+ echo "$dsk" && return
+ done
+ done
+}
+
+rootdisk=$(find_rootdisk)
+test "$rootdisk" || die "cannot find your root disk"
+
+info "Your rootdisk is $rootdisk"
+sleep 3
+
+umount /mnt/boot ||:
+umount /mnt ||:
+info "overwriting partitioning"
+dd if=/dev/zero of=$rootdisk bs=2k count=10
+info "starting partitioning"
+(printf "o\nn\np\n\n\n+128M\n\a\nn\np\n\n\n\nw\n\n") |fdisk $rootdisk ||:
+partprobe $rootdisk
+info "done partitioning"
+sleep 1
+info "generating filesystem on /boot"
+mkfs.ext2 ${rootdisk}1
+info "Done"
+sleep 3
+sync
+vgchange -an
+info "generating filesystems"
+mkfs.btrfs -f ${rootdisk}2
+sleep 1
+info "finished generating filesystems"
+sleep 1
+info "mounting"
+mount ${rootdisk}2 /mnt
+mkdir /mnt/boot
+mount ${rootdisk}1 /mnt/boot
+
+info "finished mounting!"
+sleep 1
+info "installing!"
+
+info "Setting http proxy"
+
+info "Installing the following packages: $extra_pkg"
+if [ -n "${user_pkg:-}" ] ;then
+ info "User chooses additional packages: $user_pkg"
+else
+ info "No additional packages set by user (\$user_pkg unset)"
+fi
+pacstrap /mnt base $extra_pkg ${user_pkg:-}
+info "installation done"
+sleep 1
+info "generating configs"
+genfstab -U -p /mnt > /mnt/etc/fstab
+
+info "beginning chroot!"
+########### BEGIN CHROOT #####
+arch-chroot /mnt << EOF
+#@strict
+msg() { printf "\$*\n" >&2; }
+info() { msg "$green\$*$nc"; }
+error() { msg "$green\$*$nc"; }
+
+info "generating locales"
+ln -s /usr/share/zoneinfo/Europe/Berlin /etc/localtime
+echo "LANG=en_US.UTF-8" >> /etc/locale.conf
+echo "en_US.UTF-8 UTF-8" >> /etc/locale.gen
+locale-gen
+echo "filehooker$RANDOM" > /etc/hostname
+info "Done! "
+mkinitcpio -p linux ||
+info "setting root password"
+printf "${pass}\n${pass}\n" | (passwd )
+info "adding user"
+useradd -m -G audio,video,wheel $admin
+printf "${pass}\n${pass}\n" | (passwd $admin)
+
+info "editing sudoers"
+printf "root ALL=(ALL) ALL\n%s ALL=(ALL)NOPASSWD: ALL\n" %wheel >> /etc/sudoers
+for i in dhcpcd ntpd tor sshd ; do
+ info "enabling \$i"
+ systemctl enable \$i
+done
+
+info "installing grub"
+grub-install ${rootdisk} 2>/dev/null
+#echo "GRUB_DISABLE_LINUX_UUID=true" >> /etc/default/grub
+grub-mkconfig > /boot/grub/grub.cfg 2>/dev/null
+# prepare ncdc
+useradd -m hooker
+exit
+EOF
+######## END CHROOT ##########
+sync
+
+info "configuring tor"
+torrc=/mnt/etc/tor/torrc
+hidden_service_dir=/var/lib/tor/hidden_service/
+configure_hidden_service
+#info "publishing hidden service address"
+#cat $hidden_service_dir/hostname | send_irc
+info "configure ncdc"
+curl conf.krebsco.de/filehooker_configure_ncdc | arch-chroot /mnt
+info "configuring netshares"
+( curl conf.krebsco.de/filehooker_configure_netshare )| arch-chroot /mnt
+info "configuring tor announce"
+curl conf.krebsco.de/install_tor_announce | arch-chroot /mnt
+info "We're all done, rebooting!"
+sync
+sleep 5
+reboot
diff --git a/ship/src/find-supers-tinc b/ship/src/find-supers-tinc
new file mode 100644
index 00000000..3ea53d35
--- /dev/null
+++ b/ship/src/find-supers-tinc
@@ -0,0 +1,6 @@
+#!/bin/sh
+#@info
+#@include core
+#@include retiolum
+
+find_supernodes
diff --git a/ship/src/fix_dircolors b/ship/src/fix_dircolors
new file mode 100755
index 00000000..d427563f
--- /dev/null
+++ b/ship/src/fix_dircolors
@@ -0,0 +1,13 @@
+#!/bin/sh
+#@info
+#@strict
+#@include core
+exists dircolors || die "no dircolors in PATH, bailing out"
+
+info "fixing dircolors for $(id -un)"
+dircolors -p > $HOME/.dircolors
+sed -i 's/\(DIR \).*/\101;36/' $HOME/.dircolors
+! grep -q 'dircolors' $HOME/.profile && \
+ info "adding dircolors line to $HOME/.profile" && \
+ echo 'eval `dircolors -b $HOME/.dircolors`' >> $HOME/.profile
+info "done"
diff --git a/ship/src/get_repo b/ship/src/get_repo
new file mode 100644
index 00000000..5476e650
--- /dev/null
+++ b/ship/src/get_repo
@@ -0,0 +1,22 @@
+#!/bin/sh
+#@info
+#@strict
+#@include punani
+# Can be overwritten before install
+
+KREBSDIR=${KREBSDIR:-/krebs}
+( is_root || ! test "$KREBSDIR" = "/krebs" ) || die "not running as root, stuff may not work. change KREBSDIR env to bootstrap somewhere else!";
+
+info "installing git to clone repo"
+punani install git
+
+[ -e "$KREBSDIR" ] && die "krebs dir already exists"
+
+git clone --depth 1 https://github.com/krebscode/painload.git "$KREBSDIR" || die "cloning failed :("
+
+cd $KREBSDIR || die "cannot change into $KREBSDIR folder:(" ;
+
+info "installing make"
+punani install make
+
+info "have a nice day"
diff --git a/ship/src/install_tor_announce b/ship/src/install_tor_announce
new file mode 100644
index 00000000..b7b3662e
--- /dev/null
+++ b/ship/src/install_tor_announce
@@ -0,0 +1,5 @@
+#!/bin/sh
+#@strict
+#@include filehooker
+
+install_tor_announce
diff --git a/ship/src/punani b/ship/src/punani
new file mode 100755
index 00000000..ceabd667
--- /dev/null
+++ b/ship/src/punani
@@ -0,0 +1,4 @@
+#! /bin/sh
+#@info
+#@include punani
+punani "$@"
diff --git a/ship/src/refresh-super-keys b/ship/src/refresh-super-keys
new file mode 100644
index 00000000..dddbe846
--- /dev/null
+++ b/ship/src/refresh-super-keys
@@ -0,0 +1,5 @@
+#!/bin/sh
+#@info
+#@include retiolum
+#@mainifyme
+refresh_supernode_keys
diff --git a/ship/src/refresh-supers b/ship/src/refresh-supers
new file mode 100644
index 00000000..6dc6e8ab
--- /dev/null
+++ b/ship/src/refresh-supers
@@ -0,0 +1,35 @@
+#!/bin/sh
+#@info
+# usage: [DEBUG=1] [tincconf=/not/tinc/retiolum/tinc.conf] $0
+# This is the implementation of the proposal how to update tinc supernode
+# connections
+
+#@include core
+#@include retiolum
+ # using find_supernodes
+ # tinc_path
+ # netname
+
+#@strict
+#@mainifyme
+
+refresh_supernode_keys
+
+max_connect_to=${max_connect_to:-5}
+tincconf=${tincconf:-$tinc_path/$netname/tinc.conf}
+tmp_tincconf=$(mktemp)
+defer "rm -f $tmp_tincconf"
+
+sed '/^[ ]*ConnectTo/d' "$tincconf" > "$tmp_tincconf"
+
+
+# TODO find_supernodes requires netcat
+find_supernodes | cut -d\ -f 1 | shuf \
+ | head -n "${max_connect_to}" \
+ | xargs -n1 printf "ConnectTo=%s\n" >> "$tmp_tincconf"
+
+info "replacing old tinc.conf with one"
+test "${DEBUG:-}" && diff "$tincconf" "$tmp_tincconf"
+mv "$tmp_tincconf" "$tincconf"
+
+reload_tinc
diff --git a/ship/src/remaster_arch_shack_installstick b/ship/src/remaster_arch_shack_installstick
new file mode 100755
index 00000000..3ad985af
--- /dev/null
+++ b/ship/src/remaster_arch_shack_installstick
@@ -0,0 +1,104 @@
+#!/bin/sh
+#@include core
+#@include iso
+#@mainifyme
+
+## TODO: provide a parameter which defines what to be done in the new iso root
+set -efu
+isofile=${1:-archlinux-2013.06.01-dual.iso}
+outfile=$(basename ${isofile%.iso}.krebs.iso)
+info "outfile will be at $outfile"
+bdir=${bdir:-$HOME/build/arch}
+isodir=$bdir/iso
+isomnt=$bdir/isomount
+rootdir=$bdir/root
+outdir=$bdir/out
+auto_url=${2:-conf.krebsco.de/arch_autoinstall}
+info "bdir is at $bdir"
+[ ! -e "$isofile" ] && die "$isofile does not exist."
+esudo "$@"
+arch_label="$(get_volid "$isofile")"
+info "Arch iso label is ${arch_label}"
+info "auto_url is $auto_url"
+
+info "cleanup root dir"
+rm -rf $bdir
+mkdir -p $isomnt $rootdir
+info "mounting isofile ($isofile)"
+if is_root;then
+ mount -t iso9660 -o loop,ro $isofile $isomnt
+else
+ die 'we are not root enough to mount the iso.'
+fi
+defer "info 'unmounting $isomnt';umount $isomnt"
+
+info "copying from '$isomnt' to '$isodir'"
+cp -a "$isomnt" "$isodir"
+defer "info 'removing $isodir';rm -rf $isodir"
+info "extracting root-image squashfs"
+# we will not touch the kernel ... yet
+
+for arch in x86_64 i686;do
+ info "unpacking $isomnt/arch/$arch/root-image.fs.sfs"
+ mkdir -p "$outdir/$arch"
+ defer "info 'removing $outdir/$arch';rm -rf $outdir/$arch"
+ mkdir -p "$rootdir/$arch"
+ defer "info 'removing $rootdir/$arch';rm -rf $rootdir/$arch"
+ unsquashfs -f -d "$outdir/$arch" "$isodir/arch/$arch/root-image.fs.sfs"
+
+ mount "$outdir/$arch/root-image.fs" "$rootdir/$arch"
+ defer "info 'unmounting $rootdir/$arch';umount $rootdir/$arch||info 'not mounted'"
+
+ info "Starting of the rootdir verkrepelung"
+ # do the magic here
+ arch-chroot $rootdir/$arch <<EOF
+ cat >> /root/.zshrc<<EOL
+cat << EOD
+This is the Krebs Autoinstaller, we will do all the right things.
+Just Wait until everything finished.
+
+- Make sure that RJ45 is connected
+- you can bail out of the progress at any time with CTRL-C
+ /krebs/autoinstall (args)
+EOD
+/krebs/autoinstall
+EOL
+
+ mkdir /krebs
+ cat > /krebs/autoinstall <<EOL
+internet() { ping -w 1 google.de >/dev/null 2>&1; }
+while ! internet;do
+ echo "no Internet yet, waiting ..."
+ sleep 3
+done
+
+echo "Grabbing current version of install-script from $auto_url"
+echo
+echo "AGENTS ARE GOOOOOOOOOOO!"
+curl "$auto_url" 2>/dev/null | sh -s "\\\$@"
+EOL
+chmod 755 /krebs/autoinstall
+EOF
+ info "deleting old squashfs"
+ rm "$isodir/arch/$arch/root-image.fs.sfs"
+ info "creating squashfs at $isodir/arch/$arch/root-image.fs.sfs"
+ umount "$rootdir/$arch"
+ mksquashfs "$outdir/$arch/root-image.fs" "$isodir/arch/$arch/root-image.fs.sfs"
+done
+
+info "creating Iso Image"
+rm -f "${outdir}/${outfile}"
+xorriso -as mkisofs \
+ -iso-level 3 \
+ -full-iso9660-filenames \
+ -volid "${arch_label}" \
+ -appid "Shackspace Krebs Installer" \
+ -publisher "Shackspace/Krebs" \
+ -preparer "prepared by krebs" \
+ -eltorito-boot isolinux/isolinux.bin \
+ -eltorito-catalog isolinux/boot.cat \
+ -no-emul-boot -boot-load-size 4 -boot-info-table \
+ -isohybrid-mbr ${isomnt}/isolinux/isohdpfx.bin \
+ -output "${outdir}/${outfile}" \
+ "$isodir"
+
diff --git a/ship/src/retiolum b/ship/src/retiolum
new file mode 100755
index 00000000..ede1fd6a
--- /dev/null
+++ b/ship/src/retiolum
@@ -0,0 +1,292 @@
+#!/bin/sh
+#@include core
+#@include network
+main(){
+
+ set -euf
+ get_root
+
+ SUBNET4=${SUBNET4:-10.243}
+ # TODO: some retard servers may not support ipv6
+ SUBNET6=${SUBNET6:-42}
+ TEMPDIR=${TEMPDIR:-auto}
+ TINCDIR=${TINCDIR:-auto}
+
+
+ #overwrite `found` hostname
+ HOSTN="`get_hostname`"
+ NETNAME=${NETNAME:-retiolum}
+ MASK4=${MASK4:-16}
+ MASK6=${MASK6:-16}
+ RMASK=${RMASK:-255.255.0.0}
+ URL=${URL:-http://euer.krebsco.de/retiolum/hosts.tar.gz}
+ SURL=${SURL:-http://euer.krebsco.de/retiolum/supernodes.tar.gz}
+
+ IRCCHANNEL=${IRCCHANNEL:-"#krebs_incoming"}
+ IRCSERVER=${IRCSERVER:-"irc.freenode.net"}
+ IRCPORT=${IRCPORT:-6667}
+
+ OS=$(get_os)
+
+ IP4=${IP4:-0}
+ IP6=${IP6:-0}
+
+ RAND4=1
+ RAND6=1
+
+
+ if [ $IP4 -eq 0 ]; then
+ RAND4=1
+ elif ! check_ip_valid4 $IP4; then
+ die 'ip4 is invalid'
+ fi
+ if [ $IP6 -eq 0 ]; then
+ RAND6=1
+ elif ! check_ip_valid6 $IP6; then
+ die 'ip6 is invalid'
+ fi
+
+ #check if everything is installed
+ if ! exists awk ; then
+ die 'Please install awk'
+ fi
+
+
+ if ! http_head $SURL >/dev/null 2>/dev/null ;then
+ die 'Cannot find supernode package, check if your internet is working'
+ fi
+
+ #check if everything is installed
+ if [ $OS = 'android' ]; then
+ if ! test -e /data/data/org.poirsouille.tinc_gui/files/tincd; then
+ die 'Please install tinc-gui'
+ else
+ TINCBIN=/data/data/org.poirsouille.tinc_gui/files/tincd
+ DEV="/dev/tun"
+ if [ $TINCDIR = 'auto' ]; then TINCDIR="/usr/local/etc/tinc" ;fi
+ if [ $TEMPDIR = 'auto' ]; then TEMPDIR="/storage/sdcard0/tinc-fu" ;fi
+ mount -o remount,rw /
+ mount -o remount,rw /system
+ fi
+ elif [ $OS = 'osx' ]; then
+ if ! exists tincd >/dev/null; then
+ die 'Please install tinc'
+ else
+ TINCBIN=tincd
+ DEV="/dev/net/tun"
+ if [ $TINCDIR = 'auto' ]; then TINCDIR="/usr/local/etc/tinc" ;fi
+ if [ $TEMPDIR = 'auto' ]; then TEMPDIR="/tmp/tinc-install-fu" ;fi
+ fi
+ else
+ if ! exists tincd >/dev/null; then
+ die 'Please install tinc'
+ else
+ TINCBIN=tincd
+ DEV="/dev/net/tun"
+ if [ $TINCDIR = 'auto' ]; then TINCDIR="/etc/tinc" ;fi
+ if [ $TEMPDIR = 'auto' ]; then TEMPDIR="/tmp/tinc-install-fu" ;fi
+ fi
+ fi
+
+ #generate full subnet information for v4
+
+ #test if tinc directory already exists
+ if test -e $TINCDIR/$NETNAME; then
+ die "tinc config directory $TINCDIR/$NETNAME does already exist. (backup and) delete config directory and restart"
+ fi
+
+ #get tinc-hostfiles
+ mkdir -p $TEMPDIR/hosts
+ http_get $URL | tar zx -C $TEMPDIR/hosts/
+
+ #check for free ip
+ #version 4
+ until check_ip_taken $IP4; do
+ if [ $RAND4 -eq 1 ]; then
+ IP4="$SUBNET4.$(( $(head /dev/urandom | tr -dc "123456789" | head -c3) %255)).$(( $(head /dev/urandom | tr -dc "123456789" | head -c3) %255))"
+ else
+ printf 'choose new ip: '
+ read IP4
+ while ! check_ip_valid4 $IP4; do
+ printf 'the ip is invalid, retard, choose a valid ip: '
+ read IP4
+ done
+ fi
+ done
+
+ #version 6
+
+ until check_ip_taken $IP6; do
+ if [ $RAND6 -eq 1 ]; then
+ NETLENGTH=$(expr $(expr 128 - $MASK6) / 4)
+ IP6="$SUBNET6$(head /dev/urandom | tr -dc "0123456789abcdef" | head -c$NETLENGTH | sed 's/..../:&/g')" #todo: generate ip length from hostmask
+ else
+ printf 'ip taken, choose new ip: '
+
+ read IP6
+ while ! check_ip_valid6 $IP6; do
+ printf 'the ip is invalid, retard, choose a valid ip: '
+ read IP6
+ done
+ fi
+ done
+
+
+ #check for free hostname
+ get_hostname $HOSTN
+
+
+ #create the configs
+ mkdir -p $TINCDIR/$NETNAME
+ cd $TINCDIR/$NETNAME
+
+ if [ $OS = 'openwrt' ]; then
+ mkdir hosts
+ http_get $SURL | tar xz -C hosts/
+ else
+ mv $TEMPDIR/hosts ./
+ fi
+
+ rm -r $TEMPDIR || echo "$TEMPDIR does not exist, skipping removal"
+
+ echo "Subnet = $IP4" > hosts/$HOSTN
+ echo "Subnet = $IP6" >> hosts/$HOSTN
+
+ cat>tinc.conf<<EOF
+Name = $HOSTN
+Device = $DEV
+
+#newer tinc features
+LocalDiscovery = yes
+AutoConnect = 3
+
+#ConnectTos
+ConnectTo = slowpoke
+ConnectTo = pigstarter
+ConnectTo = pico
+EOF
+
+ host2subnet $MASK4
+
+ #check if ip is installed
+ if exists ip >/dev/null; then
+ echo 'dirname="`dirname "$0"`"' > tinc-up
+ echo '' >> tinc-up
+ echo 'conf=$dirname/tinc.conf' >> tinc-up
+ echo '' >> tinc-up
+ echo 'name=$(sed -n "s|^ *Name *= *\([^ ]*\) *$|\\1|p" $conf)' >> tinc-up
+ echo '' >> tinc-up
+ echo 'host=$dirname/hosts/$name' >> tinc-up
+ echo '' >> tinc-up
+ echo 'ip link set $INTERFACE up' >> tinc-up
+ echo '' >> tinc-up
+ echo "addr4=\$(sed -n \"s|^ *Subnet *= *\\($SUBNET4[.][^ ]*\\) *\$|\\\\1|p\" \$host)" >> tinc-up
+ echo 'ip -4 addr add $addr4 dev $INTERFACE' >> tinc-up
+ echo "ip -4 route add $FULLSUBNET/$MASK4 dev \$INTERFACE" >> tinc-up
+ echo '' >> tinc-up
+ echo "addr6=\$(sed -n \"s|^ *Subnet *= *\\($SUBNET6[:][^ ]*\\) *\$|\\\\1|p\" \$host)" >> tinc-up
+ echo 'ip -6 addr add $addr6 dev $INTERFACE' >> tinc-up
+ echo "ip -6 route add $SUBNET6::/$MASK6 dev \$INTERFACE" >> tinc-up
+ else
+ echo 'dirname="`dirname "$0"`"' > tinc-up
+ echo '' >> tinc-up
+ echo 'conf=$dirname/tinc.conf' >> tinc-up
+ echo '' >> tinc-up
+ echo 'name=$(sed -n "s|^ *Name *= *\([^ ]*\) *$|\\1|p" $conf)' >> tinc-up
+ echo '' >> tinc-up
+ echo 'host=$dirname/hosts/$name' >> tinc-up
+ echo '' >> tinc-up
+ echo "addr4=\$(sed -n \"s|^ *Subnet *= *\\($SUBNET4[.][^ ]*\\) *$|\\\\1|p\" \$host)" >> tinc-up
+ echo 'ifconfig $INTERFACE $addr4' >> tinc-up
+ echo "route add -net $FULLSUBNET netmask $RMASK dev \$INTERFACE " >> tinc-up
+ fi
+
+ #fix permissions
+ chmod +x tinc-up
+ chown -R 0:0 .
+
+ #generate keys with tinc
+ if exists tinc ; then
+ yes | tinc -n $NETNAME generate-keys
+ else
+ yes | $TINCBIN -n $NETNAME -K
+ fi
+
+ if [ $OS = 'android' ]; then
+ mkdir /etc/tinc
+ cd /
+ mv $TINCDIR/$NETNAME /etc/tinc/
+ cd /etc/tinc/$NETNAME
+ fi
+
+ (echo "This is $HOSTN";cat "hosts/$HOSTN" ) | send_irc
+
+ # finish what you have begun!
+ tincd -n $NETNAME
+}
+
+
+#convert hostmask to subnetmask only version 4
+host2subnet()
+{
+ NEEDDOTSINSUB=$(expr 3 - $( echo $SUBNET4 | tr -C -d . | wc -c))
+ case $NEEDDOTSINSUB in
+ 3) FULLSUBNET=$SUBNET4.0.0.0 ;;
+ 2) FULLSUBNET=$SUBNET4.0.0 ;;
+ 1) FULLSUBNET=$SUBNET4.0 ;;
+ 0) FULLSUBNET=$SUBNET4 ;;
+ *) die 'cannot read subnet';;
+ esac
+}
+
+#check if ip is valid ipv4 function
+check_ip_valid4()
+{
+ if [ "$(echo $1 | awk -F"\." ' $0 ~ /^([0-9]{1,3}\.){3}[0-9]{1,3}$/ && $1 <=255 && $2 <= 255 && $3 <= 255 && $4 <= 255 ' 2>/dev/null)" == "$1" ] && [ ${1:0:${#SUBNET4}} == $SUBNET4 ]
+ then
+ return 0
+ else
+ return 1
+ fi
+}
+
+#check if ip is valid ipv6 function
+check_ip_valid6()
+{
+ if [ "$(echo $1 | awk -F"." ' $0 ~ /^([0-9a-fA-F]{1,4}\:){7}[0-9a-fA-F]{1,4}$/' 2>/dev/null)" == $1 ] && [ ${1:0:${#SUBNET6}} == $SUBNET6 ]
+ then
+ return 0
+ else
+ return 1
+ fi
+}
+
+#check if ip is taken function
+check_ip_taken()
+{
+ if grep -q -r -E "$1(#|/)" $TEMPDIR/hosts/ ;then
+ return 1
+ else
+ return 0
+ fi
+}
+
+#if hostname is taken, count upwards until it isn't taken function
+get_hostname()
+{
+ TSTFILE=$TEMPDIR/hosts/$1
+ LCOUNTER=0
+ if test -e $TSTFILE; then
+ while test -e $TSTFILE; do
+ : $((LCOUNTER+=1))
+ TSTFILE=$TEMPDIR/hosts/$1$LCOUNTER
+ done
+ HOSTN=$1$LCOUNTER
+ else
+ HOSTN=$1
+ fi
+}
+
+#os autodetection
+
+main
diff --git a/ship/src/tahoe_install b/ship/src/tahoe_install
new file mode 100644
index 00000000..d956ff13
--- /dev/null
+++ b/ship/src/tahoe_install
@@ -0,0 +1,15 @@
+#!/bin/sh
+#@strict
+#@core
+#@color
+#@include tahoe
+esudo "$@"
+tahoe_init
+tahoe_create_node
+if sudo -u tahoe tahoe start ;then
+ info "everything went fine, autostart tahoe somewhere with: 'sudo -u tahoe tahoe start'"
+else
+ error "somewhere something went wrong, could not start tahoe daemon"
+ error "tahoe should be installed under /home/tahoe/.tahoe"
+ die "sorry :("
+fi
diff --git a/ship/src/tor_publish_ssh b/ship/src/tor_publish_ssh
new file mode 100755
index 00000000..14cb9cb4
--- /dev/null
+++ b/ship/src/tor_publish_ssh
@@ -0,0 +1,14 @@
+#!/bin/sh
+#@include core
+#@include network
+#@include punani
+#@include tor
+
+
+
+punani install tor
+
+test -w "$torrc" || ( error "$torrc is not writable!"; exit 1 ) || exit 1
+
+configure_hidden_service
+cat $hidden_service_dir/hostname | send_irc
diff --git a/ship/src/vim_sane_defaults b/ship/src/vim_sane_defaults
new file mode 100644
index 00000000..4c6f1b8f
--- /dev/null
+++ b/ship/src/vim_sane_defaults
@@ -0,0 +1,11 @@
+#!/bin/sh
+#@strict
+#@include core
+#@include vim
+#@include punani
+#@mainifyme
+info "installing punani"
+punani install vim
+touch $vimrc
+info "configuring vim"
+vim_conf_sane_defaults
diff --git a/ship/t/docker/docker_remote_punani.sh b/ship/t/docker/docker_remote_punani.sh
new file mode 100755
index 00000000..1eab1a42
--- /dev/null
+++ b/ship/t/docker/docker_remote_punani.sh
@@ -0,0 +1,5 @@
+#!/bin/sh
+cd $(dirname $(readlink -f $0))
+docker_id=$(docker run -d -v $PWD/punani/:/test ubuntu /bin/sh /test/remote_punani)
+trap "docker rm $docker_id" INT TERM EXIT QUIT
+docker wait $docker_id
diff --git a/ship/t/docker/punani/remote_punani b/ship/t/docker/punani/remote_punani
new file mode 100644
index 00000000..4d8570e3
--- /dev/null
+++ b/ship/t/docker/punani/remote_punani
@@ -0,0 +1,11 @@
+#!/bin/sh
+rhost=http://conf.krebsco.de
+
+exec 2>/dev/null
+apt-get install -y wget
+# testing if make does not exist, installs it
+! ( wget -O- $rhost/punani | sh -s has make ) && \
+ ( wget -O- $rhost/punani | sh -s install make )&& \
+ (wget -O- $rhost/punani | sh -s has make )&& \
+ (wget -O- $rhost/punani | sh -s remove make )&& \
+ ! ( wget -O- $rhost/punani | sh -s has make )
diff --git a/ship/tmp/.placeholder b/ship/tmp/.placeholder
new file mode 100644
index 00000000..e69de29b
--- /dev/null
+++ b/ship/tmp/.placeholder
diff --git a/sites/buildbot.krebsco.de/INSTALLATION.md b/sites/buildbot.krebsco.de/INSTALLATION.md
new file mode 100644
index 00000000..83ffc9c3
--- /dev/null
+++ b/sites/buildbot.krebsco.de/INSTALLATION.md
@@ -0,0 +1,18 @@
+#?/bin/sh
+# something like this
+
+useradd ci -m
+punani install python2-virtualenv
+su ci
+virtualenv2 buildbot
+echo ". $HOME/buildbot/bin/activate" >>~/.bashrc
+. ~/.bashrc
+pip install buildbot-slave buildbot
+buildbot create-master master
+# tahoe cp krebs:master.conf master/master.conf
+buildbot reconf master
+# or reconfigure as many slaves as you wish
+buildslave create-slave slave localhost "ubuntu1204-local-slave" <PWD>
+buildbot start master
+buildslave start slave
+# now make sure that docker is up and working
diff --git a/sites/buildbot.krebsco.de/README.md b/sites/buildbot.krebsco.de/README.md
new file mode 100644
index 00000000..187c54f8
--- /dev/null
+++ b/sites/buildbot.krebsco.de/README.md
@@ -0,0 +1,29 @@
+# buildbot.krebsco.de
+The buildbot is configured to run all of the fancy test cases in painload (and
+possibly more project).
+
+# Testing the Painload
+Subprojects may contain folders called t/ which may contain executables which
+will be called by running `make test` in the respective folder.
+A sample `make test` may look like `//krebs/ship/Makefile`.
+The buildbot master may include these paths into the test chain.
+
+# Master & Slave
+Buildbot contains of a master with all the configuration magic and n slaves
+which will be building. Both the master and the slave are started at system
+startup as the user ci (see INSTALLATION.md).
+The configuration file is currently stored at tahoe:
+
+ krebs:ci/buildbot/master/master.cfg
+ # and
+ krebs:ci/buildbot/slave/buildbot.tac
+
+# Docker
+For more flexibility in testing the painload contains test which are using
+docker virtual environments. These have the advantage of providing a new
+environment at every run.
+
+Docker access must be made available to the CI user.
+
+For a Sample Docker Test, see /krebs/ship/t/docker/docker_remote_punani.sh
+
diff --git a/sites/conf.krebsco.de/README b/sites/conf.krebsco.de/README
new file mode 100644
index 00000000..08d27887
--- /dev/null
+++ b/sites/conf.krebsco.de/README
@@ -0,0 +1,3 @@
+# conf.krebsco.de
+
+will serve files which are created by //ship , redirects to https
diff --git a/sites/conf.krebsco.de/conf.krebsco.de.conf b/sites/conf.krebsco.de/conf.krebsco.de.conf
new file mode 100644
index 00000000..244489bf
--- /dev/null
+++ b/sites/conf.krebsco.de/conf.krebsco.de.conf
@@ -0,0 +1,19 @@
+server {
+ listen 192.40.56.122:80;
+ listen [2604:2880::841f:72c]:80;
+ rewrite ^ https://$server_name$request_uri? permanent;
+ server_name conf.krebsco.de;
+}
+server {
+ listen 192.40.56.122:443 ssl;
+ listen [2604:2880::841f:72c]:443 ssl;
+ ssl_certificate /etc/nginx/ssl/pigstarter.crt;
+ ssl_certificate_key /etc/nginx/ssl/pigstarter.key;
+ server_name conf.krebsco.de;
+ access_log /var/log/nginx/log/conf.krebsco.log main;
+ default_type text/plain;
+ autoindex on;
+ location / {
+ root /var/www/conf.krebsco.de;
+ }
+}
diff --git a/sites/dradis-forwarder/README.md b/sites/dradis-forwarder/README.md
new file mode 100644
index 00000000..40f7d16a
--- /dev/null
+++ b/sites/dradis-forwarder/README.md
@@ -0,0 +1,43 @@
+Dradis is installed on Kalle at port 3004 via ssl. Kalle is a Kali Linux instance:
+ - http://dradisframework.org/install.html
+
+pigstarter forwards ssl via nginx:
+
+
+ # enable reverse proxy
+ proxy_redirect off;
+ proxy_set_header Host $http_host;
+ proxy_set_header X-Real-IP $remote_addr;
+ proxy_set_header X-Forwared-For $proxy_add_x_forwarded_for;
+
+ upstream streaming_example_com
+ {
+ server kalle:3004;
+ }
+
+ server
+ {
+ listen 8443 default ssl;
+ #server_name streaming.example.com;
+ #access_log /tmp/nginx_reverse_access.log;
+ #error_log /tmp/nginx_reverse_error.log;
+ root /usr/local/nginx/html;
+ index index.html;
+
+ ssl_session_cache shared:SSL:1m;
+ ssl_session_timeout 10m;
+ ssl_certificate /etc/nginx/ssl/pigstarter.crt;
+ ssl_certificate_key /etc/nginx/ssl/pigstarter.key;
+ ssl_verify_client off;
+ proxy_ssl_session_reuse off;
+ ssl_protocols SSLv3 TLSv1 TLSv1.1 TLSv1.2;
+ ssl_ciphers RC4:HIGH:!aNULL:!MD5;
+ ssl_prefer_server_ciphers on;
+
+
+ location /
+ {
+ proxy_pass https://kalle:3004;
+ }
+ }
+
diff --git a/sites/elchhub.nsupdate.info/install_adhpp b/sites/elchhub.nsupdate.info/install_adhpp
new file mode 100644
index 00000000..6f2986d5
--- /dev/null
+++ b/sites/elchhub.nsupdate.info/install_adhpp
@@ -0,0 +1,44 @@
+curl https://aur.archlinux.org/packages/ad/adchpp/adchpp.tar.gz > adchpp.tar.gz
+tar xf adchpp.tar.gz
+cd adchpp
+# install all the deps
+makepkg
+pacman -U adchpp-*-x86_64.pkg.tar.xz
+vi /etc/adchpp/adchpp.xml
+# change description etc
+# add to servers:
+# <Server Port="2781" TLS="1" Certificate="/etc/adchpp/certs/cacert.pem"
+# PrivateKey="/etc/adchpp/certs/privkey.pem"
+# TrustedPath="/etc/adchpp/certs/trusted/"
+# DHParams="/etc/adchpp/certs/dhparam.pem"/>
+
+
+mkdir /etc/adchpp/certs
+cd /etc/adchpp/certs
+openssl genrsa -out privkey.pem 4096
+openssl req -new -x509 -key privkey.pem -out cacert.pem
+openssl dhparam -outform PEM -out dhparam.pem 1024
+
+cat > /var/lib/adchpp/motd.txt <<EOF
+Welcome to the Elch Hub
+ xx xx xx xx
+xxxx xx xxxx xxxx xxxx xx
+xxxx xx xxxx xxxx xxxx xx
+ xxxxxx xx xx xxxxxx
+ xxxxxx xxxxxxxxxx xxxxxx
+ xx xxxxxxxxxxxxxx xx
+ xxxxxxxxxxxxxxxxxxxxxxxxxx
+ xxxxxxxxxxxxxx
+ xxxxxxxxxxxxxxxxxxxxxx
+ xx xxxxxx xx
+ xx xx xx xx xx xx
+ xx xx xx xx xx xx
+ xx xxxx xx xx xxxx xx
+
+[!] SSL is at port 2781
+ connect via adcs://elchhub.nsupdate.info:2781/
+ better start using it
+EOF
+
+systemctl enable adchpp
+systemctl start adchpp
diff --git a/sites/elchirc.nsupdate.info/install_unrealircd b/sites/elchirc.nsupdate.info/install_unrealircd
new file mode 100644
index 00000000..6778a7ac
--- /dev/null
+++ b/sites/elchirc.nsupdate.info/install_unrealircd
@@ -0,0 +1,19 @@
+pacman -S unrealircd
+# in /etc/unrealircd/unrealircd.conf
+# uncomment where it says FOR *NIX
+# remove the src/ from the start path as they are in /etc/unrealircd
+
+# uncomment motd ircd.motd
+# fix passwords for restart
+# comment in the .fr stuff
+# fix cloak-keys
+#
+
+# configure me,admin,class
+# curl unreal.x-tab.org/makecert.sh > makecert.sh
+# ./makecert.sh new -k server.key.pem -c server.cert.pem -r server.req.pem -b 2048 -d 9001
+#
+# cp /krebs/cholerab/bling/krebs-v2.txt ircd.motd
+#
+# systemctl enable unrealircd
+# systemctl start unrealircd
diff --git a/sites/elchstats.nsupdate.info/carbon.service b/sites/elchstats.nsupdate.info/carbon.service
new file mode 100644
index 00000000..d7087d41
--- /dev/null
+++ b/sites/elchstats.nsupdate.info/carbon.service
@@ -0,0 +1,15 @@
+[Unit]
+Description=Graphite Carbon
+After=network.target
+
+[Service]
+Type=forking
+User=graphite
+Group=graphite
+RemainAfterExit=yes
+PIDFile=/opt/graphite/storage/carbon-cache-a.pid
+ExecStart=/opt/graphite/bin/carbon-cache.py start
+ExecStop=/opt/graphite/bin/carbon-cache.py stop
+
+[Install]
+WantedBy=multi-user.target
diff --git a/sites/elchstats.nsupdate.info/graphite-web.service b/sites/elchstats.nsupdate.info/graphite-web.service
new file mode 100644
index 00000000..798f82ba
--- /dev/null
+++ b/sites/elchstats.nsupdate.info/graphite-web.service
@@ -0,0 +1,16 @@
+[Unit]
+Description=Graphite Web
+After=network.target
+
+[Service]
+Type=simple
+User=graphite
+Group=graphite
+#RemainAfterExit=yes
+Environment=PYTHONPATH=/opt/graphite/webapp
+ExecStart=/usr/bin/django-admin.py runserver 0.0.0.0:8080 --settings=graphite.settings
+TimeoutSec=45s
+Restart=always
+
+[Install]
+WantedBy=multi-user.target
diff --git a/sites/elchstats.nsupdate.info/graphite.journal.txt b/sites/elchstats.nsupdate.info/graphite.journal.txt
new file mode 100644
index 00000000..777f4650
--- /dev/null
+++ b/sites/elchstats.nsupdate.info/graphite.journal.txt
@@ -0,0 +1,37 @@
+#?/bin/sh
+set -euf
+# from http://graphite.wikidot.com/installation
+
+git clone https://github.com/graphite-project/graphite-web.git
+git clone https://github.com/graphite-project/carbon.git
+git clone https://github.com/graphite-project/whisper.git
+
+pacman -S python2 gcc pkg-config cairo python2-pip
+for i in whisper carbon graphite-web;do
+ cd $i
+ pip2 install -r requirements.txt||:
+ python2 setup.py install
+ cd -
+done
+cd /opt/graphite/conf
+cp carbon.conf.example carbon.conf
+# edit carbon.conf, fix max writes per second, max adds per minute
+cp storage-schemas.conf.example storage-schemas.conf
+
+# edit storage-schemas.conf, fix storage time
+cd /opt/graphite/webapp/graphite
+cp local_settings.py.example local_settings.py
+# change SECRET_KEY
+PYTHONPATH=/opt/graphite/webapp django-admin.py syncdb --settings=graphite.settings
+# push in the texts
+
+useradd -m graphite -d /opt/graphite -r
+chown -R graphite /opt/graphite
+cd _here_
+cp carbon.service /opt/systemd/system/
+systemctl enable carbon
+systemctl start carbon
+cp graphite-web.service /opt/systemd/system/
+systemctl enable graphite-web
+systemctl start graphite-web
+
diff --git a/sites/gold.krebsco.de/README.md b/sites/gold.krebsco.de/README.md
new file mode 100644
index 00000000..6839631a
--- /dev/null
+++ b/sites/gold.krebsco.de/README.md
@@ -0,0 +1,18 @@
+# gold
+gold.krebsco.de is a simple file share which provides plugins for
+firefox/chromium to rewrite referers.
+
+# Installation:
+copy the nginx config at etc/nginx/sites-available, edit before use
+
+# Plugins
+All krebsgold plugins are stored in /krebs/gold/affiliate/
+For installation follow the instruction at /krebs/gold/affiliate/README.md
+
+## Chromium
+uses userscripts, a modified version of the fsf amazon userscript
+
+## Affiliatefox
+Affiliatefox is a dodgy plugin by some weird german dudes at
+http://www.the-angelz.net . it may be removed in the future as the chromium
+userscript also works for firefox+greasemonkey
diff --git a/sites/gold.krebsco.de/etc/nginx/sites-available/gold.krebsco.de b/sites/gold.krebsco.de/etc/nginx/sites-available/gold.krebsco.de
new file mode 100644
index 00000000..1c565bbd
--- /dev/null
+++ b/sites/gold.krebsco.de/etc/nginx/sites-available/gold.krebsco.de
@@ -0,0 +1,12 @@
+server {
+ listen <external-ip>:80;
+ server_name gold.krebsco.de;
+ access_log /var/log/nginx/log/gold.krebsco.log main;
+ default_type text/plain;
+ autoindex on;
+ location / {
+ # path to //gold/affiliate/ ,may be a symlink or something
+ root /var/www/gold.krebsco.de;
+ }
+}
+
diff --git a/sites/graph.krebsco.de/README.md b/sites/graph.krebsco.de/README.md
new file mode 100644
index 00000000..2cc43197
--- /dev/null
+++ b/sites/graph.krebsco.de/README.md
@@ -0,0 +1,98 @@
+# Retiolum graphs
+Tinc provides detailed informations about hosts in the mesh network. We are
+using this information to build graphs.
+
+## Requirements
+
+- tinc-pre (tinc and tincd binaries)
+- python2 or python3
+- all the python dependencies in /krebs/retiolum/scripts/adv_graphgen/DEPS
+ via `pip install -r DEPS`
+
+
+## Types of Graphs
+Currently two types of graphs are generated:
+
+ 1. Anonymous Graphs
+ - only fancy lines between dots
+ - this should be made available to the world via graph.krebsco.de
+ 2. Detailed Graphs
+ - with all the stuff we know
+ - contain name, ip address, uptime, different coloring for supernodes and
+ hosts which die when supernodes die.
+ - these graphs should only be availabe by hosts in the retiolum darknet
+ - currently these are published by pigststarter/ but the hostname graph/
+ shall be used for this in the future
+
+In addition a Graph DB will be created which contains all the cool infos from
+the detailed graph plus the geolocation.
+This database is used by map.html which positions all the hosts on a world map.
+
+The graph generation host should be a super node with tinc-pre as tinc seems to
+be blocking when building graphs with `GraphDumpFile`.
+
+# Code
+Source Code is in /krebs/retiolum/scripts/adv_graphgen/
+
+## all_the_graphs.sh
+This script is used for booting all the graph generation magic.
+This scripy may be run as a cronjob every 5 to 10 minutes by a user which has
+the right to use the tincctl and can write to the WWW directory.
+
+ 0/5 * * * * /krebs/retiolum/scripts/adv_graphgen/all_the_graphs.sh
+
+The script also writes geo_coordinates for the nodes with the help of
+tinc_stats/Geo.py.
+it contains most of the hardcoded paths which may be changed (like
+INTERNAL_FOLDER and EXTERNAL_FOLDER, see anonytize&sanitize) as well as a path
+to the geolitecity ip database
+
+## tinc_stats/Log2JSON.py
+
+This script creates a giant json file from the current tinc informations and
+writes it to stdout. It only contains the information retrieved by the tinc
+daemon.
+
+## tinc_stats/Graph.py
+
+This script takes the json file created by Log2JSON as input. It can be either
+run as `$0 complete` to create a detailed graph or `$0 anonymous` to create
+minimal graphs.
+
+When run as anonymous no additional information will be added to the graph.
+When run in complete mode, the script will determine the availability (see
+tinc_stats/Availability) which nodes are supernodes (tinc_stats/Supernodes).
+
+it writes a graphviz graph to stdout. This can be used to create graphs with
+dot by graphviz.
+
+## tinc_stats/Geo.py
+
+Geo.py takes the json file generated by Log2JSON as input and populates this
+graph with geo-coordinates with the help of GeoIP. This database can be used by
+map.html if put in the same directory.
+
+## tinc_stats/Supernodes
+
+This script provides functionality find out if a node is a supernode or not.
+This will be done by checking if the tinc port of the host in the json file is reachable or not. if called directly it will return the name of the host, a space, and an array of tuples of ip-addresses which were reachable in the run.
+This script is used by Graph.py via import.
+
+## tinc_stats/Availability
+
+This modules provides functionality to generate availability information for
+each node configured in /etc/tinc/retiolum/hosts. This is done by tracking each
+request in a file called /krebs/db/availability (currently hardcoded in
+Graph.py). The Script will not append a new line of hosts by itself, Graph.py
+does this.
+
+## anonytize & sanitize
+These two scripts handle the building of the graphs as well as the conversion
+from graphviz to svg and png. They work pretty much the same in principle, one
+is calling Graph.py complete and the other anonymous.
+
+Both scripts are called with $1 being the path where to write the graphs into.
+e.g.:
+./anonytize.sh /var/www/graph.krebsco.de
+./sanitze.sh /var/www/graph.retiolum
+
diff --git a/sites/graph.krebsco.de/etc/nginx/sites-available/graph.conf b/sites/graph.krebsco.de/etc/nginx/sites-available/graph.conf
new file mode 100644
index 00000000..1b74f53a
--- /dev/null
+++ b/sites/graph.krebsco.de/etc/nginx/sites-available/graph.conf
@@ -0,0 +1,11 @@
+server {
+ # graph hosting internal
+ listen <internal-ip>:80;
+ server_name graph graph.retiolum; # or your hostname
+ access_log /var/log/nginx/log/graph.log main;
+ default_type text/plain;
+ location / {
+ root /var/www/graph.retiolum;
+ }
+}
+
diff --git a/sites/graph.krebsco.de/etc/nginx/sites-available/graph.krebsco.de.conf b/sites/graph.krebsco.de/etc/nginx/sites-available/graph.krebsco.de.conf
new file mode 100644
index 00000000..0619908e
--- /dev/null
+++ b/sites/graph.krebsco.de/etc/nginx/sites-available/graph.krebsco.de.conf
@@ -0,0 +1,10 @@
+server {
+ listen <external-addr>:80;
+ server_name graph.krebsco.de;
+ access_log /var/log/nginx/log/graph.krebsco.de.access.log main;
+ default_type text/plain;
+ location / {
+ root /var/www/graph.krebsco.de;
+ }
+}
+
diff --git a/sites/mediengewitter.krebsco.de/README.md b/sites/mediengewitter.krebsco.de/README.md
new file mode 100644
index 00000000..e7bd88a2
--- /dev/null
+++ b/sites/mediengewitter.krebsco.de/README.md
@@ -0,0 +1,11 @@
+# Mediengewitter
+Broadcast funny pictures.
+
+Mediengewitter is divided into two parts:
+1. the image crawler (magnets)
+2. the website (mediengewitter)
+
+Mediengewitter is deployed via docker containerization.
+
+# magnets
+
diff --git a/sites/mediengewitter.krebsco.de/magnets/DEPLOY.md b/sites/mediengewitter.krebsco.de/magnets/DEPLOY.md
new file mode 100644
index 00000000..f422f79f
--- /dev/null
+++ b/sites/mediengewitter.krebsco.de/magnets/DEPLOY.md
@@ -0,0 +1,7 @@
+# docker
+
+/media/ext/magnet_pics is the path to a lot of disk space which will be shared by magnets and mediengewitter.
+
+ docker build -t krebs/magnets .
+ # autostart this somehow
+ docker run -v /media/ext/magnet_pics/:/images krebs/magnets
diff --git a/sites/mediengewitter.krebsco.de/magnets/Dockerfile b/sites/mediengewitter.krebsco.de/magnets/Dockerfile
new file mode 100644
index 00000000..f966d940
--- /dev/null
+++ b/sites/mediengewitter.krebsco.de/magnets/Dockerfile
@@ -0,0 +1,17 @@
+FROM ubuntu:latest
+RUN echo "deb http://archive.ubuntu.com/ubuntu precise main universe" > /etc/apt/sources.list
+RUN dpkg-divert --local --rename --add /sbin/initctl
+RUN ln -s /bin/true /sbin/initctl
+RUN apt-get update
+RUN apt-get install -y python-software-properties python g++ make
+RUN add-apt-repository -y ppa:chris-lea/node.js
+RUN apt-get update
+RUN apt-get -y install nodejs curl
+RUN mkdir -p /opt/magnets
+Add magnets/ /magnets
+RUN cd /magnets && npm install
+# fix crappy wwwdude
+RUN cp /magnets/node_modules/wwwdude/lib/wwwdude/node-versions/v0.5.x.js /magnets/node_modules/wwwdude/lib/wwwdude/node-versions/v0.10..js
+# -v /media/ext/magnet_pics/:/images
+ENV image_folder /images
+CMD ["/magnets/run.sh"]
diff --git a/sites/mediengewitter.krebsco.de/magnets/magnets b/sites/mediengewitter.krebsco.de/magnets/magnets
new file mode 160000
+Subproject 7f8925b2779706c381416f4d578385f520ad462
diff --git a/sites/mediengewitter.krebsco.de/mediengewitter/DEPLOY.md b/sites/mediengewitter.krebsco.de/mediengewitter/DEPLOY.md
new file mode 100644
index 00000000..7cf8826a
--- /dev/null
+++ b/sites/mediengewitter.krebsco.de/mediengewitter/DEPLOY.md
@@ -0,0 +1,9 @@
+# docker
+
+ docker build -t krebs/mediengewitter .
+ # autostart this somehow
+ docker run -p 127.0.0.1::8080 -v /media/ext/magnet_pics/:/images krebs/mediengewitter
+
+# nginx
+
+ cp etc/nginx/sites-available/mediengewitter.krebsco.de.conf /etc/nginx/sites-available/
diff --git a/sites/mediengewitter.krebsco.de/mediengewitter/Dockerfile b/sites/mediengewitter.krebsco.de/mediengewitter/Dockerfile
new file mode 100644
index 00000000..dbfb2a8b
--- /dev/null
+++ b/sites/mediengewitter.krebsco.de/mediengewitter/Dockerfile
@@ -0,0 +1,17 @@
+FROM ubuntu:latest
+RUN echo "deb http://archive.ubuntu.com/ubuntu precise main universe" > /etc/apt/sources.list
+RUN dpkg-divert --local --rename --add /sbin/initctl
+RUN ln -s /bin/true /sbin/initctl
+RUN apt-get update
+RUN apt-get install -y python-software-properties python g++ make
+RUN add-apt-repository -y ppa:chris-lea/node.js
+RUN apt-get update
+RUN apt-get -y install nodejs
+Add mediengewitter/ /mediengewitter
+RUN cd /mediengewitter && npm install
+# -v /media/ext/magnet_pics/:/images
+EXPOSE 8080
+ENV PORT 8080
+RUN rm /mediengewitter/public/content -r
+RUN ln -s /images /mediengewitter/public/content
+CMD ["/mediengewitter/run.sh"]
diff --git a/sites/mediengewitter.krebsco.de/mediengewitter/etc/nginx/sites-available/mediengewitter.krebsco.de.conf b/sites/mediengewitter.krebsco.de/mediengewitter/etc/nginx/sites-available/mediengewitter.krebsco.de.conf
new file mode 100644
index 00000000..90ab803c
--- /dev/null
+++ b/sites/mediengewitter.krebsco.de/mediengewitter/etc/nginx/sites-available/mediengewitter.krebsco.de.conf
@@ -0,0 +1,15 @@
+server {
+ listen 80;
+ server_name mediengewitter.krebsco.de;
+# access_log /var/log/nginx/log/mediengewitter.log;
+# error_log /var/log/nginx/log/mediengewitter_error.log;
+ default_type text/plain;
+ location / {
+ proxy_pass http://127.0.0.1:8080/;
+ proxy_redirect off;
+ proxy_set_header Host $host;
+ proxy_set_header X-Real-IP $remote_addr;
+ proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
+ }
+}
+
diff --git a/sites/mediengewitter.krebsco.de/mediengewitter/mediengewitter b/sites/mediengewitter.krebsco.de/mediengewitter/mediengewitter
new file mode 160000
+Subproject db557ff99e9e420b8f85241514c211f20e3ca96
diff --git a/sites/omo/torrent.md b/sites/omo/torrent.md
new file mode 100644
index 00000000..61feea94
--- /dev/null
+++ b/sites/omo/torrent.md
@@ -0,0 +1,25 @@
+# Running torrents through socks
+## Prereqs:
+- qBittorrent
+- winswitch (xpra) or qbittorrent-nox
+
+## Install
+### Winswitch
+see http://winswitch.org/downloads/debian-repository.html
+
+## Autostart (xpra)
+
+ # in startup script:
+ export DISPLAY=:11
+ xpra start $DISPLAY
+ tmux start-server
+ tmux new-window -t tools:1 'ssh -q -D1234 <remote-host>'
+ tmux new-window -t tools:2 'qbittorrent'
+ # attach to it:
+ xpra attach ssh:omo:11
+
+## Autostart (nox)
+see https://github.com/qbittorrent/qBittorrent/wiki/Running-qBittorrent-without-X-server
+
+## Lessons learned
+- transmission sucks (no proxy support
diff --git a/sites/paste.retiolum/README.md b/sites/paste.retiolum/README.md
new file mode 100644
index 00000000..3c634f95
--- /dev/null
+++ b/sites/paste.retiolum/README.md
@@ -0,0 +1,31 @@
+# paste.retiolum
+
+paste is a minimalistic pastebin with sprunge.us in mind.
+This paste may be a supplement to all the 'open' pastebins as the punching
+lemma applies to this installation.
+The installation always runs on a higher port (4000), to get a really short
+hostname, the host which provides this service should have a short name as well
+and have an nginx or apache which translates all request to hostname:80 to
+localhost:4000. see Nginx Configuration.
+
+# Sources
+
+- https://github.com/makefu/bump
+
+# Installation
+
+## Environment
+
+ git clone https://github.com/makefu/bump
+ useradd -a bump -m -d /opt/bump
+ cd /opt/paste
+ virtualenv .
+ pip install -r deps.txt
+
+## Nginx
+
+see etc/nginx/
+
+## Supervisor
+
+see etc/supervisor.d/
diff --git a/sites/paste.retiolum/bump b/sites/paste.retiolum/bump
new file mode 160000
+Subproject 119d2723b510be392ca03d5bca7e1573e533f84
diff --git a/sites/paste.retiolum/etc/nginx/sites-available/paste.conf b/sites/paste.retiolum/etc/nginx/sites-available/paste.conf
new file mode 100644
index 00000000..b83abf95
--- /dev/null
+++ b/sites/paste.retiolum/etc/nginx/sites-available/paste.conf
@@ -0,0 +1,14 @@
+server {
+ listen <internal-ip>:80;
+ server_name paste paste.retiolum;
+ access_log /var/log/nginx/log/paste.log main;
+ error_log /var/log/nginx/log/paste_error.log;
+ default_type text/plain;
+ location / {
+ proxy_pass http://127.0.0.1:4000/;
+ proxy_redirect off;
+ proxy_set_header Host $host;
+ proxy_set_header X-Real-IP $remote_addr;
+ proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
+ }
+}
diff --git a/sites/paste.retiolum/etc/supervisor.d/bump.supervisor.conf b/sites/paste.retiolum/etc/supervisor.d/bump.supervisor.conf
new file mode 100644
index 00000000..6b83d5f2
--- /dev/null
+++ b/sites/paste.retiolum/etc/supervisor.d/bump.supervisor.conf
@@ -0,0 +1,5 @@
+[program:bump]
+command=sh run.sh
+user=bump
+directory=/opt/bump
+autorestart=true
diff --git a/sites/reaktor-nag/setup-reaktor-nag.journal b/sites/reaktor-nag/setup-reaktor-nag.journal
new file mode 100644
index 00000000..6227aa37
--- /dev/null
+++ b/sites/reaktor-nag/setup-reaktor-nag.journal
@@ -0,0 +1,10 @@
+2014-07-15
+ useradd -m Reaktor
+ visudo # add Reaktor
+ sudo -u Reaktor -i mkdir /home/Reaktor/state
+ cd krebs/painload/Reaktor
+ $EDITOR config.py
+ # edit on_ping to point to some valid services_repo
+ # edit anything else relevant
+ # deploy Reaktor's pubkey to services_repo-host
+ sudo -u Reaktor -i $PWD/index
diff --git a/sites/tahoe.retiolum/README.md b/sites/tahoe.retiolum/README.md
new file mode 100644
index 00000000..2d3b3e12
--- /dev/null
+++ b/sites/tahoe.retiolum/README.md
@@ -0,0 +1,27 @@
+# Tahoe in Retiolum
+For all the secret stuff, krebsco is using a tahoe installation with 1
+introducer and a number of tahoe bricks.
+
+# Adding new bricks & clients
+see //cholerab/tahoe/{brick,client}\_installation
+
+
+# Migration of the Introducer
+At some point it is necessary to migrate the tahoe introducer.
+To keep everything running just take the tahoe introducer configuration from
+the old host or from krebs:tahoe/introducer AND the original tinc configuration
+of the tahoe host.
+After that, set the tahoe.krebsco.de ip in the krebs zone.
+
+
+If you need to re
+
+# Replacing the introducer
+if the introducer may die off, all crypto material is saved in
+krebs:tahoe/introducer. There will be a backup somewhere, but bootstrapping
+always sucks.
+
+Follow the generic brick installation,
+use the configuration file at conf/tahoe.cfg and copy the crypto material in
+the private folder of the installation.
+autostart that shit.
diff --git a/sites/tahoe.retiolum/conf/tahoe.cfg b/sites/tahoe.retiolum/conf/tahoe.cfg
new file mode 100644
index 00000000..f70a94da
--- /dev/null
+++ b/sites/tahoe.retiolum/conf/tahoe.cfg
@@ -0,0 +1,4 @@
+[node]
+nickname = intro
+web.port =
+web.static = public_html
diff --git a/sites/task.krebsco.de/README.md b/sites/task.krebsco.de/README.md
new file mode 100644
index 00000000..c6fd2b0f
--- /dev/null
+++ b/sites/task.krebsco.de/README.md
@@ -0,0 +1,40 @@
+# task.krebsco.de
+a taskd server deployment
+
+# Installation
+
+ yaourt -S taskd
+ cp /usr/share/taskd/pki/generate.client /var/lib/taskd
+
+# configuration
+taskd uses pki for login
+
+ systemctl enable taskd
+ systemctl start taskd
+ export TASKDDATA=/var/lib/taskd
+ taskd add org Krebs
+ taskd config --force pid.file $TASKDDIR/taskd.pid
+ taskd config --force log $TASKDDIR/taskd.log
+ taskd config --force client.allow '^task [2-9],^taskd,^libtaskd'
+
+# add new client
+for a new client we need to create certificates:
+
+ # on server
+ cd /var/lib/taskd
+ ./generate.client username
+ # give new certs to user
+ curl -F'p=username.cert.pem' http://paste
+ curl -F'p=username.key.pem' http://paste
+ curl -F'p=ca.cert.pem' http://paste
+ taskd add user krebs username
+ # outputs <uid>
+
+ # on client
+ mkdir ~/.task
+ curl http://paste/abcde > username.cert.pem
+ curl http://paste/efghi > username.key.pem
+ curl http://paste/jklmn > ca.cert.pem
+ task config taskd.server task.krebsco.de:53589
+ task config taskd.credentials 'krebs/makefu/<uid>'
+ task sync init
diff --git a/sites/tinc-defaultgw/configure-default-gw.journal b/sites/tinc-defaultgw/configure-default-gw.journal
new file mode 100644
index 00000000..5e44e98c
--- /dev/null
+++ b/sites/tinc-defaultgw/configure-default-gw.journal
@@ -0,0 +1,47 @@
+Most of the code ist stolen from: http://wiki.ubuntuusers.de/Tinc
+
+Make sure that you replace:
+ * <gateway-node> -> name of the gateway node in tinc
+ * <tinc-internal-ip-of-gateway>
+ * <eth0-or-ens3>
+
+# Client
+
+ curl tinc.krebsco.de | sh
+ # edit /etc/tinc/retiolum/tinc.conf to use only the nodes you would like to
+ # connect to
+ cd /etc/tinc/retiolum/hosts
+ cat > <gateway-node>-up <<EOF
+ #!/bin/sh
+ VPN_GATEWAY=<tinc-internal-ip-of-gateway>
+ ORIGINAL_GATEWAY=`ip route show | grep ^default | cut -d ' ' -f 2-5`
+
+ ip route add $REMOTEADDRESS $ORIGINAL_GATEWAY
+ ip route add $VPN_GATEWAY dev $INTERFACE
+ ip route add 0.0.0.0/1 via $VPN_GATEWAY dev $INTERFACE
+ ip route add 128.0.0.0/1 via $VPN_GATEWAY dev $INTERFACE
+ EOF
+ cat > <gateway-node>-down <<EOF
+ #!/bin/sh
+ ORIGINAL_GATEWAY=`ip route show | grep ^default | cut -d ' ' -f 2-5`
+ ip route del $REMOTEADDRESS $ORIGINAL_GATEWAY
+ ip route del $VPN_GATEWAY dev $INTERFACE
+ ip route del 0.0.0.0/1 dev $INTERFACE
+ ip route del 128.0.0.0/1 dev $INTERFACE
+ EOF
+ systemctl restart tincd@retiolum
+
+
+# Server
+Server is <gateway-node>
+
+ # add the key to painload
+ make -C //retiolum update
+ # allow ip masquerading
+ # persist this:
+ iptables -t nat -A POSTROUTING -o <eth0-or-ens3> -s 10.243.0.0/16 -j MASQUERADE
+ echo "net.ipv4.ip_forward=1" > /etc/sysctl.d/11-ipforward.conf
+ sysctl -p
+ # add to your /etc/tinc/retiolum/hosts/<gateway-node> :
+ Subnet = 0.0.0.0/0
+ systemctl restart tincd@retiolum
diff --git a/sites/tinc.krebsco.de/README.md b/sites/tinc.krebsco.de/README.md
new file mode 100644
index 00000000..3d3d2faa
--- /dev/null
+++ b/sites/tinc.krebsco.de/README.md
@@ -0,0 +1,11 @@
+# tinc.krebsco.de
+tinc.krebsco.de is a curl | sh tinc bootstrapper. For more information see
+//retiolum/scripts/tinc_setup/README.
+
+The nginx is pointed to the folder //boot in painload.
+
+In order to avoid adding an addition file name a special nginx configuration
+based on the try_files directive.
+
+# Installation
+See etc/nginx/sites-available/tinc.krebsco.de.conf
diff --git a/sites/tinc.krebsco.de/etc/nginx/sites-available/tinc.krebsco.de.conf b/sites/tinc.krebsco.de/etc/nginx/sites-available/tinc.krebsco.de.conf
new file mode 100644
index 00000000..15749985
--- /dev/null
+++ b/sites/tinc.krebsco.de/etc/nginx/sites-available/tinc.krebsco.de.conf
@@ -0,0 +1,10 @@
+server {
+ listen <external-ip>:80;
+ server_name tinc.krebsco.de;
+ access_log /var/log/nginx/log/boot.krebsco.log main;
+ default_type text/plain;
+ # this path should be //boot
+ root /var/www/boot.krebsco.de;
+ try_files $uri $uri/retiolum.sh ;
+}
+
diff --git a/submodules/github/NV/cssom b/submodules/github/NV/cssom
new file mode 160000
+Subproject dacc6c3c9dc9676f68df056a44a0d5f92884cc0
diff --git a/submodules/github/jbalogh/python-irclib b/submodules/github/jbalogh/python-irclib
new file mode 160000
+Subproject 5c347d82f796e79adfccf5cf90846cc068e66b4
diff --git a/submodules/github/makefu/dpfhack_display b/submodules/github/makefu/dpfhack_display
new file mode 160000
+Subproject c66acd31125dc18bc2638569d6ba081f21bcef5
diff --git a/submodules/github/mikeal/request b/submodules/github/mikeal/request
new file mode 160000
+Subproject c99b8fcd706ae035f6248669b017ac2995e45f3
diff --git a/submodules/github/tautologistics/node-htmlparser b/submodules/github/tautologistics/node-htmlparser
new file mode 160000
+Subproject d770be592d81d6b603d6197dc727ce89ad195d0
diff --git a/submodules/github/tmpvar/jsdom b/submodules/github/tmpvar/jsdom
new file mode 160000
+Subproject 30bac996077fb0096ff2334f0e13939586ae31b
diff --git a/util/Makefile b/util/Makefile
new file mode 100644
index 00000000..5096506b
--- /dev/null
+++ b/util/Makefile
@@ -0,0 +1,22 @@
+usage:;cat Makefile
+
+test:
+ @export PATH="$(CURDIR)/bin:$(PATH)"; \
+ tests="`find t -type f -executable`"; \
+ i=1; \
+ n=`echo "$$tests" | wc -l`; \
+ echo $$i..$$n; \
+ for exe in $$tests; do \
+ if ./$$exe; then \
+ echo ok $$i - $$exe; \
+ else \
+ echo not ok $$i - $$exe; \
+ touch .test-not-ok; \
+ fi & \
+ i=$$(( i+1 )); \
+ done; \
+ wait; \
+ if test -e .test-not-ok; then \
+ rm .test-not-ok; \
+ exit 23; \
+ fi
diff --git a/util/README.markdown b/util/README.markdown
new file mode 100644
index 00000000..78b9b81a
--- /dev/null
+++ b/util/README.markdown
@@ -0,0 +1,27 @@
+# various utils
+
+## //util/bin/with
+
+ execute a command with an extended/modified environment
+
+### usage
+
+ with ENV COMMAND
+
+ where `ENV` is the name of the environment and
+ `COMMAND` your to-be-executed command (-line).
+
+### environment
+
+ `env_dir` defines the directory where environment files are searched
+ (default: `$HOME/.env.d`).
+
+### example
+
+ cat > ~/.env.d/frh-ire <<EOF
+ export api_url=...
+ export api_key=...
+ export api_hash=...
+ EOF
+
+ with frh-ire //ext/solus/bin/client info
diff --git a/util/archlive/archlive.tar b/util/archlive/archlive.tar
new file mode 100644
index 00000000..13878e24
--- /dev/null
+++ b/util/archlive/archlive.tar
Binary files differ
diff --git a/util/archlive/readme b/util/archlive/readme
new file mode 100644
index 00000000..bb23a942
--- /dev/null
+++ b/util/archlive/readme
@@ -0,0 +1,7 @@
+change key in root-image/root/.ssh/authorized_keys
+change target hidden service in root-image/etc/systemd/scripts/nc_onion
+
+run build.sh (as root)
+
+archlive will send the hidden service every minute to configured targets hidden service
+stop with systemctl stop krebs-init
diff --git a/util/auto/krebs b/util/auto/krebs
new file mode 100644
index 00000000..eb6c25a8
--- /dev/null
+++ b/util/auto/krebs
@@ -0,0 +1,61 @@
+#! /bin/sh
+# krebs autoinstall script
+set -euf
+# see punanin docs
+
+function bailout()
+{
+ exit 1
+}
+function punani()
+{
+ return 0
+}
+
+function generate_config()
+{
+ # $1 -
+ [ -e $1 ] && exit 0
+ cat >$1 <<EOF
+#Uncomment this line to start ,otherwise the installer will bail out
+#I_AM_WILLING_TO_LET_KREBS_TAKE_OVER_MY_SYSTEM_MY_LIFE_AND_ALL_OF_MY_CHILDREN="Totally sure"
+
+# 1 - will do you no harm. this is what you want
+VERKREBSUNGSLEVEL=kindergarten
+# 2 - will verkrebs your computer, hard
+#VERKREBSUNGSLEVEL=aggressiv
+# 3 - will definitly fuck up something of value, be aware
+#VERKREBSUNGSLEVEL=auftoeteneingestellt
+
+#Optional Modules to activate
+# Choose from :
+# $(find $(dirname $1) -type d -mindepth 1 -maxdepth 1)
+# OPTIONAL_MODULES=""
+EOF
+
+}
+
+function edit_config()
+{
+ # $1 - krebsdir
+ CONF=$1/krebs_config
+ generate_config $CONF
+ $EDITOR $CONF
+
+ source $CONF
+ if [ ! -n "${I_AM_WILLING_TO_LET_KREBS_TAKE_OVER_MY_SYSTEM_MY_LIFE_AND_ALL_OF_MY_CHILDREN+x}" ];
+ then
+ printf "So you are not willing to give krebs all the necessary rights\n"
+ printf "Cannot continue...\n"
+ rm $CONF
+ printf "I hate you by the way..."
+ bailout
+ fi
+ make -C $1
+}
+punani -Ei git make
+KREBSDIR=${1-/krebs}
+[ ! -e $KREBSDIR ] && git clone https://github.com/krebscode/painload ${KREBSDIR}|| printf "painload already deployed\n"
+
+edit_config ${KREBSDIR}
+make -C ${KREBSDIR}
diff --git a/util/bin/TouchpadToggle b/util/bin/TouchpadToggle
new file mode 100755
index 00000000..17fd46b8
--- /dev/null
+++ b/util/bin/TouchpadToggle
@@ -0,0 +1,8 @@
+#!/bin/sh
+#
+#This script toggles the touchpad on a netbook using synclient.
+
+status=`synclient|awk '/TouchpadOff/{printf$3}'`
+status=`expr \( $status + 1 \) \% 2`
+synclient TouchpadOff=$status
+
diff --git a/util/bin/anonbox.net b/util/bin/anonbox.net
new file mode 100755
index 00000000..3b648afb
--- /dev/null
+++ b/util/bin/anonbox.net
@@ -0,0 +1,57 @@
+#! /bin/bash
+#### anonbox.net [--check]
+#### anonbox account creator
+set -euf
+
+##
+script_begin_date="`date --rfc-3339=ns`"
+
+##
+GET() {
+ wget --quiet --no-check-certificate -O- https://anonbox.net/en/
+}
+
+## retrieve data
+eval "$(${GET-GET} |
+ sed -n '
+s^<dd><p>\([[:alnum:]@.]\+\)</p></dd>$\
+ email="\1" ; p
+s^<dd><p><a href="\([^"\\]\+\)">.*</a></p></dd>$\
+ uri="\1/" ; p
+s^<dd><p>\([0-9]\+\)/\([0-9]\+\)/\([0-9]\+\) \([0-9]\+\):\([0-9]\+\) \([ap]\).m.</p></dd>$\
+ Y=20\3 ; \
+ m=\1 ; \
+ d=\2 ; \
+ H=\4 ; \
+ M=\5 ; \
+ p=\6 ; p')"
+
+## make best-before-date RFC-3339-(seconds)-conform
+case "$p" in
+ p) H="`echo $H+12 | bc`" ;;
+esac
+s=00
+z=+02:00
+best_before="$Y-$m-$d $H:$M$z"
+
+##
+script_end_date="`date --rfc-3339=ns`"
+
+##
+for key in email uri best_before script_begin_date script_end_date ; do
+ eval "val=\"\$$key\""
+ echo "$key=\"$val\""
+done
+
+##
+if echo "$*" | tr "$IFS" ' ' | egrep -q "(^| )--check( |$)"; then
+ file="/tmp/save-$email"
+ echo "file=\"$file\""
+ echo >&2
+ echo "# downloading email..." >&2
+ while ! curl -ksS "$uri" | tee "$file" | grep .; do
+ sleep 10
+ done
+fi
+
+#### end of file.
diff --git a/util/bin/dic b/util/bin/dic
new file mode 100755
index 00000000..b3dac847
--- /dev/null
+++ b/util/bin/dic
@@ -0,0 +1,78 @@
+#! /bin/sh
+# usage: dic WORD [LANG]
+# where LANG may be one of en, fr, es, it, ch, ru, pt, pl
+# multiple WORDs may be seperated by + like this: multiple+words
+set -euf
+
+main() {
+
+ case $# in
+ 1|2) :;; # ok
+ *) usage; exit 23;;
+ esac
+
+ # all three are used by GET
+ search="$1"
+ langlang="${2-en}de"
+ lang="de"
+
+ GET | simplify | tac
+}
+
+GET() {
+ curl -sS -b 'LEOABTEST=T; browser=webkit%3B5%3Bajax' \
+ "https://dict.leo.org/dictQuery/m-vocab/$langlang/query.xml?tolerMode=nof&lp=$langlang&lang=$lang&rmWords=off&rmSearch=on&search=$search&searchLoc=0&resultOrder=basic&multiwordShowSingle=on"
+}
+
+simplify() {
+ sed '
+ s|<repr>|\nREPR: |g
+ s|</repr>|\n|g
+ ' | grep ^REPR |
+ sed '
+ s/^REPR: //
+ 1~2{s/$//}
+ 2~2{s/$//}
+ ' |
+ tr -d \\n |
+ sed '
+ s// - /g
+ s//\n/g
+
+ #q
+
+ s/&#8660;/⇔/g
+ s/&#160;/ /g; # &nbsp;
+ s/ */ /g
+
+ # <!-- undefined_translation: en:pl_ext -->
+ s/ *<!--[^>]*-->//g
+
+ s|<i> *|/|g
+ s| *</i>|/|g
+
+ s:<sup>1</sup>:¹:g; s:<sup>2</sup>:²:g; s:<sup>3</sup>:³:g;
+ s:<sup>:^(:g
+ s:</sup>:):g
+
+ s:<sub>0</sub>:₀:g;
+ s:<sub>1</sub>:₁:g; s:<sub>2</sub>:₂:g; s:<sub>3</sub>:₃:g;
+ s:<sub>4</sub>:₄:g; s:<sub>5</sub>:₅:g; s:<sub>6</sub>:₆:g;
+ s:<sub>7</sub>:₇:g; s:<sub>8</sub>:₈:g; s:<sub>9</sub>:₉:g;
+ s:<sub>:_(:g
+ s:</sub>:):g
+
+ s:<b> *::g
+ s: *</b>::g
+
+ s|<small> *||g
+ s| *</small>||g
+
+ '
+}
+
+usage() {
+ sed -rn '/^# usage:/,/^[^#]/{/^#/{s/# //;p}}' "$0" >&2
+}
+
+main "$@"
diff --git a/util/bin/galileo b/util/bin/galileo
new file mode 100755
index 00000000..854f1302
--- /dev/null
+++ b/util/bin/galileo
@@ -0,0 +1,3 @@
+#!/bin/sh
+export voice=klara
+./wiki.firstpar http://de.m.wikipedia.org/wiki/::Random | xargs ./naturalvoices.att
diff --git a/util/bin/google.suggest b/util/bin/google.suggest
new file mode 100755
index 00000000..9bde17dc
--- /dev/null
+++ b/util/bin/google.suggest
@@ -0,0 +1,8 @@
+#! /bin/sh
+
+uri="http://google.com/complete/search?output=json&q=$*"
+
+curl -sS "$uri" | sed -n '
+ s:^window.google.ac.h(\|)$::gp
+'
+echo
diff --git a/util/bin/graphitec b/util/bin/graphitec
new file mode 100755
index 00000000..52aa9834
--- /dev/null
+++ b/util/bin/graphitec
@@ -0,0 +1,5 @@
+#!/bin/sh
+H=${GRAPHITE_HOST:-localhost}
+P=${GRAPHITE_PORT:-2003}
+curr=$(date '+%s')
+printf "%s %s %s\n" $1 $2 $curr | nc -q0 $H $P
diff --git a/util/bin/hrefs b/util/bin/hrefs
new file mode 100755
index 00000000..3a1a51de
--- /dev/null
+++ b/util/bin/hrefs
@@ -0,0 +1,20 @@
+#! /bin/sh
+
+_hrefs() {
+ sed -n 's/href="\([^"]\+\)"/\n&\n/gp' |
+ sed -n 's/^href="\([^"]\+\)"$/\1/p'; }
+
+_add_prefix_to_relative_hrefs() {
+ sed '/^http:/!s^'"$1"''; }
+
+_main() {
+ case $# in
+ (0) _hrefs;;
+ (1) _hrefs | _add_prefix_to_relative_hrefs "$1";;
+ (*)
+ echo "bad command line: $0 $*" >&2; exit 23;;
+ esac; }
+
+set -euf
+_main "$@"
+#### end of file.
diff --git a/util/bin/jbo b/util/bin/jbo
new file mode 100755
index 00000000..76f86680
--- /dev/null
+++ b/util/bin/jbo
@@ -0,0 +1,42 @@
+#! /bin/sh
+# usage: jbo WORDS...
+set -euf
+
+if test $# = 0; then
+ while read line; do
+ if test "${clear-}" = true; then
+ echo -n 'c'
+ fi
+ "$0" "$line"
+ done
+ exit
+fi
+
+echo "$*" |
+tr 'h' "'" |
+jbofihe -H |
+tr '\n' ' ' |
+sed -r '
+ s@</?(HTML|HEAD|TITLE|BODY|FONT)[^>]*>@@g
+ s@Lojban translation@@
+' | {
+ sed 's:<SUB>[^>]*</SUB>:\n&\n:g' |
+ sed '/^<SUB>/y/0123456789/₀₁₂₃₄₅₆₇₈₉/' |
+ tr -d '\n' |
+ sed 's:</\?SUB>::g'
+} |
+sed -r '
+ s|<B>||g; s|</B>||g
+
+ s|<I> </I>|<I>_</I>|g
+ s|<I>||g; s|</I>||g
+
+ #s|<U>||g; s|</U>||g
+ s|<U>||g; s|</U>||g
+
+ s|&lt;|<|g
+ s|&gt;|>|g
+
+ s@^ *@@
+ $s/$/\n/
+'
diff --git a/util/bin/krebdate b/util/bin/krebdate
new file mode 100755
index 00000000..b2aa02d2
--- /dev/null
+++ b/util/bin/krebdate
@@ -0,0 +1,10 @@
+#! /bin/sh
+set -euf
+
+if test "${nosudo-false}" != true -a `id -u` != 0; then
+ echo "we're going sudo..." >&2
+ exec sudo "$0" "$@"
+ exit 23 # go to hell
+fi
+
+date --date="`ssh krebs 'date --rfc-3339=s'`"
diff --git a/util/bin/lgoinstall b/util/bin/lgoinstall
new file mode 100755
index 00000000..37ce6e16
--- /dev/null
+++ b/util/bin/lgoinstall
@@ -0,0 +1,131 @@
+#! /bin/sh
+#
+# usage: lgoinstall [path [OPTIONS...]]
+#
+# This script tries to goinstall ${OPTIONS...} local/$(basename $path)
+#
+# path defaults to $PWD
+#
+# target=local/$(basename $path)
+# ensure there's a symlink local/$target somewhere in $GOROOT or $GOPATH
+# goinstall $target
+#
+# TODO use the same argument order as goinstall
+#
+set -euf
+
+#fqtarget="$(readlink -f "$PWD")"
+fqtarget="$(cd "${1-$PWD}" && echo "$PWD")"
+target="local/$(basename "$fqtarget")"
+
+#
+# resolve PATH [relpath [FS]] # ====> abspath...
+#
+# Resolve relpath to abspath for each component x separated by FS in PATH
+# where x/relpath is an existing file.
+#
+# relpath defaults to ""
+# FS defaults to ":"
+#
+# Example:
+#
+# resolve "/bin:/usr/bin" sh # ====> /bin/sh
+#
+resolve() {
+ set -- "$1" "${2+/$2}" "${3-:}" "$IFS"
+ IFS="$3"
+ for i in $1; do
+ ! test -x "$i$2" || echo "$i$2"
+ done
+ unset i
+ IFS="$3"
+}
+
+#
+# xargstest TEST_ARGS...
+#
+# Read filenames from stdin and
+# write each filename that satisfies test # $TEST_ARGS to stdout.
+#
+# Each %x in TEST_ARGS gets replaced by the readlink -f of the filename.
+#
+# Example:
+#
+# xargstest -d %x <<EOF
+# /bin/sh
+# /usr
+# EOF
+# # ====> /usr
+#
+xargstest() {
+ while read x; do
+ fqx="$(readlink -f "$x")"
+ if sub %x "$x" sub %fqx "$fqx" test "$@"; then
+ #if test "${@//%x/$fqx}"; then
+ echo "$x"
+ fi
+ done | grep .
+}
+
+sub() {
+ sub1="$1"
+ sub2="$2"
+ shift 2
+ set -- "${@//$sub1/$sub2}"
+ unset sub1 sub2
+ "$@"
+}
+
+path="${GOROOT-}${GOPATH+:$GOPATH}"
+
+#
+# if there's a src/$target that points to $fqtarget, then succeed
+#
+if x="`resolve "$path" src/$target | xargstest "$fqtarget" = %fqx`"
+then
+ echo "good $target: $x -> $fqtarget" >&2
+ shift # off $1 = $fqtarget
+ echo goinstall "$@" "$target" >&2
+ exec goinstall "$@" "$target"
+fi
+
+#
+# if there's some other src/$target then die
+#
+if x="`resolve "$path" src/$target | xargstest ! -x %x -o "$fqtarget" != %fqx`"
+then
+ echo bad $target: $x >&2
+ echo check your GOROOT and/or GOPATH or eliminate that $target >&2
+ exit 23
+fi
+
+#
+# if we've no Go-source in $fqtarget then die to prevent clobbering $GOPATH.
+#
+if ! ls | grep '\.go$'; then
+ echo "$1 seems to contain no Go-source... abort." >&2
+ exit 23
+fi
+
+#
+# if we can write to some src/local then symlink $PWD and retry
+#
+if x="`resolve "$path" src/local | xargstest -w %x`"
+then
+ #echo writable src/local: $x
+ ln -vsnf $fqtarget $x
+ exec "$0" "$@"
+fi
+
+#
+# if we can write to some src then mkdir src/local and retry
+#
+if x="`resolve "$path" src | xargstest -w %x`"
+then
+ #echo writable src: $x
+ mkdir "$x/local"
+ exec "$0" "$@"
+fi
+
+echo "This script failed: good luck, you're on your own!" >&2
+exit 23
diff --git a/util/bin/magic b/util/bin/magic
new file mode 100755
index 00000000..a404c0c3
--- /dev/null
+++ b/util/bin/magic
@@ -0,0 +1,63 @@
+#! /bin/sh
+set -euf
+
+bs="# begin krebs magic <$2>"
+es="# end krebs magic <$2>"
+
+has() {
+ grep -q "^$bs$" $3 && grep -q "^$es$" $3
+}
+
+create() {
+ destroy "$@"
+ cat>>$3<<EOF
+$bs
+`cat`
+$es
+EOF
+}
+
+retrieve() {
+ sed -n "/^$bs$/,/^$es$/p" $3 | sed '1d;$d'
+}
+
+update() {
+ ! has "$@" || create "$@"
+}
+
+destroy() {
+ if has "$@"; then
+ cache="`cat $3`"
+ echo "$cache" | sed "/^$bs$/,/^$es$/d" >$3
+ fi
+}
+help() {
+cat <<EOF
+Usage: $0 FUNCTION DELIMITER_NAME FILE
+$0 creates,updates or destroys magic inside a file.
+It can be used to reliably add or remove custom lines.
+For example add own lines in /etc/rc.local to auto-load
+scripts.
+
+FUNCTION:
+ create -- creates new magic in file, takes stdin as content in magic
+ update -- updates already existing magic with text from stdin
+ destroy -- destroys magic boundary
+ retrieve -- retrieve the content of magic and writes to stdout
+
+Not yet implemented is the handling of magic not starting with the
+shell comment symbol "#".
+
+EOF
+
+}
+case $1 in
+ (create) create "$@" ;;
+ (retrieve) retrieve "$@" ;;
+ (update) update "$@" ;;
+ (destroy) destroy "$@" ;;
+ (*)
+ help >&2
+ echo 'Error 1: You are made of stupid!' >&2
+ exit 23
+esac
diff --git a/util/bin/make-data-url b/util/bin/make-data-url
new file mode 100755
index 00000000..a9d014e6
--- /dev/null
+++ b/util/bin/make-data-url
@@ -0,0 +1,7 @@
+#! /bin/sh
+set -euf
+for path; do
+ type="`file -bi "$path"`"
+ data="`base64 -w 0 "$path"`"
+ echo "data:$type;base64,$data"
+done
diff --git a/util/bin/make-realwallpaper b/util/bin/make-realwallpaper
new file mode 100755
index 00000000..5e05d0ee
--- /dev/null
+++ b/util/bin/make-realwallpaper
@@ -0,0 +1,302 @@
+#!/bin/sh
+set -euf
+
+###### USAGE #####
+#run in new directory(will be polluted with images
+#just run ./make-realwallpaper
+
+main() {
+ # fetch source images in parallel
+ #fetch nightmap-old-raw.jpg \
+ # http://awka.sourceforge.net/Night_le_huge.jpg &
+ fetch nightmap-raw.jpg \
+ http://www.zeitnews.org/sites/default/files/users/20/article_slideshow_images/nasa-noaa-satellite-reveals-new-views-earth-night-1354814354_0.jpg &
+ fetch daymap-raw.png \
+ http://www.nnvl.noaa.gov/images/globaldata/SnowIceCover_Daily.png &
+ fetch clouds-raw.jpg \
+ http://user.chol.com/~winxplanet/cloud_data/clouds_2048.jpg &
+ fetch krebs.sat.tle \
+ http://www.celestrak.com/NORAD/elements/stations.txt &
+ wait
+
+ #check_type nightmap-old-raw.jpg image
+ check_type nightmap-raw.jpg image
+ check_type daymap-raw.png image
+ check_type clouds-raw.jpg image
+
+ in_size=2048x1024
+ xplanet_out_size=1466x1200
+ out_geometry=1366x768+100+160
+
+ nightsnow_color='#0c1a49' # nightmap
+ #nightsnow_color='#0a3b5c' # nightmap-old
+
+ # normalize *-raw.* to *.png
+ #nightmap-old-raw.jpg
+ for raw in \
+ nightmap-raw.jpg \
+ daymap-raw.png \
+ clouds-raw.jpg \
+ ;
+ do
+ normal=${raw%-raw.*}.png
+ if needs_rebuild $normal $raw; then
+ echo "make $normal; normalize $raw" >&2
+ convert $raw -scale $in_size $normal
+ fi
+ done
+
+ # create nightmap-fullsnow
+ if needs_rebuild nightmap-fullsnow.png; then
+ convert -size $in_size xc:$nightsnow_color nightmap-fullsnow.png
+ fi
+
+ # extract daymap-snowmask from daymap-final
+ if needs_rebuild daymap-snowmask.png daymap.png; then
+ convert daymap.png -threshold 95% daymap-snowmask.png
+ fi
+
+ # extract nightmap-lightmask from nightmap
+ if needs_rebuild nightmap-lightmask.png nightmap.png; then
+ convert nightmap.png -threshold 25% nightmap-lightmask.png
+ fi
+
+ # create layers
+ make_layer nightmap-snowlayer.png nightmap-fullsnow.png daymap-snowmask.png
+ make_layer nightmap-lightlayer.png nightmap.png nightmap-lightmask.png
+
+ # apply layers
+ flatten nightmap-lightsnowlayer.png \
+ nightmap-lightlayer.png \
+ nightmap-snowlayer.png
+
+ flatten nightmap-final.png \
+ nightmap-lightsnowlayer.png \
+ nightmap.png
+ # nightmap-old.png
+
+ # make all unmodified files as final
+ for normal in \
+ daymap.png \
+ clouds.png \
+ ;
+ do
+ final=${normal%.png}-final.png
+ needs_rebuild $final &&
+ ln $normal $final
+ done
+
+ # make_gcloud_cloudmask
+
+ map=daymap-final.png
+ night_map=nightmap-final.png
+ cloud_map=clouds-final.png
+ gcloud_map=gcloud-cloudmask.png
+ satellite_file=krebs.sat
+
+ # create xplanet output
+ cat >xplanet.config <<EOF
+[earth]
+"Earth"
+map=$map
+night_map=$night_map
+cloud_map=$cloud_map
+cloud_threshold=10
+shade=15
+EOF
+
+ # create xplanet output satellite version
+ cat >xplanet-sat.config <<EOF
+[earth]
+"Earth"
+map=$map
+night_map=$night_map
+cloud_map=$cloud_map
+cloud_threshold=10
+satellite_file=$satellite_file
+shade=15
+EOF
+
+# # create xplanet output gcloud version
+# cat >xplanet-gcloud.config <<EOF
+#[earth]
+#"Earth"
+#map=$map
+#night_map=$night_map
+#cloud_map=$gcloud_map
+#cloud_threshold=10
+#shade=15
+#EOF
+#
+# # create xplanet output gcloud-satellite version
+# cat >xplanet-gcloud-sat.config <<EOF
+#[earth]
+#"Earth"
+#map=$map
+#night_map=$night_map
+#cloud_map=$gcloud_map
+#cloud_threshold=10
+#satellite_file=$satellite_file
+#shade=15
+#EOF
+
+ cat >krebs.sat <<EOF
+25544 "ISS" Image=none trail={orbit,-2,2,1} color=grey thickness=1 fontsize=10
+37820 "T1" Image=none trail={orbit,-2,2,1} color=grey thickness=1 fontsize=10
+EOF
+
+ cat >krebs.mar <<EOF
+EOF
+
+ # rebuild every time to update shadow
+ xplanet --num_times 1 --geometry $xplanet_out_size \
+ --output xplanet-output.png --projection merc \
+ -config xplanet.config
+
+ # rebuild everytime satellite version
+ xplanet --num_times 1 --geometry $xplanet_out_size \
+ --output xplanet-sat-output.png --projection merc \
+ -config xplanet-sat.config
+
+# # rebuild every time to update shadow gcloud
+# xplanet --num_times 1 --geometry $xplanet_out_size \
+# --output xplanet-gcloud-output.png --projection merc \
+# -config xplanet-gcloud.config
+#
+# # rebuild everytime satellite gcloud version
+# xplanet --num_times 1 --geometry $xplanet_out_size \
+# --output xplanet-gcloud-sat-output.png --projection merc \
+# -config xplanet-gcloud-sat.config
+
+ # trim xplanet output
+ if needs_rebuild realwallpaper.png xplanet-output.png; then
+ convert xplanet-output.png -crop $out_geometry \
+ realwallpaper.png
+ fi
+
+ # trim xplanet-sat output
+ if needs_rebuild realwallpaper-sat.png xplanet-sat-output.png; then
+ convert xplanet-sat-output.png -crop $out_geometry \
+ realwallpaper-sat.png
+ fi
+
+# # trim xplanet output
+# if needs_rebuild realwallpaper-gcloud.png xplanet-gcloud-output.png; then
+# convert xplanet-gcloud-output.png -crop $out_geometry \
+# realwallpaper-gcloud.png
+# fi
+#
+# # trim xplanet-sat output
+# if needs_rebuild realwallpaper-gcloud-sat.png xplanet-gcloud-sat-output.png; then
+# convert xplanet-gcloud-sat-output.png -crop $out_geometry \
+# realwallpaper-gcloud-sat.png
+# fi
+}
+
+# generate clouds from google maps
+make_gcloud_cloudmask() {
+ echo 'fetch gcloud-*.png tiles' >&2
+ for y in $(seq -w 0 15); do
+ for x in $(seq -w 0 15); do
+ echo "curl -sS -o gcloud-$y-$x.png -z gcloud-$y-$x.png \\\"https://mts0.google.com/vt/lyrs=h@239000000,weather_nolabels,weather_0cloud&hl=en&src=app&x=$x&y=$y&z=4&s=Galil\\\""
+ done
+ done | xargs --max-args=1 -P 10 -I @ sh -c @
+ gcloud_tiles=$(find -name 'gcloud-[0-9][0-9]-[0-9][0-9].png'|sort)
+ if needs_rebuild gcloud-raw.png $gcloud_tiles; then
+ echo 'make gcloud-raw.png' &&
+ montage -mode Concatenate -background None \
+ $gcloud_tiles -tile x16 gcloud-raw.png
+ fi
+
+ check_type gcloud-raw.png image
+
+ gcloud_in_size=2048x2048
+ gcloud_out_size=2048x1024
+ gcloud_out_geometry=2048x1024+0+512
+ gcloud_base_color='#ffffff'
+
+ if needs_rebuild gcloud-normal.png gcloud-raw.png; then
+ echo "make gcloud-normal.png; normalize gcloud-raw.png" >&2
+ convert -flatten gcloud-raw.png \
+ -scale $gcloud_in_size gcloud-normal.png
+ fi
+
+ if needs_rebuild gcloud-distmap.png; then
+ convert -size 2048x2048 gradient: -rotate 180 \
+ -fx "p{i, (asinh(tan((j/h+0.5)*pi))/2.6+0.5) * h }" \
+ gcloud-distmap.png
+ fi
+
+ if needs_rebuild gcloud-cloudmask.png gcloud-normal.png; then
+ echo 'make gcloud-cloudmask.png' &&
+ convert gcloud-normal.png gcloud-distmap.png \
+ -fx 'p{i,v*h}' \
+ -crop $gcloud_out_geometry \
+ gcloud-cloudmask.png
+ fi
+
+ if needs_rebuild gcloud-fullcloud.png; then
+ echo 'make gcloud-fullcloud.png' &&
+ convert -size $gcloud_out_size xc:$gcloud_base_color gcloud-fullcloud.png
+ fi
+}
+
+# usage: getimg FILENAME URL
+fetch() {
+ echo "fetch $1"
+ curl -sS -z "$1" -o "$1" "$2"
+}
+
+# usage: check_type FILENAME TYPE
+check_type() {
+ if ! file -ib "$1" | grep -q "^$2/"; then
+ echo "$1 is not of type $2" >&2
+ rm "$1"
+ return 1
+ fi
+}
+
+# usage: image_size FILENAME
+image_size() {
+ identify "$1" | awk '{print$3}'
+}
+
+# usage: make_mask DST SRC MASK
+make_layer() {
+ if needs_rebuild "$@"; then
+ echo "make $1 (apply mask)" >&2
+ convert "$2" "$3" -alpha off -compose copy_opacity -composite "$1"
+ fi
+}
+
+# usage: flatten DST HILAYER LOLAYER
+flatten() {
+ if needs_rebuild "$@"; then
+ echo "make $1 (flatten)" >&2
+ composite "$2" "$3" "$1"
+ fi
+}
+
+# usage: needs_rebuild DST SRC...
+needs_rebuild() {
+ a="$1"
+ shift
+ if ! test -e "$a"; then
+ #echo " $a does not exist" >&2
+ result=0
+ else
+ result=1
+ for b; do
+ if test "$b" -nt "$a"; then
+ #echo " $b is newer than $a" >&2
+ result=0
+ fi
+ done
+ fi
+ #case $result in
+ # 0) echo "$a needs rebuild" >&2;;
+ #esac
+ return $result
+}
+
+main "$@"
diff --git a/util/bin/mic.stt b/util/bin/mic.stt
new file mode 100755
index 00000000..9236f85c
--- /dev/null
+++ b/util/bin/mic.stt
@@ -0,0 +1,12 @@
+#!/bin/sh
+set -efux
+cd $(dirname $(readlink -f $0))
+. ../lib/stt/google.sh
+duration=${1?please provide duration via \$1}
+lang=${lang:-de-DE}
+export lang
+echo "language is set to $lang"
+echo "will record for '$duration' seconds"
+f=$(record_audio ${duration})
+trap 'rm $f' TERM EXIT HUP
+stt "$f"
diff --git a/util/bin/my-global-ipv4-addr b/util/bin/my-global-ipv4-addr
new file mode 100755
index 00000000..71608a8a
--- /dev/null
+++ b/util/bin/my-global-ipv4-addr
@@ -0,0 +1,52 @@
+#! /bin/sh
+#
+# usage: my-global-ipv4-addr [URL]
+#
+# if URL is provided then fetch and parse it for IPv4 addrs
+# else try all known urls
+#
+if test $# = 1; then
+ has() { type "$1" 1>/dev/null 2>/dev/null; }
+ parse() {
+ sed -n 's/.*\(\(1\?[0-9][0-9]\|2[0-5][0-9]\)\.\(1\?[0-9][0-9]\|2[0-5][0-9]\)\.\(1\?[0-9][0-9]\|2[0-5][0-9]\)\.\(1\?[0-9][0-9]\|2[0-5][0-9]\)\).*/\1/p' |
+ grep .
+ }
+ get () {
+ # TODO get random valid user agent
+ if has curl; then
+ curl -m 1 -A Mozilla -sS "$1" 2>/dev/null
+ elif has wget; then
+ wget -T 1 -U Mozilla -O "$1" 2>/dev/null
+ else
+ echo 'Error 1: You are made of stupid!' >&2
+ exit 23
+ fi
+ }
+
+ #addrs="`get "$1" | parse`"
+ #echo "$1:" $addrs >&2
+ #echo "$addrs"
+ get "$1" | parse
+else
+
+ vote() {
+ sort | uniq -c | sort -r -n
+ }
+ winner() {
+ head -n 1 | awk '{print$2}'
+ }
+
+ grep -v ^# |
+ sed -n '1,$p' |
+ xargs -P 42 -n 1 "$0" | vote | winner
+fi<<EOF
+checkip.dyndns.com
+www.whatismyip.de
+www.eigene-ip.de
+whatismyip.org
+www.ipaddressworld.com
+http://ip-check.info/?lang=de
+http://www.ip-adress.com/what_is_my_ip/
+http://www.spyber.com/
+http://www.ipchicken.com/
+EOF
diff --git a/util/bin/naturalvoices.att b/util/bin/naturalvoices.att
new file mode 100755
index 00000000..ea893fc0
--- /dev/null
+++ b/util/bin/naturalvoices.att
@@ -0,0 +1,18 @@
+#!/bin/sh
+cd $(dirname $(readlink -f $0))
+
+. ../lib/naturalvoices/att.sh
+
+: ${1?please provide \$1 as text}
+
+text=$(echo $* | sed 's/ /+/g')
+voice="${voice:-reiner}"
+
+OUTFILE="`mktemp /tmp/voice.XXXXXXXX`"
+trap "rm $OUTFILE" TERM INT EXIT
+
+get_tts "$text"
+
+play_file "$OUTFILE"
+
+
diff --git a/util/bin/nextpath b/util/bin/nextpath
new file mode 100755
index 00000000..fbffa894
--- /dev/null
+++ b/util/bin/nextpath
@@ -0,0 +1,12 @@
+#! /bin/sh
+#
+# nextpath [component...]
+#
+# echo $PATH with the components stripped
+#
+set -euf
+
+pattern="^\\(${1-}$(shift;for i; do echo -n "\\|$i"; done)\\)$"
+
+echo -n "$(echo -n "$PATH" | tr : '\n' | grep -v "$pattern")" | tr '\n' :
+echo
diff --git a/util/bin/pigbin b/util/bin/pigbin
new file mode 100755
index 00000000..ae0b270f
--- /dev/null
+++ b/util/bin/pigbin
@@ -0,0 +1,5 @@
+#!/bin/sh
+#usage:
+#echo aidsballs | pigbin
+
+curl -F 'p=<-' paste
diff --git a/util/bin/randline b/util/bin/randline
new file mode 100755
index 00000000..df36b344
--- /dev/null
+++ b/util/bin/randline
@@ -0,0 +1,2 @@
+#! /bin/sh
+cat | shuf | head -n 1
diff --git a/util/bin/sshkill b/util/bin/sshkill
new file mode 100755
index 00000000..80300483
--- /dev/null
+++ b/util/bin/sshkill
@@ -0,0 +1,33 @@
+#! /bin/sh
+#
+# kill ssh client: sshkill user@host:port
+# setup bash completion: . sshkill
+#
+if ! grep -q '^ControlPath /tmp/%u/sshmux/%r@%h:%p$' "$HOME/.ssh/config"; then
+ echo "Your ~/.ssh/config's ControlPath sucks!" >&2
+ (exit 23)
+else
+ if test "${0:0:1}" = -; then
+ if ! echo "${BASHOPTS-}" | grep -Eq '(^|:)progcomp(:|$)'; then
+ echo "source sshmux into something other than a progcomp'able bash" >&2
+ (exit 23)
+ else
+
+ # setup bash completion
+ comp_sshkill() {
+ if test $COMP_CWORD = 1; then
+ COMPREPLY=($(cd "/tmp/$LOGNAME/sshmux" &&
+ ls | grep "^${COMP_WORDS[$COMP_CWORD]}.*"))
+ fi
+ }
+ complete -F comp_sshkill sshkill
+
+ fi
+ else
+
+ # kill ssh client
+ set -euf
+ exec pkill -f "^ssh: /tmp/$LOGNAME/sshmux/$1 \[mux\]$"
+
+ fi
+fi
diff --git a/util/bin/statsc b/util/bin/statsc
new file mode 100755
index 00000000..ff86ccb8
--- /dev/null
+++ b/util/bin/statsc
@@ -0,0 +1,4 @@
+#!/bin/sh
+# see https://github.com/etsy/statsd for syntax
+[ $# -eq 0 ] && echo "usage: $0 MESSAGE"
+echo "$1" | nc -w 1 -u 127.0.0.1 8125
diff --git a/util/bin/text2speech.google b/util/bin/text2speech.google
new file mode 100755
index 00000000..41b4c172
--- /dev/null
+++ b/util/bin/text2speech.google
@@ -0,0 +1,10 @@
+#!/bin/sh
+set -euf
+
+tl=${TL:="en"}
+
+text=$*
+
+url="http://translate.google.com/translate_tts?ie=UTF-8&tl=$tl"
+
+curl -A "Mozilla/5.0" -Ss "$url" --data-urlencode "q=$text"
diff --git a/util/bin/timer b/util/bin/timer
new file mode 100755
index 00000000..0ccf514a
--- /dev/null
+++ b/util/bin/timer
@@ -0,0 +1,14 @@
+#!/bin/bash
+curr=$(date '+%s%N')
+etime=${curr:0:${#curr}-6}
+if [[ $# -eq 0 ]];then
+ echo $etime
+else
+ [ "$1" == "-h" -o "$1" == "--help" ] && \
+ echo "usage: $0 [start_ms]" && \
+ echo " if no start_ms is given, return the currentime" && \
+ echo " if start_ms is given, return the difference" && exit 0
+ stime=$1
+ [[ -z "$stime" ]] && stime=$etime
+ echo $((etime - stime))
+fi
diff --git a/util/bin/translate.google b/util/bin/translate.google
new file mode 100755
index 00000000..2418dc37
--- /dev/null
+++ b/util/bin/translate.google
@@ -0,0 +1,13 @@
+#! /bin/sh
+set -euf
+
+sl=${SL:="auto"}
+tl=${TL:="en"}
+
+text=$*
+
+url="http://translate.google.com/translate_a/t?client=t&sl=$sl&tl=$tl"
+
+curl -A "Mozilla/5.0" -Ss "$url" --data-urlencode "text=$text" |
+ sed 's/\[\[\[\"//' |
+ cut -d \" -f 1
diff --git a/util/bin/ukrepl b/util/bin/ukrepl
new file mode 100755
index 00000000..9b084027
--- /dev/null
+++ b/util/bin/ukrepl
@@ -0,0 +1,109 @@
+#!/usr/bin/python2
+# -*- coding: utf-8 -*-
+import sys
+
+wont_change = { ' ' : ' ' ,
+ '\n' : '\n'
+ }
+def fixed_width_replace(char): #f
+ if char in wont_change: return unicode(char)
+ else:
+ try:
+ if not 32 < ord(char) < 126: raise Exception("not in range")
+ return unichr(0xFF00 + ord(char)-32)
+ except:
+ return char
+
+cyrillic_dict = {
+ 'A' : u'А', 'a' : 'а','Ä' : u'Ӓ', 'ä' : u'ӓ',
+ 'B' : u'В',
+ 'c' : u'с',
+ 'E' : u'Е',
+ 'e' : u'е',
+ 'H' : u'Н',
+ 'I' : u'І', 'i' : u'і',
+ 'j' : u'ј','J' : u'Ј',
+ 'K' : u'К',
+ 'M' : u'М',
+ 'O' : u'О', 'o' : u'о', 'Ö' : u'Ӧ', 'ö' : u'ӧ',
+ 'P' : u'Р', 'p' : u'р',
+ 'S' : u'Ѕ',
+ 'T' : u'г'
+ }
+
+def cyrillic_replace(char): #c
+ return cyrillic_dict.get(char,char)
+historic_latin_dict = {
+ 'B' : u'Ɓ',
+ 'b' : u'ƅ',
+ 'u' : u'ư',
+ 'U' : u'Ư',
+ '' : 'Ǟ',
+ #'5' : 'ƽ',
+ 'o' : 'ơ',
+ 'O' : 'Ơ',
+ '5' : 'Ƽ'
+ }
+def historic_latin(char): #H
+ return historic_latin_dict.get(char,char)
+punctuation_dict = {
+ '!' : u'ǃ',
+ '\'': u'’',
+ '\"': u'ˮ',
+ '(' : u'⟨',
+ ')' : u'⟩',
+ ':' : u'ː',
+ ' ' : u' ',
+ # all different spaces, made for perfect trolling
+ #' ' : u' ',
+ #' ' : u' ',
+ #' ' : u'⁠',
+ #'-' : u'‒',
+ #'-' : u'—',
+ #'-' : u'―',
+ #'-' : u'‐',
+ #'-' : u'⁃',
+ '-' : u'–',
+ '_' : u'−',
+ '~' : u'⁓',
+ #'~' : u'∼',
+ #'~' : u'〜',
+
+ }
+def punctuation(char): #p
+ return punctuation_dict.get(char,char)
+def helpme():
+ print "usage %s [modes]" % sys.argv[0]
+ print "modes:"
+ print " c -- cyrillic replace"
+ print " f -- fixed width"
+ print " p -- replace punctuation"
+ print " H -- replace with historic latin chars"
+ print " h -- this message"
+ sys.exit(0)
+
+#parsing happens inside the nested loop
+modes = ''.join(sys.argv[1:])
+# sane defaults if no mode given
+if not modes : modes = "f"
+
+if 'h' in modes: helpme()
+
+for line in sys.stdin:
+ for char in line:
+ for mode in modes:
+ if mode is 'c':
+ char = cyrillic_replace(char)
+ elif mode is 'f':
+ char = fixed_width_replace(char)
+ elif mode is 'H':
+ char = historic_latin(char)
+ elif mode is 'p':
+ char = punctuation(char)
+ else:
+ print "unknown mode %c" % mode
+ helpme()
+ try:
+ sys.stdout.write(char)
+ except:
+ sys.stdout.write(char.encode("utf-8"))
diff --git a/util/bin/untouch b/util/bin/untouch
new file mode 100755
index 00000000..17fd46b8
--- /dev/null
+++ b/util/bin/untouch
@@ -0,0 +1,8 @@
+#!/bin/sh
+#
+#This script toggles the touchpad on a netbook using synclient.
+
+status=`synclient|awk '/TouchpadOff/{printf$3}'`
+status=`expr \( $status + 1 \) \% 2`
+synclient TouchpadOff=$status
+
diff --git a/util/bin/uriparse b/util/bin/uriparse
new file mode 100755
index 00000000..b16bd9c8
--- /dev/null
+++ b/util/bin/uriparse
@@ -0,0 +1,28 @@
+#!/usr/bin/python
+from sys import argv, exit
+
+
+def uri_parser(uri):
+ try:
+ from urlparse import urlparse
+ except:
+ from urllib.parse import urlparse
+
+ return urlparse(uri)
+
+if __name__ == "__main__":
+ try:
+ uri = argv[1]
+ except:
+ print('usage: %s URI')
+ exit(1)
+ u = uri_parser(uri)
+
+ print("SCHEME='%s'" % u.scheme.replace("'", "'\\''"))
+ if u.username:
+ print("USERNAME='%s'" % u.username.replace("'", "'\\''"))
+ if u.password:
+ print("PASSWORD='%s'" % u.password.replace("'", "'\\''"))
+ if u.path:
+ print("URIPATH='%s'" % u.path.replace("'", "'\\''"))
+ print("HOSTN='%s'" % u.hostname.replace("'", "'\\''"))
diff --git a/util/bin/wiki.firstpar b/util/bin/wiki.firstpar
new file mode 100755
index 00000000..d2181f1b
--- /dev/null
+++ b/util/bin/wiki.firstpar
@@ -0,0 +1,23 @@
+#! /bin/bash
+set -euf
+
+A=Mozilla
+
+pwd="$(dirname "$(readlink -f "$0")")"
+
+for x in \
+ "$pwd/../../submodules/github/tmpvar" \
+ "$pwd/../../submodules/github/mikeal" \
+ "$pwd/../../submodules/github/NV" \
+ "$pwd/../../submodules/github/tautologistics" \
+; do
+ export NODE_PATH="`readlink -f "$x"`${NODE_PATH+:$NODE_PATH}"
+done
+
+# ensure query is ready
+(cd "$pwd/../.." && git submodule update --init)
+
+query() {
+ node "$(readlink -f "$pwd/../../submodules/github/visionmedia/query")" "$@"
+}
+curl -b redirect=seen -L -e http://de.wikipedia.org/wiki/$RANDOM -sS -A "\${A-Mozilla}" "$1" | query 'p' 'first' |w3m -T text/html -dump| cut -c -750
diff --git a/util/bin/wikipedia b/util/bin/wikipedia
new file mode 100755
index 00000000..cad0d8b1
--- /dev/null
+++ b/util/bin/wikipedia
@@ -0,0 +1,5 @@
+#! /bin/sh
+set -euf
+for w in "$@"; do
+ dig +short txt "$w.wp.dg.cx"
+done
diff --git a/util/bin/with b/util/bin/with
new file mode 100755
index 00000000..97893faf
--- /dev/null
+++ b/util/bin/with
@@ -0,0 +1,6 @@
+#! /bin/sh
+set -euf
+ENV="${env_dir-$HOME/.env.d}/$1"
+shift
+. "$ENV"
+exec "$@"
diff --git a/util/lib/geo/Makefile b/util/lib/geo/Makefile
new file mode 100644
index 00000000..d13cd471
--- /dev/null
+++ b/util/lib/geo/Makefile
@@ -0,0 +1,15 @@
+all: node_modules GeoLiteCity.dat
+
+node_modules: package.json
+ npm install
+ @touch -r $< $@
+
+GeoLiteCity.dat:
+ @test -e GeoLiteCity.dat && ln -s GeoLiteCity.dat $@ || { \
+ echo 'No GeoIP City database found.'; \
+ echo 'You can get one from http://dev.maxmind.com/geoip/geolite:'; \
+ echo ' wget -N http://geolite.maxmind.com/download/geoip/database/GeoLiteCity.dat.gz'; \
+ echo ' gunzip GeoLiteCity.dat.gz'; \
+ exit 23; \
+ }
+
diff --git a/util/lib/geo/index.js b/util/lib/geo/index.js
new file mode 100644
index 00000000..0763b1a4
--- /dev/null
+++ b/util/lib/geo/index.js
@@ -0,0 +1,48 @@
+function slurp (stream, callback) {
+ var data = []
+ stream.on('data', function (chunk) {
+ data.push(chunk)
+ })
+ stream.on('end', function () {
+ callback(null, Buffer.concat(data))
+ })
+ stream.resume()
+}
+
+
+var path = require('path')
+var city_dat = path.join(__dirname, 'GeoLiteCity.dat')
+
+var geoip = require('geoip')
+var city = new geoip.City(city_dat)
+
+slurp(process.stdin, function (err, data) {
+ var lines = data.toString().split('\n')
+ // remove last, empty element (caused by the [mandatory] final \n)
+ if (lines.length > 1 && lines[lines.length - 1] === '') {
+ lines.pop()
+ }
+ var name = 0, addr = 1
+ lines
+ .map(function (line) { return line.split(' ') })
+ .forEach(function (host) {
+ //city.lookup(host[addr], function (err, loc) {
+ // if (err) {
+ // console.error('#', host[name], err.message)
+ // } else {
+ // console.log(host[name] + ': ' + loc.longitude + ',' + loc.latitude)
+ // }
+ //})
+ var loc = city.lookupSync(host[addr])
+ //if (!loc) { console.error('#', host[name]) }
+ if (loc) {
+ var a = loc.latitude
+ var b = loc.longitude
+ //var c = loc.altitude
+ //var geo = 'geo:' + [a,b,c].join(',')
+ var geo = 'geo:' + [a,b].join(',')
+
+ console.log(host[name], geo)
+ }
+ })
+})
diff --git a/util/lib/geo/package.json b/util/lib/geo/package.json
new file mode 100644
index 00000000..ad449a62
--- /dev/null
+++ b/util/lib/geo/package.json
@@ -0,0 +1,7 @@
+{
+ "name": "geo",
+ "version": "0.0.0",
+ "dependencies": {
+ "geoip": "*"
+ }
+}
diff --git a/util/lib/naturalvoices/att.sh b/util/lib/naturalvoices/att.sh
new file mode 100755
index 00000000..3ec903c5
--- /dev/null
+++ b/util/lib/naturalvoices/att.sh
@@ -0,0 +1,33 @@
+#!/bin/sh
+# The cached version of naturalvoices
+# This should prevent us from being pwned again ...
+
+
+
+get_tts(){
+ # ENV:
+ # OUTFILE - path to outfile (required)
+ # voice - voice to use (default: klara)
+ # INP:
+ # $@ - input text
+
+ : ${OUTFILE?please provide OUTFILE}
+ text=$(echo $* | sed -e "s/ /+/g" -e "s/\//%2F/g")
+ voice="${voice:-klara}"
+ # TODO grab this url from the tts demo page
+ ip="204.178.9.51"
+ base_url="http://$ip"
+ curl -sS $base_url$( curl -Ss -H "Host:$ip" \
+ -H "Origin:http://www2.research.att.com" \
+ -e "http://www2.research.att.com/~ttsweb/tts/demo.php" \
+ -A "Mozilla/5.0 (X11; Linux x86_64; rv:23.0) Gecko/20100101 Firefox/23.0" \
+ -d "voice=$voice" -d "txt=$text" -d "speakButton=SPEAK" \
+ -H "Accept:text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8" \
+ "$base_url/tts/cgi-bin/nph-nvttsdemo" | \
+ grep HREF|sed 's/.*\(".*"\).*/\1/' | \
+ sed -e 's/"//g' ) > "$OUTFILE"
+}
+
+play_file(){
+ aplay "$*" >/dev/null
+}
diff --git a/util/lib/stt/README.md b/util/lib/stt/README.md
new file mode 100644
index 00000000..be905770
--- /dev/null
+++ b/util/lib/stt/README.md
@@ -0,0 +1,4 @@
+# Speech to Text api wrapper
+
+Because Speech to text is hard™ with FOSS, these libraries utilize the magic of
+the internets to solve this problem.
diff --git a/util/lib/stt/google.sh b/util/lib/stt/google.sh
new file mode 100644
index 00000000..8d23a73d
--- /dev/null
+++ b/util/lib/stt/google.sh
@@ -0,0 +1,40 @@
+#!/bin/sh
+
+cat <<EOF >&2
+NOTE: The google speech-to-text api v1 has been made obsolete!
+Code is here only for reference and will most likely not work anymore.
+EOF
+
+_get_content_type(){
+ file -b --mime-type "$1"
+}
+_get_audio_rate(){
+ file "$1" | sed -n -e 's/.* \([.0-9]\+\) kHz.*/\1/p' \
+ | awk '{print int($1 *1000)}'
+}
+
+record_audio(){
+ # usage : _record_audio num_seconds
+ # echoes the output file
+ tmpfile=$(mktemp)
+ : ${1?please provide number of seconds to record}
+ arecord -d "$1" -r 16000 -t wav -q -f cd | flac -s -f - -o "$tmpfile" && echo "$tmpfile"
+}
+stt(){
+ # usage: (lang=de-de stty recorded_file)
+ : ${1? please provide recorded file}
+ infile="$1"
+ lang=${lang:-en-us}
+ _get_content_type "$1" | (! grep -q "x-flac" ) \
+ && echo "infile needs to be in flac format" \
+ && return 1
+ # only flac seems to be working...
+ wget -q -O - \
+ -U 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_6_8) AppleWebKit/535.7 (KHTML, like Gecko) Chrome/16.0.912.77 Safari/535.7' \
+ --post-file "$infile" \
+ --header "Content-Type: `_get_content_type $infile`; rate=`_get_audio_rate $infile`;" \
+ "http://www.google.com/speech-api/v1/recognize?lang=${lang}&client=chromium&maxresults=1" \
+ | sed -n 's/.*utterance":"\([^"]*\)".*/\1/p'
+
+ # returns {"status":0,"id":"d9269e6f741997161e41a4d441b34ba1-1","hypotheses":[{"utterance":"hallo Welt","confidence":0.7008959}]}
+}
diff --git a/util/morse/COPYING b/util/morse/COPYING
new file mode 100644
index 00000000..d28e4178
--- /dev/null
+++ b/util/morse/COPYING
@@ -0,0 +1,14 @@
+ DO WHAT THE FUCK YOU WANT TO PUBLIC LICENSE
+ Version 23, December 1984
+
+ Copyright (C) 2011 tv@shackspace
+
+ Everyone is permitted to copy and distribute verbatim or modified
+ copies of this license document, and changing it is allowed as long
+ as the name is changed.
+
+ DO WHAT THE FUCK YOU WANT TO PUBLIC LICENSE
+ TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
+
+ 0. You just DO WHAT THE FUCK YOU WANT TO.
+
diff --git a/util/morse/Makefile b/util/morse/Makefile
new file mode 100644
index 00000000..2afa845e
--- /dev/null
+++ b/util/morse/Makefile
@@ -0,0 +1,3 @@
+.phony: all
+all:
+ ln -fs $$PWD/morse.sh ../bin/morse
diff --git a/util/morse/README b/util/morse/README
new file mode 100644
index 00000000..67951c00
--- /dev/null
+++ b/util/morse/README
@@ -0,0 +1,32 @@
+MORSE(1) MORSE(1)
+
+NAME
+ morse.sh - morse code generator
+
+SYNOPSIS
+ morse [-l N] [-f N] [-c|-x] [text...]
+
+DESCRIPTION
+ Generate visible or audible from text or stdin.
+
+OPTIONS
+ -l N use N milliseconds as length of dit. Default: 60 ms
+
+ -f N beep at N Hz. Default: 2000 Hz
+
+ -c compile only. Morse will output morse-executable morse code.
+
+ -x execute only. Interpret text as morse code, i.e. do not try
+ to convert text or stdin.
+
+BUGS
+ None.^_^
+
+REPORTING BUGS
+ Please use Github's issue tracking system.
+
+AUTHOR
+ This program was written by tv@shackspace and is distributed under the
+ Do What The Fuck You Want To Public License.
+
+ April 2011 MORSE(1)
diff --git a/util/morse/morse.sh b/util/morse/morse.sh
new file mode 100755
index 00000000..c84538ca
--- /dev/null
+++ b/util/morse/morse.sh
@@ -0,0 +1,160 @@
+#! /bin/sh
+set -euf
+
+freq=2000
+dit=60
+mode=compile+execute
+
+## plain stupid options "parser"
+while test $# -gt 0; do
+ case "$1" in
+ (-l) dit=$2; shift 2;;
+ (-f) freq=$2; shift 2;;
+ (-c) mode=compile; shift 1;;
+ (-x) mode=execute; shift 1;;
+ (*) break 2;;
+ esac
+done
+
+# Ein Dah ist dreimal so lang wie ein Dit.
+dah=`echo "$dit * 3" | bc`
+
+## Convert a character to the corresponting morse code.
+## Note: any unknown characters are left unaltered.
+char2morse() {
+tr [a-z] [A-Z] |
+sed '
+ # Die Pause zwischen Wörtern beträgt sieben Dits. (1/2)
+ s:[[:space:]]\+::g
+
+ # Zwischen Buchstaben in einem Wort wird eine Pause von Dah eingeschoben.
+ s:[^ ]:& :g
+
+ # Die Pause zwischen Wörtern beträgt sieben Dits. (2/2)
+ s: : :g
+' |
+sed '
+ # Lateinische Buchstaben
+ # Die Pause zwischen zwei gesendeten Symbolen ist ein Dit lang.
+ s:A:· −:g
+ s:B:− · · ·:g
+ s:C:− · − ·:g
+ s:D:− · ·:g
+ s:E:·:g
+ s:F:· · − ·:g
+ s:G:− − ·:g
+ s:H:· · · ·:g
+ s:I:· ·:g
+ s:J:· − − −:g
+ s:K:− · −:g
+ s:L:· − · ·:g
+ s:M:− −:g
+ s:N:− ·:g
+ s:O:− − −:g
+ s:P:· − − ·:g
+ s:Q:− − · −:g
+ s:R:· − ·:g
+ s:S:· · ·:g
+ s:T:−:g
+ s:U:· · −:g
+ s:V:· · · −:g
+ s:W:· − −:g
+ s:X:− · · −:g
+ s:Y:− · − −:g
+ s:Z:− − · ·:g
+' |
+sed '
+ # Ziffern
+ # Die Pause zwischen zwei gesendeten Symbolen ist ein Dit lang.
+ s:0:− − − − −:g
+ s:1:· − − − −:g
+ s:2:· · − − −:g
+ s:3:· · · − −:g
+ s:4:· · · · −:g
+ s:5:· · · · ·:g
+ s:6:− · · · ·:g
+ s:7:− − · · ·:g
+ s:8:− − − · ·:g
+ s:9:− − − − ·:g
+' |
+sed '
+ # TODO Sonder- und Satzzeichen
+ #s:À, Å:· − − · −
+ #s:Ä:· − · −
+ #s:È:· − · · −
+ #s:É:· · − · ·
+ #s:Ö:− − − ·
+ #s:Ü:· · − −
+ #s:ß:· · · − − · ·
+ #s:CH:− − − −
+ #s:Ñ:− − · − −
+ #s:. (AAA) · − · − · −
+ #s:, (MIM) − − · · − −
+ #s:: − − − · · ·
+ #s:; − · − · − ·
+ #s:? (IMI) · · − − · ·
+ #s:- − · · · · −
+ #s:_ · · − − · −
+ #s:( − · − − ·
+ #s:) − · − − · −
+ #s:'\'' · − − − − ·
+ #s:= − · · · −
+ #s:+ · − · − ·
+ #s:/ − · · − ·
+ #s:@ (AC) · − − · − ·
+' |
+sed '
+ # TODO Signale
+ # KA
+ # (Spruchanfang) − · − · −
+ # BT
+ # (Pause) − · · · −
+ # AR
+ # (Spruchende) · − · − ·
+ # VE
+ # (verstanden) · · · − ·
+ # SK
+ # (Verkehrsende) · · · − · −
+ # SOS
+ # (internationaler
+ # (See-)Notruf) · · · − − − · · ·
+ # HH
+ # (Fehler; Irrung;
+ # Wiederholung
+ # ab letztem
+ # vollständigen Wort) · · · · · · · ·
+'
+}
+
+## Convert morse code to beep(1) arguments.
+morse2beeparg() {
+sed "
+ s: : -n -f 1 -l $dit:g
+ s:·: -n -f $freq -l $dit:g
+ s:−: -n -f $freq -l $dah:g
+" |
+ sed '
+ 1s:^:beep -f 1 -l 1:
+'
+}
+
+compile() {
+ char2morse
+}
+
+execute() {
+ `morse2beeparg`
+}
+
+## main - process either [any non-option] arguments or stdin.
+if test $# -gt 0; then
+ echo "$*"
+else
+ cat
+fi |
+case "$mode" in
+ (compile) compile;;
+ (execute) execute;;
+ (compile+execute) compile | execute;;
+ (*) echo bad mode: $mode >&2; exit 23;;
+esac
diff --git a/util/t/anonbox.net/got-some-valid-looking-email b/util/t/anonbox.net/got-some-valid-looking-email
new file mode 100755
index 00000000..e254687d
--- /dev/null
+++ b/util/t/anonbox.net/got-some-valid-looking-email
@@ -0,0 +1,16 @@
+#! /bin/sh
+set -euf
+
+tempfile=`mktemp /tmp/test.XXXXXXXX`
+trap "rm -f $tempfile" EXIT INT
+
+anonbox.net >$tempfile
+. $tempfile
+
+{
+ echo $email
+} | {
+ IFS=@. read _logname subdomain domain
+
+ echo "$uri" | grep -q "^https://$domain/$subdomain/[^/][^/]*/$"
+}
diff --git a/util/t/dic/can-scrape b/util/t/dic/can-scrape
new file mode 100755
index 00000000..702c2a02
--- /dev/null
+++ b/util/t/dic/can-scrape
@@ -0,0 +1,6 @@
+#! /bin/sh
+set -euf
+
+dic test |
+ sed 's/\[[^m]*m//g' |
+ grep -q 'test - der Test'
diff --git a/util/t/naturalvoices/att-produces-output b/util/t/naturalvoices/att-produces-output
new file mode 100755
index 00000000..17b40144
--- /dev/null
+++ b/util/t/naturalvoices/att-produces-output
@@ -0,0 +1,10 @@
+#!/bin/sh
+set -euf
+
+cd $(dirname $(readlink -f $0))
+. ../../lib/naturalvoices/att.sh
+
+OUTFILE="`mktemp /tmp/voice.XXXXXXXX`"
+trap "rm $OUTFILE" TERM INT EXIT
+get_tts 'hallo, welt!'
+file $OUTFILE |grep -q WAVE
diff --git a/util/t/stt/stt-works-with-espeak b/util/t/stt/stt-works-with-espeak
new file mode 100644
index 00000000..31710974
--- /dev/null
+++ b/util/t/stt/stt-works-with-espeak
@@ -0,0 +1,10 @@
+#!/bin/sh
+
+cd $(dirname $(readlink -f $0))
+. ../../lib/stt/google.sh
+tmp=$(mktemp)
+test_str="hello"
+trap "rm $tmp" TERM INT EXIT HUP
+espeak --stdout "$test_str" | flac --totally-silent -f -o "$tmp" -
+
+stt "$tmp" | egrep "^$test_str\$" >/dev/null
diff --git a/util/t/uriparse/parse-retard-uri b/util/t/uriparse/parse-retard-uri
new file mode 100755
index 00000000..76feac41
--- /dev/null
+++ b/util/t/uriparse/parse-retard-uri
@@ -0,0 +1,13 @@
+#!/bin/sh
+set -euf
+tempfile="`mktemp /tmp/test.XXXXXXXX`"
+trap "/bin/rm -f $tempfile" EXIT INT
+
+uriparse "http://'lolwut:\"khan@domain.tld/'''" > $tempfile
+. $tempfile
+[ "$HOSTN" = "domain.tld" ] && \
+ [ "$USERNAME" = "'lolwut" ] && \
+ [ "$PASSWORD" = '"khan' ] && \
+ [ "$URIPATH" = "/'''" ]
+
+
diff --git a/util/t/uriparse/parse-url b/util/t/uriparse/parse-url
new file mode 100755
index 00000000..2ccf39c9
--- /dev/null
+++ b/util/t/uriparse/parse-url
@@ -0,0 +1,13 @@
+#!/bin/sh
+set -euf
+tempfile="`mktemp /tmp/test.XXXXXXXX`"
+trap "/bin/rm -f $tempfile" EXIT INT
+
+uriparse "http://user:pass@domain.tld/path" > $tempfile
+. $tempfile
+[ "$HOSTN" = "domain.tld" ] && \
+ [ $USERNAME = "user" ] && \
+ [ $PASSWORD = "pass" ] && \
+ [ $URIPATH = "/path" ]
+
+
diff --git a/web b/web
new file mode 160000
+Subproject 1e1940124a9b475085d9f650c6b8e00d41e697f
diff --git a/webchat/Makefile b/webchat/Makefile
new file mode 100644
index 00000000..d661ae30
--- /dev/null
+++ b/webchat/Makefile
@@ -0,0 +1,8 @@
+server.key:
+ openssl genrsa -des3 -out server.key 2048
+server_npw.key: server.key
+ openssl rsa -in server.key -out server_npw.key
+server.csr: server_npw.key
+ openssl req -new -key server_npw.key -out server.csr
+server.crt: server.csr server_npw.ley
+ openssl x509 -req -days 365 -in server.csr -signkey server_npw.key -out server.crt
diff --git a/webchat/index.js b/webchat/index.js
new file mode 100644
index 00000000..9569fc80
--- /dev/null
+++ b/webchat/index.js
@@ -0,0 +1,172 @@
+'use strict';
+var fs = require('fs');
+var http = require('https');
+var sockjs = require('sockjs');
+var connect = require('connect');
+var irc = require('irc');
+var make_sockjs_server_connection_transport = require('./sockjs_server_connection_transport.js')
+var RPC = require('./public/rpc.js');
+var irc_nicks = []
+
+function pluck (key) {
+ return function (object) {
+ return object[key]
+ }
+}
+
+var clients = [];
+clients.broadcast = function (method, params) {
+ clients.map(pluck('rpc')).forEach(function (rpc) {
+ rpc.send(method, params)
+ })
+}
+
+var irc_reconnect = function() { //reconnt to irc
+ console.log("would reconnect now")
+// irc_client.disconnect()
+// irc_client.connect()
+}
+
+var pingTimeoutDelay = 3*60*1000
+var lastping = setTimeout(irc_reconnect, pingTimeoutDelay)
+
+var irc_client = new irc.Client('irc.freenode.net', 'kweb', { //create irc_client to talk to irc
+ channels: ['#krebs'], //todo: read from local_config
+ sasl: true,
+ secure: true,
+ userName: 'kweb', //todo: read from local_config
+ realName: 'kweb', //todo: read from local_config
+ password: fs.readFileSync(__dirname+'/local_config/irc.key').toString(),
+ debug: true,
+ showErrors: true,
+ floodProtection: true,
+ port: 6697,
+ autoRejoin: true,
+ autoConnect: true,
+ stripColors: true
+});
+
+irc_client.on('ping', function(server) { //restart timer on server ping
+ console.log("got ping from server, renewing timeout for automatic reconnect");
+ clearTimeout(lastping);
+ lastping = setTimeout(irc_reconnect, pingTimeoutDelay); //reconnect after irc timeout
+})
+
+irc_client.on('message#krebs', function(from, message) {
+ console.log({ from: from, message: message });
+ clients.broadcast('msg', {nick: from, msg: message})
+ clearTimeout(lastping);
+});
+
+irc_client.on('names#krebs', function(nicks) {
+ Object.keys(nicks).forEach(function (nick) {
+ irc_nicks.push(nick)
+ clients.broadcast('join', {type: 'irc', nick: nick})
+ })
+})
+
+irc_client.on('join#krebs', function(nick, msg) {
+ if (nick !== 'kweb'){
+ irc_nicks.push(nick)
+ clients.broadcast('join', {type: 'irc', nick: nick})
+ }
+})
+
+irc_client.on('part#krebs', function(nick, rs, msg) {
+ clients.broadcast('part', {type: 'irc', nick: nick})
+});
+
+irc_client.on('error', function (error) {
+ irc_nicks.forEach( function(nick) {
+ client.rpc.send('part', {type: 'irc', nick: nick})
+ irc_nicks.splice(irc_nicks.indexOf(nick))
+ })
+ console.log('irc-client error', error)
+})
+
+var echo = sockjs.createServer();
+
+var total_clients_ever_connected = 0
+
+echo.on('connection', function (connection) {
+ var client = {}
+ client.rpc = new RPC(make_sockjs_server_connection_transport(connection))
+ client.nick = 'anon'+(++total_clients_ever_connected)
+ client.rpc.send('your_nick', {nick: client.nick})
+ client.rpc.register('msg', {msg: 'string'}, function (params, callback) {
+ callback(null)
+ clients.broadcast('msg', {type: 'web', nick: client.nick, msg: params.msg})
+ irc_client.say('#krebs', client.nick + ' → ' + params.msg)
+ })
+ client.rpc.register('nick', {nick: 'string'}, function (params, callback) {
+ if (!!~clients.map(pluck('nick')).indexOf(params.nick)) {
+ callback('name already taken')
+ } else if (/^anon[0-9]+$/.test(params.nick)) {
+ callback('bad nick')
+ } else {
+ var oldnick = client.nick
+ client.nick = params.nick
+ callback(null)
+ clients.broadcast('nick', {type: 'web', newnick: client.nick, oldnick: oldnick})
+ irc_client.say('#krebs', oldnick + ' is now known as ' + client.nick)
+ }
+ })
+ connection.on('close', function() { //propagate if client quits the page
+ clients.splice(clients.indexOf(client));
+ clients.broadcast('part', {type: 'web', nick: client.nick})
+ irc_client.say('#krebs', client.nick + ' has parted')
+ })
+ //send the irc nicklist to the new joined client
+ irc_nicks.forEach( function(nick) {
+ client.rpc.send('join', {type: 'irc', nick: nick})
+ })
+ //send nicklist to newly joined client
+ clients.map(pluck('nick')).forEach(function (nick) {
+ client.rpc.send('join', {type: 'web', nick: nick})
+ })
+ //add new client to list
+ clients.push(client)
+ //send all including the new client the join
+ clients.broadcast('join', {type: 'web', nick: client.nick})
+ //send join to irc
+ irc_client.say('#krebs', client.nick + ' has joined')
+})
+
+var app = connect()
+ .use(connect.logger('dev'))
+ .use(connect.static(__dirname+'/public'))
+ .use( function (req, res) {
+ res.writeHead(200, {'Content-Type': 'text/html'});
+ var page_template='<!doctype html>\n';
+ page_template+='<link rel="stylesheet" type="text/css" href="reset.css">\n';
+ page_template+='<script src="sockjs-0.3.min.js"></script>\n';
+ page_template+='<script src="jquery-2.0.3.min.js"></script>\n';
+ page_template+='<script src="commands.js"></script>\n';
+ page_template+='<script src="functions.js"></script>\n';
+ page_template+='<script src="sockjs_client_transport.js"></script>\n';
+ page_template+='<script src="rpc.js"></script>\n';
+ page_template+='<script src="client.js"></script>\n';
+ page_template+='<div id="bg">';
+ page_template+='<div id="chatter">';
+ page_template+='<div id="space"></div>';
+ page_template+='hello, this is the official krebs support:<br>\n';
+ page_template+='<table id="chatbox"><tr id="foot"><td id="time"></td><td id="nick" class="chat_from"></td><td><input type="text" id="input"></td></tr></table>\n';
+ page_template+='</div>';
+ page_template+='<div id="sideboard"><div id=nicklist></div>';
+ page_template+='<div id="links">';
+ page_template+='<a href="http://gold.krebsco.de/">krebsgold browser plugin</a><br>';
+ page_template+='<a href="http://ire:1027/dashboard/">ire: Retiolum Dashboard</a><br>';
+ page_template+='<a href="http://pigstarter/">pigstarter: network graphs</a><br>';
+ page_template+='</div></div></div>';
+ res.end(page_template);
+
+ })
+
+var web_serv_options = { //certificates for https
+ key: fs.readFileSync(__dirname+'/local_config/server_npw.key'),
+ cert: fs.readFileSync(__dirname+'/local_config/server.crt'),
+};
+var server = http.createServer(web_serv_options, app);
+echo.installHandlers(server, {prefix:'/echo'});
+server.listen(1337, '0.0.0.0');
+console.log('Server running at https://127.0.0.1:1337/');
diff --git a/webchat/package.json b/webchat/package.json
new file mode 100644
index 00000000..1a9ad47d
--- /dev/null
+++ b/webchat/package.json
@@ -0,0 +1,15 @@
+{
+ "name": "krebs-webbot",
+ "version": "0.0.1",
+ "dependencies": {
+ "connect": "2.11.0",
+ "irc": "0.3.6",
+ "sockjs": "0.3.8",
+ "redis": "0.9.0"
+ },
+ "scripts": {
+ "test": "tap test/*.js"
+ },
+ "author": "lassulus",
+ "license": "WTFPL"
+}
diff --git a/webchat/proto_spec b/webchat/proto_spec
new file mode 100644
index 00000000..fffce165
--- /dev/null
+++ b/webchat/proto_spec
@@ -0,0 +1,62 @@
+server -> client:
+#old
+type: 'message' | 'join' | 'quit' | 'nicklist' | 'nickchange' | 'usererror'
+nick: the clients nickname ('message','nickchange')
+newnick: new nick after nickchange ('nickchange')
+from: the clients ip ('message','quit','join')
+message: the data send ('message', 'nicklist','usererror'
+
+
+#new
+type: 'irc_msg' | 'irc_join' | 'irc_quit' | 'irc_nickchange' | 'irc_client_connect' | 'irc_client_disconnect' | 'web_welcome' |'web_msg' | 'web_join' | 'web_quit' | 'web_nickchange' | 'usererror'
+params:{ nick:, oldnick:, nicklist:, msg:, errormsg: }
+
+'irc_msg': nick, msg
+'irc_join': nick
+'irc_quit': nick
+'irc_nickchange': oldnick, nick
+'kweb_irc_connect': nicklist
+'kweb_irc_disconnect': --
+'web_welcome': msg, nicklist, nick
+'web_msg': nick, msg
+'web_join': nick
+'web_quit': nick
+'web_nickchange': oldnick, nick
+'usererror': msg
+
+
+client -> server
+#old
+method: 'say', 'nick'
+params:{ msg:, nick: }
+
+'say': msg
+'nick': nick
+
+
+##############JSON RPC################
+server->client:
+{method: 'say', params: {msg: msg}, id: id}
+-> {result: {ok: ok}, error {error muted?}, id: id}
+
+{method: 'nick', params: {nick: nick}, id: id}
+-> {result: {nick: nick}, error: {error name taken?/reserved/not allowed}, id: id}
+
+
+client->server:
+broadcast:
+ {method: 'irc_msg', params: {nick: nick, msg: msg}, id: 0} #notification
+ {method: 'irc_join', params: {nick: nick}, id: 0} #notification
+ {method: 'irc_quit', params: {nick: nick}, id: 0} #notification
+ {method: 'irc_nickchange', params: {nick: nick, oldnick: oldnick}, id: 0} #notification
+ {method: 'kweb_irc_connect', params: {nicklist: nicklist}, id: 0} #notification
+ {method: 'kweb_irc_disconnect', params: {}, id: 0} #notification
+ {method: 'web_msg', params: {nick: nick, msg: msg}, id: 0} #notification
+ {method: 'web_join', params: {nick: nick}, id: 0} #notification
+ {method: 'web_quit', params: {nick: nick}, id: 0} #notification
+ {method: 'web_nickchange', params: {nick: nick, oldnick: oldnick}, id: 0} #notification
+
+unicast:
+ {method: 'coi', params: {}, id: id}
+ -> {result: {result: {nick: nick, addr: addr}, error: {connection error?}, id: id}
+ {method: 'usererror', params: {msg: 'error type'}, id: 0} #notification
diff --git a/webchat/public/client.js b/webchat/public/client.js
new file mode 100644
index 00000000..54ccfe34
--- /dev/null
+++ b/webchat/public/client.js
@@ -0,0 +1,70 @@
+var settings = {}
+settings.sock = new SockJS('/echo');
+settings.waiting_callbacks = {}
+
+var transport = make_sockjs_client_transport(settings.sock)
+settings.rpc = new RPC(transport)
+
+settings.rpc.register('msg', {type: 'string', nick: 'string', msg: 'string'}, function(params, callback) {
+ var safe_message = $('<div/>').text(params.msg).html();
+ safe_message = replaceURLWithHTMLLinks(safe_message);
+ var safe_from = $('<div/>').text(params.nick).html();
+ chatboxAppend(safe_from, safe_message, 'web_msg')
+ return callback(null)
+})
+settings.rpc.register('nick', {type: 'string', newnick: 'string', oldnick: 'string'}, function(params, callback) {
+ var safe_oldnick = $('<div/>').text(params.oldnick).html();
+ var safe_newnick = $('<div/>').text(params.newnick).html();
+ var safe_type = $('<div/>').text(params.type).html();
+ if (safe_oldnick === settings.nick){
+ settings.nick = safe_newnick
+ $('#nick').html(settings.nick)
+ }
+ $(getNicklistElement(safe_oldnick,safe_type)).remove();
+ $('#nicklist').append('<div class="'+safe_type+'_name">' + safe_newnick + '</div>') ;
+ chatboxAppend(safe_oldnick, 'is now known as ' + safe_newnick, 'nick');
+ return callback(null)
+})
+settings.rpc.register('your_nick', {nick: 'string'}, function(params, callback) {
+ var safe_nick = $('<div/>').text(params.nick).html();
+ settings.nick = safe_nick
+ $('#nick').html(settings.nick)
+ return callback(null)
+})
+settings.rpc.register('join', {type: 'string', nick: 'string'}, function(params, callback) {
+ var safe_nick = $('<div/>').text(params.nick).html();
+ var safe_type = $('<div/>').text(params.type).html();
+ $('#nicklist').append('<div class="'+safe_type+'_name">' + safe_nick + '</div>') ;
+ chatboxAppend(safe_nick, 'has joined');
+ return callback(null)
+})
+settings.rpc.register('part', {type: 'string', nick: 'string'}, function(params, callback) {
+ var safe_nick = $('<div/>').text(params.nick).html();
+ var safe_type = $('<div/>').text(params.type).html();
+ $(getNicklistElement(safe_nick,safe_type)).remove();
+ chatboxAppend(safe_nick, 'has parted');
+ return callback(null)
+})
+
+$(function updateTime () {
+ $('#time').html(getCurTime());
+ setTimeout(updateTime,'1000');
+ return true;
+});
+
+
+$(function() {
+ $('#input').keydown(function(e) {
+ if (e.keyCode === 13) {
+ e.preventDefault();
+ e.stopPropagation();
+ e.stopImmediatePropagation();
+ var input = ($('#input').val());
+ $('#input').val('')
+
+ var command = inputParser(input)
+ return (commands[command.method] || commands.badcommand)(settings, command.params)
+ }
+ });
+
+});
diff --git a/webchat/public/functions.js b/webchat/public/functions.js
new file mode 100644
index 00000000..781fafce
--- /dev/null
+++ b/webchat/public/functions.js
@@ -0,0 +1,54 @@
+function inputParser (str) {
+ var match = /^\/([a-z]+)(?:\s+(.*\S))?\s*$/.exec(str)
+ if (match) {
+ return { method: match[1], params: match[2] }
+ } else {
+ return { method: 'msg', params: str }
+ }
+}
+
+function replaceURLWithHTMLLinks (text) {
+ var exp = /(\b(https?|ftp|file):\/\/[-A-Z0-9+&@#\/%?=~_|!:,.;]*[-A-Z0-9+&@#\/%=~_|])/ig;
+ return text.replace(exp,"<a class=chat_link href='$1'>$1</a>");
+}
+
+function getNicklistElement(name, type) {
+ var el;
+ $('.'+type+'_name').each(function (i,e) {
+ if (e.innerHTML === name) {
+ if (typeof el !== 'undefined') {
+ throw new Error('duplicate name: ' + name);
+ };
+ el = e;
+ };
+ });
+ return el;
+}
+
+function chatboxAppend (chat_from, chat_msg, type) {
+ type = type||'msg'
+ $('<tr><td class="date '+type+'_date">'+getCurTime()+'</td><td class="from '+type+'_from">'+chat_from+'</td><td class="msg '+type+'_msg">'+chat_msg+'</td></tr>').insertBefore('#foot');
+
+ var elem = document.getElementById('chatter');
+ elem.scrollTop = elem.scrollHeight;
+};
+
+function getCurTime () {
+ date = new Date;
+ h = date.getHours();
+ if(h<10)
+ {
+ h = "0"+h;
+ }
+ m = date.getMinutes();
+ if(m<10)
+ {
+ m = "0"+m;
+ }
+ s = date.getSeconds();
+ if(s<10)
+ {
+ s = "0"+s;
+ }
+ return ''+h+':'+m+':'+s;
+};
diff --git a/webchat/public/jquery-2.0.3.min.js b/webchat/public/jquery-2.0.3.min.js
new file mode 100644
index 00000000..2be209dd
--- /dev/null
+++ b/webchat/public/jquery-2.0.3.min.js
@@ -0,0 +1,6 @@
+/*! jQuery v2.0.3 | (c) 2005, 2013 jQuery Foundation, Inc. | jquery.org/license
+//@ sourceMappingURL=jquery-2.0.3.min.map
+*/
+(function(e,undefined){var t,n,r=typeof undefined,i=e.location,o=e.document,s=o.documentElement,a=e.jQuery,u=e.$,l={},c=[],p="2.0.3",f=c.concat,h=c.push,d=c.slice,g=c.indexOf,m=l.toString,y=l.hasOwnProperty,v=p.trim,x=function(e,n){return new x.fn.init(e,n,t)},b=/[+-]?(?:\d*\.|)\d+(?:[eE][+-]?\d+|)/.source,w=/\S+/g,T=/^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]*))$/,C=/^<(\w+)\s*\/?>(?:<\/\1>|)$/,k=/^-ms-/,N=/-([\da-z])/gi,E=function(e,t){return t.toUpperCase()},S=function(){o.removeEventListener("DOMContentLoaded",S,!1),e.removeEventListener("load",S,!1),x.ready()};x.fn=x.prototype={jquery:p,constructor:x,init:function(e,t,n){var r,i;if(!e)return this;if("string"==typeof e){if(r="<"===e.charAt(0)&&">"===e.charAt(e.length-1)&&e.length>=3?[null,e,null]:T.exec(e),!r||!r[1]&&t)return!t||t.jquery?(t||n).find(e):this.constructor(t).find(e);if(r[1]){if(t=t instanceof x?t[0]:t,x.merge(this,x.parseHTML(r[1],t&&t.nodeType?t.ownerDocument||t:o,!0)),C.test(r[1])&&x.isPlainObject(t))for(r in t)x.isFunction(this[r])?this[r](t[r]):this.attr(r,t[r]);return this}return i=o.getElementById(r[2]),i&&i.parentNode&&(this.length=1,this[0]=i),this.context=o,this.selector=e,this}return e.nodeType?(this.context=this[0]=e,this.length=1,this):x.isFunction(e)?n.ready(e):(e.selector!==undefined&&(this.selector=e.selector,this.context=e.context),x.makeArray(e,this))},selector:"",length:0,toArray:function(){return d.call(this)},get:function(e){return null==e?this.toArray():0>e?this[this.length+e]:this[e]},pushStack:function(e){var t=x.merge(this.constructor(),e);return t.prevObject=this,t.context=this.context,t},each:function(e,t){return x.each(this,e,t)},ready:function(e){return x.ready.promise().done(e),this},slice:function(){return this.pushStack(d.apply(this,arguments))},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},eq:function(e){var t=this.length,n=+e+(0>e?t:0);return this.pushStack(n>=0&&t>n?[this[n]]:[])},map:function(e){return this.pushStack(x.map(this,function(t,n){return e.call(t,n,t)}))},end:function(){return this.prevObject||this.constructor(null)},push:h,sort:[].sort,splice:[].splice},x.fn.init.prototype=x.fn,x.extend=x.fn.extend=function(){var e,t,n,r,i,o,s=arguments[0]||{},a=1,u=arguments.length,l=!1;for("boolean"==typeof s&&(l=s,s=arguments[1]||{},a=2),"object"==typeof s||x.isFunction(s)||(s={}),u===a&&(s=this,--a);u>a;a++)if(null!=(e=arguments[a]))for(t in e)n=s[t],r=e[t],s!==r&&(l&&r&&(x.isPlainObject(r)||(i=x.isArray(r)))?(i?(i=!1,o=n&&x.isArray(n)?n:[]):o=n&&x.isPlainObject(n)?n:{},s[t]=x.extend(l,o,r)):r!==undefined&&(s[t]=r));return s},x.extend({expando:"jQuery"+(p+Math.random()).replace(/\D/g,""),noConflict:function(t){return e.$===x&&(e.$=u),t&&e.jQuery===x&&(e.jQuery=a),x},isReady:!1,readyWait:1,holdReady:function(e){e?x.readyWait++:x.ready(!0)},ready:function(e){(e===!0?--x.readyWait:x.isReady)||(x.isReady=!0,e!==!0&&--x.readyWait>0||(n.resolveWith(o,[x]),x.fn.trigger&&x(o).trigger("ready").off("ready")))},isFunction:function(e){return"function"===x.type(e)},isArray:Array.isArray,isWindow:function(e){return null!=e&&e===e.window},isNumeric:function(e){return!isNaN(parseFloat(e))&&isFinite(e)},type:function(e){return null==e?e+"":"object"==typeof e||"function"==typeof e?l[m.call(e)]||"object":typeof e},isPlainObject:function(e){if("object"!==x.type(e)||e.nodeType||x.isWindow(e))return!1;try{if(e.constructor&&!y.call(e.constructor.prototype,"isPrototypeOf"))return!1}catch(t){return!1}return!0},isEmptyObject:function(e){var t;for(t in e)return!1;return!0},error:function(e){throw Error(e)},parseHTML:function(e,t,n){if(!e||"string"!=typeof e)return null;"boolean"==typeof t&&(n=t,t=!1),t=t||o;var r=C.exec(e),i=!n&&[];return r?[t.createElement(r[1])]:(r=x.buildFragment([e],t,i),i&&x(i).remove(),x.merge([],r.childNodes))},parseJSON:JSON.parse,parseXML:function(e){var t,n;if(!e||"string"!=typeof e)return null;try{n=new DOMParser,t=n.parseFromString(e,"text/xml")}catch(r){t=undefined}return(!t||t.getElementsByTagName("parsererror").length)&&x.error("Invalid XML: "+e),t},noop:function(){},globalEval:function(e){var t,n=eval;e=x.trim(e),e&&(1===e.indexOf("use strict")?(t=o.createElement("script"),t.text=e,o.head.appendChild(t).parentNode.removeChild(t)):n(e))},camelCase:function(e){return e.replace(k,"ms-").replace(N,E)},nodeName:function(e,t){return e.nodeName&&e.nodeName.toLowerCase()===t.toLowerCase()},each:function(e,t,n){var r,i=0,o=e.length,s=j(e);if(n){if(s){for(;o>i;i++)if(r=t.apply(e[i],n),r===!1)break}else for(i in e)if(r=t.apply(e[i],n),r===!1)break}else if(s){for(;o>i;i++)if(r=t.call(e[i],i,e[i]),r===!1)break}else for(i in e)if(r=t.call(e[i],i,e[i]),r===!1)break;return e},trim:function(e){return null==e?"":v.call(e)},makeArray:function(e,t){var n=t||[];return null!=e&&(j(Object(e))?x.merge(n,"string"==typeof e?[e]:e):h.call(n,e)),n},inArray:function(e,t,n){return null==t?-1:g.call(t,e,n)},merge:function(e,t){var n=t.length,r=e.length,i=0;if("number"==typeof n)for(;n>i;i++)e[r++]=t[i];else while(t[i]!==undefined)e[r++]=t[i++];return e.length=r,e},grep:function(e,t,n){var r,i=[],o=0,s=e.length;for(n=!!n;s>o;o++)r=!!t(e[o],o),n!==r&&i.push(e[o]);return i},map:function(e,t,n){var r,i=0,o=e.length,s=j(e),a=[];if(s)for(;o>i;i++)r=t(e[i],i,n),null!=r&&(a[a.length]=r);else for(i in e)r=t(e[i],i,n),null!=r&&(a[a.length]=r);return f.apply([],a)},guid:1,proxy:function(e,t){var n,r,i;return"string"==typeof t&&(n=e[t],t=e,e=n),x.isFunction(e)?(r=d.call(arguments,2),i=function(){return e.apply(t||this,r.concat(d.call(arguments)))},i.guid=e.guid=e.guid||x.guid++,i):undefined},access:function(e,t,n,r,i,o,s){var a=0,u=e.length,l=null==n;if("object"===x.type(n)){i=!0;for(a in n)x.access(e,t,a,n[a],!0,o,s)}else if(r!==undefined&&(i=!0,x.isFunction(r)||(s=!0),l&&(s?(t.call(e,r),t=null):(l=t,t=function(e,t,n){return l.call(x(e),n)})),t))for(;u>a;a++)t(e[a],n,s?r:r.call(e[a],a,t(e[a],n)));return i?e:l?t.call(e):u?t(e[0],n):o},now:Date.now,swap:function(e,t,n,r){var i,o,s={};for(o in t)s[o]=e.style[o],e.style[o]=t[o];i=n.apply(e,r||[]);for(o in t)e.style[o]=s[o];return i}}),x.ready.promise=function(t){return n||(n=x.Deferred(),"complete"===o.readyState?setTimeout(x.ready):(o.addEventListener("DOMContentLoaded",S,!1),e.addEventListener("load",S,!1))),n.promise(t)},x.each("Boolean Number String Function Array Date RegExp Object Error".split(" "),function(e,t){l["[object "+t+"]"]=t.toLowerCase()});function j(e){var t=e.length,n=x.type(e);return x.isWindow(e)?!1:1===e.nodeType&&t?!0:"array"===n||"function"!==n&&(0===t||"number"==typeof t&&t>0&&t-1 in e)}t=x(o),function(e,undefined){var t,n,r,i,o,s,a,u,l,c,p,f,h,d,g,m,y,v="sizzle"+-new Date,b=e.document,w=0,T=0,C=st(),k=st(),N=st(),E=!1,S=function(e,t){return e===t?(E=!0,0):0},j=typeof undefined,D=1<<31,A={}.hasOwnProperty,L=[],q=L.pop,H=L.push,O=L.push,F=L.slice,P=L.indexOf||function(e){var t=0,n=this.length;for(;n>t;t++)if(this[t]===e)return t;return-1},R="checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped",M="[\\x20\\t\\r\\n\\f]",W="(?:\\\\.|[\\w-]|[^\\x00-\\xa0])+",$=W.replace("w","w#"),B="\\["+M+"*("+W+")"+M+"*(?:([*^$|!~]?=)"+M+"*(?:(['\"])((?:\\\\.|[^\\\\])*?)\\3|("+$+")|)|)"+M+"*\\]",I=":("+W+")(?:\\(((['\"])((?:\\\\.|[^\\\\])*?)\\3|((?:\\\\.|[^\\\\()[\\]]|"+B.replace(3,8)+")*)|.*)\\)|)",z=RegExp("^"+M+"+|((?:^|[^\\\\])(?:\\\\.)*)"+M+"+$","g"),_=RegExp("^"+M+"*,"+M+"*"),X=RegExp("^"+M+"*([>+~]|"+M+")"+M+"*"),U=RegExp(M+"*[+~]"),Y=RegExp("="+M+"*([^\\]'\"]*)"+M+"*\\]","g"),V=RegExp(I),G=RegExp("^"+$+"$"),J={ID:RegExp("^#("+W+")"),CLASS:RegExp("^\\.("+W+")"),TAG:RegExp("^("+W.replace("w","w*")+")"),ATTR:RegExp("^"+B),PSEUDO:RegExp("^"+I),CHILD:RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+M+"*(even|odd|(([+-]|)(\\d*)n|)"+M+"*(?:([+-]|)"+M+"*(\\d+)|))"+M+"*\\)|)","i"),bool:RegExp("^(?:"+R+")$","i"),needsContext:RegExp("^"+M+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+M+"*((?:-\\d)?\\d*)"+M+"*\\)|)(?=[^-]|$)","i")},Q=/^[^{]+\{\s*\[native \w/,K=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,Z=/^(?:input|select|textarea|button)$/i,et=/^h\d$/i,tt=/'|\\/g,nt=RegExp("\\\\([\\da-f]{1,6}"+M+"?|("+M+")|.)","ig"),rt=function(e,t,n){var r="0x"+t-65536;return r!==r||n?t:0>r?String.fromCharCode(r+65536):String.fromCharCode(55296|r>>10,56320|1023&r)};try{O.apply(L=F.call(b.childNodes),b.childNodes),L[b.childNodes.length].nodeType}catch(it){O={apply:L.length?function(e,t){H.apply(e,F.call(t))}:function(e,t){var n=e.length,r=0;while(e[n++]=t[r++]);e.length=n-1}}}function ot(e,t,r,i){var o,s,a,u,l,f,g,m,x,w;if((t?t.ownerDocument||t:b)!==p&&c(t),t=t||p,r=r||[],!e||"string"!=typeof e)return r;if(1!==(u=t.nodeType)&&9!==u)return[];if(h&&!i){if(o=K.exec(e))if(a=o[1]){if(9===u){if(s=t.getElementById(a),!s||!s.parentNode)return r;if(s.id===a)return r.push(s),r}else if(t.ownerDocument&&(s=t.ownerDocument.getElementById(a))&&y(t,s)&&s.id===a)return r.push(s),r}else{if(o[2])return O.apply(r,t.getElementsByTagName(e)),r;if((a=o[3])&&n.getElementsByClassName&&t.getElementsByClassName)return O.apply(r,t.getElementsByClassName(a)),r}if(n.qsa&&(!d||!d.test(e))){if(m=g=v,x=t,w=9===u&&e,1===u&&"object"!==t.nodeName.toLowerCase()){f=gt(e),(g=t.getAttribute("id"))?m=g.replace(tt,"\\$&"):t.setAttribute("id",m),m="[id='"+m+"'] ",l=f.length;while(l--)f[l]=m+mt(f[l]);x=U.test(e)&&t.parentNode||t,w=f.join(",")}if(w)try{return O.apply(r,x.querySelectorAll(w)),r}catch(T){}finally{g||t.removeAttribute("id")}}}return kt(e.replace(z,"$1"),t,r,i)}function st(){var e=[];function t(n,r){return e.push(n+=" ")>i.cacheLength&&delete t[e.shift()],t[n]=r}return t}function at(e){return e[v]=!0,e}function ut(e){var t=p.createElement("div");try{return!!e(t)}catch(n){return!1}finally{t.parentNode&&t.parentNode.removeChild(t),t=null}}function lt(e,t){var n=e.split("|"),r=e.length;while(r--)i.attrHandle[n[r]]=t}function ct(e,t){var n=t&&e,r=n&&1===e.nodeType&&1===t.nodeType&&(~t.sourceIndex||D)-(~e.sourceIndex||D);if(r)return r;if(n)while(n=n.nextSibling)if(n===t)return-1;return e?1:-1}function pt(e){return function(t){var n=t.nodeName.toLowerCase();return"input"===n&&t.type===e}}function ft(e){return function(t){var n=t.nodeName.toLowerCase();return("input"===n||"button"===n)&&t.type===e}}function ht(e){return at(function(t){return t=+t,at(function(n,r){var i,o=e([],n.length,t),s=o.length;while(s--)n[i=o[s]]&&(n[i]=!(r[i]=n[i]))})})}s=ot.isXML=function(e){var t=e&&(e.ownerDocument||e).documentElement;return t?"HTML"!==t.nodeName:!1},n=ot.support={},c=ot.setDocument=function(e){var t=e?e.ownerDocument||e:b,r=t.defaultView;return t!==p&&9===t.nodeType&&t.documentElement?(p=t,f=t.documentElement,h=!s(t),r&&r.attachEvent&&r!==r.top&&r.attachEvent("onbeforeunload",function(){c()}),n.attributes=ut(function(e){return e.className="i",!e.getAttribute("className")}),n.getElementsByTagName=ut(function(e){return e.appendChild(t.createComment("")),!e.getElementsByTagName("*").length}),n.getElementsByClassName=ut(function(e){return e.innerHTML="<div class='a'></div><div class='a i'></div>",e.firstChild.className="i",2===e.getElementsByClassName("i").length}),n.getById=ut(function(e){return f.appendChild(e).id=v,!t.getElementsByName||!t.getElementsByName(v).length}),n.getById?(i.find.ID=function(e,t){if(typeof t.getElementById!==j&&h){var n=t.getElementById(e);return n&&n.parentNode?[n]:[]}},i.filter.ID=function(e){var t=e.replace(nt,rt);return function(e){return e.getAttribute("id")===t}}):(delete i.find.ID,i.filter.ID=function(e){var t=e.replace(nt,rt);return function(e){var n=typeof e.getAttributeNode!==j&&e.getAttributeNode("id");return n&&n.value===t}}),i.find.TAG=n.getElementsByTagName?function(e,t){return typeof t.getElementsByTagName!==j?t.getElementsByTagName(e):undefined}:function(e,t){var n,r=[],i=0,o=t.getElementsByTagName(e);if("*"===e){while(n=o[i++])1===n.nodeType&&r.push(n);return r}return o},i.find.CLASS=n.getElementsByClassName&&function(e,t){return typeof t.getElementsByClassName!==j&&h?t.getElementsByClassName(e):undefined},g=[],d=[],(n.qsa=Q.test(t.querySelectorAll))&&(ut(function(e){e.innerHTML="<select><option selected=''></option></select>",e.querySelectorAll("[selected]").length||d.push("\\["+M+"*(?:value|"+R+")"),e.querySelectorAll(":checked").length||d.push(":checked")}),ut(function(e){var n=t.createElement("input");n.setAttribute("type","hidden"),e.appendChild(n).setAttribute("t",""),e.querySelectorAll("[t^='']").length&&d.push("[*^$]="+M+"*(?:''|\"\")"),e.querySelectorAll(":enabled").length||d.push(":enabled",":disabled"),e.querySelectorAll("*,:x"),d.push(",.*:")})),(n.matchesSelector=Q.test(m=f.webkitMatchesSelector||f.mozMatchesSelector||f.oMatchesSelector||f.msMatchesSelector))&&ut(function(e){n.disconnectedMatch=m.call(e,"div"),m.call(e,"[s!='']:x"),g.push("!=",I)}),d=d.length&&RegExp(d.join("|")),g=g.length&&RegExp(g.join("|")),y=Q.test(f.contains)||f.compareDocumentPosition?function(e,t){var n=9===e.nodeType?e.documentElement:e,r=t&&t.parentNode;return e===r||!(!r||1!==r.nodeType||!(n.contains?n.contains(r):e.compareDocumentPosition&&16&e.compareDocumentPosition(r)))}:function(e,t){if(t)while(t=t.parentNode)if(t===e)return!0;return!1},S=f.compareDocumentPosition?function(e,r){if(e===r)return E=!0,0;var i=r.compareDocumentPosition&&e.compareDocumentPosition&&e.compareDocumentPosition(r);return i?1&i||!n.sortDetached&&r.compareDocumentPosition(e)===i?e===t||y(b,e)?-1:r===t||y(b,r)?1:l?P.call(l,e)-P.call(l,r):0:4&i?-1:1:e.compareDocumentPosition?-1:1}:function(e,n){var r,i=0,o=e.parentNode,s=n.parentNode,a=[e],u=[n];if(e===n)return E=!0,0;if(!o||!s)return e===t?-1:n===t?1:o?-1:s?1:l?P.call(l,e)-P.call(l,n):0;if(o===s)return ct(e,n);r=e;while(r=r.parentNode)a.unshift(r);r=n;while(r=r.parentNode)u.unshift(r);while(a[i]===u[i])i++;return i?ct(a[i],u[i]):a[i]===b?-1:u[i]===b?1:0},t):p},ot.matches=function(e,t){return ot(e,null,null,t)},ot.matchesSelector=function(e,t){if((e.ownerDocument||e)!==p&&c(e),t=t.replace(Y,"='$1']"),!(!n.matchesSelector||!h||g&&g.test(t)||d&&d.test(t)))try{var r=m.call(e,t);if(r||n.disconnectedMatch||e.document&&11!==e.document.nodeType)return r}catch(i){}return ot(t,p,null,[e]).length>0},ot.contains=function(e,t){return(e.ownerDocument||e)!==p&&c(e),y(e,t)},ot.attr=function(e,t){(e.ownerDocument||e)!==p&&c(e);var r=i.attrHandle[t.toLowerCase()],o=r&&A.call(i.attrHandle,t.toLowerCase())?r(e,t,!h):undefined;return o===undefined?n.attributes||!h?e.getAttribute(t):(o=e.getAttributeNode(t))&&o.specified?o.value:null:o},ot.error=function(e){throw Error("Syntax error, unrecognized expression: "+e)},ot.uniqueSort=function(e){var t,r=[],i=0,o=0;if(E=!n.detectDuplicates,l=!n.sortStable&&e.slice(0),e.sort(S),E){while(t=e[o++])t===e[o]&&(i=r.push(o));while(i--)e.splice(r[i],1)}return e},o=ot.getText=function(e){var t,n="",r=0,i=e.nodeType;if(i){if(1===i||9===i||11===i){if("string"==typeof e.textContent)return e.textContent;for(e=e.firstChild;e;e=e.nextSibling)n+=o(e)}else if(3===i||4===i)return e.nodeValue}else for(;t=e[r];r++)n+=o(t);return n},i=ot.selectors={cacheLength:50,createPseudo:at,match:J,attrHandle:{},find:{},relative:{">":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(e){return e[1]=e[1].replace(nt,rt),e[3]=(e[4]||e[5]||"").replace(nt,rt),"~="===e[2]&&(e[3]=" "+e[3]+" "),e.slice(0,4)},CHILD:function(e){return e[1]=e[1].toLowerCase(),"nth"===e[1].slice(0,3)?(e[3]||ot.error(e[0]),e[4]=+(e[4]?e[5]+(e[6]||1):2*("even"===e[3]||"odd"===e[3])),e[5]=+(e[7]+e[8]||"odd"===e[3])):e[3]&&ot.error(e[0]),e},PSEUDO:function(e){var t,n=!e[5]&&e[2];return J.CHILD.test(e[0])?null:(e[3]&&e[4]!==undefined?e[2]=e[4]:n&&V.test(n)&&(t=gt(n,!0))&&(t=n.indexOf(")",n.length-t)-n.length)&&(e[0]=e[0].slice(0,t),e[2]=n.slice(0,t)),e.slice(0,3))}},filter:{TAG:function(e){var t=e.replace(nt,rt).toLowerCase();return"*"===e?function(){return!0}:function(e){return e.nodeName&&e.nodeName.toLowerCase()===t}},CLASS:function(e){var t=C[e+" "];return t||(t=RegExp("(^|"+M+")"+e+"("+M+"|$)"))&&C(e,function(e){return t.test("string"==typeof e.className&&e.className||typeof e.getAttribute!==j&&e.getAttribute("class")||"")})},ATTR:function(e,t,n){return function(r){var i=ot.attr(r,e);return null==i?"!="===t:t?(i+="","="===t?i===n:"!="===t?i!==n:"^="===t?n&&0===i.indexOf(n):"*="===t?n&&i.indexOf(n)>-1:"$="===t?n&&i.slice(-n.length)===n:"~="===t?(" "+i+" ").indexOf(n)>-1:"|="===t?i===n||i.slice(0,n.length+1)===n+"-":!1):!0}},CHILD:function(e,t,n,r,i){var o="nth"!==e.slice(0,3),s="last"!==e.slice(-4),a="of-type"===t;return 1===r&&0===i?function(e){return!!e.parentNode}:function(t,n,u){var l,c,p,f,h,d,g=o!==s?"nextSibling":"previousSibling",m=t.parentNode,y=a&&t.nodeName.toLowerCase(),x=!u&&!a;if(m){if(o){while(g){p=t;while(p=p[g])if(a?p.nodeName.toLowerCase()===y:1===p.nodeType)return!1;d=g="only"===e&&!d&&"nextSibling"}return!0}if(d=[s?m.firstChild:m.lastChild],s&&x){c=m[v]||(m[v]={}),l=c[e]||[],h=l[0]===w&&l[1],f=l[0]===w&&l[2],p=h&&m.childNodes[h];while(p=++h&&p&&p[g]||(f=h=0)||d.pop())if(1===p.nodeType&&++f&&p===t){c[e]=[w,h,f];break}}else if(x&&(l=(t[v]||(t[v]={}))[e])&&l[0]===w)f=l[1];else while(p=++h&&p&&p[g]||(f=h=0)||d.pop())if((a?p.nodeName.toLowerCase()===y:1===p.nodeType)&&++f&&(x&&((p[v]||(p[v]={}))[e]=[w,f]),p===t))break;return f-=i,f===r||0===f%r&&f/r>=0}}},PSEUDO:function(e,t){var n,r=i.pseudos[e]||i.setFilters[e.toLowerCase()]||ot.error("unsupported pseudo: "+e);return r[v]?r(t):r.length>1?(n=[e,e,"",t],i.setFilters.hasOwnProperty(e.toLowerCase())?at(function(e,n){var i,o=r(e,t),s=o.length;while(s--)i=P.call(e,o[s]),e[i]=!(n[i]=o[s])}):function(e){return r(e,0,n)}):r}},pseudos:{not:at(function(e){var t=[],n=[],r=a(e.replace(z,"$1"));return r[v]?at(function(e,t,n,i){var o,s=r(e,null,i,[]),a=e.length;while(a--)(o=s[a])&&(e[a]=!(t[a]=o))}):function(e,i,o){return t[0]=e,r(t,null,o,n),!n.pop()}}),has:at(function(e){return function(t){return ot(e,t).length>0}}),contains:at(function(e){return function(t){return(t.textContent||t.innerText||o(t)).indexOf(e)>-1}}),lang:at(function(e){return G.test(e||"")||ot.error("unsupported lang: "+e),e=e.replace(nt,rt).toLowerCase(),function(t){var n;do if(n=h?t.lang:t.getAttribute("xml:lang")||t.getAttribute("lang"))return n=n.toLowerCase(),n===e||0===n.indexOf(e+"-");while((t=t.parentNode)&&1===t.nodeType);return!1}}),target:function(t){var n=e.location&&e.location.hash;return n&&n.slice(1)===t.id},root:function(e){return e===f},focus:function(e){return e===p.activeElement&&(!p.hasFocus||p.hasFocus())&&!!(e.type||e.href||~e.tabIndex)},enabled:function(e){return e.disabled===!1},disabled:function(e){return e.disabled===!0},checked:function(e){var t=e.nodeName.toLowerCase();return"input"===t&&!!e.checked||"option"===t&&!!e.selected},selected:function(e){return e.parentNode&&e.parentNode.selectedIndex,e.selected===!0},empty:function(e){for(e=e.firstChild;e;e=e.nextSibling)if(e.nodeName>"@"||3===e.nodeType||4===e.nodeType)return!1;return!0},parent:function(e){return!i.pseudos.empty(e)},header:function(e){return et.test(e.nodeName)},input:function(e){return Z.test(e.nodeName)},button:function(e){var t=e.nodeName.toLowerCase();return"input"===t&&"button"===e.type||"button"===t},text:function(e){var t;return"input"===e.nodeName.toLowerCase()&&"text"===e.type&&(null==(t=e.getAttribute("type"))||t.toLowerCase()===e.type)},first:ht(function(){return[0]}),last:ht(function(e,t){return[t-1]}),eq:ht(function(e,t,n){return[0>n?n+t:n]}),even:ht(function(e,t){var n=0;for(;t>n;n+=2)e.push(n);return e}),odd:ht(function(e,t){var n=1;for(;t>n;n+=2)e.push(n);return e}),lt:ht(function(e,t,n){var r=0>n?n+t:n;for(;--r>=0;)e.push(r);return e}),gt:ht(function(e,t,n){var r=0>n?n+t:n;for(;t>++r;)e.push(r);return e})}},i.pseudos.nth=i.pseudos.eq;for(t in{radio:!0,checkbox:!0,file:!0,password:!0,image:!0})i.pseudos[t]=pt(t);for(t in{submit:!0,reset:!0})i.pseudos[t]=ft(t);function dt(){}dt.prototype=i.filters=i.pseudos,i.setFilters=new dt;function gt(e,t){var n,r,o,s,a,u,l,c=k[e+" "];if(c)return t?0:c.slice(0);a=e,u=[],l=i.preFilter;while(a){(!n||(r=_.exec(a)))&&(r&&(a=a.slice(r[0].length)||a),u.push(o=[])),n=!1,(r=X.exec(a))&&(n=r.shift(),o.push({value:n,type:r[0].replace(z," ")}),a=a.slice(n.length));for(s in i.filter)!(r=J[s].exec(a))||l[s]&&!(r=l[s](r))||(n=r.shift(),o.push({value:n,type:s,matches:r}),a=a.slice(n.length));if(!n)break}return t?a.length:a?ot.error(e):k(e,u).slice(0)}function mt(e){var t=0,n=e.length,r="";for(;n>t;t++)r+=e[t].value;return r}function yt(e,t,n){var i=t.dir,o=n&&"parentNode"===i,s=T++;return t.first?function(t,n,r){while(t=t[i])if(1===t.nodeType||o)return e(t,n,r)}:function(t,n,a){var u,l,c,p=w+" "+s;if(a){while(t=t[i])if((1===t.nodeType||o)&&e(t,n,a))return!0}else while(t=t[i])if(1===t.nodeType||o)if(c=t[v]||(t[v]={}),(l=c[i])&&l[0]===p){if((u=l[1])===!0||u===r)return u===!0}else if(l=c[i]=[p],l[1]=e(t,n,a)||r,l[1]===!0)return!0}}function vt(e){return e.length>1?function(t,n,r){var i=e.length;while(i--)if(!e[i](t,n,r))return!1;return!0}:e[0]}function xt(e,t,n,r,i){var o,s=[],a=0,u=e.length,l=null!=t;for(;u>a;a++)(o=e[a])&&(!n||n(o,r,i))&&(s.push(o),l&&t.push(a));return s}function bt(e,t,n,r,i,o){return r&&!r[v]&&(r=bt(r)),i&&!i[v]&&(i=bt(i,o)),at(function(o,s,a,u){var l,c,p,f=[],h=[],d=s.length,g=o||Ct(t||"*",a.nodeType?[a]:a,[]),m=!e||!o&&t?g:xt(g,f,e,a,u),y=n?i||(o?e:d||r)?[]:s:m;if(n&&n(m,y,a,u),r){l=xt(y,h),r(l,[],a,u),c=l.length;while(c--)(p=l[c])&&(y[h[c]]=!(m[h[c]]=p))}if(o){if(i||e){if(i){l=[],c=y.length;while(c--)(p=y[c])&&l.push(m[c]=p);i(null,y=[],l,u)}c=y.length;while(c--)(p=y[c])&&(l=i?P.call(o,p):f[c])>-1&&(o[l]=!(s[l]=p))}}else y=xt(y===s?y.splice(d,y.length):y),i?i(null,s,y,u):O.apply(s,y)})}function wt(e){var t,n,r,o=e.length,s=i.relative[e[0].type],a=s||i.relative[" "],l=s?1:0,c=yt(function(e){return e===t},a,!0),p=yt(function(e){return P.call(t,e)>-1},a,!0),f=[function(e,n,r){return!s&&(r||n!==u)||((t=n).nodeType?c(e,n,r):p(e,n,r))}];for(;o>l;l++)if(n=i.relative[e[l].type])f=[yt(vt(f),n)];else{if(n=i.filter[e[l].type].apply(null,e[l].matches),n[v]){for(r=++l;o>r;r++)if(i.relative[e[r].type])break;return bt(l>1&&vt(f),l>1&&mt(e.slice(0,l-1).concat({value:" "===e[l-2].type?"*":""})).replace(z,"$1"),n,r>l&&wt(e.slice(l,r)),o>r&&wt(e=e.slice(r)),o>r&&mt(e))}f.push(n)}return vt(f)}function Tt(e,t){var n=0,o=t.length>0,s=e.length>0,a=function(a,l,c,f,h){var d,g,m,y=[],v=0,x="0",b=a&&[],T=null!=h,C=u,k=a||s&&i.find.TAG("*",h&&l.parentNode||l),N=w+=null==C?1:Math.random()||.1;for(T&&(u=l!==p&&l,r=n);null!=(d=k[x]);x++){if(s&&d){g=0;while(m=e[g++])if(m(d,l,c)){f.push(d);break}T&&(w=N,r=++n)}o&&((d=!m&&d)&&v--,a&&b.push(d))}if(v+=x,o&&x!==v){g=0;while(m=t[g++])m(b,y,l,c);if(a){if(v>0)while(x--)b[x]||y[x]||(y[x]=q.call(f));y=xt(y)}O.apply(f,y),T&&!a&&y.length>0&&v+t.length>1&&ot.uniqueSort(f)}return T&&(w=N,u=C),b};return o?at(a):a}a=ot.compile=function(e,t){var n,r=[],i=[],o=N[e+" "];if(!o){t||(t=gt(e)),n=t.length;while(n--)o=wt(t[n]),o[v]?r.push(o):i.push(o);o=N(e,Tt(i,r))}return o};function Ct(e,t,n){var r=0,i=t.length;for(;i>r;r++)ot(e,t[r],n);return n}function kt(e,t,r,o){var s,u,l,c,p,f=gt(e);if(!o&&1===f.length){if(u=f[0]=f[0].slice(0),u.length>2&&"ID"===(l=u[0]).type&&n.getById&&9===t.nodeType&&h&&i.relative[u[1].type]){if(t=(i.find.ID(l.matches[0].replace(nt,rt),t)||[])[0],!t)return r;e=e.slice(u.shift().value.length)}s=J.needsContext.test(e)?0:u.length;while(s--){if(l=u[s],i.relative[c=l.type])break;if((p=i.find[c])&&(o=p(l.matches[0].replace(nt,rt),U.test(u[0].type)&&t.parentNode||t))){if(u.splice(s,1),e=o.length&&mt(u),!e)return O.apply(r,o),r;break}}}return a(e,f)(o,t,!h,r,U.test(e)),r}n.sortStable=v.split("").sort(S).join("")===v,n.detectDuplicates=E,c(),n.sortDetached=ut(function(e){return 1&e.compareDocumentPosition(p.createElement("div"))}),ut(function(e){return e.innerHTML="<a href='#'></a>","#"===e.firstChild.getAttribute("href")})||lt("type|href|height|width",function(e,t,n){return n?undefined:e.getAttribute(t,"type"===t.toLowerCase()?1:2)}),n.attributes&&ut(function(e){return e.innerHTML="<input/>",e.firstChild.setAttribute("value",""),""===e.firstChild.getAttribute("value")})||lt("value",function(e,t,n){return n||"input"!==e.nodeName.toLowerCase()?undefined:e.defaultValue}),ut(function(e){return null==e.getAttribute("disabled")})||lt(R,function(e,t,n){var r;return n?undefined:(r=e.getAttributeNode(t))&&r.specified?r.value:e[t]===!0?t.toLowerCase():null}),x.find=ot,x.expr=ot.selectors,x.expr[":"]=x.expr.pseudos,x.unique=ot.uniqueSort,x.text=ot.getText,x.isXMLDoc=ot.isXML,x.contains=ot.contains}(e);var D={};function A(e){var t=D[e]={};return x.each(e.match(w)||[],function(e,n){t[n]=!0}),t}x.Callbacks=function(e){e="string"==typeof e?D[e]||A(e):x.extend({},e);var t,n,r,i,o,s,a=[],u=!e.once&&[],l=function(p){for(t=e.memory&&p,n=!0,s=i||0,i=0,o=a.length,r=!0;a&&o>s;s++)if(a[s].apply(p[0],p[1])===!1&&e.stopOnFalse){t=!1;break}r=!1,a&&(u?u.length&&l(u.shift()):t?a=[]:c.disable())},c={add:function(){if(a){var n=a.length;(function s(t){x.each(t,function(t,n){var r=x.type(n);"function"===r?e.unique&&c.has(n)||a.push(n):n&&n.length&&"string"!==r&&s(n)})})(arguments),r?o=a.length:t&&(i=n,l(t))}return this},remove:function(){return a&&x.each(arguments,function(e,t){var n;while((n=x.inArray(t,a,n))>-1)a.splice(n,1),r&&(o>=n&&o--,s>=n&&s--)}),this},has:function(e){return e?x.inArray(e,a)>-1:!(!a||!a.length)},empty:function(){return a=[],o=0,this},disable:function(){return a=u=t=undefined,this},disabled:function(){return!a},lock:function(){return u=undefined,t||c.disable(),this},locked:function(){return!u},fireWith:function(e,t){return!a||n&&!u||(t=t||[],t=[e,t.slice?t.slice():t],r?u.push(t):l(t)),this},fire:function(){return c.fireWith(this,arguments),this},fired:function(){return!!n}};return c},x.extend({Deferred:function(e){var t=[["resolve","done",x.Callbacks("once memory"),"resolved"],["reject","fail",x.Callbacks("once memory"),"rejected"],["notify","progress",x.Callbacks("memory")]],n="pending",r={state:function(){return n},always:function(){return i.done(arguments).fail(arguments),this},then:function(){var e=arguments;return x.Deferred(function(n){x.each(t,function(t,o){var s=o[0],a=x.isFunction(e[t])&&e[t];i[o[1]](function(){var e=a&&a.apply(this,arguments);e&&x.isFunction(e.promise)?e.promise().done(n.resolve).fail(n.reject).progress(n.notify):n[s+"With"](this===r?n.promise():this,a?[e]:arguments)})}),e=null}).promise()},promise:function(e){return null!=e?x.extend(e,r):r}},i={};return r.pipe=r.then,x.each(t,function(e,o){var s=o[2],a=o[3];r[o[1]]=s.add,a&&s.add(function(){n=a},t[1^e][2].disable,t[2][2].lock),i[o[0]]=function(){return i[o[0]+"With"](this===i?r:this,arguments),this},i[o[0]+"With"]=s.fireWith}),r.promise(i),e&&e.call(i,i),i},when:function(e){var t=0,n=d.call(arguments),r=n.length,i=1!==r||e&&x.isFunction(e.promise)?r:0,o=1===i?e:x.Deferred(),s=function(e,t,n){return function(r){t[e]=this,n[e]=arguments.length>1?d.call(arguments):r,n===a?o.notifyWith(t,n):--i||o.resolveWith(t,n)}},a,u,l;if(r>1)for(a=Array(r),u=Array(r),l=Array(r);r>t;t++)n[t]&&x.isFunction(n[t].promise)?n[t].promise().done(s(t,l,n)).fail(o.reject).progress(s(t,u,a)):--i;return i||o.resolveWith(l,n),o.promise()}}),x.support=function(t){var n=o.createElement("input"),r=o.createDocumentFragment(),i=o.createElement("div"),s=o.createElement("select"),a=s.appendChild(o.createElement("option"));return n.type?(n.type="checkbox",t.checkOn=""!==n.value,t.optSelected=a.selected,t.reliableMarginRight=!0,t.boxSizingReliable=!0,t.pixelPosition=!1,n.checked=!0,t.noCloneChecked=n.cloneNode(!0).checked,s.disabled=!0,t.optDisabled=!a.disabled,n=o.createElement("input"),n.value="t",n.type="radio",t.radioValue="t"===n.value,n.setAttribute("checked","t"),n.setAttribute("name","t"),r.appendChild(n),t.checkClone=r.cloneNode(!0).cloneNode(!0).lastChild.checked,t.focusinBubbles="onfocusin"in e,i.style.backgroundClip="content-box",i.cloneNode(!0).style.backgroundClip="",t.clearCloneStyle="content-box"===i.style.backgroundClip,x(function(){var n,r,s="padding:0;margin:0;border:0;display:block;-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box",a=o.getElementsByTagName("body")[0];a&&(n=o.createElement("div"),n.style.cssText="border:0;width:0;height:0;position:absolute;top:0;left:-9999px;margin-top:1px",a.appendChild(n).appendChild(i),i.innerHTML="",i.style.cssText="-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;padding:1px;border:1px;display:block;width:4px;margin-top:1%;position:absolute;top:1%",x.swap(a,null!=a.style.zoom?{zoom:1}:{},function(){t.boxSizing=4===i.offsetWidth}),e.getComputedStyle&&(t.pixelPosition="1%"!==(e.getComputedStyle(i,null)||{}).top,t.boxSizingReliable="4px"===(e.getComputedStyle(i,null)||{width:"4px"}).width,r=i.appendChild(o.createElement("div")),r.style.cssText=i.style.cssText=s,r.style.marginRight=r.style.width="0",i.style.width="1px",t.reliableMarginRight=!parseFloat((e.getComputedStyle(r,null)||{}).marginRight)),a.removeChild(n))}),t):t}({});var L,q,H=/(?:\{[\s\S]*\}|\[[\s\S]*\])$/,O=/([A-Z])/g;function F(){Object.defineProperty(this.cache={},0,{get:function(){return{}}}),this.expando=x.expando+Math.random()}F.uid=1,F.accepts=function(e){return e.nodeType?1===e.nodeType||9===e.nodeType:!0},F.prototype={key:function(e){if(!F.accepts(e))return 0;var t={},n=e[this.expando];if(!n){n=F.uid++;try{t[this.expando]={value:n},Object.defineProperties(e,t)}catch(r){t[this.expando]=n,x.extend(e,t)}}return this.cache[n]||(this.cache[n]={}),n},set:function(e,t,n){var r,i=this.key(e),o=this.cache[i];if("string"==typeof t)o[t]=n;else if(x.isEmptyObject(o))x.extend(this.cache[i],t);else for(r in t)o[r]=t[r];return o},get:function(e,t){var n=this.cache[this.key(e)];return t===undefined?n:n[t]},access:function(e,t,n){var r;return t===undefined||t&&"string"==typeof t&&n===undefined?(r=this.get(e,t),r!==undefined?r:this.get(e,x.camelCase(t))):(this.set(e,t,n),n!==undefined?n:t)},remove:function(e,t){var n,r,i,o=this.key(e),s=this.cache[o];if(t===undefined)this.cache[o]={};else{x.isArray(t)?r=t.concat(t.map(x.camelCase)):(i=x.camelCase(t),t in s?r=[t,i]:(r=i,r=r in s?[r]:r.match(w)||[])),n=r.length;while(n--)delete s[r[n]]}},hasData:function(e){return!x.isEmptyObject(this.cache[e[this.expando]]||{})},discard:function(e){e[this.expando]&&delete this.cache[e[this.expando]]}},L=new F,q=new F,x.extend({acceptData:F.accepts,hasData:function(e){return L.hasData(e)||q.hasData(e)},data:function(e,t,n){return L.access(e,t,n)},removeData:function(e,t){L.remove(e,t)},_data:function(e,t,n){return q.access(e,t,n)},_removeData:function(e,t){q.remove(e,t)}}),x.fn.extend({data:function(e,t){var n,r,i=this[0],o=0,s=null;if(e===undefined){if(this.length&&(s=L.get(i),1===i.nodeType&&!q.get(i,"hasDataAttrs"))){for(n=i.attributes;n.length>o;o++)r=n[o].name,0===r.indexOf("data-")&&(r=x.camelCase(r.slice(5)),P(i,r,s[r]));q.set(i,"hasDataAttrs",!0)}return s}return"object"==typeof e?this.each(function(){L.set(this,e)}):x.access(this,function(t){var n,r=x.camelCase(e);if(i&&t===undefined){if(n=L.get(i,e),n!==undefined)return n;if(n=L.get(i,r),n!==undefined)return n;if(n=P(i,r,undefined),n!==undefined)return n}else this.each(function(){var n=L.get(this,r);L.set(this,r,t),-1!==e.indexOf("-")&&n!==undefined&&L.set(this,e,t)})},null,t,arguments.length>1,null,!0)},removeData:function(e){return this.each(function(){L.remove(this,e)})}});function P(e,t,n){var r;if(n===undefined&&1===e.nodeType)if(r="data-"+t.replace(O,"-$1").toLowerCase(),n=e.getAttribute(r),"string"==typeof n){try{n="true"===n?!0:"false"===n?!1:"null"===n?null:+n+""===n?+n:H.test(n)?JSON.parse(n):n}catch(i){}L.set(e,t,n)}else n=undefined;return n}x.extend({queue:function(e,t,n){var r;return e?(t=(t||"fx")+"queue",r=q.get(e,t),n&&(!r||x.isArray(n)?r=q.access(e,t,x.makeArray(n)):r.push(n)),r||[]):undefined},dequeue:function(e,t){t=t||"fx";var n=x.queue(e,t),r=n.length,i=n.shift(),o=x._queueHooks(e,t),s=function(){x.dequeue(e,t)
+};"inprogress"===i&&(i=n.shift(),r--),i&&("fx"===t&&n.unshift("inprogress"),delete o.stop,i.call(e,s,o)),!r&&o&&o.empty.fire()},_queueHooks:function(e,t){var n=t+"queueHooks";return q.get(e,n)||q.access(e,n,{empty:x.Callbacks("once memory").add(function(){q.remove(e,[t+"queue",n])})})}}),x.fn.extend({queue:function(e,t){var n=2;return"string"!=typeof e&&(t=e,e="fx",n--),n>arguments.length?x.queue(this[0],e):t===undefined?this:this.each(function(){var n=x.queue(this,e,t);x._queueHooks(this,e),"fx"===e&&"inprogress"!==n[0]&&x.dequeue(this,e)})},dequeue:function(e){return this.each(function(){x.dequeue(this,e)})},delay:function(e,t){return e=x.fx?x.fx.speeds[e]||e:e,t=t||"fx",this.queue(t,function(t,n){var r=setTimeout(t,e);n.stop=function(){clearTimeout(r)}})},clearQueue:function(e){return this.queue(e||"fx",[])},promise:function(e,t){var n,r=1,i=x.Deferred(),o=this,s=this.length,a=function(){--r||i.resolveWith(o,[o])};"string"!=typeof e&&(t=e,e=undefined),e=e||"fx";while(s--)n=q.get(o[s],e+"queueHooks"),n&&n.empty&&(r++,n.empty.add(a));return a(),i.promise(t)}});var R,M,W=/[\t\r\n\f]/g,$=/\r/g,B=/^(?:input|select|textarea|button)$/i;x.fn.extend({attr:function(e,t){return x.access(this,x.attr,e,t,arguments.length>1)},removeAttr:function(e){return this.each(function(){x.removeAttr(this,e)})},prop:function(e,t){return x.access(this,x.prop,e,t,arguments.length>1)},removeProp:function(e){return this.each(function(){delete this[x.propFix[e]||e]})},addClass:function(e){var t,n,r,i,o,s=0,a=this.length,u="string"==typeof e&&e;if(x.isFunction(e))return this.each(function(t){x(this).addClass(e.call(this,t,this.className))});if(u)for(t=(e||"").match(w)||[];a>s;s++)if(n=this[s],r=1===n.nodeType&&(n.className?(" "+n.className+" ").replace(W," "):" ")){o=0;while(i=t[o++])0>r.indexOf(" "+i+" ")&&(r+=i+" ");n.className=x.trim(r)}return this},removeClass:function(e){var t,n,r,i,o,s=0,a=this.length,u=0===arguments.length||"string"==typeof e&&e;if(x.isFunction(e))return this.each(function(t){x(this).removeClass(e.call(this,t,this.className))});if(u)for(t=(e||"").match(w)||[];a>s;s++)if(n=this[s],r=1===n.nodeType&&(n.className?(" "+n.className+" ").replace(W," "):"")){o=0;while(i=t[o++])while(r.indexOf(" "+i+" ")>=0)r=r.replace(" "+i+" "," ");n.className=e?x.trim(r):""}return this},toggleClass:function(e,t){var n=typeof e;return"boolean"==typeof t&&"string"===n?t?this.addClass(e):this.removeClass(e):x.isFunction(e)?this.each(function(n){x(this).toggleClass(e.call(this,n,this.className,t),t)}):this.each(function(){if("string"===n){var t,i=0,o=x(this),s=e.match(w)||[];while(t=s[i++])o.hasClass(t)?o.removeClass(t):o.addClass(t)}else(n===r||"boolean"===n)&&(this.className&&q.set(this,"__className__",this.className),this.className=this.className||e===!1?"":q.get(this,"__className__")||"")})},hasClass:function(e){var t=" "+e+" ",n=0,r=this.length;for(;r>n;n++)if(1===this[n].nodeType&&(" "+this[n].className+" ").replace(W," ").indexOf(t)>=0)return!0;return!1},val:function(e){var t,n,r,i=this[0];{if(arguments.length)return r=x.isFunction(e),this.each(function(n){var i;1===this.nodeType&&(i=r?e.call(this,n,x(this).val()):e,null==i?i="":"number"==typeof i?i+="":x.isArray(i)&&(i=x.map(i,function(e){return null==e?"":e+""})),t=x.valHooks[this.type]||x.valHooks[this.nodeName.toLowerCase()],t&&"set"in t&&t.set(this,i,"value")!==undefined||(this.value=i))});if(i)return t=x.valHooks[i.type]||x.valHooks[i.nodeName.toLowerCase()],t&&"get"in t&&(n=t.get(i,"value"))!==undefined?n:(n=i.value,"string"==typeof n?n.replace($,""):null==n?"":n)}}}),x.extend({valHooks:{option:{get:function(e){var t=e.attributes.value;return!t||t.specified?e.value:e.text}},select:{get:function(e){var t,n,r=e.options,i=e.selectedIndex,o="select-one"===e.type||0>i,s=o?null:[],a=o?i+1:r.length,u=0>i?a:o?i:0;for(;a>u;u++)if(n=r[u],!(!n.selected&&u!==i||(x.support.optDisabled?n.disabled:null!==n.getAttribute("disabled"))||n.parentNode.disabled&&x.nodeName(n.parentNode,"optgroup"))){if(t=x(n).val(),o)return t;s.push(t)}return s},set:function(e,t){var n,r,i=e.options,o=x.makeArray(t),s=i.length;while(s--)r=i[s],(r.selected=x.inArray(x(r).val(),o)>=0)&&(n=!0);return n||(e.selectedIndex=-1),o}}},attr:function(e,t,n){var i,o,s=e.nodeType;if(e&&3!==s&&8!==s&&2!==s)return typeof e.getAttribute===r?x.prop(e,t,n):(1===s&&x.isXMLDoc(e)||(t=t.toLowerCase(),i=x.attrHooks[t]||(x.expr.match.bool.test(t)?M:R)),n===undefined?i&&"get"in i&&null!==(o=i.get(e,t))?o:(o=x.find.attr(e,t),null==o?undefined:o):null!==n?i&&"set"in i&&(o=i.set(e,n,t))!==undefined?o:(e.setAttribute(t,n+""),n):(x.removeAttr(e,t),undefined))},removeAttr:function(e,t){var n,r,i=0,o=t&&t.match(w);if(o&&1===e.nodeType)while(n=o[i++])r=x.propFix[n]||n,x.expr.match.bool.test(n)&&(e[r]=!1),e.removeAttribute(n)},attrHooks:{type:{set:function(e,t){if(!x.support.radioValue&&"radio"===t&&x.nodeName(e,"input")){var n=e.value;return e.setAttribute("type",t),n&&(e.value=n),t}}}},propFix:{"for":"htmlFor","class":"className"},prop:function(e,t,n){var r,i,o,s=e.nodeType;if(e&&3!==s&&8!==s&&2!==s)return o=1!==s||!x.isXMLDoc(e),o&&(t=x.propFix[t]||t,i=x.propHooks[t]),n!==undefined?i&&"set"in i&&(r=i.set(e,n,t))!==undefined?r:e[t]=n:i&&"get"in i&&null!==(r=i.get(e,t))?r:e[t]},propHooks:{tabIndex:{get:function(e){return e.hasAttribute("tabindex")||B.test(e.nodeName)||e.href?e.tabIndex:-1}}}}),M={set:function(e,t,n){return t===!1?x.removeAttr(e,n):e.setAttribute(n,n),n}},x.each(x.expr.match.bool.source.match(/\w+/g),function(e,t){var n=x.expr.attrHandle[t]||x.find.attr;x.expr.attrHandle[t]=function(e,t,r){var i=x.expr.attrHandle[t],o=r?undefined:(x.expr.attrHandle[t]=undefined)!=n(e,t,r)?t.toLowerCase():null;return x.expr.attrHandle[t]=i,o}}),x.support.optSelected||(x.propHooks.selected={get:function(e){var t=e.parentNode;return t&&t.parentNode&&t.parentNode.selectedIndex,null}}),x.each(["tabIndex","readOnly","maxLength","cellSpacing","cellPadding","rowSpan","colSpan","useMap","frameBorder","contentEditable"],function(){x.propFix[this.toLowerCase()]=this}),x.each(["radio","checkbox"],function(){x.valHooks[this]={set:function(e,t){return x.isArray(t)?e.checked=x.inArray(x(e).val(),t)>=0:undefined}},x.support.checkOn||(x.valHooks[this].get=function(e){return null===e.getAttribute("value")?"on":e.value})});var I=/^key/,z=/^(?:mouse|contextmenu)|click/,_=/^(?:focusinfocus|focusoutblur)$/,X=/^([^.]*)(?:\.(.+)|)$/;function U(){return!0}function Y(){return!1}function V(){try{return o.activeElement}catch(e){}}x.event={global:{},add:function(e,t,n,i,o){var s,a,u,l,c,p,f,h,d,g,m,y=q.get(e);if(y){n.handler&&(s=n,n=s.handler,o=s.selector),n.guid||(n.guid=x.guid++),(l=y.events)||(l=y.events={}),(a=y.handle)||(a=y.handle=function(e){return typeof x===r||e&&x.event.triggered===e.type?undefined:x.event.dispatch.apply(a.elem,arguments)},a.elem=e),t=(t||"").match(w)||[""],c=t.length;while(c--)u=X.exec(t[c])||[],d=m=u[1],g=(u[2]||"").split(".").sort(),d&&(f=x.event.special[d]||{},d=(o?f.delegateType:f.bindType)||d,f=x.event.special[d]||{},p=x.extend({type:d,origType:m,data:i,handler:n,guid:n.guid,selector:o,needsContext:o&&x.expr.match.needsContext.test(o),namespace:g.join(".")},s),(h=l[d])||(h=l[d]=[],h.delegateCount=0,f.setup&&f.setup.call(e,i,g,a)!==!1||e.addEventListener&&e.addEventListener(d,a,!1)),f.add&&(f.add.call(e,p),p.handler.guid||(p.handler.guid=n.guid)),o?h.splice(h.delegateCount++,0,p):h.push(p),x.event.global[d]=!0);e=null}},remove:function(e,t,n,r,i){var o,s,a,u,l,c,p,f,h,d,g,m=q.hasData(e)&&q.get(e);if(m&&(u=m.events)){t=(t||"").match(w)||[""],l=t.length;while(l--)if(a=X.exec(t[l])||[],h=g=a[1],d=(a[2]||"").split(".").sort(),h){p=x.event.special[h]||{},h=(r?p.delegateType:p.bindType)||h,f=u[h]||[],a=a[2]&&RegExp("(^|\\.)"+d.join("\\.(?:.*\\.|)")+"(\\.|$)"),s=o=f.length;while(o--)c=f[o],!i&&g!==c.origType||n&&n.guid!==c.guid||a&&!a.test(c.namespace)||r&&r!==c.selector&&("**"!==r||!c.selector)||(f.splice(o,1),c.selector&&f.delegateCount--,p.remove&&p.remove.call(e,c));s&&!f.length&&(p.teardown&&p.teardown.call(e,d,m.handle)!==!1||x.removeEvent(e,h,m.handle),delete u[h])}else for(h in u)x.event.remove(e,h+t[l],n,r,!0);x.isEmptyObject(u)&&(delete m.handle,q.remove(e,"events"))}},trigger:function(t,n,r,i){var s,a,u,l,c,p,f,h=[r||o],d=y.call(t,"type")?t.type:t,g=y.call(t,"namespace")?t.namespace.split("."):[];if(a=u=r=r||o,3!==r.nodeType&&8!==r.nodeType&&!_.test(d+x.event.triggered)&&(d.indexOf(".")>=0&&(g=d.split("."),d=g.shift(),g.sort()),c=0>d.indexOf(":")&&"on"+d,t=t[x.expando]?t:new x.Event(d,"object"==typeof t&&t),t.isTrigger=i?2:3,t.namespace=g.join("."),t.namespace_re=t.namespace?RegExp("(^|\\.)"+g.join("\\.(?:.*\\.|)")+"(\\.|$)"):null,t.result=undefined,t.target||(t.target=r),n=null==n?[t]:x.makeArray(n,[t]),f=x.event.special[d]||{},i||!f.trigger||f.trigger.apply(r,n)!==!1)){if(!i&&!f.noBubble&&!x.isWindow(r)){for(l=f.delegateType||d,_.test(l+d)||(a=a.parentNode);a;a=a.parentNode)h.push(a),u=a;u===(r.ownerDocument||o)&&h.push(u.defaultView||u.parentWindow||e)}s=0;while((a=h[s++])&&!t.isPropagationStopped())t.type=s>1?l:f.bindType||d,p=(q.get(a,"events")||{})[t.type]&&q.get(a,"handle"),p&&p.apply(a,n),p=c&&a[c],p&&x.acceptData(a)&&p.apply&&p.apply(a,n)===!1&&t.preventDefault();return t.type=d,i||t.isDefaultPrevented()||f._default&&f._default.apply(h.pop(),n)!==!1||!x.acceptData(r)||c&&x.isFunction(r[d])&&!x.isWindow(r)&&(u=r[c],u&&(r[c]=null),x.event.triggered=d,r[d](),x.event.triggered=undefined,u&&(r[c]=u)),t.result}},dispatch:function(e){e=x.event.fix(e);var t,n,r,i,o,s=[],a=d.call(arguments),u=(q.get(this,"events")||{})[e.type]||[],l=x.event.special[e.type]||{};if(a[0]=e,e.delegateTarget=this,!l.preDispatch||l.preDispatch.call(this,e)!==!1){s=x.event.handlers.call(this,e,u),t=0;while((i=s[t++])&&!e.isPropagationStopped()){e.currentTarget=i.elem,n=0;while((o=i.handlers[n++])&&!e.isImmediatePropagationStopped())(!e.namespace_re||e.namespace_re.test(o.namespace))&&(e.handleObj=o,e.data=o.data,r=((x.event.special[o.origType]||{}).handle||o.handler).apply(i.elem,a),r!==undefined&&(e.result=r)===!1&&(e.preventDefault(),e.stopPropagation()))}return l.postDispatch&&l.postDispatch.call(this,e),e.result}},handlers:function(e,t){var n,r,i,o,s=[],a=t.delegateCount,u=e.target;if(a&&u.nodeType&&(!e.button||"click"!==e.type))for(;u!==this;u=u.parentNode||this)if(u.disabled!==!0||"click"!==e.type){for(r=[],n=0;a>n;n++)o=t[n],i=o.selector+" ",r[i]===undefined&&(r[i]=o.needsContext?x(i,this).index(u)>=0:x.find(i,this,null,[u]).length),r[i]&&r.push(o);r.length&&s.push({elem:u,handlers:r})}return t.length>a&&s.push({elem:this,handlers:t.slice(a)}),s},props:"altKey bubbles cancelable ctrlKey currentTarget eventPhase metaKey relatedTarget shiftKey target timeStamp view which".split(" "),fixHooks:{},keyHooks:{props:"char charCode key keyCode".split(" "),filter:function(e,t){return null==e.which&&(e.which=null!=t.charCode?t.charCode:t.keyCode),e}},mouseHooks:{props:"button buttons clientX clientY offsetX offsetY pageX pageY screenX screenY toElement".split(" "),filter:function(e,t){var n,r,i,s=t.button;return null==e.pageX&&null!=t.clientX&&(n=e.target.ownerDocument||o,r=n.documentElement,i=n.body,e.pageX=t.clientX+(r&&r.scrollLeft||i&&i.scrollLeft||0)-(r&&r.clientLeft||i&&i.clientLeft||0),e.pageY=t.clientY+(r&&r.scrollTop||i&&i.scrollTop||0)-(r&&r.clientTop||i&&i.clientTop||0)),e.which||s===undefined||(e.which=1&s?1:2&s?3:4&s?2:0),e}},fix:function(e){if(e[x.expando])return e;var t,n,r,i=e.type,s=e,a=this.fixHooks[i];a||(this.fixHooks[i]=a=z.test(i)?this.mouseHooks:I.test(i)?this.keyHooks:{}),r=a.props?this.props.concat(a.props):this.props,e=new x.Event(s),t=r.length;while(t--)n=r[t],e[n]=s[n];return e.target||(e.target=o),3===e.target.nodeType&&(e.target=e.target.parentNode),a.filter?a.filter(e,s):e},special:{load:{noBubble:!0},focus:{trigger:function(){return this!==V()&&this.focus?(this.focus(),!1):undefined},delegateType:"focusin"},blur:{trigger:function(){return this===V()&&this.blur?(this.blur(),!1):undefined},delegateType:"focusout"},click:{trigger:function(){return"checkbox"===this.type&&this.click&&x.nodeName(this,"input")?(this.click(),!1):undefined},_default:function(e){return x.nodeName(e.target,"a")}},beforeunload:{postDispatch:function(e){e.result!==undefined&&(e.originalEvent.returnValue=e.result)}}},simulate:function(e,t,n,r){var i=x.extend(new x.Event,n,{type:e,isSimulated:!0,originalEvent:{}});r?x.event.trigger(i,null,t):x.event.dispatch.call(t,i),i.isDefaultPrevented()&&n.preventDefault()}},x.removeEvent=function(e,t,n){e.removeEventListener&&e.removeEventListener(t,n,!1)},x.Event=function(e,t){return this instanceof x.Event?(e&&e.type?(this.originalEvent=e,this.type=e.type,this.isDefaultPrevented=e.defaultPrevented||e.getPreventDefault&&e.getPreventDefault()?U:Y):this.type=e,t&&x.extend(this,t),this.timeStamp=e&&e.timeStamp||x.now(),this[x.expando]=!0,undefined):new x.Event(e,t)},x.Event.prototype={isDefaultPrevented:Y,isPropagationStopped:Y,isImmediatePropagationStopped:Y,preventDefault:function(){var e=this.originalEvent;this.isDefaultPrevented=U,e&&e.preventDefault&&e.preventDefault()},stopPropagation:function(){var e=this.originalEvent;this.isPropagationStopped=U,e&&e.stopPropagation&&e.stopPropagation()},stopImmediatePropagation:function(){this.isImmediatePropagationStopped=U,this.stopPropagation()}},x.each({mouseenter:"mouseover",mouseleave:"mouseout"},function(e,t){x.event.special[e]={delegateType:t,bindType:t,handle:function(e){var n,r=this,i=e.relatedTarget,o=e.handleObj;return(!i||i!==r&&!x.contains(r,i))&&(e.type=o.origType,n=o.handler.apply(this,arguments),e.type=t),n}}}),x.support.focusinBubbles||x.each({focus:"focusin",blur:"focusout"},function(e,t){var n=0,r=function(e){x.event.simulate(t,e.target,x.event.fix(e),!0)};x.event.special[t]={setup:function(){0===n++&&o.addEventListener(e,r,!0)},teardown:function(){0===--n&&o.removeEventListener(e,r,!0)}}}),x.fn.extend({on:function(e,t,n,r,i){var o,s;if("object"==typeof e){"string"!=typeof t&&(n=n||t,t=undefined);for(s in e)this.on(s,t,n,e[s],i);return this}if(null==n&&null==r?(r=t,n=t=undefined):null==r&&("string"==typeof t?(r=n,n=undefined):(r=n,n=t,t=undefined)),r===!1)r=Y;else if(!r)return this;return 1===i&&(o=r,r=function(e){return x().off(e),o.apply(this,arguments)},r.guid=o.guid||(o.guid=x.guid++)),this.each(function(){x.event.add(this,e,r,n,t)})},one:function(e,t,n,r){return this.on(e,t,n,r,1)},off:function(e,t,n){var r,i;if(e&&e.preventDefault&&e.handleObj)return r=e.handleObj,x(e.delegateTarget).off(r.namespace?r.origType+"."+r.namespace:r.origType,r.selector,r.handler),this;if("object"==typeof e){for(i in e)this.off(i,t,e[i]);return this}return(t===!1||"function"==typeof t)&&(n=t,t=undefined),n===!1&&(n=Y),this.each(function(){x.event.remove(this,e,n,t)})},trigger:function(e,t){return this.each(function(){x.event.trigger(e,t,this)})},triggerHandler:function(e,t){var n=this[0];return n?x.event.trigger(e,t,n,!0):undefined}});var G=/^.[^:#\[\.,]*$/,J=/^(?:parents|prev(?:Until|All))/,Q=x.expr.match.needsContext,K={children:!0,contents:!0,next:!0,prev:!0};x.fn.extend({find:function(e){var t,n=[],r=this,i=r.length;if("string"!=typeof e)return this.pushStack(x(e).filter(function(){for(t=0;i>t;t++)if(x.contains(r[t],this))return!0}));for(t=0;i>t;t++)x.find(e,r[t],n);return n=this.pushStack(i>1?x.unique(n):n),n.selector=this.selector?this.selector+" "+e:e,n},has:function(e){var t=x(e,this),n=t.length;return this.filter(function(){var e=0;for(;n>e;e++)if(x.contains(this,t[e]))return!0})},not:function(e){return this.pushStack(et(this,e||[],!0))},filter:function(e){return this.pushStack(et(this,e||[],!1))},is:function(e){return!!et(this,"string"==typeof e&&Q.test(e)?x(e):e||[],!1).length},closest:function(e,t){var n,r=0,i=this.length,o=[],s=Q.test(e)||"string"!=typeof e?x(e,t||this.context):0;for(;i>r;r++)for(n=this[r];n&&n!==t;n=n.parentNode)if(11>n.nodeType&&(s?s.index(n)>-1:1===n.nodeType&&x.find.matchesSelector(n,e))){n=o.push(n);break}return this.pushStack(o.length>1?x.unique(o):o)},index:function(e){return e?"string"==typeof e?g.call(x(e),this[0]):g.call(this,e.jquery?e[0]:e):this[0]&&this[0].parentNode?this.first().prevAll().length:-1},add:function(e,t){var n="string"==typeof e?x(e,t):x.makeArray(e&&e.nodeType?[e]:e),r=x.merge(this.get(),n);return this.pushStack(x.unique(r))},addBack:function(e){return this.add(null==e?this.prevObject:this.prevObject.filter(e))}});function Z(e,t){while((e=e[t])&&1!==e.nodeType);return e}x.each({parent:function(e){var t=e.parentNode;return t&&11!==t.nodeType?t:null},parents:function(e){return x.dir(e,"parentNode")},parentsUntil:function(e,t,n){return x.dir(e,"parentNode",n)},next:function(e){return Z(e,"nextSibling")},prev:function(e){return Z(e,"previousSibling")},nextAll:function(e){return x.dir(e,"nextSibling")},prevAll:function(e){return x.dir(e,"previousSibling")},nextUntil:function(e,t,n){return x.dir(e,"nextSibling",n)},prevUntil:function(e,t,n){return x.dir(e,"previousSibling",n)},siblings:function(e){return x.sibling((e.parentNode||{}).firstChild,e)},children:function(e){return x.sibling(e.firstChild)},contents:function(e){return e.contentDocument||x.merge([],e.childNodes)}},function(e,t){x.fn[e]=function(n,r){var i=x.map(this,t,n);return"Until"!==e.slice(-5)&&(r=n),r&&"string"==typeof r&&(i=x.filter(r,i)),this.length>1&&(K[e]||x.unique(i),J.test(e)&&i.reverse()),this.pushStack(i)}}),x.extend({filter:function(e,t,n){var r=t[0];return n&&(e=":not("+e+")"),1===t.length&&1===r.nodeType?x.find.matchesSelector(r,e)?[r]:[]:x.find.matches(e,x.grep(t,function(e){return 1===e.nodeType}))},dir:function(e,t,n){var r=[],i=n!==undefined;while((e=e[t])&&9!==e.nodeType)if(1===e.nodeType){if(i&&x(e).is(n))break;r.push(e)}return r},sibling:function(e,t){var n=[];for(;e;e=e.nextSibling)1===e.nodeType&&e!==t&&n.push(e);return n}});function et(e,t,n){if(x.isFunction(t))return x.grep(e,function(e,r){return!!t.call(e,r,e)!==n});if(t.nodeType)return x.grep(e,function(e){return e===t!==n});if("string"==typeof t){if(G.test(t))return x.filter(t,e,n);t=x.filter(t,e)}return x.grep(e,function(e){return g.call(t,e)>=0!==n})}var tt=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/gi,nt=/<([\w:]+)/,rt=/<|&#?\w+;/,it=/<(?:script|style|link)/i,ot=/^(?:checkbox|radio)$/i,st=/checked\s*(?:[^=]|=\s*.checked.)/i,at=/^$|\/(?:java|ecma)script/i,ut=/^true\/(.*)/,lt=/^\s*<!(?:\[CDATA\[|--)|(?:\]\]|--)>\s*$/g,ct={option:[1,"<select multiple='multiple'>","</select>"],thead:[1,"<table>","</table>"],col:[2,"<table><colgroup>","</colgroup></table>"],tr:[2,"<table><tbody>","</tbody></table>"],td:[3,"<table><tbody><tr>","</tr></tbody></table>"],_default:[0,"",""]};ct.optgroup=ct.option,ct.tbody=ct.tfoot=ct.colgroup=ct.caption=ct.thead,ct.th=ct.td,x.fn.extend({text:function(e){return x.access(this,function(e){return e===undefined?x.text(this):this.empty().append((this[0]&&this[0].ownerDocument||o).createTextNode(e))},null,e,arguments.length)},append:function(){return this.domManip(arguments,function(e){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var t=pt(this,e);t.appendChild(e)}})},prepend:function(){return this.domManip(arguments,function(e){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var t=pt(this,e);t.insertBefore(e,t.firstChild)}})},before:function(){return this.domManip(arguments,function(e){this.parentNode&&this.parentNode.insertBefore(e,this)})},after:function(){return this.domManip(arguments,function(e){this.parentNode&&this.parentNode.insertBefore(e,this.nextSibling)})},remove:function(e,t){var n,r=e?x.filter(e,this):this,i=0;for(;null!=(n=r[i]);i++)t||1!==n.nodeType||x.cleanData(mt(n)),n.parentNode&&(t&&x.contains(n.ownerDocument,n)&&dt(mt(n,"script")),n.parentNode.removeChild(n));return this},empty:function(){var e,t=0;for(;null!=(e=this[t]);t++)1===e.nodeType&&(x.cleanData(mt(e,!1)),e.textContent="");return this},clone:function(e,t){return e=null==e?!1:e,t=null==t?e:t,this.map(function(){return x.clone(this,e,t)})},html:function(e){return x.access(this,function(e){var t=this[0]||{},n=0,r=this.length;if(e===undefined&&1===t.nodeType)return t.innerHTML;if("string"==typeof e&&!it.test(e)&&!ct[(nt.exec(e)||["",""])[1].toLowerCase()]){e=e.replace(tt,"<$1></$2>");try{for(;r>n;n++)t=this[n]||{},1===t.nodeType&&(x.cleanData(mt(t,!1)),t.innerHTML=e);t=0}catch(i){}}t&&this.empty().append(e)},null,e,arguments.length)},replaceWith:function(){var e=x.map(this,function(e){return[e.nextSibling,e.parentNode]}),t=0;return this.domManip(arguments,function(n){var r=e[t++],i=e[t++];i&&(r&&r.parentNode!==i&&(r=this.nextSibling),x(this).remove(),i.insertBefore(n,r))},!0),t?this:this.remove()},detach:function(e){return this.remove(e,!0)},domManip:function(e,t,n){e=f.apply([],e);var r,i,o,s,a,u,l=0,c=this.length,p=this,h=c-1,d=e[0],g=x.isFunction(d);if(g||!(1>=c||"string"!=typeof d||x.support.checkClone)&&st.test(d))return this.each(function(r){var i=p.eq(r);g&&(e[0]=d.call(this,r,i.html())),i.domManip(e,t,n)});if(c&&(r=x.buildFragment(e,this[0].ownerDocument,!1,!n&&this),i=r.firstChild,1===r.childNodes.length&&(r=i),i)){for(o=x.map(mt(r,"script"),ft),s=o.length;c>l;l++)a=r,l!==h&&(a=x.clone(a,!0,!0),s&&x.merge(o,mt(a,"script"))),t.call(this[l],a,l);if(s)for(u=o[o.length-1].ownerDocument,x.map(o,ht),l=0;s>l;l++)a=o[l],at.test(a.type||"")&&!q.access(a,"globalEval")&&x.contains(u,a)&&(a.src?x._evalUrl(a.src):x.globalEval(a.textContent.replace(lt,"")))}return this}}),x.each({appendTo:"append",prependTo:"prepend",insertBefore:"before",insertAfter:"after",replaceAll:"replaceWith"},function(e,t){x.fn[e]=function(e){var n,r=[],i=x(e),o=i.length-1,s=0;for(;o>=s;s++)n=s===o?this:this.clone(!0),x(i[s])[t](n),h.apply(r,n.get());return this.pushStack(r)}}),x.extend({clone:function(e,t,n){var r,i,o,s,a=e.cloneNode(!0),u=x.contains(e.ownerDocument,e);if(!(x.support.noCloneChecked||1!==e.nodeType&&11!==e.nodeType||x.isXMLDoc(e)))for(s=mt(a),o=mt(e),r=0,i=o.length;i>r;r++)yt(o[r],s[r]);if(t)if(n)for(o=o||mt(e),s=s||mt(a),r=0,i=o.length;i>r;r++)gt(o[r],s[r]);else gt(e,a);return s=mt(a,"script"),s.length>0&&dt(s,!u&&mt(e,"script")),a},buildFragment:function(e,t,n,r){var i,o,s,a,u,l,c=0,p=e.length,f=t.createDocumentFragment(),h=[];for(;p>c;c++)if(i=e[c],i||0===i)if("object"===x.type(i))x.merge(h,i.nodeType?[i]:i);else if(rt.test(i)){o=o||f.appendChild(t.createElement("div")),s=(nt.exec(i)||["",""])[1].toLowerCase(),a=ct[s]||ct._default,o.innerHTML=a[1]+i.replace(tt,"<$1></$2>")+a[2],l=a[0];while(l--)o=o.lastChild;x.merge(h,o.childNodes),o=f.firstChild,o.textContent=""}else h.push(t.createTextNode(i));f.textContent="",c=0;while(i=h[c++])if((!r||-1===x.inArray(i,r))&&(u=x.contains(i.ownerDocument,i),o=mt(f.appendChild(i),"script"),u&&dt(o),n)){l=0;while(i=o[l++])at.test(i.type||"")&&n.push(i)}return f},cleanData:function(e){var t,n,r,i,o,s,a=x.event.special,u=0;for(;(n=e[u])!==undefined;u++){if(F.accepts(n)&&(o=n[q.expando],o&&(t=q.cache[o]))){if(r=Object.keys(t.events||{}),r.length)for(s=0;(i=r[s])!==undefined;s++)a[i]?x.event.remove(n,i):x.removeEvent(n,i,t.handle);q.cache[o]&&delete q.cache[o]}delete L.cache[n[L.expando]]}},_evalUrl:function(e){return x.ajax({url:e,type:"GET",dataType:"script",async:!1,global:!1,"throws":!0})}});function pt(e,t){return x.nodeName(e,"table")&&x.nodeName(1===t.nodeType?t:t.firstChild,"tr")?e.getElementsByTagName("tbody")[0]||e.appendChild(e.ownerDocument.createElement("tbody")):e}function ft(e){return e.type=(null!==e.getAttribute("type"))+"/"+e.type,e}function ht(e){var t=ut.exec(e.type);return t?e.type=t[1]:e.removeAttribute("type"),e}function dt(e,t){var n=e.length,r=0;for(;n>r;r++)q.set(e[r],"globalEval",!t||q.get(t[r],"globalEval"))}function gt(e,t){var n,r,i,o,s,a,u,l;if(1===t.nodeType){if(q.hasData(e)&&(o=q.access(e),s=q.set(t,o),l=o.events)){delete s.handle,s.events={};for(i in l)for(n=0,r=l[i].length;r>n;n++)x.event.add(t,i,l[i][n])}L.hasData(e)&&(a=L.access(e),u=x.extend({},a),L.set(t,u))}}function mt(e,t){var n=e.getElementsByTagName?e.getElementsByTagName(t||"*"):e.querySelectorAll?e.querySelectorAll(t||"*"):[];return t===undefined||t&&x.nodeName(e,t)?x.merge([e],n):n}function yt(e,t){var n=t.nodeName.toLowerCase();"input"===n&&ot.test(e.type)?t.checked=e.checked:("input"===n||"textarea"===n)&&(t.defaultValue=e.defaultValue)}x.fn.extend({wrapAll:function(e){var t;return x.isFunction(e)?this.each(function(t){x(this).wrapAll(e.call(this,t))}):(this[0]&&(t=x(e,this[0].ownerDocument).eq(0).clone(!0),this[0].parentNode&&t.insertBefore(this[0]),t.map(function(){var e=this;while(e.firstElementChild)e=e.firstElementChild;return e}).append(this)),this)},wrapInner:function(e){return x.isFunction(e)?this.each(function(t){x(this).wrapInner(e.call(this,t))}):this.each(function(){var t=x(this),n=t.contents();n.length?n.wrapAll(e):t.append(e)})},wrap:function(e){var t=x.isFunction(e);return this.each(function(n){x(this).wrapAll(t?e.call(this,n):e)})},unwrap:function(){return this.parent().each(function(){x.nodeName(this,"body")||x(this).replaceWith(this.childNodes)}).end()}});var vt,xt,bt=/^(none|table(?!-c[ea]).+)/,wt=/^margin/,Tt=RegExp("^("+b+")(.*)$","i"),Ct=RegExp("^("+b+")(?!px)[a-z%]+$","i"),kt=RegExp("^([+-])=("+b+")","i"),Nt={BODY:"block"},Et={position:"absolute",visibility:"hidden",display:"block"},St={letterSpacing:0,fontWeight:400},jt=["Top","Right","Bottom","Left"],Dt=["Webkit","O","Moz","ms"];function At(e,t){if(t in e)return t;var n=t.charAt(0).toUpperCase()+t.slice(1),r=t,i=Dt.length;while(i--)if(t=Dt[i]+n,t in e)return t;return r}function Lt(e,t){return e=t||e,"none"===x.css(e,"display")||!x.contains(e.ownerDocument,e)}function qt(t){return e.getComputedStyle(t,null)}function Ht(e,t){var n,r,i,o=[],s=0,a=e.length;for(;a>s;s++)r=e[s],r.style&&(o[s]=q.get(r,"olddisplay"),n=r.style.display,t?(o[s]||"none"!==n||(r.style.display=""),""===r.style.display&&Lt(r)&&(o[s]=q.access(r,"olddisplay",Rt(r.nodeName)))):o[s]||(i=Lt(r),(n&&"none"!==n||!i)&&q.set(r,"olddisplay",i?n:x.css(r,"display"))));for(s=0;a>s;s++)r=e[s],r.style&&(t&&"none"!==r.style.display&&""!==r.style.display||(r.style.display=t?o[s]||"":"none"));return e}x.fn.extend({css:function(e,t){return x.access(this,function(e,t,n){var r,i,o={},s=0;if(x.isArray(t)){for(r=qt(e),i=t.length;i>s;s++)o[t[s]]=x.css(e,t[s],!1,r);return o}return n!==undefined?x.style(e,t,n):x.css(e,t)},e,t,arguments.length>1)},show:function(){return Ht(this,!0)},hide:function(){return Ht(this)},toggle:function(e){return"boolean"==typeof e?e?this.show():this.hide():this.each(function(){Lt(this)?x(this).show():x(this).hide()})}}),x.extend({cssHooks:{opacity:{get:function(e,t){if(t){var n=vt(e,"opacity");return""===n?"1":n}}}},cssNumber:{columnCount:!0,fillOpacity:!0,fontWeight:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,widows:!0,zIndex:!0,zoom:!0},cssProps:{"float":"cssFloat"},style:function(e,t,n,r){if(e&&3!==e.nodeType&&8!==e.nodeType&&e.style){var i,o,s,a=x.camelCase(t),u=e.style;return t=x.cssProps[a]||(x.cssProps[a]=At(u,a)),s=x.cssHooks[t]||x.cssHooks[a],n===undefined?s&&"get"in s&&(i=s.get(e,!1,r))!==undefined?i:u[t]:(o=typeof n,"string"===o&&(i=kt.exec(n))&&(n=(i[1]+1)*i[2]+parseFloat(x.css(e,t)),o="number"),null==n||"number"===o&&isNaN(n)||("number"!==o||x.cssNumber[a]||(n+="px"),x.support.clearCloneStyle||""!==n||0!==t.indexOf("background")||(u[t]="inherit"),s&&"set"in s&&(n=s.set(e,n,r))===undefined||(u[t]=n)),undefined)}},css:function(e,t,n,r){var i,o,s,a=x.camelCase(t);return t=x.cssProps[a]||(x.cssProps[a]=At(e.style,a)),s=x.cssHooks[t]||x.cssHooks[a],s&&"get"in s&&(i=s.get(e,!0,n)),i===undefined&&(i=vt(e,t,r)),"normal"===i&&t in St&&(i=St[t]),""===n||n?(o=parseFloat(i),n===!0||x.isNumeric(o)?o||0:i):i}}),vt=function(e,t,n){var r,i,o,s=n||qt(e),a=s?s.getPropertyValue(t)||s[t]:undefined,u=e.style;return s&&(""!==a||x.contains(e.ownerDocument,e)||(a=x.style(e,t)),Ct.test(a)&&wt.test(t)&&(r=u.width,i=u.minWidth,o=u.maxWidth,u.minWidth=u.maxWidth=u.width=a,a=s.width,u.width=r,u.minWidth=i,u.maxWidth=o)),a};function Ot(e,t,n){var r=Tt.exec(t);return r?Math.max(0,r[1]-(n||0))+(r[2]||"px"):t}function Ft(e,t,n,r,i){var o=n===(r?"border":"content")?4:"width"===t?1:0,s=0;for(;4>o;o+=2)"margin"===n&&(s+=x.css(e,n+jt[o],!0,i)),r?("content"===n&&(s-=x.css(e,"padding"+jt[o],!0,i)),"margin"!==n&&(s-=x.css(e,"border"+jt[o]+"Width",!0,i))):(s+=x.css(e,"padding"+jt[o],!0,i),"padding"!==n&&(s+=x.css(e,"border"+jt[o]+"Width",!0,i)));return s}function Pt(e,t,n){var r=!0,i="width"===t?e.offsetWidth:e.offsetHeight,o=qt(e),s=x.support.boxSizing&&"border-box"===x.css(e,"boxSizing",!1,o);if(0>=i||null==i){if(i=vt(e,t,o),(0>i||null==i)&&(i=e.style[t]),Ct.test(i))return i;r=s&&(x.support.boxSizingReliable||i===e.style[t]),i=parseFloat(i)||0}return i+Ft(e,t,n||(s?"border":"content"),r,o)+"px"}function Rt(e){var t=o,n=Nt[e];return n||(n=Mt(e,t),"none"!==n&&n||(xt=(xt||x("<iframe frameborder='0' width='0' height='0'/>").css("cssText","display:block !important")).appendTo(t.documentElement),t=(xt[0].contentWindow||xt[0].contentDocument).document,t.write("<!doctype html><html><body>"),t.close(),n=Mt(e,t),xt.detach()),Nt[e]=n),n}function Mt(e,t){var n=x(t.createElement(e)).appendTo(t.body),r=x.css(n[0],"display");return n.remove(),r}x.each(["height","width"],function(e,t){x.cssHooks[t]={get:function(e,n,r){return n?0===e.offsetWidth&&bt.test(x.css(e,"display"))?x.swap(e,Et,function(){return Pt(e,t,r)}):Pt(e,t,r):undefined},set:function(e,n,r){var i=r&&qt(e);return Ot(e,n,r?Ft(e,t,r,x.support.boxSizing&&"border-box"===x.css(e,"boxSizing",!1,i),i):0)}}}),x(function(){x.support.reliableMarginRight||(x.cssHooks.marginRight={get:function(e,t){return t?x.swap(e,{display:"inline-block"},vt,[e,"marginRight"]):undefined}}),!x.support.pixelPosition&&x.fn.position&&x.each(["top","left"],function(e,t){x.cssHooks[t]={get:function(e,n){return n?(n=vt(e,t),Ct.test(n)?x(e).position()[t]+"px":n):undefined}}})}),x.expr&&x.expr.filters&&(x.expr.filters.hidden=function(e){return 0>=e.offsetWidth&&0>=e.offsetHeight},x.expr.filters.visible=function(e){return!x.expr.filters.hidden(e)}),x.each({margin:"",padding:"",border:"Width"},function(e,t){x.cssHooks[e+t]={expand:function(n){var r=0,i={},o="string"==typeof n?n.split(" "):[n];for(;4>r;r++)i[e+jt[r]+t]=o[r]||o[r-2]||o[0];return i}},wt.test(e)||(x.cssHooks[e+t].set=Ot)});var Wt=/%20/g,$t=/\[\]$/,Bt=/\r?\n/g,It=/^(?:submit|button|image|reset|file)$/i,zt=/^(?:input|select|textarea|keygen)/i;x.fn.extend({serialize:function(){return x.param(this.serializeArray())},serializeArray:function(){return this.map(function(){var e=x.prop(this,"elements");return e?x.makeArray(e):this}).filter(function(){var e=this.type;return this.name&&!x(this).is(":disabled")&&zt.test(this.nodeName)&&!It.test(e)&&(this.checked||!ot.test(e))}).map(function(e,t){var n=x(this).val();return null==n?null:x.isArray(n)?x.map(n,function(e){return{name:t.name,value:e.replace(Bt,"\r\n")}}):{name:t.name,value:n.replace(Bt,"\r\n")}}).get()}}),x.param=function(e,t){var n,r=[],i=function(e,t){t=x.isFunction(t)?t():null==t?"":t,r[r.length]=encodeURIComponent(e)+"="+encodeURIComponent(t)};if(t===undefined&&(t=x.ajaxSettings&&x.ajaxSettings.traditional),x.isArray(e)||e.jquery&&!x.isPlainObject(e))x.each(e,function(){i(this.name,this.value)});else for(n in e)_t(n,e[n],t,i);return r.join("&").replace(Wt,"+")};function _t(e,t,n,r){var i;if(x.isArray(t))x.each(t,function(t,i){n||$t.test(e)?r(e,i):_t(e+"["+("object"==typeof i?t:"")+"]",i,n,r)});else if(n||"object"!==x.type(t))r(e,t);else for(i in t)_t(e+"["+i+"]",t[i],n,r)}x.each("blur focus focusin focusout load resize scroll unload click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup error contextmenu".split(" "),function(e,t){x.fn[t]=function(e,n){return arguments.length>0?this.on(t,null,e,n):this.trigger(t)}}),x.fn.extend({hover:function(e,t){return this.mouseenter(e).mouseleave(t||e)},bind:function(e,t,n){return this.on(e,null,t,n)},unbind:function(e,t){return this.off(e,null,t)
+},delegate:function(e,t,n,r){return this.on(t,e,n,r)},undelegate:function(e,t,n){return 1===arguments.length?this.off(e,"**"):this.off(t,e||"**",n)}});var Xt,Ut,Yt=x.now(),Vt=/\?/,Gt=/#.*$/,Jt=/([?&])_=[^&]*/,Qt=/^(.*?):[ \t]*([^\r\n]*)$/gm,Kt=/^(?:about|app|app-storage|.+-extension|file|res|widget):$/,Zt=/^(?:GET|HEAD)$/,en=/^\/\//,tn=/^([\w.+-]+:)(?:\/\/([^\/?#:]*)(?::(\d+)|)|)/,nn=x.fn.load,rn={},on={},sn="*/".concat("*");try{Ut=i.href}catch(an){Ut=o.createElement("a"),Ut.href="",Ut=Ut.href}Xt=tn.exec(Ut.toLowerCase())||[];function un(e){return function(t,n){"string"!=typeof t&&(n=t,t="*");var r,i=0,o=t.toLowerCase().match(w)||[];if(x.isFunction(n))while(r=o[i++])"+"===r[0]?(r=r.slice(1)||"*",(e[r]=e[r]||[]).unshift(n)):(e[r]=e[r]||[]).push(n)}}function ln(e,t,n,r){var i={},o=e===on;function s(a){var u;return i[a]=!0,x.each(e[a]||[],function(e,a){var l=a(t,n,r);return"string"!=typeof l||o||i[l]?o?!(u=l):undefined:(t.dataTypes.unshift(l),s(l),!1)}),u}return s(t.dataTypes[0])||!i["*"]&&s("*")}function cn(e,t){var n,r,i=x.ajaxSettings.flatOptions||{};for(n in t)t[n]!==undefined&&((i[n]?e:r||(r={}))[n]=t[n]);return r&&x.extend(!0,e,r),e}x.fn.load=function(e,t,n){if("string"!=typeof e&&nn)return nn.apply(this,arguments);var r,i,o,s=this,a=e.indexOf(" ");return a>=0&&(r=e.slice(a),e=e.slice(0,a)),x.isFunction(t)?(n=t,t=undefined):t&&"object"==typeof t&&(i="POST"),s.length>0&&x.ajax({url:e,type:i,dataType:"html",data:t}).done(function(e){o=arguments,s.html(r?x("<div>").append(x.parseHTML(e)).find(r):e)}).complete(n&&function(e,t){s.each(n,o||[e.responseText,t,e])}),this},x.each(["ajaxStart","ajaxStop","ajaxComplete","ajaxError","ajaxSuccess","ajaxSend"],function(e,t){x.fn[t]=function(e){return this.on(t,e)}}),x.extend({active:0,lastModified:{},etag:{},ajaxSettings:{url:Ut,type:"GET",isLocal:Kt.test(Xt[1]),global:!0,processData:!0,async:!0,contentType:"application/x-www-form-urlencoded; charset=UTF-8",accepts:{"*":sn,text:"text/plain",html:"text/html",xml:"application/xml, text/xml",json:"application/json, text/javascript"},contents:{xml:/xml/,html:/html/,json:/json/},responseFields:{xml:"responseXML",text:"responseText",json:"responseJSON"},converters:{"* text":String,"text html":!0,"text json":x.parseJSON,"text xml":x.parseXML},flatOptions:{url:!0,context:!0}},ajaxSetup:function(e,t){return t?cn(cn(e,x.ajaxSettings),t):cn(x.ajaxSettings,e)},ajaxPrefilter:un(rn),ajaxTransport:un(on),ajax:function(e,t){"object"==typeof e&&(t=e,e=undefined),t=t||{};var n,r,i,o,s,a,u,l,c=x.ajaxSetup({},t),p=c.context||c,f=c.context&&(p.nodeType||p.jquery)?x(p):x.event,h=x.Deferred(),d=x.Callbacks("once memory"),g=c.statusCode||{},m={},y={},v=0,b="canceled",T={readyState:0,getResponseHeader:function(e){var t;if(2===v){if(!o){o={};while(t=Qt.exec(i))o[t[1].toLowerCase()]=t[2]}t=o[e.toLowerCase()]}return null==t?null:t},getAllResponseHeaders:function(){return 2===v?i:null},setRequestHeader:function(e,t){var n=e.toLowerCase();return v||(e=y[n]=y[n]||e,m[e]=t),this},overrideMimeType:function(e){return v||(c.mimeType=e),this},statusCode:function(e){var t;if(e)if(2>v)for(t in e)g[t]=[g[t],e[t]];else T.always(e[T.status]);return this},abort:function(e){var t=e||b;return n&&n.abort(t),k(0,t),this}};if(h.promise(T).complete=d.add,T.success=T.done,T.error=T.fail,c.url=((e||c.url||Ut)+"").replace(Gt,"").replace(en,Xt[1]+"//"),c.type=t.method||t.type||c.method||c.type,c.dataTypes=x.trim(c.dataType||"*").toLowerCase().match(w)||[""],null==c.crossDomain&&(a=tn.exec(c.url.toLowerCase()),c.crossDomain=!(!a||a[1]===Xt[1]&&a[2]===Xt[2]&&(a[3]||("http:"===a[1]?"80":"443"))===(Xt[3]||("http:"===Xt[1]?"80":"443")))),c.data&&c.processData&&"string"!=typeof c.data&&(c.data=x.param(c.data,c.traditional)),ln(rn,c,t,T),2===v)return T;u=c.global,u&&0===x.active++&&x.event.trigger("ajaxStart"),c.type=c.type.toUpperCase(),c.hasContent=!Zt.test(c.type),r=c.url,c.hasContent||(c.data&&(r=c.url+=(Vt.test(r)?"&":"?")+c.data,delete c.data),c.cache===!1&&(c.url=Jt.test(r)?r.replace(Jt,"$1_="+Yt++):r+(Vt.test(r)?"&":"?")+"_="+Yt++)),c.ifModified&&(x.lastModified[r]&&T.setRequestHeader("If-Modified-Since",x.lastModified[r]),x.etag[r]&&T.setRequestHeader("If-None-Match",x.etag[r])),(c.data&&c.hasContent&&c.contentType!==!1||t.contentType)&&T.setRequestHeader("Content-Type",c.contentType),T.setRequestHeader("Accept",c.dataTypes[0]&&c.accepts[c.dataTypes[0]]?c.accepts[c.dataTypes[0]]+("*"!==c.dataTypes[0]?", "+sn+"; q=0.01":""):c.accepts["*"]);for(l in c.headers)T.setRequestHeader(l,c.headers[l]);if(c.beforeSend&&(c.beforeSend.call(p,T,c)===!1||2===v))return T.abort();b="abort";for(l in{success:1,error:1,complete:1})T[l](c[l]);if(n=ln(on,c,t,T)){T.readyState=1,u&&f.trigger("ajaxSend",[T,c]),c.async&&c.timeout>0&&(s=setTimeout(function(){T.abort("timeout")},c.timeout));try{v=1,n.send(m,k)}catch(C){if(!(2>v))throw C;k(-1,C)}}else k(-1,"No Transport");function k(e,t,o,a){var l,m,y,b,w,C=t;2!==v&&(v=2,s&&clearTimeout(s),n=undefined,i=a||"",T.readyState=e>0?4:0,l=e>=200&&300>e||304===e,o&&(b=pn(c,T,o)),b=fn(c,b,T,l),l?(c.ifModified&&(w=T.getResponseHeader("Last-Modified"),w&&(x.lastModified[r]=w),w=T.getResponseHeader("etag"),w&&(x.etag[r]=w)),204===e||"HEAD"===c.type?C="nocontent":304===e?C="notmodified":(C=b.state,m=b.data,y=b.error,l=!y)):(y=C,(e||!C)&&(C="error",0>e&&(e=0))),T.status=e,T.statusText=(t||C)+"",l?h.resolveWith(p,[m,C,T]):h.rejectWith(p,[T,C,y]),T.statusCode(g),g=undefined,u&&f.trigger(l?"ajaxSuccess":"ajaxError",[T,c,l?m:y]),d.fireWith(p,[T,C]),u&&(f.trigger("ajaxComplete",[T,c]),--x.active||x.event.trigger("ajaxStop")))}return T},getJSON:function(e,t,n){return x.get(e,t,n,"json")},getScript:function(e,t){return x.get(e,undefined,t,"script")}}),x.each(["get","post"],function(e,t){x[t]=function(e,n,r,i){return x.isFunction(n)&&(i=i||r,r=n,n=undefined),x.ajax({url:e,type:t,dataType:i,data:n,success:r})}});function pn(e,t,n){var r,i,o,s,a=e.contents,u=e.dataTypes;while("*"===u[0])u.shift(),r===undefined&&(r=e.mimeType||t.getResponseHeader("Content-Type"));if(r)for(i in a)if(a[i]&&a[i].test(r)){u.unshift(i);break}if(u[0]in n)o=u[0];else{for(i in n){if(!u[0]||e.converters[i+" "+u[0]]){o=i;break}s||(s=i)}o=o||s}return o?(o!==u[0]&&u.unshift(o),n[o]):undefined}function fn(e,t,n,r){var i,o,s,a,u,l={},c=e.dataTypes.slice();if(c[1])for(s in e.converters)l[s.toLowerCase()]=e.converters[s];o=c.shift();while(o)if(e.responseFields[o]&&(n[e.responseFields[o]]=t),!u&&r&&e.dataFilter&&(t=e.dataFilter(t,e.dataType)),u=o,o=c.shift())if("*"===o)o=u;else if("*"!==u&&u!==o){if(s=l[u+" "+o]||l["* "+o],!s)for(i in l)if(a=i.split(" "),a[1]===o&&(s=l[u+" "+a[0]]||l["* "+a[0]])){s===!0?s=l[i]:l[i]!==!0&&(o=a[0],c.unshift(a[1]));break}if(s!==!0)if(s&&e["throws"])t=s(t);else try{t=s(t)}catch(p){return{state:"parsererror",error:s?p:"No conversion from "+u+" to "+o}}}return{state:"success",data:t}}x.ajaxSetup({accepts:{script:"text/javascript, application/javascript, application/ecmascript, application/x-ecmascript"},contents:{script:/(?:java|ecma)script/},converters:{"text script":function(e){return x.globalEval(e),e}}}),x.ajaxPrefilter("script",function(e){e.cache===undefined&&(e.cache=!1),e.crossDomain&&(e.type="GET")}),x.ajaxTransport("script",function(e){if(e.crossDomain){var t,n;return{send:function(r,i){t=x("<script>").prop({async:!0,charset:e.scriptCharset,src:e.url}).on("load error",n=function(e){t.remove(),n=null,e&&i("error"===e.type?404:200,e.type)}),o.head.appendChild(t[0])},abort:function(){n&&n()}}}});var hn=[],dn=/(=)\?(?=&|$)|\?\?/;x.ajaxSetup({jsonp:"callback",jsonpCallback:function(){var e=hn.pop()||x.expando+"_"+Yt++;return this[e]=!0,e}}),x.ajaxPrefilter("json jsonp",function(t,n,r){var i,o,s,a=t.jsonp!==!1&&(dn.test(t.url)?"url":"string"==typeof t.data&&!(t.contentType||"").indexOf("application/x-www-form-urlencoded")&&dn.test(t.data)&&"data");return a||"jsonp"===t.dataTypes[0]?(i=t.jsonpCallback=x.isFunction(t.jsonpCallback)?t.jsonpCallback():t.jsonpCallback,a?t[a]=t[a].replace(dn,"$1"+i):t.jsonp!==!1&&(t.url+=(Vt.test(t.url)?"&":"?")+t.jsonp+"="+i),t.converters["script json"]=function(){return s||x.error(i+" was not called"),s[0]},t.dataTypes[0]="json",o=e[i],e[i]=function(){s=arguments},r.always(function(){e[i]=o,t[i]&&(t.jsonpCallback=n.jsonpCallback,hn.push(i)),s&&x.isFunction(o)&&o(s[0]),s=o=undefined}),"script"):undefined}),x.ajaxSettings.xhr=function(){try{return new XMLHttpRequest}catch(e){}};var gn=x.ajaxSettings.xhr(),mn={0:200,1223:204},yn=0,vn={};e.ActiveXObject&&x(e).on("unload",function(){for(var e in vn)vn[e]();vn=undefined}),x.support.cors=!!gn&&"withCredentials"in gn,x.support.ajax=gn=!!gn,x.ajaxTransport(function(e){var t;return x.support.cors||gn&&!e.crossDomain?{send:function(n,r){var i,o,s=e.xhr();if(s.open(e.type,e.url,e.async,e.username,e.password),e.xhrFields)for(i in e.xhrFields)s[i]=e.xhrFields[i];e.mimeType&&s.overrideMimeType&&s.overrideMimeType(e.mimeType),e.crossDomain||n["X-Requested-With"]||(n["X-Requested-With"]="XMLHttpRequest");for(i in n)s.setRequestHeader(i,n[i]);t=function(e){return function(){t&&(delete vn[o],t=s.onload=s.onerror=null,"abort"===e?s.abort():"error"===e?r(s.status||404,s.statusText):r(mn[s.status]||s.status,s.statusText,"string"==typeof s.responseText?{text:s.responseText}:undefined,s.getAllResponseHeaders()))}},s.onload=t(),s.onerror=t("error"),t=vn[o=yn++]=t("abort"),s.send(e.hasContent&&e.data||null)},abort:function(){t&&t()}}:undefined});var xn,bn,wn=/^(?:toggle|show|hide)$/,Tn=RegExp("^(?:([+-])=|)("+b+")([a-z%]*)$","i"),Cn=/queueHooks$/,kn=[An],Nn={"*":[function(e,t){var n=this.createTween(e,t),r=n.cur(),i=Tn.exec(t),o=i&&i[3]||(x.cssNumber[e]?"":"px"),s=(x.cssNumber[e]||"px"!==o&&+r)&&Tn.exec(x.css(n.elem,e)),a=1,u=20;if(s&&s[3]!==o){o=o||s[3],i=i||[],s=+r||1;do a=a||".5",s/=a,x.style(n.elem,e,s+o);while(a!==(a=n.cur()/r)&&1!==a&&--u)}return i&&(s=n.start=+s||+r||0,n.unit=o,n.end=i[1]?s+(i[1]+1)*i[2]:+i[2]),n}]};function En(){return setTimeout(function(){xn=undefined}),xn=x.now()}function Sn(e,t,n){var r,i=(Nn[t]||[]).concat(Nn["*"]),o=0,s=i.length;for(;s>o;o++)if(r=i[o].call(n,t,e))return r}function jn(e,t,n){var r,i,o=0,s=kn.length,a=x.Deferred().always(function(){delete u.elem}),u=function(){if(i)return!1;var t=xn||En(),n=Math.max(0,l.startTime+l.duration-t),r=n/l.duration||0,o=1-r,s=0,u=l.tweens.length;for(;u>s;s++)l.tweens[s].run(o);return a.notifyWith(e,[l,o,n]),1>o&&u?n:(a.resolveWith(e,[l]),!1)},l=a.promise({elem:e,props:x.extend({},t),opts:x.extend(!0,{specialEasing:{}},n),originalProperties:t,originalOptions:n,startTime:xn||En(),duration:n.duration,tweens:[],createTween:function(t,n){var r=x.Tween(e,l.opts,t,n,l.opts.specialEasing[t]||l.opts.easing);return l.tweens.push(r),r},stop:function(t){var n=0,r=t?l.tweens.length:0;if(i)return this;for(i=!0;r>n;n++)l.tweens[n].run(1);return t?a.resolveWith(e,[l,t]):a.rejectWith(e,[l,t]),this}}),c=l.props;for(Dn(c,l.opts.specialEasing);s>o;o++)if(r=kn[o].call(l,e,c,l.opts))return r;return x.map(c,Sn,l),x.isFunction(l.opts.start)&&l.opts.start.call(e,l),x.fx.timer(x.extend(u,{elem:e,anim:l,queue:l.opts.queue})),l.progress(l.opts.progress).done(l.opts.done,l.opts.complete).fail(l.opts.fail).always(l.opts.always)}function Dn(e,t){var n,r,i,o,s;for(n in e)if(r=x.camelCase(n),i=t[r],o=e[n],x.isArray(o)&&(i=o[1],o=e[n]=o[0]),n!==r&&(e[r]=o,delete e[n]),s=x.cssHooks[r],s&&"expand"in s){o=s.expand(o),delete e[r];for(n in o)n in e||(e[n]=o[n],t[n]=i)}else t[r]=i}x.Animation=x.extend(jn,{tweener:function(e,t){x.isFunction(e)?(t=e,e=["*"]):e=e.split(" ");var n,r=0,i=e.length;for(;i>r;r++)n=e[r],Nn[n]=Nn[n]||[],Nn[n].unshift(t)},prefilter:function(e,t){t?kn.unshift(e):kn.push(e)}});function An(e,t,n){var r,i,o,s,a,u,l=this,c={},p=e.style,f=e.nodeType&&Lt(e),h=q.get(e,"fxshow");n.queue||(a=x._queueHooks(e,"fx"),null==a.unqueued&&(a.unqueued=0,u=a.empty.fire,a.empty.fire=function(){a.unqueued||u()}),a.unqueued++,l.always(function(){l.always(function(){a.unqueued--,x.queue(e,"fx").length||a.empty.fire()})})),1===e.nodeType&&("height"in t||"width"in t)&&(n.overflow=[p.overflow,p.overflowX,p.overflowY],"inline"===x.css(e,"display")&&"none"===x.css(e,"float")&&(p.display="inline-block")),n.overflow&&(p.overflow="hidden",l.always(function(){p.overflow=n.overflow[0],p.overflowX=n.overflow[1],p.overflowY=n.overflow[2]}));for(r in t)if(i=t[r],wn.exec(i)){if(delete t[r],o=o||"toggle"===i,i===(f?"hide":"show")){if("show"!==i||!h||h[r]===undefined)continue;f=!0}c[r]=h&&h[r]||x.style(e,r)}if(!x.isEmptyObject(c)){h?"hidden"in h&&(f=h.hidden):h=q.access(e,"fxshow",{}),o&&(h.hidden=!f),f?x(e).show():l.done(function(){x(e).hide()}),l.done(function(){var t;q.remove(e,"fxshow");for(t in c)x.style(e,t,c[t])});for(r in c)s=Sn(f?h[r]:0,r,l),r in h||(h[r]=s.start,f&&(s.end=s.start,s.start="width"===r||"height"===r?1:0))}}function Ln(e,t,n,r,i){return new Ln.prototype.init(e,t,n,r,i)}x.Tween=Ln,Ln.prototype={constructor:Ln,init:function(e,t,n,r,i,o){this.elem=e,this.prop=n,this.easing=i||"swing",this.options=t,this.start=this.now=this.cur(),this.end=r,this.unit=o||(x.cssNumber[n]?"":"px")},cur:function(){var e=Ln.propHooks[this.prop];return e&&e.get?e.get(this):Ln.propHooks._default.get(this)},run:function(e){var t,n=Ln.propHooks[this.prop];return this.pos=t=this.options.duration?x.easing[this.easing](e,this.options.duration*e,0,1,this.options.duration):e,this.now=(this.end-this.start)*t+this.start,this.options.step&&this.options.step.call(this.elem,this.now,this),n&&n.set?n.set(this):Ln.propHooks._default.set(this),this}},Ln.prototype.init.prototype=Ln.prototype,Ln.propHooks={_default:{get:function(e){var t;return null==e.elem[e.prop]||e.elem.style&&null!=e.elem.style[e.prop]?(t=x.css(e.elem,e.prop,""),t&&"auto"!==t?t:0):e.elem[e.prop]},set:function(e){x.fx.step[e.prop]?x.fx.step[e.prop](e):e.elem.style&&(null!=e.elem.style[x.cssProps[e.prop]]||x.cssHooks[e.prop])?x.style(e.elem,e.prop,e.now+e.unit):e.elem[e.prop]=e.now}}},Ln.propHooks.scrollTop=Ln.propHooks.scrollLeft={set:function(e){e.elem.nodeType&&e.elem.parentNode&&(e.elem[e.prop]=e.now)}},x.each(["toggle","show","hide"],function(e,t){var n=x.fn[t];x.fn[t]=function(e,r,i){return null==e||"boolean"==typeof e?n.apply(this,arguments):this.animate(qn(t,!0),e,r,i)}}),x.fn.extend({fadeTo:function(e,t,n,r){return this.filter(Lt).css("opacity",0).show().end().animate({opacity:t},e,n,r)},animate:function(e,t,n,r){var i=x.isEmptyObject(e),o=x.speed(t,n,r),s=function(){var t=jn(this,x.extend({},e),o);(i||q.get(this,"finish"))&&t.stop(!0)};return s.finish=s,i||o.queue===!1?this.each(s):this.queue(o.queue,s)},stop:function(e,t,n){var r=function(e){var t=e.stop;delete e.stop,t(n)};return"string"!=typeof e&&(n=t,t=e,e=undefined),t&&e!==!1&&this.queue(e||"fx",[]),this.each(function(){var t=!0,i=null!=e&&e+"queueHooks",o=x.timers,s=q.get(this);if(i)s[i]&&s[i].stop&&r(s[i]);else for(i in s)s[i]&&s[i].stop&&Cn.test(i)&&r(s[i]);for(i=o.length;i--;)o[i].elem!==this||null!=e&&o[i].queue!==e||(o[i].anim.stop(n),t=!1,o.splice(i,1));(t||!n)&&x.dequeue(this,e)})},finish:function(e){return e!==!1&&(e=e||"fx"),this.each(function(){var t,n=q.get(this),r=n[e+"queue"],i=n[e+"queueHooks"],o=x.timers,s=r?r.length:0;for(n.finish=!0,x.queue(this,e,[]),i&&i.stop&&i.stop.call(this,!0),t=o.length;t--;)o[t].elem===this&&o[t].queue===e&&(o[t].anim.stop(!0),o.splice(t,1));for(t=0;s>t;t++)r[t]&&r[t].finish&&r[t].finish.call(this);delete n.finish})}});function qn(e,t){var n,r={height:e},i=0;for(t=t?1:0;4>i;i+=2-t)n=jt[i],r["margin"+n]=r["padding"+n]=e;return t&&(r.opacity=r.width=e),r}x.each({slideDown:qn("show"),slideUp:qn("hide"),slideToggle:qn("toggle"),fadeIn:{opacity:"show"},fadeOut:{opacity:"hide"},fadeToggle:{opacity:"toggle"}},function(e,t){x.fn[e]=function(e,n,r){return this.animate(t,e,n,r)}}),x.speed=function(e,t,n){var r=e&&"object"==typeof e?x.extend({},e):{complete:n||!n&&t||x.isFunction(e)&&e,duration:e,easing:n&&t||t&&!x.isFunction(t)&&t};return r.duration=x.fx.off?0:"number"==typeof r.duration?r.duration:r.duration in x.fx.speeds?x.fx.speeds[r.duration]:x.fx.speeds._default,(null==r.queue||r.queue===!0)&&(r.queue="fx"),r.old=r.complete,r.complete=function(){x.isFunction(r.old)&&r.old.call(this),r.queue&&x.dequeue(this,r.queue)},r},x.easing={linear:function(e){return e},swing:function(e){return.5-Math.cos(e*Math.PI)/2}},x.timers=[],x.fx=Ln.prototype.init,x.fx.tick=function(){var e,t=x.timers,n=0;for(xn=x.now();t.length>n;n++)e=t[n],e()||t[n]!==e||t.splice(n--,1);t.length||x.fx.stop(),xn=undefined},x.fx.timer=function(e){e()&&x.timers.push(e)&&x.fx.start()},x.fx.interval=13,x.fx.start=function(){bn||(bn=setInterval(x.fx.tick,x.fx.interval))},x.fx.stop=function(){clearInterval(bn),bn=null},x.fx.speeds={slow:600,fast:200,_default:400},x.fx.step={},x.expr&&x.expr.filters&&(x.expr.filters.animated=function(e){return x.grep(x.timers,function(t){return e===t.elem}).length}),x.fn.offset=function(e){if(arguments.length)return e===undefined?this:this.each(function(t){x.offset.setOffset(this,e,t)});var t,n,i=this[0],o={top:0,left:0},s=i&&i.ownerDocument;if(s)return t=s.documentElement,x.contains(t,i)?(typeof i.getBoundingClientRect!==r&&(o=i.getBoundingClientRect()),n=Hn(s),{top:o.top+n.pageYOffset-t.clientTop,left:o.left+n.pageXOffset-t.clientLeft}):o},x.offset={setOffset:function(e,t,n){var r,i,o,s,a,u,l,c=x.css(e,"position"),p=x(e),f={};"static"===c&&(e.style.position="relative"),a=p.offset(),o=x.css(e,"top"),u=x.css(e,"left"),l=("absolute"===c||"fixed"===c)&&(o+u).indexOf("auto")>-1,l?(r=p.position(),s=r.top,i=r.left):(s=parseFloat(o)||0,i=parseFloat(u)||0),x.isFunction(t)&&(t=t.call(e,n,a)),null!=t.top&&(f.top=t.top-a.top+s),null!=t.left&&(f.left=t.left-a.left+i),"using"in t?t.using.call(e,f):p.css(f)}},x.fn.extend({position:function(){if(this[0]){var e,t,n=this[0],r={top:0,left:0};return"fixed"===x.css(n,"position")?t=n.getBoundingClientRect():(e=this.offsetParent(),t=this.offset(),x.nodeName(e[0],"html")||(r=e.offset()),r.top+=x.css(e[0],"borderTopWidth",!0),r.left+=x.css(e[0],"borderLeftWidth",!0)),{top:t.top-r.top-x.css(n,"marginTop",!0),left:t.left-r.left-x.css(n,"marginLeft",!0)}}},offsetParent:function(){return this.map(function(){var e=this.offsetParent||s;while(e&&!x.nodeName(e,"html")&&"static"===x.css(e,"position"))e=e.offsetParent;return e||s})}}),x.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(t,n){var r="pageYOffset"===n;x.fn[t]=function(i){return x.access(this,function(t,i,o){var s=Hn(t);return o===undefined?s?s[n]:t[i]:(s?s.scrollTo(r?e.pageXOffset:o,r?o:e.pageYOffset):t[i]=o,undefined)},t,i,arguments.length,null)}});function Hn(e){return x.isWindow(e)?e:9===e.nodeType&&e.defaultView}x.each({Height:"height",Width:"width"},function(e,t){x.each({padding:"inner"+e,content:t,"":"outer"+e},function(n,r){x.fn[r]=function(r,i){var o=arguments.length&&(n||"boolean"!=typeof r),s=n||(r===!0||i===!0?"margin":"border");return x.access(this,function(t,n,r){var i;return x.isWindow(t)?t.document.documentElement["client"+e]:9===t.nodeType?(i=t.documentElement,Math.max(t.body["scroll"+e],i["scroll"+e],t.body["offset"+e],i["offset"+e],i["client"+e])):r===undefined?x.css(t,n,s):x.style(t,n,r,s)},t,o?r:undefined,o,null)}})}),x.fn.size=function(){return this.length},x.fn.andSelf=x.fn.addBack,"object"==typeof module&&module&&"object"==typeof module.exports?module.exports=x:"function"==typeof define&&define.amd&&define("jquery",[],function(){return x}),"object"==typeof e&&"object"==typeof e.document&&(e.jQuery=e.$=x)})(window);
diff --git a/webchat/public/krebs.png b/webchat/public/krebs.png
new file mode 100644
index 00000000..5762e7f4
--- /dev/null
+++ b/webchat/public/krebs.png
Binary files differ
diff --git a/webchat/public/reset.css b/webchat/public/reset.css
new file mode 100644
index 00000000..d369bc86
--- /dev/null
+++ b/webchat/public/reset.css
@@ -0,0 +1,126 @@
+/* http://meyerweb.com/eric/tools/css/reset/
+ v2.0 | 20110126
+ License: none (public domain)
+*/
+
+html, body, div, span, applet, object, iframe,
+h1, h2, h3, h4, h5, h6, p, blockquote, pre,
+a, abbr, acronym, address, big, cite, code,
+del, dfn, em, img, ins, kbd, q, s, samp,
+small, strike, strong, sub, sup, tt, var,
+b, u, i, center,
+dl, dt, dd, ol, ul, li,
+fieldset, form, label, legend,
+table, caption, tbody, tfoot, thead, tr, th, td,
+article, aside, canvas, details, embed,
+figure, figcaption, footer, header, hgroup,
+menu, nav, output, ruby, section, summary,
+time, mark, audio, video {
+ margin: 0;
+ padding: 0;
+ border: 0;
+ font-size: 100%;
+ font: inherit;
+ vertical-align: baseline;
+}
+/* HTML5 display-role reset for older browsers */
+article, aside, details, figcaption, figure,
+footer, header, hgroup, menu, nav, section {
+ display: block;
+}
+body {
+ line-height: 1;
+ background-color: black;
+ color: white;
+ font-family: monospace;
+}
+ol, ul {
+ list-style: none;
+}
+blockquote, q {
+ quotes: none;
+}
+blockquote:before, blockquote:after,
+q:before, q:after {
+ content: '';
+ content: none;
+}
+#chatbox {
+ border-collapse: collapse;
+ border-spacing: 0;
+ color: white;
+ width: 100%;
+ vertical-align: bottom;
+}
+#input{
+ width: 100%;
+ background-color: #221111;
+ border: 1px solid black;
+ color: white;
+}
+.from {
+ color:grey;
+ font-weight: bold;
+ text-align: right;
+ font-size:12px;
+ white-space: nowrap;
+}
+.from:after {
+ content: ":";
+ padding-right: 6px;
+}
+#bg {
+ background-image: url(krebs.png);
+ position: absolute;
+ top: 0;
+ bottom: 0;
+ left: 0;
+ right: 0;
+}
+#chatter {
+ width: 75%;
+ height: 100%;
+ background-color: black;
+ opacity: 0.8;
+ overflow: auto;
+ overflow-x: hidden;
+ vertical-align: bottom;
+}
+.chat_date,.chat_from,.chat_msg{
+}
+.msg{
+ width: 100%;
+}
+a {
+ color: red;
+}
+.date {
+ color: green;
+}
+.date:after {
+ content: "";
+ padding-right: 4px;
+}
+#time {
+ color: #00FF00;
+}
+#sideboard {
+ position: absolute;
+ top: 0;
+ right: 0;
+ height: 100%;
+ width: 24%;
+ background-color: black;
+ opacity: 0.8;
+}
+#links {
+ font-size: 14px;
+ position: absolute;
+ bottom: 5px;
+}
+.join_msg {
+ color: #00FF00;
+}
+.quit_msg {
+ color: #FF0000;
+}
diff --git a/webchat/public/rpc.js b/webchat/public/rpc.js
new file mode 100644
index 00000000..8e911e1d
--- /dev/null
+++ b/webchat/public/rpc.js
@@ -0,0 +1,99 @@
+try {
+ module.exports = RPC
+}
+catch(e){
+}
+
+function RPC (transport) {
+ this._id = 0
+ this._waiting_callbacks = {}
+ this._methods = {}
+ this._transport = transport
+
+ transport.onmessage = this.onmessage.bind(this)
+}
+
+RPC.prototype.register = function (method, params, callback) {
+ this._methods[method] = callback
+}
+
+RPC.prototype.send = function (method, params, callback) {
+ var message = {
+ method: method,
+ params: params,
+ }
+ if (callback) {
+ var id = ++this._id
+ this._waiting_callbacks[id] = callback
+ message.id = id
+ }
+ return this._transport.send(message)
+}
+
+function _is_request (message) {
+ return typeof message.method === 'string'
+}
+
+function _is_response (message) {
+ return message.hasOwnProperty('result')
+ || message.hasOwnProperty('error')
+}
+
+RPC.prototype.onmessage = function (message) {
+ console.log('RPC message:', message)
+ if (_is_request(message)) {
+ return this._on_request(message)
+ }
+ if (_is_response(message)) {
+ return this._on_response(message)
+ }
+ return this._on_bad_message(message)
+}
+
+RPC.prototype._on_request = function (request) {
+ var method = this._methods[request.method] || function(){
+ console.log('method not found', request.method)
+ }
+ var params = request.params
+ var id = request.id
+
+ var transport = this._transport
+
+ if (typeof id === 'string' || typeof id === 'number' || id === null) {
+ return method(params, function (error, result) {
+ var response = {
+ id: id,
+ }
+ if (error) {
+ response.error = error
+ } else {
+ response.result = result
+ }
+ console.log('request:', request, '->', response)
+ return transport.send(response)
+ })
+ } else {
+ return method(params, function (error, result) {
+ var response = {
+ id: id,
+ }
+ if (error) {
+ response.error = error
+ } else {
+ response.result = result
+ }
+ console.log('notification:', request, '->', response)
+ })
+ }
+}
+
+RPC.prototype._on_response = function (response) {
+ var result = response.result
+ var error = response.error
+ var id = response.id
+
+ var callback = this._waiting_callbacks[id]
+ delete this._waiting_callbacks[id]
+
+ return callback(result, error)
+}
diff --git a/webchat/public/sockjs-0.3.min.js b/webchat/public/sockjs-0.3.min.js
new file mode 100644
index 00000000..baae3764
--- /dev/null
+++ b/webchat/public/sockjs-0.3.min.js
@@ -0,0 +1,27 @@
+/* SockJS client, version 0.3.4, http://sockjs.org, MIT License
+
+Copyright (c) 2011-2012 VMware, Inc.
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+THE SOFTWARE.
+*/
+
+// JSON2 by Douglas Crockford (minified).
+var JSON;JSON||(JSON={}),function(){function str(a,b){var c,d,e,f,g=gap,h,i=b[a];i&&typeof i=="object"&&typeof i.toJSON=="function"&&(i=i.toJSON(a)),typeof rep=="function"&&(i=rep.call(b,a,i));switch(typeof i){case"string":return quote(i);case"number":return isFinite(i)?String(i):"null";case"boolean":case"null":return String(i);case"object":if(!i)return"null";gap+=indent,h=[];if(Object.prototype.toString.apply(i)==="[object Array]"){f=i.length;for(c=0;c<f;c+=1)h[c]=str(c,i)||"null";e=h.length===0?"[]":gap?"[\n"+gap+h.join(",\n"+gap)+"\n"+g+"]":"["+h.join(",")+"]",gap=g;return e}if(rep&&typeof rep=="object"){f=rep.length;for(c=0;c<f;c+=1)typeof rep[c]=="string"&&(d=rep[c],e=str(d,i),e&&h.push(quote(d)+(gap?": ":":")+e))}else for(d in i)Object.prototype.hasOwnProperty.call(i,d)&&(e=str(d,i),e&&h.push(quote(d)+(gap?": ":":")+e));e=h.length===0?"{}":gap?"{\n"+gap+h.join(",\n"+gap)+"\n"+g+"}":"{"+h.join(",")+"}",gap=g;return e}}function quote(a){escapable.lastIndex=0;return escapable.test(a)?'"'+a.replace(escapable,function(a){var b=meta[a];return typeof b=="string"?b:"\\u"+("0000"+a.charCodeAt(0).toString(16)).slice(-4)})+'"':'"'+a+'"'}function f(a){return a<10?"0"+a:a}"use strict",typeof Date.prototype.toJSON!="function"&&(Date.prototype.toJSON=function(a){return isFinite(this.valueOf())?this.getUTCFullYear()+"-"+f(this.getUTCMonth()+1)+"-"+f(this.getUTCDate())+"T"+f(this.getUTCHours())+":"+f(this.getUTCMinutes())+":"+f(this.getUTCSeconds())+"Z":null},String.prototype.toJSON=Number.prototype.toJSON=Boolean.prototype.toJSON=function(a){return this.valueOf()});var cx=/[\u0000\u00ad\u0600-\u0604\u070f\u17b4\u17b5\u200c-\u200f\u2028-\u202f\u2060-\u206f\ufeff\ufff0-\uffff]/g,escapable=/[\\\"\x00-\x1f\x7f-\x9f\u00ad\u0600-\u0604\u070f\u17b4\u17b5\u200c-\u200f\u2028-\u202f\u2060-\u206f\ufeff\ufff0-\uffff]/g,gap,indent,meta={"\b":"\\b","\t":"\\t","\n":"\\n","\f":"\\f","\r":"\\r",'"':'\\"',"\\":"\\\\"},rep;typeof JSON.stringify!="function"&&(JSON.stringify=function(a,b,c){var d;gap="",indent="";if(typeof c=="number")for(d=0;d<c;d+=1)indent+=" ";else typeof c=="string"&&(indent=c);rep=b;if(!b||typeof b=="function"||typeof b=="object"&&typeof b.length=="number")return str("",{"":a});throw new Error("JSON.stringify")}),typeof JSON.parse!="function"&&(JSON.parse=function(text,reviver){function walk(a,b){var c,d,e=a[b];if(e&&typeof e=="object")for(c in e)Object.prototype.hasOwnProperty.call(e,c)&&(d=walk(e,c),d!==undefined?e[c]=d:delete e[c]);return reviver.call(a,b,e)}var j;text=String(text),cx.lastIndex=0,cx.test(text)&&(text=text.replace(cx,function(a){return"\\u"+("0000"+a.charCodeAt(0).toString(16)).slice(-4)}));if(/^[\],:{}\s]*$/.test(text.replace(/\\(?:["\\\/bfnrt]|u[0-9a-fA-F]{4})/g,"@").replace(/"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g,"]").replace(/(?:^|:|,)(?:\s*\[)+/g,""))){j=eval("("+text+")");return typeof reviver=="function"?walk({"":j},""):j}throw new SyntaxError("JSON.parse")})}()
+
+SockJS=function(){var a=document,b=window,c={},d=function(){};d.prototype.addEventListener=function(a,b){this._listeners||(this._listeners={}),a in this._listeners||(this._listeners[a]=[]);var d=this._listeners[a];c.arrIndexOf(d,b)===-1&&d.push(b);return},d.prototype.removeEventListener=function(a,b){if(!(this._listeners&&a in this._listeners))return;var d=this._listeners[a],e=c.arrIndexOf(d,b);if(e!==-1){d.length>1?this._listeners[a]=d.slice(0,e).concat(d.slice(e+1)):delete this._listeners[a];return}return},d.prototype.dispatchEvent=function(a){var b=a.type,c=Array.prototype.slice.call(arguments,0);this["on"+b]&&this["on"+b].apply(this,c);if(this._listeners&&b in this._listeners)for(var d=0;d<this._listeners[b].length;d++)this._listeners[b][d].apply(this,c)};var e=function(a,b){this.type=a;if(typeof b!="undefined")for(var c in b){if(!b.hasOwnProperty(c))continue;this[c]=b[c]}};e.prototype.toString=function(){var a=[];for(var b in this){if(!this.hasOwnProperty(b))continue;var c=this[b];typeof c=="function"&&(c="[function]"),a.push(b+"="+c)}return"SimpleEvent("+a.join(", ")+")"};var f=function(a){var b=this;b._events=a||[],b._listeners={}};f.prototype.emit=function(a){var b=this;b._verifyType(a);if(b._nuked)return;var c=Array.prototype.slice.call(arguments,1);b["on"+a]&&b["on"+a].apply(b,c);if(a in b._listeners)for(var d=0;d<b._listeners[a].length;d++)b._listeners[a][d].apply(b,c)},f.prototype.on=function(a,b){var c=this;c._verifyType(a);if(c._nuked)return;a in c._listeners||(c._listeners[a]=[]),c._listeners[a].push(b)},f.prototype._verifyType=function(a){var b=this;c.arrIndexOf(b._events,a)===-1&&c.log("Event "+JSON.stringify(a)+" not listed "+JSON.stringify(b._events)+" in "+b)},f.prototype.nuke=function(){var a=this;a._nuked=!0;for(var b=0;b<a._events.length;b++)delete a[a._events[b]];a._listeners={}};var g="abcdefghijklmnopqrstuvwxyz0123456789_";c.random_string=function(a,b){b=b||g.length;var c,d=[];for(c=0;c<a;c++)d.push(g.substr(Math.floor(Math.random()*b),1));return d.join("")},c.random_number=function(a){return Math.floor(Math.random()*a)},c.random_number_string=function(a){var b=(""+(a-1)).length,d=Array(b+1).join("0");return(d+c.random_number(a)).slice(-b)},c.getOrigin=function(a){a+="/";var b=a.split("/").slice(0,3);return b.join("/")},c.isSameOriginUrl=function(a,c){return c||(c=b.location.href),a.split("/").slice(0,3).join("/")===c.split("/").slice(0,3).join("/")},c.getParentDomain=function(a){if(/^[0-9.]*$/.test(a))return a;if(/^\[/.test(a))return a;if(!/[.]/.test(a))return a;var b=a.split(".").slice(1);return b.join(".")},c.objectExtend=function(a,b){for(var c in b)b.hasOwnProperty(c)&&(a[c]=b[c]);return a};var h="_jp";c.polluteGlobalNamespace=function(){h in b||(b[h]={})},c.closeFrame=function(a,b){return"c"+JSON.stringify([a,b])},c.userSetCode=function(a){return a===1e3||a>=3e3&&a<=4999},c.countRTO=function(a){var b;return a>100?b=3*a:b=a+200,b},c.log=function(){b.console&&console.log&&console.log.apply&&console.log.apply(console,arguments)},c.bind=function(a,b){return a.bind?a.bind(b):function(){return a.apply(b,arguments)}},c.flatUrl=function(a){return a.indexOf("?")===-1&&a.indexOf("#")===-1},c.amendUrl=function(b){var d=a.location;if(!b)throw new Error("Wrong url for SockJS");if(!c.flatUrl(b))throw new Error("Only basic urls are supported in SockJS");return b.indexOf("//")===0&&(b=d.protocol+b),b.indexOf("/")===0&&(b=d.protocol+"//"+d.host+b),b=b.replace(/[/]+$/,""),b},c.arrIndexOf=function(a,b){for(var c=0;c<a.length;c++)if(a[c]===b)return c;return-1},c.arrSkip=function(a,b){var d=c.arrIndexOf(a,b);if(d===-1)return a.slice();var e=a.slice(0,d);return e.concat(a.slice(d+1))},c.isArray=Array.isArray||function(a){return{}.toString.call(a).indexOf("Array")>=0},c.delay=function(a,b){return typeof a=="function"&&(b=a,a=0),setTimeout(b,a)};var i=/[\\\"\x00-\x1f\x7f-\x9f\u00ad\u0600-\u0604\u070f\u17b4\u17b5\u200c-\u200f\u2028-\u202f\u2060-\u206f\ufeff\ufff0-\uffff]/g,j={"\0":"\\u0000","\x01":"\\u0001","\x02":"\\u0002","\x03":"\\u0003","\x04":"\\u0004","\x05":"\\u0005","\x06":"\\u0006","\x07":"\\u0007","\b":"\\b","\t":"\\t","\n":"\\n","\x0b":"\\u000b","\f":"\\f","\r":"\\r","\x0e":"\\u000e","\x0f":"\\u000f","\x10":"\\u0010","\x11":"\\u0011","\x12":"\\u0012","\x13":"\\u0013","\x14":"\\u0014","\x15":"\\u0015","\x16":"\\u0016","\x17":"\\u0017","\x18":"\\u0018","\x19":"\\u0019","\x1a":"\\u001a","\x1b":"\\u001b","\x1c":"\\u001c","\x1d":"\\u001d","\x1e":"\\u001e","\x1f":"\\u001f",'"':'\\"',"\\":"\\\\","\x7f":"\\u007f","\x80":"\\u0080","\x81":"\\u0081","\x82":"\\u0082","\x83":"\\u0083","\x84":"\\u0084","\x85":"\\u0085","\x86":"\\u0086","\x87":"\\u0087","\x88":"\\u0088","\x89":"\\u0089","\x8a":"\\u008a","\x8b":"\\u008b","\x8c":"\\u008c","\x8d":"\\u008d","\x8e":"\\u008e","\x8f":"\\u008f","\x90":"\\u0090","\x91":"\\u0091","\x92":"\\u0092","\x93":"\\u0093","\x94":"\\u0094","\x95":"\\u0095","\x96":"\\u0096","\x97":"\\u0097","\x98":"\\u0098","\x99":"\\u0099","\x9a":"\\u009a","\x9b":"\\u009b","\x9c":"\\u009c","\x9d":"\\u009d","\x9e":"\\u009e","\x9f":"\\u009f","\xad":"\\u00ad","\u0600":"\\u0600","\u0601":"\\u0601","\u0602":"\\u0602","\u0603":"\\u0603","\u0604":"\\u0604","\u070f":"\\u070f","\u17b4":"\\u17b4","\u17b5":"\\u17b5","\u200c":"\\u200c","\u200d":"\\u200d","\u200e":"\\u200e","\u200f":"\\u200f","\u2028":"\\u2028","\u2029":"\\u2029","\u202a":"\\u202a","\u202b":"\\u202b","\u202c":"\\u202c","\u202d":"\\u202d","\u202e":"\\u202e","\u202f":"\\u202f","\u2060":"\\u2060","\u2061":"\\u2061","\u2062":"\\u2062","\u2063":"\\u2063","\u2064":"\\u2064","\u2065":"\\u2065","\u2066":"\\u2066","\u2067":"\\u2067","\u2068":"\\u2068","\u2069":"\\u2069","\u206a":"\\u206a","\u206b":"\\u206b","\u206c":"\\u206c","\u206d":"\\u206d","\u206e":"\\u206e","\u206f":"\\u206f","\ufeff":"\\ufeff","\ufff0":"\\ufff0","\ufff1":"\\ufff1","\ufff2":"\\ufff2","\ufff3":"\\ufff3","\ufff4":"\\ufff4","\ufff5":"\\ufff5","\ufff6":"\\ufff6","\ufff7":"\\ufff7","\ufff8":"\\ufff8","\ufff9":"\\ufff9","\ufffa":"\\ufffa","\ufffb":"\\ufffb","\ufffc":"\\ufffc","\ufffd":"\\ufffd","\ufffe":"\\ufffe","\uffff":"\\uffff"},k=/[\x00-\x1f\ud800-\udfff\ufffe\uffff\u0300-\u0333\u033d-\u0346\u034a-\u034c\u0350-\u0352\u0357-\u0358\u035c-\u0362\u0374\u037e\u0387\u0591-\u05af\u05c4\u0610-\u0617\u0653-\u0654\u0657-\u065b\u065d-\u065e\u06df-\u06e2\u06eb-\u06ec\u0730\u0732-\u0733\u0735-\u0736\u073a\u073d\u073f-\u0741\u0743\u0745\u0747\u07eb-\u07f1\u0951\u0958-\u095f\u09dc-\u09dd\u09df\u0a33\u0a36\u0a59-\u0a5b\u0a5e\u0b5c-\u0b5d\u0e38-\u0e39\u0f43\u0f4d\u0f52\u0f57\u0f5c\u0f69\u0f72-\u0f76\u0f78\u0f80-\u0f83\u0f93\u0f9d\u0fa2\u0fa7\u0fac\u0fb9\u1939-\u193a\u1a17\u1b6b\u1cda-\u1cdb\u1dc0-\u1dcf\u1dfc\u1dfe\u1f71\u1f73\u1f75\u1f77\u1f79\u1f7b\u1f7d\u1fbb\u1fbe\u1fc9\u1fcb\u1fd3\u1fdb\u1fe3\u1feb\u1fee-\u1fef\u1ff9\u1ffb\u1ffd\u2000-\u2001\u20d0-\u20d1\u20d4-\u20d7\u20e7-\u20e9\u2126\u212a-\u212b\u2329-\u232a\u2adc\u302b-\u302c\uaab2-\uaab3\uf900-\ufa0d\ufa10\ufa12\ufa15-\ufa1e\ufa20\ufa22\ufa25-\ufa26\ufa2a-\ufa2d\ufa30-\ufa6d\ufa70-\ufad9\ufb1d\ufb1f\ufb2a-\ufb36\ufb38-\ufb3c\ufb3e\ufb40-\ufb41\ufb43-\ufb44\ufb46-\ufb4e\ufff0-\uffff]/g,l,m=JSON&&JSON.stringify||function(a){return i.lastIndex=0,i.test(a)&&(a=a.replace(i,function(a){return j[a]})),'"'+a+'"'},n=function(a){var b,c={},d=[];for(b=0;b<65536;b++)d.push(String.fromCharCode(b));return a.lastIndex=0,d.join("").replace(a,function(a){return c[a]="\\u"+("0000"+a.charCodeAt(0).toString(16)).slice(-4),""}),a.lastIndex=0,c};c.quote=function(a){var b=m(a);return k.lastIndex=0,k.test(b)?(l||(l=n(k)),b.replace(k,function(a){return l[a]})):b};var o=["websocket","xdr-streaming","xhr-streaming","iframe-eventsource","iframe-htmlfile","xdr-polling","xhr-polling","iframe-xhr-polling","jsonp-polling"];c.probeProtocols=function(){var a={};for(var b=0;b<o.length;b++){var c=o[b];a[c]=y[c]&&y[c].enabled()}return a},c.detectProtocols=function(a,b,c){var d={},e=[];b||(b=o);for(var f=0;f<b.length;f++){var g=b[f];d[g]=a[g]}var h=function(a){var b=a.shift();d[b]?e.push(b):a.length>0&&h(a)};return c.websocket!==!1&&h(["websocket"]),d["xhr-streaming"]&&!c.null_origin?e.push("xhr-streaming"):d["xdr-streaming"]&&!c.cookie_needed&&!c.null_origin?e.push("xdr-streaming"):h(["iframe-eventsource","iframe-htmlfile"]),d["xhr-polling"]&&!c.null_origin?e.push("xhr-polling"):d["xdr-polling"]&&!c.cookie_needed&&!c.null_origin?e.push("xdr-polling"):h(["iframe-xhr-polling","jsonp-polling"]),e};var p="_sockjs_global";c.createHook=function(){var a="a"+c.random_string(8);if(!(p in b)){var d={};b[p]=function(a){return a in d||(d[a]={id:a,del:function(){delete d[a]}}),d[a]}}return b[p](a)},c.attachMessage=function(a){c.attachEvent("message",a)},c.attachEvent=function(c,d){typeof b.addEventListener!="undefined"?b.addEventListener(c,d,!1):(a.attachEvent("on"+c,d),b.attachEvent("on"+c,d))},c.detachMessage=function(a){c.detachEvent("message",a)},c.detachEvent=function(c,d){typeof b.addEventListener!="undefined"?b.removeEventListener(c,d,!1):(a.detachEvent("on"+c,d),b.detachEvent("on"+c,d))};var q={},r=!1,s=function(){for(var a in q)q[a](),delete q[a]},t=function(){if(r)return;r=!0,s()};c.attachEvent("unload",t),c.unload_add=function(a){var b=c.random_string(8);return q[b]=a,r&&c.delay(s),b},c.unload_del=function(a){a in q&&delete q[a]},c.createIframe=function(b,d){var e=a.createElement("iframe"),f,g,h=function(){clearTimeout(f);try{e.onload=null}catch(a){}e.onerror=null},i=function(){e&&(h(),setTimeout(function(){e&&e.parentNode.removeChild(e),e=null},0),c.unload_del(g))},j=function(a){e&&(i(),d(a))},k=function(a,b){try{e&&e.contentWindow&&e.contentWindow.postMessage(a,b)}catch(c){}};return e.src=b,e.style.display="none",e.style.position="absolute",e.onerror=function(){j("onerror")},e.onload=function(){clearTimeout(f),f=setTimeout(function(){j("onload timeout")},2e3)},a.body.appendChild(e),f=setTimeout(function(){j("timeout")},15e3),g=c.unload_add(i),{post:k,cleanup:i,loaded:h}},c.createHtmlfile=function(a,d){var e=new ActiveXObject("htmlfile"),f,g,i,j=function(){clearTimeout(f)},k=function(){e&&(j(),c.unload_del(g),i.parentNode.removeChild(i),i=e=null,CollectGarbage())},l=function(a){e&&(k(),d(a))},m=function(a,b){try{i&&i.contentWindow&&i.contentWindow.postMessage(a,b)}catch(c){}};e.open(),e.write('<html><script>document.domain="'+document.domain+'";'+"</s"+"cript></html>"),e.close(),e.parentWindow[h]=b[h];var n=e.createElement("div");return e.body.appendChild(n),i=e.createElement("iframe"),n.appendChild(i),i.src=a,f=setTimeout(function(){l("timeout")},15e3),g=c.unload_add(k),{post:m,cleanup:k,loaded:j}};var u=function(){};u.prototype=new f(["chunk","finish"]),u.prototype._start=function(a,d,e,f){var g=this;try{g.xhr=new XMLHttpRequest}catch(h){}if(!g.xhr)try{g.xhr=new b.ActiveXObject("Microsoft.XMLHTTP")}catch(h){}if(b.ActiveXObject||b.XDomainRequest)d+=(d.indexOf("?")===-1?"?":"&")+"t="+ +(new Date);g.unload_ref=c.unload_add(function(){g._cleanup(!0)});try{g.xhr.open(a,d,!0)}catch(i){g.emit("finish",0,""),g._cleanup();return}if(!f||!f.no_credentials)g.xhr.withCredentials="true";if(f&&f.headers)for(var j in f.headers)g.xhr.setRequestHeader(j,f.headers[j]);g.xhr.onreadystatechange=function(){if(g.xhr){var a=g.xhr;switch(a.readyState){case 3:try{var b=a.status,c=a.responseText}catch(a){}b===1223&&(b=204),c&&c.length>0&&g.emit("chunk",b,c);break;case 4:var b=a.status;b===1223&&(b=204),g.emit("finish",b,a.responseText),g._cleanup(!1)}}},g.xhr.send(e)},u.prototype._cleanup=function(a){var b=this;if(!b.xhr)return;c.unload_del(b.unload_ref),b.xhr.onreadystatechange=function(){};if(a)try{b.xhr.abort()}catch(d){}b.unload_ref=b.xhr=null},u.prototype.close=function(){var a=this;a.nuke(),a._cleanup(!0)};var v=c.XHRCorsObject=function(){var a=this,b=arguments;c.delay(function(){a._start.apply(a,b)})};v.prototype=new u;var w=c.XHRLocalObject=function(a,b,d){var e=this;c.delay(function(){e._start(a,b,d,{no_credentials:!0})})};w.prototype=new u;var x=c.XDRObject=function(a,b,d){var e=this;c.delay(function(){e._start(a,b,d)})};x.prototype=new f(["chunk","finish"]),x.prototype._start=function(a,b,d){var e=this,f=new XDomainRequest;b+=(b.indexOf("?")===-1?"?":"&")+"t="+ +(new Date);var g=f.ontimeout=f.onerror=function(){e.emit("finish",0,""),e._cleanup(!1)};f.onprogress=function(){e.emit("chunk",200,f.responseText)},f.onload=function(){e.emit("finish",200,f.responseText),e._cleanup(!1)},e.xdr=f,e.unload_ref=c.unload_add(function(){e._cleanup(!0)});try{e.xdr.open(a,b),e.xdr.send(d)}catch(h){g()}},x.prototype._cleanup=function(a){var b=this;if(!b.xdr)return;c.unload_del(b.unload_ref),b.xdr.ontimeout=b.xdr.onerror=b.xdr.onprogress=b.xdr.onload=null;if(a)try{b.xdr.abort()}catch(d){}b.unload_ref=b.xdr=null},x.prototype.close=function(){var a=this;a.nuke(),a._cleanup(!0)},c.isXHRCorsCapable=function(){return b.XMLHttpRequest&&"withCredentials"in new XMLHttpRequest?1:b.XDomainRequest&&a.domain?2:L.enabled()?3:4};var y=function(a,d,e){if(this===b)return new y(a,d,e);var f=this,g;f._options={devel:!1,debug:!1,protocols_whitelist:[],info:undefined,rtt:undefined},e&&c.objectExtend(f._options,e),f._base_url=c.amendUrl(a),f._server=f._options.server||c.random_number_string(1e3),f._options.protocols_whitelist&&f._options.protocols_whitelist.length?g=f._options.protocols_whitelist:(typeof d=="string"&&d.length>0?g=[d]:c.isArray(d)?g=d:g=null,g&&f._debug('Deprecated API: Use "protocols_whitelist" option instead of supplying protocol list as a second parameter to SockJS constructor.')),f._protocols=[],f.protocol=null,f.readyState=y.CONNECTING,f._ir=S(f._base_url),f._ir.onfinish=function(a,b){f._ir=null,a?(f._options.info&&(a=c.objectExtend(a,f._options.info)),f._options.rtt&&(b=f._options.rtt),f._applyInfo(a,b,g),f._didClose()):f._didClose(1002,"Can't connect to server",!0)}};y.prototype=new d,y.version="0.3.4",y.CONNECTING=0,y.OPEN=1,y.CLOSING=2,y.CLOSED=3,y.prototype._debug=function(){this._options.debug&&c.log.apply(c,arguments)},y.prototype._dispatchOpen=function(){var a=this;a.readyState===y.CONNECTING?(a._transport_tref&&(clearTimeout(a._transport_tref),a._transport_tref=null),a.readyState=y.OPEN,a.dispatchEvent(new e("open"))):a._didClose(1006,"Server lost session")},y.prototype._dispatchMessage=function(a){var b=this;if(b.readyState!==y.OPEN)return;b.dispatchEvent(new e("message",{data:a}))},y.prototype._dispatchHeartbeat=function(a){var b=this;if(b.readyState!==y.OPEN)return;b.dispatchEvent(new e("heartbeat",{}))},y.prototype._didClose=function(a,b,d){var f=this;if(f.readyState!==y.CONNECTING&&f.readyState!==y.OPEN&&f.readyState!==y.CLOSING)throw new Error("INVALID_STATE_ERR");f._ir&&(f._ir.nuke(),f._ir=null),f._transport&&(f._transport.doCleanup(),f._transport=null);var g=new e("close",{code:a,reason:b,wasClean:c.userSetCode(a)});if(!c.userSetCode(a)&&f.readyState===y.CONNECTING&&!d){if(f._try_next_protocol(g))return;g=new e("close",{code:2e3,reason:"All transports failed",wasClean:!1,last_event:g})}f.readyState=y.CLOSED,c.delay(function(){f.dispatchEvent(g)})},y.prototype._didMessage=function(a){var b=this,c=a.slice(0,1);switch(c){case"o":b._dispatchOpen();break;case"a":var d=JSON.parse(a.slice(1)||"[]");for(var e=0;e<d.length;e++)b._dispatchMessage(d[e]);break;case"m":var d=JSON.parse(a.slice(1)||"null");b._dispatchMessage(d);break;case"c":var d=JSON.parse(a.slice(1)||"[]");b._didClose(d[0],d[1]);break;case"h":b._dispatchHeartbeat()}},y.prototype._try_next_protocol=function(b){var d=this;d.protocol&&(d._debug("Closed transport:",d.protocol,""+b),d.protocol=null),d._transport_tref&&(clearTimeout(d._transport_tref),d._transport_tref=null);for(;;){var e=d.protocol=d._protocols.shift();if(!e)return!1;if(y[e]&&y[e].need_body===!0&&(!a.body||typeof a.readyState!="undefined"&&a.readyState!=="complete"))return d._protocols.unshift(e),d.protocol="waiting-for-load",c.attachEvent("load",function(){d._try_next_protocol()}),!0;if(!!y[e]&&!!y[e].enabled(d._options)){var f=y[e].roundTrips||1,g=(d._options.rto||0)*f||5e3;d._transport_tref=c.delay(g,function(){d.readyState===y.CONNECTING&&d._didClose(2007,"Transport timeouted")});var h=c.random_string(8),i=d._base_url+"/"+d._server+"/"+h;return d._debug("Opening transport:",e," url:"+i," RTO:"+d._options.rto),d._transport=new y[e](d,i,d._base_url),!0}d._debug("Skipping transport:",e)}},y.prototype.close=function(a,b){var d=this;if(a&&!c.userSetCode(a))throw new Error("INVALID_ACCESS_ERR");return d.readyState!==y.CONNECTING&&d.readyState!==y.OPEN?!1:(d.readyState=y.CLOSING,d._didClose(a||1e3,b||"Normal closure"),!0)},y.prototype.send=function(a){var b=this;if(b.readyState===y.CONNECTING)throw new Error("INVALID_STATE_ERR");return b.readyState===y.OPEN&&b._transport.doSend(c.quote(""+a)),!0},y.prototype._applyInfo=function(b,d,e){var f=this;f._options.info=b,f._options.rtt=d,f._options.rto=c.countRTO(d),f._options.info.null_origin=!a.domain;var g=c.probeProtocols();f._protocols=c.detectProtocols(g,e,b)};var z=y.websocket=function(a,d){var e=this,f=d+"/websocket";f.slice(0,5)==="https"?f="wss"+f.slice(5):f="ws"+f.slice(4),e.ri=a,e.url=f;var g=b.WebSocket||b.MozWebSocket;e.ws=new g(e.url),e.ws.onmessage=function(a){e.ri._didMessage(a.data)},e.unload_ref=c.unload_add(function(){e.ws.close()}),e.ws.onclose=function(){e.ri._didMessage(c.closeFrame(1006,"WebSocket connection broken"))}};z.prototype.doSend=function(a){this.ws.send("["+a+"]")},z.prototype.doCleanup=function(){var a=this,b=a.ws;b&&(b.onmessage=b.onclose=null,b.close(),c.unload_del(a.unload_ref),a.unload_ref=a.ri=a.ws=null)},z.enabled=function(){return!!b.WebSocket||!!b.MozWebSocket},z.roundTrips=2;var A=function(){};A.prototype.send_constructor=function(a){var b=this;b.send_buffer=[],b.sender=a},A.prototype.doSend=function(a){var b=this;b.send_buffer.push(a),b.send_stop||b.send_schedule()},A.prototype.send_schedule_wait=function(){var a=this,b;a.send_stop=function(){a.send_stop=null,clearTimeout(b)},b=c.delay(25,function(){a.send_stop=null,a.send_schedule()})},A.prototype.send_schedule=function(){var a=this;if(a.send_buffer.length>0){var b="["+a.send_buffer.join(",")+"]";a.send_stop=a.sender(a.trans_url,b,function(b,c){a.send_stop=null,b===!1?a.ri._didClose(1006,"Sending error "+c):a.send_schedule_wait()}),a.send_buffer=[]}},A.prototype.send_destructor=function(){var a=this;a._send_stop&&a._send_stop(),a._send_stop=null};var B=function(b,d,e){var f=this;if(!("_send_form"in f)){var g=f._send_form=a.createElement("form"),h=f._send_area=a.createElement("textarea");h.name="d",g.style.display="none",g.style.position="absolute",g.method="POST",g.enctype="application/x-www-form-urlencoded",g.acceptCharset="UTF-8",g.appendChild(h),a.body.appendChild(g)}var g=f._send_form,h=f._send_area,i="a"+c.random_string(8);g.target=i,g.action=b+"/jsonp_send?i="+i;var j;try{j=a.createElement('<iframe name="'+i+'">')}catch(k){j=a.createElement("iframe"),j.name=i}j.id=i,g.appendChild(j),j.style.display="none";try{h.value=d}catch(l){c.log("Your browser is seriously broken. Go home! "+l.message)}g.submit();var m=function(a){if(!j.onerror)return;j.onreadystatechange=j.onerror=j.onload=null,c.delay(500,function(){j.parentNode.removeChild(j),j=null}),h.value="",e(!0)};return j.onerror=j.onload=m,j.onreadystatechange=function(a){j.readyState=="complete"&&m()},m},C=function(a){return function(b,c,d){var e=new a("POST",b+"/xhr_send",c);return e.onfinish=function(a,b){d(a===200||a===204,"http status "+a)},function(a){d(!1,a)}}},D=function(b,d){var e,f=a.createElement("script"),g,h=function(a){g&&(g.parentNode.removeChild(g),g=null),f&&(clearTimeout(e),f.parentNode.removeChild(f),f.onreadystatechange=f.onerror=f.onload=f.onclick=null,f=null,d(a),d=null)},i=!1,j=null;f.id="a"+c.random_string(8),f.src=b,f.type="text/javascript",f.charset="UTF-8",f.onerror=function(a){j||(j=setTimeout(function(){i||h(c.closeFrame(1006,"JSONP script loaded abnormally (onerror)"))},1e3))},f.onload=function(a){h(c.closeFrame(1006,"JSONP script loaded abnormally (onload)"))},f.onreadystatechange=function(a){if(/loaded|closed/.test(f.readyState)){if(f&&f.htmlFor&&f.onclick){i=!0;try{f.onclick()}catch(b){}}f&&h(c.closeFrame(1006,"JSONP script loaded abnormally (onreadystatechange)"))}};if(typeof f.async=="undefined"&&a.attachEvent)if(!/opera/i.test(navigator.userAgent)){try{f.htmlFor=f.id,f.event="onclick"}catch(k){}f.async=!0}else g=a.createElement("script"),g.text="try{var a = document.getElementById('"+f.id+"'); if(a)a.onerror();}catch(x){};",f.async=g.async=!1;typeof f.async!="undefined"&&(f.async=!0),e=setTimeout(function(){h(c.closeFrame(1006,"JSONP script loaded abnormally (timeout)"))},35e3);var l=a.getElementsByTagName("head")[0];return l.insertBefore(f,l.firstChild),g&&l.insertBefore(g,l.firstChild),h},E=y["jsonp-polling"]=function(a,b){c.polluteGlobalNamespace();var d=this;d.ri=a,d.trans_url=b,d.send_constructor(B),d._schedule_recv()};E.prototype=new A,E.prototype._schedule_recv=function(){var a=this,b=function(b){a._recv_stop=null,b&&(a._is_closing||a.ri._didMessage(b)),a._is_closing||a._schedule_recv()};a._recv_stop=F(a.trans_url+"/jsonp",D,b)},E.enabled=function(){return!0},E.need_body=!0,E.prototype.doCleanup=function(){var a=this;a._is_closing=!0,a._recv_stop&&a._recv_stop(),a.ri=a._recv_stop=null,a.send_destructor()};var F=function(a,d,e){var f="a"+c.random_string(6),g=a+"?c="+escape(h+"."+f),i=0,j=function(a){switch(i){case 0:delete b[h][f],e(a);break;case 1:e(a),i=2;break;case 2:delete b[h][f]}},k=d(g,j);b[h][f]=k;var l=function(){b[h][f]&&(i=1,b[h][f](c.closeFrame(1e3,"JSONP user aborted read")))};return l},G=function(){};G.prototype=new A,G.prototype.run=function(a,b,c,d,e){var f=this;f.ri=a,f.trans_url=b,f.send_constructor(C(e)),f.poll=new $(a,d,b+c,e)},G.prototype.doCleanup=function(){var a=this;a.poll&&(a.poll.abort(),a.poll=null)};var H=y["xhr-streaming"]=function(a,b){this.run(a,b,"/xhr_streaming",bd,c.XHRCorsObject)};H.prototype=new G,H.enabled=function(){return b.XMLHttpRequest&&"withCredentials"in new XMLHttpRequest&&!/opera/i.test(navigator.userAgent)},H.roundTrips=2,H.need_body=!0;var I=y["xdr-streaming"]=function(a,b){this.run(a,b,"/xhr_streaming",bd,c.XDRObject)};I.prototype=new G,I.enabled=function(){return!!b.XDomainRequest},I.roundTrips=2;var J=y["xhr-polling"]=function(a,b){this.run(a,b,"/xhr",bd,c.XHRCorsObject)};J.prototype=new G,J.enabled=H.enabled,J.roundTrips=2;var K=y["xdr-polling"]=function(a,b){this.run(a,b,"/xhr",bd,c.XDRObject)};K.prototype=new G,K.enabled=I.enabled,K.roundTrips=2;var L=function(){};L.prototype.i_constructor=function(a,b,d){var e=this;e.ri=a,e.origin=c.getOrigin(d),e.base_url=d,e.trans_url=b;var f=d+"/iframe.html";e.ri._options.devel&&(f+="?t="+ +(new Date)),e.window_id=c.random_string(8),f+="#"+e.window_id,e.iframeObj=c.createIframe(f,function(a){e.ri._didClose(1006,"Unable to load an iframe ("+a+")")}),e.onmessage_cb=c.bind(e.onmessage,e),c.attachMessage(e.onmessage_cb)},L.prototype.doCleanup=function(){var a=this;if(a.iframeObj){c.detachMessage(a.onmessage_cb);try{a.iframeObj.iframe.contentWindow&&a.postMessage("c")}catch(b){}a.iframeObj.cleanup(),a.iframeObj=null,a.onmessage_cb=a.iframeObj=null}},L.prototype.onmessage=function(a){var b=this;if(a.origin!==b.origin)return;var c=a.data.slice(0,8),d=a.data.slice(8,9),e=a.data.slice(9);if(c!==b.window_id)return;switch(d){case"s":b.iframeObj.loaded(),b.postMessage("s",JSON.stringify([y.version,b.protocol,b.trans_url,b.base_url]));break;case"t":b.ri._didMessage(e)}},L.prototype.postMessage=function(a,b){var c=this;c.iframeObj.post(c.window_id+a+(b||""),c.origin)},L.prototype.doSend=function(a){this.postMessage("m",a)},L.enabled=function(){var a=navigator&&navigator.userAgent&&navigator.userAgent.indexOf("Konqueror")!==-1;return(typeof b.postMessage=="function"||typeof b.postMessage=="object")&&!a};var M,N=function(a,d){parent!==b?parent.postMessage(M+a+(d||""),"*"):c.log("Can't postMessage, no parent window.",a,d)},O=function(){};O.prototype._didClose=function(a,b){N("t",c.closeFrame(a,b))},O.prototype._didMessage=function(a){N("t",a)},O.prototype._doSend=function(a){this._transport.doSend(a)},O.prototype._doCleanup=function(){this._transport.doCleanup()},c.parent_origin=undefined,y.bootstrap_iframe=function(){var d;M=a.location.hash.slice(1);var e=function(a){if(a.source!==parent)return;typeof c.parent_origin=="undefined"&&(c.parent_origin=a.origin);if(a.origin!==c.parent_origin)return;var e=a.data.slice(0,8),f=a.data.slice(8,9),g=a.data.slice(9);if(e!==M)return;switch(f){case"s":var h=JSON.parse(g),i=h[0],j=h[1],k=h[2],l=h[3];i!==y.version&&c.log('Incompatibile SockJS! Main site uses: "'+i+'", the iframe:'+' "'+y.version+'".');if(!c.flatUrl(k)||!c.flatUrl(l)){c.log("Only basic urls are supported in SockJS");return}if(!c.isSameOriginUrl(k)||!c.isSameOriginUrl(l)){c.log("Can't connect to different domain from within an iframe. ("+JSON.stringify([b.location.href,k,l])+")");return}d=new O,d._transport=new O[j](d,k,l);break;case"m":d._doSend(g);break;case"c":d&&d._doCleanup(),d=null}};c.attachMessage(e),N("s")};var P=function(a,b){var d=this;c.delay(function(){d.doXhr(a,b)})};P.prototype=new f(["finish"]),P.prototype.doXhr=function(a,b){var d=this,e=(new Date).getTime(),f=new b("GET",a+"/info"),g=c.delay(8e3,function(){f.ontimeout()});f.onfinish=function(a,b){clearTimeout(g),g=null;if(a===200){var c=(new Date).getTime()-e,f=JSON.parse(b);typeof f!="object"&&(f={}),d.emit("finish",f,c)}else d.emit("finish")},f.ontimeout=function(){f.close(),d.emit("finish")}};var Q=function(b){var d=this,e=function(){var a=new L;a.protocol="w-iframe-info-receiver";var c=function(b){if(typeof b=="string"&&b.substr(0,1)==="m"){var c=JSON.parse(b.substr(1)),e=c[0],f=c[1];d.emit("finish",e,f)}else d.emit("finish");a.doCleanup(),a=null},e={_options:{},_didClose:c,_didMessage:c};a.i_constructor(e,b,b)};a.body?e():c.attachEvent("load",e)};Q.prototype=new f(["finish"]);var R=function(){var a=this;c.delay(function(){a.emit("finish",{},2e3)})};R.prototype=new f(["finish"]);var S=function(a){if(c.isSameOriginUrl(a))return new P(a,c.XHRLocalObject);switch(c.isXHRCorsCapable()){case 1:return new P(a,c.XHRLocalObject);case 2:return new P(a,c.XDRObject);case 3:return new Q(a);default:return new R}},T=O["w-iframe-info-receiver"]=function(a,b,d){var e=new P(d,c.XHRLocalObject);e.onfinish=function(b,c){a._didMessage("m"+JSON.stringify([b,c])),a._didClose()}};T.prototype.doCleanup=function(){};var U=y["iframe-eventsource"]=function(){var a=this;a.protocol="w-iframe-eventsource",a.i_constructor.apply(a,arguments)};U.prototype=new L,U.enabled=function(){return"EventSource"in b&&L.enabled()},U.need_body=!0,U.roundTrips=3;var V=O["w-iframe-eventsource"]=function(a,b){this.run(a,b,"/eventsource",_,c.XHRLocalObject)};V.prototype=new G;var W=y["iframe-xhr-polling"]=function(){var a=this;a.protocol="w-iframe-xhr-polling",a.i_constructor.apply(a,arguments)};W.prototype=new L,W.enabled=function(){return b.XMLHttpRequest&&L.enabled()},W.need_body=!0,W.roundTrips=3;var X=O["w-iframe-xhr-polling"]=function(a,b){this.run(a,b,"/xhr",bd,c.XHRLocalObject)};X.prototype=new G;var Y=y["iframe-htmlfile"]=function(){var a=this;a.protocol="w-iframe-htmlfile",a.i_constructor.apply(a,arguments)};Y.prototype=new L,Y.enabled=function(){return L.enabled()},Y.need_body=!0,Y.roundTrips=3;var Z=O["w-iframe-htmlfile"]=function(a,b){this.run(a,b,"/htmlfile",bc,c.XHRLocalObject)};Z.prototype=new G;var $=function(a,b,c,d){var e=this;e.ri=a,e.Receiver=b,e.recv_url=c,e.AjaxObject=d,e._scheduleRecv()};$.prototype._scheduleRecv=function(){var a=this,b=a.poll=new a.Receiver(a.recv_url,a.AjaxObject),c=0;b.onmessage=function(b){c+=1,a.ri._didMessage(b.data)},b.onclose=function(c){a.poll=b=b.onmessage=b.onclose=null,a.poll_is_closing||(c.reason==="permanent"?a.ri._didClose(1006,"Polling error ("+c.reason+")"):a._scheduleRecv())}},$.prototype.abort=function(){var a=this;a.poll_is_closing=!0,a.poll&&a.poll.abort()};var _=function(a){var b=this,d=new EventSource(a);d.onmessage=function(a){b.dispatchEvent(new e("message",{data:unescape(a.data)}))},b.es_close=d.onerror=function(a,f){var g=f?"user":d.readyState!==2?"network":"permanent";b.es_close=d.onmessage=d.onerror=null,d.close(),d=null,c.delay(200,function(){b.dispatchEvent(new e("close",{reason:g}))})}};_.prototype=new d,_.prototype.abort=function(){var a=this;a.es_close&&a.es_close({},!0)};var ba,bb=function(){if(ba===undefined)if("ActiveXObject"in b)try{ba=!!(new ActiveXObject("htmlfile"))}catch(a){}else ba=!1;return ba},bc=function(a){var d=this;c.polluteGlobalNamespace(),d.id="a"+c.random_string(6,26),a+=(a.indexOf("?")===-1?"?":"&")+"c="+escape(h+"."+d.id);var f=bb()?c.createHtmlfile:c.createIframe,g;b[h][d.id]={start:function(){g.loaded()},message:function(a){d.dispatchEvent(new e("message",{data:a}))},stop:function(){d.iframe_close({},"network")}},d.iframe_close=function(a,c){g.cleanup(),d.iframe_close=g=null,delete b[h][d.id],d.dispatchEvent(new e("close",{reason:c}))},g=f(a,function(a){d.iframe_close({},"permanent")})};bc.prototype=new d,bc.prototype.abort=function(){var a=this;a.iframe_close&&a.iframe_close({},"user")};var bd=function(a,b){var c=this,d=0;c.xo=new b("POST",a,null),c.xo.onchunk=function(a,b){if(a!==200)return;for(;;){var f=b.slice(d),g=f.indexOf("\n");if(g===-1)break;d+=g+1;var h=f.slice(0,g);c.dispatchEvent(new e("message",{data:h}))}},c.xo.onfinish=function(a,b){c.xo.onchunk(a,b),c.xo=null;var d=a===200?"network":"permanent";c.dispatchEvent(new e("close",{reason:d}))}};return bd.prototype=new d,bd.prototype.abort=function(){var a=this;a.xo&&(a.xo.close(),a.dispatchEvent(new e("close",{reason:"user"})),a.xo=null)},y.getUtils=function(){return c},y.getIframeTransport=function(){return L},y}(),"_sockjs_onload"in window&&setTimeout(_sockjs_onload,1),typeof define=="function"&&define.amd&&define("sockjs",[],function(){return SockJS})
diff --git a/webchat/public/sockjs_client_transport.js b/webchat/public/sockjs_client_transport.js
new file mode 100644
index 00000000..a7b76af3
--- /dev/null
+++ b/webchat/public/sockjs_client_transport.js
@@ -0,0 +1,25 @@
+
+function make_sockjs_client_transport (sock) {
+ var transport = {}
+
+ sock.onmessage = function (data) {
+ console.log('sockjs parse', data)
+ try {
+ var message = JSON.parse(data.data)
+ } catch (error) {
+ return console.log('error', error)
+ }
+ transport.onmessage(message)
+ }
+
+ transport.send = function (message) {
+ try {
+ var data = JSON.stringify(message)
+ } catch (error) {
+ return console.log('sockjs transport send error:', error)
+ }
+ sock.send(data)
+ }
+
+ return transport
+}
diff --git a/webchat/sockjs_server_connection_transport.js b/webchat/sockjs_server_connection_transport.js
new file mode 100644
index 00000000..6f68b955
--- /dev/null
+++ b/webchat/sockjs_server_connection_transport.js
@@ -0,0 +1,26 @@
+
+module.exports = function make_sockjs_server_connection_transport (connection) {
+ var transport = {}
+
+ connection.on('data', function (data) {
+ try {
+ var message = JSON.parse(data)
+ } catch (error) {
+ return console.log('error', error)
+ }
+ transport.onmessage(message)
+ })
+ connection.on('close', function () {
+ })
+
+ transport.send = function (message) {
+ try {
+ var data = JSON.stringify(message)
+ } catch (error) {
+ return console.log('sockjs transport send error:', error)
+ }
+ connection.write(data)
+ }
+
+ return transport
+}
[cgit] Unable to lock slot /tmp/cgit/f8300000.lock: No such file or directory (2)