This commit is contained in:
109
.devcontainer/.zshrc
Normal file
109
.devcontainer/.zshrc
Normal file
@@ -0,0 +1,109 @@
|
||||
# If you come from bash you might have to change your $PATH.
|
||||
# export PATH=$HOME/bin:$HOME/.local/bin:/usr/local/bin:$PATH
|
||||
|
||||
# Path to your Oh My Zsh installation.
|
||||
export ZSH="$HOME/.oh-my-zsh"
|
||||
|
||||
# Set name of the theme to load --- if set to "random", it will
|
||||
# load a random theme each time Oh My Zsh is loaded, in which case,
|
||||
# to know which specific one was loaded, run: echo $RANDOM_THEME
|
||||
# See https://github.com/ohmyzsh/ohmyzsh/wiki/Themes
|
||||
ZSH_THEME="gnzh"
|
||||
|
||||
# Set list of themes to pick from when loading at random
|
||||
# Setting this variable when ZSH_THEME="devcontainers"
|
||||
# a theme from this variable instead of looking in $ZSH/themes/
|
||||
# If set to an empty array, this variable will have no effect.
|
||||
# ZSH_THEME_RANDOM_CANDIDATES=( "robbyrussell" "agnoster" )
|
||||
|
||||
# Uncomment the following line to use case-sensitive completion.
|
||||
# CASE_SENSITIVE="true"
|
||||
|
||||
# Uncomment the following line to use hyphen-insensitive completion.
|
||||
# Case-sensitive completion must be off. _ and - will be interchangeable.
|
||||
# HYPHEN_INSENSITIVE="true"
|
||||
|
||||
# Uncomment one of the following lines to change the auto-update behavior
|
||||
# zstyle ':omz:update' mode disabled # disable automatic updates
|
||||
# zstyle ':omz:update' mode auto # update automatically without asking
|
||||
# zstyle ':omz:update' mode reminder # just remind me to update when it's time
|
||||
|
||||
# Uncomment the following line to change how often to auto-update (in days).
|
||||
# zstyle ':omz:update' frequency 13
|
||||
|
||||
# Uncomment the following line if pasting URLs and other text is messed up.
|
||||
# DISABLE_MAGIC_FUNCTIONS="true"
|
||||
|
||||
# Uncomment the following line to disable colors in ls.
|
||||
# DISABLE_LS_COLORS="true"
|
||||
|
||||
# Uncomment the following line to disable auto-setting terminal title.
|
||||
# DISABLE_AUTO_TITLE="true"
|
||||
|
||||
# Uncomment the following line to enable command auto-correction.
|
||||
# ENABLE_CORRECTION="true"
|
||||
|
||||
# Uncomment the following line to display red dots whilst waiting for completion.
|
||||
# You can also set it to another string to have that shown instead of the default red dots.
|
||||
# e.g. COMPLETION_WAITING_DOTS="%F{yellow}waiting...%f"
|
||||
# Caution: this setting can cause issues with multiline prompts in zsh < 5.7.1 (see #5765)
|
||||
# COMPLETION_WAITING_DOTS="true"
|
||||
|
||||
# Uncomment the following line if you want to disable marking untracked files
|
||||
# under VCS as dirty. This makes repository status check for large repositories
|
||||
# much, much faster.
|
||||
# DISABLE_UNTRACKED_FILES_DIRTY="true"
|
||||
|
||||
# Uncomment the following line if you want to change the command execution time
|
||||
# stamp shown in the history command output.
|
||||
# You can set one of the optional three formats:
|
||||
# "mm/dd/yyyy"|"dd.mm.yyyy"|"yyyy-mm-dd"
|
||||
# or set a custom format using the strftime function format specifications,
|
||||
# see 'man strftime' for details.
|
||||
# HIST_STAMPS="mm/dd/yyyy"
|
||||
|
||||
# Would you like to use another custom folder than $ZSH/custom?
|
||||
# ZSH_CUSTOM=/path/to/new-custom-folder
|
||||
|
||||
# Which plugins would you like to load?
|
||||
# Standard plugins can be found in $ZSH/plugins/
|
||||
# Custom plugins may be added to $ZSH_CUSTOM/plugins/
|
||||
# Example format: plugins=(rails git textmate ruby lighthouse)
|
||||
# Add wisely, as too many plugins slow down shell startup.
|
||||
plugins=(git timer web-search ssh kubectl helm colorize zsh-autosuggestions rclone ansible)
|
||||
ZSH_COLORIZE_TOOL=chroma
|
||||
|
||||
source $ZSH/oh-my-zsh.sh
|
||||
|
||||
# User configuration
|
||||
|
||||
# export MANPATH="/usr/local/man:$MANPATH"
|
||||
|
||||
# You may need to manually set your language environment
|
||||
# export LANG=en_US.UTF-8
|
||||
|
||||
# Preferred editor for local and remote sessions
|
||||
# if [[ -n $SSH_CONNECTION ]]; then
|
||||
# export EDITOR='vim'
|
||||
# else
|
||||
# export EDITOR='nvim'
|
||||
# fi
|
||||
|
||||
# Compilation flags
|
||||
# export ARCHFLAGS="-arch $(uname -m)"
|
||||
|
||||
# Set personal aliases, overriding those provided by Oh My Zsh libs,
|
||||
# plugins, and themes. Aliases can be placed here, though Oh My Zsh
|
||||
# users are encouraged to define aliases within a top-level file in
|
||||
# the $ZSH_CUSTOM folder, with .zsh extension. Examples:
|
||||
# - $ZSH_CUSTOM/aliases.zsh
|
||||
# - $ZSH_CUSTOM/macos.zsh
|
||||
# For a full list of active aliases, run `alias`.
|
||||
#
|
||||
# Example aliases
|
||||
# alias zshconfig="mate ~/.zshrc"
|
||||
# alias ohmyzsh="mate ~/.oh-my-zsh"
|
||||
DISABLE_AUTO_UPDATE=true
|
||||
DISABLE_UPDATE_PROMPT=true
|
||||
|
||||
export PATH=$PATH:/home/vscode/lib
|
||||
37
.devcontainer/devcontainer.json
Normal file
37
.devcontainer/devcontainer.json
Normal file
@@ -0,0 +1,37 @@
|
||||
// For format details, see https://aka.ms/devcontainer.json. For config options, see the
|
||||
// README at: https://github.com/devcontainers/templates/tree/main/src/ubuntu
|
||||
{
|
||||
"name": "cloudflare-updateip-dev",
|
||||
// Or use a Dockerfile or Docker Compose file. More info: https://containers.dev/guide/dockerfile
|
||||
"image": "mcr.microsoft.com/devcontainers/base:jammy",
|
||||
"features": {
|
||||
"ghcr.io/devcontainers/features/docker-outside-of-docker": {},
|
||||
},
|
||||
// "features": {},
|
||||
|
||||
// Use 'forwardPorts' to make a list of ports inside the container available locally.
|
||||
// "forwardPorts": [],
|
||||
// Configure tool-specific properties.
|
||||
// "customizations": {},
|
||||
|
||||
"mounts": [
|
||||
"source=${localWorkspaceFolder}/.devcontainer/.zshrc,target=/home/vscode/.zshrc,type=bind",
|
||||
"source=${localEnv:HOME}/.gitconfig,target=/home/vscode/.gitconfig,type=bind,consistency=cached",
|
||||
"source=${localEnv:HOME}/.ssh,target=/home/vscode/.ssh,type=bind,consistency=cached"
|
||||
],
|
||||
"postCreateCommand": "bash .devcontainer/scripts/postCreate.sh",
|
||||
"customizations": {
|
||||
"vscode": {
|
||||
"extensions": [
|
||||
"stateful.runme",
|
||||
"yzhang.markdown-all-in-one",
|
||||
"davidanson.vscode-markdownlint",
|
||||
"eamodio.gitlens",
|
||||
"m4ns0ur.base64"
|
||||
],
|
||||
"settings": {
|
||||
"terminal.integrated.defaultProfile.linux": "zsh"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
5
.devcontainer/scripts/postCreate.sh
Normal file
5
.devcontainer/scripts/postCreate.sh
Normal file
@@ -0,0 +1,5 @@
|
||||
#setup chroma for zsh colorize
|
||||
#chmod +x /home/vscode/lib/chroma
|
||||
|
||||
|
||||
|
||||
27
.gitea/workflows/docker-image-deploy.yaml
Normal file
27
.gitea/workflows/docker-image-deploy.yaml
Normal file
@@ -0,0 +1,27 @@
|
||||
on:
|
||||
push
|
||||
jobs:
|
||||
|
||||
build-docker-image:
|
||||
runs-on: ubuntu-latest
|
||||
|
||||
steps:
|
||||
|
||||
- name: Checkout code
|
||||
uses: actions/checkout@v2
|
||||
|
||||
- name: Log in to git.limbosolutions.com docker registry
|
||||
uses: docker/login-action@v3
|
||||
with:
|
||||
registry: git.limbosolutions.com
|
||||
username: ${{ secrets.GITLIMBO_DOCKER_REGISTRY_USERNAME }}
|
||||
password: ${{ secrets.GITLIMBO_DOCKER_REGISTRY_PASSWORD }}
|
||||
|
||||
- name: Build and push Docker images
|
||||
id: push
|
||||
uses: docker/build-push-action@v6
|
||||
with:
|
||||
context: ${{gitea.workspace}}
|
||||
file: ${{gitea.workspace}}/Dockerfile
|
||||
push: true
|
||||
tags: git.limbosolutions.com/mylimbo/cloudflare-update-dns:latest
|
||||
1
.gitignore
vendored
Normal file
1
.gitignore
vendored
Normal file
@@ -0,0 +1 @@
|
||||
.env
|
||||
12
DockerFile
Normal file
12
DockerFile
Normal file
@@ -0,0 +1,12 @@
|
||||
# Start from Alpine base image
|
||||
FROM alpine:latest
|
||||
|
||||
# Install bash and curl
|
||||
RUN apk update && apk add --no-cache curl bash
|
||||
COPY src /app/scripts
|
||||
RUN chmod +x /app/scripts -R
|
||||
|
||||
ENV LOOP=60
|
||||
|
||||
# Set bash as the default shell
|
||||
CMD ["/bin/sh","-c", "/app/scripts/update-ip.sh"]
|
||||
24
README.md
24
README.md
@@ -1,2 +1,24 @@
|
||||
# cloudflare-updatedns
|
||||
# cloudflare-updateip
|
||||
|
||||
## run
|
||||
|
||||
``` bash
|
||||
# requires .env file check script for required variables
|
||||
docker run --name mylimbo-cloudflare-updatedns --env-file ./.env git.limbosolutions.com/mylimbo/cloudflare-updatedns:latest
|
||||
```
|
||||
|
||||
## execute direcly without docker
|
||||
|
||||
```bash
|
||||
# requires .env file check script for required variables
|
||||
set -a
|
||||
source .env
|
||||
set +a
|
||||
bash -c ./src/update-ip.sh
|
||||
```
|
||||
|
||||
## build local image
|
||||
|
||||
``` bash
|
||||
docker build -f DockerFile -t git.limbosolutions.com/mylimbo/cloudflare-updatedns:latest .
|
||||
```
|
||||
|
||||
52
src/update-ip.sh
Executable file
52
src/update-ip.sh
Executable file
@@ -0,0 +1,52 @@
|
||||
#!/bin/bash
|
||||
|
||||
# environments variables:
|
||||
# CLOUDFLARE_API_TOKEN=CLoudflare api token
|
||||
# CLOUDFLARE_ZONE_ID=cloudflare zone id
|
||||
# CLOUDFLARE_RECORD_ID=cloudflare zone id
|
||||
# SLEEP=60s
|
||||
|
||||
# script source: https://medium.com/@adrian.punga_29809/dynamic-dns-with-cloudflare-761c1efcd84
|
||||
|
||||
LAST_IP=""
|
||||
MY_IP=""
|
||||
|
||||
|
||||
: "${CLOUDFLARE_API_TOKEN:?Environment variable CLOUDFLARE_API_TOKEN is not set}"
|
||||
: "${CLOUDFLARE_ZONE_ID:?Environment variable CLOUDFLARE_ZONE_ID is not set}"
|
||||
: "${CLOUDFLARE_RECORD_ID:?Environment variable CLOUDFLARE_RECORD_ID is not set}"
|
||||
|
||||
updateCloudFlare() {
|
||||
#echo "curl -X PATCH \"https://api.cloudflare.com/client/v4/zones/${CLOUDFLARE_ZONE_ID}/dns_records/${CLOUDFLARE_RECORD_ID}\""
|
||||
#echo "--data \"{\"content\":\"${MY_IP}\"}\""
|
||||
#echo "Authorization: Bearer ${CLOUDFLARE_API_TOKEN}"
|
||||
#--silent
|
||||
curl --silent -X PATCH "https://api.cloudflare.com/client/v4/zones/${CLOUDFLARE_ZONE_ID}/dns_records/${CLOUDFLARE_RECORD_ID}" \
|
||||
-H "Authorization: Bearer ${CLOUDFLARE_API_TOKEN}" \
|
||||
-H "Content-Type: application/json" \
|
||||
--data "{\"content\":\"${MY_IP}\"}" ; echo #to end the line on output
|
||||
}
|
||||
|
||||
|
||||
checkIp() {
|
||||
MY_IP="$(curl --silent ifconfig.me)"
|
||||
if [ "${MY_IP}" != "${LAST_IP}" ]; then
|
||||
echo "info: Public IP changed. From ${LAST_IP} to ${MY_IP}".
|
||||
updateCloudFlare
|
||||
LAST_IP=${MY_IP}
|
||||
else
|
||||
echo "info: Public IP ${LAST_IP} remained the same."
|
||||
fi
|
||||
}
|
||||
|
||||
|
||||
if [ -n "${SLEEP}" ]; then
|
||||
while :
|
||||
do
|
||||
checkIp
|
||||
sleep ${SLEEP}
|
||||
done
|
||||
|
||||
else
|
||||
checkIp
|
||||
fi
|
||||
Reference in New Issue
Block a user