Mirror from bluesky-social/pds

pdsadmin: style nits, hopefully nothing broken

+77 -43
+68 -34
pdsadmin/account.sh
··· 6 6 PDS_ENV_FILE="/pds/pds.env" 7 7 source "${PDS_ENV_FILE}" 8 8 9 - curl_cmd() { 9 + # curl a URL and fail if the request fails. 10 + function curl_cmd_get { 10 11 curl --fail --silent --show-error "$@" 11 12 } 12 13 13 - curl_cmd_post() { 14 + # curl a URL and fail if the request fails. 15 + function curl_cmd_post { 14 16 curl --fail --silent --show-error --request POST --header "Content-Type: application/json" "$@" 15 17 } 16 18 17 - curl_cmd_post_nofail() { 19 + # curl a URL but do not fail if the request fails. 20 + function curl_cmd_post_nofail { 18 21 curl --silent --show-error --request POST --header "Content-Type: application/json" "$@" 19 22 } 20 23 24 + # The subcommand to run. 21 25 SUBCOMMAND="${1:-}" 22 26 27 + # 28 + # account list 29 + # 23 30 if [[ "${SUBCOMMAND}" == "list" ]]; then 24 - DIDS=$(curl_cmd \ 31 + DIDS="$(curl_cmd \ 25 32 "https://${PDS_HOSTNAME}/xrpc/com.atproto.sync.listRepos?limit=100" | jq --raw-output '.repos[].did' 26 - ) 33 + )" 27 34 OUTPUT='[{"handle":"Handle","email":"Email","did":"DID"}' 28 - for did in $DIDS; do 29 - ITEM=$(curl_cmd \ 35 + for did in ${DIDS}; do 36 + ITEM="$(curl_cmd \ 30 37 --user "admin:${PDS_ADMIN_PASSWORD}" \ 31 - "https://${PDS_HOSTNAME}/xrpc/com.atproto.admin.getAccountInfo?did=$did" 32 - ) 38 + "https://${PDS_HOSTNAME}/xrpc/com.atproto.admin.getAccountInfo?did=${did}" 39 + )" 33 40 OUTPUT="${OUTPUT},${ITEM}" 34 41 done 35 42 OUTPUT="${OUTPUT}]" 36 - echo $OUTPUT | jq --raw-output '.[] | [.handle, .email, .did] | @tsv' | column -t 43 + echo "${OUTPUT}" | jq --raw-output '.[] | [.handle, .email, .did] | @tsv' | column --table 44 + 45 + # 46 + # account create 47 + # 37 48 elif [[ "${SUBCOMMAND}" == "create" ]]; then 38 49 EMAIL="${2:-}" 39 50 HANDLE="${3:-}" 40 51 52 + if [[ "${EMAIL}" == "" ]]; then 53 + read -p "Enter an email address (e.g. alice@${PDS_HOSTNAME}): " EMAIL 54 + fi 55 + if [[ "${HANDLE}" == "" ]]; then 56 + read -p "Enter a handle (e.g. alice.${PDS_HOSTNAME}): " HANDLE 57 + fi 58 + 41 59 if [[ "${EMAIL}" == "" || "${HANDLE}" == "" ]]; then 42 60 echo "ERROR: missing EMAIL and/or HANDLE parameters." >/dev/stderr 43 61 echo "Usage: $0 ${SUBCOMMAND} <EMAIL> <HANDLE>" >/dev/stderr 44 62 exit 1 45 63 fi 46 64 47 - PASSWORD=$(openssl rand -base64 30 | tr -d "=+/" | cut -c1-24) 48 - INVITE_CODE=$(curl_cmd_post \ 65 + PASSWORD="$(openssl rand -base64 30 | tr -d "=+/" | cut -c1-24)" 66 + INVITE_CODE="$(curl_cmd_post \ 49 67 --user "admin:${PDS_ADMIN_PASSWORD}" \ 50 68 --data '{"useCount": 1}' \ 51 - https://${PDS_HOSTNAME}/xrpc/com.atproto.server.createInviteCode | jq --raw-output '.code' 52 - ) 53 - RESULT=$(curl_cmd_post_nofail \ 69 + "https://${PDS_HOSTNAME}/xrpc/com.atproto.server.createInviteCode" | jq --raw-output '.code' 70 + )" 71 + RESULT="$(curl_cmd_post_nofail \ 54 72 --data "{\"email\":\"${EMAIL}\", \"handle\":\"${HANDLE}\", \"password\":\"${PASSWORD}\", \"inviteCode\":\"${INVITE_CODE}\"}" \ 55 - https://${PDS_HOSTNAME}/xrpc/com.atproto.server.createAccount 56 - ) 73 + "https://${PDS_HOSTNAME}/xrpc/com.atproto.server.createAccount" 74 + )" 57 75 58 - DID=$(echo $RESULT | jq --raw-output '.did') 76 + DID="$(echo $RESULT | jq --raw-output '.did')" 59 77 if [[ "${DID}" != did:* ]]; then 60 - ERR=$(echo $RESULT | jq --raw-output '.message') 78 + ERR="$(echo ${RESULT} | jq --raw-output '.message')" 61 79 echo "ERROR: ${ERR}" >/dev/stderr 62 80 echo "Usage: $0 ${SUBCOMMAND} <EMAIL> <HANDLE>" >/dev/stderr 63 81 exit 1 64 82 fi 65 83 66 - echo "Account created for ${HANDLE}.\nYour password is below, which we'll only show you once.\n" 67 - echo "DID: ${DID}" 68 - echo "Password: ${PASSWORD}" 84 + echo "Account created successfully!" 85 + echo "-----------------------------" 86 + echo "Handle : ${HANDLE}" 87 + echo "DID : ${DID}" 88 + echo "Password : ${PASSWORD}" 89 + echo "-----------------------------" 90 + echo "Save this password, it will not be displayed again." 91 + 92 + # 93 + # account delete 94 + # 69 95 elif [[ "${SUBCOMMAND}" == "delete" ]]; then 70 96 DID="${2:-}" 71 97 ··· 83 109 84 110 echo "This action is permanent." 85 111 read -r -p "Are you sure you'd like to delete ${DID}? [y/N] " response 86 - if [[ ! "$response" =~ ^([yY][eE][sS]|[yY])$ ]]; then 112 + if [[ ! "${response}" =~ ^([yY][eE][sS]|[yY])$ ]]; then 87 113 exit 0 88 114 fi 89 115 90 116 curl_cmd_post \ 91 - --user "admin:${PDS_ADMIN_PASSWORD}" \ 92 - --data "{\"did\": \"${DID}\"}" \ 93 - https://${PDS_HOSTNAME}/xrpc/com.atproto.admin.deleteAccount >/dev/null 117 + --user "admin:${PDS_ADMIN_PASSWORD}" \ 118 + --data "{\"did\": \"${DID}\"}" \ 119 + "https://${PDS_HOSTNAME}/xrpc/com.atproto.admin.deleteAccount" >/dev/null 94 120 95 121 echo "${DID} deleted" 122 + 123 + # 124 + # account takedown 125 + # 96 126 elif [[ "${SUBCOMMAND}" == "takedown" ]]; then 97 127 DID="${2:-}" 98 128 TAKEDOWN_REF="$(date +%s)" ··· 109 139 exit 1 110 140 fi 111 141 112 - PAYLOAD=$(cat <<EOF 142 + PAYLOAD="$(cat <<EOF 113 143 { 114 144 "subject": { 115 145 "\$type": "com.atproto.admin.defs#repoRef", ··· 121 151 } 122 152 } 123 153 EOF 124 - ) 154 + )" 125 155 126 156 curl_cmd_post \ 127 - --user "admin:${PDS_ADMIN_PASSWORD}" \ 128 - --data "${PAYLOAD}" \ 129 - https://${PDS_HOSTNAME}/xrpc/com.atproto.admin.updateSubjectStatus >/dev/null 157 + --user "admin:${PDS_ADMIN_PASSWORD}" \ 158 + --data "${PAYLOAD}" \ 159 + "https://${PDS_HOSTNAME}/xrpc/com.atproto.admin.updateSubjectStatus" >/dev/null 130 160 131 161 echo "${DID} taken down" 162 + 163 + # 164 + # account untakedown 165 + # 132 166 elif [[ "${SUBCOMMAND}" == "untakedown" ]]; then 133 167 DID="${2:-}" 134 168 ··· 158 192 ) 159 193 160 194 curl_cmd_post \ 161 - --user "admin:${PDS_ADMIN_PASSWORD}" \ 162 - --data "${PAYLOAD}" \ 163 - https://${PDS_HOSTNAME}/xrpc/com.atproto.admin.updateSubjectStatus >/dev/null 195 + --user "admin:${PDS_ADMIN_PASSWORD}" \ 196 + --data "${PAYLOAD}" \ 197 + "https://${PDS_HOSTNAME}/xrpc/com.atproto.admin.updateSubjectStatus" >/dev/null 164 198 165 199 echo "${DID} untaken down" 166 200 else
+1 -1
pdsadmin/create-invite-code.sh
··· 15 15 --user "admin:${PDS_ADMIN_PASSWORD}" \ 16 16 --header "Content-Type: application/json" \ 17 17 --data '{"useCount": 1}' \ 18 - https://${PDS_HOSTNAME}/xrpc/com.atproto.server.createInviteCode | jq --raw-output '.code' 18 + "https://${PDS_HOSTNAME}/xrpc/com.atproto.server.createInviteCode" | jq --raw-output '.code'
+1 -1
pdsadmin/request-crawl.sh
··· 27 27 --user "admin:${PDS_ADMIN_PASSWORD}" \ 28 28 --header "Content-Type: application/json" \ 29 29 --data "{\"hostname\": \"${PDS_HOSTNAME}\"}" \ 30 - https://${host}/xrpc/com.atproto.sync.requestCrawl >/dev/null 30 + "https://${host}/xrpc/com.atproto.sync.requestCrawl" >/dev/null 31 31 done 32 32 33 33 echo "done"
+7 -7
pdsadmin/update.sh
··· 14 14 15 15 echo "* Downloading PDS compose file" 16 16 curl \ 17 - --silent \ 18 - --show-error \ 19 - --fail \ 20 - --output "${COMPOSE_TEMP_FILE}" \ 21 - "${COMPOSE_URL}" 17 + --silent \ 18 + --show-error \ 19 + --fail \ 20 + --output "${COMPOSE_TEMP_FILE}" \ 21 + "${COMPOSE_URL}" 22 22 23 - if cmp -s "${COMPOSE_FILE}" "${COMPOSE_TEMP_FILE}"; then 23 + if cmp --quiet "${COMPOSE_FILE}" "${COMPOSE_TEMP_FILE}"; then 24 24 echo "PDS is already up to date" 25 - rm "${COMPOSE_TEMP_FILE}" 25 + rm --force "${COMPOSE_TEMP_FILE}" 26 26 exit 0 27 27 fi 28 28