Results 1 to 4 of 4

Thread: Post your startup/shutdown files here!

  1. #1

    Post your startup/shutdown files here!

    I thought it would be a good idea to have a thread were we post our /usr/local/sbin stuff: post-boot, post-mount, post-firewall, and pre-shutdown. Learning by example is a really good thing.

    For those who don't know yet, these files under the Oleg firmware are the router's startup/shutdown system. Use them to make the router do special things when it starts and when it stops.

    -----------------------------------
    Remember! These files need to be executables (chmod +x filename), and start with #!/bin/sh on the 1st line, in order to work. After you modify them use this command to save them to flash, otherwise all modification will be lost upon reboot:
    flashfs save && flashfs commit
    -----------------------------------

    OK so here goes. I'm using a HDD connected via USB and that's all as far as USB stuff is concerned. Here's my post-boot:

    Code:
    #!/bin/sh
    # very important! this gives you SSH access to the
    # router! you most likely don't want to leave it out!
    dropbear -p 24 -j -k
    
    # Make sure the kernel modules needed for the
    # USB harddrive to work are loaded
    [ ! -d /dev/discs ] && \
    insmod scsi_mod && \
    insmod sd_mod && \
    insmod usb-storage && \
    sleep 5
    
    # Wait for /opt to mount. For 30 seconds I will try
    # each second to mount the hdd partition that
    # holds the main system. Be warned that mine is
    # on the 2nd partition, yours is probably on 1st!
    # Once it's mounted it will stop trying (common sense).
    i=0; while [ $i -le 30 ]; do
      mount /dev/discs/disc0/part2 /opt -t ext3
      [ -d /opt/etc ] && break
      sleep 1
      i=$(expr $i + 1)
    done
    
    # Unload kernel modules I'm not using:
    rmmod printer
    
    # If we couldn't mount the HDD just bail out on the
    # rest of post-boot. All the stuff from this point on
    # depends on it being mounted. If you have stuff
    # that will work regardless, put it before this section.
    [ $i -gt 30 ] && return
    
    # Activate swap. Again, be careful. My swap is on
    # the 1st partition, yours is probably on 2nd.
    swapon /dev/discs/disc0/part1
    
    # Umount redundant mountpoint
    umount /tmp/harddisk
    
    # If you want syslog to log to a file on the HDD
    # instead of /tmp/syslog.log (which is in RAM),
    # here's how you do it:
    #killall syslogd && \
    #/sbin/syslogd -m 0 -O /opt/var/log/messages -S -l 7
    
    # Start a ftp server. If vsftpd is available use that,
    # otherwise use stupid-ftpd (which is called that for a reason).
    [ -x /opt/sbin/vsftpd ] && \
    /opt/sbin/vsftpd /opt/etc/vsftpd.conf || \
    /usr/sbin/stupid-ftpd -f /opt/etc/stupid-ftpd.conf -p /tmp/var/run/stupid-ftpd.pid
    
    # Start transmission. I use rtorrent nowadays so
    # for me it's disabled.
    #/opt/sbin/transmission_watchdog
    
    # Run all active services - active means starts with S
    /opt/etc/init.d/rc.unslung
    
    # Anonymization proxy: Tor and Privoxy
    /opt/sbin/privoxy --pidfile /opt/var/run/privoxy.pid /opt/etc/privoxy/config
    /opt/bin/tor &
    
    # Start DynDNS automatic updater:
    /opt/sbin/ddclient &
    
    # Start rtorrent:
    (cd /opt/files/rtorrent && \
    /opt/bin/screen -d -m -fn \
    /opt/bin/rtorrent -o \
    import=/usr/local/root/.rtorrent.rc) &
    Now post-firewall. Careful with this one! Don't mess with the firewall if you don't know what you're doing!

    Code:
    #!/bin/sh
    
    ## FIREWALL SECTION
    
    # set default policy (for extra paranoia)
    iptables -P INPUT DROP
    
    # Drop access to certain external ports. Again,
    # paranoia. My FTP and Asus web interface don't
    # even use these ports, but just in case I ever
    # forget, I block them here.
    iptables -D INPUT -p tcp --dport 21 -j DROP
    iptables -D INPUT -p tcp --dport 80 -d "$4" -j DROP
    
    # Allow access to various router services from WAN.
    # Below you can see me activating the rtorrent
    # external port range, a webserver and 27 is SSH:
    for P in 10000:11000 8000 27; do
      iptables -I INPUT 1 -p tcp -i "$1" --syn --dport $P -j ACCEPT
    done
    
    # Manual port forwarding. Normally it's done from
    # the router's web config interface. But if you ever
    # don't want to do it there for some reason, or need
    # to do it from the command line without rebooting
    # the router, here's how. Basically you add a rule
    # to the VSERVER chain in the nat table. Note the
    # protocol (-p udp), the interface (-i vlan1), the
    # destination port (--dport and again at the end of
    # --to) and the LAN IP that should receive it:
    iptables -t nat -A VSERVER -p udp -i vlan1 --dport 5904 -j DNAT --to 192.168.123.1:5904
    
    ## WONDERSHAPER SECTION
    
    # The wshaper script is an easy to use wrapper
    # over the tc tool. It will cap your upper download
    # and upload speed in order to take full advantage
    # of it and prioritize certain types of LAN traffic
    # over others (including traffic done by the router
    # itself. For example, no matter how hard transmission
    # will download or upload, you'll be able to browse
    # the web properly from your LAN computer.
    # the download and upload cap:
    SPEEDS="10240 1024"
    # LAN ports to prioritize:
    PORTS="20 21 22 25 110 143 80 443 587 995 5050 1863 5222 6667"
    # I try my modified wshaper (see my post in its
    # thread!) which accepts ports too. The original
    # whaper only accepted IP's for prioritizing. Except
    # I don't want bittorrent to eat bandwidth even
    # when I run it from my LAN station, so I prefer ports.
    # If my wshaper is not installed I use the original.
    [ -x /opt/app/local/bin/wshaper ] && \
    /opt/app/local/bin/wshaper start $1 $SPEEDS "" "" "" "" "$PORTS" || \
    /sbin/wshaper start $1 $SPEEDS
    # priority ports
    #20/21:FTP, 22:SSH, 25:SMTP, 110:POP3, 143:IMAP, 80:HTTP, 443:HTTPS
    #587+995:secure SMTP/POP3, 5050/1863/5222:YM/MSN/Jabber, 6667:IRC
    
    # Log the parameters ($1 to $4) to a file.
    # It's useful when I edit these files and forget
    # which stands for what.
    echo "$@" > /usr/local/root/param.log
    Finally, pre-shutdown:

    Code:
    #!/bin/sh
    
    # This one is simple. I send signal INT to rtorrent
    # to tell it to do a graceful shutdown that will make
    # it save its hashes and full status. (You need to
    # enable sessions with session=dir in rtorrent.rc
    # for this to work!):
    /bin/kill -INT $(/bin/pidof rtorrent) &
    # Then I wait for 10 seconds to be sure it died
    # gracefully. The rtorrent docs say it dies in 5,
    # I just wanna make extra sure.
    /bin/sleep 10
    Last edited by wirespot; 10-12-2010 at 23:18.

  2. #2
    i don't quite get what are these params ($1 to $4)

  3. #3
    When the bootup procedure calls the post-firewall script, it gives it 4 parameters. The first two IIRC are the internal and external interface names of the router, and the 3rd and 4th are the internal and external IP addresses.

    It sends these params because usually you will need to know them to use iptables.

    If you did that last line of post-firewall then look into /usr/local/root/param.log and you will see what the params look like, that's why I put it there.

  4. #4
    Quote Originally Posted by wirespot View Post
    When the bootup procedure calls the post-firewall script, it gives it 4 parameters. The first two IIRC are the internal and external interface names of the router, and the 3rd and 4th are the internal and external IP addresses.

    It sends these params because usually you will need to know them to use iptables.

    If you did that last line of post-firewall then look into /usr/local/root/param.log and you will see what the params look like, that's why I put it there.
    ok, thank you for the prompt response
    in my log file i have:
    Code:
    ppp0 79.116.2xx.*** br0 192.168.10.254 vlan2 10.10.0.218
    ppp0 is my external IP
    br0 is my internal IP
    vlan2 i don't know fot what it stands for !? - i suppose is the temporary IP assigned by ISP. Any thoughts ?

    my ISP indicated 10.0.0.1 as gateway
    my ISP indicated 193.231.189.19 as DNSs

    the important parts of the log from the router are:
    Code:
    Jan  1 02:00:05 kernel: klogd started: BusyBox v1.17.4 (2010-12-04 23:42:06 CET)
    
    Jan  1 02:00:06 dnsmasq-dhcp[215]: DHCP, IP range 192.168.10.200 -- 192.168.10.215, lease time 3h
    Jan  1 02:00:06 dnsmasq[215]: read /etc/hosts - 7 addresses
    Jan  1 02:00:06 dnsmasq-dhcp[215]: read /etc/ethers - 5 addresses
    Jan  1 02:00:08 dnsmasq[215]: using nameserver 193.231.189.19#53
    Jan  1 02:00:08 dhcp client: bound IP : 10.10.0.218 from 
    Jan  1 02:00:09 pppd[324]: Plugin rp-pppoe.so loaded.
    Jan  1 02:00:09 pppd[324]: RP-PPPoE plugin version 3.10 compiled against pppd 2.4.5
    Jan  1 02:00:09 pppd[325]: pppd 2.4.5 started by admin, uid 0
    Jan  1 02:00:09 pppd[325]: PAP authentication succeeded
    Jan  1 02:00:09 pppd[325]: peer from calling number 00:14:5E:95:FB:3F authorized
    Jan  1 02:00:09 pppd[325]: local  IP address 79.116.2xx.***
    Jan  1 02:00:09 pppd[325]: remote IP address 10.0.0.1
    Jan  1 02:00:09 pppd[325]: primary   DNS address 193.231.189.18
    Jan  1 02:00:09 pppd[325]: secondary DNS address 193.231.189.19

Similar Threads

  1. Ushare playing MP4 videos as audio files
    By emailpr in forum WL-700g Q&A
    Replies: 1
    Last Post: 08-12-2007, 09:01
  2. Files and dirs 'lost'. Please help!
    By raas in forum WL-500gP Q&A
    Replies: 7
    Last Post: 07-11-2007, 17:42
  3. Replies: 4
    Last Post: 26-10-2007, 00:26
  4. Streaming Nero Digital (or mp4), avi video files..
    By emailpr in forum WL-700g Q&A
    Replies: 2
    Last Post: 10-09-2007, 01:04
  5. Post lost?
    By ikerstges in forum WL-500g Q&A
    Replies: 3
    Last Post: 15-02-2006, 12:41

Tags for this Thread

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •