From 3bde363deb76c07608edef688dd4e3f2b28e60d0 Mon Sep 17 00:00:00 2001 From: Vincent Le Gallic Date: Wed, 8 May 2013 05:49:55 +0200 Subject: [PATCH] =?UTF-8?q?Parce=20que=20=C2=AB=C3=87a=20peut=20toujours?= =?UTF-8?q?=20servir=C2=BB=E2=84=A2=20et=20que=20de=20toutes=20fa=C3=A7ons?= =?UTF-8?q?=20il=20y=20en=20a=20d=C3=A9j=C3=A0=20des=20bouts=20qui=20sont?= =?UTF-8?q?=20dans=20le=20d=C3=A9p=C3=B4t=20et=20que=20c'est=20chiant=20de?= =?UTF-8?q?=20git=20add=20-f.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Et puis bon, ça fait que 3Mo --- archive/archives/E-mail_all | 11 + archive/archives/MiroirConfig | 7 + archive/archives/MiroirFWall | 8 + archive/archives/SMBMessage | 2 + archive/archives/analyse.pl | 425 ++++ archive/archives/analyse_komaz/analyse.cron | 84 + archive/archives/analyse_komaz/autodisconnect | 215 ++ archive/archives/analyse_komaz/exempts.py | 42 + archive/archives/analyse_komaz/flood_scan.awk | 28 + .../archives/analyse_komaz/keys/reload_squid | 12 + .../archives/analyse_komaz/keys/synchro_virus | 12 + archive/archives/analyse_komaz/nacct.py | 572 +++++ archive/archives/analyse_komaz/rpc_scan.awk | 29 + archive/archives/analyse_komaz/virus_scan.sh | 240 ++ archive/archives/arpanoid | 93 + archive/archives/arpanoid-daily | 17 + archive/archives/arpanoid-frequently | 2 + archive/archives/auto-claque | 21 + archive/archives/beastie.c | 186 ++ archive/archives/cdecode | 52 + archive/archives/cencode | 53 + archive/archives/chmodwww | 3 + archive/archives/claque-interfaces | 26 + .../archives/configure_bornes_installparty | 144 ++ archive/archives/cvsweb/commit-news.py | 97 + archive/archives/cvsweb/update.sh | 19 + archive/archives/fan-speed | 16 + archive/archives/mailCRANS | Bin 0 -> 12698 bytes archive/archives/mailCRANS.c | 280 +++ archive/archives/mailvirus | 21 + archive/archives/netrestart | 7 + archive/archives/news-cancel | 128 + archive/archives/pop3s-restart | 7 + archive/archives/redpopup | 9 + archive/archives/redpopup.py | 76 + archive/archives/restart-all | 12 + archive/archives/save-etc | 15 + archive/archives/sendmail-vit-il | 24 + archive/archives/snmp/Des5200.mib | 1277 ++++++++++ archive/archives/snmp/iog-crans | 804 +++++++ archive/archives/spamassassin-anti-block | 11 + archive/archives/squid-vit-il | 26 + archive/archives/supers/apt-get | 19 + archive/archives/supers/apt-getinstall | 13 + archive/archives/supers/apt-getupgrade | 14 + archive/archives/supers/aptitude | 19 + archive/archives/supers/chowncore | 20 + archive/archives/supers/dpkg | 19 + archive/archives/supers/etccommit | 30 + archive/archives/supers/extendPath | 19 + archive/archives/supers/hide/less | 21 + archive/archives/supers/id/apache-ssl | 25 + archive/archives/supers/id/arp | 25 + archive/archives/supers/id/arpd | 25 + archive/archives/supers/id/arpwatch | 25 + archive/archives/supers/id/bind | 25 + archive/archives/supers/id/bootmisc.sh | 25 + archive/archives/supers/id/checkfs.sh | 25 + archive/archives/supers/id/checkroot.sh | 25 + .../archives/supers/id/console-screen.kbd.sh | 25 + archive/archives/supers/id/console-screen.sh | 25 + archive/archives/supers/id/cron | 25 + archive/archives/supers/id/cucipop | 25 + archive/archives/supers/id/devpts.sh | 25 + archive/archives/supers/id/devpts.sh.dpkg-old | 25 + archive/archives/supers/id/dhcp | 25 + archive/archives/supers/id/dhcp.dpkg-dist | 25 + archive/archives/supers/id/dns-clean | 25 + archive/archives/supers/id/exim | 25 + archive/archives/supers/id/firewall | 25 + archive/archives/supers/id/gnu-pop3d | 25 + archive/archives/supers/id/halt | 25 + archive/archives/supers/id/hdSettings | 25 + archive/archives/supers/id/hostname.sh | 25 + archive/archives/supers/id/hwclock.sh | 25 + archive/archives/supers/id/inetd | 25 + archive/archives/supers/id/inn2 | 25 + archive/archives/supers/id/isapnp | 25 + archive/archives/supers/id/kerneld | 25 + archive/archives/supers/id/keymaps-lct.sh | 25 + archive/archives/supers/id/keymaps.sh | 25 + archive/archives/supers/id/logoutd | 25 + archive/archives/supers/id/lpd | 25 + archive/archives/supers/id/makedev | 25 + archive/archives/supers/id/modutils | 25 + archive/archives/supers/id/mountall.sh | 25 + archive/archives/supers/id/mountnfs.sh | 25 + archive/archives/supers/id/netbase.old | 25 + archive/archives/supers/id/network | 25 + archive/archives/supers/id/network2 | 25 + archive/archives/supers/id/networking | 25 + archive/archives/supers/id/ntp | 25 + archive/archives/supers/id/ntpdate | 25 + archive/archives/supers/id/portmap | 25 + archive/archives/supers/id/postfix | 25 + archive/archives/supers/id/ppp | 25 + archive/archives/supers/id/procps.sh | 25 + archive/archives/supers/id/rc | 25 + archive/archives/supers/id/rcS | 25 + archive/archives/supers/id/reboot | 25 + archive/archives/supers/id/rmnologin | 25 + archive/archives/supers/id/samba | 25 + archive/archives/supers/id/sendsigs | 25 + archive/archives/supers/id/setserial | 25 + archive/archives/supers/id/single | 25 + archive/archives/supers/id/skeleton | 25 + archive/archives/supers/id/socks | 25 + archive/archives/supers/id/squid | 25 + archive/archives/supers/id/ssh | 25 + archive/archives/supers/id/ssh-nonfree | 25 + archive/archives/supers/id/stunnel | 25 + archive/archives/supers/id/sysklogd | 25 + archive/archives/supers/id/syslog-ng | 25 + archive/archives/supers/id/tc.sh | 25 + archive/archives/supers/id/umountfs | 25 + archive/archives/supers/id/urandom | 25 + archive/archives/supers/id/wu-ftpd | 25 + archive/archives/supers/id/xinetd | 25 + archive/archives/supers/intop | 18 + archive/archives/supers/iptraf | 19 + archive/archives/supers/killntop | 16 + archive/archives/supers/lisJournal | 1 + archive/archives/supers/mklogin | 16 + archive/archives/supers/mknewlogin | 19 + archive/archives/supers/news/actmerge | 26 + archive/archives/supers/news/actsync | 26 + archive/archives/supers/news/actsyncd | 26 + archive/archives/supers/news/archive | 26 + archive/archives/supers/news/auth | 26 + archive/archives/supers/news/batcher | 26 + archive/archives/supers/news/buffchan | 26 + archive/archives/supers/news/cnfsheadconf | 26 + archive/archives/supers/news/cnfsstat | 26 + archive/archives/supers/news/control | 26 + archive/archives/supers/news/controlbatch | 26 + archive/archives/supers/news/controlchan | 26 + archive/archives/supers/news/convdate | 26 + archive/archives/supers/news/ctlinnd | 26 + archive/archives/supers/news/cvtbatch | 26 + archive/archives/supers/news/dbprocs | 26 + archive/archives/supers/news/expire | 26 + archive/archives/supers/news/expireover | 26 + archive/archives/supers/news/expirerm | 26 + archive/archives/supers/news/fastrm | 26 + archive/archives/supers/news/filechan | 26 + archive/archives/supers/news/getlist | 26 + archive/archives/supers/news/gpgverify | 26 + archive/archives/supers/news/grephistory | 26 + archive/archives/supers/news/inews | 26 + archive/archives/supers/news/inncheck | 26 + archive/archives/supers/news/innconfval | 26 + archive/archives/supers/news/innd | 26 + archive/archives/supers/news/inndf | 26 + archive/archives/supers/news/inndstart | 26 + archive/archives/supers/news/innfeed | 26 + archive/archives/supers/news/innmail | 26 + archive/archives/supers/news/innreport | 26 + archive/archives/supers/news/innstat | 26 + archive/archives/supers/news/innwatch | 26 + archive/archives/supers/news/innxbatch | 26 + archive/archives/supers/news/innxmit | 26 + archive/archives/supers/news/mailpost | 26 + archive/archives/supers/news/makedbz | 26 + archive/archives/supers/news/makehistory | 26 + archive/archives/supers/news/mod-active | 26 + archive/archives/supers/news/news.daily | 26 + archive/archives/supers/news/news2mail | 26 + archive/archives/supers/news/newsrequeue | 26 + archive/archives/supers/news/nnrpd | 26 + archive/archives/supers/news/nntpget | 26 + archive/archives/supers/news/nntpsend | 26 + archive/archives/supers/news/ovdb_recover | 26 + archive/archives/supers/news/ovdb_upgrade | 26 + archive/archives/supers/news/overchan | 26 + archive/archives/supers/news/parsecontrol | 26 + archive/archives/supers/news/pgpverify | 26 + archive/archives/supers/news/procbatch | 26 + archive/archives/supers/news/prunehistory | 26 + archive/archives/supers/news/pullnews | 26 + archive/archives/supers/news/rc.news | 26 + archive/archives/supers/news/rnews | 26 + archive/archives/supers/news/rnews.libexec | 26 + archive/archives/supers/news/scanlogs | 26 + archive/archives/supers/news/scanspool | 26 + archive/archives/supers/news/send-ihave | 26 + archive/archives/supers/news/send-nntp | 26 + archive/archives/supers/news/send-uucp | 26 + archive/archives/supers/news/send-uucp.pl | 26 + archive/archives/supers/news/sendbatch | 26 + archive/archives/supers/news/sendxbatches | 26 + archive/archives/supers/news/shlock | 26 + archive/archives/supers/news/shrinkfile | 26 + archive/archives/supers/news/signcontrol | 26 + archive/archives/supers/news/sm | 26 + archive/archives/supers/news/startinnfeed | 26 + archive/archives/supers/news/tally.control | 26 + archive/archives/supers/news/writelog | 26 + archive/archives/supers/ntop | 20 + archive/archives/supers/rdf | 26 + archive/archives/supers/rmlogin | 19 + archive/archives/supers/superTest | 19 + archive/archives/supers/template | 26 + archive/archives/supers/template_court | 19 + archive/archives/supers/template_id | 25 + archive/archives/supers/template_news | 26 + archive/archives/supers/update-links | 10 + archive/archives/surveille | 26 + archive/archives/surveille-reseau | 36 + archive/archives/surveille-sendmail | 10 + archive/archives/surveille-squid | 10 + archive/archives/surveille.tout | 18 + archive/archives/temp-avg | 14 + archive/archives/temperature | 11 + archive/archives/test-squid-taille-cache.pl | 25 + archive/archives/verifie_ipforward | 7 + archive/archives/watchdog | 13 + archive/auto-reply/mailbatX | 14 + archive/auto-reply/procmailbatXrc | 35 + archive/bdd/cles | 37 + archive/bdd/comptes.py | 34 + archive/bdd/connection.py | 9 + archive/bdd/controle.py | 7 + archive/bdd/local.py | 12 + archive/bdd/migration.py | 160 ++ archive/bdd/proprio.py | 57 + archive/bdd/reset.py | 54 + archive/bdd/secret/mdp.py | 1 + archive/bdd/sql/transitivite | 6 + archive/bdd/temp.py | 6 + archive/cranslib/README | 2 + archive/cransnews/__init__.py | 0 archive/cransnews/base.db | Bin 0 -> 25600 bytes .../cransnews/feeds/annonces_description.html | 1 + archive/cransnews/feeds/annonces_title.html | 1 + archive/cransnews/manage.py | 11 + archive/cransnews/news2rss/__init__.py | 96 + archive/cransnews/news2rss/models.py | 3 + archive/cransnews/news2rss/views.py | 15 + archive/cransnews/settings.py | 82 + .../templates/feeds/annonces_description.html | 1 + .../templates/feeds/annonces_title.html | 1 + .../templates/feeds/group_description.html | 1 + .../templates/feeds/group_title.html | 1 + archive/cransnews/urls.py | 18 + archive/diffusion-news | 19 + archive/dumpudp | Bin 0 -> 16544 bytes archive/ftp_public/sync-ftp.sh | 197 ++ archive/gestion/whos_pg.py | 1305 ++++++++++ archive/lib | 1 + archive/openvpn/ovh.conf | 24 + archive/openvpn/ovh.down | 3 + archive/openvpn/ovh.up | 19 + archive/pjl_comm.py | 117 + archive/python-lib/affich_tools.py | 194 ++ archive/python-lib/daemon.py | 47 + archive/python-lib/lock.py | 79 + archive/python-lib/user_tests.py | 38 + archive/surveillance/demenagement.py | 140 ++ archive/tv/old/launch_sat.py | 117 + archive/tv/old/sap.py | 140 ++ archive/tv/old/sat_base.py | 463 ++++ archive/tv/old/sat_conf.py | 39 + archive/uname_bornes.sh_ | 27 + archive/uptime_newbornes.py | 130 + archive/utils/chambre.py | 7 + archive/utils/chambre_on_off.py | 58 + archive/utils/checkMidIp.py | 34 + archive/utils/syslog-summary | 183 ++ archive/vieux/_cranspasswords | 13 + archive/vieux/accounts/README | 4 + archive/vieux/accounts/__init__.py | 0 archive/vieux/accounts/adm/__init__.py | 0 archive/vieux/accounts/adm/views.py | 28 + archive/vieux/accounts/adm_settings.py | 83 + archive/vieux/accounts/adm_urls.py | 7 + archive/vieux/accounts/conf_apache | 44 + .../vieux/accounts/cransaccounts/__init__.py | 0 .../vieux/accounts/cransaccounts/backend.py | 42 + .../vieux/accounts/cransaccounts/models.py | 11 + archive/vieux/accounts/cransaccounts/uuid.py | 234 ++ archive/vieux/accounts/cransaccounts/views.py | 53 + archive/vieux/accounts/manage.py | 11 + archive/vieux/accounts/media/logo.png | Bin 0 -> 19117 bytes archive/vieux/accounts/media/style.css | 39 + archive/vieux/accounts/settings.py | 85 + .../accounts/templates/account_index.html | 12 + archive/vieux/accounts/templates/base.html | 13 + archive/vieux/accounts/templates/index.html | 4 + archive/vieux/accounts/templates/login.html | 32 + archive/vieux/accounts/test/__init__.py | 0 archive/vieux/accounts/test/models.py | 3 + archive/vieux/accounts/test/views.py | 10 + archive/vieux/accounts/urls.py | 18 + archive/vieux/bot.py | 248 ++ archive/vieux/cert_crans.crt | 22 + archive/vieux/cranspasswords | 182 ++ archive/vieux/deco_ag.html | 750 ++++++ archive/vieux/gest_crans_old | 2113 +++++++++++++++++ archive/vieux/webmail_freebox | 50 + 299 files changed, 17466 insertions(+) create mode 100755 archive/archives/E-mail_all create mode 100755 archive/archives/MiroirConfig create mode 100755 archive/archives/MiroirFWall create mode 100755 archive/archives/SMBMessage create mode 100755 archive/archives/analyse.pl create mode 100755 archive/archives/analyse_komaz/analyse.cron create mode 100755 archive/archives/analyse_komaz/autodisconnect create mode 100755 archive/archives/analyse_komaz/exempts.py create mode 100755 archive/archives/analyse_komaz/flood_scan.awk create mode 100644 archive/archives/analyse_komaz/keys/reload_squid create mode 100644 archive/archives/analyse_komaz/keys/synchro_virus create mode 100755 archive/archives/analyse_komaz/nacct.py create mode 100755 archive/archives/analyse_komaz/rpc_scan.awk create mode 100755 archive/archives/analyse_komaz/virus_scan.sh create mode 100755 archive/archives/arpanoid create mode 100755 archive/archives/arpanoid-daily create mode 100755 archive/archives/arpanoid-frequently create mode 100755 archive/archives/auto-claque create mode 100644 archive/archives/beastie.c create mode 100755 archive/archives/cdecode create mode 100755 archive/archives/cencode create mode 100755 archive/archives/chmodwww create mode 100755 archive/archives/claque-interfaces create mode 100755 archive/archives/configure_bornes_installparty create mode 100755 archive/archives/cvsweb/commit-news.py create mode 100755 archive/archives/cvsweb/update.sh create mode 100755 archive/archives/fan-speed create mode 100755 archive/archives/mailCRANS create mode 100644 archive/archives/mailCRANS.c create mode 100644 archive/archives/mailvirus create mode 100755 archive/archives/netrestart create mode 100755 archive/archives/news-cancel create mode 100755 archive/archives/pop3s-restart create mode 100755 archive/archives/redpopup create mode 100755 archive/archives/redpopup.py create mode 100755 archive/archives/restart-all create mode 100755 archive/archives/save-etc create mode 100755 archive/archives/sendmail-vit-il create mode 100644 archive/archives/snmp/Des5200.mib create mode 100755 archive/archives/snmp/iog-crans create mode 100755 archive/archives/spamassassin-anti-block create mode 100755 archive/archives/squid-vit-il create mode 100755 archive/archives/supers/apt-get create mode 100755 archive/archives/supers/apt-getinstall create mode 100755 archive/archives/supers/apt-getupgrade create mode 100755 archive/archives/supers/aptitude create mode 100755 archive/archives/supers/chowncore create mode 100755 archive/archives/supers/dpkg create mode 100755 archive/archives/supers/etccommit create mode 100755 archive/archives/supers/extendPath create mode 100755 archive/archives/supers/hide/less create mode 100755 archive/archives/supers/id/apache-ssl create mode 100755 archive/archives/supers/id/arp create mode 100755 archive/archives/supers/id/arpd create mode 100755 archive/archives/supers/id/arpwatch create mode 100755 archive/archives/supers/id/bind create mode 100755 archive/archives/supers/id/bootmisc.sh create mode 100755 archive/archives/supers/id/checkfs.sh create mode 100755 archive/archives/supers/id/checkroot.sh create mode 100755 archive/archives/supers/id/console-screen.kbd.sh create mode 100755 archive/archives/supers/id/console-screen.sh create mode 100755 archive/archives/supers/id/cron create mode 100755 archive/archives/supers/id/cucipop create mode 100755 archive/archives/supers/id/devpts.sh create mode 100755 archive/archives/supers/id/devpts.sh.dpkg-old create mode 100755 archive/archives/supers/id/dhcp create mode 100755 archive/archives/supers/id/dhcp.dpkg-dist create mode 100755 archive/archives/supers/id/dns-clean create mode 100755 archive/archives/supers/id/exim create mode 100755 archive/archives/supers/id/firewall create mode 100755 archive/archives/supers/id/gnu-pop3d create mode 100755 archive/archives/supers/id/halt create mode 100755 archive/archives/supers/id/hdSettings create mode 100755 archive/archives/supers/id/hostname.sh create mode 100755 archive/archives/supers/id/hwclock.sh create mode 100755 archive/archives/supers/id/inetd create mode 100755 archive/archives/supers/id/inn2 create mode 100755 archive/archives/supers/id/isapnp create mode 100755 archive/archives/supers/id/kerneld create mode 100755 archive/archives/supers/id/keymaps-lct.sh create mode 100755 archive/archives/supers/id/keymaps.sh create mode 100755 archive/archives/supers/id/logoutd create mode 100755 archive/archives/supers/id/lpd create mode 100755 archive/archives/supers/id/makedev create mode 100755 archive/archives/supers/id/modutils create mode 100755 archive/archives/supers/id/mountall.sh create mode 100755 archive/archives/supers/id/mountnfs.sh create mode 100755 archive/archives/supers/id/netbase.old create mode 100755 archive/archives/supers/id/network create mode 100755 archive/archives/supers/id/network2 create mode 100755 archive/archives/supers/id/networking create mode 100755 archive/archives/supers/id/ntp create mode 100755 archive/archives/supers/id/ntpdate create mode 100755 archive/archives/supers/id/portmap create mode 100755 archive/archives/supers/id/postfix create mode 100755 archive/archives/supers/id/ppp create mode 100755 archive/archives/supers/id/procps.sh create mode 100755 archive/archives/supers/id/rc create mode 100755 archive/archives/supers/id/rcS create mode 100755 archive/archives/supers/id/reboot create mode 100755 archive/archives/supers/id/rmnologin create mode 100755 archive/archives/supers/id/samba create mode 100755 archive/archives/supers/id/sendsigs create mode 100755 archive/archives/supers/id/setserial create mode 100755 archive/archives/supers/id/single create mode 100755 archive/archives/supers/id/skeleton create mode 100755 archive/archives/supers/id/socks create mode 100755 archive/archives/supers/id/squid create mode 100755 archive/archives/supers/id/ssh create mode 100755 archive/archives/supers/id/ssh-nonfree create mode 100755 archive/archives/supers/id/stunnel create mode 100755 archive/archives/supers/id/sysklogd create mode 100755 archive/archives/supers/id/syslog-ng create mode 100755 archive/archives/supers/id/tc.sh create mode 100755 archive/archives/supers/id/umountfs create mode 100755 archive/archives/supers/id/urandom create mode 100755 archive/archives/supers/id/wu-ftpd create mode 100755 archive/archives/supers/id/xinetd create mode 100755 archive/archives/supers/intop create mode 100755 archive/archives/supers/iptraf create mode 100755 archive/archives/supers/killntop create mode 100755 archive/archives/supers/lisJournal create mode 100755 archive/archives/supers/mklogin create mode 100755 archive/archives/supers/mknewlogin create mode 100755 archive/archives/supers/news/actmerge create mode 100755 archive/archives/supers/news/actsync create mode 100755 archive/archives/supers/news/actsyncd create mode 100755 archive/archives/supers/news/archive create mode 100755 archive/archives/supers/news/auth create mode 100755 archive/archives/supers/news/batcher create mode 100755 archive/archives/supers/news/buffchan create mode 100755 archive/archives/supers/news/cnfsheadconf create mode 100755 archive/archives/supers/news/cnfsstat create mode 100755 archive/archives/supers/news/control create mode 100755 archive/archives/supers/news/controlbatch create mode 100755 archive/archives/supers/news/controlchan create mode 100755 archive/archives/supers/news/convdate create mode 100755 archive/archives/supers/news/ctlinnd create mode 100755 archive/archives/supers/news/cvtbatch create mode 100755 archive/archives/supers/news/dbprocs create mode 100755 archive/archives/supers/news/expire create mode 100755 archive/archives/supers/news/expireover create mode 100755 archive/archives/supers/news/expirerm create mode 100755 archive/archives/supers/news/fastrm create mode 100755 archive/archives/supers/news/filechan create mode 100755 archive/archives/supers/news/getlist create mode 100755 archive/archives/supers/news/gpgverify create mode 100755 archive/archives/supers/news/grephistory create mode 100755 archive/archives/supers/news/inews create mode 100755 archive/archives/supers/news/inncheck create mode 100755 archive/archives/supers/news/innconfval create mode 100755 archive/archives/supers/news/innd create mode 100755 archive/archives/supers/news/inndf create mode 100755 archive/archives/supers/news/inndstart create mode 100755 archive/archives/supers/news/innfeed create mode 100755 archive/archives/supers/news/innmail create mode 100755 archive/archives/supers/news/innreport create mode 100755 archive/archives/supers/news/innstat create mode 100755 archive/archives/supers/news/innwatch create mode 100755 archive/archives/supers/news/innxbatch create mode 100755 archive/archives/supers/news/innxmit create mode 100755 archive/archives/supers/news/mailpost create mode 100755 archive/archives/supers/news/makedbz create mode 100755 archive/archives/supers/news/makehistory create mode 100755 archive/archives/supers/news/mod-active create mode 100755 archive/archives/supers/news/news.daily create mode 100755 archive/archives/supers/news/news2mail create mode 100755 archive/archives/supers/news/newsrequeue create mode 100755 archive/archives/supers/news/nnrpd create mode 100755 archive/archives/supers/news/nntpget create mode 100755 archive/archives/supers/news/nntpsend create mode 100755 archive/archives/supers/news/ovdb_recover create mode 100755 archive/archives/supers/news/ovdb_upgrade create mode 100755 archive/archives/supers/news/overchan create mode 100755 archive/archives/supers/news/parsecontrol create mode 100755 archive/archives/supers/news/pgpverify create mode 100755 archive/archives/supers/news/procbatch create mode 100755 archive/archives/supers/news/prunehistory create mode 100755 archive/archives/supers/news/pullnews create mode 100755 archive/archives/supers/news/rc.news create mode 100755 archive/archives/supers/news/rnews create mode 100755 archive/archives/supers/news/rnews.libexec create mode 100755 archive/archives/supers/news/scanlogs create mode 100755 archive/archives/supers/news/scanspool create mode 100755 archive/archives/supers/news/send-ihave create mode 100755 archive/archives/supers/news/send-nntp create mode 100755 archive/archives/supers/news/send-uucp create mode 100755 archive/archives/supers/news/send-uucp.pl create mode 100755 archive/archives/supers/news/sendbatch create mode 100755 archive/archives/supers/news/sendxbatches create mode 100755 archive/archives/supers/news/shlock create mode 100755 archive/archives/supers/news/shrinkfile create mode 100755 archive/archives/supers/news/signcontrol create mode 100755 archive/archives/supers/news/sm create mode 100755 archive/archives/supers/news/startinnfeed create mode 100755 archive/archives/supers/news/tally.control create mode 100755 archive/archives/supers/news/writelog create mode 100755 archive/archives/supers/ntop create mode 100755 archive/archives/supers/rdf create mode 100755 archive/archives/supers/rmlogin create mode 100755 archive/archives/supers/superTest create mode 100755 archive/archives/supers/template create mode 100755 archive/archives/supers/template_court create mode 100755 archive/archives/supers/template_id create mode 100755 archive/archives/supers/template_news create mode 100755 archive/archives/supers/update-links create mode 100755 archive/archives/surveille create mode 100755 archive/archives/surveille-reseau create mode 100755 archive/archives/surveille-sendmail create mode 100755 archive/archives/surveille-squid create mode 100755 archive/archives/surveille.tout create mode 100755 archive/archives/temp-avg create mode 100755 archive/archives/temperature create mode 100755 archive/archives/test-squid-taille-cache.pl create mode 100755 archive/archives/verifie_ipforward create mode 100755 archive/archives/watchdog create mode 100644 archive/auto-reply/mailbatX create mode 100644 archive/auto-reply/procmailbatXrc create mode 100644 archive/bdd/cles create mode 100644 archive/bdd/comptes.py create mode 100644 archive/bdd/connection.py create mode 100644 archive/bdd/controle.py create mode 100644 archive/bdd/local.py create mode 100755 archive/bdd/migration.py create mode 100644 archive/bdd/proprio.py create mode 100755 archive/bdd/reset.py create mode 100644 archive/bdd/secret/mdp.py create mode 100644 archive/bdd/sql/transitivite create mode 100755 archive/bdd/temp.py create mode 100644 archive/cranslib/README create mode 100644 archive/cransnews/__init__.py create mode 100644 archive/cransnews/base.db create mode 100644 archive/cransnews/feeds/annonces_description.html create mode 100644 archive/cransnews/feeds/annonces_title.html create mode 100755 archive/cransnews/manage.py create mode 100644 archive/cransnews/news2rss/__init__.py create mode 100644 archive/cransnews/news2rss/models.py create mode 100644 archive/cransnews/news2rss/views.py create mode 100644 archive/cransnews/settings.py create mode 100644 archive/cransnews/templates/feeds/annonces_description.html create mode 100644 archive/cransnews/templates/feeds/annonces_title.html create mode 100644 archive/cransnews/templates/feeds/group_description.html create mode 100644 archive/cransnews/templates/feeds/group_title.html create mode 100644 archive/cransnews/urls.py create mode 100755 archive/diffusion-news create mode 100755 archive/dumpudp create mode 100644 archive/ftp_public/sync-ftp.sh create mode 100755 archive/gestion/whos_pg.py create mode 120000 archive/lib create mode 100644 archive/openvpn/ovh.conf create mode 100755 archive/openvpn/ovh.down create mode 100755 archive/openvpn/ovh.up create mode 100755 archive/pjl_comm.py create mode 100644 archive/python-lib/affich_tools.py create mode 100644 archive/python-lib/daemon.py create mode 100644 archive/python-lib/lock.py create mode 100644 archive/python-lib/user_tests.py create mode 100644 archive/surveillance/demenagement.py create mode 100755 archive/tv/old/launch_sat.py create mode 100755 archive/tv/old/sap.py create mode 100644 archive/tv/old/sat_base.py create mode 100644 archive/tv/old/sat_conf.py create mode 100755 archive/uname_bornes.sh_ create mode 100644 archive/uptime_newbornes.py create mode 100755 archive/utils/chambre.py create mode 100755 archive/utils/chambre_on_off.py create mode 100644 archive/utils/checkMidIp.py create mode 100755 archive/utils/syslog-summary create mode 100644 archive/vieux/_cranspasswords create mode 100644 archive/vieux/accounts/README create mode 100644 archive/vieux/accounts/__init__.py create mode 100644 archive/vieux/accounts/adm/__init__.py create mode 100644 archive/vieux/accounts/adm/views.py create mode 100644 archive/vieux/accounts/adm_settings.py create mode 100644 archive/vieux/accounts/adm_urls.py create mode 100644 archive/vieux/accounts/conf_apache create mode 100644 archive/vieux/accounts/cransaccounts/__init__.py create mode 100644 archive/vieux/accounts/cransaccounts/backend.py create mode 100644 archive/vieux/accounts/cransaccounts/models.py create mode 100644 archive/vieux/accounts/cransaccounts/uuid.py create mode 100644 archive/vieux/accounts/cransaccounts/views.py create mode 100755 archive/vieux/accounts/manage.py create mode 100644 archive/vieux/accounts/media/logo.png create mode 100644 archive/vieux/accounts/media/style.css create mode 100644 archive/vieux/accounts/settings.py create mode 100644 archive/vieux/accounts/templates/account_index.html create mode 100644 archive/vieux/accounts/templates/base.html create mode 100644 archive/vieux/accounts/templates/index.html create mode 100644 archive/vieux/accounts/templates/login.html create mode 100644 archive/vieux/accounts/test/__init__.py create mode 100644 archive/vieux/accounts/test/models.py create mode 100644 archive/vieux/accounts/test/views.py create mode 100644 archive/vieux/accounts/urls.py create mode 100755 archive/vieux/bot.py create mode 100644 archive/vieux/cert_crans.crt create mode 100755 archive/vieux/cranspasswords create mode 100644 archive/vieux/deco_ag.html create mode 100755 archive/vieux/gest_crans_old create mode 100755 archive/vieux/webmail_freebox diff --git a/archive/archives/E-mail_all b/archive/archives/E-mail_all new file mode 100755 index 00000000..2173cd4d --- /dev/null +++ b/archive/archives/E-mail_all @@ -0,0 +1,11 @@ +#!/bin/zsh +./remail $1 $2 > email.tmp +chmod a+x email.tmp +echo maintenant il faut editer ./email.tmp avec pico +echo et virrer les ^M qui apparaissent. +echo apres, on lance ./email.tmp et on l'efface +#./email.tmp +#rm email.tmp +echo Done +# envoie un E-mail a tout le monde +# orthographe : E-mail_all fichier.txt "titre" \ No newline at end of file diff --git a/archive/archives/MiroirConfig b/archive/archives/MiroirConfig new file mode 100755 index 00000000..2057d259 --- /dev/null +++ b/archive/archives/MiroirConfig @@ -0,0 +1,7 @@ +#!/bin/zsh + +#Copie de sauvegarde de toute la config de zamok +#lancé par cron.daily +scp -1BCr /etc/CRANS /etc/genConfs zamok@komaz:/var/zamok +scp -1BCr /etc/CRANS /etc/genConfs zamok@sila:/var/zamok + diff --git a/archive/archives/MiroirFWall b/archive/archives/MiroirFWall new file mode 100755 index 00000000..d8bb9110 --- /dev/null +++ b/archive/archives/MiroirFWall @@ -0,0 +1,8 @@ +#!/bin/zsh +scp -1BCr /etc/CRANS/blacklist.cf zamok@komaz:/var/zamok/CRANS/ +scp -1BCr /etc/CRANS/blacklist.cf zamok@sila:/var/zamok/CRANS/ + +#On n'a pas besoin de tout mirrorer à chaque lanceMake. +#scp -BCr /etc/CRANS /etc/genConfs zamok@komaz:/var/zamok +#scp -BCr /etc/CRANS /etc/genConfs zamok@sila:/var/zamok + diff --git a/archive/archives/SMBMessage b/archive/archives/SMBMessage new file mode 100755 index 00000000..ae90bfa9 --- /dev/null +++ b/archive/archives/SMBMessage @@ -0,0 +1,2 @@ +#!/bin/sh +cat $3 | smbclient -U $1 -M $2 diff --git a/archive/archives/analyse.pl b/archive/archives/analyse.pl new file mode 100755 index 00000000..d4535d32 --- /dev/null +++ b/archive/archives/analyse.pl @@ -0,0 +1,425 @@ +#!/usr/bin/perl -w +## +## Analyse.pl +## +## Made by Vincent HANQUEZ +## +## Started on Tue 09 Oct 2001 01:28:25 AM CEST tab +## Last Update dim 10 fév 2002 16:55:24 CET Nicolas STRANSKY +## +## 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; only version 2 of the License +## +## 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, USA. +## +## +## AUTEUR: Vincent HANQUEZ +## MAINTAINERS: Vincent HANQUEZ, Nicolas STRANSKY +## +## DESCRIPTION: analyse permet de creer des resumes des fichiers de +## log cree par net-acct. Net-acct est un daemon qui permet de logguer toutes +## les connexions effectues. +## +## SYNOPSIS: analyse [-d] [-h ][-m ][-n ][-f ] +## +## VERSION: 0.35 +## +## + +use strict; +use File::stat; +use POSIX qw(strftime); +use AppConfig qw(:expand :argcount); +require Mail::Send; + +my $ip_interne = "138\.231\.1(3[6-9]|4[0-3])\."; + +## Do not modify after + +my $VERSION = 0.35; +my $AUTEUR = "Vincent HANQUEZ (aka Tab)"; + +my $pattern_ip = + "[[:digit:]]{1,3}\.[[:digit:]]{1,3}\.[[:digit:]]{1,3}\.[[:digit:]]{1,3}"; + +my ($opt_download, $opt_upload) = 0; +my $opt_dnsresolve = 1; +my $opt_normalize = 1; +#my $opt_config = 1; +my $opt_config = 0; +my $opt_file = "/var/log/net-acct/net-acct.log.0"; +my $opt_configfile = "/etc/analyse.conf"; +my $opt_host = ""; +my $opt_mail = ""; +my $opt_number = -1; +my $bad_arg = 0; +my $period = 1; +$opt_upload = 1; + +######## ERROR GEST ######## +# USAGE: affiche en cas d'erreur dans les arguments. + +sub usage +{ + print "Usage:\tanalyse (-d) [-h ][-m ][-n ][-f ]\n\n"; + + print "\t-d, --download\tTri la base sur le download\n"; + print "\t-h, --host\tResume des connexions effectues par la machine \n"; + print "\t-n, --nombre\tChoisi le nombre de lignes affichees\n"; + print "\t-m, --mail\tEnvoie la sortie par mail a \n"; + print "\t-f, --file\tSpecifie le fichier qui sera analyse\n"; + print "\t-c, --config\tSpecifie le fichier de configuration\n"; + print "\t --nodns\tNe resout pas les noms DNS\n"; + print "\t --nonorm\tNe transforme pas les nombres en forme plus lisible (Ko, Mo, Go)\n"; + print "\t --today\tChiffres du jour, analyse de /var/log/net-acct/net-acct.log\n"; + print "\t --noconfig\tNe charge pas les options du fichier de config\n"; + print "\t --noperiod\tN'affiche pas la période sur laquelle porte l'analyse\n"; + print "\t --help\tAffiche cette aide\n"; + print "\n"; + print "par defaut si l'option n'est pas utilise:\n"; + print "\tdownload = on tri sur l'upload\n"; + print "\tnombre = tout est affiche\n"; + print "\tfile = analyse de /var/log/net-acct/net-acct.log.0\n"; + print "\tconfig = par defaut /etc/analyse.conf"; + + exit (1); +} + +# SETOPT: gerer les options.. +sub setopt +{ + my ($opt_name, $opt_param) = @_; + if ($opt_name =~ /f/) + { $opt_file = $opt_param; } + elsif ($opt_name =~ /h/) + { $opt_host = $opt_param; } + elsif ($opt_name =~ /n/) + { $opt_number = $opt_param; } + elsif ($opt_name =~ /c/) + { $opt_configfile = $opt_param; } + elsif ($opt_name =~ /m/) + { $opt_mail = $opt_param; } +} + +# Readconfig + +sub read_configfile +{ + my $info = stat($opt_configfile) || die("Unable to open $opt_configfile"); + my $config = AppConfig->new( + 'normalize', + 'dnsresolve', + 'network' => { ARGCOUNT => 1 } + ); + $config->file($opt_configfile); + $opt_normalize = $config->normalize(); + $opt_dnsresolve = $config->dnsresolve(); + $ip_interne = $config->network(); +} + + +########## FCT ########### +# SHOW_ALL: affiche toutes les machines + +sub show_all +{ + my %db; + + my ($nb_to_print, $sort_by_upload) = @_; + +# creation de la base + open (INPUT, $opt_file) || die ("Unable to open $opt_file"); + while (my $line = ) { + my ($src_ip, $dst_ip, $size) = (split "\t", $line)[2,4,6]; + if ($src_ip =~ /$ip_interne/ ) + { $db{$src_ip}->{up} += $size; } + if ($dst_ip =~ /$ip_interne/ ) + { $db{$dst_ip}->{down} += $size; } + } + close(INPUT); + +# Nombre d'entree a afficher + if ($nb_to_print == -1) + { $nb_to_print = (my @nb = (keys %db)); } + + my $max = (keys %db)[0]; + +# tris sur upload ou download + my $way1 = "up"; + my $way2 = "down"; + if ($sort_by_upload == 0) + { $way1 = "down"; $way2 = "up"; } + +# on affiche $nb_to_print entree, en ayant trier les machines +if ($period) +{ + open (INPUT, $opt_file) || die ("Unable to open $opt_file"); + my $line1 = ; + my $firstdate = (split "\t", $line1)[0]; + my $firstdate2 = strftime("Analyse depuis le %d-%m-%Y %H:%M:%S", localtime($firstdate)); + print $firstdate2; + print "\n"; + + seek(INPUT, -90, 2); + my $lastlineX = ; + my $lastline = ; + my $lastdate = (split "\t", $lastline)[0]; + my $lastdate2 = strftime(" jusq'au %d-%m-%Y %H:%M:%S", localtime($lastdate)); + print $lastdate2; + print "\n"; + close(INPUT); + + print "\n";} + + + for (my $dec = $nb_to_print; $dec > 0; $dec--) + { + foreach my $ip (keys %db) + { + if (defined($db{$ip}->{$way1}) && + $db{$max}->{$way1} <= $db{$ip}->{$way1}) + { $max = $ip; } + } + print normalize($db{$max}->{$way1})." (". + normalize($db{$max}->{$way2}).")\t". + ip_to_name($max)."\n" if ($db{$max}->{$way1} > 0); + $db{$max}->{$way1} = 0; + } +} + +############################# +# GET_HOST_INFO: Affiche les informations sur une machine +sub get_host_info +{ + my $total_size; + my %db; + my ($ip_search) = @_; + + $total_size->{UPLOAD} = 0; $total_size->{DOWNLOAD} = 0; + +# Must unresolve name + if (!($ip_search =~ /$pattern_ip/)) + { $ip_search = name_to_ip($ip_search); if ($ip_search eq "0") { return (-1); } } + +# create db + open (INPUT, $opt_file) || die ("Unable to open $opt_file"); + while (my $line = ) { + my ($src_ip, $src_port, $dst_ip, $dst_port, $size) = + (split "\t", $line)[2,3,4,5,6]; + if ($src_ip eq $ip_search) { + $total_size->{UPLOAD} += $size; + $db{$src_port}->{UPLOAD_LOCAL} += $size; + $db{$dst_port}->{UPLOAD_DIST} += $size; + } + if ($dst_ip eq $ip_search) { + $total_size->{DOWNLOAD} += $size; + $db{$dst_port}->{DOWNLOAD_LOCAL} += $size; + $db{$src_port}->{DOWNLOAD_DIST} += $size; + } + } + close (INPUT); + +# printing info +if ($period) +{ + open (INPUT, $opt_file) || die ("Unable to open $opt_file"); + my $line1 = ; + my $firstdate = (split "\t", $line1)[0]; + my $firstdate2 = strftime("Analyse depuis le %d-%m-%Y %H:%M:%S", localtime($firstdate)); + print $firstdate2; + print "\n"; + + seek(INPUT, -90, 2); + my $lastlineX = ; + my $lastline = ; + my $lastdate = (split "\t", $lastline)[0]; + my $lastdate2 = strftime(" jusqu'au %d-%m-%Y %H:%M:%S", localtime($lastdate)); + print $lastdate2; + print "\n"; + close(INPUT); + + print "\n";} + print "--- Info for $ip_search ---"; + print "\n"; + + foreach my $type ("UPLOAD", "DOWNLOAD") + { + print $type.": \t".normalize($total_size->{$type})."\n"; + foreach my $location ("LOCAL", "DIST") + { + print "PORT $location: "; + + my $max = (keys %db)[0]; + for (my $dec=5; $dec > 0; $dec--) { + foreach my $port (keys %db) { + if (defined($db{$port}->{$type."_".$location}) && + (! defined($db{$max}->{$type."_".$location}) || + $db{$max}->{$type."_".$location} <= + $db{$port}->{$type."_".$location})) + { $max = $port; } + } + print "$max(".normalize($db{$max}->{$type."_".$location}).") " + if ($db{$max}->{$type."_".$location} > 0); + $db{$max} ->{$type."_".$location} = 0; + } + print "\n"; + } + print "\n"; + } + + print "--- Calculs ---\n"; + print "Upload pur:\t". + normalize($total_size->{UPLOAD} - $total_size->{DOWNLOAD}/20); + foreach my $type ("UPLOAD", "DOWNLOAD") + { + print "\nTAUX $type:\t"; + print normalize($total_size->{$type}/24)."/h - "; + print normalize($total_size->{$type}/1440)."/min - "; + print normalize($total_size->{$type}/86400)."/s"; + } + print "\n"; +} + +########################### +######### TOOLKIT ######### +# normalize: transforme un nombre, en un nombre suivi d'un prefixe +# Go, Mo, Ko, Octets. + +sub normalize +{ + my ($nb) = @_; + if ($opt_normalize) + { + if (defined $nb) { + if ($nb < 0) + { return ("0o"); } + if ($nb > (1024*1024*1024)) + { return ((int($nb*100/(1024*1024*1024))/100)."Go"); } + elsif ($nb > (1024*1024)) + { return (int($nb/(1024*1024))."Mo"); } + elsif ($nb > 1024) + { return (int($nb/(1024))."Ko"); } + else + { return ($nb."o"); } + } + return ("0"); + } else + { + if (defined $nb) + { return ($nb); } + else + { return (0); } + } +} + +# ip_to_name: resout le nom associe a l'ip donne en argument +sub ip_to_name +{ + my ($ip) = @_; + my $ret; + my $host_name; + my $aliases; + my $addrtype; + my $length; + my @addrs; + + if (!($ip =~ /$pattern_ip/)) + { return ($ip); } + + if ($opt_dnsresolve) { + my $ipaddr = pack("C4", split(/\./, $ip)); + if (($host_name, $aliases, $addrtype, $length, @addrs) + = gethostbyaddr($ipaddr, 2)) + { return ($host_name); } + else + { return ("$ip [lookup failed]"); } + } + return ($ip); +} + +# name_to_ip: deresout le nom +sub name_to_ip +{ + my ($host) = @_; + my $line = ""; + if ($host =~ /$pattern_ip/) + { return ($host); } + open (COM, "host $host | awk '{print \$4}' |"); + $line = ; + close (COM); + if (! ($line =~ /$pattern_ip/)) + { print "host $host don't exist aborting\n"; return ("0");} + chomp($line); + return ($line); +} + +########################################################################## + +# Lit les options de la ligne de commande +use Getopt::Long; +Getopt::Long::config ("bundling"); +Getopt::Long::GetOptions +( + 'v|version' => sub { print "analyse version $VERSION\n$AUTEUR\n"; }, + 'd|download' => sub { $opt_download = 1; $opt_upload = 0; }, + 'u|upload' => sub { $opt_upload = 1; $opt_download = 0; }, + 'c|config=s' => \&setopt, + 'h|host=s' => \&setopt, + 'f|file=s' => \&setopt, + 'm|mail=s' => \&setopt, + 'n|number=s' => \&setopt, + 'help' => \&usage, + 'nodns' => sub { $opt_dnsresolve = 0; }, + 'nonorm' => sub { $opt_normalize = 0; }, + 'noconfig' => sub { $opt_config = 0; }, + 'noperiod' => sub { $period = 0; }, + 'today' => sub { $opt_file = "/var/log/net-acct/net-acct.log"; } +) or $bad_arg = 1; + +if ($bad_arg == 1) +{ usage(); } + +my ($mail_msg, $mail_fh); + +# Lit les options du fichier de config +# sauf si --noconfig est utilise +if ($opt_config) +{ read_configfile(); } + +# Begin Mail ? +if ($opt_mail ne "") +{ + $mail_msg = new Mail::Send; + $mail_msg->to($opt_mail); + $mail_msg->subject("[ANALYSE]"); + $mail_fh = $mail_msg->open(); + close (STDOUT); + open (STDOUT, ">/tmp/analyse_mail"); +} + +# Main Part +if ($opt_host ne "") +{ get_host_info($opt_host); } +else +{ show_all($opt_number, $opt_upload); } + +# Close Mail +if ($opt_mail ne "") +{ + close (STDOUT); + open (FH, "/tmp/analyse_mail") || die ("argh not possible !\n"); + while (my $line = ) + { print $mail_fh $line; } + close (FH); + $mail_fh->close(); +} + +exit (0); diff --git a/archive/archives/analyse_komaz/analyse.cron b/archive/archives/analyse_komaz/analyse.cron new file mode 100755 index 00000000..1cbcdb7a --- /dev/null +++ b/archive/archives/analyse_komaz/analyse.cron @@ -0,0 +1,84 @@ +#!/bin/sh +## +## Analyse +## +## Made by Tab +## +## Started on Tue 09 Oct 2001 01:28:25 AM CEST tab +## MAJ : 06/02/2003 -- Fred + +TEMPFILE="/tmp/analyse.mail" + +# Options pour les stats traffic +PROG="/usr/scripts/analyse_komaz/nacct.py" +OPTIONS="-N 15" +OPTIONS2="-N 15 -c 2" +OPTIONS3="-N 15 -c 5" + +# Divers chemins +BLACKLIST="/var/zamok/CRANS/blacklist.cf" +AUTODISC_LOG="/var/log/autodisconnect.log" +VIRUS_BLACKLIST="/tmp/virus_blacklist" + +################################################################################# +# Machines ayant été disconnectées dans les 24h : +# affichage de leur historique + +echo "Bilan des autodisconnexions des dernières 24h :" >> $TEMPFILE +echo "=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=" >> $TEMPFILE + +if [ -e $AUTODISC_LOG ]; then + for host in $(awk -F'[ .]' '/'$(date --date=yesterday +%d-%m-%Y)'-(0[7-9]|1|2)|'$(date +%d-%m-%Y)'-0[0-6]/ {print $2}' $AUTODISC_LOG) + do + echo "$host :" + ( awk -F'-' '/'$host'.crans.org/ {print $3$2"@"$1"/"$2"/"$3" : autodisconnecté"}' $AUTODISC_LOG + awk -F'[:/ ]' '/^'$host'/ || /^#'$host'/ {print $6$5"@"$4"/"$5"/"$6" : déco manuelle (->"$7"/"$8"/"$9")"}' $BLACKLIST ) \ + | sort -r \ + | awk -F@ '{print "\t"$2}' + done >> $TEMPFILE +else + echo -e "Problème avec $AUTODISC_LOG" >> $TEMPFILE +fi + +echo -e "\n" >> $TEMPFILE + +################################################################################# +# Vérolés + +if [ -e $VIRUS_BLACKLIST ]; then + echo "Bilan des bloquages web pour virus :" >> $TEMPFILE + echo "=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-" >> $TEMPFILE + + echo "Il y a $(wc -l $VIRUS_BLACKLIST | awk '{print $1}') machines infectées." >> $TEMPFILE + + if [ -e $VIRUS_BLACKLIST.hier ] ; then + diff -U0 -s $VIRUS_BLACKLIST.hier $VIRUS_BLACKLIST \ + | egrep -v '\-\-\-|\+\+\+|@@' >> $TEMPFILE + else + cat $VIRUS_BLACKLIST >> $TEMPFILE + fi + cp -f $VIRUS_BLACKLIST $VIRUS_BLACKLIST.hier + echo -e "\n" >> $TEMPFILE +fi + +################################################################################# +# Statistiques + +echo "Statistiques upload/download :" >> $TEMPFILE +echo "=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-" >> $TEMPFILE + +if [ -x $PROG ]; then + echo -e "Upload (Download) pur normal :\n" >> $TEMPFILE + $PROG $OPTIONS | tail -15 | awk -F "|" '{print $1" ("$3")"" "$7}' >> $TEMPFILE + echo -e "\nUpload total normal :\n" >> $TEMPFILE + $PROG $OPTIONS2 | tail -15 | awk -F "|" '{print $2" "$7}' >> $TEMPFILE + echo -e "\nUpload total exempté :\n" >> $TEMPFILE + $PROG $OPTIONS3 | tail -15 | awk -F "|" '{print $5" "$7}' >> $TEMPFILE +else + echo -e "Problème avec $PROG" >> $TEMPFILE +fi + +################################################################################# +# Envoi du mail +cat $TEMPFILE |/usr/bin/mail -s "Stats -- $(date --date=yesterday +%A\ %d\ %B\ %Y)" disconnect@crans.org +rm -f $TEMPFILE diff --git a/archive/archives/analyse_komaz/autodisconnect b/archive/archives/analyse_komaz/autodisconnect new file mode 100755 index 00000000..116342b4 --- /dev/null +++ b/archive/archives/analyse_komaz/autodisconnect @@ -0,0 +1,215 @@ +#!/bin/zsh +## +## autodisconnect +## +## Made by stransky +## Login stransky +## +## Started on ven 25 jan 2002 22:24:26 CEST Nicolas STRANSKY +## Last update lun 03 nov 2003 07:38:51 CET Nicolas STRANSKY +## +## script de surveillance automatique de l'upload. +## à lancer par cron. + +export LANG=fr_FR@euro + +LIMITE_SOFT=100 +LIMITE_HARD=700 +MAIL_INTERVAL=100 +LOG=/var/log/autodisconnect.log +LOGFILE=/var/log/net-acct/net-acct.log +outpF=$(mktemp) +TEMPFILE=/tmp/uploaders +LISTFILE=/tmp/liste +EMPREINTE_NEW=/tmp/empreinte-new +EMPREINTE=/tmp/empreinte +HABITUES=/tmp/habitues # Liste des habitués du système +BLACKLISTES=/tmp/blacklistes +BLACKLISTES_NEW=${BLACKLISTES}-new +BLACKLISTE_ZAMOK=/var/zamok/CRANS/blacklist.cf +VERIF=0 # on envoie un mail à disconnect si VERIF=1 +RENEW=1 # si cette valeur reste à 1 on vide le fichier empreinte. +date=$(date +%A\ %d\ %B\ %Y\ \ %T) +date2=$(date +%A\ %d\ %B\ %Y) +date3=$(date +%d-%m-%Y-%T) +DIR=/usr/scripts/analyse_komaz + +# Si /tmp/exempts.pickle n'existe pas, on relance exempts.py +if [ ! -f /tmp/exempts.pickle ]; then + $DIR/exempts.py +fi + +# On renforce déjà la blacklist (au cas où le firewall a été relancé) +if [ -f $BLACKLISTES ]; then + while read machine ; do + if ! (/sbin/iptables -nL BLACKLIST_SRC | grep -q "^REJECT.*$machine "); then + /sbin/iptables -I BLACKLIST_SRC -s $machine -j REJECT + echo blacklist $machine + fi + done < $BLACKLISTES +fi + +# Retourne l'adresse email correspondant à la machine donnée en paramètre +# Le premier paramètre est le nom de la machine en FQDN (lucas.crans.org) +getAdresseMail() { + # Quel est l'adhérent de la machine ? + aid=$(ldapsearch -LLL -H ldaps://sila.crans.org -x -D "cn=admin,dc=crans,dc=org" \ + -w $(cat /etc/ldap.secret) -b "ou=data,dc=crans,dc=org" \ + host=$1 dn | head -1 | awk -F, '{print $2}') + # On affiche son adresse email + mail=$(ldapsearch -LLL -H ldaps://sila.crans.org -x -D "cn=admin,dc=crans,dc=org" \ + -w $(cat /etc/ldap.secret) -b "ou=data,dc=crans,dc=org" $aid \ + mail | awk -F': ' '($1 ~ /^mail$/) {if ($2 ~ /@/) print $2; else print $2"@crans.org"}') + if [[ -z $mail ]]; then + echo disconnect@crans.org + else + echo $mail + fi +} + +echo $date > $LISTFILE +echo " " >> $LISTFILE + +#/usr/scripts/analyse.pl -u -n 10 -f $LOGFILE --noperiod | egrep -v "zamok|komaz|sila" | \ + #grep -v "Ko" | awk '{print $1" "$3}' | sed 's/Mo/ /g' | sed 's/\.[0-9]*Go/000 /g' > $TEMPFILE + +$DIR/nacct.py -n -N 25| grep -v 'NoDNS_' > $outpF +if [ $? -eq 255 ]; then + echo "Problème avec nacct.py : lock" + exit 1 +fi + +cat $outpF | tail -25 | awk -F "|" '{print $1" "$7}' | egrep -v "136\.(1|2|3|4|6|8|9|10)$" > $TEMPFILE + +# Pour conserver un historique de la sortie de nacct.py +echo -e "\n$date" >> /tmp/nacct_history +cat $outpF >> /tmp/nacct_history + +if ! grep -q "^===========================================================================" $outpF ; then + echo "Pas de données ; problème avec nacct" + exit 1 +fi + +rm $outpF + + while read upload machine ; do # On lit dans $TEMPFILE + if ! (/sbin/iptables -nL BLACKLIST_SRC | grep -q "^REJECT.*$machine ") && [ $( echo $upload | cut -d '.' -f 1 ) -ge $LIMITE_SOFT ] + then # Si la machine dépasse la limite soft et n'est pas déjà blacklistée, + RENEW=0 # on ne vide pas le fichier empreinte + hostname=`host $machine | awk '/Name:/ {print $2}'` + if [ $( echo $upload | cut -d '.' -f 1 ) -ge $LIMITE_HARD ] + then + /sbin/iptables -I BLACKLIST_SRC -s $machine -j REJECT + echo blacklist $hostname + echo "$hostname FIREWALISÉ ! ($upload Mo)" >> $LISTFILE + echo "$date3 $hostname $upload" >> $LOG + echo "$machine" >> $BLACKLISTES + VERIF=1 + # Envoi d'un mail pour prévenir la personne (à modifier pour éventuellement utiliser sendmail) + # On doit tester la variable EMAIL ? + EMAIL=$(getAdresseMail $hostname) + echo $EMAIL + cat <> $LISTFILE + echo "$hostname $upload" >> $EMPREINTE_NEW + VERIF=1 # Pas d'envoi de mail dans ce cas + cat <> $LISTFILE + echo "$hostname $upload" >> $EMPREINTE_NEW + else # sinon on conserve les infos sur la machine + cat $EMPREINTE | grep $hostname >> $EMPREINTE_NEW + fi + fi + done < $TEMPFILE + + +if [ $RENEW -eq 1 ] ; then cat /dev/null > $EMPREINTE ; fi +if [ -f $EMPREINTE_NEW ] ; then mv $EMPREINTE_NEW $EMPREINTE ; fi + +# Reconnexion des machines déconnectées + +rm -f $BLACKLISTES_NEW +if [ -f $BLACKLISTES ]; then + while read machine ; do + # Est-ce que cette machine est toujours dans le TOP 12 ? + + # Juste pour vérifier où se situe le problème -- Nico + echo "$machine firewalisé en est encore à : $(awk '($2 == "'$machine'") {print $1}' $TEMPFILE)" + + if ! (grep -q $machine'$' $TEMPFILE) || \ + [ $LIMITE_SOFT -ge $(awk '($2 == "'$machine'") {print $1}' $TEMPFILE | cut -d '.' -f 1 ) ]; then + VERIF=1 + # On doit la reconnecter : on la vire de BLACKLISTES + grep -v $machine $BLACKLISTES > $BLACKLISTES_NEW + hostname=`host $machine | awk '/Name:/ {print $2}'` + # Reconnexion + if ! (grep -q "^$(echo $hostname | cut -f1 -d.)" $BLACKLISTE_ZAMOK ) + then # Si la machine est blacklistée sur zamok on ne reconnecte pas + /sbin/iptables -D BLACKLIST_SRC -s $machine -j REJECT + echo "La machine $hostname a été reconnectée. ($(awk '($2 == "'$machine'") {print $1}' $TEMPFILE) Mo)" >> $LISTFILE + EMAIL=$(getAdresseMail $hostname) + cat <> $LISTFILE + fi + echo reconnexion $machine + fi + done < $BLACKLISTES +fi + +# Bug, on n'enlève qu'une machine à chaque fois, pas trop grave +if [ -f $BLACKLISTES_NEW ]; then cat $BLACKLISTES_NEW > $BLACKLISTES; fi +# Eventuellement, appel de firewall blacklist si on n'a pas encore reconnecté + +if [ $VERIF -eq 1 ] + then + echo -e "\n-- \ncréé par autodisconnect." >> $LISTFILE + + cat $LISTFILE | /usr/bin/mail -s "upload temps réel - $date2" -a "From: disconnect@crans.org" -a "Reply-To: disconnect@crans.org" pessoles@crans.org +fi + +exit 0 diff --git a/archive/archives/analyse_komaz/exempts.py b/archive/archives/analyse_komaz/exempts.py new file mode 100755 index 00000000..ca2b0428 --- /dev/null +++ b/archive/archives/analyse_komaz/exempts.py @@ -0,0 +1,42 @@ +#! /usr/bin/env python +# -*- encoding: iso-8859-15 -*- + + +import cPickle,re + +exempts = { 'dst' : [], 'src_dst' : {} } + +""" +exempts['dst'] : liste de réseaux (exprimés en regex) vers lesquels le traffic est exempté +exempts['src_dst'] [ IP ] : idem, mais seulement en provenance de IP. + +""" + +exempts['dst'].append( '138\.231\..*' ) # * => *.ens-cachan.fr + +exempts['src_dst']['138.231.149.10'] = ['134\.157\.96\.216'] # rivendell.wifi.crans.org => *.ccr.jussieu.fr +exempts['src_dst']['138.231.141.187'] = ['129\.104\.17\..*', '134\.157\.96\.216' ] # barad-dur.crans => *.polytechnique.fr et *.ccr.jussieu.fr +exempts['src_dst']['138.231.136.7'] = ['195\.221\.21\.36'] # egon => ftp.crihan.fr pour rsync mirroir debian/fedor +exempts['src_dst']['138.231.143.62'] =['193\.49\.25\.152' , '138\.195\.34\..*' ] # ogre => centrale / labo fast (psud) +exempts['src_dst']['138.231.140.173'] =['195\.220\.131\.33' , '195\.220\.133\.98' ] # duckien => rebol.ephe.sorbonne.fr oss.ephe.sorbonne.fr, 28/1/2005 -- Bilou +exempts['src_dst']['138.231.137.230'] =['129\.175\.100\.221' ] # helene => orsay +exempts['src_dst']['138.231.136.7'] =['138\.195\..*' ] # egon => centrale paris +exempts['src_dst']['138.231.139.106'] =['138\.195\.74\..*' ] # schuss => centrale paris +exempts['src_dst']['138.231.139.106'] =['138\.195\.75\..*' ] # schuss => centrale paris +exempts['src_dst']['138.231.150.106'] =['157\.99\.164\.27' ] # sayan-ftp.wifi => chile.sysbio.pasteur.fr + +def compileRegs( exempts) : + L = [] + for s in exempts['dst'] : + L.append( re.compile(s) ) + exempts['dst'] = L + for k in exempts['src_dst'].keys() : + L = [] + for s in exempts['src_dst'] [k] : + L.append( re.compile(s) ) + exempts['src_dst'] [k] = L + + +compileRegs( exempts ) +fd=open("/tmp/exempts.pickle","wb") +cPickle.dump(exempts, fd) diff --git a/archive/archives/analyse_komaz/flood_scan.awk b/archive/archives/analyse_komaz/flood_scan.awk new file mode 100755 index 00000000..3aaaac80 --- /dev/null +++ b/archive/archives/analyse_komaz/flood_scan.awk @@ -0,0 +1,28 @@ +#!/usr/bin/awk -f +#Lecture des logs du firewall pour retourner la liste des machines floodant +# +#Arguments : +# +# Le second fichier contient les IP des machines supplémentaires à sortir. +# +# Format de sortie : Mois jour hh:mm:ss hostname nb_attques +# +# 02/2003 Frédéric Pauget + +{ if (FILENAME~"blacklist") { + if ($0=="") nextfile; + tentatives[$0]=0; + dern_tentative[$0]="Vieux 00 00:00:00"; } +} + +/.*Flood:IN=eth0.*/ { + gsub("SRC=","",$9); + tentatives[$9]++; + dern_tentative[$9]=$1" "$2" "$3; +} + +END{ + for (machine in tentatives){ + system("echo "dern_tentative[machine]" $(host "machine" 2>/dev/null | awk '/^Name/ {print $2}') "tentatives[machine]) + } +} diff --git a/archive/archives/analyse_komaz/keys/reload_squid b/archive/archives/analyse_komaz/keys/reload_squid new file mode 100644 index 00000000..79b42203 --- /dev/null +++ b/archive/archives/analyse_komaz/keys/reload_squid @@ -0,0 +1,12 @@ +-----BEGIN DSA PRIVATE KEY----- +MIIBuwIBAAKBgQDVcolphFz43syoaLG493G6rrZn3Jn6rr/4ur6MkLd1up3/nejW +VRgpJ4YkVQjjFwyPkN+jRE0TTnQrHM2SF8/y4o3FU/IPl2R6VjjCJj4lMTdBzU6B +POuW4VB5UdFE8iUESciCdznQtdQa8V5B8X8M8ONIFfGuVLNwL7TEhimMmwIVAMaQ +gPvdJou3MrXbzJO0LEOk49e7AoGAR1g8pp6HDbLg4aDLfU28JrgL5IJdCEmRg2ro +76wkcFLNNJkRapl2piRkIKF2cYxz80qX8XhidEFF0HV7d6fBQxdhCq/1IP0c1DDd +CeUmf16sG8mNo+yIDcz7TlZO+1pAUmgUJo+p33+tVkYcTrSMhYZuTuLPZQTwsoEo +4YHnftUCgYEAmHVzjTbE8EayE9uhwoIu9FEqV4Cc1LwHeUDFv4bnMx+RDbiNKTSW +AI9BbjhJparm7v40sd4VLlCtMuo1qdjXRxczSCLAGsYADSihNTREXUM0QpF8WGkU +nBYI/Hls1sLosoe1a5LNgdlj7Mcuy6YLRh4E5VlAss2pCpNtsyV7x6gCFD6C4YFb +kpcdKEVsLs4OR0sO6ErH +-----END DSA PRIVATE KEY----- diff --git a/archive/archives/analyse_komaz/keys/synchro_virus b/archive/archives/analyse_komaz/keys/synchro_virus new file mode 100644 index 00000000..4d9403c4 --- /dev/null +++ b/archive/archives/analyse_komaz/keys/synchro_virus @@ -0,0 +1,12 @@ +-----BEGIN DSA PRIVATE KEY----- +MIIBvAIBAAKBgQCpQTAp6QoAFb2S3T2K7MKUlhyON8ffPj8urJH7AuiJ3QhzqCi2 +VTb0YnM7xwZqPfpikVFNk7JX9T52IpHiOzqol/f/O7Gfjb53IqXmVr4fSBCOGsXG +zvJ2cXSuxk5uOewWreMChDYA9FWpjcA5BShHYPEKR332Y7vmyeJb482WbQIVAPsA +VphrX509AFqNbqTo6VdGQ8SxAoGAY87lkq9vVLDId6zy0+JlM8cPCa2ZqQJVnUWo +Wu5laBAoacrkJEAzKGY2zFVKNkiUh+biqQtBFc3a+2DW1zW1fCqUuVhWZcQafRB7 +QiZqYdIQm87lC+UIzQyTRD6Qt2v0WWDYdLgFaekoxAV0NeXQXd9dLRAGFzbwhIFS +7djTZq0CgYEAqAbx6tBT01OZg8w8gq+FCRh2gQYL/XbdDtBAlNHZD75b9BL1ZZwj +NWQccVddsRZ59CxX8BigynGDAW3n/vYEg8oFPtuXtpcg+X4cUe496GttIamLDMkf +nNSQ4O5asJw9yJBElx+DpHsmHmCOKWw+MEDAdmAoomspNQGFiwn0KUgCFQC6XHx7 +k5LurZXoG6YS67wXne9qzA== +-----END DSA PRIVATE KEY----- diff --git a/archive/archives/analyse_komaz/nacct.py b/archive/archives/analyse_komaz/nacct.py new file mode 100755 index 00000000..a0aad3e7 --- /dev/null +++ b/archive/archives/analyse_komaz/nacct.py @@ -0,0 +1,572 @@ +#! /usr/bin/env python +# -*- encoding: iso-8859-15 -*- + +## (C) Samuel Krempp 2001 +## krempp@crans.ens-cachan.fr +## Permission to copy, use, modify, sell and +## distribute this software is granted provided this copyright notice appears +## in all copies. This software is provided "as is" without express or implied +## warranty, and with no claim as to its suitability for any purpose. + +import os,sys,string,re,getopt,time +import cPickle # load/dump python objects +import socket + +""" nacct.py : parse the logs+dump of net-acct, then print a summary of the last 24h + + Usage : nacct.py [-N 20 ] : display the top-20 + [-c 1] : sort by the first column. + [-n] : display numeric IP (instead of resolved hostnames) + [-p nacct.pickle ] : where to put the persistence file + [-f net-acct.log] [-f net.acct.log.0] [-u net-acct.dump] + [-T = 24 ] : analyse data of the last hours + [-T = 2 ] : store data of the last days. + [-h host] : prints details for given host, from the *persistent* file only. + [-t =current time] : choose current time + e.g. : nacct.py -h toto.crans.org -t '2002 12 31 23:59' -T 48 + will print details for toto on the 48 hours before given time. +""" + + + +def isExempt(exempts, src_ip, dst_ip) : + is_exempt=0 + for r in exempts['dst'] : + if r.search(dst_ip) : + is_exempt = 1 + break + if is_exempt ==0 : + if exempts['src_dst'].has_key(src_ip) : + tmp=exempts['src_dst'][src_ip] + for r in tmp : + if r.search(dst_ip) : + is_exempt=1 + break + return is_exempt + + +def parseInputUntil ( f, prevline, conns_DB, exempts, end_time) : + """ reads lines of the file f _until_ the timestamp is >= end_time + data structure : + . exempts [ src ] [ dst ] : if exists, count this traffic separately ('exempted' bytes) + . conns_DB [ IP ] = [ PURE_upload_bytes, upload_bytes, download_bytes # normal bytes + , gPUL, gUL, gDL ] # 'exempted' bytes + (i.e. there are 6 counters, 3 for normal bytes, 3 for exempted bytes) + + optionnally, prev_line is a line to be parsed before processing the file + (used because we read next line's timestamps) + Returns : (nextline, last_time, got_nothing) + . nextLine : similar to prevLine + . last_time : a timestamp such that : . all read timeStamps are <= last_time + . all unread timeStamps are > last_time + in practice, last_time is either the greatest read timeStamp, or (nextline's timestamp) - 1 + . got_nothing : true iff the file was completely empty. + """ + got_nothing = 1 + nextline = "" # in case a line needs to be parsed at next call.. + last_time = 0 + + t=0 + src_ip="" + dst_ip="" + size=0 + + # local variable aliases (optimising lookup..) + lsplit = string.split; llong=long; + lregLAN=regLAN + end_time=repr(end_time) + + (prev_stime, prev_proto, prev_src_ip, prev_src_port, prev_dst_ip, prev_dst_port, prev_size, pd)\ + = ["" ] * 8 + prev_is_symmetric = 1 + prev_m_src = 0 + + lineN=0 + while(1) : + if not prevline : + line = f.readline() + lineN += 1 + else : + line = prevline + prevline="" + + if not line : break + got_nothing = 0 + + (stime, proto, src_ip, src_port, dst_ip, dst_port, size, pd) = lsplit(line, '\t', 7) + + if stime >= end_time : + nextline=line + # if a whole slice is absent in logs, we need to set last_time here : + if last_time =="" : last_time = int(stime) - 1 + break + else : + last_time = stime + + if 1 : # now really PARSE the line : + try: + size=llong(size) + except ValueError: + raise ValueError("INCORRECT size \"%s\" at line %d : %s " % (size, lineN, line) ) + + # Upload : + is_exempt=0 + if isExempt(exempts, src_ip, dst_ip) : + is_exempt = 3 + + try: + conns_DB[src_ip ][is_exempt +1] += size + except KeyError: + conns_DB[src_ip ] = [long(0)]*6 + conns_DB[src_ip ][is_exempt +1] = long(size) + + # PURE Upload : + is_symmetric = ( prev_src_ip == dst_ip and prev_src_port== dst_port and \ + prev_dst_ip == src_ip and prev_dst_port== src_port and \ + prev_stime == stime and prev_proto==proto ) + if is_symmetric : + try : + if prev_size > size : + conns_DB[prev_src_ip ][ prev_is_exempt + 0] += prev_size + else: + conns_DB[src_ip ][ is_exempt +0] += size + except KeyError: + print "proto=%s %s, src_ip=%s %s" % (prev_proto, proto, prev_src_ip, src_ip) + else : + if prev_is_symmetric == 0 : + # previous line has no symetrical transfer, assume PURE upload + conns_DB[prev_src_ip ][ prev_is_exempt + 0] += prev_size + # Download : + #m=lregLAN.search(dst_ip) + if 1: + dst_is_exempt=0 + if isExempt(exempts, dst_ip, src_ip) : + dst_is_exempt = 3 + try: + conns_DB[dst_ip ][dst_is_exempt +2] += size + except KeyError: + conns_DB[dst_ip ] = [long(0)]*6 + conns_DB[dst_ip ][dst_is_exempt +2] = long(size) + + (prev_stime, prev_proto, prev_src_ip, prev_src_port) = (stime, proto, src_ip, src_port) + (prev_dst_ip, prev_dst_port, prev_size) = (dst_ip, dst_port, size) + (prev_is_exempt, prev_is_symmetric) = (is_exempt, is_symmetric) + + return (nextline, int(last_time), got_nothing) + +def readSlices(inFile, db, exempts, slice0) : + """Loop on time slices, and parse the file step by step""" + prevLine=""; last_time=0 + slice= slice0 + while 1 : # loop on time_slice + end_time = (slice+1) * timeStep + u=db[slice] + (prevLine, lTime, got_nothing) = parseInputUntil(inFile, prevLine, db [slice], exempts, end_time) + if got_nothing : + break + + if lTime != 0 : last_time = lTime + + slice = max ( 1+slice, last_time / timeStep) + + if not db.has_key(slice) : + db[slice]={} + + return (last_time) + +def readFile(file_info, db, exempts ) : + """ reads -completely, partially, or not at all- a list of rotated files. + 1/ find the file in the list that is the first that contains new data + 2/ seek the position where we stopped and read the file, and the newer ones. + + file_info fields used here : + ['fnames'] : list of the rotated-files for one log, e.g. ['net-acct.log', 'net-acct.log.0'] + must be in anti-chronological order (else the script aborts) + ['prev_pos'] : offset-position pointig where we stopped reading at previous call + (because of log-rotates, we have to guess for which file this offset is..) + ['last_time'] : timestamp of the last read entry of this log + used to guess which file was opened previously, and which are new. + + + """ + if debug : + print "VeryBeg: lasttime = %d" % file_info.get('last_time', 777) + + file_info.setdefault('last_time',0) + # 1. + # Where did we stop, on the previous execution ? + # in the list of files, find which need update => [0, end_of_new[ : + times = [0]*len(file_info['fnames']) + min_time=0 + i=-1 + for name in file_info['fnames'] : + i += 1 + try : + inFile=open(name,"rb") + s = inFile.readline() + inFile.close() + except IOError : + continue + if not s : + continue + t = int( string.split(s, '\t')[0] ) + assert t > 1 + if min_time != 0 : assert t <= min_time + min_time = t + times[i] = t + + end_of_new=0 + if file_info['last_time']==0 : # first time we read those files + file_info['last_time'] = min_time-1 + end_of_new = len(times) + else : # we have archives about those files, see which files are new/updated + for t in times : + end_of_new += 1 + if t <= file_info['last_time'] : + break # the ones before are old ones. this is last updated one. + + FileNames=file_info['fnames'][0:end_of_new] + + if debug : + print "first data at %s(%d), fileTimes= %s" % \ + (time.asctime(time.localtime(file_info['last_time'])), + file_info['last_time'], times) + print "We need to read/update %s" % (FileNames) + + if file_info['last_time'] < min_time : + file_info['prev_pos'] = 0 + if file_info.get('reset_if_new', 0) : + # erase counters, they are no longer wanted. + for k in db.keys() : + del db[k] + + slice0= file_info['last_time'] / timeStep + + # 2. + # everything's ready, loop on files, and parse them. + FileNames.reverse() # start with the oldest + times=times[0:end_of_new] + Files_and_pos= zip( FileNames, [file_info['prev_pos']] + [0]*(end_of_new-1) ) + last_time=0; last_pos =0 + i=len(FileNames) + for (fname, pos) in Files_and_pos : + i -= 1 + if debug : + print " read %s => Seek to pos %d" % (fname, pos ) + + try: inFile = open(fname, "rb") + except IOError: + continue + inFile.seek(pos) + + db.setdefault(slice0, {} ) + last_time = readSlices(inFile, db, exempts, slice0) + if last_time != 0 : # we advanced in this file. + slice0= last_time / timeStep + elif i>= 1 : # guess an adequate slice0 to start with for next file : + slice0= times[i-1]/timeStep + last_pos = inFile.tell() + assert last_pos >= pos + inFile.close() + + # 3. + # Update file_info variables : + if 1: + if last_time != 0 : + assert file_info.get('last_time', 0) <= last_time + file_info['last_time'] = last_time + if last_pos > 0 : + file_info['prev_pos'] = last_pos + + if debug and file_info.has_key('last_time') : + print "VeryLast: lasttime = %d" % file_info['last_time'] + + +def loadPersist() : + data = {} + try: + data = cPickle.load( open(pickleName, "rb") ) + except IOError: + print "[can not load persistent data. Will need to read all the log-file.]" + return data + +def updateData() : + """ structure of data : + data['counts'] : the actual counters, split in separate databases : + ['dump'] : for bytes read in the dump + ['log'] : for bytes read in the log + each is a 'conns_DB', that holds one database per timeslice : + [] [IP] : 6-uple (see parseInputUntil) + data['files'] + ['ledump'] : is the file_info for the dump files. + ['lelog' ] : is the file_info for the regular log files + each 'file_info' DB has following keys : + 'fnames', 'prev_pos', 'last_time' (see readFile) + 'dbName' (the corresponding key into data['counts']) + 'reset_if_new' (optionnal, designed for the dump file) + """ + data = loadPersist() + + try: + exempts = cPickle.load( open(pickleExemptsName, "rb") ) + except IOError: + print "[can not load exmpts data. assuming no exempt]" + exempts = { 'dst' : [], 'src_dst' : {} } + + # initialise each database if needed : + for k in ['files', 'counts' ]: + data.setdefault(k, {} ) + Files=data['files'] + Files.setdefault('ledump', { 'dbName':'dump', 'fnames': dumpFNames, 'reset_if_new':1 }) + Files.setdefault('lelog', {'dbName':'log', 'fnames': logFNames } ) + + # overwrite the filenames stored in pickle with those from the command-line. + Files['ledump'] ['fnames'] = dumpFNames + Files['lelog'] ['fnames'] = logFNames + + + for k in Files.keys(): + data['counts'].setdefault(Files[k]['dbName'], {} ) + + for key in data['files'].keys() : + file_info = data['files'][key] + if debug: + print "file_info : %s " % file_info + print "Parsing %s into data['counts'][ %s ]" % ( file_info['fnames'], file_info['dbName']) + readFile( file_info, data['counts'] [file_info['dbName'] ], exempts ) + + return data + + +def printCounters(counts, mkHeaders=0) : + unit = 1e3 + if megas : unit = 1e6 + if mkHeaders : + return "%9s|%9s|%9s | %10s|%9s|%9s" % ('Pure UL ', 'Upload ', 'Download', + 'Exempt PUL', 'Exempt U', 'Exempt D' ) + + s="%9.3f|%9.3f|%9.3f | %9.3f|%9.3f|%9.3f" % (counts[0]/(unit), counts[1]/(unit), counts[2]/(unit), + counts[3]/unit, counts[4]/unit, counts[5]/unit) + return s + + +def bilan(DB, dbNames, duree, cur_time, disp_all = 0) : + slice0=int( (cur_time-duree) / timeStep ) + by_host={} + Nslices = {} + for db_key in dbNames : + Nslices[db_key] = 0 + for slice in DB[db_key].keys() : + if slice >= slice0 : + Nslices[db_key] += 1 + for host in DB[db_key][slice].keys() : + if disp_all or regLAN.search(host): + counts=DB[db_key][slice][host] + cur = by_host.setdefault(host, [long(0)] *len(counts) + [host] ) + for i in range(len(counts)): + cur[i] += counts[i] + liste=by_host.values() + liste.sort( lambda x, y: -cmp(x[sort_column], y[sort_column] )) # tri décroissant sur le N° champ + print " %5.1f h stats since %s. %d hour-slices found " % (duree/3600.0, + time.asctime(time.localtime(slice0*timeStep)), + max(Nslices.values()) ) + print printCounters(0, 1) + " | HOST" + print "="*77 + for l in liste[0:top10_length] : + # Test si le DNS de la machine existe (donc si la machine est inscrite au crans) + try: + host = socket.gethostbyaddr( l[-1] ) [0] + bad = 0 + except socket.error : + host = l[-1] + bad = 1 + + if not resolve_names : + # On veut l'IP + host = l[-1] + + if bad : + host = "NoDNS_" + host + + print printCounters(l)+ (" |%s" % host) + + +def detail_bilan(DB, hostName, IP, duree, cur_time) : + slice0 = int( (cur_time-duree) / timeStep ) + slice1 = slice0 + int( duree/timeStep) + slicePrints={} + Nslices = {} + db_key = 'log' + + Nslices[db_key] = 0 + for slice in range(slice0, slice1+1) : + pref = time.strftime("%Hh%M", time.localtime(slice*timeStep) ) + str = " (No record of this time-slice at all)" + if slice in DB[db_key].keys() : + str = " (No activity for this host in this time-slice)" + Nslices[db_key] += 1 + if IP in DB[db_key][slice].keys() : + str = printCounters( DB[db_key][slice][IP]) + + slicePrints[slice] = "%s|%s" %(pref,str) + + print "Comptes par tranches de %ds pour la machine %s" % (timeStep, hostName) + print "début : %s" % (time.asctime(time.localtime( slice0 * timeStep) ) ) + print ("%5s|" % 'time') + printCounters(0,1) + print "="*77 + for slice in range(slice0, slice1+1) : + l=slicePrints[slice] + print l + print "Fin : %s" % (time.asctime(time.localtime( -1 + (slice1+1) * timeStep) ) ) + + +def main(cur_time) : + data=updateData() + bilan(data['counts'], ['log', 'dump'], duree, cur_time, disp_all) + + # make persistent data as small as possible : + del data['counts'][ data['files']['ledump']['dbName'] ] + del data['files']['ledump'] + cur_t = time.time() + del_slices=[] + # -> get rid of old slices + for slice in data['counts']['log'].keys() : + if slice < (cur_t-sduree)/timeStep : + del_slices.append(slice) + for slice in del_slices : + del data['counts']['log'][slice] + + # get rid of useless extern hosts : + + for slice in data['counts']['log'].keys() : + d=data['counts']['log'][slice] + del_hosts=[] + for host in d.keys() : + m= store_all or regLAN.search(host) + # keep extern hosts that were used as big upload targets : download >= 1 Mo + if not m and d[host][2]< 1e6 : + del_hosts.append( host) + for host in del_hosts : + del d[host] + + cPickle.dump(data, open(pickleName,"wb") ) + + +################# +# global vars : +# + +timeStep=3600 # 1h slices +################# + + + +optlist, args = getopt.getopt(sys.argv[1:], "dkDsnc:p:f:h::u:L:N:T:t:") + +lock_name = "/var/lock/nacct.py" # Fichier de lock +store_all = 0 # if false, store only hosts matching regLAN +disp_all = 0 # if false, display only .. .. +sduree = 48*3600 # delete slices when they are that much old +duree = 0 # display the stats over this period +top10_length = 30 +sort_column= 0 # 0 : sort by PURE, 1 : by upload, 2: by download.. up to 6 (cf parseInputUntil) +resolve_names = 1 # resolve hostnames +logFNames= [] +dumpFNames=[] +debug=0 +megas=1 +detail_host="" +cur_time=time.time() +network="" +pickleName="" +pickleExemptsName = "" + +if os.path.isfile(lock_name) : + # Ya le lock + print "Lock existant (%s)" % lock_name + fd = open(lock_name, "r") + msg=fd.readlines() + fd.close() + pid=string.split(msg[0],'\n')[0] + msg=string.strip(string.join(msg[1:], '') ) + q = os.system("ps -o pid,tty,user,etime,command " +pid) + if q==256: + print "PID lock no trouvé => delock" + try : + os.remove(lock_name) + except : + None + else : + print "Script lockant en activité, sortie" + sys.exit(255) + +#Locking +lock_fd=open(lock_name, "w") +lock_comment = "%s" % os.getpid() +lock_fd.write(lock_comment) +lock_fd.close() + +for [key, val] in optlist : + if key == '-f' : + logFNames.append(val) + if key == '-u' : + dumpFNames.append(val) + if key == '-d' : + debug = 1 + if key == '-D' : + disp_all = 1 + if key == '-L' : + network = val + if key == '-h' : + detail_host = val + if key == '-t' : + cur_time = int( time.mktime(time.strptime(val,"%Y %m %d %H:%M")) ) + if key == '-N' : + top10_length = int(val) + if key == '-k' : + megas = 0 # use kilos instead of Megs + if key == '-p' : + pickleName=val + if key == '-s' : + store_all = 1 + if key == '-n' : + resolve_names = 0 + if key == '-T' : + if duree == 0 : + duree = int( float(val) * 3600 ) + else: + sduree = int( float(val) * 3600 * 24 ) + if key == '-c' : + sort_column = int(val) -1 + +if duree == 0: + duree = 24*3600 +if not logFNames : + logFNames = ["/var/log/net-acct/net-acct.log", "/var/log/net-acct/net-acct.log.0" ] +if not dumpFNames : + dumpFNames = ["/var/log/net-acct/dump" ] +if not network : + network = "^138\.231\.1((3[6-9]|4[0-9]|50|51).*)$" +regLAN=re.compile(network) +if not pickleName : + pickleName="/tmp/nacct.pickle" + +if not pickleExemptsName : + pickleExemptsName="/tmp/exempts.pickle" + + + +# launch : +if detail_host : + data=loadPersist() + IP = socket.gethostbyname( detail_host) + detail_bilan(data['counts'], detail_host, IP, duree, cur_time) +else : + data = main(cur_time) + +# Supression du lock +try : + os.remove(lock_name) +except : + None + diff --git a/archive/archives/analyse_komaz/rpc_scan.awk b/archive/archives/analyse_komaz/rpc_scan.awk new file mode 100755 index 00000000..237ab770 --- /dev/null +++ b/archive/archives/analyse_komaz/rpc_scan.awk @@ -0,0 +1,29 @@ +#!/usr/bin/awk -f +#Lecture des logs du firewall pour retourner la liste des machines attaquant +#sur le port 135 ou 6667 +# +#Arguments : +# +# Le second fichier contient les IP des machines supplémentaires à sortir. +# +# Format de sortie : Mois jour hh:mm:ss hostname nb_attques +# +# 02/2003 Frédéric Pauget + +{ if (FILENAME~"blacklist") { + if ($0=="") nextfile; + tentatives[$0]=0; + dern_tentative[$0]="Vieux 00 00:00:00"; } +} + +/.*Virus:IN=eth0.*/{ + gsub("SRC=","",$9); + tentatives[$9]++; + dern_tentative[$9]=$1" "$2" "$3; +} + +END{ + for (machine in tentatives){ + system("echo "dern_tentative[machine]" $(host "machine" 2>/dev/null | awk '/^Name/ {print $2}') "tentatives[machine]) + } +} diff --git a/archive/archives/analyse_komaz/virus_scan.sh b/archive/archives/analyse_komaz/virus_scan.sh new file mode 100755 index 00000000..0b8f65c0 --- /dev/null +++ b/archive/archives/analyse_komaz/virus_scan.sh @@ -0,0 +1,240 @@ +#!/bin/sh +############################################################################# +## Script de déconexion/reconnexion automatique pour virus de type blaster ## +## ## +## Principe : ## +## -> détection des attaques grâce aux logs du firewall ## +## lecture par *_scan.awk ## +## -> à partir du nombre d'attaques et de l'heure de dernière attaque ## +## déconnecte ou reconnecte des machines ## +## ## +## Frédéric Pauget 02/2003 ## +## 07/2004 adaptation pour scan de plusieurs types d'attaques ## +############################################################################# + +is_up() { + # Supression de la machine dans la table arp + /usr/sbin/arp -d $1 2> /dev/null + + # Teste si la machine founie est up + if fping -c1 $1 > /dev/null 2>&1 ; then + # Elle a répondu au ping + return 0 + fi + if /usr/sbin/arp $1 2>/dev/null | egrep -q '(no entry|incomplete)' ; then + # Elle n'est pas dans la table ARP + return 1 + else + # Elle est dans la table ARP + return 0 + fi +} + + +if [[ $1 ]] && [[ $1 = "--real-run" ]]; then + dry=false +else + dry=true +fi + +BLACKLIST_FINAL='/tmp/virus_blacklist' + +# Logs du firewall +FW_LOGS=/var/log/firewall/filtre.log + +# Prétraitement logs +tail -7200 $FW_LOGS > /tmp/fw_logs_light + +# Fonction utile : retourne l'IP d'une machine +ip() { + echo $(host $1 2>/dev/null | awk '{print $3}') +} + +# Fonction principale +scan() { +# signification des arguments : +# 1 : nombre d'attaques pour être considéré infecté +# 2 : nombre de secondes sans attaques pour être considéré sain +# 3 : script de scan +# 4 : repertoire de stockage fichiers +nb_att=$1 +nb_sec=$2 +SCRIPT=$3 + +# Liste des attaques +INFECTES=$4/infectes +# Machines décontaminées +RECO=$4/reconectes + +# Machines blacklistées +BLACKLIST=$4/blacklist + +# Fichiers temporaires supplémentaires +DIFF=/tmp/virus_diff +TMPFILE=/tmp/virus_scan + +# Doit exister, même vides +touch $RECO +touch $BLACKLIST + +if ! [[ -e $INFECTES ]]; then + dry=true + echo "dry-run mode forcé (fichier absent)" + touch $INFECTES +fi + +# Test préliminaire +if [[ ! -e $SCRIPT ]] ; then + echo "Erreur : $SCRIPT non trouvé" + exit 255 +fi + +# Conversion blacklist hostname -> IPs +if [[ "$(head -1 $BLACKLIST)" == "komaz" ]]; then + echo "Ancienne blackliste vide" + touch $BLACKLIST.ip +else + echo "Conversion blackliste..." + for i in $(cat $BLACKLIST | sort | uniq) + do + ip $i + done > $BLACKLIST.ip +fi + +echo "Détection des infectés..." +$SCRIPT $BLACKLIST.ip /tmp/fw_logs_light > $TMPFILE +# sort un fichier du type : +# Mois Jour Heure hostname nb d'attaques depuis les dernier logrotate + +echo "Traitement..." +mv $INFECTES $INFECTES.old +sort -r $TMPFILE > $INFECTES +echo -n "" > $TMPFILE + +# Différencee entre le fichier obtenu la au dernier lancement et le nouveau +diff -U 1000 $INFECTES.old $INFECTES | egrep -v '\-\-\-|\+\+\+|@@' > $DIFF + +if ! [[ -s $DIFF ]]; then + echo "Aucun changement par rapport au dernier scan." + cp $INFECTES $DIFF +fi + +# Traitement par host +for host in $(awk '{print $4}' $DIFF | sort | uniq) +do + if grep -q "\+.* $host " $DIFF && grep -q "\-.* $host " $DIFF ; then + # En + et - : variation + nb=$(echo $(awk '$4=="'$host'" {print $5}' $INFECTES) - $(awk '$4=="'$host'" {print $5}' $INFECTES.old) | bc) + echo -ne "Variation ($nb) " + if grep -q "^$host$" $BLACKLIST ; then + # Déja blacklisté, on remet + echo -ne "\033[1;31m(RESTE) " + echo $host >> $TMPFILE + elif [[ $nb -gt $nb_att ]] ; then + # Nouveau + echo -ne "\033[1;31m(NOUVEAU) " + echo $host >> $TMPFILE + else + # Pas assez de tentatives + echo -n "(PASSE) " + fi + + + elif grep -q "\+.* $host " $DIFF ; then + # Que en + donc c'est un nouveau + nb=$(awk '$4=="'$host'" {print $5}' $INFECTES) + if [[ $nb -gt $nb_att ]] ; then + echo -ne "\033[1;31mNOUVEAU ($nb) " + echo $host >> $TMPFILE + else + echo -ne "PASSE ($nb) " + fi + + elif grep -q "\-.* $host " $DIFF ; then + # Que en -, c'est un coup de logrotate, on remet les blacklistés. + if grep -q "^$host$" $BLACKLIST ; then + echo "RESTE : $host" + echo $host >> $TMPFILE + else + echo "Vieux : $host" + fi + + else + # Pas de variation + if grep -q "^$host$" $BLACKLIST ; then + echo -n "Pas de variation " + # UP or not ? + if is_up $host ; then + # UP + last=$(date -d "$(awk '$4=="'$host'" {print $1" "$2" "$3}' $INFECTES)" +%s 2>/dev/null) + # Cas ou c'est vraiment trop vieux + if [[ -z $last ]] ; then + last=0 + fi + now=$(date +%s) + t=$(echo "$now-$last" | bc) + if [[ $t -gt $nb_sec ]] ; then + # Reconexions automatique + echo -n " reconnexion" + echo $host >> $RECO + else + echo $host >> $TMPFILE + fi + + else + # Down + echo -ne "\033[1;41m(NO_PING)" + echo $host >> $TMPFILE + fi + + echo -ne "\033[0m : " + else + echo -n "Reste connecté " + fi + fi + echo -ne "\033[0m" + awk '$4=="'$host'" {print $1" "$2" "$3" "$4}' $INFECTES +done + +# Opérations finales +sort $TMPFILE > $BLACKLIST +} + +####################################################################### + +# Scan des attaques sur le 135 : +# 10 tentatives pour être considéré infecté +# 1h sans attaque pour être considéré désinfecté +echo -e "\033[1;33m###############################\nScan attaques port 135 ou 6667\033[1;0m" +scan 10 3600 /usr/scripts/analyse_komaz/rpc_scan.awk /var/tmp/rpc + +# Scan des floods : +# 100 tentatives pour être considéré infecté +# 1h sans attaque pour être considéré désinfecté +echo -e "\033[1;33m###############################\nScan floods\033[1;0m" +scan 100 3600 /usr/scripts/analyse_komaz/flood_scan.awk /var/tmp/flood + +# Constitution de la blackliste finale +cat /var/tmp/rpc/blacklist /var/tmp/flood/blacklist | sort | uniq > $BLACKLIST_FINAL.new + +if ! [[ -s $BLACKLIST_FINAL.new ]]; then + # Il n'y a personne, il faut au moins une machine sinon squid aime pas. + echo 'komaz' > $BLACKLIST_FINAL.new +fi + +if ! $dry ; then + if diff -q $BLACKLIST_FINAL $BLACKLIST_FINAL.new ; then + echo "Pas de changement dans la blackliste" + else + # Synchro blacklist + /usr/bin/rsync -C -a -e "ssh -i /usr/scripts/analyse_komaz/keys/synchro_virus" $BLACKLIST_FINAL.new root@sila.crans.org:/etc/squid/blacklist_infectes + # Reload de squid + /usr/bin/ssh -o StrictHostKeyChecking=no -i /usr/scripts/analyse_komaz/keys/reload_squid root@sila.crans.org squid reload + fi +else + echo "Dry mode : blackliste non copiée sur sila et squid non relancé" + echo "Utiliser l'option --real-run pour tout faire." +fi + +# On ne garde que la dernière version de la blacklist +mv $BLACKLIST_FINAL.new $BLACKLIST_FINAL diff --git a/archive/archives/arpanoid b/archive/archives/arpanoid new file mode 100755 index 00000000..0ba3b99c --- /dev/null +++ b/archive/archives/arpanoid @@ -0,0 +1,93 @@ +#!/usr/bin/python +# Dis, emacs, c'est du -*- python -*-, ça ! +# +# C.Chépélov, 19 janvier 1999. Suite à discussion avec Olivier DALOY, et +# des trucs louches dans ses logs. Merci, merci ARP !! + +import config +import pickle,string,os + +# Phase 1 : lire les données théoriques, les retrier pour être exploitables. + +ZONEDB = pickle.load(open(config.CFG_FILE_ROOT+"Zone.db","r")) + +THicn_by_mac = {} # ip, comment, name by MAC (théorique) +THncm_by_ip = {} # name, comment, MAC by IP (théorique) + +for name in ZONEDB.keys(): + (IP,comment,MAC) = ZONEDB[name] + THicn_by_mac[MAC] = (IP,comment,name) + THncm_by_ip[IP] = (name,comment,MAC) + +# Phase 2 : Lire les données réelles, les mettres dans des dicos pour être +# exploitables. + +arp = os.popen("arp -n","r") +arp.readline() + +ip_by_mac = {} +mac_by_ip = {} +while 1: + s = arp.readline() + if not s: break + sl = string.split(s) + try: + ip = sl[0] + + mac = "" + if (sl[1] != "ether") or (sl[2] == "(incomplete)"): raise "incomplete" + for c in string.lower(sl[2]): + if c in "0123456789abcdef": + mac = mac + c + if not ip or not mac: break + ip_by_mac[mac] = ip + mac_by_ip[ip] = mac + + except: + pass + +# Phase 3 : en fonction des gens qu'on a vus, faire une comparaison... +# d'abord, par IP vues : + +try: + problems = open("/var/log/arpanoid","r").readlines() +except: + problems = [] + # la liste des problèmes. Sera triée par ordre alphabétique + # et les problèmes rendus uniques. + # note: on récupère les vieux problèmes, on génèrera le même message + # plusieurs fois (pas grave, on virera les messages identiques) + +def log(s): + s = s + '\n' + if not s in problems: problems.append(s) + +for ip,mac in mac_by_ip.items(): + + if THicn_by_mac.has_key(mac): + thIP,comment,name = THicn_by_mac[mac] + if thIP == ip: pass # print name,' est clair (IP by MAC)' + else: + if THncm_by_ip.has_key(ip): victim,t1,t2 = THncm_by_ip[ip] + else: victim = "(inconnu)" + log("%s (%s) usurpe une adresse IP !!! (normal=%s,actuel=%s[%s])" % (name,comment,thIP,ip,victim)) + else: + log("MACHINE INCONNUE (intruse ?) MAC=%s !" % mac) + + if THncm_by_ip.has_key(ip): + name,comment,thMAC = THncm_by_ip[ip] + if thMAC == mac: pass # print name,' est clair (MAC by IP)' + else: + if THicn_by_mac.has_key(mac): t1,t2,name = THicn_by_mac[mac] + else: victim = "(inconnu)" + log("%s (%s) utilise une autre carte réseau !!! (normal=%s,actuel=%s[%s]" % (name,comment,thMAC,mac,victim)) + else: + diag = "(intruse ?)" + if THicn_by_mac.has_key(mac): + THip,comment,name = THicn_by_mac[mac] + diag = "%s de %s" % (name,comment) + log("MACHINE AVEC FAUX IP=%s (%s)!" % (ip,diag)) +problems.sort() + +print string.join(problems,"") + diff --git a/archive/archives/arpanoid-daily b/archive/archives/arpanoid-daily new file mode 100755 index 00000000..ee5a27aa --- /dev/null +++ b/archive/archives/arpanoid-daily @@ -0,0 +1,17 @@ +#!/bin/sh + +subject="logs ARPanoid `date` " +dest="root@crans.ens-cachan.fr" + +cat < /var/log/arpanoid 2>/dev/null diff --git a/archive/archives/arpanoid-frequently b/archive/archives/arpanoid-frequently new file mode 100755 index 00000000..5363d05b --- /dev/null +++ b/archive/archives/arpanoid-frequently @@ -0,0 +1,2 @@ +#!/bin/sh +/etc/CRANS/code/arpanoid > /var/log/arpanoid 2>/dev/null diff --git a/archive/archives/auto-claque b/archive/archives/auto-claque new file mode 100755 index 00000000..431d5c7d --- /dev/null +++ b/archive/archives/auto-claque @@ -0,0 +1,21 @@ +#!/bin/sh +# CC 2/2/1999 horrible kludge +# +# +# Pour des raisons bizarres (bug driver SMC ? matériel ?), les interfaces +# eth1 et eth2 bloquent régulièrement. +# en général, un claquage suffit à les relancer. Par ailleurs, un claquage +# ne bloque pas les communications -- on peut donc jouer à le faire +# régulièrement. +# + +#a enlever les commentaires! 19.02 +# 20/01/2000 jerome reactive le script + +echo "Claquage des interfaces" | /usr/bin/logger -t "AutoClaque" -p user.warn + +ifconfig eth0 down; ifconfig eth0 up; route add default gw 138.231.136.2 + +ifconfig eth1 down; ifconfig eth1 up +ifconfig eth2 down; ifconfig eth2 up 138.231.137.2 netmask 255.255.255.0 broadcast 138.231.137.255 +ifconfig eth3 down; ifconfig eth3 up diff --git a/archive/archives/beastie.c b/archive/archives/beastie.c new file mode 100644 index 00000000..add640af --- /dev/null +++ b/archive/archives/beastie.c @@ -0,0 +1,186 @@ +/* + * Un faux daemon. + * + * Copyright (c) 1999 Association CRANS. + * + * Auteur: Olivier Saut + * + * + */ + +#include +#include +#include + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include +#include +#include + +#ifndef LINUX +#include +#endif + + +#define kZamok_Tourne 1 +#define kPORT 514 /* Port de rshd */ +#define kMaxDaemonChildren 10 + +int nbrFils; + + +int daemon_init(void) { + pid_t pid; + + if((pid = fork())<0) + return (-1); + else if (pid !=0) { + (void)fprintf(stdout,"beastie launched : %d\n",pid); + exit(0); + } + setsid(); + chdir("/"); + umask(0); + return(0); +} + +/* Attention subtil (waitpid plutot que wait) :-) */ +void zombie(int signo) { + pid_t pid; + int stat; + + while ((pid = waitpid(-1, &stat, WNOHANG)) > 0) + nbrFils--; + + return; +} + +void sigterm(int signo) { + syslog(LOG_NOTICE,"beastie killed by SIGTERM."); + closelog(); + exit(EXIT_SUCCESS); +} + + +int main(int argc, char *argv[]){ +int serv_sock, client_sock, cli_len; +struct sockaddr_in serv_addr, cli_addr; +struct hostent *cli_ent; +char *clientname,*message; +int PORT; +pid_t pid; +sig_t previous_handler; +char buffer[1024]; + + if(argc>1) + PORT=atoi(argv[1]); + else + PORT=kPORT; + + if(setuid(getuid())) { + perror("Setuid."); + exit(EXIT_FAILURE); + } + + /* On se daemonize */ + if(daemon_init()) { + perror("Initialize as daemon."); + exit(EXIT_FAILURE); + } + + /* Pour éviter les zombies (vade retro...) */ + previous_handler = signal(SIGCHLD,(sig_t)zombie); + if(previous_handler==SIG_ERR) { + perror("Installing SIGCHLD handler"); + exit(EXIT_FAILURE); + } + + /* Pour détecter le SIGTERM */ + previous_handler = signal(SIGTERM,(sig_t)sigterm); + if(previous_handler==SIG_ERR) { + perror("Installing SIGTERM handler"); + exit(EXIT_FAILURE); + } + + nbrFils=0; + +#ifndef LINUX + setproctitle("ecoute le port %d",PORT); +#endif + + openlog("beastie", LOG_PID|LOG_CONS,LOG_LOCAL2); + + serv_sock = socket(AF_INET, SOCK_STREAM, 0); + if (serv_sock < 0) + { + perror("Creating server socket."); + exit(EXIT_FAILURE); + } + + /* On remplit la structure */ + bzero((char *) &serv_addr, sizeof (serv_addr)); + serv_addr.sin_family = AF_INET; + serv_addr.sin_addr.s_addr = htonl(INADDR_ANY); + serv_addr.sin_port = htons(PORT); + + /* Et on lie la socket au port */ + if (bind(serv_sock, (struct sockaddr *) &serv_addr, sizeof (serv_addr)) < 0) + { + perror("Binding server socket."); + exit(EXIT_FAILURE); + } + + listen(serv_sock,5); + + while(kZamok_Tourne) { + + cli_len = sizeof (cli_addr); + bzero((char *) &cli_addr, sizeof (cli_addr)); + + client_sock = accept(serv_sock, (struct sockaddr *) &cli_addr, &cli_len); + if (client_sock < 0) + { + perror("Accepting connection on server socket."); + break; + } + + /* On forke, on traite la requete dans le fils */ + /* Evaluation paresseuse */ + if((nbrFils++ < kMaxDaemonChildren) && ((pid=fork())==0) ) { + close(serv_sock); + clientname=inet_ntoa(cli_addr.sin_addr); /* On recupere le nom */ + /* Hehe t'es loggue mon pote */ + if(strcmp(clientname, "127.0.0.1")) { + if (!((cli_ent= gethostbyaddr((char *)&cli_addr.sin_addr.s_addr, + sizeof (u_long), AF_INET)) == (struct hostent *)0)) { + snprintf(buffer,1023, "Tentative de connexion de %s au port %d.",cli_ent->h_name,PORT); + syslog(LOG_NOTICE,buffer ); + } + else { + snprintf(buffer,1023, "Tentative de connexion de %s au port %d.",clientname,PORT); + syslog(LOG_NOTICE,buffer); + } + } + close(client_sock); + exit(0); + } + /* Fin du fork */ + + close(client_sock); + + } + + closelog(); + close(serv_sock); + exit( 0); +} diff --git a/archive/archives/cdecode b/archive/archives/cdecode new file mode 100755 index 00000000..e4ae4df8 --- /dev/null +++ b/archive/archives/cdecode @@ -0,0 +1,52 @@ +#!/usr/bin/env python +# Dis, emacs, c'est du -*- python -*- +# +""" +Programme fait pour encoder les chambres suivant le cryptage standard +pour le bâtiment G (le F peut aussi s'en servir). Inutile au B, il y a déjà un +autre mapping (les prises réseau sont numérotées différemment des chambres) + +Ceci ne résistera évidemment pas à une attaque cryptographique en règle. + +L'algorithme étant réellement trivial, il est raisonnable de laisser ce +script "chmod 700" et "chown root:root" ! + +C.Chepelov 5 novembre 1998 (présente implémentation), mise au point de +l'algorithme et première implémentation en Reverse Polish Lisp (HP48) à +l'automne 1997. + +Note : l'implémentation de référence est "cencode". L'algo est symétriqe... +""" + +import sys + +if len(sys.argv) != 2: + print "usage : %s " % sys.argv[0] + print "exemple : %s 9378 --> 126 " % sys.argv[0] + print + sys.exit(1) + +s_arg = sys.argv[1] +try: + arg = int(s_arg) + if arg >= 10000: raise "pas bon." +except: + print "L'argument doit être un nombre inférieur à 10000 !" + sys.exit(2) + +# C'est pas du tout optimal, mais on s'en fout ! +c1 = int(arg / 100) % 10 +c2 = int(arg / 10) % 10 +c3 = arg % 10 +s = int(arg / 1000) % 10 + +f3 = t1 = (10 - c1 + s) % 10 +f2 = t2 = (10 - c2 + s) % 10 +f1 = t3 = (10 - c3 + s) % 10 + +res = f1 * 100 + f2 * 10 + f3 +print "Chambre = %d " % res + + + + diff --git a/archive/archives/cencode b/archive/archives/cencode new file mode 100755 index 00000000..a54402f4 --- /dev/null +++ b/archive/archives/cencode @@ -0,0 +1,53 @@ +#!/usr/bin/env python +# Dis, emacs, c'est du -*- python -*- +# +""" +Programme fait pour encoder les chambres suivant le cryptage standard +pour le bâtiment G (le F peut aussi s'en servir). Inutile au B, il y a déjà un +autre mapping (les prises réseau sont numérotées différemment des chambres) + +Ceci ne résistera évidemment pas à une attaque cryptographique en règle. + +L'algorithme étant réellement trivial, il est raisonnable de laisser ce +script "chmod 700" et "chown root:root" ! + +C.Chepelov 5 novembre 1998 (présente implémentation), mise au point de +l'algorithme et première implémentation en Reverse Polish Lisp (HP48) à +l'automne 1997. + +""" + +import sys + +if len(sys.argv) != 2: + print "usage : %s " % sys.argv[0] + print "exemple : %s 126 --> 9378 " % sys.argv[0] + print "Ajouter G ou F selon bâtiment, W ou B selon gaine technique. " + print + sys.exit(1) + +s_arg = sys.argv[1] +try: + arg = int(s_arg) + if arg >= 1000: raise "pas bon." +except: + print "L'argument doit être un nombre inférieur à 1000 !" + sys.exit(2) + +# C'est pas du tout optimal, mais on s'en fout ! +c1 = int(arg / 100) % 10 +c2 = int(arg / 10) % 10 +c3 = arg % 10 + +s = (c1 + c2 + c3) % 10 + +f3 = t1 = (10 - c1 + s) % 10 +f2 = t2 = (10 - c2 + s) % 10 +f1 = t3 = (10 - c3 + s) % 10 + +res = s * 1000 + f1 * 100 + f2 * 10 + f3 +print "Code = %d " % res + + + + diff --git a/archive/archives/chmodwww b/archive/archives/chmodwww new file mode 100755 index 00000000..726ecd65 --- /dev/null +++ b/archive/archives/chmodwww @@ -0,0 +1,3 @@ +#!/bin/sh +chmod a+rx $HOME $HOME/www +chmod -R a+r $HOME/www/* diff --git a/archive/archives/claque-interfaces b/archive/archives/claque-interfaces new file mode 100755 index 00000000..e1ec8842 --- /dev/null +++ b/archive/archives/claque-interfaces @@ -0,0 +1,26 @@ +#!/bin/sh +# CC 2/2/1999 horrible kludge +# +# +# Pour des raisons bizarres (bug driver SMC ? matériel ?), les interfaces +# eth1 et eth2 bloquent régulièrement. +# en général, un claquage suffit à les relancer. Par ailleurs, un claquage +# ne bloque pas les communications -- on peut donc jouer à le faire +# régulièrement. +# + +#a enlever les commentaires! 19.02 +# 20/01/2000 jerome reactive le script + +echo "Claquage des interfaces" | /usr/bin/logger -t "Claque" -p user.warn + +ifconfig eth0 down; ifconfig eth0 up; route add default gw 138.231.136.2 + +ifconfig eth1 down; ifconfig eth1 up 138.231.136.130 netmask 255.255.252.0 broadcast 138.231.139.255 +#ifconfig eth2 down; ifconfig eth2 up +#ifconfig eth3 down; ifconfig eth3 up + +#ifconfig eth2 up 138.231.138.2 netmask 255.255.255.0 broadcast 138.231.138.255 +#ifconfig eth2:1 up 138.231.138.2 netmask 255.255.255.0 broadcast 138.231.138.255 +#ifconfig eth1:1 down 138.231.139.2 netmask 255.255.255.0 broadcast 138.231.139.255 +#ifconfig eth1 up diff --git a/archive/archives/configure_bornes_installparty b/archive/archives/configure_bornes_installparty new file mode 100755 index 00000000..b83d15d5 --- /dev/null +++ b/archive/archives/configure_bornes_installparty @@ -0,0 +1,144 @@ + +#! /bin/sh + +################################### +## Reconfigure une borne wifi ## +## du CR@NS en temps que routeur ## +################################### + +# Ce scipt est à utiliser une fois que les interfaces de la bornes +# sont configurées + +BORNE="install-party.crans.org" +DIR="/usr/scripts/install-party" +MACS="$DIR/MACS-install-party" + +######################################################################### + +CLEF="/usr/scripts/gestion/clef-wifi" +SSH="ssh -i $CLEF -o StrictHostKeyChecking=no $BORNE" +SCP="scp -i $CLEF -o StrictHostKeyChecking=no" + +usage () { + echo "Usage : " + echo " $0 --macs Modifie les MACS authorisées" + echo " $0 --services Relance les services" + echo " $0 --firewall Relance le firewall" +} + +error=1 + +######################################################################### + +# Edition du fichier de MACS + +if [[ "$1" == "--macs" ]] +then + /usr/bin/jed $MACS + error=0 +fi + +######################################################################### + +# Reconfiguration des services + +if [[ "$1" == "--services" ]] +then + # génération du script + echo "Création du script de reconfiguration" + cat > $DIR/boot.sh < /tmp/resolv.conf +echo "nameserver 138.231.136.6" >> /tmp/resolv.conf +echo "nameserver 138.231.136.10" >> /tmp/resolv.conf + +# alias pour le dns +echo "127.0.0.1 localhost" > /etc/hosts +echo "138.231.136.7 debian.ens-cachan.fr ftp.crihan.fr" >> /etc/hosts + +# dns +killall dnsmasq 2> /dev/null +/usr/sbin/dnsmasq + +# dhcp filaire +echo "start 192.168.0.10" > /tmp/udhcpd.conf +echo "end 192.168.0.254" >> /tmp/udhcpd.conf +echo "interface vlan1" >> /tmp/udhcpd.conf +echo "opt dns 192.168.0.1 138.231.136.6" >> /tmp/udhcpd.conf +echo "option subnet 255.255.255.0" >> /tmp/udhcpd.conf +echo "option dns 138.231.136.10" >> /tmp/udhcpd.conf +echo "opt router 192.168.0.1" >> /tmp/udhcpd.conf +killall udhcpd 2> /dev/null +/usr/sbin/udhcpd /tmp/udhcpd.conf + +EOF + + # envoi du fichier et execution + chmod 744 $DIR/boot.sh + echo "Envoi du script" + $SCP $DIR/boot.sh $BORNE:/tmp/boot.sh > /dev/null + + # execution du script + echo "Execution du script" + $SSH /tmp/boot.sh + + # destruction du fichier + rm -f $DIR/boot.sh + + error=0 +fi + +######################################################################### + +# Reconfiguration du firewall + +if [[ "$1" == "--firewall" ]] || [[ "$1" == "--macs" ]] +then + # génération du firewall + echo "Génération du firewall" + cat > $DIR/firewall.sh <> $DIR/firewall.sh + done + + echo "iptables -A POSTROUTING -t nat -o vlan0 -j MASQUERADE" >> $DIR/firewall.sh + + # envoi du fichier et execution + chmod 744 $DIR/firewall.sh + echo "Envoi du firewall" + $SCP $DIR/firewall.sh $BORNE:/tmp/firewall.sh > /dev/null + + # execution du script + echo "Lancement du firewall" + $SSH /tmp/firewall.sh + + # destruction du fichier + rm -f $DIR/firewall.sh + + error=0 +fi + +######################################################################### + +if [ "$error" = "1" ] +then + usage + exit 2 +fi diff --git a/archive/archives/cvsweb/commit-news.py b/archive/archives/cvsweb/commit-news.py new file mode 100755 index 00000000..7cf96ca9 --- /dev/null +++ b/archive/archives/cvsweb/commit-news.py @@ -0,0 +1,97 @@ +#!/usr/bin/python +# -*- coding: iso-8859-1 -*- +# +# Hack par CC 13/07/1999 pour envoyer sur crans.cvs-checkins un +# compte-rendu d'activité de ce qui se passe... +# +# modif par SamK 22/11/99: splitter les lignes, sinon nntplib refuse le message +# si ya des lignes trop longues.. +# +# modif par OS 15/05/00 ajout d'un Reply-To... +# +# Ajouts par NS 13/02/03 : signature qui explique un peu ce qui se passe, et +# création automatique d'un lien vers la page webcvs qui présente le diff. +# +# Modif par Benoit 11/12/04 : changement du repertoire ou sont loggue les +# commits et fermeture du fichier +# +# Intimement lié à CVSROOT/loginfo +# + +import nntplib,string,os,StringIO + +def LFsplit(s): + res="" + while len(s)>80 : + pos=string.find(s,' ',65,80) + if pos < 0 : + res=res+s[0:75]+'\n' + s=s[75:len(s)+1] + else : + res=res+s[0:pos]+'\n' + s=s[pos+1:len(s)+1] + if len(s)>0: + res=res+s + return res + +for uid in os.listdir('/var/local/cvsweb/checkins/'): + try: + so = [] + fi = open('/var/local/cvsweb/checkins/'+uid,'r') + + so.append("From: CVS admin \n" + \ + ("Subject: CVS Commit par %s\n" % uid)+ \ + "Organization: Crans Internet Site\n" + \ + "Newsgroups: crans.cvs-checkins\n" + \ + "Reply-To: Nounous \n" + \ + "Followup-To: crans.informatique\n" ) + + so.append("MIME-Version: 1.0\n" + \ + "Content-Type: text/plain\n") + so.append("\n") + envoie = 0 + links_base="http://www.crans.org/cgi-bin/cvsweb" + while 1: + s = fi.readline() + if not s: break + envoie = 1 + links=['Liens vers les diffs sur cvsweb :\n'] + diffok = 0 + + # On essaye de créer les liens vers cvsweb automatiquement. + try: + if s[0:3]=="web": + link=string.split(s) + for file in link[1:]: + file=string.split(file,",") + if not string.split(file[0],".")[-1] in ['jpg','jpeg','gif','png']: + links.append("%s/%s/%s.diff?r1=%s&r2=%s\n" % (links_base,link[0],file[0],file[1],file[2])) + diffok = 1 + # S'il y a au moins un diff affichable, on donne le lien. + if diffok: + links.append('\n') + s=string.join(links,'') + else: + s=LFsplit(s) + so.append(s) + except: + so.append(s) + # Avec une signature c'est plus propre. + so.append("\n" + \ + "-- \n" + \ + "Notification automatique des CVS commits sur le site du CR@NS.\n"+ \ + "Voir http://www.crans.org/cgi-bin/cvsweb/web/ pour accéder aux archives CVS complètes.") + + + # maintenant, on envoie : + + if envoie: + sso = string.join(so,'') + fso = StringIO.StringIO(sso) + nntplib.NNTP('news.crans.org').post(fso) + #print sso + fi.close() + os.unlink('/var/local/cvsweb/checkins/'+uid) + except: + raise + diff --git a/archive/archives/cvsweb/update.sh b/archive/archives/cvsweb/update.sh new file mode 100755 index 00000000..37b391e3 --- /dev/null +++ b/archive/archives/cvsweb/update.sh @@ -0,0 +1,19 @@ +#!/bin/sh +# Mise à jour de l'arborescence du site web +# Execute toutes les minutes (par root). + +OQP=/var/lock/cvsweb +CHEMIN=/var/local/cvsweb +REPOSITORY=/home/httpd/CVS-Repository/ + +if [ $CHEMIN/commit.todo -nt $CHEMIN/commit.ok ]; then + if ! [[ -f $OQP ]]; then + chown -R www-data:webcvs $REPOSITORY + chmod -R o-rwx $REPOSITORY + touch $OQP + cd /home/httpd/web + su www-data -c "/usr/bin/cvs -d $REPOSITORY update -P -d" >/dev/null 2>&1 + test -s $OQP || rm -f $OQP + su www-data -c "touch $CHEMIN/commit.ok" + fi +fi diff --git a/archive/archives/fan-speed b/archive/archives/fan-speed new file mode 100755 index 00000000..bca489a2 --- /dev/null +++ b/archive/archives/fan-speed @@ -0,0 +1,16 @@ +#!/bin/sh +#donne la vitesse du ventilateur CPU +echo 0 +#allez, on met 1000 au pif, ça nous rappellera que ce chiffre est bidon. --nico +#echo 1000 +#en attendant de remettre i2c sensors, cette ligne est commentée : +cat /proc/sys/dev/sensors/w83781d-i2c-0-2d/fan2 | tail -c 5 +# +#| head -c 4 +#echo $(cat /proc/sys/dev/sensors/w83781d-i2c-0-2d/temp2 | tail -c 5 | head -c 2 )"/1-30"|bc +#cat /proc/sys/dev/sensors/w83781d-i2c-0-2d/temp1 | sed -e 's/.*60.0 50.0 //' | sed -e's/\0//' -e 's/\.//' +#cat /proc/sys/dev/sensors/w83781d-i2c-0-2d/temp2 | sed -e 's/.*57.0 50.0 //' | sed -e's/\0//' -e 's/\.//' +#echo 10 +#echo 10 +echo +echo "Ventilation" diff --git a/archive/archives/mailCRANS b/archive/archives/mailCRANS new file mode 100755 index 0000000000000000000000000000000000000000..eb9ce787996c0872417377cc09f1b8daeae8e6b2 GIT binary patch literal 12698 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 + * + */ + +#include +#include +#include +#include +#include +#include +#include + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#define kPCGuestUID 502 +#define kCorbeauUID 536 +#define kNobodyUID 65534 +#define kRealUsers 500 + +/* Prototypes */ +int mk_tmpfile(); +void edit(); +int sendmail(char *name); +void help(); +int isValidUID(uid_t uid); +void mySig_handler(int iInt); + +/* Variables globales */ +char *gTempname; +uid_t gCurrent_UID; +uid_t gUid_start; +uid_t gUid_stop; +int gVerbose; +int gSimulate; + +/* Programme principal */ +int main(int argc, char *argv[]) +{ + + struct passwd *passwd_ent; + struct passwd *user; + char buf[1024]; + extern char *optarg; + extern int optind; + int ch ; + struct stat begin, end; + sig_t previous_handler; + char tildefn[MAXPATHLEN]; + int fd=-1; + + + gUid_start=kRealUsers; + gUid_stop=kNobodyUID; + gVerbose=0; + gSimulate=0; + while ((ch = getopt(argc, argv, "svhf:d:a:")) != -1) + switch (ch) { + case 'h': + help(); + break; + case 'v': + gVerbose=1; + break; + case 's': + gVerbose=1; + gSimulate=1; + break; + case 'f': + gTempname=optarg; + if ((fd = open(optarg, O_RDONLY, 0)) < 0) { + (void)fprintf(stderr, + "myname: %s: %s\n", optarg, strerror(errno)); + exit(1); + } + break; + case 'd': + gUid_start=atoi(optarg); + break; + case 'a': + gUid_stop=atoi(optarg); + break; + + } + argc -= optind; + argv += optind; + + previous_handler = signal(SIGTERM & SIGINT,(sig_t) mySig_handler); + if(previous_handler==SIG_ERR) { + (void)fprintf(stderr,"Erreur lors de l'installation du sighandler."); + exit(EXIT_FAILURE); + } + + + if(gVerbose) + fprintf(stdout,"mailCRANS by OS. Version 0.1\n"); + + if(fd==-1) { + fd=mk_tmpfile(); + user=getpwuid(getuid()); + sprintf(buf,"From: %s\nSubject: \nReply-To: \nContent-Type: text/plain; charset=iso-8859-1", user->pw_name); + + if (write (fd,(void *)buf,strlen(buf)) < 0) { + close(fd); + fprintf(stderr, "Erreur en écriture."); + exit(EXIT_FAILURE); + } + + (void) fsync(fd); + if(fstat(fd,&begin)) { + perror("Erreur stat(1)"); + close(fd); + exit(EXIT_FAILURE); + } + + + (void) edit(); + + if(stat(gTempname,&end)) { + perror("Erreur stat(2)"); + close(fd); + exit(EXIT_FAILURE); + } + + if (begin.st_mtime == end.st_mtime) { + warnx("No changes made : exiting"); + close(fd); + (void)unlink(gTempname); + exit(EXIT_FAILURE); + } + } + + + + setpwent(); + + while((int)(passwd_ent=(struct passwd *)getpwent())) { + gCurrent_UID=passwd_ent->pw_uid; + + if(isValidUID(gCurrent_UID)) + if(sendmail(passwd_ent->pw_name )) { + exit(EXIT_FAILURE); + } + else + usleep(250000); + } + + endpwent(); + + (void)unlink(gTempname); + /* Bon on efface le fichier parasite */ + (void)strcpy((char *)tildefn,gTempname); + (void)strcat((char *)tildefn,"~"); + + if(!access(tildefn,F_OK)) + (void)unlink(tildefn); + + return 0; +} + +int isValidUID(uid_t uid) { + if(uidgUid_stop) + return 0; + + if((uid==kPCGuestUID)|| (uid==kCorbeauUID) || (uid==kNobodyUID)) + return 0; + + return 1; +} + +void mySig_handler(int iInt) { + (void) fprintf(stdout,"\n Signal %d intercepté.\n",iInt); + (void) fprintf(stderr,"Le programme s'est arreté sur l'uid : %d\n",gCurrent_UID); + exit(EXIT_SUCCESS); +} + +int mk_tmpfile() +{ + int fd; + char p[MAXPATHLEN]; + p[MAXPATHLEN-1]='\0'; + + strcpy(p, "/tmp/EAll.XXXXXX"); + if ((fd = mkstemp(p)) == -1) + err(1, "%s", p); + gTempname = malloc(strlen(p)); + (void)strncpy(gTempname,p,strlen(p)); + if(gVerbose) + fprintf(stdout,"Tempfile name : %s\n",gTempname); + return (fd); +} + +void edit() +{ + int pstat; + int editpid; + char *p, *editor; + + if (!(editor = getenv("EDITOR"))) + editor = _PATH_VI; + if ((p = strrchr(editor, '/'))) + ++p; + else + p = editor; + + if (!(editpid = fork())) { + errno = 0; + execlp(editor, p, gTempname, NULL); + _exit(errno); + } + for (;;) { + editpid = waitpid(editpid, (int *)&pstat, WUNTRACED); + errno = WEXITSTATUS(pstat); + (void) fprintf(stderr,"\n *** %d ***\n",WEXITSTATUS(pstat)); + if (editpid == -1) + exit(EXIT_FAILURE); + else if (WIFSTOPPED(pstat)) + raise(WSTOPSIG(pstat)); + else if (WIFEXITED(pstat) && errno == 0) + break; + else + exit(EXIT_FAILURE); + } + editpid = -1; +} + + + +int sendmail(char *pw_name) { + int res=0; + char *buff; + int length; + buff=malloc(1024); + + buff[1023]='\0'; + buff[0]='\0'; + + (void)strcat((char *)buff,(const char *)"cat "); + (void)strcat(buff,(const char *) gTempname); + (void)strcat(buff, " | sendmail "); + (void)strcat(buff, pw_name); + if(gVerbose) + fprintf(stdout,"\n ** %s ** \n", buff); + if(!gSimulate) + res=system(buff); + return res; +} + +void help() { + fprintf(stdout,"usage: mailCRANS [-v] [-s] [-f filename] [-{d,a} uid]\n"); + fprintf(stdout," -v : mode bavard\n"); + fprintf(stdout," -f filename : envoie le fichier en argument\n"); + fprintf(stdout," (rajouter une ligne Subject: en première ligne du fichier pour avoir un sujet\n"); + fprintf(stdout," -d uid : envoie à partir de l'UID argument\n"); + fprintf(stdout," -a uid : arrete après l'UID argument\n"); + fprintf(stdout," -s : mode simulation."); + exit(EXIT_SUCCESS); + +} + + diff --git a/archive/archives/mailvirus b/archive/archives/mailvirus new file mode 100644 index 00000000..e05277d3 --- /dev/null +++ b/archive/archives/mailvirus @@ -0,0 +1,21 @@ +Bonjour, + +Suite à la récente multiplication d'un virus nommé 'Klez' sur le réseau +CRANS, nous avons décidé de faire en sorte temporairement que tous les mails +contenant un fichier attaché nommé .exe, .pif, .bat ou .scr soient +automatiquement rejetés par notre serveur, sans autre forme d'avertissement. +La situation restera ainsi jusqu'à mise à jour des antivirus communément +répandus. + +Pendant cette période, si vous attendez effectivement un mail contenant une +pièce jointe nommé de la sorte, essayez de faire en sorte que l'expéditeur +en change l'extension (par exemple en en faisant un .zip). + +En raison de la rapidité extrême avec laquelle se répand ce virus, nous +serons éventuellement amenés à déconnecter du réseau les machines infectées. + +http://www.sarc.com/avcenter/venc/data/w32.klez.e@mm.html + + +-- +Nicolas Stransky diff --git a/archive/archives/netrestart b/archive/archives/netrestart new file mode 100755 index 00000000..b00b99be --- /dev/null +++ b/archive/archives/netrestart @@ -0,0 +1,7 @@ +#! /bin/sh +# 5 retries (6 en tout), quiet. +if ! fping 138.231.136.2 -r 5 -q; +then + echo "irts AUTOTEST failed" | logger -s -p daemon.err -t "/id/netrestart" + /id/network reload +fi diff --git a/archive/archives/news-cancel b/archive/archives/news-cancel new file mode 100755 index 00000000..0a288877 --- /dev/null +++ b/archive/archives/news-cancel @@ -0,0 +1,128 @@ +#!/bin/sh +## +## news-cancel +## +## Made by stransky +## Login stransky +## +## Started on dim 13 jan 2002 02:30:56 CET Nicolas STRANSKY +## Last update ven 19 sep 2003 14:21:27 CEST Nicolas STRANSKY +## +## Script pour annuler ou modérer un message de news. +## +## V 1.0 : utilisation de la commande ctlinnd cancel. +## V 2.0 : utilisation des commandes control cancel et supersede pour assurer +## la propagation des modifications effectuées. + + +if [[ "${ORIG_LOGNAME-$SUDO_USER}" = "" ]] + then moderateur=`who am i | awk '{print $1}'` + else moderateur=${ORIG_LOGNAME-$SUDO_USER} +fi + +ovfiles=$(grep "^[[:digit:]]" /etc/news/buffindexed.conf | cut -d ':' -f 2 | tr "\n" " ") +groupe=adm +tempF=$(tempfile -d /tmp -p "newscancel") +tempF2=$(tempfile -d /tmp -p "newscancelcommentaire") +tempF3=$(tempfile -d /tmp -p "newscancelmessage") + +VERIF () { + ligne=`grep -h --binary-files=text " $1 " $ovfiles | head -n 1 | awk -F "\t" '{print $1"~"$2"~"$3"~"$9}'` + auteur=`echo $ligne | awk -F "~" '{print $3}'` + titre=`echo $ligne | awk -F "~" '{print $2}'` + newsgroup=`echo $ligne | awk -F "~" '{print $4}' | awk '{print $3}' | awk -F : '{print $1}'` + #numero=`echo $ligne | awk -F "~" '{print $1}'` + numero=`echo $ligne | awk -F "~" '{print $4}' |awk -v VAR1=$newsgroup 'BEGIN {RS = " "} ; $0 ~ VAR1 {print $1}' | awk -F ":" '{print strtonum($2)}'` + + if [[ $ligne != "" ]] ; then + echo "il s'agit du message \"$titre\", numéro $numero, posté par $auteur dans $newsgroup" + echo "" + echo -n "exact ? [o/n] " + read confirmation + case $confirmation in + o*|O*) + ;; + + *) + echo "On ne fait rien." + exit 0 + ;; + esac + else + echo "Aucun message ne correspond à cette ID" + exit 1 + fi + + } + +SAUVEGARDE () { + echo "Sauvegarde du message dans /root/moderes/..." + sleep 1 + rep=`echo $newsgroup | sed 's/\./\//g'` + cp /var/spool/news/articles/$rep/$numero /root/moderes/$newsgroup'.'$numero.nws + echo "$1 de $newsgroup.$numero" > $tempF + echo " " >> $tempF + echo "modérateur : $moderateur" >> $tempF + echo "commentaires : " > $tempF2 + chown $moderateur.$groupe $tempF2 + /bin/su $moderateur -c "$EDITOR $tempF2" + cat $tempF2 >> $tempF + echo "Envoi du mail aux modérateurs..." + cat $tempF | mutt -nx -a /root/moderes/$newsgroup'.'$numero.nws -s "moderation de $newsgroup.$numero par $moderateur" moderateurs@crans.org + rm -f $tempF $tempF2 + echo " " + } + + +EDITION () { + cp /var/spool/news/articles/$rep/$numero $tempF3 + chown $moderateur.$groupe $tempF3 + /bin/su $moderateur -c "$EDITOR $tempF3" + (sleep 1 ; echo "mode reader" ; sleep 1 ; echo "group $newsgroup" ; sleep 1 ; echo post ; sleep 1 ; echo "Supersedes: $1" ; cat $tempF3 | egrep -v "^Message-ID:|^NNTP-Posting|^Path:|^X-Trace:|^X-Complaints-To:|^Xref:" ; echo '.' ; sleep 1 ; echo quit) | nc 138.231.136.3 119 + rm -f $tempF3 + } + +CANCEL () { +# echo -n 'throttling inn... ' +# /bin/su news -c "/usr/lib/news/bin/ctlinnd throttle 'article canceling'" +# echo "canceling article $1" +# /bin/su news -c "/usr/lib/news/bin/ctlinnd cancel $1" +# +# echo -n 'starting inn... ' +# /bin/su news -c "/usr/lib/news/bin/ctlinnd go ''" + + (sleep 1 ; echo "mode reader" ; sleep 1 ; echo "group $newsgroup" ; sleep 1 ; echo post ; sleep 1 ; echo "Control: cancel $1" ; echo "From: $moderateur@crans.org" ; echo "Subject: Moderation" ; echo "Newsgroups: $newsgroup" ; echo -e "\n" ; echo "This post has been moderated with news-cancel." ; echo '.' ; sleep 1 ; echo quit) | nc news.crans.org 119 + } + + + +if [ $UID -eq 0 ] +then + case $1 in + \<*@*\>) + VERIF $1 + echo "Edition ou Annulation du message ? [E/A] " + read action + case $action in + e*|E*) + SAUVEGARDE Edition + EDITION $1 + ;; + a*|A*) + SAUVEGARDE Annulation + CANCEL $1 + ;; + *) + echo "attention, il n'y a eu ni édition ni annulation. relancer le script" + ;; + esac + ;; + *) + echo "usage : news-cancel ''" + ;; + esac + +else + echo "You must be root to launch this command." + exit 1 +fi diff --git a/archive/archives/pop3s-restart b/archive/archives/pop3s-restart new file mode 100755 index 00000000..2db5a51b --- /dev/null +++ b/archive/archives/pop3s-restart @@ -0,0 +1,7 @@ +#/bin/sh +PIFILE="/var/run/stunnel.tunnel-pop.pid" +OPTIONS="-d 995 -r 110 tunnel-pop -p /etc/ssl/certs/stunnel-ptt.pem" + +if [ $(netstat -l --tcp | grep -c ' \*:pop3s') -eq 0 ]; then + start-stop-daemon --start --quiet --pidfile $PIDFILE --exec /usr/sbin/stunnel -- $OPTIONS ; +fi diff --git a/archive/archives/redpopup b/archive/archives/redpopup new file mode 100755 index 00000000..d6e5f7ee --- /dev/null +++ b/archive/archives/redpopup @@ -0,0 +1,9 @@ +#!/bin/sh +PATH=/bin:/usr/bin:/sbin:/usr/sbin:/usr/local/bin:/usr/local/sbin +PYTHONPATH=/usr/lib/python-1.5/ + +cd /etc/CRANS +echo $1 $2 $3 $4 $5 > /tmp/last.popup.log +exec python /etc/CRANS/code/redpopup.py $1 $2 $3 $4 $5 >&2 2>/tmp/last.popup.err + + diff --git a/archive/archives/redpopup.py b/archive/archives/redpopup.py new file mode 100755 index 00000000..07856db6 --- /dev/null +++ b/archive/archives/redpopup.py @@ -0,0 +1,76 @@ +#!/usr/bin/python +# -*- python -*- +import sys,time,os,pickle,string,popen2,random + +FORKLEN = 5 +TIMEOUT = 15 # une machine a 15 secondes pour recevoir un popup ! + +def do_bomb(Machines): + time.sleep(random.random()) + if len(Machines) < FORKLEN: + for mach in Machines: + begin = time.time() + print "ré-expédition SMBpopup à ",mach + fd = popen2.Popen3("/etc/CRANS/code/SMBMessage %s %s %s" % (from_whom,mach,msgfile)) + while 1: + time.sleep(1) + if fd.poll() != -1: break # fini ! (cool) + if (time.time() - begin) > TIMEOUT: break + del fd + else: + Half = len(Machines) / 2 + + pid = os.fork() + if pid == 0: + # child + do_bomb(Machines[:Half]) + else: + # parent + do_bomb(Machines[Half:]) + try: + os.waitpid(pid,0) + except: + pass + # à ce stade, on a éliminé toute récursion, tant pile que process... + # croisons les doigts !!! + + +if len(sys.argv) < 4: + sys.stderr.write('Attend 3 arguments !\n') + sys.exit(1) + +Zone = pickle.load(open(CFG_READ_DIR+"Zone.db","r")) + +from_whom = sys.argv[1] +from_where = sys.argv[2] +msgfile = sys.argv[3]+"-red" +message = open(sys.argv[3],"r").readlines() + +message.insert(0,("Message de %s (@%s) à ALL : \n-----\n" % (from_whom,from_where))) +open(msgfile,"w").writelines(message) + + +# pour gagner du temps, on n'envoie le message qu'aux machines qui sont +# (probablement) vivantes. Pour gagner encore plus de temps, on fait +# confiance au cache ARP (15 minutes) + +Alive = [] +arp = os.popen("arp -a","r") +while 1: + s = arp.readline() + if not s: break + mach = string.split(string.split(s)[0],'.')[0] + if mach[:5] == 'zamok': continue # évitons les boucles infininies... + if Zone.has_key(mach): Alive.append(mach) +print Alive + +arp.close() + +#maintenant, au boulot... +do_bomb(Alive) +unlink(msgfile) +unlink(sys.argv[3]) + + + + diff --git a/archive/archives/restart-all b/archive/archives/restart-all new file mode 100755 index 00000000..f76196f9 --- /dev/null +++ b/archive/archives/restart-all @@ -0,0 +1,12 @@ +#!/bin/zsh -p +# suid !! + +id + +echo "restarting the named (DNS) :" +kill -HUP `cat /var/run/named.pid` + +echo "restarting the DHCP : " +#kill -TERM `cat /var/run/dhcpd.pid` || true +#/usr/sbin/dhcpd +/etc/init.d/dhcp reload diff --git a/archive/archives/save-etc b/archive/archives/save-etc new file mode 100755 index 00000000..8d821dc3 --- /dev/null +++ b/archive/archives/save-etc @@ -0,0 +1,15 @@ +#!/bin/sh + +freq="$1" +nb=$2 + +pref="/backups/tars/etc${freq}-" +suff=`date +"%Y-%m-%d--%H-%M-%S.tgz"` +tarball="${pref}${suff}" + +umask 077 +cd / +tar zcf ${tarball} etc usr/lib/cgi-bin usr/scripts root/scripts home/corbeau/scripts +rm `ls -t ${pref}* | tail +$nb` + +#df diff --git a/archive/archives/sendmail-vit-il b/archive/archives/sendmail-vit-il new file mode 100755 index 00000000..a5e24a7d --- /dev/null +++ b/archive/archives/sendmail-vit-il @@ -0,0 +1,24 @@ +#!/usr/bin/env python +# -*- Python -*- + +# teste si notre sendmail fonctionne encore. + +from socket import * +import sys + +OK = 0 + +host = "localhost" +if len(sys.argv) > 1: + host = sys.argv[1] + +s = socket(AF_INET,SOCK_STREAM) +try: + s.connect(host,25) + data = s.recv(3) + OK = ("220" == data) + s.close() +except: + OK = 0 + +sys.exit(not OK) diff --git a/archive/archives/snmp/Des5200.mib b/archive/archives/snmp/Des5200.mib new file mode 100644 index 00000000..b86012d8 --- /dev/null +++ b/archive/archives/snmp/Des5200.mib @@ -0,0 +1,1277 @@ +-- DES-3216 SWITCH HUB MIB V0.02 08/02/97 + + DES3216-MIB + + DEFINITIONS ::= BEGIN + + IMPORTS + enterprises, IpAddress, + TimeTicks,Counter + FROM RFC1155-SMI + DisplayString, PhysAddress + FROM RFC1213-MIB + TRAP-TYPE + FROM RFC-1215 + OBJECT-TYPE + FROM RFC-1212; + + -- OwnerString ::= DisplayString + -- This data type is used to model an administratively + -- assigned name of the owner of a resource. This + -- information is taken from the NVT ASCII character set. + -- It is suggested that this name contain one or more + -- of the following: + -- IP address, management station name, network manager's + -- name, location, or phone number. + -- SIZE (0..xx) + + + dlink OBJECT IDENTIFIER ::= { enterprises 171 } + dlink-products OBJECT IDENTIFIER ::= { dlink 10 } + dlink-Des3216Prod OBJECT IDENTIFIER ::= { dlink-products 9 } + dlink-Des3216ProdId OBJECT IDENTIFIER ::= { dlink-Des3216Prod 1 } + des3216SwHub OBJECT IDENTIFIER ::= { dlink-Des3216Prod 2 } + + + dlink-mgmt OBJECT IDENTIFIER ::= { dlink 11 } + + agentConfigInfo OBJECT IDENTIFIER ::= { dlink-mgmt 1 } + des3216series OBJECT IDENTIFIER ::= { dlink-mgmt 9 } + + -- agentBasicInfo + + agentBasicInfo OBJECT IDENTIFIER ::= { agentConfigInfo 1 } + + agentRuntimeSwVersion OBJECT-TYPE + SYNTAX DisplayString (SIZE (0..12)) + ACCESS read-only + STATUS mandatory + DESCRIPTION + "This is a textual description of the runtime software version + and revision. If the version number is one and revision number is + zero agentRuntimeSwVersion would be 'Ver. 1.0'" + ::= { agentBasicInfo 1 } + + agentPromFwVersion OBJECT-TYPE + SYNTAX DisplayString (SIZE (0..12)) + ACCESS read-only + STATUS mandatory + DESCRIPTION + "This is a textual description of the agent PROM firmware version + and revision. If the version number is one and revision number is + zero agentPromFwVersion would be 'Ver. 1.0'" + ::= { agentBasicInfo 2 } + + agentHwRevision OBJECT-TYPE + SYNTAX DisplayString (SIZE (0..12)) + ACCESS read-only + STATUS mandatory + DESCRIPTION + "This is a textual description of the hardware revision. + The display string should look like 'Rev. A1'" + ::= { agentBasicInfo 3 } + + agentMgmtProtocolCapability OBJECT-TYPE + SYNTAX INTEGER { + other(1), + snmp-ip(2), + snmp-ipx(3), + snmp-ip-ipx(4) + } + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The network management protocol(s) supported by this agent." + ::= { agentBasicInfo 4 } + + -- agentMibcapabilityTable + + agentMibCapabilityTable OBJECT-TYPE + SYNTAX SEQUENCE OF AgentMibCapabilityEntry + ACCESS not-accessible + STATUS mandatory + DESCRIPTION + "A list of MIB capability entries supported by this agent." + ::= { agentBasicInfo 5 } + + agentMibCapabilityEntry OBJECT-TYPE + SYNTAX AgentMibCapabilityEntry + ACCESS not-accessible + STATUS mandatory + DESCRIPTION + "A MIB capability entry contains objects describing a particular MIB + supported by this agent." + INDEX { agentMibCapabilityIndex } + ::= { agentMibCapabilityTable 1 } + + AgentMibCapabilityEntry ::= SEQUENCE { + agentMibCapabilityIndex + INTEGER, + agentMibCapabilityDescr + DisplayString, + agentMibCapabilityVersion + INTEGER, + agentMibCapabilityType + INTEGER + } + + agentMibCapabilityIndex OBJECT-TYPE + SYNTAX INTEGER + ACCESS read-only + STATUS mandatory + DESCRIPTION + "A list of agentMibCapabilityDescr entries." + ::= { agentMibCapabilityEntry 1 } + + agentMibCapabilityDescr OBJECT-TYPE + SYNTAX DisplayString (SIZE (0..16)) + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The name of the MIB supported by the agent." + + ::= { agentMibCapabilityEntry 2 } + + agentMibCapabilityVersion OBJECT-TYPE + SYNTAX INTEGER + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The version of the MIB specified in this entry." + ::= { agentMibCapabilityEntry 3 } + + agentMibCapabilityType OBJECT-TYPE + SYNTAX INTEGER { + other(1), + standard(2), + proprietary(3), + experiment(4) + } + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The type of the MIB specified in this entry." + ::= { agentMibCapabilityEntry 4 } + + -- agentMgmtRole OBJECT-TYPE + -- SYNTAX INTEGER { + -- other(1), + -- primary-master(2), + -- backup-master(3) + -- } + -- ACCESS read-only + -- STATUS mandatory + -- DESCRIPTION + -- "The role of this agent within this particular hub stack" + -- ::= { agentBasicInfo 6 } + + + -- agentBasicConfig + + agentBasicConfig OBJECT IDENTIFIER ::= { agentConfigInfo 2 } + + agentSwUpdateMode OBJECT-TYPE + SYNTAX INTEGER { + other(1), + network-load(2), + out-of-band-load(3) + } + ACCESS read-write + STATUS + mandatory + DESCRIPTION + "The download media used by the system to download the + runtime software." + ::= { agentBasicConfig 1 } + + agentSwUpdateCtrl OBJECT-TYPE + SYNTAX INTEGER { + other(1), + disabled(2), + enabled(3) + } + ACCESS read-write + STATUS mandatory + DESCRIPTION + "Current status of software download control. The setting + is effective the next time you reset or power on the hub." + ::= { agentBasicConfig 2 } + + agentBootFile OBJECT-TYPE + SYNTAX DisplayString (SIZE (0..64)) + ACCESS read-write + STATUS mandatory + DESCRIPTION + "The name of the file to be downloaded from the TFTP server when + software update is enabled." + ::= { agentBasicConfig 3 } + + agentSystemReset OBJECT-TYPE + SYNTAX INTEGER { + other(1), + reset(2), + no-reset(3) + } + ACCESS read-write + STATUS mandatory + DESCRIPTION + "This object indicates the agent system reset state. + Setting this object to no-reset(3) has no effect. + Setting this object to reset(2) will reset the agent. + The agent always returns no-reset(3) when this object is read." + ::= { agentBasicConfig 4 } + + agentRs232PortConfig OBJECT-TYPE + SYNTAX INTEGER { + other(1), + console(2), + out-of-band(3) + } + ACCESS read-write + STATUS mandatory + DESCRIPTION + "The current setting of RS-232C port. + The RS-232C port can be configured as the console port or + used for out-of-band connection." + ::= { agentBasicConfig 5 } + + agentOutOfBandBaudRateConfig OBJECT-TYPE + SYNTAX INTEGER { + other(1), + baudRate-1200 (2), + baudRate-2400 (3), + baudRate-9600 (4), + baudRate-19200(5) + } + ACCESS read-write + STATUS mandatory + DESCRIPTION + "The baud rate setting for out of band connection. + The baud rate for the console interface is always 9600." + ::= { agentBasicConfig 6 } + + agentOutOfBandDialNumber OBJECT-TYPE + SYNTAX DisplayString (SIZE (0..32)) + ACCESS read-write + STATUS mandatory + DESCRIPTION + "The dial out phone number for out of band to establish + a connection. This entry is used for reference only." + ::= { agentBasicConfig 7 } + + + + -- agentIpProtocolConfig + + agentIpProtoConfig OBJECT IDENTIFIER ::= { agentConfigInfo 3 } + + agentIpNumOfIf OBJECT-TYPE + SYNTAX INTEGER + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The total number of IP interfaces supported by this agent." + ::= { agentIpProtoConfig 1 } + + agentIpIfTable OBJECT-TYPE + SYNTAX SEQUENCE OF AgentIpIfEntry + ACCESS not-accessible + STATUS mandatory + DESCRIPTION + "A list of IP interface entries supported by the agent." + ::= { agentIpProtoConfig 2 } + + agentIpIfEntry OBJECT-TYPE + SYNTAX AgentIpIfEntry + ACCESS not-accessible + STATUS mandatory + DESCRIPTION + "An agentIPIfEntry contains information about a particular + IP interface." + INDEX { agentIpIfIndex } + ::= { agentIpIfTable 1 } + + AgentIpIfEntry ::= SEQUENCE { + agentIpIfIndex + INTEGER, + agentIpIfAddress + IpAddress, + agentIpIfNetMask + IpAddress, + agentIpIfDefaultRouter + IpAddress, + agentIpIfMacAddr + PhysAddress, + agentIpIfType + INTEGER + } + + agentIpIfIndex OBJECT-TYPE + SYNTAX INTEGER (1..255) + ACCESS read-only + STATUS mandatory + DESCRIPTION + "This object uniquely identifies the IP interface number + in agentIpIfTable. + This value should never greater than agentIpNumOfIf" + ::= { agentIpIfEntry 1 } + + agentIpIfAddress OBJECT-TYPE + SYNTAX IpAddress + ACCESS read-write + STATUS mandatory + DESCRIPTION + "The IP address of the interface." + ::= { agentIpIfEntry 2 } + + agentIpIfNetMask OBJECT-TYPE + SYNTAX IpAddress + ACCESS read-write + STATUS mandatory + DESCRIPTION + "The IP net mask for this interface." + ::= { agentIpIfEntry 3 } + + agentIpIfDefaultRouter OBJECT-TYPE + SYNTAX IpAddress + ACCESS read-write + STATUS mandatory + DESCRIPTION + "The default gateway for this IP interface." + ::= { agentIpIfEntry 4 } + + agentIpIfMacAddr OBJECT-TYPE + SYNTAX PhysAddress + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The MAC address of this IP interface. + For interfaces which do not have such an address + (e.g., a serial line), this object should contain + an octet string of zero length." + ::= { agentIpIfEntry 5 } + + agentIpIfType OBJECT-TYPE + SYNTAX INTEGER { + other(1), -- none of the following + ethernet-csmacd(6), + slip(28) -- generic SLIP + } + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The physical layer interface of the IP interface." + ::= { agentIpIfEntry 6 } + + agentIpBootServerAddr OBJECT-TYPE + SYNTAX IpAddress + ACCESS read-write + STATUS mandatory + DESCRIPTION + "The IP Address of Boot Server." + ::= { agentIpProtoConfig 3 } + + agentIpBootProtocol OBJECT-TYPE + SYNTAX INTEGER { + other(1), + bootp-tftp(2), + tftp(3) + } + ACCESS read-write + STATUS mandatory + DESCRIPTION + "The software download protocol used for software update." + ::= { agentIpProtoConfig 4 } + + agentIpGetIpFromBootpServer OBJECT-TYPE + SYNTAX INTEGER { + other(1), + disabled(2), + enabled(3) + } + ACCESS read-write + STATUS mandatory + DESCRIPTION + "This object indicates whether the agent get its system IP address + from BootP server at start up." + ::= { agentIpProtoConfig 5 } + + agentIpUnauthAddr OBJECT-TYPE + SYNTAX IpAddress + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The IP address of an unauthorized SNMP packet." + ::= { agentIpProtoConfig 6 } + + agentIpUnauthComm OBJECT-TYPE + SYNTAX DisplayString (SIZE (0..20)) + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The community string of an unauthorized SNMP packet." + ::= { agentIpProtoConfig 7 } + + agentIpLastBootServerAddr OBJECT-TYPE + SYNTAX IpAddress + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The last IP address used as Boot server IP address." + ::= { agentIpProtoConfig 8 } + + agentIpLastIpAddr OBJECT-TYPE + SYNTAX IpAddress + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The last IP address used as the agent system IP address." + ::= { agentIpProtoConfig 9 } + + -- agentIptrapMangerTable + + agentIpTrapManagerTable OBJECT-TYPE + SYNTAX SEQUENCE OF AgentIpTrapManagerEntry + ACCESS not-accessible + STATUS mandatory + DESCRIPTION + "A list of trap manager entries to which to send SNMP traps ." + ::= { agentIpProtoConfig 10 } + + agentIpTrapManagerEntry OBJECT-TYPE + SYNTAX AgentIpTrapManagerEntry + ACCESS not-accessible + STATUS mandatory + DESCRIPTION + "This entry contains the particular trap manager settings." + INDEX { agentIpTrapManagerIpAddr } + ::= { agentIpTrapManagerTable 1 } + + AgentIpTrapManagerEntry ::= SEQUENCE { + agentIpTrapManagerIpAddr + IpAddress, + agentIpTrapManagerComm + DisplayString, + agentIpTrapManagerStatus + INTEGER + } + + agentIpTrapManagerIpAddr OBJECT-TYPE + SYNTAX IpAddress + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The IP address to receive SNMP traps from this device." + ::= { agentIpTrapManagerEntry 1 } + + agentIpTrapManagerComm OBJECT-TYPE + SYNTAX DisplayString (SIZE (0..20)) + ACCESS read-write + STATUS mandatory + DESCRIPTION + "The community string of the SNMP trap packet sent to + the trap manager." + ::= { agentIpTrapManagerEntry 2 } + + agentIpTrapManagerStatus OBJECT-TYPE + SYNTAX INTEGER { + other(1), + disabled(2), + enabled(3) + } + ACCESS read-write + STATUS mandatory + DESCRIPTION + "This object indicates whether or not the trap should be send to this + trap manager." + ::= { agentIpTrapManagerEntry 3 } + + + + des3216MIB OBJECT IDENTIFIER ::= { des3216series 1 } + swDevicePackage OBJECT IDENTIFIER ::= { des3216MIB 1 } + swPortPackage OBJECT IDENTIFIER ::= { des3216MIB 2 } + + swDeviceInfo OBJECT IDENTIFIER ::= { swDevicePackage 1 } + + swDevInfoTotalNumOfPort OBJECT-TYPE + SYNTAX INTEGER + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The number of ports within this switch hub. This value + is the sum of the ports of each group within this + switch hub." + ::= { swDeviceInfo 1 } + + swDevInfoNumOfPortOnUse OBJECT-TYPE + SYNTAX INTEGER + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The number of ports in this switch hub connected to the + segment or end stations." + ::= { swDeviceInfo 2 } + + -- swDevInfoSerialNum OBJECT-TYPE + -- SYNTAX INTEGER + -- ACCESS read-only + -- STATUS mandatory + -- DESCRIPTION + -- "The serial number of this switch hub." + -- ::= { swDeviceInfo 3 } + + swDevInfoDesc OBJECT-TYPE + SYNTAX DisplayString (SIZE (0..64)) + ACCESS read-only + STATUS mandatory + DESCRIPTION + "A textual description of this switch hub." + ::= { swDeviceInfo 3 } + + -- swDevInfoRepeaterType OBJECT-TYPE + -- SYNTAX INTEGER { + -- other(1), + -- baseband-10-Mb(2), + -- baseband-100-Mb-class-I(3), + -- baseband-100-Mb-class-II(4) + -- } + -- ACCESS read-only + -- STATUS mandatory + -- DESCRIPTION + -- "This objects indicates the CSMA/CD repeater type. The type + -- value matches the clause number of the standard that specifies + -- the particular repeater, with further numerical identification + -- for the repeater classes within the same clause." + -- ::= { swDeviceInfo 5 } + + swDevInfoPortType OBJECT-TYPE + SYNTAX INTEGER { + other(1), + portType-UTP(2), + portType-AUI(3), + portType-Fiber(4), + portType-BNC(5), + portType-Option-module-RAS(6), + portType-Option-module-100Bridge(7) + } + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The connector type of this port." + ::= { swDeviceInfo 4 } + + swDevInfoHwRev OBJECT-TYPE + SYNTAX DisplayString (SIZE (0..12)) + ACCESS read-only + STATUS mandatory + DESCRIPTION + "A textual description of the hardware revision of + this switch bub." + ::= { swDeviceInfo 5 } + + swDevInfoSystemUpTime OBJECT-TYPE + SYNTAX TimeTicks + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The value of sysUpTime at the time the switch + entered its current operational state. If the + current state was entered prior to the last re- + initialization, then this object contains a zero + value." + ::= { swDeviceInfo 6 } + + swDevInfoFrontPanelLedStatus OBJECT-TYPE + SYNTAX OCTET STRING (SIZE (0..127)) + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The current status of front panel LED." + ::= { swDeviceInfo 7 } + + -- swDevInfoMdiSwitch OBJECT-TYPE + -- SYNTAX INTEGER { + -- other(1), + -- mdi(2), + -- mdi-x(3) + -- } + -- ACCESS read-only + -- STATUS mandatory + -- DESCRIPTION + -- "The current setting of the MDI switch." + -- ::= { swDeviceInfo 9 } + + swDevInfoDramSize OBJECT-TYPE + SYNTAX INTEGER + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The DRAM size of the switch hub" + ::= { swDeviceInfo 8 } + + swDevInfoGroupTypeTable OBJECT-TYPE + SYNTAX SEQUENCE OF SwDevInfoGroupTypeEntry + ACCESS not-accessible + STATUS mandatory + DESCRIPTION + "A list of MIB capability entries supported by this agent." + ::= { swDeviceInfo 9 } + + swDevInfoGroupTypeEntry OBJECT-TYPE + SYNTAX SwDevInfoGroupTypeEntry + ACCESS not-accessible + STATUS mandatory + DESCRIPTION + "A MIB capability entry contains objects describing a particular MIB + supported by this agent." + INDEX { swDevInfoGroupIndex } + ::= { swDevInfoGroupTypeTable 1 } + + SwDevInfoGroupTypeEntry ::= SEQUENCE { + swDevInfoGroupIndex + INTEGER, + swDevInfoGroupMediaType + INTEGER + } + + swDevInfoGroupIndex OBJECT-TYPE + SYNTAX INTEGER + ACCESS read-only + STATUS mandatory + ::= { swDevInfoGroupTypeEntry 1 } + + swDevInfoGroupMediaType OBJECT-TYPE + SYNTAX INTEGER + ACCESS read-only + STATUS mandatory + ::= { swDevInfoGroupTypeEntry 2 } + + + + + swDeviceCtl OBJECT IDENTIFIER ::= { swDevicePackage 2 } + + swDevCtrlDisableLearningState OBJECT-TYPE + SYNTAX INTEGER { + other(1), + disabled(2), + enabled(3) + } + ACCESS read-write + STATUS mandatory + DESCRIPTION + "This Object indicate the switch hub wether or not learn any + new addresses from the Ethernet ports." + ::= { swDeviceCtl 1 } + + swDevCtrlReset OBJECT-TYPE + SYNTAX INTEGER { + other(1), + reset(2), + no-reset(3) + } + ACCESS read-write + STATUS mandatory + DESCRIPTION + "This object indicates the switch hub reset state. + Setting this object to no-reset(3) has no effect. + Setting this object to reset(2) will reset the agent. + The agent always returns no-reset(3) when this object is read." + ::= { swDeviceCtl 2 } + + swPortInfoTable OBJECT-TYPE + SYNTAX SEQUENCE OF SwPortInfoEntry + ACCESS not-accessible + STATUS mandatory + DESCRIPTION + "A list of port information entries." + ::= { swPortPackage 1 } + + swPortInfoEntry OBJECT-TYPE + SYNTAX SwPortInfoEntry + ACCESS not-accessible + STATUS mandatory + DESCRIPTION + "This entry contains the port information, like porttype, + linkstatus..." + INDEX { swPortInfoGroupIndex,swPortInfoIndex } + ::= { swPortInfoTable 1 } + + SwPortInfoEntry ::= SEQUENCE { + swPortInfoGroupIndex + INTEGER, + swPortInfoIndex + INTEGER, + swPortInfoType + INTEGER, + swPortInfoPartitionStatus + INTEGER, + swPortInfoLinkStatus + INTEGER, + swPortInfoDuplexMode + INTEGER, + swPortInfoNegotiationStatus + INTEGER, + swPortInfoSpeedStatus + INTEGER + } + + swPortInfoGroupIndex OBJECT-TYPE + SYNTAX INTEGER + ACCESS read-only + STATUS mandatory + DESCRIPTION + "This object identifies the port within the group for + which this entry contains infomation." + ::= { swPortInfoEntry 1 } + + swPortInfoIndex OBJECT-TYPE + SYNTAX INTEGER + ACCESS read-only + STATUS mandatory + DESCRIPTION + "This object indicate switch hub port number." + ::= { swPortInfoEntry 2 } + + swPortInfoType OBJECT-TYPE + SYNTAX INTEGER { + other(1), + portType-UTP(2), + portType-AUI(3), + portType-Fiber(4), + portType-BNC(5), + portType-Option-module-RAS(6), + portType-Option-module-100Bridge(7) + } + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The connector type of this port." + ::= { swPortInfoEntry 3 } + + swPortInfoPartitionStatus OBJECT-TYPE + SYNTAX INTEGER { + other(1), + no-partion(2), + partion(3) + } + ACCESS read-only + STATUS mandatory + DESCRIPTION + "This Object indicate the port partition status." + ::= { swPortInfoEntry 4 } + + swPortInfoLinkStatus OBJECT-TYPE + SYNTAX INTEGER { + other(1), + link-pass(2), + link-fail(3) + } + ACCESS read-only + STATUS mandatory + DESCRIPTION + "This Object indicate the port link test status." + ::= { swPortInfoEntry 5 } + + swPortInfoDuplexMode OBJECT-TYPE + SYNTAX INTEGER { + other(1), + half(2), + full(3) + } + ACCESS read-only + STATUS mandatory + DESCRIPTION + "This Object indicate the port work in which duplex mode." + ::= { swPortInfoEntry 6 } + + swPortInfoNegotiationStatus OBJECT-TYPE + SYNTAX INTEGER { + other(1), + disabled(2), + enabled(3) + } + ACCESS read-only + STATUS mandatory + DESCRIPTION + "This Object indicate the port work in auto negotiation + enabled or disabled." + ::= { swPortInfoEntry 7 } + + swPortInfoSpeedStatus OBJECT-TYPE + SYNTAX INTEGER { + other(1), + speed-10M(2), + speed-100M(3) + } + ACCESS read-only + STATUS mandatory + DESCRIPTION + "This Object indicate the port trasmit rate is in 10M bps + or 100M bps ." + ::= { swPortInfoEntry 8 } + + swPortCtrlTable OBJECT-TYPE + SYNTAX SEQUENCE OF SwPortCtrlEntry + ACCESS not-accessible + STATUS mandatory + DESCRIPTION + "A list of port state control entries." + ::= { swPortPackage 2 } + + swPortCtrlEntry OBJECT-TYPE + SYNTAX SwPortCtrlEntry + ACCESS not-accessible + STATUS mandatory + DESCRIPTION + "This entry control the port state, like filter broadcast, + linkstatus..." + INDEX { swPortCtrlGroupIndex,swPortCtrlIndex } + ::= { swPortCtrlTable 1 } + + SwPortCtrlEntry ::= SEQUENCE { + swPortCtrlGroupIndex + INTEGER, + swPortCtrlIndex + INTEGER, + swPortCtrlAdminState + INTEGER, + swPortCtrlDuplexState + INTEGER, + swPortCtrlLinkStatusAlarmState + INTEGER, + swPortCtrlFilterBcastState + INTEGER, + swPortCtrlForwardUnknowState + INTEGER, + swPortCtrlPartitionStatus + INTEGER, + swPortCtrlNegotiationStatus + INTEGER, + swPortCtrlSpeedStatus + INTEGER + } + + swPortCtrlGroupIndex OBJECT-TYPE + SYNTAX INTEGER + ACCESS read-only + STATUS mandatory + DESCRIPTION + "This object identifies the port within the group for + which this entry contains infomation." + ::= { swPortCtrlEntry 1 } + + swPortCtrlIndex OBJECT-TYPE + SYNTAX INTEGER + ACCESS read-only + STATUS mandatory + DESCRIPTION + "This object indicate switch hub port number." + ::= { swPortCtrlEntry 2 } + + swPortCtrlAdminState OBJECT-TYPE + SYNTAX INTEGER { + other(1), + disabled(2), + enabled(3) + } + ACCESS read-write + STATUS mandatory + DESCRIPTION + "Port control administration state." + ::= { swPortCtrlEntry 3 } + + swPortCtrlDuplexState OBJECT-TYPE + SYNTAX INTEGER { + other(1), + half(2), + full(3) + } + ACCESS read-write + STATUS mandatory + DESCRIPTION + "Indicating the port work in half/full duplex mode." + ::= { swPortCtrlEntry 4 } + + swPortCtrlLinkStatusAlarmState OBJECT-TYPE + SYNTAX INTEGER { + other(1), + disabled(2), + enabled(3) + } + ACCESS read-write + STATUS mandatory + DESCRIPTION + "Depending on this object to determine wether send a trap or + not when link status change ." + ::= { swPortCtrlEntry 5 } + + swPortCtrlFilterBcastState OBJECT-TYPE + SYNTAX INTEGER { + other(1), + forward(2), + discard(3) + } + ACCESS read-write + STATUS mandatory + DESCRIPTION + "Port control filter broadcast to all port or discard." + ::= { swPortCtrlEntry 6 } + + swPortCtrlForwardUnknowState OBJECT-TYPE + SYNTAX INTEGER { + other(1), + disabled(2), + enabled(3) + } + ACCESS read-write + STATUS mandatory + DESCRIPTION + "Port control forward unknow packet state." + ::= { swPortCtrlEntry 7 } + + swPortCtrlPartitionStatus OBJECT-TYPE + SYNTAX INTEGER { + other(1), + disabled(2), + enabled(3) + } + ACCESS read-write + STATUS mandatory + DESCRIPTION + "Depending on this object determine to send a trap or not when + the port was partition." + ::= { swPortCtrlEntry 8 } + + swPortCtrlNegotiationStatus OBJECT-TYPE + SYNTAX INTEGER { + other(1), + disabled(2), + enabled(3) + } + ACCESS read-write + STATUS mandatory + DESCRIPTION + "Depending on this object determine to enable NWAY or disable." + ::= { swPortCtrlEntry 9 } + + swPortCtrlSpeedStatus OBJECT-TYPE + SYNTAX INTEGER { + other(1), + speed-10M(2), + speed-100M(3) + } + ACCESS read-write + STATUS mandatory + DESCRIPTION + "Depending on this object to determining this port transmit + rate is 10M bps or 100M bps." + ::= { swPortCtrlEntry 10} + + swPortCounterTable OBJECT-TYPE + SYNTAX SEQUENCE OF SwPortCounterEntry + ACCESS not-accessible + STATUS mandatory + DESCRIPTION + "A list of port MIB statistic Counter entries." + ::= { swPortPackage 3 } + + swPortCounterEntry OBJECT-TYPE + SYNTAX SwPortCounterEntry + ACCESS not-accessible + STATUS mandatory + DESCRIPTION + "This entry include all the port Counter which support by + DES3216, like Bytes received, Bytes Sent ..." + INDEX { swPortCounterGroupIndex,swPortCounterIndex } + ::= { swPortCounterTable 1 } + + SwPortCounterEntry ::= SEQUENCE { + swPortCounterGroupIndex + INTEGER, + swPortCounterIndex + INTEGER, + swPortBytesReceived + Counter, + swPortBytesSent + Counter, + swPortFramesReceived + Counter, + swPortFramesSent + Counter, + swPortTotalBytesReceived + Counter, + swPortTotalFramesReceived + Counter, + swPortBroadcastFramesReceived + Counter, + swPortMulticastFramesReceived + Counter, + swPortCRCError + Counter, + swPortOversizeFrames + Counter, + swPortFragments + Counter, + swPortJabber + Counter, + swPortCollision + Counter, + swPortLateCollision + Counter, + swPortFrames64Bytes + Counter, + swPortFrames65To127Bytes + Counter, + swPortFrames128To255Bytes + Counter, + swPortFrames256To511Bytes + Counter, + swPortFrames512To1023Bytes + Counter, + swPortFrames1024To1522Bytes + Counter, + swPortMACRxError + Counter + } + + swPortCounterGroupIndex OBJECT-TYPE + SYNTAX INTEGER + ACCESS read-only + STATUS mandatory + DESCRIPTION + "This object identifies the port within the group for + which this entry contains infomation." + ::= { swPortCounterEntry 1 } + + swPortCounterIndex OBJECT-TYPE + SYNTAX INTEGER + ACCESS read-only + STATUS mandatory + DESCRIPTION + "This object indicate switch hub port number." + ::= { swPortCounterEntry 2 } + + swPortBytesReceived OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The number of good bytes received. Local and dropped packets + increment the counter as well." + ::= { swPortCounterEntry 3 } + + swPortBytesSent OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The number of good bytes sent." + ::= { swPortCounterEntry 4 } + + swPortFramesReceived OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The number of good frames received. Local and dropped packets + increment the counter as well." + ::= { swPortCounterEntry 5 } + + swPortFramesSent OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The number of good frames sent." + ::= { swPortCounterEntry 6 } + + swPortTotalBytesReceived OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The number of bytes received(good and bad)." + ::= { swPortCounterEntry 7 } + + swPortTotalFramesReceived OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The number of frames bytes received(good and bad)." + ::= { swPortCounterEntry 8 } + + swPortBroadcastFramesReceived OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The number of good broadcast frames received. Local and dropped + packets increment the counter as well." + ::= { swPortCounterEntry 9 } + + swPortMulticastFramesReceived OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The number of good multicast frames received. Local and dropped + packets increment the counter as well." + ::= { swPortCounterEntry 10 } + + swPortCRCError OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The number of frames with valid packet length and CRC error or + misaligned(odd number of nibbles) + increment the counter as well." + ::= { swPortCounterEntry 11 } + + swPortOversizeFrames OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The number of good frames with length more than 1518 bytes ( + or 1522 bytes for LongEn = 1)." + ::= { swPortCounterEntry 12 } + + swPortFragments OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The number of good bytes received. Local and dropped packets + increment the counter as well." + ::= { swPortCounterEntry 13 } + + swPortJabber OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The number of frames with length more than 1518 bytes and with + CRC error or misaligned." + ::= { swPortCounterEntry 14 } + + swPortCollision OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The number of Collisions" + ::= { swPortCounterEntry 15 } + + swPortLateCollision OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The number of Late Collision(collision occurring later than + 576th transmitted bit" + ::= { swPortCounterEntry 16 } + + swPortFrames64Bytes OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The number of good packets with length of 64 bytes " + ::= { swPortCounterEntry 17 } + + swPortFrames65To127Bytes OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The number of good packets with length between 65 to 127 bytes " + ::= { swPortCounterEntry 18 } + + swPortFrames128To255Bytes OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The number of good packets with length between 128 to 255 bytes " + ::= { swPortCounterEntry 19 } + + swPortFrames256To511Bytes OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The number of good packets with length between 256 to 511 bytes " + ::= { swPortCounterEntry 20 } + + swPortFrames512To1023Bytes OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The number of good packets with length between 512 to 1023 bytes " + ::= { swPortCounterEntry 21 } + + swPortFrames1024To1522Bytes OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The number of good packets with length between 1024 to 1522 bytes " + ::= { swPortCounterEntry 22 } + + swPortMACRxError OBJECT-TYPE + SYNTAX Counter + ACCESS read-only + STATUS mandatory + DESCRIPTION + "The number of frames with RX MAC Error " + ::= { swPortCounterEntry 23 } + + -- swPortDroppedFrames OBJECT-TYPE + -- SYNTAX Counter + -- ACCESS read-only + -- STATUS mandatory + -- DESCRIPTION + -- "The number of dropped frames.Dropped packets are those which a + -- receive buffer could not be allocated." + -- ::= { swPortCounterEntry 24 } + + + + -- link up/down Trap + + linkChangeEvent TRAP-TYPE + ENTERPRISE dlink + VARIABLES { + swPortInfoIndex, + swPortInfoType, + swPortInfoPartitionStatus, + swPortInfoLinkStatus, + swPortInfoDuplexMode + } + DESCRIPTION + "The trap is sent whenever the link state of a port changes + from link up to link down or from link down to link up" + ::= 1 + + + portPartition TRAP-TYPE + ENTERPRISE dlink + VARIABLES { + swPortInfoIndex, + swPortInfoType, + swPortInfoPartitionStatus, + swPortInfoLinkStatus, + swPortInfoDuplexMode + } + DESCRIPTION + "The trap is sent whenever the port state enter the Partion + mode when more than 32 collisions occur while trasmitting." + ::= 2 + + END + \ No newline at end of file diff --git a/archive/archives/snmp/iog-crans b/archive/archives/snmp/iog-crans new file mode 100755 index 00000000..acf37a8a --- /dev/null +++ b/archive/archives/snmp/iog-crans @@ -0,0 +1,804 @@ +#!/usr/bin/perl +# +# IOG v1.0 - Input/Output Grapher +# Copyright (c) 2000-2002 James Dogopoulos +# +# Please read the "Artistic" license included. +# +# E-mail iog@dynw.com with any bug reports, +# fixes or comments. +# + +BEGIN{ +if ($ARGV[0] eq "NT") { $main::OS = 'NT'; } else { $main::OS = 'UNIX'; } + +$main::SL = { UNIX=>'/', NT=>'\\' }->{$main::OS}; +$main::PS = { UNIX=>':', NT=>';' }->{$main::OS}; + +$main::binpath =""; + if ($0 =~ /^(.+\Q${main::SL}\E)/) { $main::binpath="$1"; + } + else { + foreach $pathname ( split ${main::PS}, $ENV{'PATH'}) { + if ((($main::OS eq 'NT') && (-e "$pathname${main::SL}$0")) || + (-x "$pathname${main::SL}$0")) { + $main::binpath=$pathname; + last; + } + } + } +unshift (@INC,$main::binpath); +} + +use SDBM_File; +use BER; +use SNMP_Session; +use Fcntl; + +my($inoid,$outoid,$host,$community,$snmpget,$datafile,$cfgfile,%inf); +my($inoctets,$outoctets,$path,$iogver,$hostreset,$kbsize,$mbsize,$gbsize); + +$cfgfile="/etc/iog.cfg"; +$iogver="v1.0"; + +# Default Byte Sizes + +$kbsize="1024"; +$mbsize="1048576"; +$gbsize="1073"; + +# Date/Time stuff +# + +my @weekdays = qw(Sunday Monday Tuesday Wednesday Thursday Friday Saturday); + +my @months = qw(January February March April May June July August September +October November December); + +my %days = (1 => "1st", 2 => "2nd", 3 => "3rd", 21 => "21st", 22 => "22nd", +23 => "23rd", 31 => "31st"); + +my($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst) = localtime(time); +$lday = $mday - 1; + +sub last_mday { +my ($month, $year) = @_; +( qw(31 0 31 30 31 30 31 31 30 31 30 31) )[$month] || +28 + (($year % 100 && !($year % 4))|| !($year % 400)); +} + +if ($days{$mday}) { $pday = $days{$mday}; $nday = $days{$lday}; } +else { $pday = $mday."th"; $nday = $lday."th"; } + +# Read config file. +# + +open(CONFIG,$cfgfile) || die("Cannot open $cfgfile!"); + + while () { + s/\s+$//g; # remove whitespace at the end of the line + s/\s/ /g; # replace whitespace by space + next if /^\s*\#/; # ignore comment lines + next if /^\s*$/; # ignore empty lines + if ($_ =~ /\[.*.\]/) { chkuptime($_); next; } + my($name,$host,$community,$inoid,$outoid,$path) = split(/:/, $_); + $path =~ s/\n//; + $datafile = "$name".".dat"; + my @results = snmpget2($host,$community,$inoid,$outoid); + next if ($results[0] eq "error"); + $inoctets = $results[0]; + $outoctets = $results[1]; + main($name,$host,$community,$inoid,$outoid,$path,$datafile); + } + +close(CONFIG); + + +# SNMP Get routine. Thanks to Simon Leinen for the SNMP module. +# http://www.switch.ch/misc/leinen/snmp/perl/ +# + +sub snmpget { + my($host, $community, $inoid, $outoid) = @_; + my($response, $bindings, $binding, $value, $oid, $session, @results); + + my %oidnames = qw(ifInOctets 1.3.6.1.2.1.2.2.1.10 + ifOutOctets 1.3.6.1.2.1.2.2.1.16 + ifHCInOctets 1.3.6.1.2.1.31.1.1.1.6 + ifHCOutOctets 1.3.6.1.2.1.31.1.1.1.10); + + my ($inoidname,$inoidport) = split(/\./, $inoid); + my ($outoidname,$outoidport) = split(/\./, $outoid); + + $inoid = encode_oid(split(/\./, ($oidnames{$inoidname} . ".$inoidport"))); + $outoid = encode_oid(split(/\./, ($oidnames{$outoidname} . ".$outoidport"))); + + my @oids = ($inoid,$outoid); + + if ($inoidname =~ /HC/i or $outoidname =~ /HC/i) { + $session = SNMPv2c_Session->open($host, $community, 161) or return "error"; + } else { + $session = SNMP_Session->open($host, $community, 161) or return "error"; + }; + + if ($session->get_request_response (@oids)) { + $response = $session->pdu_buffer; + ($bindings) = $session->decode_get_response ($response); + + while ($bindings ne '') { + ($binding,$bindings) = decode_sequence ($bindings); + ($oid,$value) = decode_by_template ($binding, "%O%@"); + push (@results, pretty_print($value)); + } + return @results; + } else { warn "SNMP Error: $SNMP_Session::errmsg\n"; + return "error"; } +} + +sub snmpgetup { + my($host, $community, $inoid) = @_; + my($response, $bindings, $binding, $value, $oid, $result); + + my %oidnames = qw(sysUpTime 1.3.6.1.2.1.1.3 + sysUpTime.0 1.3.6.1.2.1.1.3.0); + + $inoid = encode_oid(split(/\./, $oidnames{$inoid})); + + my $session = SNMP_Session->open($host, $community, 161) or return "0"; + + if ($session->get_request_response ($inoid)) { + $response = $session->pdu_buffer; + ($bindings) = $session->decode_get_response ($response); + + while ($bindings ne '') { + ($binding,$bindings) = decode_sequence ($bindings); + ($oid,$value) = decode_by_template ($binding, "%O%@"); + $result = pretty_print($value); + } + return $result; + } else { warn "SNMP Error: $SNMP_Session::errmsg\n"; + return 0; } + +} + + +##################################################################################### +# Section personnalisée pour faire du SNMP en TCP. +# NS 22/02/03 +##################################################################################### +sub snmpget2 { + my($host, $community, $inoid, $outoid) = @_; + + open IN, "snmpget -T TCP $host $community interfaces.ifTable.ifEntry.$inoid |"; + my $inresult = ; + chomp($inresult); + close(IN); + + open OUT, "snmpget -T TCP $host $community interfaces.ifTable.ifEntry.$outoid |"; + my $outresult = ; + chomp($outresult); + close(OUT); + + my @intable = split(/ /,$inresult ); + my @outtable = split(/ /,$outresult ); + + my @results = ($intable[-1],$outtable[-1]); + + return @results; +} + +sub snmpgetup2 { + my($host, $community, $upoid) = @_; + + open UP, "snmpget -T TCP $host $community $upoid |"; + my $uptimeresult = ; + chomp($uptimeresult); + close(UP); + + $uptimeresult =~ s/^.*\) //; + $uptimeresult =~ s/...$//; + + return $uptimeresult; +} +#################################################################################### + + +sub chkuptime { + + $_ =~ s/\[|\]//g; + my($uphost,$upip,$upcommunity,$upoid,$upfile) = split (/:/, $_); + my $upresult = snmpgetup2($upip,$upcommunity,$upoid); + + tie(%inf, 'SDBM_File', ($upfile."$main::SL"."uptimes"), O_RDWR|O_CREAT, 0640) + or print "WARNING: Error opening uptime database file!\n"; + + if ($upresult < $inf{$uphost} && $upresult > "1") { $hostreset = "1"; } + else { $hostreset = "0"; } + + if ($upresult > "1") { $inf{$uphost} = $upresult; } + + untie(%inf); + +} + +sub main { +my($name,$host,$community,$inoid,$outoid,$path,$datafile) = @_; + +tie(%inf, 'SDBM_File', ($path."$main::SL".$datafile), O_RDWR|O_CREAT, 0640) or +print "Error opening database file for $name at $host\n"; + + if (-s (($path."$main::SL".$datafile) . ".pag")) { + + if ($inf{day} != $mday && $hour > "0") { newday(); + dailyhtml($name,$host,$path); } + + if ($inf{month} != $mon) { + $newmon = "1"; + newday(); + dailyhtml($name,$host,$path); + newmonth($name,$path); + monthlyhtml($name,$host,$path); + } + + if ($inf{year} != ($year + "1900")) { newyear($name,$path); } + + if (!$newmon) { updatedata(); } + + if ($inf{day} != $mday) { $newday = "1"; } else { $newday = "0"; } + + hourlyhtml($name,$host,$path,$newday); + + } else { createdata(); hourlyhtml($name,$host,$path); } + +untie(%inf); +} + +# create data file if ! exist +# + +sub createdata { +%inf = (lastin => $inoctets, lastout => $outoctets, + month => $mon, day => $mday, year => ($year + "1900")); +} + +# +# + +sub newyear { + +my($name,$path) = @_; +my($count); + +$count = 0; + + while ($count <= "11") { + delete $inf{"m" . $count}; + $count++; + } + + # move yearly html file. + + $oldfile="$path"."$main::SL"."$name"."-months".".html"; + $newfile="$path"."$main::SL"."$name"."-year".($year).".html"; + + if ($main::OS eq "NT") { system("move /Y $oldfile $newfile"); } + else { system("mv $oldfile $newfile"); } + +$inf{year} = ($year + "1900"); +} + +# +# + +sub newmonth { + +my($name,$path) = @_; +my($count,$intotal,$outtotal,$inoct,$outoct); + + # get MB total for the month and store it. + + $count = 1; + while ($count <= "31") { + if ($inf{"d" . $count}) { + ($inoct,$outoct) = split(/:/, $inf{"d" . $count}); + $intotal += $inoct; + $outtotal += $outoct; + } + $count++; + } + +$intotal = ($intotal / $mbsize); +$outtotal = ($outtotal / $mbsize); + +$inf{"m" . $inf{month}} = "$intotal:$outtotal"; + + # clear days + + $count = 1; + while ($count <= "31") { + delete $inf{"d" . $count}; + $count++; + } + + # move monthly html file. + + $oldfile="$path"."$main::SL"."$name"."-days".".html"; + $newfile="$path"."$main::SL"."$name"."-month".($mon).".html"; + + if ($main::OS eq "NT") { system("move /Y $oldfile $newfile"); } + else { system("mv $oldfile $newfile"); } + +# set $inf{month} to the new month. +$inf{month} = $mon; +} + + +# newday: +# run every time the day of the month changes on the system. +# + +sub newday { + +my($count,$nmday,$intotal,$outtotal,$inoct,$outoct); + + # get megabyte total for the day and store it. + # + + $count = 0; + while ($count <= "23") { + if ($inf{$count}) { + ($inoct,$outoct) = split(/:/, $inf{$count}); + $intotal += $inoct; + $outtotal += $outoct; + } + $count++; + } + +if ($newmon) { $nmday = last_mday($inf{month}, $inf{year}); } +else { $nmday = ($mday - 1); } + +$inf{"d" . $nmday} = "$intotal:$outtotal:" . ($intotal + $outtotal); + + # clear hours + # + + $count = 0; + while ($count <= "23") { + delete $inf{$count}; + $count++; + } + +$inf{day} = $mday; +} + + +# update DBM file. +# + +sub updatedata { +my ($lasthour,$wrapin,$wrapout); +my $intwrap="4294967296"; + + if ($hour eq "0") { $lasthour = "23"; } else { $lasthour = ($hour - "1"); } + + if ($hostreset == "1") { $inf{lastin} = $inf{lastout} = "0"; } + + # detect if a counter has wrapped and adjust. + # + if ($inoctets < $inf{lastin}) { + $wrapin = $inoctets; + $inoctets = ($intwrap - $inf{lastin}) + $inoctets; + $inf{lastin} = "0"; + } + + if ($outoctets < $inf{lastout}) { + $wrapout = $outoctets; + $outoctets = ($intwrap - $inf{lastout}) + $outoctets; + $inf{lastout} = "0"; + } + +$inf{$lasthour} = (($inoctets - $inf{lastin}).":".($outoctets - $inf{lastout})); +if ($wrapin) { $inf{lastin} = $wrapin } else { $inf{lastin} = $inoctets } +if ($wrapout) { $inf{lastout} = $wrapout } else { $inf{lastout} = $outoctets } +} + +sub footer { +print DHTML "


+ +
IOG $iogver - Input Output Grapher
+-
James Dogopoulos <jd\@dynw.com>
+Questions or comments to iog\@dynw.com +

"; +} + +# make the hourly html +# + +sub hourlyhtml { + +my($name,$host,$path,$newday) = @_; + +# make todays graph +# + +my $enddays = last_mday($mon, ($year + "1900")); + +my $count = "0"; +my ($besthour,$bestday,$inoct,$outoct) = "0"; + + # find busiest hour + # + while ($count <= "23") { + if ($inf{$count}) { ($inoct,$outoct) = split(/:/, $inf{$count}); } + else { $inoct = $outoct = "0"; } + if ($inoct > $besthour) { $besthour = $inoct; } + if ($outoct > $besthour) { $besthour = $outoct; } + $count++; + } + +my $hscalemax = ($besthour / "1000000"); +my ($hscaleunit,$intotal,$outtotal) = 0; + +if ($hscalemax > "0") { $hscaleunit = ("450" / $hscalemax); } + + open(DHTML, ">>$path".$main::SL."$name".".html") or print "can't open in $name $host $!"; + flock(DHTML, 2) or print "can't flock $name $host: $!"; + truncate(DHTML, 0); + + print DHTML "IOG $iogver - $host + +
"; + + my $dexist = (-f "$path".$main::SL."$name"."-days.html"); + my $mexist = (-f "$path".$main::SL."$name"."-months.html"); + + if ($newday != "1") { + if ($dexist && $mexist) { + print DHTML " [ Today | This Month + | Previous Months ]

"; + } else { + if ($dexist && !$mexist) { + print DHTML " [ Today | This + Month | Previous Months ]

"; + } else { + if (!$dexist && $mexist) { + print DHTML " [ Today | This Month + | Previous Months ]

"; + } else { print DHTML "[ Today | This Month | Previous Months ]"; } + } + } + } + else { + if ($dexist && $mexist) { + print DHTML " [ This Month + | Previous Months ]

"; + } else { + if ($dexist && !$mexist) { + print DHTML " [ This + Month | Previous Months ]

"; + } else { + if (!$dexist && $mexist) { + print DHTML " [ This Month + | Previous Months ]

"; + } + } + } + + } + + if ($newday eq "1") { $tday = "$nday"; } else { $tday = "$pday"; } + + print DHTML "

$months[$mon] $tday - Network I/O for $name ($host)

"; + print DHTML ""; + + $count = "0"; + + while ($count <= "23") { + my($inwidth,$outwidth); + + if ($inf{$count}) { + ($inoct,$outoct) = split(/:/, $inf{$count}); + $intotal += $inoct; + $outtotal += $outoct; + $inwidth = ($inoct / "1000000" * $hscaleunit); + $outwidth = ($outoct / "1000000" * $hscaleunit); + } else { $count++; next; } + + # if day is over 1gb, switch to GB/MB display. + # + my($gstring,$gbin,$gbout,$mbin,$mbout); + + $mbin = sprintf("%.1f", $inoct / $mbsize); + $mbout = sprintf("%.1f", $outoct / $mbsize); + + if ($mbin > $gbsize or $mbout > $gbsize) { + $gbin = sprintf("%.1f", $mbin / $gbsize); + $gbout = sprintf("%.1f", $mbout / $gbsize); + + $gstring = ""; + } + else { + $gstring = "\n"; + + print DHTML $gstring; + + $count++; + } + +$intotal = sprintf("%.f", ($intotal / $mbsize)); +$outtotal = sprintf("%.f", ($outtotal / $mbsize)); + +print DHTML "
In: $gbin GB + ($mbin MB)
Out: $gbout GB ($mbout MB) +
In: $mbin MB (". + sprintf("%.f", $inoct / $kbsize)." KB)
Out: $mbout + MB (".sprintf("%.f", $outoct / $kbsize)." KB)"; + } + + $inwidth = (sprintf("%.f", $inwidth) + 1); + $outwidth = (sprintf("%.f", $outwidth) + 1); + + print DHTML "
"."$count".":00
\n"; + print DHTML "

"; + + if ($intotal > $gbsize or $outtotal > $gbsize) { + my $gbtotal = sprintf("%.1f", ($intotal + $outtotal) / $gbsize); + print DHTML "Today's Total: $gbtotal GB
+In: $intotal MB - Out: + $outtotal MB
"; + } + else { + print DHTML "Today's Total: ".($intotal + $outtotal)." MB
+In: $intotal MB - Out: + $outtotal MB
"; + } + +footer(); + +flock(DHTML, 8); +close(DHTML); +} + +sub monthlyhtml { + +my ($name,$host,$path) = @_; +my ($bestmonth,$m_intotal,$m_outtotal,$m_total); +my $count = 0; + + # find busiest month + + while ($count <= "11") { + if ($inf{"m" . $count}) { + ($m_intotal,$m_outtotal) = split(/:/, $inf{"m" . $count}); + if ($m_intotal > $bestmonth) { $bestmonth = $m_intotal; } + if ($m_outtotal > $bestmonth) { $bestmonth = $m_outtotal; } + } + $count++; + } + +my $mscalemax = $bestmonth; +my ($mscaleunit,$intotal,$outtotal) = 0; + +if ($mscalemax > "0") { $mscaleunit = ("450" / $mscalemax); } + +open(DHTML, ">>$path".$main::SL."$name"."-months.html") or print "can't open $name $host $!"; +flock(DHTML, 2) or print "can't flock $name $host : $!"; +truncate(DHTML, 0); + +print DHTML "IOG $iogver - $host +
"; + +my $dexist = (-f "$path".$main::SL."$name"."-days.html"); + +if ($dexist) { +print DHTML "[ Today | +This Month | Previous Months ]

"; +} else { +print DHTML "[ Today | +This Month | Previous Months ]

"; +} + +print DHTML "

Monthly Network I/O for $name ($host)

"; +print DHTML ""; + + $count = "0"; + + while ($count <= "11") { + my($inwidth,$outwidth,$intotal,$outtotal,$inoct,$outoct,$mtotal); + + if ($inf{"m" . $count}) { + ($inoct,$outoct,$mtotal) = split(/:/, $inf{"m" . $count}); + $intotal += $inoct; + $outtotal += $outoct; + $inwidth = ($inoct * $mscaleunit); + $outwidth = ($outoct * $mscaleunit); + } else { $count++; next; } + + # if day is over 1gb, switch to GB/MB display. + # + my($gstring,$gbin,$gbout,$gbtotal,$mbin,$mbout); + + $mbin = sprintf("%.f", $inoct); + $mbout = sprintf("%.f", $outoct); + + $gbin = sprintf("%.1f", $mbin / $gbsize); + $gbout = sprintf("%.1f", $mbout / $gbsize); + $gbtotal = sprintf("%.1f", ($gbin + $gbout)); + + $gstring = ""; + + $inwidth = (sprintf("%.f", $inwidth) + 1); + $outwidth = (sprintf("%.f", $outwidth) + 1); + + if (-f "$path".$main::SL."$name"."-month".($count + "1").".html") { + $mlink = "$months[$count]"; + } else { $mlink = "$months[$count]"; } + + print DHTML "\n"; + + print DHTML $gstring; + + $count++ + } + +print DHTML "
In: $gbin GB + ($mbin MB)
Out: $gbout GB ($mbout MB) +
$mlink
$gbtotal GB
+
\n"; + print DHTML "

"; + +footer(); + +flock(DHTML, 8); +close(DHTML); +} + +sub dailyhtml { + +my ($bestday,$d_intotal,$d_outtotal) = 0; +my ($name,$host,$path) = @_; +my $count = 1; +my $endday = last_mday($inf{month}, $inf{year}); + + if ($endday eq $mday) { $lastday="1"; } else { $lastday="0"; } + + # fix math errors from previous sub + if ($newmon) { $mon--; } + + # move Today's html file unless it's a new month. + + if (!$newmon) { + $oldfile="$path"."$main::SL"."$name".".html"; + $newfile="$path"."$main::SL"."$name"."-day".($mday - "1").".html"; + if ($main::OS eq "NT") { system("move /Y $oldfile $newfile"); } + else { system("mv $oldfile $newfile"); } + } + + # find busiest day (should be merged with totals) + + while ($count <= $endday) { + if ($inf{"d" . $count}) { + ($d_intotal,$d_outtotal) = split(/:/, $inf{"d" . $count}); + if ($d_intotal > $bestday) { $bestday = $d_intotal; } + if ($d_outtotal > $bestday) { $bestday = $d_outtotal; } + } + $count++; + } + +my $dscalemax = ($bestday / "1000000"); +my ($dscaleunit,$intotal,$outtotal) = 0; + +if ($dscalemax > "0") { $dscaleunit = ("450" / $dscalemax); } + +open(DHTML, ">>$path".$main::SL."$name"."-days.html") or print "can't open $name $host $!"; +flock(DHTML, 2) or print "can't flock $name $host : $!"; +truncate(DHTML, 0); + +print DHTML "IOG $iogver - $host +
"; + + if (-f "$path".$main::SL."$name"."-months.html") { + print DHTML "[ Today | + This Month | Previous Months ]

"; + } else { + print DHTML "[ Today | This Month + | Previous Months ]

"; + } + +print DHTML "

$months[$mon] - Network I/O for $name ($host)

"; +print DHTML ""; + + $count = "1"; + + while ($count <= $endday) { + my($inwidth,$outwidth,$inoct,$outoct,$pday); + + if ($inf{"d" . $count}) { + ($inoct,$outoct) = split(/:/, $inf{"d" . $count}); + $intotal += $inoct; + $outtotal += $outoct; + $inwidth = ($inoct / "1000000" * $dscaleunit); + $outwidth = ($outoct / "1000000" * $dscaleunit); + } else { $count++; next; } + + # if day is over 1gb, switch to GB/MB display. + # + my($gstring,$gbin,$gbout,$mbin,$mbout); + + $mbin = sprintf("%.f", $inoct / $mbsize); + $mbout = sprintf("%.f", $outoct / $mbsize); + + if ($mbin > $gbsize or $mbout > $gbsize) { + $gbin = sprintf("%.1f", $mbin / $gbsize); + $gbout = sprintf("%.1f", $mbout / $gbsize); + + $gstring = ""; + } + else { + $gstring = "\n"; + print DHTML $gstring; + + $count++; + } + +$intotal = sprintf("%.f", ($intotal / $mbsize)); +$outtotal = sprintf("%.f", ($outtotal / $mbsize)); + +my $gbtotal = sprintf("%.1f", (($intotal + $outtotal) / $gbsize)); + +print DHTML "
In: $gbin GB + ($mbin MB)
Out: $gbout GB ($mbout MB) +
In: $mbin MB (". + sprintf("%.f", $inoct / $kbsize)." KB)
Out: $mbout + MB (".sprintf("%.f", $outoct / $kbsize)." KB)"; + } + + $inwidth = (sprintf("%.f", $inwidth) + 1); + $outwidth = (sprintf("%.f", $outwidth) + 1); + + if ($days{$count}) { $pday = $days{$count}; } else { $pday = $count."th"; } + + if (-f "$path".$main::SL."$name"."-day".$count.".html" && $lastday eq "0" + && ($newmon ne "1")) { + $pday = "$pday"; + } + + print DHTML "
$pday +
\n"; + print DHTML "

"; +print DHTML "Monthly Total: $gbtotal GB
+In: $intotal MB - Out: $outtotal MB
"; + +footer(); + +flock(DHTML, 8); +close(DHTML); + + # reverse math errors + if ($newmon) { $mon++; } + +} + + +# END + + + + + + + + + + + + + + + +# +# IOG v1.0 - Input/Output Grapher +# Copyright 2000-2002 (c) James Dogopoulos +# + + diff --git a/archive/archives/spamassassin-anti-block b/archive/archives/spamassassin-anti-block new file mode 100755 index 00000000..ca596c75 --- /dev/null +++ b/archive/archives/spamassassin-anti-block @@ -0,0 +1,11 @@ +#! /bin/sh + +MBOX=/var/tmp/mbox +TMP=$(mktemp) +spamc -t 60 < $MBOX > $TMP +if diff $TMP $MBOX > /dev/null; then + /etc/init.d/spamassassin restart + echo "Spam Assassin a été relancé." | mail roots@crans.org -s "Spam Assassin" +fi + +rm -f $TMP diff --git a/archive/archives/squid-vit-il b/archive/archives/squid-vit-il new file mode 100755 index 00000000..fee257af --- /dev/null +++ b/archive/archives/squid-vit-il @@ -0,0 +1,26 @@ +#!/usr/bin/env python +# -*- Python -*- + +# teste si notre squid fonctionne encore (sortof). + +from socket import * +import sys + +OK = 0 + +host = "localhost" +if len(sys.argv) > 1: + host = sys.argv[1] + +s = socket(AF_INET,SOCK_STREAM) +try: + s.connect(host,3128) + s.send("GET squid-vit-il") + data = s.recv(4) + OK = ("HTTP" == data) + s.close() +except: + OK = 0 + +sys.exit(not OK) + diff --git a/archive/archives/supers/apt-get b/archive/archives/supers/apt-get new file mode 100755 index 00000000..377c38a3 --- /dev/null +++ b/archive/archives/supers/apt-get @@ -0,0 +1,19 @@ +#! /bin/sh +# Sam K, déc 99 +# magie: le script lance super sur son propre nom +# et ca lance le bon programme.. + +prog=`basename $0` + +# Si le script courant est lancé par super, $SUPERCMD permet de le voir. +# et alors on continue gentiment le script, sinon on éxécute super sur le prog. +# ca permet de faire des scripts qui lancent super sur eux-memes.. +test "X$SUPERCMD" = "X$prog" || test "X$UID" = "X0" || + exec /usr/bin/super $prog ${1+"$@"} # le script s'arrete ici ds ce cas. + +# Contenu du script : +# juste etendre le path, et lancer le prog +# /supers n'est plus ds le path, +# donc 'exec prog' lance le vrai prog. + export PATH=/usr/local/sbin:/usr/sbin:/sbin:/opt/local/bin:/usr/local/bin:/usr/bin:/bin + exec $prog ${1+"$@"} diff --git a/archive/archives/supers/apt-getinstall b/archive/archives/supers/apt-getinstall new file mode 100755 index 00000000..0ec0c9fd --- /dev/null +++ b/archive/archives/supers/apt-getinstall @@ -0,0 +1,13 @@ +#! /bin/sh +# Sam K, déc 99 +# magie: le script lance super sur son propre nom +# et ca lance le bon programme.. +#Attention: pour lanceMake, il faut explicitement donné les options +# à make, sinon en passant "-f /home/bidule/Makefile", a super make, +# tout serait faisable en root.. +prog=`basename $0` +test "X$SUPERCMD" = "X$prog" || test "X$UID" = "X0" || + exec /usr/bin/super $prog ${1+"$@"} +PATH=/usr/sbin:/sbin:$PATH + +/usr/bin/apt-get install ${1+"$@"} diff --git a/archive/archives/supers/apt-getupgrade b/archive/archives/supers/apt-getupgrade new file mode 100755 index 00000000..452ef445 --- /dev/null +++ b/archive/archives/supers/apt-getupgrade @@ -0,0 +1,14 @@ +#! /bin/sh +# Sam K, déc 99 +# magie: le script lance super sur son propre nom +# et ca lance le bon programme.. +#Attention: pour lanceMake, il faut explicitement donné les options +# à make, sinon en passant "-f /home/bidule/Makefile", a super make, +# tout serait faisable en root.. +prog=`basename $0` +test "X$SUPERCMD" = "X$prog" || test "X$UID" = "X0" || + exec /usr/bin/super $prog ${1+"$@"} +PATH=/usr/sbin:/sbin:$PATH + +/usr/bin/apt-get update +/usr/bin/apt-get dist-upgrade ${1+"$@"} diff --git a/archive/archives/supers/aptitude b/archive/archives/supers/aptitude new file mode 100755 index 00000000..377c38a3 --- /dev/null +++ b/archive/archives/supers/aptitude @@ -0,0 +1,19 @@ +#! /bin/sh +# Sam K, déc 99 +# magie: le script lance super sur son propre nom +# et ca lance le bon programme.. + +prog=`basename $0` + +# Si le script courant est lancé par super, $SUPERCMD permet de le voir. +# et alors on continue gentiment le script, sinon on éxécute super sur le prog. +# ca permet de faire des scripts qui lancent super sur eux-memes.. +test "X$SUPERCMD" = "X$prog" || test "X$UID" = "X0" || + exec /usr/bin/super $prog ${1+"$@"} # le script s'arrete ici ds ce cas. + +# Contenu du script : +# juste etendre le path, et lancer le prog +# /supers n'est plus ds le path, +# donc 'exec prog' lance le vrai prog. + export PATH=/usr/local/sbin:/usr/sbin:/sbin:/opt/local/bin:/usr/local/bin:/usr/bin:/bin + exec $prog ${1+"$@"} diff --git a/archive/archives/supers/chowncore b/archive/archives/supers/chowncore new file mode 100755 index 00000000..f9934407 --- /dev/null +++ b/archive/archives/supers/chowncore @@ -0,0 +1,20 @@ +#! /bin/sh +# Sam K, déc 99 +# magie: le script lance super sur son propre nom +# et ca lance le bon programme.. + +prog=`basename $0` + +# Si le script courant est lancé par super, $SUPERCMD permet de le voir. +# et alors on continue gentiment le script, sinon on éxécute super sur le prog. +# ca permet de faire des scripts qui lancent super sur eux-memes.. +test "X$SUPERCMD" = "X$prog" || + exec /usr/bin/super $prog ${1+"$@"} # le script s'arrete ici ds ce cas. + +# Contenu du script : + +coreF=$ORIG_HOME/debug/ +chown -R $ORIG_LOGNAME $coreF && echo "chown debug dir DONE." + + + diff --git a/archive/archives/supers/dpkg b/archive/archives/supers/dpkg new file mode 100755 index 00000000..377c38a3 --- /dev/null +++ b/archive/archives/supers/dpkg @@ -0,0 +1,19 @@ +#! /bin/sh +# Sam K, déc 99 +# magie: le script lance super sur son propre nom +# et ca lance le bon programme.. + +prog=`basename $0` + +# Si le script courant est lancé par super, $SUPERCMD permet de le voir. +# et alors on continue gentiment le script, sinon on éxécute super sur le prog. +# ca permet de faire des scripts qui lancent super sur eux-memes.. +test "X$SUPERCMD" = "X$prog" || test "X$UID" = "X0" || + exec /usr/bin/super $prog ${1+"$@"} # le script s'arrete ici ds ce cas. + +# Contenu du script : +# juste etendre le path, et lancer le prog +# /supers n'est plus ds le path, +# donc 'exec prog' lance le vrai prog. + export PATH=/usr/local/sbin:/usr/sbin:/sbin:/opt/local/bin:/usr/local/bin:/usr/bin:/bin + exec $prog ${1+"$@"} diff --git a/archive/archives/supers/etccommit b/archive/archives/supers/etccommit new file mode 100755 index 00000000..0be454c7 --- /dev/null +++ b/archive/archives/supers/etccommit @@ -0,0 +1,30 @@ +#! /bin/sh +# Sam K, déc 99 +# magie: le script lance super sur son propre nom +# et ca lance le bon programme.. +prog=`basename $0` +# Si le script courant est lancé par super, $SUPERCMD permet de le voir. +# et alors on continue gentiment le script, sinon on éxécute super sur le prog. +# ca permet de faire des scripts qui lancent super sur eux-memes.. +test "X$SUPERCMD" = "X$prog" || test "X$UID" = "X0" || + exec /usr/bin/super $prog ${1+"$@"} # le script s'arrete ici ds ce cas. + +# Contenu du script : +USER=$ORIG_USER +USERNAME=$USER +LOGNAME=$ORIG_LOGNAME + +cur=$(pwd) +echo $cur +if test "X${cur//etc/TOTO}" = "X$cur" && test "X${cur//scripts/TOTO}" = "X$cur"; +then #il ya pas 'etc' ou 'scripts' ds le rep courant. + echo switching dir to /etc + cd /etc +fi + +#echo "logname : " $LOGNAME +echo "who am i :" `who am i` +# en fait j'ai l'impression que ttes les variables sont ignorées par cvs. +# qd on est root, il récupere le vrai user par "who am i", ie par le owner du TTY.. +/usr/bin/cvs -q -d /usr/cvs-rep commit ${1+"$@"} + diff --git a/archive/archives/supers/extendPath b/archive/archives/supers/extendPath new file mode 100755 index 00000000..377c38a3 --- /dev/null +++ b/archive/archives/supers/extendPath @@ -0,0 +1,19 @@ +#! /bin/sh +# Sam K, déc 99 +# magie: le script lance super sur son propre nom +# et ca lance le bon programme.. + +prog=`basename $0` + +# Si le script courant est lancé par super, $SUPERCMD permet de le voir. +# et alors on continue gentiment le script, sinon on éxécute super sur le prog. +# ca permet de faire des scripts qui lancent super sur eux-memes.. +test "X$SUPERCMD" = "X$prog" || test "X$UID" = "X0" || + exec /usr/bin/super $prog ${1+"$@"} # le script s'arrete ici ds ce cas. + +# Contenu du script : +# juste etendre le path, et lancer le prog +# /supers n'est plus ds le path, +# donc 'exec prog' lance le vrai prog. + export PATH=/usr/local/sbin:/usr/sbin:/sbin:/opt/local/bin:/usr/local/bin:/usr/bin:/bin + exec $prog ${1+"$@"} diff --git a/archive/archives/supers/hide/less b/archive/archives/supers/hide/less new file mode 100755 index 00000000..f3195cbc --- /dev/null +++ b/archive/archives/supers/hide/less @@ -0,0 +1,21 @@ +#! /bin/sh +# Sam K, déc 99 +# magie: le script lance super sur son propre nom +# et ca lance le bon programme.. + +prog=`basename $0` + +# Si le script courant est lancé par super, $SUPERCMD permet de le voir. +# et alors on continue gentiment le script, sinon on éxécute super sur le prog. +# ca permet de faire des scripts qui lancent super sur eux-memes.. +test "X$SUPERCMD" = "X$prog" || test "X$UID" = "X0" || + exec /usr/bin/super $prog ${1+"$@"} # le script s'arrete ici ds ce cas. + +# Contenu du script : + +if test "X$UID" = "X0"; then + echo "uid=root. setting LESSSECURE=1. " + export LESSSECURE=1 + export LANG=fr_FR # c'est chiant less en locale=C .. + exec /usr/bin/less ${1+"$@"} +fi diff --git a/archive/archives/supers/id/apache-ssl b/archive/archives/supers/id/apache-ssl new file mode 100755 index 00000000..f2eb86f6 --- /dev/null +++ b/archive/archives/supers/id/apache-ssl @@ -0,0 +1,25 @@ +#! /bin/sh +# Sam K, Jan 2000 +# sert Doublement de wrapper: +# d'abord autolance super sur /id/(basename $0), +# Et aussi, qd appelé via super, lance un scipt de /id en modifiant le apth au prealable. + +prog=`basename $0` +supcmd=`basename ${SUPERCMD=_NILL_}` + +# Si le script courant est lanc par super, $SUPERCMD permet de le voir. +# et alors on continue gentiment le script, sinon on xcute super sur le prog. +# ca permet de faire des scripts qui lancent super sur eux-memes.. +if ! test "X$supcmd" = "X$prog"; then + echo "calling super, $supcmd $prog" + exec /usr/bin/super /id/$prog ${1+"$@"} + exit 0; +fi + +# Si le script continue, c'est qu'on est lancé par super. + + +PATH=/sbin:/usr/sbin:/usr/bin:$PATH + +echo "Path set to: $PATH by id_wrapper" +exec /etc/init.d/$prog ${1+"$@"} diff --git a/archive/archives/supers/id/arp b/archive/archives/supers/id/arp new file mode 100755 index 00000000..f2eb86f6 --- /dev/null +++ b/archive/archives/supers/id/arp @@ -0,0 +1,25 @@ +#! /bin/sh +# Sam K, Jan 2000 +# sert Doublement de wrapper: +# d'abord autolance super sur /id/(basename $0), +# Et aussi, qd appelé via super, lance un scipt de /id en modifiant le apth au prealable. + +prog=`basename $0` +supcmd=`basename ${SUPERCMD=_NILL_}` + +# Si le script courant est lanc par super, $SUPERCMD permet de le voir. +# et alors on continue gentiment le script, sinon on xcute super sur le prog. +# ca permet de faire des scripts qui lancent super sur eux-memes.. +if ! test "X$supcmd" = "X$prog"; then + echo "calling super, $supcmd $prog" + exec /usr/bin/super /id/$prog ${1+"$@"} + exit 0; +fi + +# Si le script continue, c'est qu'on est lancé par super. + + +PATH=/sbin:/usr/sbin:/usr/bin:$PATH + +echo "Path set to: $PATH by id_wrapper" +exec /etc/init.d/$prog ${1+"$@"} diff --git a/archive/archives/supers/id/arpd b/archive/archives/supers/id/arpd new file mode 100755 index 00000000..f2eb86f6 --- /dev/null +++ b/archive/archives/supers/id/arpd @@ -0,0 +1,25 @@ +#! /bin/sh +# Sam K, Jan 2000 +# sert Doublement de wrapper: +# d'abord autolance super sur /id/(basename $0), +# Et aussi, qd appelé via super, lance un scipt de /id en modifiant le apth au prealable. + +prog=`basename $0` +supcmd=`basename ${SUPERCMD=_NILL_}` + +# Si le script courant est lanc par super, $SUPERCMD permet de le voir. +# et alors on continue gentiment le script, sinon on xcute super sur le prog. +# ca permet de faire des scripts qui lancent super sur eux-memes.. +if ! test "X$supcmd" = "X$prog"; then + echo "calling super, $supcmd $prog" + exec /usr/bin/super /id/$prog ${1+"$@"} + exit 0; +fi + +# Si le script continue, c'est qu'on est lancé par super. + + +PATH=/sbin:/usr/sbin:/usr/bin:$PATH + +echo "Path set to: $PATH by id_wrapper" +exec /etc/init.d/$prog ${1+"$@"} diff --git a/archive/archives/supers/id/arpwatch b/archive/archives/supers/id/arpwatch new file mode 100755 index 00000000..f2eb86f6 --- /dev/null +++ b/archive/archives/supers/id/arpwatch @@ -0,0 +1,25 @@ +#! /bin/sh +# Sam K, Jan 2000 +# sert Doublement de wrapper: +# d'abord autolance super sur /id/(basename $0), +# Et aussi, qd appelé via super, lance un scipt de /id en modifiant le apth au prealable. + +prog=`basename $0` +supcmd=`basename ${SUPERCMD=_NILL_}` + +# Si le script courant est lanc par super, $SUPERCMD permet de le voir. +# et alors on continue gentiment le script, sinon on xcute super sur le prog. +# ca permet de faire des scripts qui lancent super sur eux-memes.. +if ! test "X$supcmd" = "X$prog"; then + echo "calling super, $supcmd $prog" + exec /usr/bin/super /id/$prog ${1+"$@"} + exit 0; +fi + +# Si le script continue, c'est qu'on est lancé par super. + + +PATH=/sbin:/usr/sbin:/usr/bin:$PATH + +echo "Path set to: $PATH by id_wrapper" +exec /etc/init.d/$prog ${1+"$@"} diff --git a/archive/archives/supers/id/bind b/archive/archives/supers/id/bind new file mode 100755 index 00000000..f2eb86f6 --- /dev/null +++ b/archive/archives/supers/id/bind @@ -0,0 +1,25 @@ +#! /bin/sh +# Sam K, Jan 2000 +# sert Doublement de wrapper: +# d'abord autolance super sur /id/(basename $0), +# Et aussi, qd appelé via super, lance un scipt de /id en modifiant le apth au prealable. + +prog=`basename $0` +supcmd=`basename ${SUPERCMD=_NILL_}` + +# Si le script courant est lanc par super, $SUPERCMD permet de le voir. +# et alors on continue gentiment le script, sinon on xcute super sur le prog. +# ca permet de faire des scripts qui lancent super sur eux-memes.. +if ! test "X$supcmd" = "X$prog"; then + echo "calling super, $supcmd $prog" + exec /usr/bin/super /id/$prog ${1+"$@"} + exit 0; +fi + +# Si le script continue, c'est qu'on est lancé par super. + + +PATH=/sbin:/usr/sbin:/usr/bin:$PATH + +echo "Path set to: $PATH by id_wrapper" +exec /etc/init.d/$prog ${1+"$@"} diff --git a/archive/archives/supers/id/bootmisc.sh b/archive/archives/supers/id/bootmisc.sh new file mode 100755 index 00000000..f2eb86f6 --- /dev/null +++ b/archive/archives/supers/id/bootmisc.sh @@ -0,0 +1,25 @@ +#! /bin/sh +# Sam K, Jan 2000 +# sert Doublement de wrapper: +# d'abord autolance super sur /id/(basename $0), +# Et aussi, qd appelé via super, lance un scipt de /id en modifiant le apth au prealable. + +prog=`basename $0` +supcmd=`basename ${SUPERCMD=_NILL_}` + +# Si le script courant est lanc par super, $SUPERCMD permet de le voir. +# et alors on continue gentiment le script, sinon on xcute super sur le prog. +# ca permet de faire des scripts qui lancent super sur eux-memes.. +if ! test "X$supcmd" = "X$prog"; then + echo "calling super, $supcmd $prog" + exec /usr/bin/super /id/$prog ${1+"$@"} + exit 0; +fi + +# Si le script continue, c'est qu'on est lancé par super. + + +PATH=/sbin:/usr/sbin:/usr/bin:$PATH + +echo "Path set to: $PATH by id_wrapper" +exec /etc/init.d/$prog ${1+"$@"} diff --git a/archive/archives/supers/id/checkfs.sh b/archive/archives/supers/id/checkfs.sh new file mode 100755 index 00000000..f2eb86f6 --- /dev/null +++ b/archive/archives/supers/id/checkfs.sh @@ -0,0 +1,25 @@ +#! /bin/sh +# Sam K, Jan 2000 +# sert Doublement de wrapper: +# d'abord autolance super sur /id/(basename $0), +# Et aussi, qd appelé via super, lance un scipt de /id en modifiant le apth au prealable. + +prog=`basename $0` +supcmd=`basename ${SUPERCMD=_NILL_}` + +# Si le script courant est lanc par super, $SUPERCMD permet de le voir. +# et alors on continue gentiment le script, sinon on xcute super sur le prog. +# ca permet de faire des scripts qui lancent super sur eux-memes.. +if ! test "X$supcmd" = "X$prog"; then + echo "calling super, $supcmd $prog" + exec /usr/bin/super /id/$prog ${1+"$@"} + exit 0; +fi + +# Si le script continue, c'est qu'on est lancé par super. + + +PATH=/sbin:/usr/sbin:/usr/bin:$PATH + +echo "Path set to: $PATH by id_wrapper" +exec /etc/init.d/$prog ${1+"$@"} diff --git a/archive/archives/supers/id/checkroot.sh b/archive/archives/supers/id/checkroot.sh new file mode 100755 index 00000000..f2eb86f6 --- /dev/null +++ b/archive/archives/supers/id/checkroot.sh @@ -0,0 +1,25 @@ +#! /bin/sh +# Sam K, Jan 2000 +# sert Doublement de wrapper: +# d'abord autolance super sur /id/(basename $0), +# Et aussi, qd appelé via super, lance un scipt de /id en modifiant le apth au prealable. + +prog=`basename $0` +supcmd=`basename ${SUPERCMD=_NILL_}` + +# Si le script courant est lanc par super, $SUPERCMD permet de le voir. +# et alors on continue gentiment le script, sinon on xcute super sur le prog. +# ca permet de faire des scripts qui lancent super sur eux-memes.. +if ! test "X$supcmd" = "X$prog"; then + echo "calling super, $supcmd $prog" + exec /usr/bin/super /id/$prog ${1+"$@"} + exit 0; +fi + +# Si le script continue, c'est qu'on est lancé par super. + + +PATH=/sbin:/usr/sbin:/usr/bin:$PATH + +echo "Path set to: $PATH by id_wrapper" +exec /etc/init.d/$prog ${1+"$@"} diff --git a/archive/archives/supers/id/console-screen.kbd.sh b/archive/archives/supers/id/console-screen.kbd.sh new file mode 100755 index 00000000..f2eb86f6 --- /dev/null +++ b/archive/archives/supers/id/console-screen.kbd.sh @@ -0,0 +1,25 @@ +#! /bin/sh +# Sam K, Jan 2000 +# sert Doublement de wrapper: +# d'abord autolance super sur /id/(basename $0), +# Et aussi, qd appelé via super, lance un scipt de /id en modifiant le apth au prealable. + +prog=`basename $0` +supcmd=`basename ${SUPERCMD=_NILL_}` + +# Si le script courant est lanc par super, $SUPERCMD permet de le voir. +# et alors on continue gentiment le script, sinon on xcute super sur le prog. +# ca permet de faire des scripts qui lancent super sur eux-memes.. +if ! test "X$supcmd" = "X$prog"; then + echo "calling super, $supcmd $prog" + exec /usr/bin/super /id/$prog ${1+"$@"} + exit 0; +fi + +# Si le script continue, c'est qu'on est lancé par super. + + +PATH=/sbin:/usr/sbin:/usr/bin:$PATH + +echo "Path set to: $PATH by id_wrapper" +exec /etc/init.d/$prog ${1+"$@"} diff --git a/archive/archives/supers/id/console-screen.sh b/archive/archives/supers/id/console-screen.sh new file mode 100755 index 00000000..f2eb86f6 --- /dev/null +++ b/archive/archives/supers/id/console-screen.sh @@ -0,0 +1,25 @@ +#! /bin/sh +# Sam K, Jan 2000 +# sert Doublement de wrapper: +# d'abord autolance super sur /id/(basename $0), +# Et aussi, qd appelé via super, lance un scipt de /id en modifiant le apth au prealable. + +prog=`basename $0` +supcmd=`basename ${SUPERCMD=_NILL_}` + +# Si le script courant est lanc par super, $SUPERCMD permet de le voir. +# et alors on continue gentiment le script, sinon on xcute super sur le prog. +# ca permet de faire des scripts qui lancent super sur eux-memes.. +if ! test "X$supcmd" = "X$prog"; then + echo "calling super, $supcmd $prog" + exec /usr/bin/super /id/$prog ${1+"$@"} + exit 0; +fi + +# Si le script continue, c'est qu'on est lancé par super. + + +PATH=/sbin:/usr/sbin:/usr/bin:$PATH + +echo "Path set to: $PATH by id_wrapper" +exec /etc/init.d/$prog ${1+"$@"} diff --git a/archive/archives/supers/id/cron b/archive/archives/supers/id/cron new file mode 100755 index 00000000..f2eb86f6 --- /dev/null +++ b/archive/archives/supers/id/cron @@ -0,0 +1,25 @@ +#! /bin/sh +# Sam K, Jan 2000 +# sert Doublement de wrapper: +# d'abord autolance super sur /id/(basename $0), +# Et aussi, qd appelé via super, lance un scipt de /id en modifiant le apth au prealable. + +prog=`basename $0` +supcmd=`basename ${SUPERCMD=_NILL_}` + +# Si le script courant est lanc par super, $SUPERCMD permet de le voir. +# et alors on continue gentiment le script, sinon on xcute super sur le prog. +# ca permet de faire des scripts qui lancent super sur eux-memes.. +if ! test "X$supcmd" = "X$prog"; then + echo "calling super, $supcmd $prog" + exec /usr/bin/super /id/$prog ${1+"$@"} + exit 0; +fi + +# Si le script continue, c'est qu'on est lancé par super. + + +PATH=/sbin:/usr/sbin:/usr/bin:$PATH + +echo "Path set to: $PATH by id_wrapper" +exec /etc/init.d/$prog ${1+"$@"} diff --git a/archive/archives/supers/id/cucipop b/archive/archives/supers/id/cucipop new file mode 100755 index 00000000..f2eb86f6 --- /dev/null +++ b/archive/archives/supers/id/cucipop @@ -0,0 +1,25 @@ +#! /bin/sh +# Sam K, Jan 2000 +# sert Doublement de wrapper: +# d'abord autolance super sur /id/(basename $0), +# Et aussi, qd appelé via super, lance un scipt de /id en modifiant le apth au prealable. + +prog=`basename $0` +supcmd=`basename ${SUPERCMD=_NILL_}` + +# Si le script courant est lanc par super, $SUPERCMD permet de le voir. +# et alors on continue gentiment le script, sinon on xcute super sur le prog. +# ca permet de faire des scripts qui lancent super sur eux-memes.. +if ! test "X$supcmd" = "X$prog"; then + echo "calling super, $supcmd $prog" + exec /usr/bin/super /id/$prog ${1+"$@"} + exit 0; +fi + +# Si le script continue, c'est qu'on est lancé par super. + + +PATH=/sbin:/usr/sbin:/usr/bin:$PATH + +echo "Path set to: $PATH by id_wrapper" +exec /etc/init.d/$prog ${1+"$@"} diff --git a/archive/archives/supers/id/devpts.sh b/archive/archives/supers/id/devpts.sh new file mode 100755 index 00000000..f2eb86f6 --- /dev/null +++ b/archive/archives/supers/id/devpts.sh @@ -0,0 +1,25 @@ +#! /bin/sh +# Sam K, Jan 2000 +# sert Doublement de wrapper: +# d'abord autolance super sur /id/(basename $0), +# Et aussi, qd appelé via super, lance un scipt de /id en modifiant le apth au prealable. + +prog=`basename $0` +supcmd=`basename ${SUPERCMD=_NILL_}` + +# Si le script courant est lanc par super, $SUPERCMD permet de le voir. +# et alors on continue gentiment le script, sinon on xcute super sur le prog. +# ca permet de faire des scripts qui lancent super sur eux-memes.. +if ! test "X$supcmd" = "X$prog"; then + echo "calling super, $supcmd $prog" + exec /usr/bin/super /id/$prog ${1+"$@"} + exit 0; +fi + +# Si le script continue, c'est qu'on est lancé par super. + + +PATH=/sbin:/usr/sbin:/usr/bin:$PATH + +echo "Path set to: $PATH by id_wrapper" +exec /etc/init.d/$prog ${1+"$@"} diff --git a/archive/archives/supers/id/devpts.sh.dpkg-old b/archive/archives/supers/id/devpts.sh.dpkg-old new file mode 100755 index 00000000..f2eb86f6 --- /dev/null +++ b/archive/archives/supers/id/devpts.sh.dpkg-old @@ -0,0 +1,25 @@ +#! /bin/sh +# Sam K, Jan 2000 +# sert Doublement de wrapper: +# d'abord autolance super sur /id/(basename $0), +# Et aussi, qd appelé via super, lance un scipt de /id en modifiant le apth au prealable. + +prog=`basename $0` +supcmd=`basename ${SUPERCMD=_NILL_}` + +# Si le script courant est lanc par super, $SUPERCMD permet de le voir. +# et alors on continue gentiment le script, sinon on xcute super sur le prog. +# ca permet de faire des scripts qui lancent super sur eux-memes.. +if ! test "X$supcmd" = "X$prog"; then + echo "calling super, $supcmd $prog" + exec /usr/bin/super /id/$prog ${1+"$@"} + exit 0; +fi + +# Si le script continue, c'est qu'on est lancé par super. + + +PATH=/sbin:/usr/sbin:/usr/bin:$PATH + +echo "Path set to: $PATH by id_wrapper" +exec /etc/init.d/$prog ${1+"$@"} diff --git a/archive/archives/supers/id/dhcp b/archive/archives/supers/id/dhcp new file mode 100755 index 00000000..f2eb86f6 --- /dev/null +++ b/archive/archives/supers/id/dhcp @@ -0,0 +1,25 @@ +#! /bin/sh +# Sam K, Jan 2000 +# sert Doublement de wrapper: +# d'abord autolance super sur /id/(basename $0), +# Et aussi, qd appelé via super, lance un scipt de /id en modifiant le apth au prealable. + +prog=`basename $0` +supcmd=`basename ${SUPERCMD=_NILL_}` + +# Si le script courant est lanc par super, $SUPERCMD permet de le voir. +# et alors on continue gentiment le script, sinon on xcute super sur le prog. +# ca permet de faire des scripts qui lancent super sur eux-memes.. +if ! test "X$supcmd" = "X$prog"; then + echo "calling super, $supcmd $prog" + exec /usr/bin/super /id/$prog ${1+"$@"} + exit 0; +fi + +# Si le script continue, c'est qu'on est lancé par super. + + +PATH=/sbin:/usr/sbin:/usr/bin:$PATH + +echo "Path set to: $PATH by id_wrapper" +exec /etc/init.d/$prog ${1+"$@"} diff --git a/archive/archives/supers/id/dhcp.dpkg-dist b/archive/archives/supers/id/dhcp.dpkg-dist new file mode 100755 index 00000000..f2eb86f6 --- /dev/null +++ b/archive/archives/supers/id/dhcp.dpkg-dist @@ -0,0 +1,25 @@ +#! /bin/sh +# Sam K, Jan 2000 +# sert Doublement de wrapper: +# d'abord autolance super sur /id/(basename $0), +# Et aussi, qd appelé via super, lance un scipt de /id en modifiant le apth au prealable. + +prog=`basename $0` +supcmd=`basename ${SUPERCMD=_NILL_}` + +# Si le script courant est lanc par super, $SUPERCMD permet de le voir. +# et alors on continue gentiment le script, sinon on xcute super sur le prog. +# ca permet de faire des scripts qui lancent super sur eux-memes.. +if ! test "X$supcmd" = "X$prog"; then + echo "calling super, $supcmd $prog" + exec /usr/bin/super /id/$prog ${1+"$@"} + exit 0; +fi + +# Si le script continue, c'est qu'on est lancé par super. + + +PATH=/sbin:/usr/sbin:/usr/bin:$PATH + +echo "Path set to: $PATH by id_wrapper" +exec /etc/init.d/$prog ${1+"$@"} diff --git a/archive/archives/supers/id/dns-clean b/archive/archives/supers/id/dns-clean new file mode 100755 index 00000000..f2eb86f6 --- /dev/null +++ b/archive/archives/supers/id/dns-clean @@ -0,0 +1,25 @@ +#! /bin/sh +# Sam K, Jan 2000 +# sert Doublement de wrapper: +# d'abord autolance super sur /id/(basename $0), +# Et aussi, qd appelé via super, lance un scipt de /id en modifiant le apth au prealable. + +prog=`basename $0` +supcmd=`basename ${SUPERCMD=_NILL_}` + +# Si le script courant est lanc par super, $SUPERCMD permet de le voir. +# et alors on continue gentiment le script, sinon on xcute super sur le prog. +# ca permet de faire des scripts qui lancent super sur eux-memes.. +if ! test "X$supcmd" = "X$prog"; then + echo "calling super, $supcmd $prog" + exec /usr/bin/super /id/$prog ${1+"$@"} + exit 0; +fi + +# Si le script continue, c'est qu'on est lancé par super. + + +PATH=/sbin:/usr/sbin:/usr/bin:$PATH + +echo "Path set to: $PATH by id_wrapper" +exec /etc/init.d/$prog ${1+"$@"} diff --git a/archive/archives/supers/id/exim b/archive/archives/supers/id/exim new file mode 100755 index 00000000..f2eb86f6 --- /dev/null +++ b/archive/archives/supers/id/exim @@ -0,0 +1,25 @@ +#! /bin/sh +# Sam K, Jan 2000 +# sert Doublement de wrapper: +# d'abord autolance super sur /id/(basename $0), +# Et aussi, qd appelé via super, lance un scipt de /id en modifiant le apth au prealable. + +prog=`basename $0` +supcmd=`basename ${SUPERCMD=_NILL_}` + +# Si le script courant est lanc par super, $SUPERCMD permet de le voir. +# et alors on continue gentiment le script, sinon on xcute super sur le prog. +# ca permet de faire des scripts qui lancent super sur eux-memes.. +if ! test "X$supcmd" = "X$prog"; then + echo "calling super, $supcmd $prog" + exec /usr/bin/super /id/$prog ${1+"$@"} + exit 0; +fi + +# Si le script continue, c'est qu'on est lancé par super. + + +PATH=/sbin:/usr/sbin:/usr/bin:$PATH + +echo "Path set to: $PATH by id_wrapper" +exec /etc/init.d/$prog ${1+"$@"} diff --git a/archive/archives/supers/id/firewall b/archive/archives/supers/id/firewall new file mode 100755 index 00000000..f2eb86f6 --- /dev/null +++ b/archive/archives/supers/id/firewall @@ -0,0 +1,25 @@ +#! /bin/sh +# Sam K, Jan 2000 +# sert Doublement de wrapper: +# d'abord autolance super sur /id/(basename $0), +# Et aussi, qd appelé via super, lance un scipt de /id en modifiant le apth au prealable. + +prog=`basename $0` +supcmd=`basename ${SUPERCMD=_NILL_}` + +# Si le script courant est lanc par super, $SUPERCMD permet de le voir. +# et alors on continue gentiment le script, sinon on xcute super sur le prog. +# ca permet de faire des scripts qui lancent super sur eux-memes.. +if ! test "X$supcmd" = "X$prog"; then + echo "calling super, $supcmd $prog" + exec /usr/bin/super /id/$prog ${1+"$@"} + exit 0; +fi + +# Si le script continue, c'est qu'on est lancé par super. + + +PATH=/sbin:/usr/sbin:/usr/bin:$PATH + +echo "Path set to: $PATH by id_wrapper" +exec /etc/init.d/$prog ${1+"$@"} diff --git a/archive/archives/supers/id/gnu-pop3d b/archive/archives/supers/id/gnu-pop3d new file mode 100755 index 00000000..f2eb86f6 --- /dev/null +++ b/archive/archives/supers/id/gnu-pop3d @@ -0,0 +1,25 @@ +#! /bin/sh +# Sam K, Jan 2000 +# sert Doublement de wrapper: +# d'abord autolance super sur /id/(basename $0), +# Et aussi, qd appelé via super, lance un scipt de /id en modifiant le apth au prealable. + +prog=`basename $0` +supcmd=`basename ${SUPERCMD=_NILL_}` + +# Si le script courant est lanc par super, $SUPERCMD permet de le voir. +# et alors on continue gentiment le script, sinon on xcute super sur le prog. +# ca permet de faire des scripts qui lancent super sur eux-memes.. +if ! test "X$supcmd" = "X$prog"; then + echo "calling super, $supcmd $prog" + exec /usr/bin/super /id/$prog ${1+"$@"} + exit 0; +fi + +# Si le script continue, c'est qu'on est lancé par super. + + +PATH=/sbin:/usr/sbin:/usr/bin:$PATH + +echo "Path set to: $PATH by id_wrapper" +exec /etc/init.d/$prog ${1+"$@"} diff --git a/archive/archives/supers/id/halt b/archive/archives/supers/id/halt new file mode 100755 index 00000000..f2eb86f6 --- /dev/null +++ b/archive/archives/supers/id/halt @@ -0,0 +1,25 @@ +#! /bin/sh +# Sam K, Jan 2000 +# sert Doublement de wrapper: +# d'abord autolance super sur /id/(basename $0), +# Et aussi, qd appelé via super, lance un scipt de /id en modifiant le apth au prealable. + +prog=`basename $0` +supcmd=`basename ${SUPERCMD=_NILL_}` + +# Si le script courant est lanc par super, $SUPERCMD permet de le voir. +# et alors on continue gentiment le script, sinon on xcute super sur le prog. +# ca permet de faire des scripts qui lancent super sur eux-memes.. +if ! test "X$supcmd" = "X$prog"; then + echo "calling super, $supcmd $prog" + exec /usr/bin/super /id/$prog ${1+"$@"} + exit 0; +fi + +# Si le script continue, c'est qu'on est lancé par super. + + +PATH=/sbin:/usr/sbin:/usr/bin:$PATH + +echo "Path set to: $PATH by id_wrapper" +exec /etc/init.d/$prog ${1+"$@"} diff --git a/archive/archives/supers/id/hdSettings b/archive/archives/supers/id/hdSettings new file mode 100755 index 00000000..f2eb86f6 --- /dev/null +++ b/archive/archives/supers/id/hdSettings @@ -0,0 +1,25 @@ +#! /bin/sh +# Sam K, Jan 2000 +# sert Doublement de wrapper: +# d'abord autolance super sur /id/(basename $0), +# Et aussi, qd appelé via super, lance un scipt de /id en modifiant le apth au prealable. + +prog=`basename $0` +supcmd=`basename ${SUPERCMD=_NILL_}` + +# Si le script courant est lanc par super, $SUPERCMD permet de le voir. +# et alors on continue gentiment le script, sinon on xcute super sur le prog. +# ca permet de faire des scripts qui lancent super sur eux-memes.. +if ! test "X$supcmd" = "X$prog"; then + echo "calling super, $supcmd $prog" + exec /usr/bin/super /id/$prog ${1+"$@"} + exit 0; +fi + +# Si le script continue, c'est qu'on est lancé par super. + + +PATH=/sbin:/usr/sbin:/usr/bin:$PATH + +echo "Path set to: $PATH by id_wrapper" +exec /etc/init.d/$prog ${1+"$@"} diff --git a/archive/archives/supers/id/hostname.sh b/archive/archives/supers/id/hostname.sh new file mode 100755 index 00000000..f2eb86f6 --- /dev/null +++ b/archive/archives/supers/id/hostname.sh @@ -0,0 +1,25 @@ +#! /bin/sh +# Sam K, Jan 2000 +# sert Doublement de wrapper: +# d'abord autolance super sur /id/(basename $0), +# Et aussi, qd appelé via super, lance un scipt de /id en modifiant le apth au prealable. + +prog=`basename $0` +supcmd=`basename ${SUPERCMD=_NILL_}` + +# Si le script courant est lanc par super, $SUPERCMD permet de le voir. +# et alors on continue gentiment le script, sinon on xcute super sur le prog. +# ca permet de faire des scripts qui lancent super sur eux-memes.. +if ! test "X$supcmd" = "X$prog"; then + echo "calling super, $supcmd $prog" + exec /usr/bin/super /id/$prog ${1+"$@"} + exit 0; +fi + +# Si le script continue, c'est qu'on est lancé par super. + + +PATH=/sbin:/usr/sbin:/usr/bin:$PATH + +echo "Path set to: $PATH by id_wrapper" +exec /etc/init.d/$prog ${1+"$@"} diff --git a/archive/archives/supers/id/hwclock.sh b/archive/archives/supers/id/hwclock.sh new file mode 100755 index 00000000..f2eb86f6 --- /dev/null +++ b/archive/archives/supers/id/hwclock.sh @@ -0,0 +1,25 @@ +#! /bin/sh +# Sam K, Jan 2000 +# sert Doublement de wrapper: +# d'abord autolance super sur /id/(basename $0), +# Et aussi, qd appelé via super, lance un scipt de /id en modifiant le apth au prealable. + +prog=`basename $0` +supcmd=`basename ${SUPERCMD=_NILL_}` + +# Si le script courant est lanc par super, $SUPERCMD permet de le voir. +# et alors on continue gentiment le script, sinon on xcute super sur le prog. +# ca permet de faire des scripts qui lancent super sur eux-memes.. +if ! test "X$supcmd" = "X$prog"; then + echo "calling super, $supcmd $prog" + exec /usr/bin/super /id/$prog ${1+"$@"} + exit 0; +fi + +# Si le script continue, c'est qu'on est lancé par super. + + +PATH=/sbin:/usr/sbin:/usr/bin:$PATH + +echo "Path set to: $PATH by id_wrapper" +exec /etc/init.d/$prog ${1+"$@"} diff --git a/archive/archives/supers/id/inetd b/archive/archives/supers/id/inetd new file mode 100755 index 00000000..f2eb86f6 --- /dev/null +++ b/archive/archives/supers/id/inetd @@ -0,0 +1,25 @@ +#! /bin/sh +# Sam K, Jan 2000 +# sert Doublement de wrapper: +# d'abord autolance super sur /id/(basename $0), +# Et aussi, qd appelé via super, lance un scipt de /id en modifiant le apth au prealable. + +prog=`basename $0` +supcmd=`basename ${SUPERCMD=_NILL_}` + +# Si le script courant est lanc par super, $SUPERCMD permet de le voir. +# et alors on continue gentiment le script, sinon on xcute super sur le prog. +# ca permet de faire des scripts qui lancent super sur eux-memes.. +if ! test "X$supcmd" = "X$prog"; then + echo "calling super, $supcmd $prog" + exec /usr/bin/super /id/$prog ${1+"$@"} + exit 0; +fi + +# Si le script continue, c'est qu'on est lancé par super. + + +PATH=/sbin:/usr/sbin:/usr/bin:$PATH + +echo "Path set to: $PATH by id_wrapper" +exec /etc/init.d/$prog ${1+"$@"} diff --git a/archive/archives/supers/id/inn2 b/archive/archives/supers/id/inn2 new file mode 100755 index 00000000..f2eb86f6 --- /dev/null +++ b/archive/archives/supers/id/inn2 @@ -0,0 +1,25 @@ +#! /bin/sh +# Sam K, Jan 2000 +# sert Doublement de wrapper: +# d'abord autolance super sur /id/(basename $0), +# Et aussi, qd appelé via super, lance un scipt de /id en modifiant le apth au prealable. + +prog=`basename $0` +supcmd=`basename ${SUPERCMD=_NILL_}` + +# Si le script courant est lanc par super, $SUPERCMD permet de le voir. +# et alors on continue gentiment le script, sinon on xcute super sur le prog. +# ca permet de faire des scripts qui lancent super sur eux-memes.. +if ! test "X$supcmd" = "X$prog"; then + echo "calling super, $supcmd $prog" + exec /usr/bin/super /id/$prog ${1+"$@"} + exit 0; +fi + +# Si le script continue, c'est qu'on est lancé par super. + + +PATH=/sbin:/usr/sbin:/usr/bin:$PATH + +echo "Path set to: $PATH by id_wrapper" +exec /etc/init.d/$prog ${1+"$@"} diff --git a/archive/archives/supers/id/isapnp b/archive/archives/supers/id/isapnp new file mode 100755 index 00000000..f2eb86f6 --- /dev/null +++ b/archive/archives/supers/id/isapnp @@ -0,0 +1,25 @@ +#! /bin/sh +# Sam K, Jan 2000 +# sert Doublement de wrapper: +# d'abord autolance super sur /id/(basename $0), +# Et aussi, qd appelé via super, lance un scipt de /id en modifiant le apth au prealable. + +prog=`basename $0` +supcmd=`basename ${SUPERCMD=_NILL_}` + +# Si le script courant est lanc par super, $SUPERCMD permet de le voir. +# et alors on continue gentiment le script, sinon on xcute super sur le prog. +# ca permet de faire des scripts qui lancent super sur eux-memes.. +if ! test "X$supcmd" = "X$prog"; then + echo "calling super, $supcmd $prog" + exec /usr/bin/super /id/$prog ${1+"$@"} + exit 0; +fi + +# Si le script continue, c'est qu'on est lancé par super. + + +PATH=/sbin:/usr/sbin:/usr/bin:$PATH + +echo "Path set to: $PATH by id_wrapper" +exec /etc/init.d/$prog ${1+"$@"} diff --git a/archive/archives/supers/id/kerneld b/archive/archives/supers/id/kerneld new file mode 100755 index 00000000..f2eb86f6 --- /dev/null +++ b/archive/archives/supers/id/kerneld @@ -0,0 +1,25 @@ +#! /bin/sh +# Sam K, Jan 2000 +# sert Doublement de wrapper: +# d'abord autolance super sur /id/(basename $0), +# Et aussi, qd appelé via super, lance un scipt de /id en modifiant le apth au prealable. + +prog=`basename $0` +supcmd=`basename ${SUPERCMD=_NILL_}` + +# Si le script courant est lanc par super, $SUPERCMD permet de le voir. +# et alors on continue gentiment le script, sinon on xcute super sur le prog. +# ca permet de faire des scripts qui lancent super sur eux-memes.. +if ! test "X$supcmd" = "X$prog"; then + echo "calling super, $supcmd $prog" + exec /usr/bin/super /id/$prog ${1+"$@"} + exit 0; +fi + +# Si le script continue, c'est qu'on est lancé par super. + + +PATH=/sbin:/usr/sbin:/usr/bin:$PATH + +echo "Path set to: $PATH by id_wrapper" +exec /etc/init.d/$prog ${1+"$@"} diff --git a/archive/archives/supers/id/keymaps-lct.sh b/archive/archives/supers/id/keymaps-lct.sh new file mode 100755 index 00000000..f2eb86f6 --- /dev/null +++ b/archive/archives/supers/id/keymaps-lct.sh @@ -0,0 +1,25 @@ +#! /bin/sh +# Sam K, Jan 2000 +# sert Doublement de wrapper: +# d'abord autolance super sur /id/(basename $0), +# Et aussi, qd appelé via super, lance un scipt de /id en modifiant le apth au prealable. + +prog=`basename $0` +supcmd=`basename ${SUPERCMD=_NILL_}` + +# Si le script courant est lanc par super, $SUPERCMD permet de le voir. +# et alors on continue gentiment le script, sinon on xcute super sur le prog. +# ca permet de faire des scripts qui lancent super sur eux-memes.. +if ! test "X$supcmd" = "X$prog"; then + echo "calling super, $supcmd $prog" + exec /usr/bin/super /id/$prog ${1+"$@"} + exit 0; +fi + +# Si le script continue, c'est qu'on est lancé par super. + + +PATH=/sbin:/usr/sbin:/usr/bin:$PATH + +echo "Path set to: $PATH by id_wrapper" +exec /etc/init.d/$prog ${1+"$@"} diff --git a/archive/archives/supers/id/keymaps.sh b/archive/archives/supers/id/keymaps.sh new file mode 100755 index 00000000..f2eb86f6 --- /dev/null +++ b/archive/archives/supers/id/keymaps.sh @@ -0,0 +1,25 @@ +#! /bin/sh +# Sam K, Jan 2000 +# sert Doublement de wrapper: +# d'abord autolance super sur /id/(basename $0), +# Et aussi, qd appelé via super, lance un scipt de /id en modifiant le apth au prealable. + +prog=`basename $0` +supcmd=`basename ${SUPERCMD=_NILL_}` + +# Si le script courant est lanc par super, $SUPERCMD permet de le voir. +# et alors on continue gentiment le script, sinon on xcute super sur le prog. +# ca permet de faire des scripts qui lancent super sur eux-memes.. +if ! test "X$supcmd" = "X$prog"; then + echo "calling super, $supcmd $prog" + exec /usr/bin/super /id/$prog ${1+"$@"} + exit 0; +fi + +# Si le script continue, c'est qu'on est lancé par super. + + +PATH=/sbin:/usr/sbin:/usr/bin:$PATH + +echo "Path set to: $PATH by id_wrapper" +exec /etc/init.d/$prog ${1+"$@"} diff --git a/archive/archives/supers/id/logoutd b/archive/archives/supers/id/logoutd new file mode 100755 index 00000000..f2eb86f6 --- /dev/null +++ b/archive/archives/supers/id/logoutd @@ -0,0 +1,25 @@ +#! /bin/sh +# Sam K, Jan 2000 +# sert Doublement de wrapper: +# d'abord autolance super sur /id/(basename $0), +# Et aussi, qd appelé via super, lance un scipt de /id en modifiant le apth au prealable. + +prog=`basename $0` +supcmd=`basename ${SUPERCMD=_NILL_}` + +# Si le script courant est lanc par super, $SUPERCMD permet de le voir. +# et alors on continue gentiment le script, sinon on xcute super sur le prog. +# ca permet de faire des scripts qui lancent super sur eux-memes.. +if ! test "X$supcmd" = "X$prog"; then + echo "calling super, $supcmd $prog" + exec /usr/bin/super /id/$prog ${1+"$@"} + exit 0; +fi + +# Si le script continue, c'est qu'on est lancé par super. + + +PATH=/sbin:/usr/sbin:/usr/bin:$PATH + +echo "Path set to: $PATH by id_wrapper" +exec /etc/init.d/$prog ${1+"$@"} diff --git a/archive/archives/supers/id/lpd b/archive/archives/supers/id/lpd new file mode 100755 index 00000000..f2eb86f6 --- /dev/null +++ b/archive/archives/supers/id/lpd @@ -0,0 +1,25 @@ +#! /bin/sh +# Sam K, Jan 2000 +# sert Doublement de wrapper: +# d'abord autolance super sur /id/(basename $0), +# Et aussi, qd appelé via super, lance un scipt de /id en modifiant le apth au prealable. + +prog=`basename $0` +supcmd=`basename ${SUPERCMD=_NILL_}` + +# Si le script courant est lanc par super, $SUPERCMD permet de le voir. +# et alors on continue gentiment le script, sinon on xcute super sur le prog. +# ca permet de faire des scripts qui lancent super sur eux-memes.. +if ! test "X$supcmd" = "X$prog"; then + echo "calling super, $supcmd $prog" + exec /usr/bin/super /id/$prog ${1+"$@"} + exit 0; +fi + +# Si le script continue, c'est qu'on est lancé par super. + + +PATH=/sbin:/usr/sbin:/usr/bin:$PATH + +echo "Path set to: $PATH by id_wrapper" +exec /etc/init.d/$prog ${1+"$@"} diff --git a/archive/archives/supers/id/makedev b/archive/archives/supers/id/makedev new file mode 100755 index 00000000..f2eb86f6 --- /dev/null +++ b/archive/archives/supers/id/makedev @@ -0,0 +1,25 @@ +#! /bin/sh +# Sam K, Jan 2000 +# sert Doublement de wrapper: +# d'abord autolance super sur /id/(basename $0), +# Et aussi, qd appelé via super, lance un scipt de /id en modifiant le apth au prealable. + +prog=`basename $0` +supcmd=`basename ${SUPERCMD=_NILL_}` + +# Si le script courant est lanc par super, $SUPERCMD permet de le voir. +# et alors on continue gentiment le script, sinon on xcute super sur le prog. +# ca permet de faire des scripts qui lancent super sur eux-memes.. +if ! test "X$supcmd" = "X$prog"; then + echo "calling super, $supcmd $prog" + exec /usr/bin/super /id/$prog ${1+"$@"} + exit 0; +fi + +# Si le script continue, c'est qu'on est lancé par super. + + +PATH=/sbin:/usr/sbin:/usr/bin:$PATH + +echo "Path set to: $PATH by id_wrapper" +exec /etc/init.d/$prog ${1+"$@"} diff --git a/archive/archives/supers/id/modutils b/archive/archives/supers/id/modutils new file mode 100755 index 00000000..f2eb86f6 --- /dev/null +++ b/archive/archives/supers/id/modutils @@ -0,0 +1,25 @@ +#! /bin/sh +# Sam K, Jan 2000 +# sert Doublement de wrapper: +# d'abord autolance super sur /id/(basename $0), +# Et aussi, qd appelé via super, lance un scipt de /id en modifiant le apth au prealable. + +prog=`basename $0` +supcmd=`basename ${SUPERCMD=_NILL_}` + +# Si le script courant est lanc par super, $SUPERCMD permet de le voir. +# et alors on continue gentiment le script, sinon on xcute super sur le prog. +# ca permet de faire des scripts qui lancent super sur eux-memes.. +if ! test "X$supcmd" = "X$prog"; then + echo "calling super, $supcmd $prog" + exec /usr/bin/super /id/$prog ${1+"$@"} + exit 0; +fi + +# Si le script continue, c'est qu'on est lancé par super. + + +PATH=/sbin:/usr/sbin:/usr/bin:$PATH + +echo "Path set to: $PATH by id_wrapper" +exec /etc/init.d/$prog ${1+"$@"} diff --git a/archive/archives/supers/id/mountall.sh b/archive/archives/supers/id/mountall.sh new file mode 100755 index 00000000..f2eb86f6 --- /dev/null +++ b/archive/archives/supers/id/mountall.sh @@ -0,0 +1,25 @@ +#! /bin/sh +# Sam K, Jan 2000 +# sert Doublement de wrapper: +# d'abord autolance super sur /id/(basename $0), +# Et aussi, qd appelé via super, lance un scipt de /id en modifiant le apth au prealable. + +prog=`basename $0` +supcmd=`basename ${SUPERCMD=_NILL_}` + +# Si le script courant est lanc par super, $SUPERCMD permet de le voir. +# et alors on continue gentiment le script, sinon on xcute super sur le prog. +# ca permet de faire des scripts qui lancent super sur eux-memes.. +if ! test "X$supcmd" = "X$prog"; then + echo "calling super, $supcmd $prog" + exec /usr/bin/super /id/$prog ${1+"$@"} + exit 0; +fi + +# Si le script continue, c'est qu'on est lancé par super. + + +PATH=/sbin:/usr/sbin:/usr/bin:$PATH + +echo "Path set to: $PATH by id_wrapper" +exec /etc/init.d/$prog ${1+"$@"} diff --git a/archive/archives/supers/id/mountnfs.sh b/archive/archives/supers/id/mountnfs.sh new file mode 100755 index 00000000..f2eb86f6 --- /dev/null +++ b/archive/archives/supers/id/mountnfs.sh @@ -0,0 +1,25 @@ +#! /bin/sh +# Sam K, Jan 2000 +# sert Doublement de wrapper: +# d'abord autolance super sur /id/(basename $0), +# Et aussi, qd appelé via super, lance un scipt de /id en modifiant le apth au prealable. + +prog=`basename $0` +supcmd=`basename ${SUPERCMD=_NILL_}` + +# Si le script courant est lanc par super, $SUPERCMD permet de le voir. +# et alors on continue gentiment le script, sinon on xcute super sur le prog. +# ca permet de faire des scripts qui lancent super sur eux-memes.. +if ! test "X$supcmd" = "X$prog"; then + echo "calling super, $supcmd $prog" + exec /usr/bin/super /id/$prog ${1+"$@"} + exit 0; +fi + +# Si le script continue, c'est qu'on est lancé par super. + + +PATH=/sbin:/usr/sbin:/usr/bin:$PATH + +echo "Path set to: $PATH by id_wrapper" +exec /etc/init.d/$prog ${1+"$@"} diff --git a/archive/archives/supers/id/netbase.old b/archive/archives/supers/id/netbase.old new file mode 100755 index 00000000..f2eb86f6 --- /dev/null +++ b/archive/archives/supers/id/netbase.old @@ -0,0 +1,25 @@ +#! /bin/sh +# Sam K, Jan 2000 +# sert Doublement de wrapper: +# d'abord autolance super sur /id/(basename $0), +# Et aussi, qd appelé via super, lance un scipt de /id en modifiant le apth au prealable. + +prog=`basename $0` +supcmd=`basename ${SUPERCMD=_NILL_}` + +# Si le script courant est lanc par super, $SUPERCMD permet de le voir. +# et alors on continue gentiment le script, sinon on xcute super sur le prog. +# ca permet de faire des scripts qui lancent super sur eux-memes.. +if ! test "X$supcmd" = "X$prog"; then + echo "calling super, $supcmd $prog" + exec /usr/bin/super /id/$prog ${1+"$@"} + exit 0; +fi + +# Si le script continue, c'est qu'on est lancé par super. + + +PATH=/sbin:/usr/sbin:/usr/bin:$PATH + +echo "Path set to: $PATH by id_wrapper" +exec /etc/init.d/$prog ${1+"$@"} diff --git a/archive/archives/supers/id/network b/archive/archives/supers/id/network new file mode 100755 index 00000000..f2eb86f6 --- /dev/null +++ b/archive/archives/supers/id/network @@ -0,0 +1,25 @@ +#! /bin/sh +# Sam K, Jan 2000 +# sert Doublement de wrapper: +# d'abord autolance super sur /id/(basename $0), +# Et aussi, qd appelé via super, lance un scipt de /id en modifiant le apth au prealable. + +prog=`basename $0` +supcmd=`basename ${SUPERCMD=_NILL_}` + +# Si le script courant est lanc par super, $SUPERCMD permet de le voir. +# et alors on continue gentiment le script, sinon on xcute super sur le prog. +# ca permet de faire des scripts qui lancent super sur eux-memes.. +if ! test "X$supcmd" = "X$prog"; then + echo "calling super, $supcmd $prog" + exec /usr/bin/super /id/$prog ${1+"$@"} + exit 0; +fi + +# Si le script continue, c'est qu'on est lancé par super. + + +PATH=/sbin:/usr/sbin:/usr/bin:$PATH + +echo "Path set to: $PATH by id_wrapper" +exec /etc/init.d/$prog ${1+"$@"} diff --git a/archive/archives/supers/id/network2 b/archive/archives/supers/id/network2 new file mode 100755 index 00000000..f2eb86f6 --- /dev/null +++ b/archive/archives/supers/id/network2 @@ -0,0 +1,25 @@ +#! /bin/sh +# Sam K, Jan 2000 +# sert Doublement de wrapper: +# d'abord autolance super sur /id/(basename $0), +# Et aussi, qd appelé via super, lance un scipt de /id en modifiant le apth au prealable. + +prog=`basename $0` +supcmd=`basename ${SUPERCMD=_NILL_}` + +# Si le script courant est lanc par super, $SUPERCMD permet de le voir. +# et alors on continue gentiment le script, sinon on xcute super sur le prog. +# ca permet de faire des scripts qui lancent super sur eux-memes.. +if ! test "X$supcmd" = "X$prog"; then + echo "calling super, $supcmd $prog" + exec /usr/bin/super /id/$prog ${1+"$@"} + exit 0; +fi + +# Si le script continue, c'est qu'on est lancé par super. + + +PATH=/sbin:/usr/sbin:/usr/bin:$PATH + +echo "Path set to: $PATH by id_wrapper" +exec /etc/init.d/$prog ${1+"$@"} diff --git a/archive/archives/supers/id/networking b/archive/archives/supers/id/networking new file mode 100755 index 00000000..f2eb86f6 --- /dev/null +++ b/archive/archives/supers/id/networking @@ -0,0 +1,25 @@ +#! /bin/sh +# Sam K, Jan 2000 +# sert Doublement de wrapper: +# d'abord autolance super sur /id/(basename $0), +# Et aussi, qd appelé via super, lance un scipt de /id en modifiant le apth au prealable. + +prog=`basename $0` +supcmd=`basename ${SUPERCMD=_NILL_}` + +# Si le script courant est lanc par super, $SUPERCMD permet de le voir. +# et alors on continue gentiment le script, sinon on xcute super sur le prog. +# ca permet de faire des scripts qui lancent super sur eux-memes.. +if ! test "X$supcmd" = "X$prog"; then + echo "calling super, $supcmd $prog" + exec /usr/bin/super /id/$prog ${1+"$@"} + exit 0; +fi + +# Si le script continue, c'est qu'on est lancé par super. + + +PATH=/sbin:/usr/sbin:/usr/bin:$PATH + +echo "Path set to: $PATH by id_wrapper" +exec /etc/init.d/$prog ${1+"$@"} diff --git a/archive/archives/supers/id/ntp b/archive/archives/supers/id/ntp new file mode 100755 index 00000000..f2eb86f6 --- /dev/null +++ b/archive/archives/supers/id/ntp @@ -0,0 +1,25 @@ +#! /bin/sh +# Sam K, Jan 2000 +# sert Doublement de wrapper: +# d'abord autolance super sur /id/(basename $0), +# Et aussi, qd appelé via super, lance un scipt de /id en modifiant le apth au prealable. + +prog=`basename $0` +supcmd=`basename ${SUPERCMD=_NILL_}` + +# Si le script courant est lanc par super, $SUPERCMD permet de le voir. +# et alors on continue gentiment le script, sinon on xcute super sur le prog. +# ca permet de faire des scripts qui lancent super sur eux-memes.. +if ! test "X$supcmd" = "X$prog"; then + echo "calling super, $supcmd $prog" + exec /usr/bin/super /id/$prog ${1+"$@"} + exit 0; +fi + +# Si le script continue, c'est qu'on est lancé par super. + + +PATH=/sbin:/usr/sbin:/usr/bin:$PATH + +echo "Path set to: $PATH by id_wrapper" +exec /etc/init.d/$prog ${1+"$@"} diff --git a/archive/archives/supers/id/ntpdate b/archive/archives/supers/id/ntpdate new file mode 100755 index 00000000..f2eb86f6 --- /dev/null +++ b/archive/archives/supers/id/ntpdate @@ -0,0 +1,25 @@ +#! /bin/sh +# Sam K, Jan 2000 +# sert Doublement de wrapper: +# d'abord autolance super sur /id/(basename $0), +# Et aussi, qd appelé via super, lance un scipt de /id en modifiant le apth au prealable. + +prog=`basename $0` +supcmd=`basename ${SUPERCMD=_NILL_}` + +# Si le script courant est lanc par super, $SUPERCMD permet de le voir. +# et alors on continue gentiment le script, sinon on xcute super sur le prog. +# ca permet de faire des scripts qui lancent super sur eux-memes.. +if ! test "X$supcmd" = "X$prog"; then + echo "calling super, $supcmd $prog" + exec /usr/bin/super /id/$prog ${1+"$@"} + exit 0; +fi + +# Si le script continue, c'est qu'on est lancé par super. + + +PATH=/sbin:/usr/sbin:/usr/bin:$PATH + +echo "Path set to: $PATH by id_wrapper" +exec /etc/init.d/$prog ${1+"$@"} diff --git a/archive/archives/supers/id/portmap b/archive/archives/supers/id/portmap new file mode 100755 index 00000000..f2eb86f6 --- /dev/null +++ b/archive/archives/supers/id/portmap @@ -0,0 +1,25 @@ +#! /bin/sh +# Sam K, Jan 2000 +# sert Doublement de wrapper: +# d'abord autolance super sur /id/(basename $0), +# Et aussi, qd appelé via super, lance un scipt de /id en modifiant le apth au prealable. + +prog=`basename $0` +supcmd=`basename ${SUPERCMD=_NILL_}` + +# Si le script courant est lanc par super, $SUPERCMD permet de le voir. +# et alors on continue gentiment le script, sinon on xcute super sur le prog. +# ca permet de faire des scripts qui lancent super sur eux-memes.. +if ! test "X$supcmd" = "X$prog"; then + echo "calling super, $supcmd $prog" + exec /usr/bin/super /id/$prog ${1+"$@"} + exit 0; +fi + +# Si le script continue, c'est qu'on est lancé par super. + + +PATH=/sbin:/usr/sbin:/usr/bin:$PATH + +echo "Path set to: $PATH by id_wrapper" +exec /etc/init.d/$prog ${1+"$@"} diff --git a/archive/archives/supers/id/postfix b/archive/archives/supers/id/postfix new file mode 100755 index 00000000..f2eb86f6 --- /dev/null +++ b/archive/archives/supers/id/postfix @@ -0,0 +1,25 @@ +#! /bin/sh +# Sam K, Jan 2000 +# sert Doublement de wrapper: +# d'abord autolance super sur /id/(basename $0), +# Et aussi, qd appelé via super, lance un scipt de /id en modifiant le apth au prealable. + +prog=`basename $0` +supcmd=`basename ${SUPERCMD=_NILL_}` + +# Si le script courant est lanc par super, $SUPERCMD permet de le voir. +# et alors on continue gentiment le script, sinon on xcute super sur le prog. +# ca permet de faire des scripts qui lancent super sur eux-memes.. +if ! test "X$supcmd" = "X$prog"; then + echo "calling super, $supcmd $prog" + exec /usr/bin/super /id/$prog ${1+"$@"} + exit 0; +fi + +# Si le script continue, c'est qu'on est lancé par super. + + +PATH=/sbin:/usr/sbin:/usr/bin:$PATH + +echo "Path set to: $PATH by id_wrapper" +exec /etc/init.d/$prog ${1+"$@"} diff --git a/archive/archives/supers/id/ppp b/archive/archives/supers/id/ppp new file mode 100755 index 00000000..f2eb86f6 --- /dev/null +++ b/archive/archives/supers/id/ppp @@ -0,0 +1,25 @@ +#! /bin/sh +# Sam K, Jan 2000 +# sert Doublement de wrapper: +# d'abord autolance super sur /id/(basename $0), +# Et aussi, qd appelé via super, lance un scipt de /id en modifiant le apth au prealable. + +prog=`basename $0` +supcmd=`basename ${SUPERCMD=_NILL_}` + +# Si le script courant est lanc par super, $SUPERCMD permet de le voir. +# et alors on continue gentiment le script, sinon on xcute super sur le prog. +# ca permet de faire des scripts qui lancent super sur eux-memes.. +if ! test "X$supcmd" = "X$prog"; then + echo "calling super, $supcmd $prog" + exec /usr/bin/super /id/$prog ${1+"$@"} + exit 0; +fi + +# Si le script continue, c'est qu'on est lancé par super. + + +PATH=/sbin:/usr/sbin:/usr/bin:$PATH + +echo "Path set to: $PATH by id_wrapper" +exec /etc/init.d/$prog ${1+"$@"} diff --git a/archive/archives/supers/id/procps.sh b/archive/archives/supers/id/procps.sh new file mode 100755 index 00000000..f2eb86f6 --- /dev/null +++ b/archive/archives/supers/id/procps.sh @@ -0,0 +1,25 @@ +#! /bin/sh +# Sam K, Jan 2000 +# sert Doublement de wrapper: +# d'abord autolance super sur /id/(basename $0), +# Et aussi, qd appelé via super, lance un scipt de /id en modifiant le apth au prealable. + +prog=`basename $0` +supcmd=`basename ${SUPERCMD=_NILL_}` + +# Si le script courant est lanc par super, $SUPERCMD permet de le voir. +# et alors on continue gentiment le script, sinon on xcute super sur le prog. +# ca permet de faire des scripts qui lancent super sur eux-memes.. +if ! test "X$supcmd" = "X$prog"; then + echo "calling super, $supcmd $prog" + exec /usr/bin/super /id/$prog ${1+"$@"} + exit 0; +fi + +# Si le script continue, c'est qu'on est lancé par super. + + +PATH=/sbin:/usr/sbin:/usr/bin:$PATH + +echo "Path set to: $PATH by id_wrapper" +exec /etc/init.d/$prog ${1+"$@"} diff --git a/archive/archives/supers/id/rc b/archive/archives/supers/id/rc new file mode 100755 index 00000000..f2eb86f6 --- /dev/null +++ b/archive/archives/supers/id/rc @@ -0,0 +1,25 @@ +#! /bin/sh +# Sam K, Jan 2000 +# sert Doublement de wrapper: +# d'abord autolance super sur /id/(basename $0), +# Et aussi, qd appelé via super, lance un scipt de /id en modifiant le apth au prealable. + +prog=`basename $0` +supcmd=`basename ${SUPERCMD=_NILL_}` + +# Si le script courant est lanc par super, $SUPERCMD permet de le voir. +# et alors on continue gentiment le script, sinon on xcute super sur le prog. +# ca permet de faire des scripts qui lancent super sur eux-memes.. +if ! test "X$supcmd" = "X$prog"; then + echo "calling super, $supcmd $prog" + exec /usr/bin/super /id/$prog ${1+"$@"} + exit 0; +fi + +# Si le script continue, c'est qu'on est lancé par super. + + +PATH=/sbin:/usr/sbin:/usr/bin:$PATH + +echo "Path set to: $PATH by id_wrapper" +exec /etc/init.d/$prog ${1+"$@"} diff --git a/archive/archives/supers/id/rcS b/archive/archives/supers/id/rcS new file mode 100755 index 00000000..f2eb86f6 --- /dev/null +++ b/archive/archives/supers/id/rcS @@ -0,0 +1,25 @@ +#! /bin/sh +# Sam K, Jan 2000 +# sert Doublement de wrapper: +# d'abord autolance super sur /id/(basename $0), +# Et aussi, qd appelé via super, lance un scipt de /id en modifiant le apth au prealable. + +prog=`basename $0` +supcmd=`basename ${SUPERCMD=_NILL_}` + +# Si le script courant est lanc par super, $SUPERCMD permet de le voir. +# et alors on continue gentiment le script, sinon on xcute super sur le prog. +# ca permet de faire des scripts qui lancent super sur eux-memes.. +if ! test "X$supcmd" = "X$prog"; then + echo "calling super, $supcmd $prog" + exec /usr/bin/super /id/$prog ${1+"$@"} + exit 0; +fi + +# Si le script continue, c'est qu'on est lancé par super. + + +PATH=/sbin:/usr/sbin:/usr/bin:$PATH + +echo "Path set to: $PATH by id_wrapper" +exec /etc/init.d/$prog ${1+"$@"} diff --git a/archive/archives/supers/id/reboot b/archive/archives/supers/id/reboot new file mode 100755 index 00000000..f2eb86f6 --- /dev/null +++ b/archive/archives/supers/id/reboot @@ -0,0 +1,25 @@ +#! /bin/sh +# Sam K, Jan 2000 +# sert Doublement de wrapper: +# d'abord autolance super sur /id/(basename $0), +# Et aussi, qd appelé via super, lance un scipt de /id en modifiant le apth au prealable. + +prog=`basename $0` +supcmd=`basename ${SUPERCMD=_NILL_}` + +# Si le script courant est lanc par super, $SUPERCMD permet de le voir. +# et alors on continue gentiment le script, sinon on xcute super sur le prog. +# ca permet de faire des scripts qui lancent super sur eux-memes.. +if ! test "X$supcmd" = "X$prog"; then + echo "calling super, $supcmd $prog" + exec /usr/bin/super /id/$prog ${1+"$@"} + exit 0; +fi + +# Si le script continue, c'est qu'on est lancé par super. + + +PATH=/sbin:/usr/sbin:/usr/bin:$PATH + +echo "Path set to: $PATH by id_wrapper" +exec /etc/init.d/$prog ${1+"$@"} diff --git a/archive/archives/supers/id/rmnologin b/archive/archives/supers/id/rmnologin new file mode 100755 index 00000000..f2eb86f6 --- /dev/null +++ b/archive/archives/supers/id/rmnologin @@ -0,0 +1,25 @@ +#! /bin/sh +# Sam K, Jan 2000 +# sert Doublement de wrapper: +# d'abord autolance super sur /id/(basename $0), +# Et aussi, qd appelé via super, lance un scipt de /id en modifiant le apth au prealable. + +prog=`basename $0` +supcmd=`basename ${SUPERCMD=_NILL_}` + +# Si le script courant est lanc par super, $SUPERCMD permet de le voir. +# et alors on continue gentiment le script, sinon on xcute super sur le prog. +# ca permet de faire des scripts qui lancent super sur eux-memes.. +if ! test "X$supcmd" = "X$prog"; then + echo "calling super, $supcmd $prog" + exec /usr/bin/super /id/$prog ${1+"$@"} + exit 0; +fi + +# Si le script continue, c'est qu'on est lancé par super. + + +PATH=/sbin:/usr/sbin:/usr/bin:$PATH + +echo "Path set to: $PATH by id_wrapper" +exec /etc/init.d/$prog ${1+"$@"} diff --git a/archive/archives/supers/id/samba b/archive/archives/supers/id/samba new file mode 100755 index 00000000..f2eb86f6 --- /dev/null +++ b/archive/archives/supers/id/samba @@ -0,0 +1,25 @@ +#! /bin/sh +# Sam K, Jan 2000 +# sert Doublement de wrapper: +# d'abord autolance super sur /id/(basename $0), +# Et aussi, qd appelé via super, lance un scipt de /id en modifiant le apth au prealable. + +prog=`basename $0` +supcmd=`basename ${SUPERCMD=_NILL_}` + +# Si le script courant est lanc par super, $SUPERCMD permet de le voir. +# et alors on continue gentiment le script, sinon on xcute super sur le prog. +# ca permet de faire des scripts qui lancent super sur eux-memes.. +if ! test "X$supcmd" = "X$prog"; then + echo "calling super, $supcmd $prog" + exec /usr/bin/super /id/$prog ${1+"$@"} + exit 0; +fi + +# Si le script continue, c'est qu'on est lancé par super. + + +PATH=/sbin:/usr/sbin:/usr/bin:$PATH + +echo "Path set to: $PATH by id_wrapper" +exec /etc/init.d/$prog ${1+"$@"} diff --git a/archive/archives/supers/id/sendsigs b/archive/archives/supers/id/sendsigs new file mode 100755 index 00000000..f2eb86f6 --- /dev/null +++ b/archive/archives/supers/id/sendsigs @@ -0,0 +1,25 @@ +#! /bin/sh +# Sam K, Jan 2000 +# sert Doublement de wrapper: +# d'abord autolance super sur /id/(basename $0), +# Et aussi, qd appelé via super, lance un scipt de /id en modifiant le apth au prealable. + +prog=`basename $0` +supcmd=`basename ${SUPERCMD=_NILL_}` + +# Si le script courant est lanc par super, $SUPERCMD permet de le voir. +# et alors on continue gentiment le script, sinon on xcute super sur le prog. +# ca permet de faire des scripts qui lancent super sur eux-memes.. +if ! test "X$supcmd" = "X$prog"; then + echo "calling super, $supcmd $prog" + exec /usr/bin/super /id/$prog ${1+"$@"} + exit 0; +fi + +# Si le script continue, c'est qu'on est lancé par super. + + +PATH=/sbin:/usr/sbin:/usr/bin:$PATH + +echo "Path set to: $PATH by id_wrapper" +exec /etc/init.d/$prog ${1+"$@"} diff --git a/archive/archives/supers/id/setserial b/archive/archives/supers/id/setserial new file mode 100755 index 00000000..f2eb86f6 --- /dev/null +++ b/archive/archives/supers/id/setserial @@ -0,0 +1,25 @@ +#! /bin/sh +# Sam K, Jan 2000 +# sert Doublement de wrapper: +# d'abord autolance super sur /id/(basename $0), +# Et aussi, qd appelé via super, lance un scipt de /id en modifiant le apth au prealable. + +prog=`basename $0` +supcmd=`basename ${SUPERCMD=_NILL_}` + +# Si le script courant est lanc par super, $SUPERCMD permet de le voir. +# et alors on continue gentiment le script, sinon on xcute super sur le prog. +# ca permet de faire des scripts qui lancent super sur eux-memes.. +if ! test "X$supcmd" = "X$prog"; then + echo "calling super, $supcmd $prog" + exec /usr/bin/super /id/$prog ${1+"$@"} + exit 0; +fi + +# Si le script continue, c'est qu'on est lancé par super. + + +PATH=/sbin:/usr/sbin:/usr/bin:$PATH + +echo "Path set to: $PATH by id_wrapper" +exec /etc/init.d/$prog ${1+"$@"} diff --git a/archive/archives/supers/id/single b/archive/archives/supers/id/single new file mode 100755 index 00000000..f2eb86f6 --- /dev/null +++ b/archive/archives/supers/id/single @@ -0,0 +1,25 @@ +#! /bin/sh +# Sam K, Jan 2000 +# sert Doublement de wrapper: +# d'abord autolance super sur /id/(basename $0), +# Et aussi, qd appelé via super, lance un scipt de /id en modifiant le apth au prealable. + +prog=`basename $0` +supcmd=`basename ${SUPERCMD=_NILL_}` + +# Si le script courant est lanc par super, $SUPERCMD permet de le voir. +# et alors on continue gentiment le script, sinon on xcute super sur le prog. +# ca permet de faire des scripts qui lancent super sur eux-memes.. +if ! test "X$supcmd" = "X$prog"; then + echo "calling super, $supcmd $prog" + exec /usr/bin/super /id/$prog ${1+"$@"} + exit 0; +fi + +# Si le script continue, c'est qu'on est lancé par super. + + +PATH=/sbin:/usr/sbin:/usr/bin:$PATH + +echo "Path set to: $PATH by id_wrapper" +exec /etc/init.d/$prog ${1+"$@"} diff --git a/archive/archives/supers/id/skeleton b/archive/archives/supers/id/skeleton new file mode 100755 index 00000000..f2eb86f6 --- /dev/null +++ b/archive/archives/supers/id/skeleton @@ -0,0 +1,25 @@ +#! /bin/sh +# Sam K, Jan 2000 +# sert Doublement de wrapper: +# d'abord autolance super sur /id/(basename $0), +# Et aussi, qd appelé via super, lance un scipt de /id en modifiant le apth au prealable. + +prog=`basename $0` +supcmd=`basename ${SUPERCMD=_NILL_}` + +# Si le script courant est lanc par super, $SUPERCMD permet de le voir. +# et alors on continue gentiment le script, sinon on xcute super sur le prog. +# ca permet de faire des scripts qui lancent super sur eux-memes.. +if ! test "X$supcmd" = "X$prog"; then + echo "calling super, $supcmd $prog" + exec /usr/bin/super /id/$prog ${1+"$@"} + exit 0; +fi + +# Si le script continue, c'est qu'on est lancé par super. + + +PATH=/sbin:/usr/sbin:/usr/bin:$PATH + +echo "Path set to: $PATH by id_wrapper" +exec /etc/init.d/$prog ${1+"$@"} diff --git a/archive/archives/supers/id/socks b/archive/archives/supers/id/socks new file mode 100755 index 00000000..f2eb86f6 --- /dev/null +++ b/archive/archives/supers/id/socks @@ -0,0 +1,25 @@ +#! /bin/sh +# Sam K, Jan 2000 +# sert Doublement de wrapper: +# d'abord autolance super sur /id/(basename $0), +# Et aussi, qd appelé via super, lance un scipt de /id en modifiant le apth au prealable. + +prog=`basename $0` +supcmd=`basename ${SUPERCMD=_NILL_}` + +# Si le script courant est lanc par super, $SUPERCMD permet de le voir. +# et alors on continue gentiment le script, sinon on xcute super sur le prog. +# ca permet de faire des scripts qui lancent super sur eux-memes.. +if ! test "X$supcmd" = "X$prog"; then + echo "calling super, $supcmd $prog" + exec /usr/bin/super /id/$prog ${1+"$@"} + exit 0; +fi + +# Si le script continue, c'est qu'on est lancé par super. + + +PATH=/sbin:/usr/sbin:/usr/bin:$PATH + +echo "Path set to: $PATH by id_wrapper" +exec /etc/init.d/$prog ${1+"$@"} diff --git a/archive/archives/supers/id/squid b/archive/archives/supers/id/squid new file mode 100755 index 00000000..f2eb86f6 --- /dev/null +++ b/archive/archives/supers/id/squid @@ -0,0 +1,25 @@ +#! /bin/sh +# Sam K, Jan 2000 +# sert Doublement de wrapper: +# d'abord autolance super sur /id/(basename $0), +# Et aussi, qd appelé via super, lance un scipt de /id en modifiant le apth au prealable. + +prog=`basename $0` +supcmd=`basename ${SUPERCMD=_NILL_}` + +# Si le script courant est lanc par super, $SUPERCMD permet de le voir. +# et alors on continue gentiment le script, sinon on xcute super sur le prog. +# ca permet de faire des scripts qui lancent super sur eux-memes.. +if ! test "X$supcmd" = "X$prog"; then + echo "calling super, $supcmd $prog" + exec /usr/bin/super /id/$prog ${1+"$@"} + exit 0; +fi + +# Si le script continue, c'est qu'on est lancé par super. + + +PATH=/sbin:/usr/sbin:/usr/bin:$PATH + +echo "Path set to: $PATH by id_wrapper" +exec /etc/init.d/$prog ${1+"$@"} diff --git a/archive/archives/supers/id/ssh b/archive/archives/supers/id/ssh new file mode 100755 index 00000000..f2eb86f6 --- /dev/null +++ b/archive/archives/supers/id/ssh @@ -0,0 +1,25 @@ +#! /bin/sh +# Sam K, Jan 2000 +# sert Doublement de wrapper: +# d'abord autolance super sur /id/(basename $0), +# Et aussi, qd appelé via super, lance un scipt de /id en modifiant le apth au prealable. + +prog=`basename $0` +supcmd=`basename ${SUPERCMD=_NILL_}` + +# Si le script courant est lanc par super, $SUPERCMD permet de le voir. +# et alors on continue gentiment le script, sinon on xcute super sur le prog. +# ca permet de faire des scripts qui lancent super sur eux-memes.. +if ! test "X$supcmd" = "X$prog"; then + echo "calling super, $supcmd $prog" + exec /usr/bin/super /id/$prog ${1+"$@"} + exit 0; +fi + +# Si le script continue, c'est qu'on est lancé par super. + + +PATH=/sbin:/usr/sbin:/usr/bin:$PATH + +echo "Path set to: $PATH by id_wrapper" +exec /etc/init.d/$prog ${1+"$@"} diff --git a/archive/archives/supers/id/ssh-nonfree b/archive/archives/supers/id/ssh-nonfree new file mode 100755 index 00000000..f2eb86f6 --- /dev/null +++ b/archive/archives/supers/id/ssh-nonfree @@ -0,0 +1,25 @@ +#! /bin/sh +# Sam K, Jan 2000 +# sert Doublement de wrapper: +# d'abord autolance super sur /id/(basename $0), +# Et aussi, qd appelé via super, lance un scipt de /id en modifiant le apth au prealable. + +prog=`basename $0` +supcmd=`basename ${SUPERCMD=_NILL_}` + +# Si le script courant est lanc par super, $SUPERCMD permet de le voir. +# et alors on continue gentiment le script, sinon on xcute super sur le prog. +# ca permet de faire des scripts qui lancent super sur eux-memes.. +if ! test "X$supcmd" = "X$prog"; then + echo "calling super, $supcmd $prog" + exec /usr/bin/super /id/$prog ${1+"$@"} + exit 0; +fi + +# Si le script continue, c'est qu'on est lancé par super. + + +PATH=/sbin:/usr/sbin:/usr/bin:$PATH + +echo "Path set to: $PATH by id_wrapper" +exec /etc/init.d/$prog ${1+"$@"} diff --git a/archive/archives/supers/id/stunnel b/archive/archives/supers/id/stunnel new file mode 100755 index 00000000..f2eb86f6 --- /dev/null +++ b/archive/archives/supers/id/stunnel @@ -0,0 +1,25 @@ +#! /bin/sh +# Sam K, Jan 2000 +# sert Doublement de wrapper: +# d'abord autolance super sur /id/(basename $0), +# Et aussi, qd appelé via super, lance un scipt de /id en modifiant le apth au prealable. + +prog=`basename $0` +supcmd=`basename ${SUPERCMD=_NILL_}` + +# Si le script courant est lanc par super, $SUPERCMD permet de le voir. +# et alors on continue gentiment le script, sinon on xcute super sur le prog. +# ca permet de faire des scripts qui lancent super sur eux-memes.. +if ! test "X$supcmd" = "X$prog"; then + echo "calling super, $supcmd $prog" + exec /usr/bin/super /id/$prog ${1+"$@"} + exit 0; +fi + +# Si le script continue, c'est qu'on est lancé par super. + + +PATH=/sbin:/usr/sbin:/usr/bin:$PATH + +echo "Path set to: $PATH by id_wrapper" +exec /etc/init.d/$prog ${1+"$@"} diff --git a/archive/archives/supers/id/sysklogd b/archive/archives/supers/id/sysklogd new file mode 100755 index 00000000..f2eb86f6 --- /dev/null +++ b/archive/archives/supers/id/sysklogd @@ -0,0 +1,25 @@ +#! /bin/sh +# Sam K, Jan 2000 +# sert Doublement de wrapper: +# d'abord autolance super sur /id/(basename $0), +# Et aussi, qd appelé via super, lance un scipt de /id en modifiant le apth au prealable. + +prog=`basename $0` +supcmd=`basename ${SUPERCMD=_NILL_}` + +# Si le script courant est lanc par super, $SUPERCMD permet de le voir. +# et alors on continue gentiment le script, sinon on xcute super sur le prog. +# ca permet de faire des scripts qui lancent super sur eux-memes.. +if ! test "X$supcmd" = "X$prog"; then + echo "calling super, $supcmd $prog" + exec /usr/bin/super /id/$prog ${1+"$@"} + exit 0; +fi + +# Si le script continue, c'est qu'on est lancé par super. + + +PATH=/sbin:/usr/sbin:/usr/bin:$PATH + +echo "Path set to: $PATH by id_wrapper" +exec /etc/init.d/$prog ${1+"$@"} diff --git a/archive/archives/supers/id/syslog-ng b/archive/archives/supers/id/syslog-ng new file mode 100755 index 00000000..f2eb86f6 --- /dev/null +++ b/archive/archives/supers/id/syslog-ng @@ -0,0 +1,25 @@ +#! /bin/sh +# Sam K, Jan 2000 +# sert Doublement de wrapper: +# d'abord autolance super sur /id/(basename $0), +# Et aussi, qd appelé via super, lance un scipt de /id en modifiant le apth au prealable. + +prog=`basename $0` +supcmd=`basename ${SUPERCMD=_NILL_}` + +# Si le script courant est lanc par super, $SUPERCMD permet de le voir. +# et alors on continue gentiment le script, sinon on xcute super sur le prog. +# ca permet de faire des scripts qui lancent super sur eux-memes.. +if ! test "X$supcmd" = "X$prog"; then + echo "calling super, $supcmd $prog" + exec /usr/bin/super /id/$prog ${1+"$@"} + exit 0; +fi + +# Si le script continue, c'est qu'on est lancé par super. + + +PATH=/sbin:/usr/sbin:/usr/bin:$PATH + +echo "Path set to: $PATH by id_wrapper" +exec /etc/init.d/$prog ${1+"$@"} diff --git a/archive/archives/supers/id/tc.sh b/archive/archives/supers/id/tc.sh new file mode 100755 index 00000000..f2eb86f6 --- /dev/null +++ b/archive/archives/supers/id/tc.sh @@ -0,0 +1,25 @@ +#! /bin/sh +# Sam K, Jan 2000 +# sert Doublement de wrapper: +# d'abord autolance super sur /id/(basename $0), +# Et aussi, qd appelé via super, lance un scipt de /id en modifiant le apth au prealable. + +prog=`basename $0` +supcmd=`basename ${SUPERCMD=_NILL_}` + +# Si le script courant est lanc par super, $SUPERCMD permet de le voir. +# et alors on continue gentiment le script, sinon on xcute super sur le prog. +# ca permet de faire des scripts qui lancent super sur eux-memes.. +if ! test "X$supcmd" = "X$prog"; then + echo "calling super, $supcmd $prog" + exec /usr/bin/super /id/$prog ${1+"$@"} + exit 0; +fi + +# Si le script continue, c'est qu'on est lancé par super. + + +PATH=/sbin:/usr/sbin:/usr/bin:$PATH + +echo "Path set to: $PATH by id_wrapper" +exec /etc/init.d/$prog ${1+"$@"} diff --git a/archive/archives/supers/id/umountfs b/archive/archives/supers/id/umountfs new file mode 100755 index 00000000..f2eb86f6 --- /dev/null +++ b/archive/archives/supers/id/umountfs @@ -0,0 +1,25 @@ +#! /bin/sh +# Sam K, Jan 2000 +# sert Doublement de wrapper: +# d'abord autolance super sur /id/(basename $0), +# Et aussi, qd appelé via super, lance un scipt de /id en modifiant le apth au prealable. + +prog=`basename $0` +supcmd=`basename ${SUPERCMD=_NILL_}` + +# Si le script courant est lanc par super, $SUPERCMD permet de le voir. +# et alors on continue gentiment le script, sinon on xcute super sur le prog. +# ca permet de faire des scripts qui lancent super sur eux-memes.. +if ! test "X$supcmd" = "X$prog"; then + echo "calling super, $supcmd $prog" + exec /usr/bin/super /id/$prog ${1+"$@"} + exit 0; +fi + +# Si le script continue, c'est qu'on est lancé par super. + + +PATH=/sbin:/usr/sbin:/usr/bin:$PATH + +echo "Path set to: $PATH by id_wrapper" +exec /etc/init.d/$prog ${1+"$@"} diff --git a/archive/archives/supers/id/urandom b/archive/archives/supers/id/urandom new file mode 100755 index 00000000..f2eb86f6 --- /dev/null +++ b/archive/archives/supers/id/urandom @@ -0,0 +1,25 @@ +#! /bin/sh +# Sam K, Jan 2000 +# sert Doublement de wrapper: +# d'abord autolance super sur /id/(basename $0), +# Et aussi, qd appelé via super, lance un scipt de /id en modifiant le apth au prealable. + +prog=`basename $0` +supcmd=`basename ${SUPERCMD=_NILL_}` + +# Si le script courant est lanc par super, $SUPERCMD permet de le voir. +# et alors on continue gentiment le script, sinon on xcute super sur le prog. +# ca permet de faire des scripts qui lancent super sur eux-memes.. +if ! test "X$supcmd" = "X$prog"; then + echo "calling super, $supcmd $prog" + exec /usr/bin/super /id/$prog ${1+"$@"} + exit 0; +fi + +# Si le script continue, c'est qu'on est lancé par super. + + +PATH=/sbin:/usr/sbin:/usr/bin:$PATH + +echo "Path set to: $PATH by id_wrapper" +exec /etc/init.d/$prog ${1+"$@"} diff --git a/archive/archives/supers/id/wu-ftpd b/archive/archives/supers/id/wu-ftpd new file mode 100755 index 00000000..f2eb86f6 --- /dev/null +++ b/archive/archives/supers/id/wu-ftpd @@ -0,0 +1,25 @@ +#! /bin/sh +# Sam K, Jan 2000 +# sert Doublement de wrapper: +# d'abord autolance super sur /id/(basename $0), +# Et aussi, qd appelé via super, lance un scipt de /id en modifiant le apth au prealable. + +prog=`basename $0` +supcmd=`basename ${SUPERCMD=_NILL_}` + +# Si le script courant est lanc par super, $SUPERCMD permet de le voir. +# et alors on continue gentiment le script, sinon on xcute super sur le prog. +# ca permet de faire des scripts qui lancent super sur eux-memes.. +if ! test "X$supcmd" = "X$prog"; then + echo "calling super, $supcmd $prog" + exec /usr/bin/super /id/$prog ${1+"$@"} + exit 0; +fi + +# Si le script continue, c'est qu'on est lancé par super. + + +PATH=/sbin:/usr/sbin:/usr/bin:$PATH + +echo "Path set to: $PATH by id_wrapper" +exec /etc/init.d/$prog ${1+"$@"} diff --git a/archive/archives/supers/id/xinetd b/archive/archives/supers/id/xinetd new file mode 100755 index 00000000..f2eb86f6 --- /dev/null +++ b/archive/archives/supers/id/xinetd @@ -0,0 +1,25 @@ +#! /bin/sh +# Sam K, Jan 2000 +# sert Doublement de wrapper: +# d'abord autolance super sur /id/(basename $0), +# Et aussi, qd appelé via super, lance un scipt de /id en modifiant le apth au prealable. + +prog=`basename $0` +supcmd=`basename ${SUPERCMD=_NILL_}` + +# Si le script courant est lanc par super, $SUPERCMD permet de le voir. +# et alors on continue gentiment le script, sinon on xcute super sur le prog. +# ca permet de faire des scripts qui lancent super sur eux-memes.. +if ! test "X$supcmd" = "X$prog"; then + echo "calling super, $supcmd $prog" + exec /usr/bin/super /id/$prog ${1+"$@"} + exit 0; +fi + +# Si le script continue, c'est qu'on est lancé par super. + + +PATH=/sbin:/usr/sbin:/usr/bin:$PATH + +echo "Path set to: $PATH by id_wrapper" +exec /etc/init.d/$prog ${1+"$@"} diff --git a/archive/archives/supers/intop b/archive/archives/supers/intop new file mode 100755 index 00000000..40efe6b9 --- /dev/null +++ b/archive/archives/supers/intop @@ -0,0 +1,18 @@ +#! /bin/sh +# Sam K, déc 99 +# magie: le script lance super sur son propre nom +# et ca lance le bon programme.. + +prog=`basename $0` + +# Si le script courant est lancé par super, $SUPERCMD permet de le voir. +# et alors on continue gentiment le script, sinon on éxécute super sur le prog. +# ca permet de faire des scripts qui lancent super sur eux-memes.. +test "X$SUPERCMD" = "X$prog" || test "X$UID" = "X0" || + exec /usr/bin/super $prog ${1+"$@"} # le script s'arrete ici ds ce cas. + +# Contenu du script : + +rep=${ORIG_HOME-$HOME} +/usr/local/bin/intop ${1+"$@"} + diff --git a/archive/archives/supers/iptraf b/archive/archives/supers/iptraf new file mode 100755 index 00000000..e52864f2 --- /dev/null +++ b/archive/archives/supers/iptraf @@ -0,0 +1,19 @@ +#! /bin/sh +# Sam K, déc 99 +# magie: le script lance super sur son propre nom +# et ca lance le bon programme.. + +prog=`basename $0` + +# Si le script courant est lancé par super, $SUPERCMD permet de le voir. +# et alors on continue gentiment le script, sinon on éxécute super sur le prog. +# ca permet de faire des scripts qui lancent super sur eux-memes.. +test "X$SUPERCMD" = "X$prog" || test "X$UID" = "X0" || + exec /usr/bin/super $prog ${1+"$@"} # le script s'arrete ici ds ce cas. + +# Contenu du script : +# ici c'est vide car "super $prog" va en fait éxécuter un autre script, celui ci étant juste un "wrapper". +# pour lanceMake et autre, c'est là qu'est mis le script à éxécuter. + +test "X$UID" = "X0" && echo "uid=root -> on fait rien. lancez le prog directement, cf _where _." + diff --git a/archive/archives/supers/killntop b/archive/archives/supers/killntop new file mode 100755 index 00000000..fe2fa195 --- /dev/null +++ b/archive/archives/supers/killntop @@ -0,0 +1,16 @@ +#! /bin/sh +# Sam K, déc 99 +# magie: le script lance super sur son propre nom +# et ca lance le bon programme.. + +prog=`basename $0` + +# Si le script courant est lancé par super, $SUPERCMD permet de le voir. +# et alors on continue gentiment le script, sinon on éxécute super sur le prog. +# ca permet de faire des scripts qui lancent super sur eux-memes.. +test "X$SUPERCMD" = "X$prog" || + exec /usr/bin/super $prog ${1+"$@"} # le script s'arrete ici ds ce cas. + +# Contenu du script : +killall ${1+"$@"} ntop + diff --git a/archive/archives/supers/lisJournal b/archive/archives/supers/lisJournal new file mode 100755 index 00000000..8e93f249 --- /dev/null +++ b/archive/archives/supers/lisJournal @@ -0,0 +1 @@ +mutt -f /home/admdiary/all-messages -F /home/admdiary/diary.muttrc diff --git a/archive/archives/supers/mklogin b/archive/archives/supers/mklogin new file mode 100755 index 00000000..41db15d0 --- /dev/null +++ b/archive/archives/supers/mklogin @@ -0,0 +1,16 @@ +#! /bin/sh +# Sam K, déc 99 +# magie: le script lance super sur son propre nom +# et ca lance le bon programme.. + +prog=`basename $0` + +test "X$SUPERCMD" = "X$prog" || test "X$UID" = "X0" || + exec /usr/bin/super $prog ${1+"$@"} # le script s'arrete ici ds ce cas. + +# Contenu du script : +# juste etendre le path, et lancer le prog +# /supers n'est plus ds le path, +# donc 'exec prog' lance le vrai prog. + export PATH=/usr/local/sbin:/usr/sbin:/sbin:/opt/local/bin:/usr/local/bin:/usr/bin:/bin + exec /etc/CRANS/code/mklogin.py ${1+"$@"} diff --git a/archive/archives/supers/mknewlogin b/archive/archives/supers/mknewlogin new file mode 100755 index 00000000..e52864f2 --- /dev/null +++ b/archive/archives/supers/mknewlogin @@ -0,0 +1,19 @@ +#! /bin/sh +# Sam K, déc 99 +# magie: le script lance super sur son propre nom +# et ca lance le bon programme.. + +prog=`basename $0` + +# Si le script courant est lancé par super, $SUPERCMD permet de le voir. +# et alors on continue gentiment le script, sinon on éxécute super sur le prog. +# ca permet de faire des scripts qui lancent super sur eux-memes.. +test "X$SUPERCMD" = "X$prog" || test "X$UID" = "X0" || + exec /usr/bin/super $prog ${1+"$@"} # le script s'arrete ici ds ce cas. + +# Contenu du script : +# ici c'est vide car "super $prog" va en fait éxécuter un autre script, celui ci étant juste un "wrapper". +# pour lanceMake et autre, c'est là qu'est mis le script à éxécuter. + +test "X$UID" = "X0" && echo "uid=root -> on fait rien. lancez le prog directement, cf _where _." + diff --git a/archive/archives/supers/news/actmerge b/archive/archives/supers/news/actmerge new file mode 100755 index 00000000..c98f967b --- /dev/null +++ b/archive/archives/supers/news/actmerge @@ -0,0 +1,26 @@ +#! /bin/sh +# Sam K, déc 99 +# magie: le script lance super sur son propre nom +# et ca lance le bon programme.. + +prog=`basename $0` + +# Si le script courant est lancé par super, $SUPERCMD permet de le voir. +# et alors on continue gentiment le script, sinon on éxécute super sur le prog. +# ca permet de faire des scripts qui lancent super sur eux-memes.. +if ! test "X$SUPERCMD" = "X$prog"; then + exec /usr/bin/super /usr/lib/news/bin/$prog ${1+"$@"} + exit 0; +fi + +# Si le script courant est lanc par super, $SUPERCMD permet de le voir. +# et alors on continue gentiment le script, sinon on xcute super sur le prog. +# ca permet de faire des scripts qui lancent super sur eux-memes.. +# Contenu du script : + +# ici c'est vide car "super $prog" va en fait éxécuter un autre script (ou lien), comme +# configuré dans /etc/super.tab. +# celui ci est juste un "wrapper". +# pour lanceMake et autre, c'est là qu'est mis le script à éxécuter. + + diff --git a/archive/archives/supers/news/actsync b/archive/archives/supers/news/actsync new file mode 100755 index 00000000..c98f967b --- /dev/null +++ b/archive/archives/supers/news/actsync @@ -0,0 +1,26 @@ +#! /bin/sh +# Sam K, déc 99 +# magie: le script lance super sur son propre nom +# et ca lance le bon programme.. + +prog=`basename $0` + +# Si le script courant est lancé par super, $SUPERCMD permet de le voir. +# et alors on continue gentiment le script, sinon on éxécute super sur le prog. +# ca permet de faire des scripts qui lancent super sur eux-memes.. +if ! test "X$SUPERCMD" = "X$prog"; then + exec /usr/bin/super /usr/lib/news/bin/$prog ${1+"$@"} + exit 0; +fi + +# Si le script courant est lanc par super, $SUPERCMD permet de le voir. +# et alors on continue gentiment le script, sinon on xcute super sur le prog. +# ca permet de faire des scripts qui lancent super sur eux-memes.. +# Contenu du script : + +# ici c'est vide car "super $prog" va en fait éxécuter un autre script (ou lien), comme +# configuré dans /etc/super.tab. +# celui ci est juste un "wrapper". +# pour lanceMake et autre, c'est là qu'est mis le script à éxécuter. + + diff --git a/archive/archives/supers/news/actsyncd b/archive/archives/supers/news/actsyncd new file mode 100755 index 00000000..c98f967b --- /dev/null +++ b/archive/archives/supers/news/actsyncd @@ -0,0 +1,26 @@ +#! /bin/sh +# Sam K, déc 99 +# magie: le script lance super sur son propre nom +# et ca lance le bon programme.. + +prog=`basename $0` + +# Si le script courant est lancé par super, $SUPERCMD permet de le voir. +# et alors on continue gentiment le script, sinon on éxécute super sur le prog. +# ca permet de faire des scripts qui lancent super sur eux-memes.. +if ! test "X$SUPERCMD" = "X$prog"; then + exec /usr/bin/super /usr/lib/news/bin/$prog ${1+"$@"} + exit 0; +fi + +# Si le script courant est lanc par super, $SUPERCMD permet de le voir. +# et alors on continue gentiment le script, sinon on xcute super sur le prog. +# ca permet de faire des scripts qui lancent super sur eux-memes.. +# Contenu du script : + +# ici c'est vide car "super $prog" va en fait éxécuter un autre script (ou lien), comme +# configuré dans /etc/super.tab. +# celui ci est juste un "wrapper". +# pour lanceMake et autre, c'est là qu'est mis le script à éxécuter. + + diff --git a/archive/archives/supers/news/archive b/archive/archives/supers/news/archive new file mode 100755 index 00000000..c98f967b --- /dev/null +++ b/archive/archives/supers/news/archive @@ -0,0 +1,26 @@ +#! /bin/sh +# Sam K, déc 99 +# magie: le script lance super sur son propre nom +# et ca lance le bon programme.. + +prog=`basename $0` + +# Si le script courant est lancé par super, $SUPERCMD permet de le voir. +# et alors on continue gentiment le script, sinon on éxécute super sur le prog. +# ca permet de faire des scripts qui lancent super sur eux-memes.. +if ! test "X$SUPERCMD" = "X$prog"; then + exec /usr/bin/super /usr/lib/news/bin/$prog ${1+"$@"} + exit 0; +fi + +# Si le script courant est lanc par super, $SUPERCMD permet de le voir. +# et alors on continue gentiment le script, sinon on xcute super sur le prog. +# ca permet de faire des scripts qui lancent super sur eux-memes.. +# Contenu du script : + +# ici c'est vide car "super $prog" va en fait éxécuter un autre script (ou lien), comme +# configuré dans /etc/super.tab. +# celui ci est juste un "wrapper". +# pour lanceMake et autre, c'est là qu'est mis le script à éxécuter. + + diff --git a/archive/archives/supers/news/auth b/archive/archives/supers/news/auth new file mode 100755 index 00000000..c98f967b --- /dev/null +++ b/archive/archives/supers/news/auth @@ -0,0 +1,26 @@ +#! /bin/sh +# Sam K, déc 99 +# magie: le script lance super sur son propre nom +# et ca lance le bon programme.. + +prog=`basename $0` + +# Si le script courant est lancé par super, $SUPERCMD permet de le voir. +# et alors on continue gentiment le script, sinon on éxécute super sur le prog. +# ca permet de faire des scripts qui lancent super sur eux-memes.. +if ! test "X$SUPERCMD" = "X$prog"; then + exec /usr/bin/super /usr/lib/news/bin/$prog ${1+"$@"} + exit 0; +fi + +# Si le script courant est lanc par super, $SUPERCMD permet de le voir. +# et alors on continue gentiment le script, sinon on xcute super sur le prog. +# ca permet de faire des scripts qui lancent super sur eux-memes.. +# Contenu du script : + +# ici c'est vide car "super $prog" va en fait éxécuter un autre script (ou lien), comme +# configuré dans /etc/super.tab. +# celui ci est juste un "wrapper". +# pour lanceMake et autre, c'est là qu'est mis le script à éxécuter. + + diff --git a/archive/archives/supers/news/batcher b/archive/archives/supers/news/batcher new file mode 100755 index 00000000..c98f967b --- /dev/null +++ b/archive/archives/supers/news/batcher @@ -0,0 +1,26 @@ +#! /bin/sh +# Sam K, déc 99 +# magie: le script lance super sur son propre nom +# et ca lance le bon programme.. + +prog=`basename $0` + +# Si le script courant est lancé par super, $SUPERCMD permet de le voir. +# et alors on continue gentiment le script, sinon on éxécute super sur le prog. +# ca permet de faire des scripts qui lancent super sur eux-memes.. +if ! test "X$SUPERCMD" = "X$prog"; then + exec /usr/bin/super /usr/lib/news/bin/$prog ${1+"$@"} + exit 0; +fi + +# Si le script courant est lanc par super, $SUPERCMD permet de le voir. +# et alors on continue gentiment le script, sinon on xcute super sur le prog. +# ca permet de faire des scripts qui lancent super sur eux-memes.. +# Contenu du script : + +# ici c'est vide car "super $prog" va en fait éxécuter un autre script (ou lien), comme +# configuré dans /etc/super.tab. +# celui ci est juste un "wrapper". +# pour lanceMake et autre, c'est là qu'est mis le script à éxécuter. + + diff --git a/archive/archives/supers/news/buffchan b/archive/archives/supers/news/buffchan new file mode 100755 index 00000000..c98f967b --- /dev/null +++ b/archive/archives/supers/news/buffchan @@ -0,0 +1,26 @@ +#! /bin/sh +# Sam K, déc 99 +# magie: le script lance super sur son propre nom +# et ca lance le bon programme.. + +prog=`basename $0` + +# Si le script courant est lancé par super, $SUPERCMD permet de le voir. +# et alors on continue gentiment le script, sinon on éxécute super sur le prog. +# ca permet de faire des scripts qui lancent super sur eux-memes.. +if ! test "X$SUPERCMD" = "X$prog"; then + exec /usr/bin/super /usr/lib/news/bin/$prog ${1+"$@"} + exit 0; +fi + +# Si le script courant est lanc par super, $SUPERCMD permet de le voir. +# et alors on continue gentiment le script, sinon on xcute super sur le prog. +# ca permet de faire des scripts qui lancent super sur eux-memes.. +# Contenu du script : + +# ici c'est vide car "super $prog" va en fait éxécuter un autre script (ou lien), comme +# configuré dans /etc/super.tab. +# celui ci est juste un "wrapper". +# pour lanceMake et autre, c'est là qu'est mis le script à éxécuter. + + diff --git a/archive/archives/supers/news/cnfsheadconf b/archive/archives/supers/news/cnfsheadconf new file mode 100755 index 00000000..c98f967b --- /dev/null +++ b/archive/archives/supers/news/cnfsheadconf @@ -0,0 +1,26 @@ +#! /bin/sh +# Sam K, déc 99 +# magie: le script lance super sur son propre nom +# et ca lance le bon programme.. + +prog=`basename $0` + +# Si le script courant est lancé par super, $SUPERCMD permet de le voir. +# et alors on continue gentiment le script, sinon on éxécute super sur le prog. +# ca permet de faire des scripts qui lancent super sur eux-memes.. +if ! test "X$SUPERCMD" = "X$prog"; then + exec /usr/bin/super /usr/lib/news/bin/$prog ${1+"$@"} + exit 0; +fi + +# Si le script courant est lanc par super, $SUPERCMD permet de le voir. +# et alors on continue gentiment le script, sinon on xcute super sur le prog. +# ca permet de faire des scripts qui lancent super sur eux-memes.. +# Contenu du script : + +# ici c'est vide car "super $prog" va en fait éxécuter un autre script (ou lien), comme +# configuré dans /etc/super.tab. +# celui ci est juste un "wrapper". +# pour lanceMake et autre, c'est là qu'est mis le script à éxécuter. + + diff --git a/archive/archives/supers/news/cnfsstat b/archive/archives/supers/news/cnfsstat new file mode 100755 index 00000000..c98f967b --- /dev/null +++ b/archive/archives/supers/news/cnfsstat @@ -0,0 +1,26 @@ +#! /bin/sh +# Sam K, déc 99 +# magie: le script lance super sur son propre nom +# et ca lance le bon programme.. + +prog=`basename $0` + +# Si le script courant est lancé par super, $SUPERCMD permet de le voir. +# et alors on continue gentiment le script, sinon on éxécute super sur le prog. +# ca permet de faire des scripts qui lancent super sur eux-memes.. +if ! test "X$SUPERCMD" = "X$prog"; then + exec /usr/bin/super /usr/lib/news/bin/$prog ${1+"$@"} + exit 0; +fi + +# Si le script courant est lanc par super, $SUPERCMD permet de le voir. +# et alors on continue gentiment le script, sinon on xcute super sur le prog. +# ca permet de faire des scripts qui lancent super sur eux-memes.. +# Contenu du script : + +# ici c'est vide car "super $prog" va en fait éxécuter un autre script (ou lien), comme +# configuré dans /etc/super.tab. +# celui ci est juste un "wrapper". +# pour lanceMake et autre, c'est là qu'est mis le script à éxécuter. + + diff --git a/archive/archives/supers/news/control b/archive/archives/supers/news/control new file mode 100755 index 00000000..c98f967b --- /dev/null +++ b/archive/archives/supers/news/control @@ -0,0 +1,26 @@ +#! /bin/sh +# Sam K, déc 99 +# magie: le script lance super sur son propre nom +# et ca lance le bon programme.. + +prog=`basename $0` + +# Si le script courant est lancé par super, $SUPERCMD permet de le voir. +# et alors on continue gentiment le script, sinon on éxécute super sur le prog. +# ca permet de faire des scripts qui lancent super sur eux-memes.. +if ! test "X$SUPERCMD" = "X$prog"; then + exec /usr/bin/super /usr/lib/news/bin/$prog ${1+"$@"} + exit 0; +fi + +# Si le script courant est lanc par super, $SUPERCMD permet de le voir. +# et alors on continue gentiment le script, sinon on xcute super sur le prog. +# ca permet de faire des scripts qui lancent super sur eux-memes.. +# Contenu du script : + +# ici c'est vide car "super $prog" va en fait éxécuter un autre script (ou lien), comme +# configuré dans /etc/super.tab. +# celui ci est juste un "wrapper". +# pour lanceMake et autre, c'est là qu'est mis le script à éxécuter. + + diff --git a/archive/archives/supers/news/controlbatch b/archive/archives/supers/news/controlbatch new file mode 100755 index 00000000..c98f967b --- /dev/null +++ b/archive/archives/supers/news/controlbatch @@ -0,0 +1,26 @@ +#! /bin/sh +# Sam K, déc 99 +# magie: le script lance super sur son propre nom +# et ca lance le bon programme.. + +prog=`basename $0` + +# Si le script courant est lancé par super, $SUPERCMD permet de le voir. +# et alors on continue gentiment le script, sinon on éxécute super sur le prog. +# ca permet de faire des scripts qui lancent super sur eux-memes.. +if ! test "X$SUPERCMD" = "X$prog"; then + exec /usr/bin/super /usr/lib/news/bin/$prog ${1+"$@"} + exit 0; +fi + +# Si le script courant est lanc par super, $SUPERCMD permet de le voir. +# et alors on continue gentiment le script, sinon on xcute super sur le prog. +# ca permet de faire des scripts qui lancent super sur eux-memes.. +# Contenu du script : + +# ici c'est vide car "super $prog" va en fait éxécuter un autre script (ou lien), comme +# configuré dans /etc/super.tab. +# celui ci est juste un "wrapper". +# pour lanceMake et autre, c'est là qu'est mis le script à éxécuter. + + diff --git a/archive/archives/supers/news/controlchan b/archive/archives/supers/news/controlchan new file mode 100755 index 00000000..c98f967b --- /dev/null +++ b/archive/archives/supers/news/controlchan @@ -0,0 +1,26 @@ +#! /bin/sh +# Sam K, déc 99 +# magie: le script lance super sur son propre nom +# et ca lance le bon programme.. + +prog=`basename $0` + +# Si le script courant est lancé par super, $SUPERCMD permet de le voir. +# et alors on continue gentiment le script, sinon on éxécute super sur le prog. +# ca permet de faire des scripts qui lancent super sur eux-memes.. +if ! test "X$SUPERCMD" = "X$prog"; then + exec /usr/bin/super /usr/lib/news/bin/$prog ${1+"$@"} + exit 0; +fi + +# Si le script courant est lanc par super, $SUPERCMD permet de le voir. +# et alors on continue gentiment le script, sinon on xcute super sur le prog. +# ca permet de faire des scripts qui lancent super sur eux-memes.. +# Contenu du script : + +# ici c'est vide car "super $prog" va en fait éxécuter un autre script (ou lien), comme +# configuré dans /etc/super.tab. +# celui ci est juste un "wrapper". +# pour lanceMake et autre, c'est là qu'est mis le script à éxécuter. + + diff --git a/archive/archives/supers/news/convdate b/archive/archives/supers/news/convdate new file mode 100755 index 00000000..c98f967b --- /dev/null +++ b/archive/archives/supers/news/convdate @@ -0,0 +1,26 @@ +#! /bin/sh +# Sam K, déc 99 +# magie: le script lance super sur son propre nom +# et ca lance le bon programme.. + +prog=`basename $0` + +# Si le script courant est lancé par super, $SUPERCMD permet de le voir. +# et alors on continue gentiment le script, sinon on éxécute super sur le prog. +# ca permet de faire des scripts qui lancent super sur eux-memes.. +if ! test "X$SUPERCMD" = "X$prog"; then + exec /usr/bin/super /usr/lib/news/bin/$prog ${1+"$@"} + exit 0; +fi + +# Si le script courant est lanc par super, $SUPERCMD permet de le voir. +# et alors on continue gentiment le script, sinon on xcute super sur le prog. +# ca permet de faire des scripts qui lancent super sur eux-memes.. +# Contenu du script : + +# ici c'est vide car "super $prog" va en fait éxécuter un autre script (ou lien), comme +# configuré dans /etc/super.tab. +# celui ci est juste un "wrapper". +# pour lanceMake et autre, c'est là qu'est mis le script à éxécuter. + + diff --git a/archive/archives/supers/news/ctlinnd b/archive/archives/supers/news/ctlinnd new file mode 100755 index 00000000..c98f967b --- /dev/null +++ b/archive/archives/supers/news/ctlinnd @@ -0,0 +1,26 @@ +#! /bin/sh +# Sam K, déc 99 +# magie: le script lance super sur son propre nom +# et ca lance le bon programme.. + +prog=`basename $0` + +# Si le script courant est lancé par super, $SUPERCMD permet de le voir. +# et alors on continue gentiment le script, sinon on éxécute super sur le prog. +# ca permet de faire des scripts qui lancent super sur eux-memes.. +if ! test "X$SUPERCMD" = "X$prog"; then + exec /usr/bin/super /usr/lib/news/bin/$prog ${1+"$@"} + exit 0; +fi + +# Si le script courant est lanc par super, $SUPERCMD permet de le voir. +# et alors on continue gentiment le script, sinon on xcute super sur le prog. +# ca permet de faire des scripts qui lancent super sur eux-memes.. +# Contenu du script : + +# ici c'est vide car "super $prog" va en fait éxécuter un autre script (ou lien), comme +# configuré dans /etc/super.tab. +# celui ci est juste un "wrapper". +# pour lanceMake et autre, c'est là qu'est mis le script à éxécuter. + + diff --git a/archive/archives/supers/news/cvtbatch b/archive/archives/supers/news/cvtbatch new file mode 100755 index 00000000..c98f967b --- /dev/null +++ b/archive/archives/supers/news/cvtbatch @@ -0,0 +1,26 @@ +#! /bin/sh +# Sam K, déc 99 +# magie: le script lance super sur son propre nom +# et ca lance le bon programme.. + +prog=`basename $0` + +# Si le script courant est lancé par super, $SUPERCMD permet de le voir. +# et alors on continue gentiment le script, sinon on éxécute super sur le prog. +# ca permet de faire des scripts qui lancent super sur eux-memes.. +if ! test "X$SUPERCMD" = "X$prog"; then + exec /usr/bin/super /usr/lib/news/bin/$prog ${1+"$@"} + exit 0; +fi + +# Si le script courant est lanc par super, $SUPERCMD permet de le voir. +# et alors on continue gentiment le script, sinon on xcute super sur le prog. +# ca permet de faire des scripts qui lancent super sur eux-memes.. +# Contenu du script : + +# ici c'est vide car "super $prog" va en fait éxécuter un autre script (ou lien), comme +# configuré dans /etc/super.tab. +# celui ci est juste un "wrapper". +# pour lanceMake et autre, c'est là qu'est mis le script à éxécuter. + + diff --git a/archive/archives/supers/news/dbprocs b/archive/archives/supers/news/dbprocs new file mode 100755 index 00000000..c98f967b --- /dev/null +++ b/archive/archives/supers/news/dbprocs @@ -0,0 +1,26 @@ +#! /bin/sh +# Sam K, déc 99 +# magie: le script lance super sur son propre nom +# et ca lance le bon programme.. + +prog=`basename $0` + +# Si le script courant est lancé par super, $SUPERCMD permet de le voir. +# et alors on continue gentiment le script, sinon on éxécute super sur le prog. +# ca permet de faire des scripts qui lancent super sur eux-memes.. +if ! test "X$SUPERCMD" = "X$prog"; then + exec /usr/bin/super /usr/lib/news/bin/$prog ${1+"$@"} + exit 0; +fi + +# Si le script courant est lanc par super, $SUPERCMD permet de le voir. +# et alors on continue gentiment le script, sinon on xcute super sur le prog. +# ca permet de faire des scripts qui lancent super sur eux-memes.. +# Contenu du script : + +# ici c'est vide car "super $prog" va en fait éxécuter un autre script (ou lien), comme +# configuré dans /etc/super.tab. +# celui ci est juste un "wrapper". +# pour lanceMake et autre, c'est là qu'est mis le script à éxécuter. + + diff --git a/archive/archives/supers/news/expire b/archive/archives/supers/news/expire new file mode 100755 index 00000000..c98f967b --- /dev/null +++ b/archive/archives/supers/news/expire @@ -0,0 +1,26 @@ +#! /bin/sh +# Sam K, déc 99 +# magie: le script lance super sur son propre nom +# et ca lance le bon programme.. + +prog=`basename $0` + +# Si le script courant est lancé par super, $SUPERCMD permet de le voir. +# et alors on continue gentiment le script, sinon on éxécute super sur le prog. +# ca permet de faire des scripts qui lancent super sur eux-memes.. +if ! test "X$SUPERCMD" = "X$prog"; then + exec /usr/bin/super /usr/lib/news/bin/$prog ${1+"$@"} + exit 0; +fi + +# Si le script courant est lanc par super, $SUPERCMD permet de le voir. +# et alors on continue gentiment le script, sinon on xcute super sur le prog. +# ca permet de faire des scripts qui lancent super sur eux-memes.. +# Contenu du script : + +# ici c'est vide car "super $prog" va en fait éxécuter un autre script (ou lien), comme +# configuré dans /etc/super.tab. +# celui ci est juste un "wrapper". +# pour lanceMake et autre, c'est là qu'est mis le script à éxécuter. + + diff --git a/archive/archives/supers/news/expireover b/archive/archives/supers/news/expireover new file mode 100755 index 00000000..c98f967b --- /dev/null +++ b/archive/archives/supers/news/expireover @@ -0,0 +1,26 @@ +#! /bin/sh +# Sam K, déc 99 +# magie: le script lance super sur son propre nom +# et ca lance le bon programme.. + +prog=`basename $0` + +# Si le script courant est lancé par super, $SUPERCMD permet de le voir. +# et alors on continue gentiment le script, sinon on éxécute super sur le prog. +# ca permet de faire des scripts qui lancent super sur eux-memes.. +if ! test "X$SUPERCMD" = "X$prog"; then + exec /usr/bin/super /usr/lib/news/bin/$prog ${1+"$@"} + exit 0; +fi + +# Si le script courant est lanc par super, $SUPERCMD permet de le voir. +# et alors on continue gentiment le script, sinon on xcute super sur le prog. +# ca permet de faire des scripts qui lancent super sur eux-memes.. +# Contenu du script : + +# ici c'est vide car "super $prog" va en fait éxécuter un autre script (ou lien), comme +# configuré dans /etc/super.tab. +# celui ci est juste un "wrapper". +# pour lanceMake et autre, c'est là qu'est mis le script à éxécuter. + + diff --git a/archive/archives/supers/news/expirerm b/archive/archives/supers/news/expirerm new file mode 100755 index 00000000..c98f967b --- /dev/null +++ b/archive/archives/supers/news/expirerm @@ -0,0 +1,26 @@ +#! /bin/sh +# Sam K, déc 99 +# magie: le script lance super sur son propre nom +# et ca lance le bon programme.. + +prog=`basename $0` + +# Si le script courant est lancé par super, $SUPERCMD permet de le voir. +# et alors on continue gentiment le script, sinon on éxécute super sur le prog. +# ca permet de faire des scripts qui lancent super sur eux-memes.. +if ! test "X$SUPERCMD" = "X$prog"; then + exec /usr/bin/super /usr/lib/news/bin/$prog ${1+"$@"} + exit 0; +fi + +# Si le script courant est lanc par super, $SUPERCMD permet de le voir. +# et alors on continue gentiment le script, sinon on xcute super sur le prog. +# ca permet de faire des scripts qui lancent super sur eux-memes.. +# Contenu du script : + +# ici c'est vide car "super $prog" va en fait éxécuter un autre script (ou lien), comme +# configuré dans /etc/super.tab. +# celui ci est juste un "wrapper". +# pour lanceMake et autre, c'est là qu'est mis le script à éxécuter. + + diff --git a/archive/archives/supers/news/fastrm b/archive/archives/supers/news/fastrm new file mode 100755 index 00000000..c98f967b --- /dev/null +++ b/archive/archives/supers/news/fastrm @@ -0,0 +1,26 @@ +#! /bin/sh +# Sam K, déc 99 +# magie: le script lance super sur son propre nom +# et ca lance le bon programme.. + +prog=`basename $0` + +# Si le script courant est lancé par super, $SUPERCMD permet de le voir. +# et alors on continue gentiment le script, sinon on éxécute super sur le prog. +# ca permet de faire des scripts qui lancent super sur eux-memes.. +if ! test "X$SUPERCMD" = "X$prog"; then + exec /usr/bin/super /usr/lib/news/bin/$prog ${1+"$@"} + exit 0; +fi + +# Si le script courant est lanc par super, $SUPERCMD permet de le voir. +# et alors on continue gentiment le script, sinon on xcute super sur le prog. +# ca permet de faire des scripts qui lancent super sur eux-memes.. +# Contenu du script : + +# ici c'est vide car "super $prog" va en fait éxécuter un autre script (ou lien), comme +# configuré dans /etc/super.tab. +# celui ci est juste un "wrapper". +# pour lanceMake et autre, c'est là qu'est mis le script à éxécuter. + + diff --git a/archive/archives/supers/news/filechan b/archive/archives/supers/news/filechan new file mode 100755 index 00000000..c98f967b --- /dev/null +++ b/archive/archives/supers/news/filechan @@ -0,0 +1,26 @@ +#! /bin/sh +# Sam K, déc 99 +# magie: le script lance super sur son propre nom +# et ca lance le bon programme.. + +prog=`basename $0` + +# Si le script courant est lancé par super, $SUPERCMD permet de le voir. +# et alors on continue gentiment le script, sinon on éxécute super sur le prog. +# ca permet de faire des scripts qui lancent super sur eux-memes.. +if ! test "X$SUPERCMD" = "X$prog"; then + exec /usr/bin/super /usr/lib/news/bin/$prog ${1+"$@"} + exit 0; +fi + +# Si le script courant est lanc par super, $SUPERCMD permet de le voir. +# et alors on continue gentiment le script, sinon on xcute super sur le prog. +# ca permet de faire des scripts qui lancent super sur eux-memes.. +# Contenu du script : + +# ici c'est vide car "super $prog" va en fait éxécuter un autre script (ou lien), comme +# configuré dans /etc/super.tab. +# celui ci est juste un "wrapper". +# pour lanceMake et autre, c'est là qu'est mis le script à éxécuter. + + diff --git a/archive/archives/supers/news/getlist b/archive/archives/supers/news/getlist new file mode 100755 index 00000000..c98f967b --- /dev/null +++ b/archive/archives/supers/news/getlist @@ -0,0 +1,26 @@ +#! /bin/sh +# Sam K, déc 99 +# magie: le script lance super sur son propre nom +# et ca lance le bon programme.. + +prog=`basename $0` + +# Si le script courant est lancé par super, $SUPERCMD permet de le voir. +# et alors on continue gentiment le script, sinon on éxécute super sur le prog. +# ca permet de faire des scripts qui lancent super sur eux-memes.. +if ! test "X$SUPERCMD" = "X$prog"; then + exec /usr/bin/super /usr/lib/news/bin/$prog ${1+"$@"} + exit 0; +fi + +# Si le script courant est lanc par super, $SUPERCMD permet de le voir. +# et alors on continue gentiment le script, sinon on xcute super sur le prog. +# ca permet de faire des scripts qui lancent super sur eux-memes.. +# Contenu du script : + +# ici c'est vide car "super $prog" va en fait éxécuter un autre script (ou lien), comme +# configuré dans /etc/super.tab. +# celui ci est juste un "wrapper". +# pour lanceMake et autre, c'est là qu'est mis le script à éxécuter. + + diff --git a/archive/archives/supers/news/gpgverify b/archive/archives/supers/news/gpgverify new file mode 100755 index 00000000..c98f967b --- /dev/null +++ b/archive/archives/supers/news/gpgverify @@ -0,0 +1,26 @@ +#! /bin/sh +# Sam K, déc 99 +# magie: le script lance super sur son propre nom +# et ca lance le bon programme.. + +prog=`basename $0` + +# Si le script courant est lancé par super, $SUPERCMD permet de le voir. +# et alors on continue gentiment le script, sinon on éxécute super sur le prog. +# ca permet de faire des scripts qui lancent super sur eux-memes.. +if ! test "X$SUPERCMD" = "X$prog"; then + exec /usr/bin/super /usr/lib/news/bin/$prog ${1+"$@"} + exit 0; +fi + +# Si le script courant est lanc par super, $SUPERCMD permet de le voir. +# et alors on continue gentiment le script, sinon on xcute super sur le prog. +# ca permet de faire des scripts qui lancent super sur eux-memes.. +# Contenu du script : + +# ici c'est vide car "super $prog" va en fait éxécuter un autre script (ou lien), comme +# configuré dans /etc/super.tab. +# celui ci est juste un "wrapper". +# pour lanceMake et autre, c'est là qu'est mis le script à éxécuter. + + diff --git a/archive/archives/supers/news/grephistory b/archive/archives/supers/news/grephistory new file mode 100755 index 00000000..c98f967b --- /dev/null +++ b/archive/archives/supers/news/grephistory @@ -0,0 +1,26 @@ +#! /bin/sh +# Sam K, déc 99 +# magie: le script lance super sur son propre nom +# et ca lance le bon programme.. + +prog=`basename $0` + +# Si le script courant est lancé par super, $SUPERCMD permet de le voir. +# et alors on continue gentiment le script, sinon on éxécute super sur le prog. +# ca permet de faire des scripts qui lancent super sur eux-memes.. +if ! test "X$SUPERCMD" = "X$prog"; then + exec /usr/bin/super /usr/lib/news/bin/$prog ${1+"$@"} + exit 0; +fi + +# Si le script courant est lanc par super, $SUPERCMD permet de le voir. +# et alors on continue gentiment le script, sinon on xcute super sur le prog. +# ca permet de faire des scripts qui lancent super sur eux-memes.. +# Contenu du script : + +# ici c'est vide car "super $prog" va en fait éxécuter un autre script (ou lien), comme +# configuré dans /etc/super.tab. +# celui ci est juste un "wrapper". +# pour lanceMake et autre, c'est là qu'est mis le script à éxécuter. + + diff --git a/archive/archives/supers/news/inews b/archive/archives/supers/news/inews new file mode 100755 index 00000000..c98f967b --- /dev/null +++ b/archive/archives/supers/news/inews @@ -0,0 +1,26 @@ +#! /bin/sh +# Sam K, déc 99 +# magie: le script lance super sur son propre nom +# et ca lance le bon programme.. + +prog=`basename $0` + +# Si le script courant est lancé par super, $SUPERCMD permet de le voir. +# et alors on continue gentiment le script, sinon on éxécute super sur le prog. +# ca permet de faire des scripts qui lancent super sur eux-memes.. +if ! test "X$SUPERCMD" = "X$prog"; then + exec /usr/bin/super /usr/lib/news/bin/$prog ${1+"$@"} + exit 0; +fi + +# Si le script courant est lanc par super, $SUPERCMD permet de le voir. +# et alors on continue gentiment le script, sinon on xcute super sur le prog. +# ca permet de faire des scripts qui lancent super sur eux-memes.. +# Contenu du script : + +# ici c'est vide car "super $prog" va en fait éxécuter un autre script (ou lien), comme +# configuré dans /etc/super.tab. +# celui ci est juste un "wrapper". +# pour lanceMake et autre, c'est là qu'est mis le script à éxécuter. + + diff --git a/archive/archives/supers/news/inncheck b/archive/archives/supers/news/inncheck new file mode 100755 index 00000000..c98f967b --- /dev/null +++ b/archive/archives/supers/news/inncheck @@ -0,0 +1,26 @@ +#! /bin/sh +# Sam K, déc 99 +# magie: le script lance super sur son propre nom +# et ca lance le bon programme.. + +prog=`basename $0` + +# Si le script courant est lancé par super, $SUPERCMD permet de le voir. +# et alors on continue gentiment le script, sinon on éxécute super sur le prog. +# ca permet de faire des scripts qui lancent super sur eux-memes.. +if ! test "X$SUPERCMD" = "X$prog"; then + exec /usr/bin/super /usr/lib/news/bin/$prog ${1+"$@"} + exit 0; +fi + +# Si le script courant est lanc par super, $SUPERCMD permet de le voir. +# et alors on continue gentiment le script, sinon on xcute super sur le prog. +# ca permet de faire des scripts qui lancent super sur eux-memes.. +# Contenu du script : + +# ici c'est vide car "super $prog" va en fait éxécuter un autre script (ou lien), comme +# configuré dans /etc/super.tab. +# celui ci est juste un "wrapper". +# pour lanceMake et autre, c'est là qu'est mis le script à éxécuter. + + diff --git a/archive/archives/supers/news/innconfval b/archive/archives/supers/news/innconfval new file mode 100755 index 00000000..c98f967b --- /dev/null +++ b/archive/archives/supers/news/innconfval @@ -0,0 +1,26 @@ +#! /bin/sh +# Sam K, déc 99 +# magie: le script lance super sur son propre nom +# et ca lance le bon programme.. + +prog=`basename $0` + +# Si le script courant est lancé par super, $SUPERCMD permet de le voir. +# et alors on continue gentiment le script, sinon on éxécute super sur le prog. +# ca permet de faire des scripts qui lancent super sur eux-memes.. +if ! test "X$SUPERCMD" = "X$prog"; then + exec /usr/bin/super /usr/lib/news/bin/$prog ${1+"$@"} + exit 0; +fi + +# Si le script courant est lanc par super, $SUPERCMD permet de le voir. +# et alors on continue gentiment le script, sinon on xcute super sur le prog. +# ca permet de faire des scripts qui lancent super sur eux-memes.. +# Contenu du script : + +# ici c'est vide car "super $prog" va en fait éxécuter un autre script (ou lien), comme +# configuré dans /etc/super.tab. +# celui ci est juste un "wrapper". +# pour lanceMake et autre, c'est là qu'est mis le script à éxécuter. + + diff --git a/archive/archives/supers/news/innd b/archive/archives/supers/news/innd new file mode 100755 index 00000000..c98f967b --- /dev/null +++ b/archive/archives/supers/news/innd @@ -0,0 +1,26 @@ +#! /bin/sh +# Sam K, déc 99 +# magie: le script lance super sur son propre nom +# et ca lance le bon programme.. + +prog=`basename $0` + +# Si le script courant est lancé par super, $SUPERCMD permet de le voir. +# et alors on continue gentiment le script, sinon on éxécute super sur le prog. +# ca permet de faire des scripts qui lancent super sur eux-memes.. +if ! test "X$SUPERCMD" = "X$prog"; then + exec /usr/bin/super /usr/lib/news/bin/$prog ${1+"$@"} + exit 0; +fi + +# Si le script courant est lanc par super, $SUPERCMD permet de le voir. +# et alors on continue gentiment le script, sinon on xcute super sur le prog. +# ca permet de faire des scripts qui lancent super sur eux-memes.. +# Contenu du script : + +# ici c'est vide car "super $prog" va en fait éxécuter un autre script (ou lien), comme +# configuré dans /etc/super.tab. +# celui ci est juste un "wrapper". +# pour lanceMake et autre, c'est là qu'est mis le script à éxécuter. + + diff --git a/archive/archives/supers/news/inndf b/archive/archives/supers/news/inndf new file mode 100755 index 00000000..c98f967b --- /dev/null +++ b/archive/archives/supers/news/inndf @@ -0,0 +1,26 @@ +#! /bin/sh +# Sam K, déc 99 +# magie: le script lance super sur son propre nom +# et ca lance le bon programme.. + +prog=`basename $0` + +# Si le script courant est lancé par super, $SUPERCMD permet de le voir. +# et alors on continue gentiment le script, sinon on éxécute super sur le prog. +# ca permet de faire des scripts qui lancent super sur eux-memes.. +if ! test "X$SUPERCMD" = "X$prog"; then + exec /usr/bin/super /usr/lib/news/bin/$prog ${1+"$@"} + exit 0; +fi + +# Si le script courant est lanc par super, $SUPERCMD permet de le voir. +# et alors on continue gentiment le script, sinon on xcute super sur le prog. +# ca permet de faire des scripts qui lancent super sur eux-memes.. +# Contenu du script : + +# ici c'est vide car "super $prog" va en fait éxécuter un autre script (ou lien), comme +# configuré dans /etc/super.tab. +# celui ci est juste un "wrapper". +# pour lanceMake et autre, c'est là qu'est mis le script à éxécuter. + + diff --git a/archive/archives/supers/news/inndstart b/archive/archives/supers/news/inndstart new file mode 100755 index 00000000..c98f967b --- /dev/null +++ b/archive/archives/supers/news/inndstart @@ -0,0 +1,26 @@ +#! /bin/sh +# Sam K, déc 99 +# magie: le script lance super sur son propre nom +# et ca lance le bon programme.. + +prog=`basename $0` + +# Si le script courant est lancé par super, $SUPERCMD permet de le voir. +# et alors on continue gentiment le script, sinon on éxécute super sur le prog. +# ca permet de faire des scripts qui lancent super sur eux-memes.. +if ! test "X$SUPERCMD" = "X$prog"; then + exec /usr/bin/super /usr/lib/news/bin/$prog ${1+"$@"} + exit 0; +fi + +# Si le script courant est lanc par super, $SUPERCMD permet de le voir. +# et alors on continue gentiment le script, sinon on xcute super sur le prog. +# ca permet de faire des scripts qui lancent super sur eux-memes.. +# Contenu du script : + +# ici c'est vide car "super $prog" va en fait éxécuter un autre script (ou lien), comme +# configuré dans /etc/super.tab. +# celui ci est juste un "wrapper". +# pour lanceMake et autre, c'est là qu'est mis le script à éxécuter. + + diff --git a/archive/archives/supers/news/innfeed b/archive/archives/supers/news/innfeed new file mode 100755 index 00000000..c98f967b --- /dev/null +++ b/archive/archives/supers/news/innfeed @@ -0,0 +1,26 @@ +#! /bin/sh +# Sam K, déc 99 +# magie: le script lance super sur son propre nom +# et ca lance le bon programme.. + +prog=`basename $0` + +# Si le script courant est lancé par super, $SUPERCMD permet de le voir. +# et alors on continue gentiment le script, sinon on éxécute super sur le prog. +# ca permet de faire des scripts qui lancent super sur eux-memes.. +if ! test "X$SUPERCMD" = "X$prog"; then + exec /usr/bin/super /usr/lib/news/bin/$prog ${1+"$@"} + exit 0; +fi + +# Si le script courant est lanc par super, $SUPERCMD permet de le voir. +# et alors on continue gentiment le script, sinon on xcute super sur le prog. +# ca permet de faire des scripts qui lancent super sur eux-memes.. +# Contenu du script : + +# ici c'est vide car "super $prog" va en fait éxécuter un autre script (ou lien), comme +# configuré dans /etc/super.tab. +# celui ci est juste un "wrapper". +# pour lanceMake et autre, c'est là qu'est mis le script à éxécuter. + + diff --git a/archive/archives/supers/news/innmail b/archive/archives/supers/news/innmail new file mode 100755 index 00000000..c98f967b --- /dev/null +++ b/archive/archives/supers/news/innmail @@ -0,0 +1,26 @@ +#! /bin/sh +# Sam K, déc 99 +# magie: le script lance super sur son propre nom +# et ca lance le bon programme.. + +prog=`basename $0` + +# Si le script courant est lancé par super, $SUPERCMD permet de le voir. +# et alors on continue gentiment le script, sinon on éxécute super sur le prog. +# ca permet de faire des scripts qui lancent super sur eux-memes.. +if ! test "X$SUPERCMD" = "X$prog"; then + exec /usr/bin/super /usr/lib/news/bin/$prog ${1+"$@"} + exit 0; +fi + +# Si le script courant est lanc par super, $SUPERCMD permet de le voir. +# et alors on continue gentiment le script, sinon on xcute super sur le prog. +# ca permet de faire des scripts qui lancent super sur eux-memes.. +# Contenu du script : + +# ici c'est vide car "super $prog" va en fait éxécuter un autre script (ou lien), comme +# configuré dans /etc/super.tab. +# celui ci est juste un "wrapper". +# pour lanceMake et autre, c'est là qu'est mis le script à éxécuter. + + diff --git a/archive/archives/supers/news/innreport b/archive/archives/supers/news/innreport new file mode 100755 index 00000000..c98f967b --- /dev/null +++ b/archive/archives/supers/news/innreport @@ -0,0 +1,26 @@ +#! /bin/sh +# Sam K, déc 99 +# magie: le script lance super sur son propre nom +# et ca lance le bon programme.. + +prog=`basename $0` + +# Si le script courant est lancé par super, $SUPERCMD permet de le voir. +# et alors on continue gentiment le script, sinon on éxécute super sur le prog. +# ca permet de faire des scripts qui lancent super sur eux-memes.. +if ! test "X$SUPERCMD" = "X$prog"; then + exec /usr/bin/super /usr/lib/news/bin/$prog ${1+"$@"} + exit 0; +fi + +# Si le script courant est lanc par super, $SUPERCMD permet de le voir. +# et alors on continue gentiment le script, sinon on xcute super sur le prog. +# ca permet de faire des scripts qui lancent super sur eux-memes.. +# Contenu du script : + +# ici c'est vide car "super $prog" va en fait éxécuter un autre script (ou lien), comme +# configuré dans /etc/super.tab. +# celui ci est juste un "wrapper". +# pour lanceMake et autre, c'est là qu'est mis le script à éxécuter. + + diff --git a/archive/archives/supers/news/innstat b/archive/archives/supers/news/innstat new file mode 100755 index 00000000..c98f967b --- /dev/null +++ b/archive/archives/supers/news/innstat @@ -0,0 +1,26 @@ +#! /bin/sh +# Sam K, déc 99 +# magie: le script lance super sur son propre nom +# et ca lance le bon programme.. + +prog=`basename $0` + +# Si le script courant est lancé par super, $SUPERCMD permet de le voir. +# et alors on continue gentiment le script, sinon on éxécute super sur le prog. +# ca permet de faire des scripts qui lancent super sur eux-memes.. +if ! test "X$SUPERCMD" = "X$prog"; then + exec /usr/bin/super /usr/lib/news/bin/$prog ${1+"$@"} + exit 0; +fi + +# Si le script courant est lanc par super, $SUPERCMD permet de le voir. +# et alors on continue gentiment le script, sinon on xcute super sur le prog. +# ca permet de faire des scripts qui lancent super sur eux-memes.. +# Contenu du script : + +# ici c'est vide car "super $prog" va en fait éxécuter un autre script (ou lien), comme +# configuré dans /etc/super.tab. +# celui ci est juste un "wrapper". +# pour lanceMake et autre, c'est là qu'est mis le script à éxécuter. + + diff --git a/archive/archives/supers/news/innwatch b/archive/archives/supers/news/innwatch new file mode 100755 index 00000000..c98f967b --- /dev/null +++ b/archive/archives/supers/news/innwatch @@ -0,0 +1,26 @@ +#! /bin/sh +# Sam K, déc 99 +# magie: le script lance super sur son propre nom +# et ca lance le bon programme.. + +prog=`basename $0` + +# Si le script courant est lancé par super, $SUPERCMD permet de le voir. +# et alors on continue gentiment le script, sinon on éxécute super sur le prog. +# ca permet de faire des scripts qui lancent super sur eux-memes.. +if ! test "X$SUPERCMD" = "X$prog"; then + exec /usr/bin/super /usr/lib/news/bin/$prog ${1+"$@"} + exit 0; +fi + +# Si le script courant est lanc par super, $SUPERCMD permet de le voir. +# et alors on continue gentiment le script, sinon on xcute super sur le prog. +# ca permet de faire des scripts qui lancent super sur eux-memes.. +# Contenu du script : + +# ici c'est vide car "super $prog" va en fait éxécuter un autre script (ou lien), comme +# configuré dans /etc/super.tab. +# celui ci est juste un "wrapper". +# pour lanceMake et autre, c'est là qu'est mis le script à éxécuter. + + diff --git a/archive/archives/supers/news/innxbatch b/archive/archives/supers/news/innxbatch new file mode 100755 index 00000000..c98f967b --- /dev/null +++ b/archive/archives/supers/news/innxbatch @@ -0,0 +1,26 @@ +#! /bin/sh +# Sam K, déc 99 +# magie: le script lance super sur son propre nom +# et ca lance le bon programme.. + +prog=`basename $0` + +# Si le script courant est lancé par super, $SUPERCMD permet de le voir. +# et alors on continue gentiment le script, sinon on éxécute super sur le prog. +# ca permet de faire des scripts qui lancent super sur eux-memes.. +if ! test "X$SUPERCMD" = "X$prog"; then + exec /usr/bin/super /usr/lib/news/bin/$prog ${1+"$@"} + exit 0; +fi + +# Si le script courant est lanc par super, $SUPERCMD permet de le voir. +# et alors on continue gentiment le script, sinon on xcute super sur le prog. +# ca permet de faire des scripts qui lancent super sur eux-memes.. +# Contenu du script : + +# ici c'est vide car "super $prog" va en fait éxécuter un autre script (ou lien), comme +# configuré dans /etc/super.tab. +# celui ci est juste un "wrapper". +# pour lanceMake et autre, c'est là qu'est mis le script à éxécuter. + + diff --git a/archive/archives/supers/news/innxmit b/archive/archives/supers/news/innxmit new file mode 100755 index 00000000..c98f967b --- /dev/null +++ b/archive/archives/supers/news/innxmit @@ -0,0 +1,26 @@ +#! /bin/sh +# Sam K, déc 99 +# magie: le script lance super sur son propre nom +# et ca lance le bon programme.. + +prog=`basename $0` + +# Si le script courant est lancé par super, $SUPERCMD permet de le voir. +# et alors on continue gentiment le script, sinon on éxécute super sur le prog. +# ca permet de faire des scripts qui lancent super sur eux-memes.. +if ! test "X$SUPERCMD" = "X$prog"; then + exec /usr/bin/super /usr/lib/news/bin/$prog ${1+"$@"} + exit 0; +fi + +# Si le script courant est lanc par super, $SUPERCMD permet de le voir. +# et alors on continue gentiment le script, sinon on xcute super sur le prog. +# ca permet de faire des scripts qui lancent super sur eux-memes.. +# Contenu du script : + +# ici c'est vide car "super $prog" va en fait éxécuter un autre script (ou lien), comme +# configuré dans /etc/super.tab. +# celui ci est juste un "wrapper". +# pour lanceMake et autre, c'est là qu'est mis le script à éxécuter. + + diff --git a/archive/archives/supers/news/mailpost b/archive/archives/supers/news/mailpost new file mode 100755 index 00000000..c98f967b --- /dev/null +++ b/archive/archives/supers/news/mailpost @@ -0,0 +1,26 @@ +#! /bin/sh +# Sam K, déc 99 +# magie: le script lance super sur son propre nom +# et ca lance le bon programme.. + +prog=`basename $0` + +# Si le script courant est lancé par super, $SUPERCMD permet de le voir. +# et alors on continue gentiment le script, sinon on éxécute super sur le prog. +# ca permet de faire des scripts qui lancent super sur eux-memes.. +if ! test "X$SUPERCMD" = "X$prog"; then + exec /usr/bin/super /usr/lib/news/bin/$prog ${1+"$@"} + exit 0; +fi + +# Si le script courant est lanc par super, $SUPERCMD permet de le voir. +# et alors on continue gentiment le script, sinon on xcute super sur le prog. +# ca permet de faire des scripts qui lancent super sur eux-memes.. +# Contenu du script : + +# ici c'est vide car "super $prog" va en fait éxécuter un autre script (ou lien), comme +# configuré dans /etc/super.tab. +# celui ci est juste un "wrapper". +# pour lanceMake et autre, c'est là qu'est mis le script à éxécuter. + + diff --git a/archive/archives/supers/news/makedbz b/archive/archives/supers/news/makedbz new file mode 100755 index 00000000..c98f967b --- /dev/null +++ b/archive/archives/supers/news/makedbz @@ -0,0 +1,26 @@ +#! /bin/sh +# Sam K, déc 99 +# magie: le script lance super sur son propre nom +# et ca lance le bon programme.. + +prog=`basename $0` + +# Si le script courant est lancé par super, $SUPERCMD permet de le voir. +# et alors on continue gentiment le script, sinon on éxécute super sur le prog. +# ca permet de faire des scripts qui lancent super sur eux-memes.. +if ! test "X$SUPERCMD" = "X$prog"; then + exec /usr/bin/super /usr/lib/news/bin/$prog ${1+"$@"} + exit 0; +fi + +# Si le script courant est lanc par super, $SUPERCMD permet de le voir. +# et alors on continue gentiment le script, sinon on xcute super sur le prog. +# ca permet de faire des scripts qui lancent super sur eux-memes.. +# Contenu du script : + +# ici c'est vide car "super $prog" va en fait éxécuter un autre script (ou lien), comme +# configuré dans /etc/super.tab. +# celui ci est juste un "wrapper". +# pour lanceMake et autre, c'est là qu'est mis le script à éxécuter. + + diff --git a/archive/archives/supers/news/makehistory b/archive/archives/supers/news/makehistory new file mode 100755 index 00000000..c98f967b --- /dev/null +++ b/archive/archives/supers/news/makehistory @@ -0,0 +1,26 @@ +#! /bin/sh +# Sam K, déc 99 +# magie: le script lance super sur son propre nom +# et ca lance le bon programme.. + +prog=`basename $0` + +# Si le script courant est lancé par super, $SUPERCMD permet de le voir. +# et alors on continue gentiment le script, sinon on éxécute super sur le prog. +# ca permet de faire des scripts qui lancent super sur eux-memes.. +if ! test "X$SUPERCMD" = "X$prog"; then + exec /usr/bin/super /usr/lib/news/bin/$prog ${1+"$@"} + exit 0; +fi + +# Si le script courant est lanc par super, $SUPERCMD permet de le voir. +# et alors on continue gentiment le script, sinon on xcute super sur le prog. +# ca permet de faire des scripts qui lancent super sur eux-memes.. +# Contenu du script : + +# ici c'est vide car "super $prog" va en fait éxécuter un autre script (ou lien), comme +# configuré dans /etc/super.tab. +# celui ci est juste un "wrapper". +# pour lanceMake et autre, c'est là qu'est mis le script à éxécuter. + + diff --git a/archive/archives/supers/news/mod-active b/archive/archives/supers/news/mod-active new file mode 100755 index 00000000..c98f967b --- /dev/null +++ b/archive/archives/supers/news/mod-active @@ -0,0 +1,26 @@ +#! /bin/sh +# Sam K, déc 99 +# magie: le script lance super sur son propre nom +# et ca lance le bon programme.. + +prog=`basename $0` + +# Si le script courant est lancé par super, $SUPERCMD permet de le voir. +# et alors on continue gentiment le script, sinon on éxécute super sur le prog. +# ca permet de faire des scripts qui lancent super sur eux-memes.. +if ! test "X$SUPERCMD" = "X$prog"; then + exec /usr/bin/super /usr/lib/news/bin/$prog ${1+"$@"} + exit 0; +fi + +# Si le script courant est lanc par super, $SUPERCMD permet de le voir. +# et alors on continue gentiment le script, sinon on xcute super sur le prog. +# ca permet de faire des scripts qui lancent super sur eux-memes.. +# Contenu du script : + +# ici c'est vide car "super $prog" va en fait éxécuter un autre script (ou lien), comme +# configuré dans /etc/super.tab. +# celui ci est juste un "wrapper". +# pour lanceMake et autre, c'est là qu'est mis le script à éxécuter. + + diff --git a/archive/archives/supers/news/news.daily b/archive/archives/supers/news/news.daily new file mode 100755 index 00000000..c98f967b --- /dev/null +++ b/archive/archives/supers/news/news.daily @@ -0,0 +1,26 @@ +#! /bin/sh +# Sam K, déc 99 +# magie: le script lance super sur son propre nom +# et ca lance le bon programme.. + +prog=`basename $0` + +# Si le script courant est lancé par super, $SUPERCMD permet de le voir. +# et alors on continue gentiment le script, sinon on éxécute super sur le prog. +# ca permet de faire des scripts qui lancent super sur eux-memes.. +if ! test "X$SUPERCMD" = "X$prog"; then + exec /usr/bin/super /usr/lib/news/bin/$prog ${1+"$@"} + exit 0; +fi + +# Si le script courant est lanc par super, $SUPERCMD permet de le voir. +# et alors on continue gentiment le script, sinon on xcute super sur le prog. +# ca permet de faire des scripts qui lancent super sur eux-memes.. +# Contenu du script : + +# ici c'est vide car "super $prog" va en fait éxécuter un autre script (ou lien), comme +# configuré dans /etc/super.tab. +# celui ci est juste un "wrapper". +# pour lanceMake et autre, c'est là qu'est mis le script à éxécuter. + + diff --git a/archive/archives/supers/news/news2mail b/archive/archives/supers/news/news2mail new file mode 100755 index 00000000..c98f967b --- /dev/null +++ b/archive/archives/supers/news/news2mail @@ -0,0 +1,26 @@ +#! /bin/sh +# Sam K, déc 99 +# magie: le script lance super sur son propre nom +# et ca lance le bon programme.. + +prog=`basename $0` + +# Si le script courant est lancé par super, $SUPERCMD permet de le voir. +# et alors on continue gentiment le script, sinon on éxécute super sur le prog. +# ca permet de faire des scripts qui lancent super sur eux-memes.. +if ! test "X$SUPERCMD" = "X$prog"; then + exec /usr/bin/super /usr/lib/news/bin/$prog ${1+"$@"} + exit 0; +fi + +# Si le script courant est lanc par super, $SUPERCMD permet de le voir. +# et alors on continue gentiment le script, sinon on xcute super sur le prog. +# ca permet de faire des scripts qui lancent super sur eux-memes.. +# Contenu du script : + +# ici c'est vide car "super $prog" va en fait éxécuter un autre script (ou lien), comme +# configuré dans /etc/super.tab. +# celui ci est juste un "wrapper". +# pour lanceMake et autre, c'est là qu'est mis le script à éxécuter. + + diff --git a/archive/archives/supers/news/newsrequeue b/archive/archives/supers/news/newsrequeue new file mode 100755 index 00000000..c98f967b --- /dev/null +++ b/archive/archives/supers/news/newsrequeue @@ -0,0 +1,26 @@ +#! /bin/sh +# Sam K, déc 99 +# magie: le script lance super sur son propre nom +# et ca lance le bon programme.. + +prog=`basename $0` + +# Si le script courant est lancé par super, $SUPERCMD permet de le voir. +# et alors on continue gentiment le script, sinon on éxécute super sur le prog. +# ca permet de faire des scripts qui lancent super sur eux-memes.. +if ! test "X$SUPERCMD" = "X$prog"; then + exec /usr/bin/super /usr/lib/news/bin/$prog ${1+"$@"} + exit 0; +fi + +# Si le script courant est lanc par super, $SUPERCMD permet de le voir. +# et alors on continue gentiment le script, sinon on xcute super sur le prog. +# ca permet de faire des scripts qui lancent super sur eux-memes.. +# Contenu du script : + +# ici c'est vide car "super $prog" va en fait éxécuter un autre script (ou lien), comme +# configuré dans /etc/super.tab. +# celui ci est juste un "wrapper". +# pour lanceMake et autre, c'est là qu'est mis le script à éxécuter. + + diff --git a/archive/archives/supers/news/nnrpd b/archive/archives/supers/news/nnrpd new file mode 100755 index 00000000..c98f967b --- /dev/null +++ b/archive/archives/supers/news/nnrpd @@ -0,0 +1,26 @@ +#! /bin/sh +# Sam K, déc 99 +# magie: le script lance super sur son propre nom +# et ca lance le bon programme.. + +prog=`basename $0` + +# Si le script courant est lancé par super, $SUPERCMD permet de le voir. +# et alors on continue gentiment le script, sinon on éxécute super sur le prog. +# ca permet de faire des scripts qui lancent super sur eux-memes.. +if ! test "X$SUPERCMD" = "X$prog"; then + exec /usr/bin/super /usr/lib/news/bin/$prog ${1+"$@"} + exit 0; +fi + +# Si le script courant est lanc par super, $SUPERCMD permet de le voir. +# et alors on continue gentiment le script, sinon on xcute super sur le prog. +# ca permet de faire des scripts qui lancent super sur eux-memes.. +# Contenu du script : + +# ici c'est vide car "super $prog" va en fait éxécuter un autre script (ou lien), comme +# configuré dans /etc/super.tab. +# celui ci est juste un "wrapper". +# pour lanceMake et autre, c'est là qu'est mis le script à éxécuter. + + diff --git a/archive/archives/supers/news/nntpget b/archive/archives/supers/news/nntpget new file mode 100755 index 00000000..c98f967b --- /dev/null +++ b/archive/archives/supers/news/nntpget @@ -0,0 +1,26 @@ +#! /bin/sh +# Sam K, déc 99 +# magie: le script lance super sur son propre nom +# et ca lance le bon programme.. + +prog=`basename $0` + +# Si le script courant est lancé par super, $SUPERCMD permet de le voir. +# et alors on continue gentiment le script, sinon on éxécute super sur le prog. +# ca permet de faire des scripts qui lancent super sur eux-memes.. +if ! test "X$SUPERCMD" = "X$prog"; then + exec /usr/bin/super /usr/lib/news/bin/$prog ${1+"$@"} + exit 0; +fi + +# Si le script courant est lanc par super, $SUPERCMD permet de le voir. +# et alors on continue gentiment le script, sinon on xcute super sur le prog. +# ca permet de faire des scripts qui lancent super sur eux-memes.. +# Contenu du script : + +# ici c'est vide car "super $prog" va en fait éxécuter un autre script (ou lien), comme +# configuré dans /etc/super.tab. +# celui ci est juste un "wrapper". +# pour lanceMake et autre, c'est là qu'est mis le script à éxécuter. + + diff --git a/archive/archives/supers/news/nntpsend b/archive/archives/supers/news/nntpsend new file mode 100755 index 00000000..c98f967b --- /dev/null +++ b/archive/archives/supers/news/nntpsend @@ -0,0 +1,26 @@ +#! /bin/sh +# Sam K, déc 99 +# magie: le script lance super sur son propre nom +# et ca lance le bon programme.. + +prog=`basename $0` + +# Si le script courant est lancé par super, $SUPERCMD permet de le voir. +# et alors on continue gentiment le script, sinon on éxécute super sur le prog. +# ca permet de faire des scripts qui lancent super sur eux-memes.. +if ! test "X$SUPERCMD" = "X$prog"; then + exec /usr/bin/super /usr/lib/news/bin/$prog ${1+"$@"} + exit 0; +fi + +# Si le script courant est lanc par super, $SUPERCMD permet de le voir. +# et alors on continue gentiment le script, sinon on xcute super sur le prog. +# ca permet de faire des scripts qui lancent super sur eux-memes.. +# Contenu du script : + +# ici c'est vide car "super $prog" va en fait éxécuter un autre script (ou lien), comme +# configuré dans /etc/super.tab. +# celui ci est juste un "wrapper". +# pour lanceMake et autre, c'est là qu'est mis le script à éxécuter. + + diff --git a/archive/archives/supers/news/ovdb_recover b/archive/archives/supers/news/ovdb_recover new file mode 100755 index 00000000..c98f967b --- /dev/null +++ b/archive/archives/supers/news/ovdb_recover @@ -0,0 +1,26 @@ +#! /bin/sh +# Sam K, déc 99 +# magie: le script lance super sur son propre nom +# et ca lance le bon programme.. + +prog=`basename $0` + +# Si le script courant est lancé par super, $SUPERCMD permet de le voir. +# et alors on continue gentiment le script, sinon on éxécute super sur le prog. +# ca permet de faire des scripts qui lancent super sur eux-memes.. +if ! test "X$SUPERCMD" = "X$prog"; then + exec /usr/bin/super /usr/lib/news/bin/$prog ${1+"$@"} + exit 0; +fi + +# Si le script courant est lanc par super, $SUPERCMD permet de le voir. +# et alors on continue gentiment le script, sinon on xcute super sur le prog. +# ca permet de faire des scripts qui lancent super sur eux-memes.. +# Contenu du script : + +# ici c'est vide car "super $prog" va en fait éxécuter un autre script (ou lien), comme +# configuré dans /etc/super.tab. +# celui ci est juste un "wrapper". +# pour lanceMake et autre, c'est là qu'est mis le script à éxécuter. + + diff --git a/archive/archives/supers/news/ovdb_upgrade b/archive/archives/supers/news/ovdb_upgrade new file mode 100755 index 00000000..c98f967b --- /dev/null +++ b/archive/archives/supers/news/ovdb_upgrade @@ -0,0 +1,26 @@ +#! /bin/sh +# Sam K, déc 99 +# magie: le script lance super sur son propre nom +# et ca lance le bon programme.. + +prog=`basename $0` + +# Si le script courant est lancé par super, $SUPERCMD permet de le voir. +# et alors on continue gentiment le script, sinon on éxécute super sur le prog. +# ca permet de faire des scripts qui lancent super sur eux-memes.. +if ! test "X$SUPERCMD" = "X$prog"; then + exec /usr/bin/super /usr/lib/news/bin/$prog ${1+"$@"} + exit 0; +fi + +# Si le script courant est lanc par super, $SUPERCMD permet de le voir. +# et alors on continue gentiment le script, sinon on xcute super sur le prog. +# ca permet de faire des scripts qui lancent super sur eux-memes.. +# Contenu du script : + +# ici c'est vide car "super $prog" va en fait éxécuter un autre script (ou lien), comme +# configuré dans /etc/super.tab. +# celui ci est juste un "wrapper". +# pour lanceMake et autre, c'est là qu'est mis le script à éxécuter. + + diff --git a/archive/archives/supers/news/overchan b/archive/archives/supers/news/overchan new file mode 100755 index 00000000..c98f967b --- /dev/null +++ b/archive/archives/supers/news/overchan @@ -0,0 +1,26 @@ +#! /bin/sh +# Sam K, déc 99 +# magie: le script lance super sur son propre nom +# et ca lance le bon programme.. + +prog=`basename $0` + +# Si le script courant est lancé par super, $SUPERCMD permet de le voir. +# et alors on continue gentiment le script, sinon on éxécute super sur le prog. +# ca permet de faire des scripts qui lancent super sur eux-memes.. +if ! test "X$SUPERCMD" = "X$prog"; then + exec /usr/bin/super /usr/lib/news/bin/$prog ${1+"$@"} + exit 0; +fi + +# Si le script courant est lanc par super, $SUPERCMD permet de le voir. +# et alors on continue gentiment le script, sinon on xcute super sur le prog. +# ca permet de faire des scripts qui lancent super sur eux-memes.. +# Contenu du script : + +# ici c'est vide car "super $prog" va en fait éxécuter un autre script (ou lien), comme +# configuré dans /etc/super.tab. +# celui ci est juste un "wrapper". +# pour lanceMake et autre, c'est là qu'est mis le script à éxécuter. + + diff --git a/archive/archives/supers/news/parsecontrol b/archive/archives/supers/news/parsecontrol new file mode 100755 index 00000000..c98f967b --- /dev/null +++ b/archive/archives/supers/news/parsecontrol @@ -0,0 +1,26 @@ +#! /bin/sh +# Sam K, déc 99 +# magie: le script lance super sur son propre nom +# et ca lance le bon programme.. + +prog=`basename $0` + +# Si le script courant est lancé par super, $SUPERCMD permet de le voir. +# et alors on continue gentiment le script, sinon on éxécute super sur le prog. +# ca permet de faire des scripts qui lancent super sur eux-memes.. +if ! test "X$SUPERCMD" = "X$prog"; then + exec /usr/bin/super /usr/lib/news/bin/$prog ${1+"$@"} + exit 0; +fi + +# Si le script courant est lanc par super, $SUPERCMD permet de le voir. +# et alors on continue gentiment le script, sinon on xcute super sur le prog. +# ca permet de faire des scripts qui lancent super sur eux-memes.. +# Contenu du script : + +# ici c'est vide car "super $prog" va en fait éxécuter un autre script (ou lien), comme +# configuré dans /etc/super.tab. +# celui ci est juste un "wrapper". +# pour lanceMake et autre, c'est là qu'est mis le script à éxécuter. + + diff --git a/archive/archives/supers/news/pgpverify b/archive/archives/supers/news/pgpverify new file mode 100755 index 00000000..c98f967b --- /dev/null +++ b/archive/archives/supers/news/pgpverify @@ -0,0 +1,26 @@ +#! /bin/sh +# Sam K, déc 99 +# magie: le script lance super sur son propre nom +# et ca lance le bon programme.. + +prog=`basename $0` + +# Si le script courant est lancé par super, $SUPERCMD permet de le voir. +# et alors on continue gentiment le script, sinon on éxécute super sur le prog. +# ca permet de faire des scripts qui lancent super sur eux-memes.. +if ! test "X$SUPERCMD" = "X$prog"; then + exec /usr/bin/super /usr/lib/news/bin/$prog ${1+"$@"} + exit 0; +fi + +# Si le script courant est lanc par super, $SUPERCMD permet de le voir. +# et alors on continue gentiment le script, sinon on xcute super sur le prog. +# ca permet de faire des scripts qui lancent super sur eux-memes.. +# Contenu du script : + +# ici c'est vide car "super $prog" va en fait éxécuter un autre script (ou lien), comme +# configuré dans /etc/super.tab. +# celui ci est juste un "wrapper". +# pour lanceMake et autre, c'est là qu'est mis le script à éxécuter. + + diff --git a/archive/archives/supers/news/procbatch b/archive/archives/supers/news/procbatch new file mode 100755 index 00000000..c98f967b --- /dev/null +++ b/archive/archives/supers/news/procbatch @@ -0,0 +1,26 @@ +#! /bin/sh +# Sam K, déc 99 +# magie: le script lance super sur son propre nom +# et ca lance le bon programme.. + +prog=`basename $0` + +# Si le script courant est lancé par super, $SUPERCMD permet de le voir. +# et alors on continue gentiment le script, sinon on éxécute super sur le prog. +# ca permet de faire des scripts qui lancent super sur eux-memes.. +if ! test "X$SUPERCMD" = "X$prog"; then + exec /usr/bin/super /usr/lib/news/bin/$prog ${1+"$@"} + exit 0; +fi + +# Si le script courant est lanc par super, $SUPERCMD permet de le voir. +# et alors on continue gentiment le script, sinon on xcute super sur le prog. +# ca permet de faire des scripts qui lancent super sur eux-memes.. +# Contenu du script : + +# ici c'est vide car "super $prog" va en fait éxécuter un autre script (ou lien), comme +# configuré dans /etc/super.tab. +# celui ci est juste un "wrapper". +# pour lanceMake et autre, c'est là qu'est mis le script à éxécuter. + + diff --git a/archive/archives/supers/news/prunehistory b/archive/archives/supers/news/prunehistory new file mode 100755 index 00000000..c98f967b --- /dev/null +++ b/archive/archives/supers/news/prunehistory @@ -0,0 +1,26 @@ +#! /bin/sh +# Sam K, déc 99 +# magie: le script lance super sur son propre nom +# et ca lance le bon programme.. + +prog=`basename $0` + +# Si le script courant est lancé par super, $SUPERCMD permet de le voir. +# et alors on continue gentiment le script, sinon on éxécute super sur le prog. +# ca permet de faire des scripts qui lancent super sur eux-memes.. +if ! test "X$SUPERCMD" = "X$prog"; then + exec /usr/bin/super /usr/lib/news/bin/$prog ${1+"$@"} + exit 0; +fi + +# Si le script courant est lanc par super, $SUPERCMD permet de le voir. +# et alors on continue gentiment le script, sinon on xcute super sur le prog. +# ca permet de faire des scripts qui lancent super sur eux-memes.. +# Contenu du script : + +# ici c'est vide car "super $prog" va en fait éxécuter un autre script (ou lien), comme +# configuré dans /etc/super.tab. +# celui ci est juste un "wrapper". +# pour lanceMake et autre, c'est là qu'est mis le script à éxécuter. + + diff --git a/archive/archives/supers/news/pullnews b/archive/archives/supers/news/pullnews new file mode 100755 index 00000000..c98f967b --- /dev/null +++ b/archive/archives/supers/news/pullnews @@ -0,0 +1,26 @@ +#! /bin/sh +# Sam K, déc 99 +# magie: le script lance super sur son propre nom +# et ca lance le bon programme.. + +prog=`basename $0` + +# Si le script courant est lancé par super, $SUPERCMD permet de le voir. +# et alors on continue gentiment le script, sinon on éxécute super sur le prog. +# ca permet de faire des scripts qui lancent super sur eux-memes.. +if ! test "X$SUPERCMD" = "X$prog"; then + exec /usr/bin/super /usr/lib/news/bin/$prog ${1+"$@"} + exit 0; +fi + +# Si le script courant est lanc par super, $SUPERCMD permet de le voir. +# et alors on continue gentiment le script, sinon on xcute super sur le prog. +# ca permet de faire des scripts qui lancent super sur eux-memes.. +# Contenu du script : + +# ici c'est vide car "super $prog" va en fait éxécuter un autre script (ou lien), comme +# configuré dans /etc/super.tab. +# celui ci est juste un "wrapper". +# pour lanceMake et autre, c'est là qu'est mis le script à éxécuter. + + diff --git a/archive/archives/supers/news/rc.news b/archive/archives/supers/news/rc.news new file mode 100755 index 00000000..c98f967b --- /dev/null +++ b/archive/archives/supers/news/rc.news @@ -0,0 +1,26 @@ +#! /bin/sh +# Sam K, déc 99 +# magie: le script lance super sur son propre nom +# et ca lance le bon programme.. + +prog=`basename $0` + +# Si le script courant est lancé par super, $SUPERCMD permet de le voir. +# et alors on continue gentiment le script, sinon on éxécute super sur le prog. +# ca permet de faire des scripts qui lancent super sur eux-memes.. +if ! test "X$SUPERCMD" = "X$prog"; then + exec /usr/bin/super /usr/lib/news/bin/$prog ${1+"$@"} + exit 0; +fi + +# Si le script courant est lanc par super, $SUPERCMD permet de le voir. +# et alors on continue gentiment le script, sinon on xcute super sur le prog. +# ca permet de faire des scripts qui lancent super sur eux-memes.. +# Contenu du script : + +# ici c'est vide car "super $prog" va en fait éxécuter un autre script (ou lien), comme +# configuré dans /etc/super.tab. +# celui ci est juste un "wrapper". +# pour lanceMake et autre, c'est là qu'est mis le script à éxécuter. + + diff --git a/archive/archives/supers/news/rnews b/archive/archives/supers/news/rnews new file mode 100755 index 00000000..c98f967b --- /dev/null +++ b/archive/archives/supers/news/rnews @@ -0,0 +1,26 @@ +#! /bin/sh +# Sam K, déc 99 +# magie: le script lance super sur son propre nom +# et ca lance le bon programme.. + +prog=`basename $0` + +# Si le script courant est lancé par super, $SUPERCMD permet de le voir. +# et alors on continue gentiment le script, sinon on éxécute super sur le prog. +# ca permet de faire des scripts qui lancent super sur eux-memes.. +if ! test "X$SUPERCMD" = "X$prog"; then + exec /usr/bin/super /usr/lib/news/bin/$prog ${1+"$@"} + exit 0; +fi + +# Si le script courant est lanc par super, $SUPERCMD permet de le voir. +# et alors on continue gentiment le script, sinon on xcute super sur le prog. +# ca permet de faire des scripts qui lancent super sur eux-memes.. +# Contenu du script : + +# ici c'est vide car "super $prog" va en fait éxécuter un autre script (ou lien), comme +# configuré dans /etc/super.tab. +# celui ci est juste un "wrapper". +# pour lanceMake et autre, c'est là qu'est mis le script à éxécuter. + + diff --git a/archive/archives/supers/news/rnews.libexec b/archive/archives/supers/news/rnews.libexec new file mode 100755 index 00000000..c98f967b --- /dev/null +++ b/archive/archives/supers/news/rnews.libexec @@ -0,0 +1,26 @@ +#! /bin/sh +# Sam K, déc 99 +# magie: le script lance super sur son propre nom +# et ca lance le bon programme.. + +prog=`basename $0` + +# Si le script courant est lancé par super, $SUPERCMD permet de le voir. +# et alors on continue gentiment le script, sinon on éxécute super sur le prog. +# ca permet de faire des scripts qui lancent super sur eux-memes.. +if ! test "X$SUPERCMD" = "X$prog"; then + exec /usr/bin/super /usr/lib/news/bin/$prog ${1+"$@"} + exit 0; +fi + +# Si le script courant est lanc par super, $SUPERCMD permet de le voir. +# et alors on continue gentiment le script, sinon on xcute super sur le prog. +# ca permet de faire des scripts qui lancent super sur eux-memes.. +# Contenu du script : + +# ici c'est vide car "super $prog" va en fait éxécuter un autre script (ou lien), comme +# configuré dans /etc/super.tab. +# celui ci est juste un "wrapper". +# pour lanceMake et autre, c'est là qu'est mis le script à éxécuter. + + diff --git a/archive/archives/supers/news/scanlogs b/archive/archives/supers/news/scanlogs new file mode 100755 index 00000000..c98f967b --- /dev/null +++ b/archive/archives/supers/news/scanlogs @@ -0,0 +1,26 @@ +#! /bin/sh +# Sam K, déc 99 +# magie: le script lance super sur son propre nom +# et ca lance le bon programme.. + +prog=`basename $0` + +# Si le script courant est lancé par super, $SUPERCMD permet de le voir. +# et alors on continue gentiment le script, sinon on éxécute super sur le prog. +# ca permet de faire des scripts qui lancent super sur eux-memes.. +if ! test "X$SUPERCMD" = "X$prog"; then + exec /usr/bin/super /usr/lib/news/bin/$prog ${1+"$@"} + exit 0; +fi + +# Si le script courant est lanc par super, $SUPERCMD permet de le voir. +# et alors on continue gentiment le script, sinon on xcute super sur le prog. +# ca permet de faire des scripts qui lancent super sur eux-memes.. +# Contenu du script : + +# ici c'est vide car "super $prog" va en fait éxécuter un autre script (ou lien), comme +# configuré dans /etc/super.tab. +# celui ci est juste un "wrapper". +# pour lanceMake et autre, c'est là qu'est mis le script à éxécuter. + + diff --git a/archive/archives/supers/news/scanspool b/archive/archives/supers/news/scanspool new file mode 100755 index 00000000..c98f967b --- /dev/null +++ b/archive/archives/supers/news/scanspool @@ -0,0 +1,26 @@ +#! /bin/sh +# Sam K, déc 99 +# magie: le script lance super sur son propre nom +# et ca lance le bon programme.. + +prog=`basename $0` + +# Si le script courant est lancé par super, $SUPERCMD permet de le voir. +# et alors on continue gentiment le script, sinon on éxécute super sur le prog. +# ca permet de faire des scripts qui lancent super sur eux-memes.. +if ! test "X$SUPERCMD" = "X$prog"; then + exec /usr/bin/super /usr/lib/news/bin/$prog ${1+"$@"} + exit 0; +fi + +# Si le script courant est lanc par super, $SUPERCMD permet de le voir. +# et alors on continue gentiment le script, sinon on xcute super sur le prog. +# ca permet de faire des scripts qui lancent super sur eux-memes.. +# Contenu du script : + +# ici c'est vide car "super $prog" va en fait éxécuter un autre script (ou lien), comme +# configuré dans /etc/super.tab. +# celui ci est juste un "wrapper". +# pour lanceMake et autre, c'est là qu'est mis le script à éxécuter. + + diff --git a/archive/archives/supers/news/send-ihave b/archive/archives/supers/news/send-ihave new file mode 100755 index 00000000..c98f967b --- /dev/null +++ b/archive/archives/supers/news/send-ihave @@ -0,0 +1,26 @@ +#! /bin/sh +# Sam K, déc 99 +# magie: le script lance super sur son propre nom +# et ca lance le bon programme.. + +prog=`basename $0` + +# Si le script courant est lancé par super, $SUPERCMD permet de le voir. +# et alors on continue gentiment le script, sinon on éxécute super sur le prog. +# ca permet de faire des scripts qui lancent super sur eux-memes.. +if ! test "X$SUPERCMD" = "X$prog"; then + exec /usr/bin/super /usr/lib/news/bin/$prog ${1+"$@"} + exit 0; +fi + +# Si le script courant est lanc par super, $SUPERCMD permet de le voir. +# et alors on continue gentiment le script, sinon on xcute super sur le prog. +# ca permet de faire des scripts qui lancent super sur eux-memes.. +# Contenu du script : + +# ici c'est vide car "super $prog" va en fait éxécuter un autre script (ou lien), comme +# configuré dans /etc/super.tab. +# celui ci est juste un "wrapper". +# pour lanceMake et autre, c'est là qu'est mis le script à éxécuter. + + diff --git a/archive/archives/supers/news/send-nntp b/archive/archives/supers/news/send-nntp new file mode 100755 index 00000000..c98f967b --- /dev/null +++ b/archive/archives/supers/news/send-nntp @@ -0,0 +1,26 @@ +#! /bin/sh +# Sam K, déc 99 +# magie: le script lance super sur son propre nom +# et ca lance le bon programme.. + +prog=`basename $0` + +# Si le script courant est lancé par super, $SUPERCMD permet de le voir. +# et alors on continue gentiment le script, sinon on éxécute super sur le prog. +# ca permet de faire des scripts qui lancent super sur eux-memes.. +if ! test "X$SUPERCMD" = "X$prog"; then + exec /usr/bin/super /usr/lib/news/bin/$prog ${1+"$@"} + exit 0; +fi + +# Si le script courant est lanc par super, $SUPERCMD permet de le voir. +# et alors on continue gentiment le script, sinon on xcute super sur le prog. +# ca permet de faire des scripts qui lancent super sur eux-memes.. +# Contenu du script : + +# ici c'est vide car "super $prog" va en fait éxécuter un autre script (ou lien), comme +# configuré dans /etc/super.tab. +# celui ci est juste un "wrapper". +# pour lanceMake et autre, c'est là qu'est mis le script à éxécuter. + + diff --git a/archive/archives/supers/news/send-uucp b/archive/archives/supers/news/send-uucp new file mode 100755 index 00000000..c98f967b --- /dev/null +++ b/archive/archives/supers/news/send-uucp @@ -0,0 +1,26 @@ +#! /bin/sh +# Sam K, déc 99 +# magie: le script lance super sur son propre nom +# et ca lance le bon programme.. + +prog=`basename $0` + +# Si le script courant est lancé par super, $SUPERCMD permet de le voir. +# et alors on continue gentiment le script, sinon on éxécute super sur le prog. +# ca permet de faire des scripts qui lancent super sur eux-memes.. +if ! test "X$SUPERCMD" = "X$prog"; then + exec /usr/bin/super /usr/lib/news/bin/$prog ${1+"$@"} + exit 0; +fi + +# Si le script courant est lanc par super, $SUPERCMD permet de le voir. +# et alors on continue gentiment le script, sinon on xcute super sur le prog. +# ca permet de faire des scripts qui lancent super sur eux-memes.. +# Contenu du script : + +# ici c'est vide car "super $prog" va en fait éxécuter un autre script (ou lien), comme +# configuré dans /etc/super.tab. +# celui ci est juste un "wrapper". +# pour lanceMake et autre, c'est là qu'est mis le script à éxécuter. + + diff --git a/archive/archives/supers/news/send-uucp.pl b/archive/archives/supers/news/send-uucp.pl new file mode 100755 index 00000000..c98f967b --- /dev/null +++ b/archive/archives/supers/news/send-uucp.pl @@ -0,0 +1,26 @@ +#! /bin/sh +# Sam K, déc 99 +# magie: le script lance super sur son propre nom +# et ca lance le bon programme.. + +prog=`basename $0` + +# Si le script courant est lancé par super, $SUPERCMD permet de le voir. +# et alors on continue gentiment le script, sinon on éxécute super sur le prog. +# ca permet de faire des scripts qui lancent super sur eux-memes.. +if ! test "X$SUPERCMD" = "X$prog"; then + exec /usr/bin/super /usr/lib/news/bin/$prog ${1+"$@"} + exit 0; +fi + +# Si le script courant est lanc par super, $SUPERCMD permet de le voir. +# et alors on continue gentiment le script, sinon on xcute super sur le prog. +# ca permet de faire des scripts qui lancent super sur eux-memes.. +# Contenu du script : + +# ici c'est vide car "super $prog" va en fait éxécuter un autre script (ou lien), comme +# configuré dans /etc/super.tab. +# celui ci est juste un "wrapper". +# pour lanceMake et autre, c'est là qu'est mis le script à éxécuter. + + diff --git a/archive/archives/supers/news/sendbatch b/archive/archives/supers/news/sendbatch new file mode 100755 index 00000000..c98f967b --- /dev/null +++ b/archive/archives/supers/news/sendbatch @@ -0,0 +1,26 @@ +#! /bin/sh +# Sam K, déc 99 +# magie: le script lance super sur son propre nom +# et ca lance le bon programme.. + +prog=`basename $0` + +# Si le script courant est lancé par super, $SUPERCMD permet de le voir. +# et alors on continue gentiment le script, sinon on éxécute super sur le prog. +# ca permet de faire des scripts qui lancent super sur eux-memes.. +if ! test "X$SUPERCMD" = "X$prog"; then + exec /usr/bin/super /usr/lib/news/bin/$prog ${1+"$@"} + exit 0; +fi + +# Si le script courant est lanc par super, $SUPERCMD permet de le voir. +# et alors on continue gentiment le script, sinon on xcute super sur le prog. +# ca permet de faire des scripts qui lancent super sur eux-memes.. +# Contenu du script : + +# ici c'est vide car "super $prog" va en fait éxécuter un autre script (ou lien), comme +# configuré dans /etc/super.tab. +# celui ci est juste un "wrapper". +# pour lanceMake et autre, c'est là qu'est mis le script à éxécuter. + + diff --git a/archive/archives/supers/news/sendxbatches b/archive/archives/supers/news/sendxbatches new file mode 100755 index 00000000..c98f967b --- /dev/null +++ b/archive/archives/supers/news/sendxbatches @@ -0,0 +1,26 @@ +#! /bin/sh +# Sam K, déc 99 +# magie: le script lance super sur son propre nom +# et ca lance le bon programme.. + +prog=`basename $0` + +# Si le script courant est lancé par super, $SUPERCMD permet de le voir. +# et alors on continue gentiment le script, sinon on éxécute super sur le prog. +# ca permet de faire des scripts qui lancent super sur eux-memes.. +if ! test "X$SUPERCMD" = "X$prog"; then + exec /usr/bin/super /usr/lib/news/bin/$prog ${1+"$@"} + exit 0; +fi + +# Si le script courant est lanc par super, $SUPERCMD permet de le voir. +# et alors on continue gentiment le script, sinon on xcute super sur le prog. +# ca permet de faire des scripts qui lancent super sur eux-memes.. +# Contenu du script : + +# ici c'est vide car "super $prog" va en fait éxécuter un autre script (ou lien), comme +# configuré dans /etc/super.tab. +# celui ci est juste un "wrapper". +# pour lanceMake et autre, c'est là qu'est mis le script à éxécuter. + + diff --git a/archive/archives/supers/news/shlock b/archive/archives/supers/news/shlock new file mode 100755 index 00000000..c98f967b --- /dev/null +++ b/archive/archives/supers/news/shlock @@ -0,0 +1,26 @@ +#! /bin/sh +# Sam K, déc 99 +# magie: le script lance super sur son propre nom +# et ca lance le bon programme.. + +prog=`basename $0` + +# Si le script courant est lancé par super, $SUPERCMD permet de le voir. +# et alors on continue gentiment le script, sinon on éxécute super sur le prog. +# ca permet de faire des scripts qui lancent super sur eux-memes.. +if ! test "X$SUPERCMD" = "X$prog"; then + exec /usr/bin/super /usr/lib/news/bin/$prog ${1+"$@"} + exit 0; +fi + +# Si le script courant est lanc par super, $SUPERCMD permet de le voir. +# et alors on continue gentiment le script, sinon on xcute super sur le prog. +# ca permet de faire des scripts qui lancent super sur eux-memes.. +# Contenu du script : + +# ici c'est vide car "super $prog" va en fait éxécuter un autre script (ou lien), comme +# configuré dans /etc/super.tab. +# celui ci est juste un "wrapper". +# pour lanceMake et autre, c'est là qu'est mis le script à éxécuter. + + diff --git a/archive/archives/supers/news/shrinkfile b/archive/archives/supers/news/shrinkfile new file mode 100755 index 00000000..c98f967b --- /dev/null +++ b/archive/archives/supers/news/shrinkfile @@ -0,0 +1,26 @@ +#! /bin/sh +# Sam K, déc 99 +# magie: le script lance super sur son propre nom +# et ca lance le bon programme.. + +prog=`basename $0` + +# Si le script courant est lancé par super, $SUPERCMD permet de le voir. +# et alors on continue gentiment le script, sinon on éxécute super sur le prog. +# ca permet de faire des scripts qui lancent super sur eux-memes.. +if ! test "X$SUPERCMD" = "X$prog"; then + exec /usr/bin/super /usr/lib/news/bin/$prog ${1+"$@"} + exit 0; +fi + +# Si le script courant est lanc par super, $SUPERCMD permet de le voir. +# et alors on continue gentiment le script, sinon on xcute super sur le prog. +# ca permet de faire des scripts qui lancent super sur eux-memes.. +# Contenu du script : + +# ici c'est vide car "super $prog" va en fait éxécuter un autre script (ou lien), comme +# configuré dans /etc/super.tab. +# celui ci est juste un "wrapper". +# pour lanceMake et autre, c'est là qu'est mis le script à éxécuter. + + diff --git a/archive/archives/supers/news/signcontrol b/archive/archives/supers/news/signcontrol new file mode 100755 index 00000000..c98f967b --- /dev/null +++ b/archive/archives/supers/news/signcontrol @@ -0,0 +1,26 @@ +#! /bin/sh +# Sam K, déc 99 +# magie: le script lance super sur son propre nom +# et ca lance le bon programme.. + +prog=`basename $0` + +# Si le script courant est lancé par super, $SUPERCMD permet de le voir. +# et alors on continue gentiment le script, sinon on éxécute super sur le prog. +# ca permet de faire des scripts qui lancent super sur eux-memes.. +if ! test "X$SUPERCMD" = "X$prog"; then + exec /usr/bin/super /usr/lib/news/bin/$prog ${1+"$@"} + exit 0; +fi + +# Si le script courant est lanc par super, $SUPERCMD permet de le voir. +# et alors on continue gentiment le script, sinon on xcute super sur le prog. +# ca permet de faire des scripts qui lancent super sur eux-memes.. +# Contenu du script : + +# ici c'est vide car "super $prog" va en fait éxécuter un autre script (ou lien), comme +# configuré dans /etc/super.tab. +# celui ci est juste un "wrapper". +# pour lanceMake et autre, c'est là qu'est mis le script à éxécuter. + + diff --git a/archive/archives/supers/news/sm b/archive/archives/supers/news/sm new file mode 100755 index 00000000..c98f967b --- /dev/null +++ b/archive/archives/supers/news/sm @@ -0,0 +1,26 @@ +#! /bin/sh +# Sam K, déc 99 +# magie: le script lance super sur son propre nom +# et ca lance le bon programme.. + +prog=`basename $0` + +# Si le script courant est lancé par super, $SUPERCMD permet de le voir. +# et alors on continue gentiment le script, sinon on éxécute super sur le prog. +# ca permet de faire des scripts qui lancent super sur eux-memes.. +if ! test "X$SUPERCMD" = "X$prog"; then + exec /usr/bin/super /usr/lib/news/bin/$prog ${1+"$@"} + exit 0; +fi + +# Si le script courant est lanc par super, $SUPERCMD permet de le voir. +# et alors on continue gentiment le script, sinon on xcute super sur le prog. +# ca permet de faire des scripts qui lancent super sur eux-memes.. +# Contenu du script : + +# ici c'est vide car "super $prog" va en fait éxécuter un autre script (ou lien), comme +# configuré dans /etc/super.tab. +# celui ci est juste un "wrapper". +# pour lanceMake et autre, c'est là qu'est mis le script à éxécuter. + + diff --git a/archive/archives/supers/news/startinnfeed b/archive/archives/supers/news/startinnfeed new file mode 100755 index 00000000..c98f967b --- /dev/null +++ b/archive/archives/supers/news/startinnfeed @@ -0,0 +1,26 @@ +#! /bin/sh +# Sam K, déc 99 +# magie: le script lance super sur son propre nom +# et ca lance le bon programme.. + +prog=`basename $0` + +# Si le script courant est lancé par super, $SUPERCMD permet de le voir. +# et alors on continue gentiment le script, sinon on éxécute super sur le prog. +# ca permet de faire des scripts qui lancent super sur eux-memes.. +if ! test "X$SUPERCMD" = "X$prog"; then + exec /usr/bin/super /usr/lib/news/bin/$prog ${1+"$@"} + exit 0; +fi + +# Si le script courant est lanc par super, $SUPERCMD permet de le voir. +# et alors on continue gentiment le script, sinon on xcute super sur le prog. +# ca permet de faire des scripts qui lancent super sur eux-memes.. +# Contenu du script : + +# ici c'est vide car "super $prog" va en fait éxécuter un autre script (ou lien), comme +# configuré dans /etc/super.tab. +# celui ci est juste un "wrapper". +# pour lanceMake et autre, c'est là qu'est mis le script à éxécuter. + + diff --git a/archive/archives/supers/news/tally.control b/archive/archives/supers/news/tally.control new file mode 100755 index 00000000..c98f967b --- /dev/null +++ b/archive/archives/supers/news/tally.control @@ -0,0 +1,26 @@ +#! /bin/sh +# Sam K, déc 99 +# magie: le script lance super sur son propre nom +# et ca lance le bon programme.. + +prog=`basename $0` + +# Si le script courant est lancé par super, $SUPERCMD permet de le voir. +# et alors on continue gentiment le script, sinon on éxécute super sur le prog. +# ca permet de faire des scripts qui lancent super sur eux-memes.. +if ! test "X$SUPERCMD" = "X$prog"; then + exec /usr/bin/super /usr/lib/news/bin/$prog ${1+"$@"} + exit 0; +fi + +# Si le script courant est lanc par super, $SUPERCMD permet de le voir. +# et alors on continue gentiment le script, sinon on xcute super sur le prog. +# ca permet de faire des scripts qui lancent super sur eux-memes.. +# Contenu du script : + +# ici c'est vide car "super $prog" va en fait éxécuter un autre script (ou lien), comme +# configuré dans /etc/super.tab. +# celui ci est juste un "wrapper". +# pour lanceMake et autre, c'est là qu'est mis le script à éxécuter. + + diff --git a/archive/archives/supers/news/writelog b/archive/archives/supers/news/writelog new file mode 100755 index 00000000..c98f967b --- /dev/null +++ b/archive/archives/supers/news/writelog @@ -0,0 +1,26 @@ +#! /bin/sh +# Sam K, déc 99 +# magie: le script lance super sur son propre nom +# et ca lance le bon programme.. + +prog=`basename $0` + +# Si le script courant est lancé par super, $SUPERCMD permet de le voir. +# et alors on continue gentiment le script, sinon on éxécute super sur le prog. +# ca permet de faire des scripts qui lancent super sur eux-memes.. +if ! test "X$SUPERCMD" = "X$prog"; then + exec /usr/bin/super /usr/lib/news/bin/$prog ${1+"$@"} + exit 0; +fi + +# Si le script courant est lanc par super, $SUPERCMD permet de le voir. +# et alors on continue gentiment le script, sinon on xcute super sur le prog. +# ca permet de faire des scripts qui lancent super sur eux-memes.. +# Contenu du script : + +# ici c'est vide car "super $prog" va en fait éxécuter un autre script (ou lien), comme +# configuré dans /etc/super.tab. +# celui ci est juste un "wrapper". +# pour lanceMake et autre, c'est là qu'est mis le script à éxécuter. + + diff --git a/archive/archives/supers/ntop b/archive/archives/supers/ntop new file mode 100755 index 00000000..b950c76e --- /dev/null +++ b/archive/archives/supers/ntop @@ -0,0 +1,20 @@ +#! /bin/sh +# Sam K, déc 99 +# magie: le script lance super sur son propre nom +# et ca lance le bon programme.. + +prog=`basename $0` + +# Si le script courant est lancé par super, $SUPERCMD permet de le voir. +# et alors on continue gentiment le script, sinon on éxécute super sur le prog. +# ca permet de faire des scripts qui lancent super sur eux-memes.. +test "X$SUPERCMD" = "X$prog" || test "X$UID" = "X0" || + exec /usr/bin/super $prog ${1+"$@"} # le script s'arrete ici ds ce cas. + +# Contenu du script : + +user=${ORIG_LOGNAME-$USER} +rep=${ORIG_HOME-$HOME} +echo Putting ntop DBs in $rep +/usr/local/bin/ntop -P $rep -a $rep/access.log -u $user ${1+"$@"} #-l 300 + diff --git a/archive/archives/supers/rdf b/archive/archives/supers/rdf new file mode 100755 index 00000000..cb665873 --- /dev/null +++ b/archive/archives/supers/rdf @@ -0,0 +1,26 @@ +#! /bin/sh +# Sam K, déc 99 +# magie: le script lance super sur son propre nom +# et ca lance le bon programme.. + +prog=`basename $0` + +# Si le script courant est lancé par super, $SUPERCMD permet de le voir. +# et alors on continue gentiment le script, sinon on éxécute super sur le prog. +# ca permet de faire des scripts qui lancent super sur eux-memes.. +test "X$SUPERCMD" = "X$prog" || test "X$UID" = "X0" || + exec /usr/bin/super $prog ${1+"$@"} # le script s'arrete ici ds ce cas. + +# Contenu du script : +# ici c'est vide car "super $prog" va en fait éxécuter un autre script, celui ci étant juste un "wrapper". +# pour lanceMake et autre, c'est là qu'est mis le script à éxécuter. + +# enfin, pour éviter de lancer super inutilement ds le cas où on est déja root, +# il reste le cas UID=0 : on essaye de lancer le prog, sans passer par super. +# -> on restreint le PATH au minimum. + +if test "X$UID" = "X0"; then + echo "uid=root -> on lance direct le prog, sans super (essayez where $prog) " + export PATH=/usr/local/sbin:/usr/sbin:/sbin:/opt/local/bin:/usr/local/bin:/usr/bin:/bin + exec $prog ${1+"$@"} +fi diff --git a/archive/archives/supers/rmlogin b/archive/archives/supers/rmlogin new file mode 100755 index 00000000..e52864f2 --- /dev/null +++ b/archive/archives/supers/rmlogin @@ -0,0 +1,19 @@ +#! /bin/sh +# Sam K, déc 99 +# magie: le script lance super sur son propre nom +# et ca lance le bon programme.. + +prog=`basename $0` + +# Si le script courant est lancé par super, $SUPERCMD permet de le voir. +# et alors on continue gentiment le script, sinon on éxécute super sur le prog. +# ca permet de faire des scripts qui lancent super sur eux-memes.. +test "X$SUPERCMD" = "X$prog" || test "X$UID" = "X0" || + exec /usr/bin/super $prog ${1+"$@"} # le script s'arrete ici ds ce cas. + +# Contenu du script : +# ici c'est vide car "super $prog" va en fait éxécuter un autre script, celui ci étant juste un "wrapper". +# pour lanceMake et autre, c'est là qu'est mis le script à éxécuter. + +test "X$UID" = "X0" && echo "uid=root -> on fait rien. lancez le prog directement, cf _where _." + diff --git a/archive/archives/supers/superTest b/archive/archives/supers/superTest new file mode 100755 index 00000000..e52864f2 --- /dev/null +++ b/archive/archives/supers/superTest @@ -0,0 +1,19 @@ +#! /bin/sh +# Sam K, déc 99 +# magie: le script lance super sur son propre nom +# et ca lance le bon programme.. + +prog=`basename $0` + +# Si le script courant est lancé par super, $SUPERCMD permet de le voir. +# et alors on continue gentiment le script, sinon on éxécute super sur le prog. +# ca permet de faire des scripts qui lancent super sur eux-memes.. +test "X$SUPERCMD" = "X$prog" || test "X$UID" = "X0" || + exec /usr/bin/super $prog ${1+"$@"} # le script s'arrete ici ds ce cas. + +# Contenu du script : +# ici c'est vide car "super $prog" va en fait éxécuter un autre script, celui ci étant juste un "wrapper". +# pour lanceMake et autre, c'est là qu'est mis le script à éxécuter. + +test "X$UID" = "X0" && echo "uid=root -> on fait rien. lancez le prog directement, cf _where _." + diff --git a/archive/archives/supers/template b/archive/archives/supers/template new file mode 100755 index 00000000..cb665873 --- /dev/null +++ b/archive/archives/supers/template @@ -0,0 +1,26 @@ +#! /bin/sh +# Sam K, déc 99 +# magie: le script lance super sur son propre nom +# et ca lance le bon programme.. + +prog=`basename $0` + +# Si le script courant est lancé par super, $SUPERCMD permet de le voir. +# et alors on continue gentiment le script, sinon on éxécute super sur le prog. +# ca permet de faire des scripts qui lancent super sur eux-memes.. +test "X$SUPERCMD" = "X$prog" || test "X$UID" = "X0" || + exec /usr/bin/super $prog ${1+"$@"} # le script s'arrete ici ds ce cas. + +# Contenu du script : +# ici c'est vide car "super $prog" va en fait éxécuter un autre script, celui ci étant juste un "wrapper". +# pour lanceMake et autre, c'est là qu'est mis le script à éxécuter. + +# enfin, pour éviter de lancer super inutilement ds le cas où on est déja root, +# il reste le cas UID=0 : on essaye de lancer le prog, sans passer par super. +# -> on restreint le PATH au minimum. + +if test "X$UID" = "X0"; then + echo "uid=root -> on lance direct le prog, sans super (essayez where $prog) " + export PATH=/usr/local/sbin:/usr/sbin:/sbin:/opt/local/bin:/usr/local/bin:/usr/bin:/bin + exec $prog ${1+"$@"} +fi diff --git a/archive/archives/supers/template_court b/archive/archives/supers/template_court new file mode 100755 index 00000000..e52864f2 --- /dev/null +++ b/archive/archives/supers/template_court @@ -0,0 +1,19 @@ +#! /bin/sh +# Sam K, déc 99 +# magie: le script lance super sur son propre nom +# et ca lance le bon programme.. + +prog=`basename $0` + +# Si le script courant est lancé par super, $SUPERCMD permet de le voir. +# et alors on continue gentiment le script, sinon on éxécute super sur le prog. +# ca permet de faire des scripts qui lancent super sur eux-memes.. +test "X$SUPERCMD" = "X$prog" || test "X$UID" = "X0" || + exec /usr/bin/super $prog ${1+"$@"} # le script s'arrete ici ds ce cas. + +# Contenu du script : +# ici c'est vide car "super $prog" va en fait éxécuter un autre script, celui ci étant juste un "wrapper". +# pour lanceMake et autre, c'est là qu'est mis le script à éxécuter. + +test "X$UID" = "X0" && echo "uid=root -> on fait rien. lancez le prog directement, cf _where _." + diff --git a/archive/archives/supers/template_id b/archive/archives/supers/template_id new file mode 100755 index 00000000..f2eb86f6 --- /dev/null +++ b/archive/archives/supers/template_id @@ -0,0 +1,25 @@ +#! /bin/sh +# Sam K, Jan 2000 +# sert Doublement de wrapper: +# d'abord autolance super sur /id/(basename $0), +# Et aussi, qd appelé via super, lance un scipt de /id en modifiant le apth au prealable. + +prog=`basename $0` +supcmd=`basename ${SUPERCMD=_NILL_}` + +# Si le script courant est lanc par super, $SUPERCMD permet de le voir. +# et alors on continue gentiment le script, sinon on xcute super sur le prog. +# ca permet de faire des scripts qui lancent super sur eux-memes.. +if ! test "X$supcmd" = "X$prog"; then + echo "calling super, $supcmd $prog" + exec /usr/bin/super /id/$prog ${1+"$@"} + exit 0; +fi + +# Si le script continue, c'est qu'on est lancé par super. + + +PATH=/sbin:/usr/sbin:/usr/bin:$PATH + +echo "Path set to: $PATH by id_wrapper" +exec /etc/init.d/$prog ${1+"$@"} diff --git a/archive/archives/supers/template_news b/archive/archives/supers/template_news new file mode 100755 index 00000000..c98f967b --- /dev/null +++ b/archive/archives/supers/template_news @@ -0,0 +1,26 @@ +#! /bin/sh +# Sam K, déc 99 +# magie: le script lance super sur son propre nom +# et ca lance le bon programme.. + +prog=`basename $0` + +# Si le script courant est lancé par super, $SUPERCMD permet de le voir. +# et alors on continue gentiment le script, sinon on éxécute super sur le prog. +# ca permet de faire des scripts qui lancent super sur eux-memes.. +if ! test "X$SUPERCMD" = "X$prog"; then + exec /usr/bin/super /usr/lib/news/bin/$prog ${1+"$@"} + exit 0; +fi + +# Si le script courant est lanc par super, $SUPERCMD permet de le voir. +# et alors on continue gentiment le script, sinon on xcute super sur le prog. +# ca permet de faire des scripts qui lancent super sur eux-memes.. +# Contenu du script : + +# ici c'est vide car "super $prog" va en fait éxécuter un autre script (ou lien), comme +# configuré dans /etc/super.tab. +# celui ci est juste un "wrapper". +# pour lanceMake et autre, c'est là qu'est mis le script à éxécuter. + + diff --git a/archive/archives/supers/update-links b/archive/archives/supers/update-links new file mode 100755 index 00000000..a5ecd6ec --- /dev/null +++ b/archive/archives/supers/update-links @@ -0,0 +1,10 @@ +#! /usr/bin/zsh +if test -z "$2"; then +echo "euhh, vérifiez que vous avez compris le script avant de le lancer.." +echo " il est basique, mais avec des arguments qcques, il pourrait faire mal." +exit 0 +fi + +mkdir $2 +cd $2 +for f in $1/*(*); do ln -s ../template_$2 `basename $f`; done diff --git a/archive/archives/surveille b/archive/archives/surveille new file mode 100755 index 00000000..ff24ae1f --- /dev/null +++ b/archive/archives/surveille @@ -0,0 +1,26 @@ +#!/bin/zsh +# si le process $1 est mort, le relance + +unset res + +arg=$1 +res=`ps xeaf | grep $arg | grep -v surveille | grep -v grep` +#res=`/etc/rc.d/init.d/$arg status | grep "running"` + +if [ -z $res ]; then + if [ -f /var/run/dead.$arg ]; then + # waouh, on peut rien -- on a déjà essayé de relancer ce truc + # et il est déjà mort -- y'a sûrement un problème dans les fichiers + # de config ! + # faudrait faire un "ls" quotidien de /var/run/dead.* ... + true + else + /etc/rc.d/init.d/$arg stop 2>/dev/null >/dev/null + /etc/rc.d/init.d/$arg start 2>/dev/null >/dev/null + logger "surveille a du relancer $1 !" 2>/dev/null >/dev/null + touch /var/run/dead.$arg + fi +else + rm -f /var/run/dead.$arg 2>/dev/null >/dev/null + +fi diff --git a/archive/archives/surveille-reseau b/archive/archives/surveille-reseau new file mode 100755 index 00000000..5d9abed7 --- /dev/null +++ b/archive/archives/surveille-reseau @@ -0,0 +1,36 @@ +#!/bin/sh + +ipx=false + +function teste_ou_claque() { + if ! ping -c 1 $1 2>&1 >/dev/null + then + ifconfig $2 down 2>/dev/null >/dev/null + /usr/local/bin/mii-diag -R $2 2>/dev/null >/dev/null + ifconfig $2 up 2>/dev/null >/dev/null + if [ ! -z "$3" ] + then + route add default gw $3 + fi + ipx=true + logger "surveille-reseau a du claquer $2 !" 2>&1 >/dev/null + fi +} + +# pour l'instant, on n'a qu'un seul réseau (eth0) où se trouve de façon sûre +# une machine partenaire, toujours présente. +# les autres réseaux peuvent être ajoutés dès que l'on aura une victime à +# pinger (par exemple, une vieille sun ou un vieux 386sx/Linux de réserve, +# ne servant à rien sauf à faire du RC5.distributed.net (pour l'ego du root) +# et répondre aux pings) + + +teste_ou_claque 138.231.176.65 eth0 138.231.136.2 +#teste_ou_claque zagadka eth1 +#teste_ou_claque gandalf eth2 +#teste_ou_claque bigouden eth3 + +$ipx && /etc/CRANS/rc.ipx >/dev/null 2>/dev/null + + + diff --git a/archive/archives/surveille-sendmail b/archive/archives/surveille-sendmail new file mode 100755 index 00000000..15134e45 --- /dev/null +++ b/archive/archives/surveille-sendmail @@ -0,0 +1,10 @@ +#!/bin/sh + +/etc/CRANS/sendmail-vit-il $1 && exit + +killall -9 sendmail 2>/dev/null >/dev/null +echo "surveille-sendmail relance sendmail !!!" >> /var/log/messages +/usr/lib/sendmail -bd + + + diff --git a/archive/archives/surveille-squid b/archive/archives/surveille-squid new file mode 100755 index 00000000..6b9d9ba6 --- /dev/null +++ b/archive/archives/surveille-squid @@ -0,0 +1,10 @@ +#!/bin/sh + +/etc/CRANS/squid-vit-il $1 && exit + +echo "surveille-squid relance Squid !!!" >> /var/log/messages +squid-new >/dev/null 2>/dev/null + + + + diff --git a/archive/archives/surveille.tout b/archive/archives/surveille.tout new file mode 100755 index 00000000..8ff86afa --- /dev/null +++ b/archive/archives/surveille.tout @@ -0,0 +1,18 @@ +#!/bin/sh + +/etc/CRANS/surveille-sendmail $HOST +/etc/CRANS/surveille-squid +/etc/CRANS/surveille httpd +/etc/CRANS/surveille smb +/etc/CRANS/surveille dhcpd +/etc/CRANS/surveille sshd2 +/etc/CRANS/surveille ntpd + +/etc/CRANS/surveille-reseau +# Et bientot +# /etc/CRANS/surveille-reseau.pl + + +killall -9 nwbind 2>/dev/null >/dev/null + #goret goret goret :-) mais on n'a pas besoin de la + #bindery[usine à gaz] NetWare diff --git a/archive/archives/temp-avg b/archive/archives/temp-avg new file mode 100755 index 00000000..95efc524 --- /dev/null +++ b/archive/archives/temp-avg @@ -0,0 +1,14 @@ +#!/bin/sh +# je pipe vers calculatrice pour enlever 30 °, ça donne plus de précision. Sam. (/1 fait truncate.) + +#echo $(cat /proc/sys/dev/sensors/w83781d-i2c-0-2d/temp2 | tail -c 5 | head -c 2 )"/1-20"|bc +#echo $(cat /proc/sys/dev/sensors/w83781d-i2c-0-2d/temp1 | tail -c 5 | head -c 2 )"/1-20"|bc +#echo 10 +#echo 12 + +echo $(cat /proc/sys/dev/sensors/w83781d*/temp1 | tail -c 5 | head -c 2 ) + +echo $(cat /proc/sys/dev/sensors/w83781d*/temp2 | tail -c 5 | head -c 2 ) +echo +echo "Température°" +# passage de -30 a -20 le 3 Oct 23:30 car nouveau local -> nouvelle temperature.. diff --git a/archive/archives/temperature b/archive/archives/temperature new file mode 100755 index 00000000..e89956dc --- /dev/null +++ b/archive/archives/temperature @@ -0,0 +1,11 @@ +#!/bin/sh +# je pipe vers calculatrice pour enlever 30 °, ça donne plus de précision. Sam. (/1 fait truncate.) + +#echo $(cat /proc/sys/dev/sensors/w83781d-i2c-0-2d/temp1 | tail -c 5 | head -c 2 )"*10.0"|bc +echo $(cat /proc/sys/dev/sensors/w83781d-i2c-0-2d/temp2 | tail -c 5 | head -c 4 )"*10/1"|bc +#echo 10 +#echo 12 + +#echo +#echo "Température*10 en °C" +# passage de -30 a -20 le 3 Oct 23:30 car nouveau local -> nouvelle temperature.. diff --git a/archive/archives/test-squid-taille-cache.pl b/archive/archives/test-squid-taille-cache.pl new file mode 100755 index 00000000..a380a899 --- /dev/null +++ b/archive/archives/test-squid-taille-cache.pl @@ -0,0 +1,25 @@ +#!/usr/bin/perl +$squidCacheDir = "/var/squid"; +$squidCacheDirMaxSize = 1700000; + +open(STDIN, "du -s $squidCacheDir |"); + +$line = ; +chop($line); + +#$line est sous la forme 12345678 $squidCacheDir + +if ($line =~ /([\d]+)/){ + if ($1 > $squidCacheDirMaxSize){ + + system("echo \"testSquid.pl relance squid \" >> /var/log/messages"); + + # ajoute par Aymeric pour essayer de comprendre ce qui se passe + system("df -k /var/squid >> /var/log/messages"); + + system("squid-new >/dev/null 2&>/dev/null &"); + # J'ai rajouté un sujet pour filtrage par procmail OS :-) + system("echo \"[TEST] j'ai du relancer le squid qui +bouffait trop d'espace\"| mail -s \"testSquid\" root "); + } +} diff --git a/archive/archives/verifie_ipforward b/archive/archives/verifie_ipforward new file mode 100755 index 00000000..6bf86f0c --- /dev/null +++ b/archive/archives/verifie_ipforward @@ -0,0 +1,7 @@ +#!/bin/sh +# fait le 11/12/99 par Jerome KIEFFER +#retablie l'ipforwarding entre les interfaces de zamok si c'est descactive. +if [ `cat /proc/sys/net/ipv4/ip_forward` -eq `expr 0` ] +then + echo 1 >/proc/sys/net/ipv4/ip_forward +fi \ No newline at end of file diff --git a/archive/archives/watchdog b/archive/archives/watchdog new file mode 100755 index 00000000..a0ca2675 --- /dev/null +++ b/archive/archives/watchdog @@ -0,0 +1,13 @@ +#!/usr/bin/env python +# oui emacs c'est bien du -*- python -*- + + +# c'est fait pour le "software watchdog".... + +from time import sleep + +fd = open("/dev/watchdog","w+") +while 1: + fd.write('z') + sleep(15) + diff --git a/archive/auto-reply/mailbatX b/archive/auto-reply/mailbatX new file mode 100644 index 00000000..0091ae36 --- /dev/null +++ b/archive/auto-reply/mailbatX @@ -0,0 +1,14 @@ +/!\ Ce mail est une réponse automatique ! + +Bonjour, + +Suite à un changement d'organisation, l'adresse à laquelle vous venez +d'envoyer un mail (batX@crans.org) n'est plus valide. Si vous souhaitez +rencontrer un câbleur, vous pouvez aller à la Kfet lors des permanences +effectuées par ceux-ci ; sinon, vous pouvez aussi les contacter comme +indiqué sur la page . + +Désolé pour le désagrément rencontré. + +-- +Les responsables bâtiments diff --git a/archive/auto-reply/procmailbatXrc b/archive/auto-reply/procmailbatXrc new file mode 100644 index 00000000..c69515b3 --- /dev/null +++ b/archive/auto-reply/procmailbatXrc @@ -0,0 +1,35 @@ +# Repondeur automatique pour batX et all-bureau +# 14/09/2004 version 1 Benoit R. + +# Pour vérifier que ca marche bien +VERBOSE=no +LOGFILE=/var/tmp/autoreply-procmail.log + +# Pour éviter les doublons (spams ou boulets qui envoient à tous les batX) +:0 Wh: msgid.lock +|formail -D 8192 /var/tmp/autoreply-msgid.cache + +# On pipe par le client de spamassassin +:0 Whbf +* < 256000 +| spamc + +# rejet du spam : +:0 : +* ^X-Spam-Status: Yes +/dev/null +:0 : +* ^X-Reject: 554 +/dev/null + +# ne réponds pas au mailings-lists et démons : +# et pas de boucles : +:0 h +* !^FROM_DAEMON +* !^X-Loop: batX@crans.org +|(formail -r -I "From: nobody@crans.org" \ + -A "X-Loop: batX@crans.org" ;\ + cat /usr/scripts/auto-reply/mailbatX)| /usr/sbin/sendmail -oi -t + +:0 +/dev/null diff --git a/archive/bdd/cles b/archive/bdd/cles new file mode 100644 index 00000000..c8f04a67 --- /dev/null +++ b/archive/bdd/cles @@ -0,0 +1,37 @@ +['mailAlias', + 'tel', + 'cn', + 'objectClass', + 'uidNumber', + 'etudes', + 'shadowMax', + 'shadowLastChange', + 'uid', + 'canonicalAlias', + 'historique', + 'userPassword', + 'derniereConnexion', + 'mail', + 'paiement', + 'nom', + 'loginShell', + 'gidNumber', + 'chbre', + 'rewriteMailHeaders', + 'shadowWarning', + 'info', + 'prenom', + 'gecos', + 'homeDirectory', + 'aid', + 'carteEtudiant', + 'controle', + 'mailInvalide', + 'blacklist', + 'postalAddress', + 'solde', + 'droits', + 'contourneGreylist', + 'charteMA', + 'homepageAlias'] + \ No newline at end of file diff --git a/archive/bdd/comptes.py b/archive/bdd/comptes.py new file mode 100644 index 00000000..d63ae9f2 --- /dev/null +++ b/archive/bdd/comptes.py @@ -0,0 +1,34 @@ +from sqlobject import * +#from comptes import CompteUnix + +class Attribut(SQLObject): + nom = UnicodeCol() + url_desc = StringCol(default=None) + permissions = RelatedJoin('Permission') + groupes_unix = RelatedJoin('GroupeUnix') + comptes = RelatedJoin('CompteUnix') + +class Permission(SQLObject): + nom = UnicodeCol() + attributs = RelatedJoin('Attribut') + +class CompteUnix(SQLObject): + proprio = ForeignKey('Proprio') + solde = FloatCol() + attributs = RelatedJoin('Attribut') + + # Champs standards + username = StringCol(unique=True) + passwd = UnicodeCol() + uid = IntCol(unique=True) + homedir = StringCol() + shell = StringCol() + gecos = StringCol() + pwdexpire = DateTimeCol(default=None) + gid = IntCol() + +class GroupeUnix(SQLObject): + gid = IntCol(unique=True) + nom = StringCol(unique=True) + descr = UnicodeCol() + passwd = StringCol(default='!') diff --git a/archive/bdd/connection.py b/archive/bdd/connection.py new file mode 100644 index 00000000..7c0a0299 --- /dev/null +++ b/archive/bdd/connection.py @@ -0,0 +1,9 @@ +from sqlobject import * +import sys, os +sys.path.append('/usr/scripts/bdd/secret') +from mdp import mdp + +connection_string = 'postgres://respbats:%s@localhost/gestion2?debug=False&cache=True' % mdp +connection = connectionForURI(connection_string) +sqlhub.processConnection = connection + diff --git a/archive/bdd/controle.py b/archive/bdd/controle.py new file mode 100644 index 00000000..8560d122 --- /dev/null +++ b/archive/bdd/controle.py @@ -0,0 +1,7 @@ +from sqlobject import * + +class Controle(SQLObject): + Proprio = ForeignKey('Proprio') + nom = Strincol() + date = DateCol() + diff --git a/archive/bdd/local.py b/archive/bdd/local.py new file mode 100644 index 00000000..57f3474e --- /dev/null +++ b/archive/bdd/local.py @@ -0,0 +1,12 @@ +from sqlobject import * + +class Local(SQLObject): + + nom = StringCol(unique=True) + proprio = ForeignKey('Proprio') + batiment = ForeignKey('Batiment') + +class Batiment(SQLObject): + + nom = StringCol(unique=True) + diff --git a/archive/bdd/migration.py b/archive/bdd/migration.py new file mode 100755 index 00000000..40c03ebc --- /dev/null +++ b/archive/bdd/migration.py @@ -0,0 +1,160 @@ +#! /usr/bin/python + +if __name__ == '__main__': + import sys + sys.path.append('/usr/scripts/gestion') + from ldap_crans import crans_ldap + ldap = crans_ldap() + + import connection + from proprio import Proprio + from comptes import CompteUnix + from local import Local + from comptes import Attribut + from comptes import GroupeUnix + + + adherents_ldap = ldap.search('nom=*')['adherent'] # Pour les tests, on ne selectionne que les nounous + #adherents_ldap = [] + for adherent_ldap in adherents_ldap: + + data = adherent_ldap._data + + args = {} + + args['categorie'] = u'adherent' + args['id_ldap'] = int(adherent_ldap.id()) + args['nom'] = adherent_ldap.nom() + args['prenom'] = adherent_ldap.prenom() + args['titre'] = None + args['naissance'] = None + + + args['adresse1'] = adherent_ldap.adresse()[0] + args['adresse2'] = adherent_ldap.adresse()[1] + args['code_postal'] = adherent_ldap.adresse()[2] + args['ville'] = adherent_ldap.adresse()[3] + args['pays'] = None + + args['telephone'] = adherent_ldap.tel() + args['email'] = adherent_ldap.email() + + args['etablissement'] = adherent_ldap.etudes(0) + args['annee_etudes'] = adherent_ldap.etudes(1) + args['filiere'] = adherent_ldap.etudes(2) + + args['remarques'] = '\n'.join(adherent_ldap.info()) + args['fictif'] = False + args['responsableID'] = None + + selection = Proprio.select(Proprio.q.id_ldap == adherent_ldap.id()) + if selection.count() == 0: + proprio_pg = Proprio(**args) + else: + proprio_pg = selection[0] + proprio_pg.set(**args) + + if 'uid' in adherent_ldap._data: + args = {} + args['proprioID'] = proprio_pg.id + args['username'] = adherent_ldap.mail() + args['passwd'] = '!' + args['uid'] = int(adherent_ldap._data['uidNumber'][0]) + args['homedir'] = adherent_ldap._data['homeDirectory'][0] + args['shell'] = adherent_ldap._data['loginShell'][0] + args['gecos'] = adherent_ldap._data['gecos'][0] + args['gid'] = 3 + args['solde'] = adherent_ldap.solde() + + selection = CompteUnix.select(CompteUnix.q.proprioID == proprio_pg.id) + if selection.count() == 0: + compte_pg = CompteUnix(**args) + else: + compte_pg = selection[0] + compte_pg.set(**args) + + + for droit in adherent_ldap.droits(): + selection = Attribut.select(Attribut.q.nom == droit) + if selection.count() == 0: + attribut = Attribut(nom=droit) + else: + attribut = selection[0] + if attribut not in compte_pg.attributs: + compte_pg.addAttribut(attribut) + + + print adherent_ldap.nom() + + clubs_ldap = ldap.search('cid=*')['club'] # Pour les tests, on ne selectionne que les nounous + for club_ldap in clubs_ldap: + + data = club_ldap._data + + args = {} + + args['categorie'] = u'club' + args['id_ldap'] = int(club_ldap.id()) + args['nom'] = club_ldap.nom() + args['prenom'] = None + args['titre'] = None + args['naissance'] = None + + + args['adresse1'] = None + args['adresse2'] = None + args['code_postal'] = None + args['ville'] = None + args['pays'] = None + + args['telephone'] = None + args['email'] = None + + args['etablissement'] = None + args['annee_etudes'] = None + args['filiere'] = None + + args['remarques'] = '\n'.join(club_ldap.info()) + args['fictif'] = False + args['responsableID'] = Proprio.select(Proprio.q.id_ldap == club_ldap._data['responsable'][0])[0].id + + selection = Proprio.select(Proprio.q.id_ldap == club_ldap.id()) + if selection.count() == 0: + proprio_pg = Proprio(**args) + else: + proprio_pg = selection[0] + proprio_pg.set(**args) + + if 'uid' in club_ldap._data: + args = {} + args['proprioID'] = proprio_pg.id + args['username'] = club_ldap._data['uid'] + args['passwd'] = '!' + args['uid'] = int(club_ldap._data['uidNumber'][0]) + args['homedir'] = club_ldap._data['homeDirectory'][0] + args['shell'] = club_ldap._data['loginShell'][0] + args['gecos'] = None + args['gid'] = 3 + args['solde'] = club_ldap.solde() + + selection = CompteUnix.select(CompteUnix.q.proprioID == proprio_pg.id) + if selection.count() == 0: + compte_pg = CompteUnix(**args) + else: + compte_pg = selection[0] + compte_pg.set(**args) + + + print club_ldap.nom() + + + + nounou = Attribut.select(Attribut.q.nom == u'Nounou')[0] + selection = GroupeUnix.select(GroupeUnix.q.nom == 'ssh_partout') + if selection.count() == 0: + ssh_partout = GroupeUnix(nom='ssh_partout', gid=200, descr='Groupes des utilisateur autorises a se logger partout') + else: + ssh_partout = selection[0] + if ssh_partout not in nounou.groupes_unix: + nounou.addGroupeUnix(ssh_partout) + diff --git a/archive/bdd/proprio.py b/archive/bdd/proprio.py new file mode 100644 index 00000000..bd0bd5c6 --- /dev/null +++ b/archive/bdd/proprio.py @@ -0,0 +1,57 @@ +from sqlobject import * +from datetime import datetime + +from local import Local + +class Proprio(SQLObject): + + id_ldap = IntCol(unique=True) + """ L'aid/cid est uniquement la pour la retrocompatibilite avec LDAP + Attention : dans LDAP, le meme aid peut etre utilise par deux adherents successivement """ + categorie = UnicodeCol() + """ Categorie : club ou adherent """ + + nom = UnicodeCol() + prenom = UnicodeCol() + titre = StringCol() + """ M, Mmme, Mlle """ + naissance = DateCol() + + adresse1 = UnicodeCol() + adresse2 = UnicodeCol() + code_postal = StringCol() + ville = UnicodeCol() + pays = UnicodeCol() + + telephone = StringCol() + email = StringCol() + + etablissement = UnicodeCol() + annee_etudes = UnicodeCol() + filiere = UnicodeCol() + + responsable = ForeignKey('Proprio') + + fictif = BoolCol() + remarques = UnicodeCol() + + + #A faire plutot en SQL ? + #def sync(self): + # if not self._SO_createValues: + # return + #for champ in self._SO_createValues.keys(): + # diff = '%s -> %s' + # hist = HistProprio(responsable = None, date = datetime.now(), \ + # cible = self, champ = champ, \ + # valeur = self._SO_createValues[champ]) + # SQLObject.sync(self) + + +class HistProprio(SQLObject): + date = DateTimeCol() + responsable = ForeignKey('Proprio', notNone=False) + cible = ForeignKey('Proprio') + champ = StringCol() + valeur = StringCol() + \ No newline at end of file diff --git a/archive/bdd/reset.py b/archive/bdd/reset.py new file mode 100755 index 00000000..2d1faaf3 --- /dev/null +++ b/archive/bdd/reset.py @@ -0,0 +1,54 @@ +#!/usr/bin/python + +import connection + +from proprio import Proprio +from proprio import HistProprio +from comptes import CompteUnix +from comptes import GroupeUnix +from comptes import Attribut +from comptes import Permission + +erreurs = 0 + +try: + Proprio.dropTable(cascade=True) +except: + erreurs += 1 + +Proprio.createTable() + +try: + HistProprio.dropTable(cascade=True) +except: + erreurs += 1 +HistProprio.createTable() + +try: + CompteUnix.dropTable(cascade=True) +except: + erreurs += 1 +CompteUnix.createTable() + + + +try: + GroupeUnix.dropTable(cascade=True) +except: + erreurs += 1 +GroupeUnix.createTable() + + +try: + Attribut.dropTable(cascade=True) +except: + erreurs += 1 +Attribut.createTable() + +try: + Permission.dropTable(cascade=True) +except: + erreurs += 1 +Permission.createTable() + +print 'erreurs : ', erreurs \ No newline at end of file diff --git a/archive/bdd/secret/mdp.py b/archive/bdd/secret/mdp.py new file mode 100644 index 00000000..bd126611 --- /dev/null +++ b/archive/bdd/secret/mdp.py @@ -0,0 +1 @@ +mdp = 'AspIrAtEUr' \ No newline at end of file diff --git a/archive/bdd/sql/transitivite b/archive/bdd/sql/transitivite new file mode 100644 index 00000000..7b6fa750 --- /dev/null +++ b/archive/bdd/sql/transitivite @@ -0,0 +1,6 @@ +CREATE OR REPLACE VIEW compte_unix_groupe_unix AS SELECT attribut_compte_unix.compte_unix_id, attribut_groupe_unix.groupe_unix_id FROM attribut_compte_unix, attribut_groupe_unix WHERE attribut_compte_unix.attribut_id = attribut_groupe_unix.attribut_id; + +SELECT C.uid, G.gid; FROM compte_unix C JOIN attribut_compte_unix AC ON (AC.compte_unix_id = C.id) JOIN attribut A ON (A.id = AC.attribut_id) JOIN attribut_groupe_unix AG ON (AG.attribut_id = A.id) JOIN groupe_unix G ON (G.id = AG.groupe_unix_id) GROUP BY C.uid, G.gid; + +CRETAE OR REPLACE VIEW groupmember AS SELECT C.uid, C.username, G.gid +FROM compte_unix C JOIN attribut_compte_unix AC ON (AC.compte_unix_id = C.id) JOIN attribut A ON (A.id = AC.attribut_id) JOIN attribut_groupe_unix AG ON (AG.attribut_id = A.id) JOIN groupe_unix G ON (G.id = AG.groupe_unix_id) GROUP BY C.uid, G.gid, C.username; diff --git a/archive/bdd/temp.py b/archive/bdd/temp.py new file mode 100755 index 00000000..25ea16cb --- /dev/null +++ b/archive/bdd/temp.py @@ -0,0 +1,6 @@ +#!/usr/bin/python + +import hub + +from chambre import Chambre +Chambre.createTable() diff --git a/archive/cranslib/README b/archive/cranslib/README new file mode 100644 index 00000000..a3453629 --- /dev/null +++ b/archive/cranslib/README @@ -0,0 +1,2 @@ +/usr/scripts/lib pointait à une époque vers /usr/scripts/lib jusqu'à ce que 20-100 décide que +faire du ducktape à coup de symlinks pour les import, c'était mal diff --git a/archive/cransnews/__init__.py b/archive/cransnews/__init__.py new file mode 100644 index 00000000..e69de29b diff --git a/archive/cransnews/base.db b/archive/cransnews/base.db new file mode 100644 index 0000000000000000000000000000000000000000..8e6a744bd4b89cf672deebf69060bb7b5173324b GIT binary patch literal 25600 zcmeHPO>87b6|U;)p0>y1@o%R$>sW4&Gmb~L*PgYoEExYDb)vJ2%eO2{px?cBe+*&Qv9c#BzE!lNz4yg!Z^sHqegeK{~c*ST2 z3k4!A6t|KZEh6OKP+^jH$bVe2l~0yP1SA4yk3eq^l@aZtNvGBg;#5fFB@vJaJZcEY z_5Y}ixU^Ry5Fii*Qttl&Ad->@JVFS-{*Oro(LZ@f1SA4yi@-q~$IwuB_e>3Ayt1;F zcj{H=i~Qr+ovK}~U8+>~YIp4PlWAvRdEv?3e16y7b+#9mcITJ#%jxuTdU1AnF_T`f zmv$C1i`(|X+&tx>{av1&U7DU#emu45|)AO^(*TDXd$=itj$x9+2 z5qJa;=psXyyBrMrzk&Xa$e+oN$k)j}StS!Bru;+srSghWRjw(IM!j(8W+pUplBxUH{hZh8gThSgH*SMGI-Lnw}BfJ5m={U8d}6Nf-?I~wNzjT zs9cqxWU9;O=9&a`D%T?@8ISsq0Te-n3Q7c7tJ8ET}4X`wRU@T)%wi( z^-r&?Z&^38TT?C@K%Wca<@Fq^gjIL$*Zq#7se_oJo1>%nU?eIEmUju-0|F;t!THy<&^9~ zF@SC{6F|rN*|%%8FI1{@vUvEWFE6!l6>7O!-QL|zSlg9K(TAV+L2K=udf^@&q+_aU zcd5g0kqhHs#uO`ig>u5m+jXa2C^^kSpgi|H9Z-kr+QJk~rL~Be9XW9ZfC79102zVx zA3>W4ZDI$1NBN=hKl1bUyRr}C5#5}e#77&!x(J*ln^{3t51C&KxC#?I2SExoxb&zeXy_c~?KBHlqNn);X?F>g(tI4*(7d~||>j>C9| zZqCi&qpJ+h{PXk%rQ+>Z%#x6zu0~u#INl$&A#fz@{rz0g-gboL7RFYh(45TT0~_>6 zA$8kPJhPnMM5B@npPYROBF}`iEGaKRd zqbAV9^t@oy7!7s<*gk_?A3ZQI3Y)22^7d zH+lrMTQv+;2F`%QRl{UC<_45r)fi$~@%~>v|8v#@E&G=UJe&x~=l>qgagka{1U?J| z;Qk+zzajc3FNuIe;2a`w5vyoy%(-uu_KVJ?ok~d{Vg0M*n$@et94Wg0Ooq;h~ip+`93gTyUmS>uWS3oawaoxUxfyU(Y_5UC*vv&2I2GD&wUB zAb^_kf@J<9J)vO}tEH2`pvIp3vwdG9dbA%fL+|v6|3*Aw=9Z5;)DDM43~Y)h_a9#9 z(aq^;eAE==bfI@g0q&N0ejo&Yq58DQv!?9<53G%7C47`xBiSvGhm4z#wxpQ?UCVy9@qJT| zJz?EkYpj7-o@ZC;pnp&|Z%pEYD}g`(M*fVi_huTC9aKLaB0i{Xco~chh_6Y&1j;lC zp^;Wt7xMT2-ivpTZ6pF8c?4kn8{`m?|B|=qZ-Bf-{!0Et{y=_5eno!` z@)~_F@Z01Y^p`=tN?GM45s(OcU{{ obj.body }} diff --git a/archive/cransnews/templates/feeds/group_title.html b/archive/cransnews/templates/feeds/group_title.html new file mode 100644 index 00000000..91b32ca8 --- /dev/null +++ b/archive/cransnews/templates/feeds/group_title.html @@ -0,0 +1 @@ +{{ obj.title|safe }} diff --git a/archive/cransnews/urls.py b/archive/cransnews/urls.py new file mode 100644 index 00000000..305a6e62 --- /dev/null +++ b/archive/cransnews/urls.py @@ -0,0 +1,18 @@ +from django.conf.urls.defaults import * +from cransnews.news2rss import DernieresAnnonces, LatestMessages + +feeds = { + 'group': LatestMessages, + 'annonces': DernieresAnnonces, +} + + +urlpatterns = patterns('', + # Example: + # (r'^cransnews/', include('cransnews.foo.urls')), + #(r'^rss/(?P[\.\w]+)', 'news2rss.views.news2rss'), + (r'^rss/(?P.*)/$', 'django.contrib.syndication.views.feed', {'feed_dict': feeds}), + + # Uncomment this for admin: +# (r'^admin/', include('django.contrib.admin.urls')), +) diff --git a/archive/diffusion-news b/archive/diffusion-news new file mode 100755 index 00000000..0703cb1d --- /dev/null +++ b/archive/diffusion-news @@ -0,0 +1,19 @@ +#! /bin/sh + +sed -e 1d | \ +formail -b -f -I "Received" \ + -I "Sender" \ + -I "DKIM-Signature" \ + -I "DomainKey-Signature" \ + -I "X-Google-Sender-Auth" \ + -I "X-Original-To" \ + -I "Delivered-To" \ + -I "Date" \ + -I "To" \ + -I "Message-ID" \ + -I "X-Newsreader" \ + -I "Organization" \ + -I "Return-Path" \ + -A "Newsgroups: crans.general" \ + -A "Path: diffusion-news" | \ + postnews news.crans.org diff --git a/archive/dumpudp b/archive/dumpudp new file mode 100755 index 0000000000000000000000000000000000000000..4df9a2b8b9e146a6f0e047105bdfe66504320d8c GIT binary patch literal 16544 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 $LOGMAIL + +for DIST in $DISTRIB; do + + case $DIST in + + Debian) + # Adresse du miroir + MIRROR="rsync://ftp.de.debian.org/debian-cd" + # Architectures à exclure (à choisir parmi : + # alpha arm hppa i386 ia64 m68k mips mipsel powerpc s390 sparc) + ARCH_EXCLUDE="alpha arm hppa ia64 m68k mips mipsel s390" + # Fichiers/repertoires à exclude pour ces architectures + # de la forme "--exclude foo1$ARCH/ --exclude foo2$ARCH/ ... " + #ARCH_FR_EXCL="--exclude ${ARCH} " + # Exclusions supplémentaires + EXCLUDE="--exclude project --exclude bt-cd --exclude jigdo-cd \ + --exclude jigdo-dvd --exclude bt-dvd --exclude source \ + --exclude HEADER.html --exclude trace --exclude mkimage.log " + # A virer une fois les tests finis + for ARCH in $ARCH_EXCLUDE; do + EXCLUDE=$EXCLUDE"--exclude $ARCH " + done + PATHLOCAL=$PATHFTP"$DIST/" + ENTMAIL2="$DIST ($PATHLOCAL)\n======\n" + TAIL=15 # Pour le formattage du mail + ;; + + Fedora) + # Adresse du miroir + MIRROR="rsync://ftp.uvsq.fr/fedora/" + # Architectures à exclure (à choisir parmi : + # i386, x86-64) + ARCH_EXCLUDE="" + # Exclusions supplémentaires + EXCLUDE="--exclude development --exclude test --exclude updates \ + --exclude source --exclude debug --exclude os --exclude SRPMS \ + --exclude *-rescuecd.iso --exclude *-disc* " + for ARCH in $ARCH_EXCLUDE; do + EXCLUDE=$EXCLUDE"--exclude $ARCH " + done + PATHLOCAL=$PATHFTP"$DIST/" + ENTMAIL2="$DIST ($PATHLOCAL)\n======\n" + TAIL=3 + ;; + + Gentoo) + # Adresse du miroir + MIRROR="rsync://ftp.belnet.be/gentoo/releases/" + # Architectures à exclure (à choisir parmi : + # alpha, amd64, hppa, ia64, ppc, ppc64, sparc, x86) + ARCH_EXCLUDE="alpha hppa ia64 ppc ppc64 sparc" + # Exclusions supplémentaires + EXCLUDE="--exclude historical --exclude mips --exclude stages \ + --exclude packagecd --exclude snapshots --exclude livecd " + for ARCH in $ARCH_EXCLUDE; do + EXCLUDE=$EXCLUDE"--exclude $ARCH " + done + PATHLOCAL=$PATHFTP"$DIST/" + ENTMAIL2="$DIST ($PATHLOCAL)\n======\n" + TAIL=21 + ;; + + Knoppix) + # Adresse du miroir + MIRROR="rsync://ftp.belnet.be/packages/knoppix/" + # Architectures à exclure (à choisir parmi : + # alpha, amd64, hppa, ia64, ppc, ppc64, sparc, x86) + ARCH_EXCLUDE="" + # Exclusions supplémentaires + EXCLUDE="--exclude contrib --exclude docs --exclude dvd \ + --exclude knoppix-cover --exclude knoppix-customize \ + --exclude knoppix-dvd --exclude packages-dvd.txt \ + --exclude knoppix-vortrag-als2000 --exclude md5-old --exclude qemu-0.8.1 \ + --exclude qemu-0.8.1-windows-README.txt --exclude *DE* " + for ARCH in $ARCH_EXCLUDE; do + EXCLUDE=$EXCLUDE"--exclude $ARCH " + done + PATHLOCAL=$PATHFTP"$DIST/" + ENTMAIL2="$DIST ($PATHLOCAL)\n=======\n" + TAIL=21 + ;; + + Ubuntu) + # Adresse du miroir + MIRROR="rsync://ftp.oleane.net/ubuntu-cd/" + # Architectures à exclure (à choisir parmi : + # amd64 i386 powerpc sparc) + ARCH_EXCLUDE="amd64 powerpc sparc" + # Fichiers/repertoires à exclude pour ces architectures + # de la forme "--exclude foo1$ARCH/ --exclude foo2$ARCH/ ... " + #ARCH_FR_EXCL="--exclude ${ARCH} " + # Exclusions supplémentaires + EXCLUDE="--exclude cdicons --exclude edubuntu --exclude favicon.ico \ + --exclude FOOTER.html --exclude HEADER.html --exclude jigit \ + --exclude releases --exclude ubuntu-server --exclude .trace \ + --exclude .htaccess --exclude .manifest " + # A virer une fois les tests finis + EXCLUDE=$EXCLUDE"--exclude kubuntu* --exclude xubuntu* --exclude ubuntu* " + for ARCH in $ARCH_EXCLUDE; do + EXCLUDE=$EXCLUDE"--exclude *-$ARCH.* " + done + PATHLOCAL=$PATHFTP"$DIST/" + ENTMAIL2="$DIST ($PATHLOCAL)\n======\n" + TAIL=8 + ;; + + esac + + umask 002 + rsync $RSYNCOPT $EXCLUDE $MIRROR $PATHLOCAL > $LOGRSYNC + ERRC=$? + cat $LOGRSYNC + # En cas d'erreur, on notifie avec le code de sortie. + if [ $ERRC != 0 ]; then + echo "Erreur $ERRC" + echo -e $ENTMAIL2 >> $LOGMAIL + echo -e "Erreur, le processus rsync a retourné le code $ERRC.\n\n" >> $LOGMAIL + else + # Si une mise à jour a été effectuée, on notifie. + tail -n +$TAIL $LOGRSYNC > $LOGTEMP + # Sortie de test + cat $LOGTEMP + STATUS=$(cat $LOGTEMP | wc -l) + if (($STATUS > 2)); then + echo -e $ENTMAIL2 >> $LOGMAIL + cat $LOGTEMP >> $LOGMAIL + echo -e "\n" >> $LOGMAIL + fi + fi + +#echo $STATUS + +done + +# Fonction d'envoi du mail de notification +mail_ftp() { + local FROM="From:FTP Public (Sila)" + local SUBJECT="Notification de synchronisation du FTP" + local RECIPIENT="" + local XMAILER="X-Mailer:Bash sync-ftp (by August')" + echo $1 | mail -a "$FROM" -a "$XMAILER" -s "$SUBJECT" $RECIPIENT < $1 +} + +# Envoi du mail de notification +LENGTH_MAIL=$(cat $LOGMAIL | wc -l) +if (($LENGTH_MAIL > 4)); then + echo -e $ENTMAIL3 >> $LOGMAIL + mail_ftp $LOGMAIL +fi + +echo $LENGTH_MAIL + +# Nettoyage des fichiers temporaires +rm -f $LOGRSYNC +rm -f $LOGTEMP +rm -f $LOGMAIL + +exit 0 diff --git a/archive/gestion/whos_pg.py b/archive/gestion/whos_pg.py new file mode 100755 index 00000000..8a02d3af --- /dev/null +++ b/archive/gestion/whos_pg.py @@ -0,0 +1,1305 @@ +#! /usr/bin/env python +# -*- coding: utf-8 -*- + +# Copyright (C) Frédéric Pauget +# Licence : GPLv2 + +u"""Ce script permet de recherche et d'afficher le détail d'une machine ou +d'un adhérent. + +Usage: %(prog)s [options] + +La chaine de recherche peut être : + * soit un terme unique, dans ce cas la recherche sera effectuée sur les +champs en bleu ci-dessous. + * soit du type "champ1=valeur1&champ2!=valeur2 ...", les résultats seront +alors limités aux entrées correspondantes à tous les critères. + +Les champs de recherche possibles sont : +%(champs_rech)s + +Recherche sur prise possible (utiliser uniquement ce champ dans ce cas). + +Les options de recherches sont : + * limitations sur l'affichage : + -a ou --adherent : limitation de l'affichage aux adhérents + -m ou --machine : limitation de l'affichage aux machines + -c ou --club : limitation de l'affichage aux clubs + -b ou --bornes : limitation de l'affichage aux bornes wifi + --crans : recherche uniquement les machines du crans + * options d'affichage : + -t ou --tech : affichages des infos techniques des machines +à la place des infos administratives dans les résumés. + -i ou --ipsec : montre la clef wifi (anciennement ipsec) des machines wifi + -l ou --limit= : limite du nombre de résultats pour utiliser +le mode d'affichage condensé au lieu du mode détaillé (défaut %(limit_aff_details)i) + -L ou --limit-historique= : limitation du nombre de lignes +d'historique affichées (défaut %(limit_aff_historique)i) + -d ou --limit-blacklist= : limitation du nombre de lignes +d'historique des déconnexions affichées (défaut %(limit_aff_blacklist)i) +""" + +try: + import sys,locale + + loc = locale.getdefaultlocale() + if loc[1]: + sys.reallysetdefaultencoding(loc[1]) +except: + pass + +base = None + +from time import strftime, localtime, time +from ldap_crans import is_actif, crans_ldap, ann_scol, AssociationCrans, hostname +from ldap_crans import MachineCrans, MachineWifi, BorneWifi +from ldap_crans import Adherent +from affich_tools import * +import user_tests +import subprocess, commands + +limit_aff_details = 1 +limit_aff_machines = 15 +limit_aff_historique = 4 +limit_aff_blacklist = 4 +aff_ipsec = 0 + +################################################################################ +### Fonctions utiles + +def indicatif (num): + """ + Sépare l'indicatif de nationalité du reste d'un numéro de téléphone + """ + if num[0:2] != '00': + return ('', num) + if num[2] == '1': + return ('1 '+num[3:6], num[6:]) + if num[2] in ['0','7']: + return (num[2], num[3:]) + # indicatifs nationaux à 2 chiffres + ids = [20, 27, 36, 86, 98] + ids.extend(range(30,35)) + ids.extend(range(39,42)) + ids.extend(range(43,50)) + ids.extend(range(51,59)) + ids.extend(range(60,67)) + ids.extend(range(81,85)) + ids.extend(range(90,96)) + if int(num[2:4]) in ids: + return (num[2:4], num[4:]) + return (num[2:5], num[5:]) + +def format_tel (num): + """ + Formate un numéro de téléphone + * Remplace un éventuel "00" au début par un "+" + * Insère des espaces pour que ce soit lisible + """ + res = '' + (indic, reste) = indicatif(num) + if indic != '': + res += '+' + indic + ' ' + l = len(reste) + if l%2 == 1: + res += reste[0] + ' ' + for i in range(l%2,l,2): + res += reste[i:i+2] + ' ' + return res + +################################################################################ + +def aff(qqch,mtech=0) : + """ Affichage de qqch. + qqch peut être une liste d'instances des classes adhérent ou machine + (un seul type dans la liste) dans ce cas : + * si la longueur de la liste est inférieure à limit_aff_details + affiche les propriétés détaillées de chaque élément. + * sinon résume dans un tabeau des principales propriétés + si qqch est une instance seul la traité comme une liste à une élément + Si mtech = 1 affiches les infomations techniques des machines plutot + qu'administratives dans le tableau des propriétés + """ + if type(qqch) != list : + qqch = [ qqch ] + + if len(qqch) > limit_aff_details : + t = qqch[0].idn + if t == 'aid': + cprint(adhers_brief(qqch)) + elif t == 'mid': + if mtech: + cprint(list_machines(qqch)) + else: + cprint(machines_brief(qqch)) + elif t == 'cid': + cprint(clubs_brief(qqch)) + else : + i = 0 + for c in qqch : + t = c.idn + if i: cprint(u'='*80, 'cyan') + i = 1 + if t == 'aid': + cprint(adher_details(c).strip()) + elif t == 'mid': + cprint(machine_details(c).strip()) + elif t == 'cid': + cprint(club_details(c).strip()) + + # affiche le nombre de résultats + if len(qqch) > 1: + cprint(u"Total: %d" % len(qqch)) + +def adhers_brief(adhers) : + """ + Formatage sous forme de tableau des infos sur la liste d'adhérent fournie : + * aid + * prénom nom + * chambre + * machines + """ + data = [] + + # Copie locale triée par (nom, prenom) + adhers = adhers[:] + adhers.sort(lambda x, y: cmp((x.nom(), x.prenom()), (y.nom(), y.prenom()))) + + for a in adhers: + ## État administratif + ok = u'\x1b[1;32mo\x1b[1;0m' + ook = u'\x1b[1;32mO\x1b[1;0m' + nok = u'\x1b[1;31mn\x1b[1;0m' + # Paiement + if ann_scol in a.paiement(): + if 'p' in a.controle(): paid = ook + else: paid = ok + elif isinstance(a,Adherent) and not a.adherentPayant(): paid = coul('G', 'bleu') + else: paid = nok + + # Précablage + if ann_scol+1 in a.paiement() : paid = coul(paid,'f_vert') + + # Carte d'étudiant + if ann_scol in a.carteEtudiant(): + if 'c' in a.controle(): carte = ook + else: carte = ok + else : carte = nok + + machines = '' + # Récupération des machines + if len(adhers) <= limit_aff_machines: + for machine in a.machines() : + nom = machine.nom().split('.')[0] + if machine.blacklist_actif() : k = 'rouge' + elif isinstance(machine, MachineWifi): k = 'cyan' + else : k= '' + if machines : machines += ', ' + coul(nom,k) + else : machines = coul(nom,k) + else: + machines = None + # Données + if len(adhers) <= limit_aff_machines: + data.append([a.id(), a.Nom(), a.chbre(), paid, carte, machines]) + else: + data.append([a.id(), a.Nom(), a.chbre(), paid, carte]) + + if len(adhers) <= limit_aff_machines: + return u"Machines en rouge = machines avec limitation de services\n" + \ + u"P : paiement année en cours, le fond vert indique le précâblage (G bleu = inscription gratuite)\n" + \ + u"C : carte d'étudiant année en cours\n" + \ + tableau(data, + titre = [u'aid', u'Prénom Nom', u'Chbre', u'P', u'C', u'Machines'], + largeur = [5, 30, 5, 1, 1, '*'], + alignement = ['d', 'c', 'g', 'c', 'c', 'c']) + else: + return u"Machines en rouge = machines avec limitation de services\n" + \ + u"P : paiement année en cours, le fond vert indique le précâblage (G bleu = inscription gratuite)\n" + \ + u"C : carte d'étudiant année en cours\n" + \ + tableau(data, + titre = [u'aid', u'Prénom Nom', u'Chbre', u'P', u'C'], + largeur = [5, '*', 5, 1, 1], + alignement = ['d', 'c', 'g', 'c', 'c']) + +def machines_brief(machines) : + """ + Formatage sous forme d'un tableau des propriétés de la liste de machine : + * mid + * type (fixe ou wifi, born) + * nom + * adresse IP + * adresse MAC + * si blacklistée + """ + data = [] + + # Copie locale triée par nom + machines = machines[:] + machines.sort(lambda x, y: cmp(x.nom(), y.nom())) + + for m in machines : + t, bl = __bases_machines(m) + + # Propriétaire + a = m.proprietaire() + p = a.Nom() + + # A jour administrativement + if ann_scol not in a.paiement() or ann_scol not in a.carteEtudiant(): + if isinstance(a, Adherent) and not a.adherentPayant(): + p = coul(p, 'bleu') + else: + p = coul(p,'rouge') + + # Données + data.append([m.id() , t, m.nom().split('.')[0], p, a.chbre(), bl]) + + return u"Le propriétaire en rouge signale un problème administratif, en bleu une inscription gratuite\n" + \ + tableau(data, + titre = [u'mid', u'Type', u'Nom de machine', u'Propriétaire', u'Chbre', u'Limitation'], + largeur = [5, 4, 18, '*', 5, 10], + alignement = ['d', 'c', 'c', 'c', 'g', 'c']) + +def clubs_brief(clubs) : + """ + Formatage sous forme de tableau des infos sur la liste de clubs fournie : + * cid + * nom + * local + * machines + """ + data = [] + + # Copie locale triée par Nom + clubs = clubs[:] + clubs.sort(lambda x, y: cmp(x.Nom(), y.Nom())) + + for c in clubs : + ## État administratif + ok = u'\x1b[1;32mo\x1b[1;0m' + ook = u'\x1b[1;32mO\x1b[1;0m' + nok = u'\x1b[1;31mn\x1b[1;0m' + # Paiement + if ann_scol in c.paiement(): + if 'p' in c.controle(): paid = ook + else: paid = ok + else : paid = nok + + # Précablage + if ann_scol+1 in c.paiement() : paid = coul(paid,'f_vert') + + machines = '' + # Récupération des machines + for machine in c.machines() : + nom = machine.nom().split('.')[0] + if machine.blacklist_actif() : k = 'rouge' + else : k= '' + if machines : machines += ', ' + coul(nom,k) + else : machines = coul(nom,k) + + # Responsable + try: + resp = c.responsable().Nom() + except ValueError, e: + resp = e + + # Données + data.append([c.id() , c.Nom(), c.local(), paid, resp, machines]) + + return u"Machines en rouge = machines avec limitation de services\n" + \ + u"P : signature charte année en cours, le fond vert indique le précâblage\n" + \ + tableau(data, + titre = [u'cid', u'Nom ', u'Local', u'P', u'Responsable', u'Machines'], + largeur = [5, '*', 6, 1, 21, 15], + alignement = ['d', 'c', 'g', 'c', 'c', 'c']) + + +def list_machines(machines) : + """ + Formatage sous forme d'un tableau des propriétés de la liste de machine : + * mid + * type (fixe ou wifi) + * nom + * adresse IP + * adresse MAC + * si blacklistée + """ + data = [] + + # Copie locale triée par nom + machines = machines[:] + machines.sort(lambda x, y: cmp(x.nom(), y.nom())) + + for m in machines : + t, bl = __bases_machines(m) + + # Données + data.append([m.id(), t, m.nom().split('.')[0], m.ip(), m.mac(), bl]) + + return tableau(data, + titre = [u'mid', u'Type', u'Nom de machine', u'Adresse IP', u'Adresse MAC', u'Limitation'], + largeur = [5, 4, '*', 17, 19, 10], + alignement = ['d', 'c', 'c', 'c', 'c', 'c']) + +def list_bornes(bornes) : + """ + Formatage sous forme d'un tableau des propriétés de la liste de bornes wifi : + * mid + * nom + * adresse IP + * adresse MAC + * État + * puissance + * canal + * lieu (la première remarque en fait) + """ + data = [] + + # Copie locale triée par nom + bornes = bornes[:] + bornes.sort(lambda x, y: cmp(x.nom(), y.nom())) + + ok = u'\x1b[1;32mu\x1b[1;0m' + nok = u'\x1b[1;31md\x1b[1;0m' + for b in bornes : + t, bl = __bases_machines(b) + if t != 'born' : continue + + # Données + try : + l = [x for x in b.info() if not x[0]=='<'][0] + if len(l) > 11 : + l = l[0:11] + except : + l = u'????' + + if borne_etat(b.nom()): + etat = ok + else: + etat = nok + + if '-' in b.puissance() : + puiss = coul(b.puissance(),'rouge') + else : + puiss = b.puissance() + + data.append([b.id(), b.nom().split('.')[0], b.ip(), b.mac(), etat, b.canal(), puiss, b.prise(), l]) + + return u"Can=canaux, P=puissance, E=état\n" + \ + tableau(data, + titre = [u'mid', u'Nom', u'Adresse IP', u'Adresse MAC', u'E', u'Can', u'P', u'Pris', u'Lieu'], + largeur = [5, 13, 15, 17, 1, 5, 3, 4, '*'], + alignement = ['d', 'c', 'c', 'c', 'c', 'c', 'c', 'g', 'c']) + +def adher_details(adher) : + """ + Affichage du détail des propriétés d'un adhérent + """ + f=u'' + # Aid + f+= coul(u'aid=%s ' % adher.id() ,'bleu') + # Nom, prenom + f += coul(u'Nom : ','gras') + "%s\n" % adher.Nom() + + # Mail + GL = RMH = u'' + if adher.mail().find(u'@')!=-1 or adher.mail() == '': + f += coul(u'Adresse mail : ','gras') + if adher.mail() == '': + f += coul('INCONNUE','rouge') + elif adher.mail_invalide(): + f += coul(adher.mail(),'rouge') + else: + f += adher.mail() + f += "\n" + else : + f += coul(u'Login : ','gras') + if adher.mail_invalide(): + f += coul(adher.mail(),'rouge') + else: + f += adher.mail() + f += "\t" + # controurneGreylisting + if not adher.contourneGreylist(): + GL = u' (%s)'%coul(u'GreyList','gris') + if adher.rewriteMailHeaders(): + RMH = u' (%s)'%coul(u'réécriture en-têtes mail','gris') + + alias = u', '.join([adher.canonical_alias()] + adher.alias()) + if alias: + if alias[0] == u',': + # Canonical étéait vide + alias = alias[2:] + f += coul(u'Alias : ','gras') + alias + f += GL + f += RMH + f += u'\n' + try: + forward = file("/home/%s/.forward" % adher.compte()).readlines() + if len(forward) > 1: + forward = forward[0].strip() + u" ...\n" + elif len(forward) == 1: + forward = forward[0].strip() + u"\n" + if forward: + f += coul(u'Redirection : ', 'gras') + forward + except IOError, e: + # Pas de .forward, ou .forward privé... on laisse tomber + pass + f += coul(u'Dernière connexion : ', 'gras') + timestamp = adher.derniereConnexion() + if timestamp == 0: + f += coul(u'Jamais', 'rouge') + else: + f += coul(strftime('%d/%m/%Y %H:%M', localtime(timestamp)), + time()-timestamp > 32*24*3600 and 'rouge' or '') + f += u"\n" + + # État administratif + f += coul("Date d'inscription : ", "gras") + f += strftime('%d/%m/%Y %H:%M', localtime(adher.dateInscription())) + f += coul(u'\nÉtat administratif : ','gras') + jour=1 + if ann_scol not in adher.carteEtudiant() : + f += coul(u"manque carte d'étudiant",'violet') + jour = 0 + if ann_scol not in adher.paiement() : + if not jour : f += ' et ' + if isinstance(adher, Adherent) and not adher.adherentPayant(): + f += coul(u"inscription gratuite ", 'bleu') + else: + f += coul(u"cotisation %s/%d non réglée"% (ann_scol, ann_scol+1 ),'violet') + jour = 0 + + if jour : + f += coul(u"à jour",'vert') + f += '\n' + + # Telephone + tel = adher.tel() + if tel != 'inconnu' : + f += coul(u'Numéro de téléphone : ','gras') + "%s\n" % format_tel(tel).ljust(12) + + # Adresse + chbre = adher.chbre() + if chbre == 'EXT' : + # Adhérent extérieur + addr = adher.adresse() + if addr[0] : + f += coul(u'Adresse : ','gras') + f += addr[0] + u'\n' + if addr[1] != ' ' : f += u' ' + addr[1] + u'\n' + f+= u' ' + addr[2] + u' ' + addr[3] + '\n' + elif chbre == '????' : + f += coul(u'Chambre invalide\n','violet') + else : + # Chambre + prise (d'après annuaire) + etat, vlans, cablage = prise_etat(adher.chbre()) + f += coul(u'Chambre : ','gras') + u"%s " % chbre + f += u'(%s)' % etat + f += u'\n' + f += coul(u'Brassage : ','gras') + f += cablage + f += u'\n' + # VLAN + if vlans : + f += coul(u'VLAN : ','gras') + u'%s' % vlans + f += u'\n' + + # Études + if adher.etudes(1).isdigit() : + f += coul(u'Études : ','gras')+ "%s %s%s\n" % \ + ( adher.etudes(0), adher.etudes(1), adher.etudes(2) ) + elif adher.etudes(0) : + f += coul(u'Études : ','gras')+ "%s %s %s\n" % \ + ( adher.etudes(0), adher.etudes(1), adher.etudes(2) ) + + # Solde + solde = adher.solde() + if solde : + f += coul(u'Solde : ','gras') + if solde < 0 : + f+= coul(str(solde).replace('.',','),'rouge') + else : + f += str(solde).replace('.',',') + f += u" Euros\n" + + # Role dans l'assoce + d = adher.droits() + if d : + f += coul(u"Droits sur les serveurs : ",'gras') + ', '.join(d) + if adher.droitsGeles(): + f += coul(u" (droits gelés car pas cotisé cette année)",'bleu') + f += u'\n' + + # Paiement + if adher.paiement() : + if len(adher.paiement()) == 1 : + f += coul(u'Cotisation payée pour l\'année scolaire :','gras') + else : + f += coul(u'Cotisation payée pour les années scolaires :','gras') + g = u'' + for an in adher.paiement() : g += u" %i-%i" % ( an, an+1 ) + if len(g) > 35 : f += '\n\t' + f += g + if 'p' in adher.controle(): f += coul(u' (OK)', 'vert') + f += u'\n' + + # Cartes d'étudiant fournie + if adher.carteEtudiant() : + if len(adher.carteEtudiant()) == 1 : + f += coul(u"Carte d'étudiant fournie pour l'année scolaire :",'gras') + else : + f += coul(u"Carte d'étudiant fournie pour les années scolaires :",'gras') + g = u'' + for an in adher.carteEtudiant() : g += u" %i-%i" % ( an, an+1 ) + if len(g) > 25 : f += '\n\t' + f += g + if 'c' in adher.controle(): f += coul(u' (OK)', 'vert') + f += u'\n' + + f += _blacklist(adher) + f += _info(adher) + f += _hist(adher) + + # Formatage des machines aussi + f += coul(u'Machine(s) : ','gras') + m = adher.machines() + if m : + f += u'\n' + list_machines(m) + else : + f += u'aucune' + + return f + +clients_ipsec = None +def ipsec_ok(machine) : + """Indique si une machine est correctement authentifiée""" + return False + +def machine_details(machine) : + """ + Formatage du détail des propriétés d'une machine + """ + f = '' + f+= coul(u'mid=%s ' % machine.id(),'bleu') + + # Type de machine + if isinstance(machine, MachineWifi): a = 'Machine wifi' + elif isinstance(machine, BorneWifi): a = 'Borne wifi' + else: a = 'Machine fixe' + f += coul(a + ' : ', 'gras') + + f+= "%s\n" % machine.nom() + + # Alias ? + alias = machine.alias() + if alias : + f += coul(u'Alias : ' ,'gras') + ', '.join(alias) + f+= '\n' + + f+= coul(u'IP : ','gras') + "%s\t\t" %machine.ip() + f+= coul(u'MAC : ','gras') + "%s\n" %machine.mac() + + # Propriétaire + f+= coul(u'Propriétaire : ','gras') + try : + f += machine.proprio + coul(' (adhérent détruit)', 'jaune') + a = AssociationCrans() + except : + a = machine.proprietaire() + f += "%s" % a.Nom() + if a.chbre() in ['EXT', '????']: + f += ' (%s = %s)' % (a.idn, a.id()) + elif a.chbre() != 'CRA': + f += " (%s)" % a.chbre() + else : + f += coul(u'\t\tPrise : ','gras') + machine.prise() + f+= '\n' + + if isinstance(machine, MachineCrans): + n = machine.nombrePrises() + if n >= 0: + f += coul(u'Nombre de prises : ', 'gras') + f += "%d\n" % n + + # Adhérent blacklisté ? + bl = a.blacklist_actif() + if bl : + f += coul(u'Restrictions sur adhérent : ','gras') + f += coul(u', '.join(bl),'rouge') + f += '\n' + + # Borne wifi + if isinstance(machine, BorneWifi): + f += coul(u'Hotspot : ', 'gras') + f += machine.hotspot() and 'oui' or 'non' + position = machine.position() + if position: + f += coul(u'\t\t\tCoordonnées : ', 'gras') + f += u'%s°N, %s°E\n' % position + else: + f += '\n' + + if (machine.prise() != 'N/A'): + try: + f += coul(u'VLANs : ', 'gras') + from hptools import sw_prise + f += ', '.join(sw_prise(machine.prise()).vlans()) + f += '\n' + except: + pass + + f += coul(u'Puissance : ','gras') + u"%4.d" % int(machine.puissance()) + f += coul(u'\tCanaux : ', 'gras') + machine.canal() + f += coul(u'\tÉtat : ', 'gras') + if borne_etat(machine.nom()): + f += coul(u'borne active', 'vert') + f += '\n' + canal_clients = borne_clients_canal(machine.nom()) + clients = canal_clients["mac-rssi"] + canal = canal_clients["canal"] + f += coul(u'\t Canal courant : ', 'gras') + u"%d" % canal + f += "\n" + # S'il y a des clients, on les liste + if clients and base: + f += coul(u'Clients : \n','gras') + for (client, rssi) in clients: + # On va chercher le nom correspondant à l'adresse MAC + res = base.search("mac=%s" % client)['machine'] + authentification="" + if not res: + client_nom = '????' + client_chbre = '????' + else: + client_nom = ", ".join(["%s [%s]" % (x.nom().split(".")[0], + x.proprietaire().Nom()) for x in res]) + # On va regarder si le client est authentifié + auth_ok = ipsec_ok(x) + if auth_ok != None: + if auth_ok: + authentification = "; IPSec: %s" % OK + else: + authentification = "; IPSec: %s" % ERREUR + client_chbre = " ".join(["%s " % (x.proprietaire().chbre()) for x in res]) + # On va choisir la bonne couleur pour le RSSI + if rssi > -88: + coul_rssi = 'vert' + elif rssi > -93: + coul_rssi = 'jaune' + else: + coul_rssi = 'rouge' + f += u' %s (%s Chbre : %s) (RSSI: %s%s)\n' % (client, client_nom, client_chbre, + coul("%d" % rssi, coul_rssi), + authentification) + else: + f += coul(u'borne éteinte','rouge') + f += '\n' + if machine.nvram(): + f += coul(u'NVRAM : ', 'gras') + f += ', '.join(machine.nvram()) + '\n' + + if aff_ipsec and isinstance(machine, MachineWifi): + f += coul(u'Clef WiFi : ','gras') + machine.ipsec() + f += '\n' + + # Ports spéciaux + if machine.portTCPin(): + f += coul(u'Ports TCP ouvert ext->machine : ','gras') + ' '.join(machine.portTCPin()) + '\n' + if machine.portTCPout(): + f += coul(u'Ports TCP ouvert machine->ext : ','gras') + ' '.join(machine.portTCPout()) + '\n' + if machine.portUDPin(): + f += coul(u'Ports UDP ouvert ext->machine : ','gras') + ' '.join(machine.portUDPin()) + '\n' + if machine.portUDPout(): + f += coul(u'Ports UDP ouvert machine->ext : ','gras') + ' '.join(machine.portUDPout()) + '\n' + + # Exemption d'upload + if machine.exempt() : + f += coul(u'Upload exempté vers : ','gras') + ', '.join(machine.exempt()) + '\n' + + f += _blacklist(machine) + f += _info(machine) + f += _hist(machine) + + return f + +def club_details(club) : + """ + Affichage du détail des propriétés d'un club + """ + f='' + # Cid + f+= coul(u'cid=%s ' % club.id() ,'bleu') + # Nom + f += coul(u'Nom : ','gras') + "%s\n" % club.Nom() + + # responsale + f += coul(u'Responsable : ','gras') + "%s\n" % club.responsable().Nom() + + # Imprimeurs + if len(club.imprimeurs()) > 0: + f += (coul(u'Imprimeurs : ', 'gras') + "%s\n" % ', '.join(map(lambda x: + club.search("aid=%s" % x)['adherent'][0].Nom(), club.imprimeurs()))) + + # État administratif + f += coul(u'État administratif : ','gras') + jour=1 + if ann_scol not in club.paiement() : + if not jour : f += ' et ' + f += coul(u"charte %s/%d non signée"% (ann_scol, ann_scol+1 ),'violet') + jour = 0 + + if jour : + f += coul(u"à jour",'vert') + f += '\n' + + # Chambre + prise + etat, vlans, cablage = prise_etat(club.chbre()) + f += coul(u'Local : ','gras') + u"%s " % club.local() + f += u'(%s)' % etat + f += u'\n' + f += coul(u'Brassage : ','gras') + f += cablage + f += u'\n' + # VLAN + if vlans : + f += coul(u'VLAN : ','gras') + u'%s' % vlans + f += u'\n' + + # Paiement + if club.paiement() : + f += coul(u'Charte signée pour les années scolaires :','gras') + g = '' + for an in club.paiement() : g += " %i-%i" % ( an, an+1 ) + if len(g) > 35 : f += '\n\t' + f += g + if 'p' in club.controle(): f += coul(u' (OK)', 'vert') + f += '\n' + + login = club.compte() + if login : + f += coul(u'Login : ','gras') + login + alias = club.alias() + if alias : + f += coul(u'\tAlias : ','gras') + ', '.join(alias) + f+= u'\n' + + # Solde + solde = club.solde() + if solde: + f += coul(u'Solde : ', 'gras') + if solde < 0: + f+= coul(str(solde).replace('.', ','), 'rouge') + else: + f += str(solde).replace('.', ',') + f += u" Euros\n" + + f += _blacklist(club) + f += _info(club) + f += _hist(club) + + # Formatage des machines aussi + f += coul(u'Machine(s) : ','gras') + m = club.machines() + if m : + f += '\n' + list_machines(m) + else : + f += 'aucune' + + return f + +########################################### +# Fonctions annexes de formatage de données + +def _blacklist(clas): + """ Formatage blackliste de la classe fournie """ + if limit_aff_blacklist == 0: return '' + f = u'' + bl = clas.blacklist() + bl.reverse() + nb = 0 + for event in bl: + nb += 1 + if nb > limit_aff_blacklist: break + if is_actif(event): + # Colorisation si sanction en cours + c = 'rouge' + else : + c = 'blanc' + event = event.split('$') + dates = strftime('%d/%m/%Y %H:%M', localtime(int(event[0]))) + if event[1] == '-': + dates = u'à partir du %s' % dates + else: + dates = u'du %s au ' % dates + dates += strftime('%d/%m/%Y %H:%M', localtime(int(event[1]))) + f += u"%s\n\t " % coul(u'%s : %s [%s]' % (dates, event[2], event[3]), c) + + f = f[:-6] # suppression des espaces superflus + + if len(bl) > limit_aff_blacklist: + f += ' [...]\n' + + if f: + return coul(u'Blackliste : ', 'gras') + f + else: + return '' + +def _info(clas) : + """ Formatage des remarques de la classe fournie """ + f= u'' + c = clas.info() + if c : + f += coul(u'Remarque :\n ' ,'gras') + f += u'\n '.join(c) + f += u'\n' + return f + +def _hist(clas) : + """ Formatage de l'historique de la classe fournie """ + if limit_aff_historique==0 : return '' + f=u'' + h = clas.historique() + h.reverse() + if h : + f += coul(u'Historique : ','gras') + for i in range(0,limit_aff_historique) : + try : + a = h[i] # Produit une erreur si i trop grand + if i !=0 : f += ' ' + try: + # on force l'encodage ici sinon il est fait au moment de l'impression a + # l'ecran et il empeche l'affichage de toutes les infos + f += u'%s\n' % a + except Exception, e: + if debug: + f += coul(u'*** non affichable [%s] ***\n' % str(e), 'rouge') + else: + f += coul(u'*** non affichable ***\n', 'rouge') + except : + break + try : + if h[i+1] : f += ' [...]\n' + except : + None + + return f + +def __bases_machines(m) : + """ Retourne [ type de la machines, blacklist ] """ + #Type + if isinstance(m, MachineWifi): t = 'wifi' + elif isinstance(m, BorneWifi): t = 'born' + else : t='fixe' + + # Déconnectée ? + b = m.blacklist_actif() + if not b : + bl = '-' + elif len(b) == 1 : + bl = coul(b[0],'rouge') + else : + bl = coul(u'cf détails','rouge') + + return t , bl + +def borne_etat(borne) : + """Renvoie vrai si la borne est up, faux sinon""" + # On utilise fping, en cas d'erreur, on considere + # que la borne est down (alors qu'elle peut simplement + # ne pas exister) + try: + retour = os.system("fping -q -c 1 %s > /dev/null 2> /dev/null" % borne) + return (retour == 0) + except: + return False + +def borne_clients_canal(borne) : + """Renvoie la liste des adresses MAC associées à la borne ainsi que le canal. + + Chaque adresse MAC est en fait contenue dans un couple comprenant + l'adresse MAC et le RSSI du client associé. + + On en profite pour renvoyer également le canal en cours de la + borne. On fait cela dans la même fonction car cela évite de faire + deux connexions ssh (ce qui est fort coûteux). + + Au final, on renvoie un dictionnaire + - mac-rssi: une liste de couples (MAC, RSSI) + - canal: le canal en cours + """ + macs = [] + canal = -1 + return {"canal": canal, "mac-rssi": macs} # Suite à réimplémenter + # Uniquement possible pour les admins et si on a la clef + for clef in ["/etc/wifi/ssh/wifi","/usr/scripts/gestion/clef-wifi"]: + if os.path.isfile(clef) and user_tests.isadm(): + try: + wl = subprocess.Popen("ssh -o StrictHostKeyChecking=no -i %s root@%s 'cat /tmp/auth-mac.dump ; echo -n \"CANAL \" ; /usr/sbin/nvram get wl0_channel'" % (clef, borne), shell=True, stdin=subprocess.PIPE, stdout=subprocess.PIPE, stderr=subprocess.PIPE, close_fds=True) + wl.stdin.close() + for line in wl.stdout.readlines(): + print 'coucou' + print line + # Chaque ligne est de la forme + # 00:11:22:33:44:55 -20 + line = line.strip().split() + if line[0] == "CANAL": + canal = int(line[-1]) + else: + macs.append((line[0].strip(), int(line[1].strip()))) + except: + pass + break # Pas la peine d'essayer une autre clef + return {"canal": canal, "mac-rssi": macs} + +def prise_etat(chbre) : + """ + Retoune un triplet contenant l'état de la prise associée à la [chbre], + les VLANs activés ainsi que l'état du brassage. + """ + f = u'' + vlans = u'' + cablage = u'' + try: + # On met aussi l'état + from hptools import sw_chbre, ConversationError + import annuaires_pg + prise = sw_chbre(chbre) + vlans += ', '.join(prise.vlans()) + if annuaires_pg.is_crans(chbre[0],chbre[1:]) : + cablage += coul(u'Cr@ns','bleu') + else : + cablage += coul(u'CROUS','jaune') + if annuaires_pg.is_connected(chbre[0],chbre[1:]) : + cablage += u'.' + else : + cablage += u', ' + coul(u'cablage non effectué !','rouge') + f += u'prise %s' % prise.prise_brute + rows, cols = get_screen_size() + if prise.is_up() : + f += u', ' + coul(u'machine branchée','vert') + reste_cols = cols - 45 + f+=', ' + macs = prise.show_prise_mac() + if len(macs) == 0: + if reste_cols < 20 : + # Faut aller à la ligne + f += u'\n ' + f += coul(u'aucune MAC détectée', 'jaune') + else: + if len(macs) == 1 and reste_cols > 25 : + # Une seule mac et on a assez de place + f += u"MAC: %s" % macs[0] + else : + # On va à la ligne + # Combien d'adresses MAC peut-on mettre par ligne ? + # Une adresse MAC =~ 20 caracteres + cols -= 17 # On met 15espaces devant chaque ligne + parligne = int(cols/20) + count = 0 + while len(macs) > 0: + if count % parligne == 0: + f += u'\n MACs: ' + else: + f += u', ' + f += u"%s" % macs.pop() + count += 1 + elif not prise.is_enable() : + f+= u', ' + coul(u'prise désactivée','rouge') + else : + f+= u', activée, lien non détecté' + try: + import annuaires_pg + extra_info = annuaires_pg.chbre_commentaire(chbre[0],chbre[1:]).decode('utf-8') + if extra_info: + f += u'\n' + ' '*10 + extra_info + except ValueError: + raise + except ConversationError, r: + # Switch non manageable ou down + f += ', ' + f+= {'Unknown host (No such file or directory)' : + u'switch non manageable', + 'Failure in sendto (Operation not permitted)' : + u'infos prise non dispo : filtre vers adm par fw', + 'sh: line 1: command not found' : + u'infos prise non dispo depuis cette machine' + }.get(r.args[0],r.args[0]) + except ValueError, r : + f = r + except : + f = u'infos prise non dispo : erreur interne' + return f, vlans, cablage + +############################################################################## +## Partie dévolue au système de recherche + +def __usage_brief(err='') : + """ Message d'erreur """ + if err : cprint(err,'gras') + cprint(u"Pour obtenir de l'aide sur l'utilisation de ce programme utilisez l'option -h") + sys.exit(2) + +def __usage() : + """ Comment ca marche ? """ + liste = [] + accu = "" + longueur = 0 + + # Champs automatiques + champs = [] + for c in base.auto_search_champs.values(): + for champ in c: + if champ not in champs: + champs.append(champ) + for champ in champs: + coul_champ = coul(champ, "bleu") + if accu == "": + accu = coul_champ + longueur = len(champ) + elif longueur + 2 + len(champ) < 80: + longueur += 2 + len(champ) + accu += ", " + coul_champ + else: + liste.append(accu) + accu = coul_champ + longueur = len(champ) + + # Champs manuels + champs = [] + for c in base.non_auto_search_champs.values(): + for champ in c: + if champ not in champs: + champs.append(champ) + for champ in champs: + if longueur + 2 + len(champ) < 80: + longueur += 2 + len(champ) + accu += ", " + champ + else: + liste.append(accu) + accu = champ + longueur = len(champ) + + # Dernière ligne + liste.append(accu) + + cprint(__doc__ % { 'prog': sys.argv[0].split('/')[-1].split('.')[0], + 'champs_rech': '\n'.join(liste), + 'limit_aff_details': limit_aff_details, + 'limit_aff_historique': limit_aff_historique, + 'limit_aff_blacklist': limit_aff_blacklist }) + sys.exit(0) + +def __recherche() : + """ + Recherche et affichage des résultats à partir des options founies (sys.argv) + """ + global aff_ipsec, limit_aff_details, limit_aff_historique, limit_aff_blacklist, debug + + # Récupération des options + if len(sys.argv) == 1 : + # Pas d'option fournie + __usage_brief() + + try : + options, arg = getopt.getopt(sys.argv[1:], 'hamctbil:L:d:', [ 'debug', 'help', 'adherent', 'machine', 'club' , 'tech', 'bornes', 'limit=', 'limit-historique=', 'limit-blacklist=', 'ipsec', 'crans' ]) + except getopt.error, msg : + __usage_brief(unicode(msg)) + + + # Traitement des options + only_adh=0 + only_mac=0 + only_club=0 + only_bornes=0 + only_crans=0 + mtech = 0 + + for opt, val in options : + if opt == '-h' or opt=='--help' : + __usage() + elif opt =='--debug' : + # Mode debug + debug = 1 + elif opt == '-l' or opt =='--limit': + # Passage mode condensé, mode détaillé + try : limit_aff_details = int(val) + except : + __usage_brief(u'Valeur du paramètre %s incorrect (doit être un entier positif)' % opt) + elif opt == '-L' or opt =='--limit-historique': + # Limitation du nombre de lignes d'historique + try : limit_aff_historique = int(val) + except : + __usage_brief(u'Valeur du paramètre %s incorrect (doit être un entier positif)' % opt) + elif opt == '-d' or opt =='--limit-blacklist': + # Limitation du nombre de lignes d'historique + try : limit_aff_blacklist = int(val) + except : + __usage_brief(u'Valeur du paramètre %s incorrect (doit être un entier positif)' % opt) + elif opt in [ '-a', '--adherent' ] : + only_adh = 1 + cprint(u"Affichage limité aux adhérents.") + elif opt in [ '-m', '--machine' ] : + only_mac = 1 + cprint(u"Affichage limité aux machines.") + elif opt in [ '-c', '--club' ] : + only_club = 1 + cprint(u"Affichage limité aux clubs.") + elif opt == '--crans' : + only_crans = 1 + mtech = 1 + cprint(u"Affichage limité aux machines du crans.") + elif opt in [ '-b', '--bornes' ] : + only_bornes = 1 + cprint(u"Affichage limité aux bornes wifi.") + # On va tenter de limiter un peu la recherche + if not arg : + # Recherche initiale sans critère + arg = [ 'canal=*&host=*.crans.org'] + elif arg[0].find('=')!=-1 : + # Recherche avec critères + arg += [ '&canal=*' ] + elif opt in [ '-t', '--tech' ] : + # Format affichage des machines + mtech = 1 + elif opt in [ '-i', '--ipsec' ] : + # Affichage des clefs ipsec + aff_ipsec = 1 + + if only_adh + only_mac + only_club + only_bornes > 1 : + __usage_brief(u'Options utilisées incompatibles') + + arg = ' '.join(arg) + # Cas particulier de recherche sur prise + if arg.count('=') == 1 and arg.split('=')[0] == 'prise' : + prise = arg.split('=')[1] + # Récupération de la chambre + try: + from annuaires_pg import reverse + chbre = reverse(prise[0].lower(), prise[1:]) + except KeyError: + chbre=None + + if chbre: + if len(chbre) != 1 : + cprint(u"Prise correspondante à plusieurs chambres %s" % ' '.join(chbre)) + return + # On fait la recherche sur la chambre + chbre= prise[0] + chbre[0] + #cprint(u"Recherche sur chambre %s" % chbre) + arg = u'chbre=%s' % chbre + # sinon on ne fait rien et on recherche sur le champ prise + + try: + if only_crans : + res = { 'machine' : AssociationCrans().machines() , 'adherent' : [] , 'club' : [] } + else : + if not arg : + # Pas de chaine de recherche fournie + __usage_brief(u'Chaine de recherche incorrecte.') + res = base.search(arg) + except ValueError, c : + __usage_brief(c.args[0]) + + # Traitement du résultat + if not res['adherent'] and not res['machine'] and not res['club']: + # Pas de résultat dans la base + # Recherche sur chambre ? + if arg.count('=') == 1 and arg.split('=')[0] == 'chbre' : + # Affichage des infos de la chambre + chbre = arg.split('=')[1] + cprint(u"Chambre %s inoccupée ou invalide (%s)" % (chbre,prise_etat(chbre)[0])) + else : + cprint(u"Aucun résultat trouvé.") + sys.exit(3) + # L'affichage souhaité a été précisé ? + elif only_bornes : + if not res['machine'] : + cprint(u'Aucun résultat à afficher') + sys.exit(4) + else : + if len(res['machine']) > limit_aff_details : + cprint(list_bornes(res['machine'])) + else : + aff(res['machine']) + elif only_adh : + if res['adherent'] : aff(res['adherent']) + elif res['machine'] : + to_aff=[] + traite =[] + for m in res['machine'] : + a = m.proprietaire() + if a.idn != 'aid' or a.id() in traite : continue + traite.append(a.id()) + to_aff.append(m.proprietaire()) + if not(to_aff) : + cprint(u'Aucun résultat à afficher') + sys.exit(4) + aff(to_aff) + elif res['club'] : + cprint(u'Aucun résultat à afficher') + sys.exit(4) + elif only_mac : + if res['machine'] : aff(res['machine'],mtech) + else : + to_aff = [] + for a in res['adherent'] + res['club'] : + to_aff += a.machines() + aff(to_aff) + elif only_club : + if res['club'] : aff(res['club']) + elif res['machine'] : + to_aff=[] + traite =[] + for m in res['machine'] : + a = m.proprietaire() + if a.idn != 'cid' or a.id() in traite : continue + if a.id() in traite : continue + traite.append(a.id()) + to_aff.append(m.proprietaire()) + if not(to_aff) : + cprint(u'Aucun résultat à afficher') + sys.exit(4) + aff(to_aff) + elif res['adherent'] : + cprint(u'Aucun résultat à afficher') + sys.exit(4) + # Non : on affiche tout. + else : + if res['adherent'] : + cprint(u"Résultats trouvés parmi les adhérents :", 'cyan') + aff(res['adherent']) + if res['machine'] : + cprint(u"Résultats trouvés parmi les machines :", 'cyan') + aff(res['machine'],mtech) + if res['club']: + cprint(u"Résultats trouvés parmi les clubs :", 'cyan') + aff(res['club']) + +if __name__ == '__main__' : + global debug + debug = 0 + + import sys, getopt + + base = crans_ldap() + + try : + __recherche() + except KeyboardInterrupt : + cprint(u"Recherche interrompue par l'utilisateur.") + sys.exit(255) + except SystemExit, c : + # Fin + sys.exit(c) + except : + cprint(u"""Une erreur fatale s'est produite durant l'exécution. +Pour l'amélioration de ce programme merci de prévenir nounou en spécifiant la +marche à suivre pour reproduire cette erreur.""") + if debug : + cprint('-'*40) + cprint(u'Détails techniques :') + import traceback + # On veut le traceback sur la sortie standard + sys.stderr = sys.stdout + traceback.print_exc() + sys.exit(1) diff --git a/archive/lib b/archive/lib new file mode 120000 index 00000000..3c8e14b4 --- /dev/null +++ b/archive/lib @@ -0,0 +1 @@ +cranslib \ No newline at end of file diff --git a/archive/openvpn/ovh.conf b/archive/openvpn/ovh.conf new file mode 100644 index 00000000..4d57928e --- /dev/null +++ b/archive/openvpn/ovh.conf @@ -0,0 +1,24 @@ +daemon server-ovh +dev tun-ovh + +up /etc/openvpn/ovh.up +down /etc/openvp/ovh.down + +tls-server +log-append /var/log/openvpn/ovh.log + +dh /etc/openvpn/dh1024.pem +ca /etc/ssl/certs/cacert.org.pem +cert /etc/ssl/certs/vpn.pem +key /etc/ssl/private/vpn.pem +tls-verify "/usr/share/openvpn/verify-cn ovh.vpn.crans.org" + +port 1194 + +persist-tun +ping 15 +ping-restart 45 +ping-timer-rem +persist-key + +verb 3 diff --git a/archive/openvpn/ovh.down b/archive/openvpn/ovh.down new file mode 100755 index 00000000..4f65a044 --- /dev/null +++ b/archive/openvpn/ovh.down @@ -0,0 +1,3 @@ +#!/bin/bash +IP_OVH=138.231.144.8 +ip neigh del proxy ${IP_OVH} dev crans.2 diff --git a/archive/openvpn/ovh.up b/archive/openvpn/ovh.up new file mode 100755 index 00000000..f1b79610 --- /dev/null +++ b/archive/openvpn/ovh.up @@ -0,0 +1,19 @@ +#!/bin/bash + +set -e + +IP_KOMAZ=138.231.144.4 +IP_OVH=138.231.144.8 + +INTERFACE=$1; shift; +TUN_MTU=$1; shift; +UDP_MTU=$1; shift; + +ip link set ${INTERFACE} up +ip link set mtu ${TUN_MTU} dev ${INTERFACE} + +ip addr add ${IP_KOMAZ}/32 dev ${INTERFACE} +ip route add ${IP_OVH} dev ${INTERFACE} +ip neigh add proxy ${IP_OVH} dev crans.2 + +exit 0 diff --git a/archive/pjl_comm.py b/archive/pjl_comm.py new file mode 100755 index 00000000..ebb6fdb0 --- /dev/null +++ b/archive/pjl_comm.py @@ -0,0 +1,117 @@ +#!/usr/bin/env python +# -*- coding: iso-8859-15 -*- + +"""Classe de communication avec l'imprimante +HP9500""" + +import socket + +class hp9500: + "Classe de communication avec la HP9500" + #\x1B est le caractere d'échappement échap. + UEL="\x1b%-12345X" + __douille=None + def __init__(self,hostname="laserjet.adm.crans.org",port=9100): + """Appelle à l'initalisation + hostname : nom d'hôte de l'imprimante + port : le port de communication avec l'imprimante + """ + self.hostname=hostname + self.port=port + + def cx_open(self): + """Ouvre la connexion vers l'imprimante""" + + if not self.__douille: + self.__douille = socket.socket(socket.AF_INET, socket.SOCK_STREAM,socket.IPPROTO_TCP) + self.__douille.connect((self.hostname, self.port)) + #delai d'attente pour la réception des données + self.__douille.settimeout(10) + self.__douille.sendall(self.UEL+"@PJL\n") + + def cx_close(self): + """Ferme la connexion vers l'imprimante""" + + if self.__douille: + self.__douille.sendall(self.UEL+"\n") + self.__douille.close() + self.__douille=None + + def pjl_command(self,command): + """Cette fonction envoie la commande command à l'imprimante + Elle doit être une commande pjl sans @PJL devant + + Paramètres : + command : la commande à envoyer à l'imprimante + + """ + + if not self.__douille: + self.cx_open() + + command=str(command) + command="@PJL " + command + "\n" + self.__douille.sendall(command) + + #debug + print command + + def pjl_read(self, display=0): + """Cette fonction lit le retour donné par l'imprimante + Elle retourne un message commençant par \"ERREUR :\" en + cas d'échec + Elle affiche le message si la variable display est vraie + """ + + if not self.__douille: + return "ERREUR : la connexion vers l'imprimante n'est pas ouverte" + message="" + caract=' ' + while caract: + try: + caract=self.__douille.recv(1) + message+=caract + except: + caract='' + message+='\n' + if display: + print message + return message + + def write_file(self,filename): + """Cette fonction envoie un fichier à l'imprimante. + Elle est utile pour envoyer une série de commande ou un fichier + postscript. + + Arguments : + filename : nom du fichier à envoyer + """ + + if not self.__douille: + return "ERREUR : la connexion vers l'imprimante n'est pas ouverte" + + fichier=open(filename) + self.__douille.sendall(fichier.read()) + fichier.close() + + def write_postscript(self,filename, name, display): + """Cette fonction envoie un fichier postscript à l'imprimante. + Elle envoie avant le ENTER LANGUAGE et le EOJ a la fin. + + Arguments : + filename : nom du fichier à envoyer + name : le nom du job + display : ce qu'on met sur l'afficheur + """ + if not self.__douille: + return "ERREUR : la connexion vers l'imprimante n'est pas ouverte" + self.pjl_command('JOB DISPLAY=\"%s\" NAME=\"%s\"' % (display,name)) + self.pjl_command('ENTER LANGUAGE = POSTSCRIPT ') + self.write_file(filename) + self.__douille.sendall(self.UEL+"@PJL EOJ NAME=\"%s\"\n" % (name)) + + + def __del__(self): + """Destructeur : ferme la connexion""" + self.cx_close() + diff --git a/archive/python-lib/affich_tools.py b/archive/python-lib/affich_tools.py new file mode 100644 index 00000000..8e44cfbc --- /dev/null +++ b/archive/python-lib/affich_tools.py @@ -0,0 +1,194 @@ +#!/usr/bin/env python +# -*- coding: iso-8859-15 -*- + +""" Collection de fonction/classe pour avoir un bel affichage + +Copyright (C) Frédéric Pauget +Licence : GPLv2 +""" + +import sys, sre, os, tempfile + +if 'TERM' in os.environ: + el = os.popen('tput cr ; tput el').read() +else: + el = os.popen('tput -Tvt100 cr ; tput -Tvt100 el').read() + +def dialog(backtitle,arg) : + """ Affiche la boite de dialogue défine avec les arguments fournis + (cf man dialog) + si tout se déroule bien retourne : + [ 0, [ reponse(s) ] ] + si annulatin retourne : + [ 1, [] ] + si appui sur ESC demande confirmation de l'abandon et exécute sys.exit(0) + si erreur dans les arguments raise RuntimeError + """ + f = tempfile.NamedTemporaryFile() + cmd = u'/usr/bin/dialog --backtitle "%s" --cancel-label "Retour" %s 2>%s' % (backtitle,arg,f.name) + res = os.system(cmd.encode('iso-8859-15','ignore')) + + if res == 256 : + # Annuler + f.close() + return [ 1, [] ] + + # Lecture du fichier de résultat et effacement + try: + result=f.readlines() + f.close() + except : + result = [ "n'importe quoi", ''] + res = 65280 + + # Traitement + if res==65280 and result: + # Erreur dans les arguments + raise RuntimeError( arg, result[1].strip() ) + elif res==65280 : + # Appui sur ESC + arg1 = u'--title "Annulation" --yesno "Quitter ?\nLes dernières modifications seront perdues." 6 48' + print backtitle + cmd = u'/usr/bin/dialog --backtitle "%s" %s' % (backtitle,arg1) + res = os.system(cmd.encode('iso-8859-15','ignore') ) + if res==0 : sys.exit(0) + else : return dialog(backtitle,arg) + elif not result : result=[''] + + return [ 0, result ] + +def coul(txt,col): + """ + Retourne la chaine donnée encadrée des séquences qui + vont bien pour obtenir la couleur souhaitée + Les couleur sont celles de codecol + Il est possible de changer la couleur de fond grace aux couleur f_ + """ + codecol={'rouge' : 31 , 'vert' : 32 , 'jaune' : 33 , 'bleu': 34 , 'violet' : 35 , 'cyan' : 36 , 'gras' : 50} + try : + if col[:2]=='f_' : add=10; col=col[2:] + else : add=0 + txt = "\033[1;%sm%s\033[1;0m" % (codecol[col]+add,txt) + finally : + return txt + +OK = coul('OK','vert') +WARNING = coul('WARNING','jaune') +ERREUR = coul('ERREUR','rouge') + +def cprint(txt,col): + print coul(txt,col) + +def tableau(largeurs,data) : + """ + retourne une chaine formatée repésentant un tableau + largeur est la liste des largeurs des colones + data est une liste de tuples : + [ ( données entète), (données ligne1), .... ] + """ + sep_col = u'|' + + # Si l'une des largeurs est '*', alors on la met la plus grande possible + if '*' in largeurs: + rows, cols = get_screen_size() + nlargeurs = [] + for n in largeurs: + if n != '*': + nlargeurs.append(n) + else: + nlargeurs.append(max(cols - sum(filter(lambda x:x!='*',largeurs)) - len(largeurs) - 1, 3)) + largeurs = nlargeurs + + # Ligne de séparation entète corps + s=u'\n' + for l in largeurs : + s+= sep_col + u'-'*l + s += sep_col + u'\n' + + nb_cols = len(largeurs) + + # Remplissage tableau + f=u'' + for ligne in data : + for i in range(0, nb_cols) : + f+= sep_col + # Centrage + l = len(sre.sub('\x1b\[1;([0-9]|[0-9][0-9])m','',ligne[i])) # Longeur sans les chaines de formatage + if l >= largeurs[i] : + f += ligne[i] + else : + n = largeurs[i] - l + f += u' '*(n/2) + ligne[i] + u' '*(n/2 + n%2) + f+= sep_col + u'\n' + + # Final + f = f.replace(u'\n',s,1) # Insertion du séparateur entète - corps + return f[:-1] # Supression du \n final + +def get_screen_size(): + """Retourne la taille de l'écran. + + Sous la forme d'un tuble (colonnes, lignes)""" + try: + from termios import TIOCGWINSZ + from struct import pack, unpack + from fcntl import ioctl + s = pack("HHHH", 0, 0, 0, 0) + rows, cols = unpack("HHHH", ioctl(sys.stdout.fileno(), TIOCGWINSZ, s))[:2] + return (rows, cols) + except: + return (80, 24) + +def prompt(prompt, defaut=''): + """ Pose la question prompt, retourne la réponse """ + sys.stdout.write(coul(prompt,'gras')) + if defaut : + sys.stdout.write(" ["+defaut+"]") + sys.stdout.write(" ") + v=sys.stdin.readline().strip() + if not v : v = defaut + return v + +class anim : + """ Permet de créer une animation : + truc................./ + truc.................- + truc.................\ + truc.................| + ou une barre de progression si le nombre total d'itérations est founi. + """ + def __init__(self,truc,iter=0) : + """ Affichage de : + truc.................""" + self.txt = truc + '.'*(50-len(truc)) + self.c = 1 + self.iter = iter + sys.stdout.write(self.txt) + sys.stdout.flush() + + def reinit(self) : + """ Efface la ligne courrante et + affiche : truc................. """ + sys.stdout.write(el + self.txt) + if self.iter : + sys.stdout.write(' '*28) + sys.stdout.write(el + self.txt) + sys.stdout.flush() + + def cycle(self) : + """ Efface la ligne courrante et + affiche : truc..................? + ? caratère variant à chaque appel """ + sys.stdout.write(el + self.txt) + if self.iter!=0 : + sys.stdout.write('[') + av = float(self.c) / float(self.iter) + n = int(20 * av) + sys.stdout.write('='*n) + sys.stdout.write('>') + sys.stdout.write(' '*(20 - n)) + sys.stdout.write('] %3i%%' % int(100 * av) ) + else : + sys.stdout.write('/-\|'[self.c%4]) + sys.stdout.flush() + self.c += 1 diff --git a/archive/python-lib/daemon.py b/archive/python-lib/daemon.py new file mode 100644 index 00000000..23ec71de --- /dev/null +++ b/archive/python-lib/daemon.py @@ -0,0 +1,47 @@ +# -*- python -*- +# -*- coding: iso-8859-15 -*- + +import sys,os + +def daemonize (stdin='/dev/null', stdout='/dev/null', stderr='/dev/null'): + '''This forks the current process into a daemon. + The stdin, stdout, and stderr arguments are file names that + will be opened and be used to replace the standard file descriptors + in sys.stdin, sys.stdout, and sys.stderr. + These arguments are optional and default to /dev/null. + Note that stderr is opened unbuffered, so + if it shares a file with stdout then interleaved output + may not appear in the order that you expect. + ''' + # Do first fork. + try: + pid = os.fork() + if pid > 0: + sys.exit(0) # Exit first parent. + except OSError, e: + sys.stderr.write ("fork #1 failed: (%d) %s\n" % (e.errno, e.strerror) ) + sys.exit(1) + + # Decouple from parent environment. + os.chdir("/") + os.umask(022) + os.setsid() + + # Do second fork. + try: + pid = os.fork() + if pid > 0: + sys.exit(0) # Exit second parent. + except OSError, e: + sys.stderr.write ("fork #2 failed: (%d) %s\n" % (e.errno, e.strerror) ) + sys.exit(1) + + # Now I am a daemon! + + # Redirect standard file descriptors. + si = file(stdin, 'r') + so = file(stdout, 'a+') + se = file(stderr, 'a+', 0) + os.dup2(si.fileno(), sys.stdin.fileno()) + os.dup2(so.fileno(), sys.stdout.fileno()) + os.dup2(se.fileno(), sys.stderr.fileno()) diff --git a/archive/python-lib/lock.py b/archive/python-lib/lock.py new file mode 100644 index 00000000..5ad26154 --- /dev/null +++ b/archive/python-lib/lock.py @@ -0,0 +1,79 @@ +#!/usr/bin/env python +# -*- coding: iso-8859-15 -*- + +""" Gestion de lock + +Copyright (C) Frédéric Pauget +Licence : GPLv2 +""" + +import os,string,time,sys, affich_tools +from commands import getoutput +from user_tests import getuser + +def make_lock(lock_file, lock_comment='',nowait=1) : + """ Création d'un lock + si nowait=0 fait un sys.exit(254) quand un ancien lock actif est rencontré + """ + if os.path.isfile(lock_file) : + ### Lock existant + + # Lecture du lock + fd = open(lock_file, "r") + pid= fd.readline().strip() + user = fd.readline().strip() + fd.close() + + # Informations sur le processus lockant + if os.system( "ps %s > /dev/null 2>&1" % pid ) : + # Le script lockant ne tourne plus + os.remove(lock_file) + elif nowait : + sys.stderr.write('Lock : %s\n' % lock_file) + l=getoutput('ps -o etime --no-headers %s' % pid) + data = [ user , pid , l.strip() ] + + # Formatate de etime + s = data[-1].split('-') + if len(s)==2 : + txt = '%s jour(s) ' % s[0] + s=s[1] + else : + txt = '' + s=s[0] + + s = s.split(':') + if len(s) == 3 : + txt = '%sh%smin%ss' % tuple(s) + elif len(s) == 2 : + txt = '%smin%ss' % tuple(s) + else : + txt = '???' + + data[-1]=txt + + sys.stderr.write('\tpropriétaire : %s\n\tpid : %s\n\tdémarré depuis %s\n' % tuple(data) ) + sys.exit(254) + else : + # Il faut attendre + a = affich_tools.anim('\tattente du lock') + for i in range(8) : + time.sleep(1) + a.cycle() + sys.stdout.write('\r') + return make_lock(lock_name, lock_comment) + + ### Prise du lock + lock_fd=open(lock_file, "w") + lock_fd.write("%s\n%s\n%s" % (os.getpid(), getuser(), lock_comment) ) + lock_fd.close() + +def remove_lock( lock_file ) : + """ Destruction du lock """ + try : + fd = open(lock_file, "r") + if fd.readline().strip()=="%s" % os.getpid(): + os.remove(lock_file) + fd.close() + except : + None diff --git a/archive/python-lib/user_tests.py b/archive/python-lib/user_tests.py new file mode 100644 index 00000000..4cd36be5 --- /dev/null +++ b/archive/python-lib/user_tests.py @@ -0,0 +1,38 @@ +#!/usr/bin/env python +# -*- coding: iso-8859-15 -*- + +""" Fonctions de tests sur l'utilisateur + +Copyright (C) Frédéric Pauget +Licence : GPLv2 +""" + +import os, commands, pwd + +def getuser() : + """ Retourne l'utilisateur lancant les scripts """ + user = os.getenv('SUDO_USER') + if not user : + user = pwd.getpwuid(os.getuid())[0] + return user + +def groups(login='') : + """ Retourne liste des groupes (gid) auquels appartient l'utilisateur + fourni, si aucun utilisateur est founit prend l'utilisateur loggué """ + if login == '' : login = getuser() + return commands.getoutput('id -G %s' % login).split() + +def isadm(login='') : + """ Retourne True si l'utilisateur est dans le groupe 4 (adm) + Si login='', prend l'utilisateur loggué """ + return '4' in groups(login) + +def isdeconnecteur(login='') : + """ Retourne True si l'utilisateur est dans le groupe 610 (disconnect) + Si login='', prend l'utilisateur loggué """ + return isadm(login) or '610' in groups(login) + +def iscableur(login='') : + """ Retourne True si l'utilisateur est dans le groupe 604 (respbat) + Si login='', prend l'utilisateur loggué """ + return isadm(login) or '604' in groups(login) diff --git a/archive/surveillance/demenagement.py b/archive/surveillance/demenagement.py new file mode 100644 index 00000000..fb62b799 --- /dev/null +++ b/archive/surveillance/demenagement.py @@ -0,0 +1,140 @@ +#! /usr/bin/env python +# -*- coding: utf-8 -*- + +""" +Détection des déménagements non signalés + +Auteur : Étienne Chové +""" + +import sys, os +sys.path.append('/usr/scripts/gestion') +from hptools import hpswitch +from annuaires_pg import all_switchs, bat_switchs, reverse, uplink_prises +from ldap_crans import crans_ldap +from affich_tools import anim, OK +from email_tools import send_email +import sqlite +import time + +# On redirige les sorties si invoqué via cron +if 'cron' in sys.argv[0]: + so = file('/dev/null', 'a+', 0) + os.dup2(so.fileno(), sys.stdout.fileno()) + os.dup2(so.fileno(), sys.stderr.fileno()) + +conn = sqlite.connect('/var/lib/misc/demenagement') +conn.autocommit = True +curs = conn.cursor() +try: + curs.execute("CREATE TABLE machines (host TEXT(128), debut INTEGER);") + print "SQL : Table machines recrée" +except: + pass + +if '--list' in sys.argv: + curs.execute("SELECT * FROM machines ORDER BY debut;") + for r in curs.fetchall(): + print '%25s %s' % (r[0], time.strftime('%d/%m/%Y %H:%M',time.localtime(r[1]))) + sys.exit(0) + +# exemptions : +# liste de tuple à deux éléments : +# - la machine concernée +# - la chambre(local) *en minuscules* dans laquelle peut se trouver la machine +# sans envoyer de mail +# exemple : exempt = [ ("shosur.crans.org", "b511d"), ("blabla.crans.org","bcl2") ] +exempt = [] + +# nombre minimal de jours pour dire que quelqu'un a déménagé +min_jours = 7 +# envoie un mail tous les X jours +re_mail = 7 + +# construction de rev = { bat : { prise : chbre } } +rev = {} +for bat in bat_switchs: + rev[bat] = reverse(bat) + +# remplissage de l'annuaire chambre = { mac : prise } en interrogeant les switchs +switchs = all_switchs() +progression = anim('Interrogation des switchs',len(switchs)) +chambre = {} +for host in switchs: + progression.cycle() + switch = hpswitch(host) + try: + nb_prises = switch.nb_prises() + except: + continue + for prise in range(1, nb_prises+1): + if prise < 10: + prise = '0%d'%prise + else : + prise = str(prise) + + for mac in switch.show_prise_mac(prise): + try: + chambre[mac] = [ host[3] + x for x in rev[host[3]][ host[5] + prise ] ] + except: + pass +progression.reinit() +print OK + +# interrogation de la base ldap +progression = anim('Interrogation de la base LDAP') +base = crans_ldap().search('paiement=ok') +progression.reinit() +proprios = base['adherent'] +print OK + +# recherche des erreurs +progression = anim('Recherche des erreurs',len(proprios)) + +now = int(time.time()) +msg=u'' +for proprio in proprios: + if proprio.chbre()=='EXT': + continue + progression.cycle() + for machine in proprio.machines_fixes(): + if not chambre.has_key(machine.mac()): + # mac non trouvée sur switch + continue + + if proprio.chbre().lower() in chambre[machine.mac()]: + # la machine est dans sa chambre + curs.execute("DELETE FROM machines WHERE host='%s';"%machine.nom()) + + else: + # on regarde la chambre dans la base + curs.execute("SELECT debut FROM machines WHERE host='%s';" % machine.nom()) + result = curs.fetchall() + + if result: + # mise à jour de l'entrée, si vu il y a au moins une semaine + if result[0][0] < now-86400*min_jours: + if (machine.nom(),'/'.join(chambre[machine.mac()])) not in exempt: + print type(machine.nom()) + print type(u'/'.join(chambre[machine.mac()])) + print type(proprio.chbre()) + msg += u'%s vu en chambre %s mais déclaré en %s\n' % ( + machine.nom(), + '/'.join(chambre[machine.mac()]), + proprio.chbre().lower()) + # prochain rappel dans 1 semaine + curs.execute("UPDATE machines SET debut = '%d' WHERE host = '%s';" % (now+(re_mail-min_jours)*86400, machine.nom())) + else: + # nouvelle entrée + curs.execute("INSERT INTO machines (host,debut) VALUES ('%s', '%d');" % (machine.nom(),now)) + +progression.reinit() +print OK + +# sys.stderr.write(msg.encode('iso8859-15')) +# sys.stderr.flush() +if msg: + print "Envoi du mail... ", + send_email('disconnect@crans.org', 'disconnect@crans.org', u'Déménagement(s) non déclaré(s)', + msg + u'\n\n-- \nGénéré par demenagement.py\n') + print OK diff --git a/archive/tv/old/launch_sat.py b/archive/tv/old/launch_sat.py new file mode 100755 index 00000000..382a639a --- /dev/null +++ b/archive/tv/old/launch_sat.py @@ -0,0 +1,117 @@ +#! /usr/bin/env python +# -*- coding: iso8859-15 -*- + +""" Script de lancement de mumudvb + +Auteur : Frédéric Pauget +Licence : GPLv2 +""" +import sys, getopt, os +from sat_base import NotRunning, CarteOqp + +if os.getuid() == 0 : + os.system("su tv -c %s" % " ".join(sys.argv)) + sys.exit(0) +elif os.getuid() != 101 : + print "Ce programme doit être lancé par l'utilisateur tv (uid=101)" + print "Astuce : sudo -u tv %s" % sys.argv[0] + sys.exit(1) + +def usage(erreur=None) : + if erreur : + print erreur + print """Usage : + %(p)s start [ []]: + démarrage le transpondeur donné sur la carte donnée, + si le transpondeur est omis démarre celui défini dans la conf + si seul démarre des flux définis dans la conf + %(p)s stop [numero carte] : + arrête tous les flux des cartes spécifiées, + si aucune carte est fournie arrète tous les flux + %(p)s restart [numero carte] : + démarre tous les flux des cartes spécifiées + si aucune carte est fournie redémarre tous les flux + +Les options possibles sont : + -d ou --debug : affiche tous les messages + et ne daemonize pas mumudvb + -v ou --verbose : affiche les messages de debuggage + -q ou --quiet : affiche rien + --timeout_accord= : nb de secondes données pour l'accord""" \ + % { 'p' : sys.argv[0].split('/')[-1] + ' [options]'} + if not erreur : sys.exit(0) + else : sys.exit(-1) + +# Arguments +try : + options, args = getopt.getopt(sys.argv[1:], 'hdvq', [ 'help', 'debug' , 'quiet' , 'verbose', 'timeout_accord='] ) +except getopt.error, msg : + sys.stderr.write('%s\n' % msg) + sys.exit(255) + +verbose = 1 +timeout_accord = 20 +for opt, val in options : + if opt in [ '-v' , '--verbose' ] : + verbose = 2 + elif opt in [ '-d' , '--debug' ] : + verbose = 3 + elif opt == [ '-q' , '--quiet' ] : + verbose = 0 + elif opt == '--timeout_accord' : + try: + timeout_accord = int(val) + except: + usage("Valeur de timeout_accord (%s) incorrecte" % val) + elif opt in [ '-h', '--help' ] : + usage() + +if not args : + usage('Argument requis') + +elif args[0] not in [ 'start', 'stop' , 'restart' ] : + usage("Commande %s incorrecte" % args[0]) + + +# Carte fournie ? +try : + cartes = [ int(args[1]) ] +except ValueError : + usage("Argument %s incorrect (doit être le numéro de carte)." % args[1]) +except : + # Toutes les cartes + cartes = range(6) + if verbose > 2 : + print "Mode debug non permis avec le lancement automatique" + verbose = 3 + +if args[0] in ( 'start', 'restart' ) : + if cartes == range(6) : + from sat_conf import conf + cartes = conf + else : + transpondeur = args[2] + from sat_base import * + try : + carte = eval(transpondeur) + cartes = [ carte(cartes[0]) ] + except NameError: + usage('Transpondeur %s inconnu.' % transpondeur) + + +elif args[0] == 'stop' : + from sat_base import carte + cartes = map(carte,cartes) + +# On effectue l'opération demandée +for carte in cartes : + carte.verbose = verbose + carte.timeout_accord = timeout_accord + try : + eval('carte.%s()' % args[0]) + except CarteOqp : + print "Carte %i occupée, abandon" % carte.card + except NotRunning : + # Pas réussi à lancer, TODO + pass + diff --git a/archive/tv/old/sap.py b/archive/tv/old/sap.py new file mode 100755 index 00000000..39e69f10 --- /dev/null +++ b/archive/tv/old/sap.py @@ -0,0 +1,140 @@ +#! /usr/bin/env python +# -*- coding: iso-8859-15 -*- + +""" Génération de la configuration sap à partir des données de mumudvb + Lancement du serveur sap. + + Option -d pour que le programme ne se lance pas en daemon. """ + +import os, sys, signal +from socket import getfqdn +from time import sleep +from commands import getoutput + +sys.path.append('/usr/scripts/python-lib') +import lock +from daemon import daemonize + + +################CONFIG + +SAP_CONF = '/etc/sap.cfg' +LOCK='/var/run/mumudvb/sap' +CHAINES_DIFFUSES = '/var/run/mumudvb/chaines_diffusees_carte%d' +base_conf = """################################## +# Fichier généré automatiquement # +# NE PAS EDITER # +################################## +[global] +sap_ttl=4 +sap_ipversion=4 +sap_delay=10 +ipv6_scope=8 +""" + +chaine_template=""" +[program] +name=%s +user=crans +machine=%s +site=http://www.crans.org +address=%s +port=%s +program_ttl=4 +program_ipversion=4 +playlist_group=%s +""" % ( '%(nom)s', getfqdn(), '%(ip)s', '%(port)s', '%(langue)s' ) + +################FIN CONFIG + +# Variables globales, ne pas toucher +sap_pid = 0 +sum = 0 +class no_data(Exception): + pass + +def gen_sap() : + """ Génération du ficher de conf du sap """ + data = [] + for i in range(0,6) : + try : + data.append(open(CHAINES_DIFFUSES % i).readlines()) + except IOError : + continue + + file = open(SAP_CONF,'w') + file.write(base_conf) + ok=0 + for fichier in data : + for line in fichier : + ip, port, nom_chaine = line.strip().split(':') + file.write(chaine_template % { + 'nom' : nom_chaine, + 'langue': nom_chaine.split()[0], + 'ip' : ip, + 'port' : port} ) + ok=1 + file.close() + if not ok : raise no_data + +def is_alive(child_pid) : + """ Vérifie si le processus fils tourne """ + try : + if os.waitpid(child_pid,1) != (0,0) : + raise OSError + return True + except OSError : + return False + +def term(a=None,b=None) : + """ Tue le serveur sap puis quitte """ + kill() + lock.remove_lock(LOCK) + sys.exit(0) + +def kill() : + """ Tue le serveur sap """ + if not is_alive(sap_pid) : + return + print "Kill sap" + os.kill(sap_pid,15) + sleep(1) + if is_alive(sap_pid) : + # Salloperie + print "WARNING : sap résitant" + os.kill(sap_pid,9) + sleep(1) + +if __name__ == '__main__' : + sys.exit(0) + # Arguments + if '-d' not in sys.argv : + daemonize() + + # Lock + lock.make_lock(LOCK,"Serveur SAP") + + # Signal handler + signal.signal(signal.SIGTERM,term) + signal.signal(signal.SIGINT,term) + + while 1 : + try : + gen_sap() + except no_data : + # Rien n'est diffusé + kill() + else : + # Changent de config ? + new_sum = getoutput('md5sum %s' % SAP_CONF).split()[0] + if new_sum != sum : + print "Reconfiguration" + sum = new_sum + if sap_pid>1 and is_alive(sap_pid) : + kill() + if not is_alive(sap_pid) : + # Ne tourne pas, on relance + sap_pid = os.spawnl(os.P_NOWAIT,'/usr/local/bin/sapserver','sap','-f',SAP_CONF) + print "Lancement serveur, pid=%s" % sap_pid + + sleep(60) diff --git a/archive/tv/old/sat_base.py b/archive/tv/old/sat_base.py new file mode 100644 index 00000000..f92beeae --- /dev/null +++ b/archive/tv/old/sat_base.py @@ -0,0 +1,463 @@ +#! /usr/bin/env python +# -*- coding: iso8859-15 -*- + +""" +Configuration de base des différents transpondeurs disponibles +Ce fichier contient la liste des chaines pour chaque transpondeur. + +Pour chaque chaine, on doit indiquer le nom de la chaine et au minimum : +- Le pid audio +- Le pid video +- Le pid PMT, ce pid contient la liste des differents flux associes a une chaine +VLC a besoin de ce PID pour lire le flux + +Les pids facultatifs sont les suivants : +- Le PID PCR qui indique la base de temps (Program Clock Reference) +et permet de mieux reconstituer les flux un peu defecteux, et sert +aussi pour synchroniser les informations teletexte. +Il est conseille de le mettre, et il est souvent present avec le +flux video (cas de la TNT) +- Les PIDs de teletexte +""" + +#Auteur : Frédéric Pauget +#Maintenance et adaptations : DUBOST Brice +#Licence : GPLv2 + +from commands import getoutput +from time import sleep +import os, socket + +IP = socket.gethostbyaddr(socket.gethostname())[-1][0] + +class CarteOqp(Exception) : + """ La carte est déja utilisée """ + +class NotRunning(Exception) : + """ La carte ne diffuse rien """ + +class carte : + """ Classe parent de toute classe de transpondeur """ + # Niveux de verbosite : + # 0 : ne dit rien + # 1 : messages à caractères informatifs + # 2 : messages de debug + # 3 : ne permet pas à mumudvb de daemonizer + verbose = 3 + + CONF_FILE = "/etc/sat/carte%i.conf" # %i : numero de la carte + + timeout_accord=20 #en secondes + timeout_no_diff=60 #en secondes + + entete_conf = """### Fichier généré, NE PAS EDITER +autoconfiguration=1 +sap=1 +sap_organisation=crans +common_port=1234 +freq=%(freq)i +pol=%(pol)s +srate=%(srate)i +card=%(card)i +timeout_accord=%(timeout_accord)i +timeout_no_diff=%(timeout_no_diff)i +#----- +""" + + entete_conf_TNT = """### Fichier généré, NE PAS EDITER +autoconfiguration=1 +sap=1 +sap_organisation=crans +common_port=1234 +freq=%(freq)i +qam=%(qam)s +trans_mode=%(trans_mode)s +bandwidth=%(bandwidth)s +guardinterval=%(guardinterval)s +coderate=%(coderate)s +card=%(card)i +timeout_accord=%(timeout_accord)i +timeout_no_diff=%(timeout_no_diff)i +""" + + chaine_template = """ip=%(ip)s +sap_group=%(sap_group)s +name=%(name)s +pids=%(pids)s +#----- +""" + + autoconf2_template = """common_port=1234 +autoconfiguration=2 +autoconf_ip_header=%(ip)s +sap_default_group=various +#----- +""" + + pid_file = "/var/run/mumudvb/mumudvb_carte%i.pid" # % num carte + mumudvb = "/usr/local/bin/mumudvb_sap " + + def __cmp__(a,b) : + for attr in ( 'card', 'freq', 'chaines' ) : + if getattr(a,attr) != getattr(b,attr) : + return -2 + return 0 + + def __init__(self,card) : + """ Initalisation card est le numéro (entier) de la carte + correspondante """ + try : + self.freq = int(str(self.__class__).split('_')[-1]) + except : + # On ne pourra pas faire grand chose à part killer le flux de la carte + self.freq = '' + pass + self.card = card + + def gen_conf(self) : + """ Génère le fichier de conf """ + if not self.freq : + if self.verbose > 1 : print "Instance ne permettant pas la génération de la conf" + return + + fd = open(self.CONF_FILE % self.card,'w') + # Entète du fichier + try: + fd.write( self.entete_conf_TNT % + { 'qam' : self.qam, 'trans_mode' : self.trans_mode , + 'bandwidth' : self.bandwidth, 'guardinterval' : self.guardinterval , + 'coderate' : self.coderate, + 'freq' : self.freq , 'card' : self.card , + 'timeout_accord' : self.timeout_accord , + 'timeout_no_diff' : self.timeout_no_diff } ) + except: + fd.write( self.entete_conf % + { 'pol' : self.pol, 'srate' : self.srate , + 'freq' : self.freq , 'card' : self.card , + 'timeout_accord' : self.timeout_accord , + 'timeout_no_diff' : self.timeout_no_diff } ) + + # Chaines + n = 0 + for pids, (sap_group, name) in self.chaines.items() : + ip = '239.%s.20%i.2%02i' % ( IP.split('.')[-1], self.card, n) + n += 1 + fd.write(self.chaine_template % vars()) + + #Si pas de chaines, on passe en autoconfiguration=2 + if not n : + ip = '239.%s' % ( IP.split('.')[-1]) + fd.write(self.autoconf2_template % { "ip" : ip}) + + fd.close() + + def get_pid(self) : + """ Retourne le pid associé à la carte """ + try: + pid = int(open(self.pid_file % self.card).readline().strip()) + if self.verbose > 1 : + print 'pid : %i' % pid , + return pid + except : + raise NotRunning + + def is_running(self) : + """ Vérifie si le process correspondant à la carte toune """ + if self.verbose > 1 : + redir = '' + else : + redir = '>/dev/null 2>&1' + try : + if not os.system('ps %i %s' % (self.get_pid() , redir) ) : + # Il tourne + return True + except NotRunning : + pass + return False + + def start(self) : + """ Lance la diffusion """ + if not self.freq : + if self.verbose > 1 : print "Instance ne permettant pas le lancement d'un flux" + return + + if self.verbose >0 : + print "Lancement de %s sur la carte %i" % (str(self.__class__).split('.')[-1], self.card) + + if self.is_running() : + raise CarteOqp + + if self.verbose >0 : print "\tGénération de la conf...", + self.gen_conf() + if self.verbose >0 : print "OK" + + cmd = '%s -c %s' % ( self.mumudvb, self.CONF_FILE % self.card ) + if self.verbose > 2 : cmd += ' -v -v -d -s' + if self.verbose > 1 : + print "\tCommande : %s" % cmd + for i in range(2*self.timeout_accord) : + if not i%5 and i <= self.timeout_accord : + if self.verbose > 0 and i : print "ATTENTE/ERREUR" + # On fait une tentative de lancement toutes les 5s (en cas de pb de diseq) + if self.verbose > 0 : print "\tTentative %i" %(i/5+1) , + os.system(cmd) + sleep(1) + if self.is_running() : + if self.verbose > 0 : print 'OK' + break + sleep(1) + if not self.is_running() : + if self.verbose > 0 : print 'ABANDON' + raise NotRunning + + def stop(self) : + """ Arrète la diffusion de la carte """ + if self.verbose >0 : + print "Arret diffusion carte %i..." % self.card , + + try : + # Ca tourne au moins ? + if not self.is_running() : + if self.verbose >0 : print "carte déja arrétée" + return + + os.kill(self.get_pid(),15) + sleep(1) + if not self.is_running() : + if self.verbose >0 : print "OK" + return + + # Crève !! + if not self.is_running() : + if self.verbose >0 : print "SIGKILL" + return + + os.kill(self.get_pid(),9) + # Salloperie + raise CarteOqp + except NotRunning : + # Parfait, c'était le but + pass + + def restart(self) : + """ Redémarre le flux """ + self.stop() + self.start() + +#class Hotbird_10796(carte) : +# pol='v' +# srate=27500 +# chaines = { +# '3336 3306' : 'radios' : 'rad fra Radio FG'), +# '3534 1001' : 'radios' : 'rad fra France Inter'), +# '3535 1002' : 'radios' : 'rad fra France Info' } + +#Format : "'pids' : ( 'groupe sap' : 'nom' )," + +class Hotbird_10853(carte) : + pol='h' + srate=27500 + chaines = {} + +class Hotbird_11137(carte) : + pol='h' + srate=27500 + chaines = { + '717' : ('fra' , 'fra TV5MONDE FBS'), + '719' : ('fra' , 'fra TV5MONDE Europe'), + '262' : ('ara' , 'ara ANN'), + '263' : ('ara' , 'ara Kurdistan TV'), + '264' : ('ita' , 'ita Videolina')} + +class Hotbird_11200(carte) : #A mettre a jour + pol='V' + srate=27500 + chaines = { + '366 367 2560' : ('ita' , 'ita Elite shopping TV'), + '386 387 512' : ('x-ero' , 'x-ero All Sex'), + '397 398 399' : ('ita' , 'ita StarSat'), + '394 395 4864' : ('ita' , 'ita Play TV'), + '400 404 402' : ('ita' , 'ita People TV'), + '405 406 407' : ('ita' , 'ita Roma Sat')} + +class Hotbird_11240(carte) : + pol='v' + srate=27500 + chaines = { + '244' : ('fra' , 'fra France 24'), + '247' : ('eng' , 'eng France 24'), + '401' : ('fra' , 'fra RTBF sat')} + +class Hotbird_11604(carte) : + pol='h' + srate=27500 + chaines = { + '500' : ('ita' , 'ita TLA'), + '600' : ('ger' , 'ger Das Erste'), + '700' : ('ger' , 'ger DW TV'), + '800' : ('divers' , 'divers DW tv arabic (ara eng ger)'), + '900' : ('ger' , 'ger RTL2 Schweiz'), + '3500' : ('eng' , 'eng Cool TV'), + '2600' : ('ger' , 'ger Erde Mensch'), + '1600' : ('x-ero' , 'x-ero hot arab tv'), + '3200' : ('x-ero' , 'x-ero xxx Action TV')} + +class Hotbird_11623(carte) : + pol='v' + srate=27500 + chaines = {} + +class Hotbird_11642(carte) : + pol='h' + srate=27500 + chaines = { + '1360 1320 5003' : ('eng' , 'eng Bloomberg Europe'), + '1460 1420 5004' : ('ger' , 'ger Bloomberg TV Deutschland'), + '1560 1520 5005' : ('eng' , 'eng Bloomberg U.K.'), + '2101 2111 256 128 2121' : ('gr' , 'gr ERT Sat')} + +class Hotbird_11727(carte) : + pol='v' + srate=27500 + chaines = { + '2711 2712 257 2710' : ('fra' , 'fra La Locale'), + '2791 2792 269' : ('ita' , 'ita Sicilia International (SET)'), + '2751 2752 266' : ('ita' , 'ita Sardegna Uno Sat'), + '6507 6662' : ('radios' , 'rad eng BBC English (Europe)'), + '6510 6692' : ('radios' , 'rad eng BBC English News'), + '7302 6571' : ('radios' , 'rad eng BBC Feed 1'), + '7312 6572' : ('radios' , 'rad eng BBC Feed 2'), + '7322 6573' : ('radios' , 'rad eng BBC Feed 3'), + '7332 6574' : ('radios' , 'rad eng BBC Feed 4'), + '7342 6575' : ('radios' , 'rad eng BBC Feed 5'), + '7352 6576' : ('radios' , 'rad eng BBC Feed 6')} + +# Pour remplacer 10796 +class Hotbird_11766(carte) : + pol='v' + srate=27500 + chaines = { + '1104' : ('ita' , 'ita Rai Uno'), + '1105' : ('ita' , 'ita Rai Duo'), + '1106' : ('ita' , 'ita Rai Tre'), + '260' : ('ita' , 'ita Rai Med'), + '1107' : ('ita' , 'ita eng Senato italiano'), + '1107' : ('eng' , 'eng ita Senato italiano'), + '261' : ('ita' , 'ita Rai Edu2')} + +class Hotbird_11727(carte) : + pol='v' + srate=27500 + chaines = {} + +class Hotbird_11054(carte) : + pol='h' + srate=27500 + chaines = {} + +class Hotbird_12111(carte) : + pol='v' + srate=27500 + chaines = { + '1028' : ('ara' , 'ara Al Jazeera Documentary'), + '1029' : ('ara' , 'ara Al Jazeera Mubasher'), + '1030' : ('ita' , 'ita ACM - Architecture Construction Materials'), + '1031' : ('ara' , 'ara Al Jazeera Satellite Channel'), + '1032' : ('ita' , 'ita Silicia Channel'), + '1034' : ('ita' , 'ita High life TV'), + '1040' : ('ita' , 'ita Radio Radio TV'), + '1042' : ('ita' , 'ita MediterraneoSat 1')} + +class Hotbird_12476(carte) : + pol='h' + srate=27500 + chaines = { + #2M don't support autoconfiguration + '600 601 602' : ('ara' , 'ara fra 2M'), + '600 603' : ('ara' , 'ara radio 2M'), + '550' : ('x-ero' , 'x-ero X Stream')} + +class Hotbird_12558(carte) : #outdated + pol='v' + srate=27500 + chaines = { + '6660 6661 6659' : ('ita' , 'ita Administra.it'), + '6916 6917 6915 6930' : ('ita' , 'ita 24 Ore')} + +class Hotbird_12597(carte) : + pol='v' + srate=27500 + chaines = { + '1024' : ('rus' , 'rus sport planeta'), + '1027' : ('eng' , 'eng BBC World'), + '1031' : ('rus' , 'rus ORT International'), + '1032' : ('eng' , 'eng CNN'), + '1034' : ('fra' , 'fra autres Euronews'), + '1034 2221 2232 768' : ('eng' , 'eng Euronews')} + +class Hotbird_12673(carte) : #outdated + pol='v' + srate=27500 + chaines = { + '308 309 306 307' : ('ara' , 'ara Al Maghribiyah'), + '35 36 33 34 38' : ('ara' , 'ara TVM inter l'), + '46 47 44 45' : ('ara' , 'ara Arabiaa')} + +class TNT_base(carte) : + qam="auto" + trans_mode="auto" + guardinterval="auto" + coderate="auto" + bandwidth="8MHz" + +class TNT_R1_586000(TNT_base) : + chaines = { + '110' : ('fra' , 'fra TNT02 France 2'), + '210' : ('fra' , 'fra TNT03 France 3'), + '310' : ('fra' , 'fra TNT05 France 5'), + '510' : ('fra' , 'fra TNT07 Arte'), + '510 520 531 542' : ('ger' , 'ger Arte'), + '610' : ('fra' , 'fra TNT13 LCP Public Senat'), + '710' : ('fra' , 'fra TNT20 France O')} + +class TNT_R2_474000(TNT_base) : + chaines = { + '1280' : ('fra' , 'fra TNT08 Direct 8'), + '1282' : ('fra' , 'fra TNT15 BFM TV'), + '1283' : ('fra' , 'fra TNT16 i tele'), + '1284' : ('fra' , 'fra TNT17 Virgin17'), + '1286' : ('fra' , 'fra TNT14 France 4'), + '1285' : ('fra' , 'fra TNT18 Gulli')} + +#les pids ont tendance a changer souvent pour canal, on en met le plus possible +class TNT_R3_522000(TNT_base) : + chaines = { + '1280 80 81 83 32 33 170 120 121 123 62 52' : ('fra' , 'fra TNT04 Canal')} + +class TNT_R4_498000(TNT_base) : + chaines = { + '110' : ('fra' , 'fra TNT06 M6'), + '210' : ('fra' , 'fra TNT09 W9'), + '310' : ('fra' , 'fra TNT11 NT1'), + '710' : ('fra' , 'fra TNT57 Arte HD')} + +class TNT_R5_538000(TNT_base) : + chaines = { + '110' : ('fra' , 'fra TNT51 TF1 HD'), + '210' : ('fra' , 'fra TNT52 France 2 HD'), + '310' : ('fra' , 'fra TNT56 M6 HD')} + +class TNT_R6_562000(TNT_base) : + chaines = { + '100' : ('fra' , 'fra TNT01 TF1'), + '600' : ('fra' , 'fra TNT10 TMC'), + '200' : ('fra' , 'fra TNT12 NRJ12')} + +class TNT_R7_490000(TNT_base) : + chaines = { + '4321' : ('fra' , 'fra TNT21 Canal 21 : Cinaps TV, BDM TV, Bocal TV, Demain TV'), + '4322' : ('fra' , 'fra TNT22 IDF1'), + '4323' : ('fra' , 'fra TNT23 NRJ Paris'), + '4324' : ('fra' , 'fra TNT24 Cap 24')} + + diff --git a/archive/tv/old/sat_conf.py b/archive/tv/old/sat_conf.py new file mode 100644 index 00000000..690376b5 --- /dev/null +++ b/archive/tv/old/sat_conf.py @@ -0,0 +1,39 @@ +#! /usr/bin/env python +# -*- coding: iso-8859-15 -*- + +""" Défini les transpondeurs à associer à chacune des cartes """ + +from sat_base import * +from socket import gethostname + +host = gethostname() + +transpondeurs = { 'canard' : [ Hotbird_12476(0) , + Hotbird_11240(1) , + Hotbird_12597(2) , + TNT_R4_498000(4) , + Hotbird_11604(3) ], + 'lapin' : [ Hotbird_11727(0) , +# Hotbird_11623(1) , #Cette carte capte tres mal + TNT_R1_586000(2) , + TNT_R6_562000(3) , + TNT_R2_474000(4) ], + 'oie' : [ Hotbird_10853(0) , + Hotbird_11766(1) , + Hotbird_12111(2) , + Hotbird_11137(3) , + TNT_R7_490000(4) , +# TNT_R5_538000(4) , + TNT_R3_522000(5) ] + } + +conf = transpondeurs.get(host,[]) + +if __name__ == '__main__' : + import sys + if len(sys.argv) == 2 : + conf = transpondeurs.get(sys.argv[1],[]) + for t in conf : + print t, "sur la carte", t.card + for (sap_group, chaine) in t.chaines.values() : + print '\t%s\t: \t%s' % (sap_group,chaine) diff --git a/archive/uname_bornes.sh_ b/archive/uname_bornes.sh_ new file mode 100755 index 00000000..a6f3cbf2 --- /dev/null +++ b/archive/uname_bornes.sh_ @@ -0,0 +1,27 @@ +#!/bin/bash +# copyright 2009: Antoine Durand-Gasselin +# license: BSD 3-clauses + +if [[ $# -lt 1 ]]; then + cat < +# Licence : BSD3 + +"""Script qui fait un uname sur toute les bornes à la fois. + +La sortie est la sortie de `uname -v` sur chaque borne.""" + +import sys, os, commands +from optparse import OptionParser + +def bornes(): + """Renvoie la liste des bornes + + Moyen rapide, mais peut-être un peu crade pour récupérer la liste des bornes: + on regarde les machines présentes dans 138.231.148.1/24""" + names = [] + for line in commands.getoutput("host -l wifi.crans.org").splitlines(): + # Chaque ligne est de la forme: + # "truc.wifi.crans.org has address 138.231.148.42" + fields = line.split() + name = fields[0].split(".")[0] + ip = fields[3] + network = ip.rsplit(".", 1)[0] + # On ne prend que les machines du réseau 138.231.148.0/24, à part + # ragnarok: + if network == "138.231.148" and ip != "138.231.148.1": + names.append(name) + return names + +def ssh_exec(host, cmd): + """Execute une commande en ssh sur une machine et renvoie le résultat""" + (stdin, stdout, stderr) = os.popen3("ssh -T -x -o BatchMode=yes -o ConnectTimeout=5 %(host)s exec %(cmd)s" % locals()) + stdin.close() + stderr.close() + return stdout + +def munin(config, cmd, process=(lambda x: x)): + """plugin munin""" + + if 'autoconf' in sys.argv: + print 'yes' + sys.exit(0) + + names = bornes() + + if 'config' in sys.argv: + print config + for borne in names: + print "%s.label %s"% (borne, borne) + sys.exit(0) + + outputs = {} + for name in names: + outputs[name] = ssh_exec(name+".wifi", cmd) + + for name, res in outputs.iteritems(): + value = process(res.read()).split('\n', 1)[0].strip() + print '%s.value %s' % (name, value) + +def main(): + parser = OptionParser(usage=usage) + + parser.add_option('-v', '--uname', help=u"renvoie le uname -v", + action='store_const', const='uname -v', dest='cmd', default='uname -v') + parser.add_option('-u', '--uptime', help=u"renvoie l'uptime", + action='store_const', const='uptime', dest='cmd') + (options, args) = parser.parse_args() + + names = bornes() + outputs = {} + for name in names: + outputs[name] = ssh_exec(name+".wifi", options.cmd) + + # On attend que tous les fils qu'on a lancé terminent, avec une petite + # animation si la sortie est un terminal: + count = 0 + total = len(names) + show_anim = sys.stderr.isatty() + message = "Réception des résultats: %d/%d" + if show_anim: sys.stderr.write(message % (count, total)) + while count < total: + try: os.wait() + except OSError: break + count += 1 + if show_anim: sys.stderr.write("\r" + message % (count, total)) + if show_anim: sys.stderr.write("\n") + + # On lit tout les résultats: + results = {} + for name, output in outputs.iteritems(): + results[name] = output.read().strip() + output.close() + + results = results.items() + results.sort(key=lambda x: x[0]) + + for name, result in results: + if not result: + print "%-15s failure" % (name + ":") + + for name, result in results: + if result: + print "%-15s %s" % (name + ":", result) + + +if __name__ == "__main__": + usage = u"""usage: %prog [OPTION] +Récupère la liste des bornes et récupère le résultat d'une commande sur +toutes les bornes""" + if len(sys.argv[0].split('_', 1)) > 1: + plugin = sys.argv[0].split('_', 1)[0] + if plugin == 'uptime': + config = """graph_title Uptime Bornes +graph_args --base 1000 -l 0 +graph_vlabel uptime in days""" + def process(uptime): + if uptime: +# print (int (uptime.split()[1]) / (24 * 3600)) + return str(float (uptime.split()[1]) / (24 * 3600)) + else: return '0' + munin(config, 'cat /proc/uptime', process=process) + else: raise NotImplementedError + + else: + main() diff --git a/archive/utils/chambre.py b/archive/utils/chambre.py new file mode 100755 index 00000000..bce32f72 --- /dev/null +++ b/archive/utils/chambre.py @@ -0,0 +1,7 @@ +#! /usr/bin/env python +# -*- coding: iso-8859-15 -*- + +import sys +sys.path.append('/usr/scripts/gestion') +from gen_confs.switchs import switch +switch(sys.argv[1:]).reconfigure() diff --git a/archive/utils/chambre_on_off.py b/archive/utils/chambre_on_off.py new file mode 100755 index 00000000..b0eddca4 --- /dev/null +++ b/archive/utils/chambre_on_off.py @@ -0,0 +1,58 @@ +#! /usr/bin/env python +# -*- coding: iso-8859-15 -*- +"""chambre_on_off.py: Affiche le statut, active ou désactive une prise + + syntaxe : chambre-on-off.py chbre + chbre de la forme A101d + peut être : + - on : activer la prise + - off : désactiver la prise + - absent : affiche le statut de la prise + +""" + +import sys +sys.path.append("/usr/scripts/gestion/") + +import hptools + +def chambre_on_off(chambre, cmd = None): + """Active ou désactive une prise + + chambre: numéro de chambre + cmd: si fourni, "on" ou "off" pour activer ou désactiver la prise + si cmd n'est pas fourni, ne fait qu'afficher le statut de la prise + """ + # connexion au switch + chbre_sw = hptools.sw_chbre(chambre) + + # affichage des infos + print "chbre : %s" % chambre + print "switch : %s" % chbre_sw.switch + print "prise : %s" % chbre_sw.prise + + print "statut : %s" % (chbre_sw.is_enable() and "on" or "off") + + if cmd: + cmd = cmd.lower() + + # modification du statut + if cmd == "off": + print "action : disable" + chbre_sw.disable() + elif cmd == "on": + print "action : enable" + chbre_sw.enable() + + # affichage du nouveau statut + print "statut : %s" % (chbre_sw.is_enable() and "on" or "off") + +if __name__ == '__main__': + if len(sys.argv) == 2: + chambre_on_off(sys.argv[1]) + elif len(sys.argv) == 3: + chambre_on_off(sys.argv[1], sys.argv[2]) + else: + print __doc__ + sys.exit(0) + diff --git a/archive/utils/checkMidIp.py b/archive/utils/checkMidIp.py new file mode 100644 index 00000000..f1be3fb7 --- /dev/null +++ b/archive/utils/checkMidIp.py @@ -0,0 +1,34 @@ +#!/usr/bin/python +# -*- coding: utf-8 -*- +# © Olivier Huber, 2010 +# Licence MIT +""" Ce script vérifie la cohérence entre le mid et l'adresse ip de toutes les +machines """ + +# Depuis la modification de la sémantique du mid et la création du rid, +# ceci n'a plus de raison d'être +# -- +# 20-100, 08/02/13 + +import sys + +sys.path.append('/usr/scripts/gestion') + +from ldap_crans import crans_ldap +import midtools + +db = crans_ldap() + +machines = db.all_machines() + +for machine in machines: + try: + mid_calc = midtools.Mid(None, machine.ip()).mid + except ValueError, e: + print e + else: + if mid_calc != int(machine.id()): + print "La machine associée à l'ip %s a le mid %s alors qu'elle \ + devrait avoir %d" % (machine.ip(), machine.id(), mid_calc) + +exit(0) diff --git a/archive/utils/syslog-summary b/archive/utils/syslog-summary new file mode 100755 index 00000000..f924b87b --- /dev/null +++ b/archive/utils/syslog-summary @@ -0,0 +1,183 @@ +#!/usr/bin/python + +"""Summarize the contents of a syslog log file. + +The syslog(3) service writes system log messages in a certain format: + + Jan 17 19:21:50 zeus kernel: klogd 1.3-3, log source = /proc/kmsg started. + +This program summarizes the contents of such a file, by displaying each +unique (except for the time) line once, and also the number of times such +a line occurs in the input. The lines are displayed in the order they occur +in the input. + +Lars Wirzenius """ + +IGNORE_FILENAME = "/etc/syslog-summary/ignore" +STATE_FILENAME = None +REPEAT = 0 +QUIET = 0 + +import sys, re, getopt, string, md5 + +datepats = [ + re.compile(r"^(Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) [ 0-9][0-9] [ 0-9][0-9]:[0-9][0-9]:[0-9][0-9] "), + re.compile(r"^(Mon|Tue|Wed|Thu|Fri|Sat|Sun) (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) [ 0-9][0-9][0-9][0-9]:[0-9][0-9] "), + re.compile(r"^(Mon|Tue|Wed|Thu|Fri|Sat|Sun) (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) [ 0-9][0-9][0-9][0-9]:[0-9][0-9]:[0-9][0-9] "), +] +pidpat = re.compile(r"^([^ ]* [^ ]*)\[[0-9][0-9]*\]: ") +repeatpat = re.compile(r"^[^ ]* last message repeated (\d+) times$") + +ignore_pats = [] + +def read_patterns(filename): + pats = [] + try: + f = open(filename, "r") + except IOError: + return [] + for line in f.xreadlines(): + if line[-1:] == "\n": + line = line[:-1] + pats.append(re.compile(line)) + f.close() + return pats + +def read_states(filename): + states = {} + if not filename: + return states + try: + f = open(filename, "r") + except IOError: + return states + for line in f.xreadlines(): + fields = string.split(line) + states[fields[0]] = (string.atoi(fields[1]), fields[2]) + f.close() + return states + +def save_states(filename, states): + if not filename: + return + try: + f = open(filename, "w") + except IOError: + return + for filename in states.keys(): + value = states[filename] + f.write("%s %d %s\n" % (filename, value[0], value[1])) + f.close() + +def should_be_ignored(line): + for pat in ignore_pats: + if pat.search(line): + return 1 + return 0 + +def printable_md5(str): + chars = [] + for char in str: + chars.append("%02x" % (ord(char))) + return string.join(chars, "") + +def split_date(line): + for pat in datepats: + m = pat.match(line) + if m: + return line[:m.end()], line[m.end():] + print "line has bad date", "<" + string.rstrip(line) + ">" + return None, line + +def summarize(filename, states): + counts = {} + order = [] + ignored_count = 0 + if not QUIET: + print "Summarizing %s" % filename + file = open(filename, "r") + linecount = 0 + + md5obj = md5.new() + if states.has_key(filename): + oldlines, oldmd5 = states[filename] + for i in xrange(oldlines): + line = file.readline() + md5obj.update(line) + if printable_md5(md5obj.digest()) != oldmd5: + file.seek(0, 0) + md5obj = md5.new() + else: + linecount = oldlines + if not QUIET: + print "%8d Lines skipped (already processed)" % linecount + + line = file.readline() + previous = None + while line: + md5obj.update(line) + linecount = linecount + 1 + date, rest = split_date(line) + if date: + found = pidpat.search(rest) + if found: + rest = found.group(1)+": "+rest[found.end():] + + count = 1 + repeated = None + if REPEAT: + repeated=repeatpat.search(rest) + if repeated and previous: + count = int(repeated.group(1)) + rest = previous + + if should_be_ignored(rest): + ignored_count = ignored_count + count + else: + if counts.has_key(rest): + counts[rest] = counts[rest] + count + else: + assert count==1 + counts[rest] = count + order.append(rest) + + if not repeated: + previous = rest + line = file.readline() + file.close() + md5new = printable_md5(md5obj.digest()) + states[filename] = (linecount, md5new) + if QUIET and order: + print "Summarizing %s" % filename + if not QUIET or order: + print "%8d Patterns to ignore" % len(ignore_pats) + print "%8d Ignored lines" % ignored_count + for rest in order: + print "%8d %s" % (counts[rest], rest), + if not QUIET or order: + print + +def main(): + global ignore_pats, IGNORE_FILENAME, STATE_FILENAME, REPEAT, QUIET + + opts, args = getopt.getopt(sys.argv[1:], "i:qs:r", [ + "ignore=", "quiet", "state=", "repeat" ]) + + for opt, optarg in opts: + if opt == "-i" or opt == "--ignore": + IGNORE_FILENAME = optarg + elif opt == "-s" or opt == "--state": + STATE_FILENAME = optarg + elif opt == "-r" or opt == "--repeat": + REPEAT = 1 + elif opt == "-q" or opt == "--quiet": + QUIET = 1 + + ignore_pats = read_patterns(IGNORE_FILENAME) + states = read_states(STATE_FILENAME) + for filename in args: + summarize(filename, states) + save_states(STATE_FILENAME, states) + +if __name__ == "__main__": + main() diff --git a/archive/vieux/_cranspasswords b/archive/vieux/_cranspasswords new file mode 100644 index 00000000..f1b76bf5 --- /dev/null +++ b/archive/vieux/_cranspasswords @@ -0,0 +1,13 @@ +#compdef cranspasswords + +_fichiers () { + compadd "$@" - $(cranspasswords --list) +} + +_arguments -C -s \ + '--re-encrypt-all[rechiffre tous les fichiers]:Fichiers:_fichiers' \ + '--edit[edite un fichier chiffre]:Fichiers:_fichiers' \ + '--remove[suppression d''un fichier chiffre]:Fichiers:_fichiers' \ + '--view[voir un fichier chiffre]:Fichiers:_fichiers' \ + '--list[liste des fichiers chiffres]' \ + '*::Fichiers:_fichiers' diff --git a/archive/vieux/accounts/README b/archive/vieux/accounts/README new file mode 100644 index 00000000..fb9678f4 --- /dev/null +++ b/archive/vieux/accounts/README @@ -0,0 +1,4 @@ +Accounts : application web de login centraliÃsé avec django +Phase initial, ne pas utiliser ! + +Auteur : GrégoireDétrez \ No newline at end of file diff --git a/archive/vieux/accounts/__init__.py b/archive/vieux/accounts/__init__.py new file mode 100644 index 00000000..e69de29b diff --git a/archive/vieux/accounts/adm/__init__.py b/archive/vieux/accounts/adm/__init__.py new file mode 100644 index 00000000..e69de29b diff --git a/archive/vieux/accounts/adm/views.py b/archive/vieux/accounts/adm/views.py new file mode 100644 index 00000000..ca0d1f1b --- /dev/null +++ b/archive/vieux/accounts/adm/views.py @@ -0,0 +1,28 @@ +# Create your views here. +from accounts.cransaccounts.models import Credential +from django.http import HttpResponse, HttpResponseRedirect +import datetime +from django.contrib.auth.decorators import login_required +from django.shortcuts import render_to_response +from django.template import RequestContext + +def check_credential( request ): + cred = request.GET['cred'] + service = request.GET['service'] + response = HttpResponse("INVALID") + # retreive credential in db + try: + cred = Credential.objects.get(token=cred, service=service) + ## if not to old, accept + if cred.date.today() - cred.date < datetime.timedelta( minutes=10 ): + response = HttpResponse("VALID") + response['username'] = cred.user.username + response['fullname'] = cred.user.get_full_name() + response['email'] = cred.user.email + else: + response = HttpResponse("INVALID") + except Credential.DoesNotExist: + response = HttpResponse("INVALID") + response["content-type"] = "text/plain" + return response + ## else, or if not exist reject diff --git a/archive/vieux/accounts/adm_settings.py b/archive/vieux/accounts/adm_settings.py new file mode 100644 index 00000000..ba93d762 --- /dev/null +++ b/archive/vieux/accounts/adm_settings.py @@ -0,0 +1,83 @@ +# Django settings for accounts project. +# -*- coding: utf-8 -*- + +from settings import * +#DEBUG = True +#TEMPLATE_DEBUG = DEBUG + +#ADMINS = ( + # ('Your Name', 'your_email@domain.com'), +#) + +# MANAGERS = ADMINS + +# DATABASE_ENGINE = 'mysql' # 'postgresql', 'mysql', 'sqlite3' or 'ado_mssql'. +# DATABASE_NAME = 'webaccounts' # Or path to database file if using sqlite3. +# DATABASE_USER = 'djangoaccounts' # Not used with sqlite3. +# DATABASE_PASSWORD = '' # Not used with sqlite3. +# DATABASE_HOST = '' # Set to empty string for localhost. Not used with sqlite3. +# DATABASE_PORT = '' # Set to empty string for default. Not used with sqlite3. + +# # Local time zone for this installation. All choices can be found here: +# # http://www.postgresql.org/docs/current/static/datetime-keywords.html#DATETIME-TIMEZONE-SET-TABLE +# TIME_ZONE = 'America/Chicago' + +# # Language code for this installation. All choices can be found here: +# # http://www.w3.org/TR/REC-html40/struct/dirlang.html#langcodes +# # http://blogs.law.harvard.edu/tech/stories/storyReader$15 +# LANGUAGE_CODE = 'en-us' + +# SITE_ID = 1 + +# # Absolute path to the directory that holds media. +# # Example: "/home/media/media.lawrence.com/" +# MEDIA_ROOT = '' + +# # URL that handles the media served from MEDIA_ROOT. +# # Example: "http://media.lawrence.com" +# MEDIA_URL = '' + +# # URL prefix for admin media -- CSS, JavaScript and images. Make sure to use a +# # trailing slash. +# # Examples: "http://foo.com/media/", "/media/". +# ADMIN_MEDIA_PREFIX = '/media/' + +# # Make this unique, and don't share it with anybody. +# SECRET_KEY = 'lk5§8¨Â§(rfghurdffg$¹^dfg§t"arefzgudsrtgyat' + +# # List of callables that know how to import templates from various sources. +# TEMPLATE_LOADERS = ( +# 'django.template.loaders.filesystem.load_template_source', +# 'django.template.loaders.app_directories.load_template_source', +# # 'django.template.loaders.eggs.load_template_source', +# ) + +# MIDDLEWARE_CLASSES = ( +# 'django.middleware.common.CommonMiddleware', +# 'django.contrib.sessions.middleware.SessionMiddleware', +# 'django.contrib.auth.middleware.AuthenticationMiddleware', +# 'django.middleware.doc.XViewMiddleware', +# ) + +ROOT_URLCONF = 'accounts.adm_urls' + +#TEMPLATE_DIRS = ( +# # Put strings here, like "/home/html/django_templates". +# # Always use forward slashes, even on Windows. +# "/usr/scripts/accounts/templates/", +#) + +INSTALLED_APPS = ( + 'django.contrib.auth', + 'django.contrib.contenttypes', + 'django.contrib.sessions', + 'django.contrib.sites', +# 'django.contrib.admin', + 'accounts.adm', +) + + +AUTHENTICATION_BACKENDS = ( +# 'django.contrib.auth.backends.ModelBackend', +# 'accounts.backend.LdapBackend', +) diff --git a/archive/vieux/accounts/adm_urls.py b/archive/vieux/accounts/adm_urls.py new file mode 100644 index 00000000..e79c4713 --- /dev/null +++ b/archive/vieux/accounts/adm_urls.py @@ -0,0 +1,7 @@ +from django.conf.urls.defaults import * + +urlpatterns = patterns('', + # Example: + # (r'^test/', include('accounts.apps.foo.urls.foo')), + (r'^verify/$', 'accounts.adm.views.check_credential'), +) diff --git a/archive/vieux/accounts/conf_apache b/archive/vieux/accounts/conf_apache new file mode 100644 index 00000000..6b43827c --- /dev/null +++ b/archive/vieux/accounts/conf_apache @@ -0,0 +1,44 @@ + + # Tous les alias + ServerName accounts.adm + ServerAlias accounts.adm.crans.org + + + SetHandler python-program + PythonPath "['/usr/scripts/'] + sys.path" + PythonHandler django.core.handlers.modpython + SetEnv DJANGO_SETTINGS_MODULE accounts.adm_settings + #PythonOption django.root / + PythonDebug On + + CustomLog /var/log/apache2/accounts.adm.log combined + + + + # Tous les alias + ServerName accounts + ServerAlias accounts.crans.org + + RedirectMatch /.* https://accounts.crans.org/$1 + TransferLog /dev/null + + + + + + ServerName accounts.crans.org + SSLEngine on + + + + SetHandler python-program + PythonPath "['/usr/scripts/'] + sys.path" + PythonHandler django.core.handlers.modpython + SetEnv DJANGO_SETTINGS_MODULE accounts.settings + #PythonOption django.root / + PythonDebug On + + CustomLog /var/log/apache2/accounts.log combined + + + diff --git a/archive/vieux/accounts/cransaccounts/__init__.py b/archive/vieux/accounts/cransaccounts/__init__.py new file mode 100644 index 00000000..e69de29b diff --git a/archive/vieux/accounts/cransaccounts/backend.py b/archive/vieux/accounts/cransaccounts/backend.py new file mode 100644 index 00000000..63af6d12 --- /dev/null +++ b/archive/vieux/accounts/cransaccounts/backend.py @@ -0,0 +1,42 @@ +from django.conf import settings +from django.contrib.auth.models import User, check_password +import cranslib.gestion.authentification as auth +import cranslib.utils.logs as logs +LOGGER = logs.getFileLogger( "accounts" ) + +class LdapBackend: + """ + Authenticate against the cr@ns API + """ + def authenticate(self, username=None, password=None): + try: + crans_user = auth.login( username, password ) + LOGGER.info( "user %s logged in" % username ) + try: + user = User.objects.get(username=username) + except User.DoesNotExist: + # Create a new user. Note that we can set password + # to anything, because it won't be checked; + user = User(username=username, password="") + user.first_name = crans_user.prenom + user.last_name = crans_user.nom + user.email = crans_user.mail + if crans_user.is_nounou(): + user.is_staff = True + user.is_superuser = True + user.save() + return user + except auth.AuthentificationFailed, e: + print "Auth failed" + LOGGER.warning("authentification Failed [%s]" % str(e) ) + except Exception, e: + LOGGER.critical( str( e ) ) + raise e + + + + def get_user(self, user_id): + try: + return User.objects.get(pk=user_id) + except User.DoesNotExist: + return None diff --git a/archive/vieux/accounts/cransaccounts/models.py b/archive/vieux/accounts/cransaccounts/models.py new file mode 100644 index 00000000..1c9e2c55 --- /dev/null +++ b/archive/vieux/accounts/cransaccounts/models.py @@ -0,0 +1,11 @@ +from django.db import models +from django.contrib.auth.models import User + +# Create your models here. +class Credential(models.Model): + service = models.CharField("Service", max_length=200) + user = models.ForeignKey(User) + token = models.CharField("Credential", max_length=1000, unique=True) + date = models.DateTimeField(auto_now_add=True) + class Admin: + list_display = ('user', 'token', 'service', 'date') \ No newline at end of file diff --git a/archive/vieux/accounts/cransaccounts/uuid.py b/archive/vieux/accounts/cransaccounts/uuid.py new file mode 100644 index 00000000..8cdbb80c --- /dev/null +++ b/archive/vieux/accounts/cransaccounts/uuid.py @@ -0,0 +1,234 @@ +"""UUID (universally unique identifiers) as specified in RFC 4122. + +This module provides the UUID class and the functions uuid1(), uuid3(), +uuid4(), uuid5() for generating version 1, 3, 4, and 5 UUIDs respectively. + +This module works with Python 2.3 or higher.""" + +__author__ = 'Ka-Ping Yee ' +__date__ = '$Date: 2005/11/30 11:51:58 $'.split()[1].replace('/', '-') +__version__ = '$Revision: 1.10 $' + +RESERVED_NCS, RFC_4122, RESERVED_MICROSOFT, RESERVED_FUTURE = [ + 'reserved for NCS compatibility', 'specified in RFC 4122', + 'reserved for Microsoft compatibility', 'reserved for future definition'] + +class UUID(object): + """Instances of the UUID class represent UUIDs as specified in RFC 4122. + Converting a UUID to a string using str() produces a string in the form + "{12345678-1234-1234-1234-123456789abc}". The UUID constructor accepts + a similar string (braces and hyphens optional), or six integer arguments + (with 32-bit, 16-bit, 16-bit, 8-bit, 8-bit, and 48-bit values + respectively). UUID objects have the following attributes: + + bytes gets or sets the UUID as a 16-byte string + + urn gets the UUID as a URN as specified in RFC 4122 + + variant gets or sets the UUID variant as one of the constants + RESERVED_NCS, RFC_4122, RESERVED_MICROSOFT, RESERVED_FUTURE + + version gets or sets the UUID version number (1 through 5) + """ + + def __init__(self, *args): + """Create a UUID either from a string representation in hexadecimal + or from six integers (32-bit time_low, 16-bit time_mid, 16-bit + time_hi_ver, 8-bit clock_hi_res, 8-bit clock_low, 48-bit node).""" + if len(args) == 1: + digits = args[0].replace('urn:', '').replace('uuid:', '') + digits = digits.replace('{', '').replace('}', '').replace('-', '') + assert len(digits) == 32, ValueError('badly formed UUID string') + time_low = int(digits[:8], 16) + time_mid = int(digits[8:12], 16) + time_hi_ver = int(digits[12:16], 16) + clock_hi_res = int(digits[16:18], 16) + clock_low = int(digits[18:20], 16) + node = int(digits[20:32], 16) + else: + (time_low, time_mid, time_hi_ver, + clock_hi_res, clock_low, node) = args + assert 0 <= time_low < 0x100000000, ValueError('time_low out of range') + assert 0 <= time_mid < 1<<16, ValueError('time_mid out of range') + assert 0 <= time_hi_ver < 1<<16, ValueError('time_hi_ver out of range') + assert 0 <= clock_hi_res < 1<<8, ValueError('clock_hi_res out of range') + assert 0 <= clock_low < 1<<8, ValueError('clock_low out of range') + assert 0 <= node < 0x1000000000000, ValueError('node out of range') + self.time_low = time_low + self.time_mid = time_mid + self.time_hi_ver = time_hi_ver + self.clock_hi_res = clock_hi_res + self.clock_low = clock_low + self.node = node + + def __cmp__(self, other): + return cmp(self.bytes, getattr(other, 'bytes', other)) + + def __str__(self): + return '{%08x-%04x-%04x-%02x%02x-%012x}' % ( + self.time_low, self.time_mid, self.time_hi_ver, + self.clock_hi_res, self.clock_low, self.node) + + def __repr__(self): + return 'UUID(%r)' % str(self) + + def get_bytes(self): + def byte(n): + return chr(n & 0xff) + + return (byte(self.time_low >> 24) + byte(self.time_low >> 16) + + byte(self.time_low >> 8) + byte(self.time_low) + + byte(self.time_mid >> 8) + byte(self.time_mid) + + byte(self.time_hi_ver >> 8) + byte(self.time_hi_ver) + + byte(self.clock_hi_res) + byte(self.clock_low) + + byte(self.node >> 40) + byte(self.node >> 32) + + byte(self.node >> 24) + byte(self.node >> 16) + + byte(self.node >> 8) + byte(self.node)) + + def set_bytes(self, bytes): + values = map(ord, bytes) + self.time_low = ((values[0] << 24) + (values[1] << 16) + + (values[2] << 8) + values[3]) + self.time_mid = (values[4] << 8) + values[5] + self.time_hi_ver = (values[6] << 8) + values[7] + self.clock_hi_res = values[8] + self.clock_low = values[9] + self.node = ((values[10] << 40) + (values[11] << 32) + + (values[12] << 24) + (values[13] << 16) + + (values[14] << 8) + values[15]) + + bytes = property(get_bytes, set_bytes) + + def get_urn(self): + return 'urn:uuid:%08x-%04x-%04x-%02x%02x-%012x' % ( + self.time_low, self.time_mid, self.time_hi_ver, + self.clock_hi_res, self.clock_low, self.node) + + urn = property(get_urn) + + def get_variant(self): + if not self.clock_hi_res & 0x80: + return RESERVED_NCS + elif not self.clock_hi_res & 0x40: + return RFC_4122 + elif not self.clock_hi_res & 0x20: + return RESERVED_MICROSOFT + else: + return RESERVED_FUTURE + + def set_variant(self, variant): + if variant == RESERVED_NCS: + self.clock_hi_res &= 0x7f + elif variant == RFC_4122: + self.clock_hi_res &= 0x3f + self.clock_hi_res |= 0x80 + elif variant == RESERVED_MICROSOFT: + self.clock_hi_res &= 0x1f + self.clock_hi_res |= 0xc0 + elif variant == RESERVED_FUTURE: + self.clock_hi_res &= 0x1f + self.clock_hi_res |= 0xe0 + else: + raise ValueError('illegal variant identifier') + + variant = property(get_variant, set_variant) + + def get_version(self): + return self.time_hi_ver >> 12 + + def set_version(self, version): + assert 1 <= version <= 5, ValueError('illegal version number') + self.time_hi_ver &= 0x0fff + self.time_hi_ver |= (version << 12) + + version = property(get_version, set_version) + +def unixgetaddr(program): + """Get the hardware address on a Unix machine.""" + from os import popen + for line in popen(program): + words = line.lower().split() + if 'hwaddr' in words: + addr = words[words.index('hwaddr') + 1] + return int(addr.replace(':', ''), 16) + if 'ether' in words: + addr = words[words.index('ether') + 1] + return int(addr.replace(':', ''), 16) + +def wingetaddr(program): + """Get the hardware address on a Windows machine.""" + from os import popen + for line in popen(program + ' /all'): + if line.strip().lower().startswith('physical address'): + addr = line.split(':')[-1].strip() + return int(addr.replace('-', ''), 16) + +def getaddr(): + """Get the hardware address as a 48-bit integer.""" + from os.path import join, isfile + for dir in ['/sbin', '/usr/sbin', r'c:\windows', + r'c:\windows\system', r'c:\windows\system32']: + if isfile(join(dir, 'ifconfig')): + return unixgetaddr(join(dir, 'ifconfig')) + if isfile(join(dir, 'ipconfig.exe')): + return wingetaddr(join(dir, 'ipconfig.exe')) + +def uuid1(): + """Generate a UUID based on the time and hardware address.""" + from time import time + from random import randrange + nanoseconds = int(time() * 1e9) + # 0x01b21dd213814000 is the number of 100-ns intervals between the + # UUID epoch 1582-10-15 00:00:00 and the Unix epoch 1970-01-01 00:00:00. + timestamp = int(nanoseconds/100) + 0x01b21dd213814000 + clock = randrange(1<<16) # don't use stable storage + time_low = timestamp & (0x100000000 - 1) + time_mid = (timestamp >> 32) & 0xffff + time_hi_ver = (timestamp >> 48) & 0x0fff + clock_low = clock & 0xff + clock_hi_res = (clock >> 8) & 0x3f + node = getaddr() + uuid = UUID(time_low, time_mid, time_hi_ver, clock_low, clock_hi_res, node) + uuid.variant = RFC_4122 + uuid.version = 1 + return uuid + +def uuid3(namespace, name): + """Generate a UUID from the MD5 hash of a namespace UUID and a name.""" + from md5 import md5 + uuid = UUID(0, 0, 0, 0, 0, 0) + uuid.bytes = md5(namespace.bytes + name).digest()[:16] + uuid.variant = RFC_4122 + uuid.version = 3 + return uuid + +def uuid4(): + """Generate a random UUID.""" + try: + from os import urandom + except: + from random import randrange + uuid = UUID(randrange(1<<32), randrange(1<<16), randrange(1<<16), + randrange(1<<8), randrange(1<<8), randrange(1<<48)) + else: + uuid = UUID(0, 0, 0, 0, 0, 0) + uuid.bytes = urandom(16) + uuid.variant = RFC_4122 + uuid.version = 4 + return uuid + +def uuid5(namespace, name): + """Generate a UUID from the SHA-1 hash of a namespace UUID and a name.""" + from sha import sha + uuid = UUID(0, 0, 0, 0, 0, 0) + uuid.bytes = sha(namespace.bytes + name).digest()[:16] + uuid.variant = RFC_4122 + uuid.version = 5 + return uuid + +NAMESPACE_DNS = UUID('{6ba7b810-9dad-11d1-80b4-00c04fd430c8}') +NAMESPACE_URL = UUID('{6ba7b811-9dad-11d1-80b4-00c04fd430c8}') +NAMESPACE_OID = UUID('{6ba7b812-9dad-11d1-80b4-00c04fd430c8}') +NAMESPACE_X500 = UUID('{6ba7b814-9dad-11d1-80b4-00c04fd430c8}') + + diff --git a/archive/vieux/accounts/cransaccounts/views.py b/archive/vieux/accounts/cransaccounts/views.py new file mode 100644 index 00000000..d54c5c58 --- /dev/null +++ b/archive/vieux/accounts/cransaccounts/views.py @@ -0,0 +1,53 @@ +# Create your views here. +from models import Credential +from django.http import HttpResponse, HttpResponseRedirect +import datetime +import uuid +from django.contrib.auth.decorators import login_required +from django.shortcuts import render_to_response +from django.template import RequestContext + +def index( request ): + return render_to_response('account_index.html', context_instance=RequestContext(request) ) +index = login_required(index) + +def auth( request ): + service = request.GET['service'] + # create credential + ## generat token + token = str( uuid.uuid4() ) + ## save in db + cred = Credential( service=service, token=token, user=request.user ) + cred.save() + # redirect + ## by service... + if service == "blogs": + return callbacks.blogs_callback( cred ) + return HttpResponse("cred=%s" % cred.token) +auth = login_required(auth) + + +def check_credential( request ): + cred = request.GET['cred'] + service = request.GET['service'] + # retreive credential in db + try: + cred = Credential.objects.get(token=cred, service=service) + ## if not to old, accept + if cred.date.today() - cred.date < datetime.timedelta( minutes=10 ): + response = HttpResponse("VALID") + response['username'] = cred.user.username + response['fullname'] = cred.user.get_full_name() + response['email'] = cred.user.email + return response + return HttpResponse("INVALID") + except Credential.DoesNotExist: + return HttpResponse("INVALID") + ## else, or if not exist reject + + +class callbacks: + def blogs_callback( cred ): + url="http://blogtest.crans.org/actions/auth/return?cred=" + cred.token + return HttpResponseRedirect(url) + blogs_callback = staticmethod(blogs_callback) \ No newline at end of file diff --git a/archive/vieux/accounts/manage.py b/archive/vieux/accounts/manage.py new file mode 100755 index 00000000..bcdd55e2 --- /dev/null +++ b/archive/vieux/accounts/manage.py @@ -0,0 +1,11 @@ +#!/usr/bin/python +from django.core.management import execute_manager +try: + import settings # Assumed to be in the same directory. +except ImportError: + import sys + sys.stderr.write("Error: Can't find the file 'settings.py' in the directory containing %r. It appears you've customized things.\nYou'll have to run django-admin.py, passing it your settings module.\n(If the file settings.py does indeed exist, it's causing an ImportError somehow.)\n" % __file__) + sys.exit(1) + +if __name__ == "__main__": + execute_manager(settings) diff --git a/archive/vieux/accounts/media/logo.png b/archive/vieux/accounts/media/logo.png new file mode 100644 index 0000000000000000000000000000000000000000..73c42a60618cafb9e291181886c86e3723b0e5de GIT binary patch literal 19117 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