Page MenuHomeMiraheze
Paste P113

(An Untitled Masterwork)
ActivePublic

Authored by Paladox on Sep 9 2018, 21:04.
Tags
None
Referenced Files
F847820:
Sep 9 2018, 21:04
Subscribers
None
#!/usr/bin/env bash
#Needs curl and jq
USERNAME="paladox"
USERPASS="xxxxx"
WIKIAPI="https://xxx.miraheze.org/w/api.php"
cookie_jar="openhatchwiki"
#Will store file in wikifile
echo "UTF8 check: ☠"
#################login
echo "Logging into $WIKIAPI as $USERNAME..."
###############
#Login part 1
#printf "%s" "Logging in (1/2)..."
echo "Get login token..."
CR=$(curl -S \
--location \
--retry 2 \
--retry-delay 5\
--cookie $cookie_jar \
--cookie-jar $cookie_jar \
--user-agent "Curl Shell Script" \
--keepalive-time 60 \
--header "Accept-Language: en-us" \
--header "Connection: keep-alive" \
--compressed \
--request "GET" "${WIKIAPI}?action=query&meta=tokens&type=login&format=json")
echo "$CR" | jq .
rm login.json
echo "$CR" > login.json
TOKEN=$(jq --raw-output '.query.tokens.logintoken' login.json)
TOKEN="${TOKEN//\"/}" #replace double quote by nothing
#Remove carriage return!
printf "%s" "$TOKEN" > token.txt
TOKEN=$(cat token.txt | sed 's/\r$//')
if [ "$TOKEN" == "null" ]; then
echo "Getting a login token failed."
exit
else
echo "Login token is $TOKEN"
echo "-----"
fi
###############
#Login part 2
echo "Logging in..."
CR=$(curl -S \
--location \
--cookie $cookie_jar \
--cookie-jar $cookie_jar \
--user-agent "Curl Shell Script" \
--keepalive-time 60 \
--header "Accept-Language: en-us" \
--header "Connection: keep-alive" \
--compressed \
--data-urlencode "username=${USERNAME}" \
--data-urlencode "password=${USERPASS}" \
--data-urlencode "rememberMe=1" \
--data-urlencode "logintoken=${TOKEN}" \
--data-urlencode "token=${TOKEN}" \
--data-urlencode "loginreturnurl=https://xxx.miraheze.org" \
--request "POST" "${WIKIAPI}?action=clientlogin&format=json")
echo "$CR" | jq .
STATUS=$(echo $CR | jq '.clientlogin.status')
if [[ $STATUS == *"PASS"* ]]; then
echo "Successfully logged in as $USERNAME, STATUS is $STATUS."
echo "-----"
else
echo "Unable to login, is logintoken ${TOKEN} correct?"
exit
fi
###############
#Login part 1
#printf "%s" "Logging in (1/2)..."
echo "Get createaccount token..."
CR=$(curl -S \
--location \
--retry 2 \
--retry-delay 5\
--cookie $cookie_jar \
--cookie-jar $cookie_jar \
--user-agent "Curl Shell Script" \
--keepalive-time 60 \
--header "Accept-Language: en-us" \
--header "Connection: keep-alive" \
--compressed \
--request "GET" "${WIKIAPI}?action=query&meta=tokens&type=createaccount&format=json")
echo "$CR" | jq .
rm logins.json
echo "$CR" > logins.json
TOKENSS=$(jq --raw-output '.query.tokens.createaccounttoken' logins.json)
TOKENSS="${TOKENSS//\"/}" #replace double quote by nothing
#Remove carriage return!
printf "%s" "$TOKENSS" > tokens.txt
TOKENSS=$(cat tokens.txt | sed 's/\r$//')
if [ "$TOKENSS" == "null" ]; then
echo "Getting a login token failed."
exit
else
echo "CreateAccount token is $S"
echo "-----"
fi
mysql -u root -toor xxxwikidb -e 'SELECT rev_user_text, user.user_email, COUNT(*) AS CONTRIBS FROM revision JOIN user ON revision.rev_user = user.user_id GROUP BY revision.rev_user_text;' | while read -r column1 user column2 email value;
do
CR=$(curl -S \
--location \
--cookie $cookie_jar \
--cookie-jar $cookie_jar \
--user-agent "Curl Shell Script" \
--keepalive-time 60 \
--header "Accept-Language: en-us" \
--header "Connection: keep-alive" \
--compressed \
--data-urlencode "createreturnurl=https://meta.miraheze.org" \
--data-urlencode "createtoken=${TOKENSS}" \
--data-urlencode "username=${user}" \
--data-urlencode "mailpassword=1" \
--data-urlencode "email=${email}" \
--data-urlencode "realname=" \
--data-urlencode "reason=Per+request" \
--request "POST" "${WIKIAPI}?action=createaccount&format=json")
echo "$CR" | jq .
done