tazbug annotate tazbug @ rev 20
Edit README
author | Paul Issott <paul@slitaz.org> |
---|---|
date | Wed Apr 04 20:03:49 2012 +0100 (2012-04-04) |
parents | a39c2f6e7317 |
children | c5da10e6e749 |
rev | line source |
---|---|
pankso@5 | 1 #!/bin/sh |
pankso@5 | 2 # |
paul@17 | 3 # TazBug Command line tool. Help to encrypt password, key and post on the |
pankso@5 | 4 # the server side. |
pankso@5 | 5 # |
pankso@5 | 6 # Copyright (C) 2012 SliTaz GNU/Linux - BSD License |
pankso@5 | 7 # |
pankso@5 | 8 . /usr/lib/slitaz/httphelper |
pankso@5 | 9 [ -f "/etc/slitaz/tazbug.conf" ] && . /etc/slitaz/tazbug.conf |
pankso@5 | 10 [ -f "tazbug.conf" ] && . tazbug.conf |
pankso@5 | 11 |
pankso@5 | 12 # Use same key for SliTaz sites. |
pankso@5 | 13 conf=$HOME/.config/slitaz/account.conf |
pankso@5 | 14 |
pankso@5 | 15 # Internationalization: $(gettext "") |
pankso@5 | 16 . /usr/bin/gettext.sh |
pankso@5 | 17 TEXTDOMAIN='tazbug' |
pankso@5 | 18 export TEXTDOMAIN |
pankso@5 | 19 |
pankso@5 | 20 # Parse cmdline options. |
pankso@5 | 21 for opt in "$@" |
pankso@5 | 22 do |
pankso@5 | 23 case "$opt" in |
pankso@5 | 24 --bug=*) |
pankso@15 | 25 bug="${opt#--bug=}" ;; |
pankso@5 | 26 --desc=*) |
pankso@15 | 27 desc="${opt#--desc=}" ;; |
pankso@5 | 28 --msg=*) |
pankso@15 | 29 msg="${opt#--msg=}" ;; |
pankso@5 | 30 --priority=*) |
pankso@5 | 31 priority=${opt#--priority=} ;; |
pankso@5 | 32 --pkgs=*) |
pankso@15 | 33 pkgs="${opt#--pkgs=}" ;; |
pankso@5 | 34 --name=*) |
pankso@15 | 35 name="${opt#--name=}" ;; |
pankso@5 | 36 --user=*) |
pankso@5 | 37 user=${opt#--user=} ;; |
pankso@5 | 38 --mail=*) |
pankso@5 | 39 mail=${opt#--mail=} ;; |
pankso@5 | 40 --pass=*) |
pankso@5 | 41 pass=${opt#--pass=} ;; |
pankso@5 | 42 esac |
pankso@5 | 43 done |
pankso@5 | 44 |
pankso@5 | 45 # |
pankso@5 | 46 # Functions |
pankso@5 | 47 # |
pankso@5 | 48 |
pankso@5 | 49 # --> in /usr/lib/slitaz/httphelper |
pankso@5 | 50 # httpd -e dont work with GET URL requests |
pankso@5 | 51 http_urlencode() { |
pankso@5 | 52 #space: + or %20 |
pankso@5 | 53 sed -e s'/ /+/'g -e s'/!/%21/'g -e s'/"/%22/'g -e s'/#/%23/'g \ |
pankso@5 | 54 -e s'/%/%25/'g -e s'/&/%26/'g |
pankso@5 | 55 } |
pankso@5 | 56 |
pankso@5 | 57 # Usage. |
pankso@5 | 58 usage() { |
pankso@5 | 59 cat << EOT |
pankso@5 | 60 |
pankso@5 | 61 Usage: $(basename $0) [command] [args] |
pankso@5 | 62 |
pankso@5 | 63 Commands: |
pankso@5 | 64 gen-key $(gettext "Recreate the SliTaz secure key.") |
pankso@5 | 65 gen-config $(gettext "Create a new SliTaz account configuration.") |
pankso@5 | 66 signup $(gettext "Create a new account on SliTaz Bugs.") |
pankso@5 | 67 new-msg $(gettext "Send a new message to an open bug.") |
pankso@5 | 68 new-bug $(gettext "Send a new bug report.") |
pankso@5 | 69 |
pankso@5 | 70 Examples: |
pankso@5 | 71 $(basename $0) signup --name="Real Name" --user=login \\ |
pankso@5 | 72 --mail=mail@domain --pass=password |
pankso@5 | 73 $(basename $0) new-msg --bug=0 --msg="Message for bug with ID 0" |
pankso@5 | 74 |
pankso@5 | 75 EOT |
pankso@5 | 76 } |
pankso@5 | 77 |
pankso@5 | 78 # Check cmdline user info args |
pankso@5 | 79 check_info_args() { |
pankso@5 | 80 [ ! "$name" ] && gettext "Missing real name" && echo && exit 0 |
pankso@5 | 81 [ ! "$user" ] && gettext "Missing login name" && echo && exit 0 |
pankso@5 | 82 [ ! "$mail" ] && gettext "Missing email" && echo && exit 0 |
pankso@5 | 83 [ ! "$pass" ] && gettext "Missing password" && echo && exit 0 |
pankso@5 | 84 } |
pankso@5 | 85 |
pankso@5 | 86 # Crypt pass when login |
pankso@5 | 87 crypt_pass() { |
pankso@5 | 88 echo -n "$1" | md5sum | awk '{print $1}' |
pankso@5 | 89 } |
pankso@5 | 90 |
pankso@5 | 91 # Gen a config file |
pankso@5 | 92 gen_config() { |
pankso@5 | 93 gettext "Creating SliTaz account configuration..."; echo |
pankso@5 | 94 mkdir -p $HOME/.config/slitaz |
pankso@5 | 95 cat > $conf << EOT |
pankso@5 | 96 # SliTaz account configuration |
pankso@5 | 97 |
pankso@5 | 98 NAME="$name" |
pankso@5 | 99 USER="$user" |
pankso@5 | 100 MAIL="$mail" |
pankso@5 | 101 KEY="" |
pankso@5 | 102 EOT |
pankso@5 | 103 chmod 0600 $conf |
pankso@5 | 104 } |
pankso@5 | 105 |
pankso@5 | 106 # Gen the secure key: gen_key login mail passwd |
pankso@5 | 107 gen_key() { |
pankso@5 | 108 gettext "Creating SliTaz secure key..."; echo |
pankso@5 | 109 key=$(echo -n "$user:$mail:$pass" | md5sum | awk '{print $1}') |
pankso@5 | 110 sed -i s"/KEY=.*/KEY=\"$key\"/" $conf |
pankso@5 | 111 chmod 0600 $conf |
pankso@5 | 112 } |
pankso@5 | 113 |
pankso@5 | 114 # |
pankso@5 | 115 # Commands |
pankso@5 | 116 # |
pankso@5 | 117 |
pankso@5 | 118 case "$1" in |
pankso@5 | 119 gen-key) |
pankso@5 | 120 # MD5 key |
pankso@5 | 121 [ ! "$pass" ] && gettext "Missing password" && echo && exit 0 |
pankso@5 | 122 . $conf || exit 1 |
pankso@5 | 123 gen_key $USER $MAIL $pass ;; |
pankso@5 | 124 gen-config) |
paul@17 | 125 # Recreate a config file if values have changed sites must be updated |
pankso@5 | 126 check_info_args |
pankso@5 | 127 gen_config |
pankso@5 | 128 gen_key ;; |
pankso@5 | 129 signup) |
pankso@5 | 130 # Create an account on the server |
pankso@5 | 131 check_info_args |
pankso@5 | 132 echo "" |
pankso@13 | 133 echo "Sending account request for: $name ($user)" |
paul@18 | 134 # 'gen_key user:mail:passwd' locally but don't send it. It will be |
paul@20 | 135 # generated on server from the user login, mail and encrypted password |
pankso@5 | 136 # so it is not transmited in GET urls. |
pankso@5 | 137 gen_config |
pankso@15 | 138 pass=$(crypt_pass $pass) |
pankso@15 | 139 name="$(echo $name | http_urlencode)" |
pankso@5 | 140 gen_key |
pankso@5 | 141 . $conf |
pankso@15 | 142 echo "Secure key: $KEY" |
pankso@15 | 143 # Wget GET url |
pankso@5 | 144 busybox wget "${WEB_URL}?signup=$user&name=$name&mail=$mail&pass=$pass" \ |
pankso@5 | 145 -O /tmp/bug.msg |
pankso@5 | 146 cat /tmp/bug.msg && rm -f /tmp/bug.msg && echo "" ;; |
pankso@5 | 147 new-msg) |
pankso@5 | 148 # Post a new message: ID message |
pankso@5 | 149 . $conf || exit 1 |
pankso@5 | 150 [ ! "$bug" ] && gettext "Missing bug ID" && echo && exit 0 |
pankso@5 | 151 [ ! "$msg" ] && gettext "Missing message" && echo && exit 0 |
pankso@5 | 152 msg="$(echo $msg | http_urlencode)" |
pankso@5 | 153 # Wget GET url |
pankso@5 | 154 busybox wget \ |
pankso@5 | 155 "${WEB_URL}?key=$KEY&bug=$bug&msg=$msg" -O /tmp/bug.msg |
pankso@5 | 156 cat /tmp/bug.msg && rm -f /tmp/bug.msg && echo "" ;; |
pankso@5 | 157 new-bug) |
pankso@5 | 158 # Post a new bug: bug desc priority pkgs |
pankso@5 | 159 . $conf || exit 1 |
pankso@5 | 160 [ ! "$bug" ] && gettext "Missing bug title" && echo && exit 0 |
pankso@5 | 161 [ ! "$desc" ] && gettext "Missing description" && echo && exit 0 |
pankso@5 | 162 [ ! "$priority" ] && gettext "Missing bug priority" && echo && exit 0 |
pankso@5 | 163 bug="$(echo $bug | http_urlencode)" |
pankso@5 | 164 desc="$(echo $desc | http_urlencode)" |
pankso@5 | 165 # Wget GET url |
pankso@5 | 166 busybox wget \ |
pankso@5 | 167 "${WEB_URL}?key=$KEY&bug=$bug&desc=$desc&priority=$priority&pkgs=$pkgs" \ |
pankso@5 | 168 -O /tmp/bug.msg |
pankso@5 | 169 cat /tmp/bug.msg && rm -f /tmp/bug.msg && echo "" ;; |
pankso@5 | 170 *) |
pankso@5 | 171 usage ;; |
pankso@5 | 172 esac |
pankso@5 | 173 |
pankso@5 | 174 exit 0 |