geomaster

S23trans

Oct 18th, 2011
142
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Bash 6.71 KB | None | 0 0
  1. #!/bin/sh
  2. #
  3. # description: Starts ans stops Transmission daemon
  4. #
  5. bin=/usr/local/etc/mos/bin
  6. mos=/usr/local/etc/mos/trans
  7.  
  8. cred="user:passwd"
  9.  
  10. getParam() {
  11.   cat $mos/home/settings.json | sed -n 's/^.*"'$1'".*: *"*\([^ ,"]*\).*$/\1/p'
  12. }
  13.  
  14. start() {
  15.         # waiting for mount
  16.         $bin/wait_mount && exit 1
  17.  
  18.         # copying files
  19.         cgi=/tmp/www/cgi-bin
  20.         [ -d /sbin/www ] && cgi=/sbin/www/cgi-bin
  21.         [ ! -d $cgi ] && mkdir $cgi
  22.         cp -af $mos/torrents_xml.cgi $cgi/
  23.  
  24.         export TRANSMISSION_HOME=$mos
  25.  
  26.         # localization
  27.         [ -e $mos/web ] && [ -L $mos/web ] && rm -f $mos/web
  28.         if [ "$( cat /usr/local/etc/mos/etc/core.ini | sed -n 's/^ *language *= *\(.*\)$/\1/p' )" == "ru" ] ; then
  29.           ln -s $mos/web_ru/ $mos/web
  30.         else
  31.           ln -s $mos/web_en/ $mos/web
  32.         fi
  33.         export TRANSMISSION_WEB_HOME=$mos/web
  34.  
  35.         #prepare paths
  36.         export USERNAME=root
  37.         mkdir -p /var/run
  38.         mkdir -p /var/log
  39.         mkdir -p /var/tmp
  40.         chmod 777 /var/tmp
  41.  
  42.         sd=
  43.         for folder in /tmp/usbmounts/ext3 /tmp/hdd/volumes/HDD*/ext /tmp/hdd/volumes/HDD*/ext3 /tmp/hddmedia/*/ext3 /tmp/usbmounts/sd*/ext3 /tmp/hdd/volumes/HDD* /tmp/hddmedia/* /tmp/usbmounts/sd*; do
  44.                 [ -d "$folder" ] || continue
  45.                 m=$(cat /proc/mounts | grep "$folder" | grep -v ufsd)
  46.                 [ $? -ne 0 ] && continue
  47.                 sd="$folder"
  48.                 fs=$(echo $m | cut -d" " -f 3)
  49.                 if [ "$fs" == ext3 -o "$fs" == ext2 ]; then
  50.                         limit_down=2048
  51.                         limit_up=512
  52.                         limit_file=100
  53.                         limit_peer=100
  54.                         limit_peer_t=30
  55.                         prealloc=1
  56.                 else
  57.                         limit_down=1024
  58.                         limit_up=100
  59.                         limit_file=30
  60.                         limit_peer=50
  61.                         limit_peer_t=50
  62.                         prealloc=1
  63.                 fi
  64.                 break
  65.         done
  66.         [ -z "$sd" ] && exit 1
  67.  
  68.         dl_dir=$sd/torrent/complete
  69.         ic_dir=$sd/torrent/incomplete
  70.         wch_dir=$sd/torrent/watch
  71.  
  72.         [ ! -d $mos/home ] && mkdir -p $mos/home
  73.         export TRANSMISSION_CONFIG_PATH=$mos/home
  74.  
  75.         if [ -f $mos/home/settings.json ] ; then
  76.                 # use config
  77.                 i=$( getParam download-dir )
  78.                 [ -n "$i" ] && dl_dir=$i
  79.                 is_ic=$( getParam incomplete-dir-enabled )
  80.                 i=$( getParam incomplete-dir )
  81.                 [ -n "$i" ] && ic_dir=$i
  82.                 i=$( getParam watch-dir )
  83.                 [ -n "$i" ] && wch_dir=$i
  84.         else
  85.                 # create config
  86.                 echo '{
  87.    "alt-speed-down": 5,
  88.    "alt-speed-enabled": false,
  89.    "alt-speed-time-begin": 540,
  90.    "alt-speed-time-day": 127,
  91.    "alt-speed-time-enabled": false,
  92.    "alt-speed-time-end": 1320,
  93.    "alt-speed-up": 5,
  94.    "bind-address-ipv4": "0.0.0.0",
  95.    "bind-address-ipv6": "::",
  96.    "blocklist-enabled": false,
  97.    "blocklist-url": "http://www.example.com/blocklist",
  98.    "cache-size-mb": 2,
  99.    "dht-enabled": true,
  100.    "download-dir": "'$dl_dir'",
  101.    "encryption": 1,
  102.    "idle-seeding-limit": 10,
  103.    "idle-seeding-limit-enabled": true,
  104.    "incomplete-dir": "'$ic_dir'",
  105.    "incomplete-dir-enabled": true,
  106.    "lazy-bitfield-enabled": true,
  107.    "lpd-enabled": false,
  108.    "message-level": 2,
  109.    "open-file-limit": '$limit_file',
  110.    "peer-limit-global": '$limit_peer',
  111.    "peer-limit-per-torrent": '$limit_peer_t',
  112.    "peer-congestion-algorithm": "",
  113.    "peer-port": 51413,
  114.    "peer-port-random-high": 65535,
  115.    "peer-port-random-low": 49152,
  116.    "peer-port-random-on-start": false,
  117.    "peer-socket-tos": "default",
  118.    "pex-enabled": true,
  119.    "port-forwarding-enabled": true,
  120.    "preallocation": '$prealloc',
  121.    "prefetch-enabled": 1,
  122.    "proxy": "",
  123.    "proxy-auth-enabled": false,
  124.    "proxy-auth-password": "",
  125.    "proxy-auth-username": "",
  126.    "proxy-enabled": false,
  127.    "proxy-port": 80,
  128.    "proxy-type": 0,
  129.    "ratio-limit": 0.0098,
  130.    "ratio-limit-enabled": true,
  131.    "rename-partial-files": false,
  132.    "rpc-authentication-required": true,
  133.    "rpc-bind-address": "0.0.0.0",
  134.    "rpc-enabled": true,
  135.    "rpc-password": "passwd",
  136.    "rpc-port": 9091,
  137.    "rpc-url": "/transmission/",
  138.    "rpc-username": "user",
  139.    "rpc-whitelist": "127.0.0.1",
  140.    "rpc-whitelist-enabled": false,
  141.    "script-torrent-done-enabled": false,
  142.    "script-torrent-done-filename": "",
  143.    "speed-limit-down": '$limit_down',
  144.    "speed-limit-down-enabled": false,
  145.    "speed-limit-up": '$limit_up',
  146.    "speed-limit-up-enabled": true,
  147.    "start-added-torrents": true,
  148.    "trash-original-torrent-files": false,
  149.    "umask": 18,
  150.    "upload-slots-per-torrent": 14,
  151.    "utp-enabled": false,
  152.    "watch-dir": "'$wch_dir'",
  153.    "watch-dir-enabled": true
  154. }' > $mos/home/settings.json
  155.         fi
  156.         #remount rw torrent drive
  157.         #mount -o remount,rw $( dirname $dl_dir )
  158.  
  159.         [ ! -d $dl_dir ] && mkdir -p $dl_dir
  160.         [ "$is_ic" == 'true' ] && [ ! -d $ic_dir ] && mkdir -p $ic_dir
  161.  
  162.         if [ ! -d $wch_dir ]; then
  163.                 mkdir -p $wch_dir
  164.         else
  165.                 rm -f $wch_dir/*.torrent
  166.         fi
  167.         echo $wch_dir > $mos/watch.dir
  168.  
  169.         echo "Starting Transmission..."
  170.         nice -n 10 $mos/transmission-daemon -c $wch_dir -g $mos/home -p 9091 -t
  171.         sleep 1
  172.         $mos/transmission-remote 127.0.0.1:9091 -n $cred -t all -s >/dev/null 2>&1
  173. }
  174. stop()
  175. {
  176.         echo "Stopping Transmission..."
  177.         $mos/transmission-remote 127.0.0.1:9091 -n $cred -t all -S >/dev/null 2>&1
  178.         sleep 1
  179.  
  180.         killall transmission-daemon 2>/dev/null
  181.         i=60
  182.         while [ $i -ne 0 ] ; do
  183.                 [ -z "$( ps | grep '[t]ransmission-daemon' )" ] && break
  184.                 sleep 1
  185.                 let i-=1
  186.         done
  187.  
  188.         #remove web
  189.         [ -e $mos/web ] && [ -L $mos/web ] && rm -f $mos/web
  190.         # remove cgi
  191.         cgi=/tmp/www/cgi-bin
  192.         [ -d /sbin/www ] && cgi=/sbin/www/cgi-bin
  193.         rm -f $cgi/torrents_xml.cgi
  194.  
  195.         rm -f $mos/watch.dir
  196. }
  197.  
  198. case "$1" in
  199.   start)
  200.         start
  201.         ;;
  202.   stop)
  203.         stop
  204.         ;;
  205.   status)
  206.         if [ -z "$( ps | grep '[t]ransmission-daemon' )" ] ; then
  207.                 echo "Transmission stopped"
  208.         else
  209.                 echo "Transmission running"
  210.         fi
  211.         ;;
  212.   enable | disable)
  213.         ;;
  214.   *)
  215.         echo "Usage: $0 {start|stop|status|enable|disable}"
  216. esac
  217.  
  218. exit $?
Add Comment
Please, Sign In to add comment