Adding refresh script, optimizing pipeline, small site change

This commit is contained in:
Firq 2023-03-07 20:38:49 +01:00
parent 9d5ce3cba2
commit 64eb7fe117
Signed by: Firq
GPG key ID: 3ACC61C8CEC83C20
6 changed files with 85 additions and 3 deletions

View file

@ -1,5 +1,18 @@
update-ip:
image: 3.10.8-slim-buster
when: manual
before_script:
- apt-get update
- apt-get install -y python3-pip
- python --version
- pip install -r requirements.txt
script:
- python cloudflare-updater.py $CF_API_TOKEN $NEW_IP
deploy-site: deploy-site:
stage: deploy stage: deploy
rules:
- if: $CI_COMMIT_BRANCH == "main"
before_script: before_script:
- 'which ssh-agent || ( apt-get update -y && apt-get install openssh-client -y )' - 'which ssh-agent || ( apt-get update -y && apt-get install openssh-client -y )'
- eval $(ssh-agent -s) - eval $(ssh-agent -s)

18
package-lock.json generated
View file

@ -1,12 +1,12 @@
{ {
"name": "@firq/fgosite", "name": "@firq/fgosite",
"version": "0.0.1", "version": "0.1.1",
"lockfileVersion": 2, "lockfileVersion": 2,
"requires": true, "requires": true,
"packages": { "packages": {
"": { "": {
"name": "@firq/fgosite", "name": "@firq/fgosite",
"version": "0.0.1", "version": "0.1.1",
"dependencies": { "dependencies": {
"astro": "^2.0.2", "astro": "^2.0.2",
"iconoir": "^6.1.0" "iconoir": "^6.1.0"
@ -992,6 +992,13 @@
"@types/unist": "*" "@types/unist": "*"
} }
}, },
"node_modules/@types/node": {
"version": "18.14.6",
"resolved": "https://registry.npmjs.org/@types/node/-/node-18.14.6.tgz",
"integrity": "sha512-93+VvleD3mXwlLI/xASjw0FzKcwzl3OdTCzm1LaRfqgS21gfFtK3zDXM5Op9TeeMsJVOaJ2VRDpT9q4Y3d0AvA==",
"optional": true,
"peer": true
},
"node_modules/@types/parse5": { "node_modules/@types/parse5": {
"version": "6.0.3", "version": "6.0.3",
"resolved": "https://registry.npmjs.org/@types/parse5/-/parse5-6.0.3.tgz", "resolved": "https://registry.npmjs.org/@types/parse5/-/parse5-6.0.3.tgz",
@ -5604,6 +5611,13 @@
"@types/unist": "*" "@types/unist": "*"
} }
}, },
"@types/node": {
"version": "18.14.6",
"resolved": "https://registry.npmjs.org/@types/node/-/node-18.14.6.tgz",
"integrity": "sha512-93+VvleD3mXwlLI/xASjw0FzKcwzl3OdTCzm1LaRfqgS21gfFtK3zDXM5Op9TeeMsJVOaJ2VRDpT9q4Y3d0AvA==",
"optional": true,
"peer": true
},
"@types/parse5": { "@types/parse5": {
"version": "6.0.3", "version": "6.0.3",
"resolved": "https://registry.npmjs.org/@types/parse5/-/parse5-6.0.3.tgz", "resolved": "https://registry.npmjs.org/@types/parse5/-/parse5-6.0.3.tgz",

2
scripts/.gitignore vendored Normal file
View file

@ -0,0 +1,2 @@
venv/
.idea/

View file

@ -0,0 +1,52 @@
import sys, logging, ipaddress, json
import CloudFlare
def main(TOKEN, NEW_IP):
logging.basicConfig(format='%(levelname)s:%(message)s', level=logging.DEBUG)
cf = CloudFlare.CloudFlare(token=TOKEN)
zones = cf.zones.get()
zone_identifier = []
for zone in zones:
if zone['name'] == "firq.dev":
zone_identifier = zone
if not zone_identifier:
raise Exception("No Zone identifier extracted")
logging.info(f" Zone Identifier is {zone_identifier['id']}")
records = cf.zones.dns_records.get(zone_identifier['id'])
update_records = []
if not records:
raise Exception(f"Could not extract records from {zone_identifier['name']}")
for record in records:
if record['type'] == 'AAAA':
update_records.append({"id": record['id'], "type": record['type'], "name": record['name'], "content": record['content']})
logging.info(f" Got the following DNS records registered to {zone_identifier['name']}")
logging.info(json.dumps(update_records, sort_keys=True, indent=2))
records_done = 0
for record in update_records:
data = {
"name": record['name'],
"type": record['type'],
"content": NEW_IP
}
try:
cf.zones.dns_records.patch(zone_identifier['id'], record['id'], data=data)
records_done += 1
except Exception as e:
logging.error(e)
logging.info(f"Finished updating {records_done} records for {zone_identifier['name']}")
if __name__ == '__main__':
assert len(sys.argv) == 3
assert isinstance(ipaddress.ip_address(sys.argv[2]), ipaddress.IPv6Address), \
f'IP {sys.argv[2]} is not a valid IPv4 address'
main(sys.argv[1], sys.argv[2])

1
scripts/requirements.txt Normal file
View file

@ -0,0 +1 @@
cloudflare>=2.11.1

View file

@ -8,7 +8,7 @@
use. | View <a class="linker" href="https://fate-go.us" target="_blank" rel="noopener noreferrer">the use. | View <a class="linker" href="https://fate-go.us" target="_blank" rel="noopener noreferrer">the
official website</a> for more information.<br> official website</a> for more information.<br>
I am in no way affiliated with Fate/Grand Order, Aniplex, Type Moon or Lasengle. I claim no ownership of any of the assets used that are I am in no way affiliated with Fate/Grand Order, Aniplex, Type Moon or Lasengle. I claim no ownership of any of the assets used that are
created by any of the mentioned companies. created by any of the mentioned companies.<br>
All of the opinions expressed are my own and may not reflect those of the asset providers. All of the opinions expressed are my own and may not reflect those of the asset providers.
</div> </div>
<br> <br>