mirror of
https://github.com/imapsync/imapsync.git
synced 2024-11-17 00:02:29 +01:00
190 lines
5.5 KiB
Bash
Executable File
190 lines
5.5 KiB
Bash
Executable File
#!/bin/sh
|
|
|
|
refresh_token_file()
|
|
{
|
|
echo ./D_oauth2_refresh_token_"$1".txt
|
|
}
|
|
|
|
access_token_file()
|
|
{
|
|
echo ./D_oauth2_access_token_"$1".txt
|
|
}
|
|
|
|
oauthdirect_file()
|
|
{
|
|
echo ./D_oauth2_oauthdirect_"$1".txt
|
|
}
|
|
|
|
|
|
|
|
#echo
|
|
#echo "get_refresh_token youremail@gmail.com # First time, then once in a while when the refresh_token is no longer working"
|
|
get_refresh_token()
|
|
{
|
|
refresh_token_file="`refresh_token_file $1`"
|
|
access_token_file="`access_token_file $1`"
|
|
# 1 Get an access_token and a refresh_token
|
|
|
|
./oauth2_google.py --user="$1" \
|
|
--client_id="108687549524-86sjq07f3ch8otl9fnr56mjnniltdrvn.apps.googleusercontent.com" \
|
|
--client_secret=zAJO4PLxzeJ4yOaiJRk6f69k \
|
|
--generate_oauth2_token --quiet
|
|
|
|
cat typescript | grep -i 'Refresh Token:' | tail -1 | sed -e 's/Refresh Token: *//' | tr -d '\r' | tee "$refresh_token_file"
|
|
cat typescript | grep -i 'Access Token:' | tail -1 | sed -e 's/Access Token: *//' | tr -d '\r' | tee "$access_token_file"
|
|
echo refresh_token saved in "$refresh_token_file"
|
|
echo access_token saved in "$access_token_file"
|
|
}
|
|
|
|
#echo
|
|
#echo "regenerate_access_token youremail@gmail.com # 2 Regenerate an access_token if time passes too long (3600s)"
|
|
regenerate_access_token()
|
|
{
|
|
refresh_token_file="`refresh_token_file $1`"
|
|
access_token_file="`access_token_file $1`"
|
|
# 2 Regenerate an access_token if time passes too long (3600s)
|
|
refresh_token="`cat $refresh_token_file|tr -d '\r'`"
|
|
echo ./oauth2_google.py --quiet --user="$1" \
|
|
--client_id="108687549524-86sjq07f3ch8otl9fnr56mjnniltdrvn.apps.googleusercontent.com" \
|
|
--client_secret=zAJO4PLxzeJ4yOaiJRk6f69k \
|
|
--refresh_token="$refresh_token"
|
|
|
|
./oauth2_google.py --quiet --user="$1" \
|
|
--client_id="108687549524-86sjq07f3ch8otl9fnr56mjnniltdrvn.apps.googleusercontent.com" \
|
|
--client_secret=zAJO4PLxzeJ4yOaiJRk6f69k \
|
|
--refresh_token="$refresh_token" | tee "$access_token_file"
|
|
|
|
echo access_token saved in "$access_token_file"
|
|
}
|
|
|
|
|
|
|
|
refresh_token_is_here()
|
|
{
|
|
echo In refresh_token_is_here "$@"
|
|
# force mode
|
|
if test -n "$2"; then
|
|
return $2
|
|
fi
|
|
|
|
refresh_token_file="`refresh_token_file $1`"
|
|
if test -f "$refresh_token_file" && test -s "$refresh_token_file" ; then
|
|
echo $refresh_token_file is here
|
|
return 0
|
|
else
|
|
echo $refresh_token_file is not here or empty
|
|
return 1
|
|
fi
|
|
}
|
|
|
|
|
|
#echo
|
|
#echo 'generate_oauthdirect youremail@gmail.com'
|
|
generate_oauthdirect()
|
|
{
|
|
access_token_file="`access_token_file $1`"
|
|
access_token="`cat $access_token_file`"
|
|
oauthdirect_file="`oauthdirect_file $1`"
|
|
# 3 Generate oauth2_string for imap authentication
|
|
./oauth2_google.py --generate_oauth2_string --user="$1" \
|
|
--access_token="$access_token" | tail -1 | tee "$oauthdirect_file"
|
|
echo oauth2_string saved in "$oauthdirect_file"
|
|
echo Give this to imapsync --oauthdirect1 or --oauthdirect2
|
|
}
|
|
|
|
|
|
#echo
|
|
#echo authenticate_imap youremail@gmail.com
|
|
authenticate_imap()
|
|
{
|
|
# 4
|
|
access_token_file="`access_token_file $1`"
|
|
access_token="`cat $access_token_file`"
|
|
echo $access_token
|
|
./oauth2_imap_from_token "$1" "$access_token"
|
|
}
|
|
|
|
|
|
#echo 'authenticate_imap_google_from_access_token youremail@gmail.com'
|
|
authenticate_imap_google_from_access_token()
|
|
{
|
|
# 5
|
|
access_token_file="`access_token_file $1`"
|
|
access_token="`cat $access_token_file`"
|
|
echo "$access_token"
|
|
./oauth2_google.py --user="$1" \
|
|
--access_token="$access_token" --test_imap_authentication
|
|
}
|
|
|
|
#echo generate_for_imapsync_tests
|
|
generate_for_imapsync_tests()
|
|
{
|
|
regenerate_access_token imapsync.gl0@gmail.com \
|
|
&& generate_oauthdirect imapsync.gl0@gmail.com \
|
|
&& authenticate_imap_google_from_access_token imapsync.gl0@gmail.com \
|
|
&& authenticate_imap imapsync.gl0@gmail.com
|
|
}
|
|
|
|
verify_email()
|
|
{
|
|
test X"" != X"$1"
|
|
}
|
|
|
|
usage()
|
|
{
|
|
verify_email "$1" || {
|
|
echo "Please, give an email address as parameter"
|
|
return 1
|
|
}
|
|
}
|
|
|
|
|
|
get_refresh_token_by_script_fork()
|
|
{
|
|
if test -f $0.lock; then
|
|
echo I am a child in script $$
|
|
get_refresh_token "$1"
|
|
else
|
|
echo I am the parent
|
|
touch $0.lock
|
|
echo will do: script -q -f -c "$0 $1 $2"
|
|
script -q -f -c "$0 $1 $2"
|
|
rm $0.lock
|
|
regenerate_access_token "$1"
|
|
generate_oauthdirect "$1"
|
|
fi
|
|
}
|
|
|
|
I_am_interractive_or_exit()
|
|
{
|
|
if test -t 0; then
|
|
echo Interractive
|
|
return 0
|
|
else
|
|
echo Not interractive
|
|
exit 1
|
|
fi
|
|
}
|
|
|
|
#echo "generate_token youremail@gmail.com"
|
|
generate_token()
|
|
{
|
|
echo I am PID $$ $0 "$@"
|
|
#
|
|
usage "$1" || return 1
|
|
|
|
if refresh_token_is_here "$1" "$2" ; then
|
|
regenerate_access_token "$1"
|
|
generate_oauthdirect "$1"
|
|
authenticate_imap_google_from_access_token "$1"
|
|
authenticate_imap "$1"
|
|
else
|
|
I_am_interractive_or_exit
|
|
get_refresh_token_by_script_fork "$@"
|
|
fi
|
|
|
|
}
|
|
|
|
generate_token "$@"
|
|
|