Adding refresh script, optimizing pipeline, small site change
This commit is contained in:
parent
9d5ce3cba2
commit
64eb7fe117
6 changed files with 85 additions and 3 deletions
|
@ -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
18
package-lock.json
generated
|
@ -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
2
scripts/.gitignore
vendored
Normal file
|
@ -0,0 +1,2 @@
|
||||||
|
venv/
|
||||||
|
.idea/
|
52
scripts/cloudflare-updater.py
Normal file
52
scripts/cloudflare-updater.py
Normal 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
1
scripts/requirements.txt
Normal file
|
@ -0,0 +1 @@
|
||||||
|
cloudflare>=2.11.1
|
|
@ -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>
|
||||||
|
|
Loading…
Reference in a new issue