Skip to content

Commit

Permalink
Initial version
Browse files Browse the repository at this point in the history
  • Loading branch information
johnramsden committed May 29, 2019
1 parent 00361b8 commit 5d14622
Show file tree
Hide file tree
Showing 10 changed files with 63 additions and 41 deletions.
43 changes: 21 additions & 22 deletions .travis.yml
Original file line number Diff line number Diff line change
@@ -1,43 +1,42 @@
language: rust
env:
global:
- PROJECT_NAME=lindyndns
- RUST_BACKTRACE=full
- secure: dxDKfaOmGZM9kH7wv/W/zrLZfhMy1O8gDpti0ybbO323TI9kDW45egNzTQTwbUiYD87TawT99IC3gw9R6kok29YyHLQzhu1PNrMMEy8o+8dxoSzJnTfZY2oPy+7uqOGOKiApVJen8OI+a29/WYL9liJj5A4yXjoKMs+wa+KLxSjDaCPv3ZrEPresrk1JiTLPWWyNNCF7hR+ax/hG3EXvO+VHkkOBjodJZCgihSYmr0Y2s70cWODFCbKK5y+dnzEXMhZjR+bGUSJUmXDxkBhE1lxn7ia0d0tgEf4LM5PG2HWouA7dFgKTh35nAvQBoR2fyWDT7+pLfj/k2tmtyeJtDucbVHWVW1e/EovHfg1QsKM3rY/grWOvjkv3duZpM4Ej6Zlwd+l9iS5LaHan7h3sV+8bQLfKSZBvHcZPn89Rqih6xIsqbj4FkiC2R3CHle2dLqjd2A0VC6v7wLQ04ko4DsOlsUACMOOm2hYfMvXCqQ0FUwyUTFxYA7+gY4ebjnIh5IKYu14pPYQ4QqM/LcbM2fuRfIFWIwI5WXSWfIXJEN7smr0q/has2/YqgS+wiH7zf8VF3SKbHCKkcV1EqTsD7e0nu1KgKqdXTjYjPg4FOoRmHp/pTH+xPrCnTIjW9EHuIYmxil/PiaYcRJrLW+hOiTuxB1iNxmx+7VDcSG+xmj8=
- secure: UAcmn3LRK4KztAld8zChi/EobhLtiyMmvYKFQGCZ6kRTbodZNc1YG8qhho7RuF7aQaxtGX80qWzPEx8DvPE5PjFjJFUSprNe5JwXW97tMTs/3AfgkLDPMpj2EuXO6WjzsrBfv51IiXF4AYQVOULlFEoFc+NOaJAdiSge9oiaQGjo+H6pRr63KJdp25E7iN1ml5WBOBa8QckXXaAFzCrZSzBlR7g7mlk7ZoOkuSmD+/AGPQaNaX8p25ffGOOtaweADIUUBtliGYmX29IP+SM7m3ze3xRLP4doXUa3N3vmSPW9NkimB4PzPNtPuTqCWAB/rxedZGFvnVg/6dz47T95o4LO8xT010QON56ISL+sioPwQY6fhUgf/Q21v/omcyxhBkWxvSkARlFoGmyHJLVngjhIFknfk3tTWZFYywTdOmb4cfpCpLFRSFyRxQlANZQhpmXPo6djM6+mKZjMItj3uV97w/PA6fhKt6YbEL72ZNvkiPcnug2lUyHiHnIqpLJEpWJ/NsbZ4gEH03h7ykU7OLVm+DPA1c7QGaiIZUWvwVFis2mKHXvw08oy05T57/y2+fYNLp4MgRpi8aTOj42Rib8j0ef9Xo7oRPj883vHxau556uu0VWQGcM3gGpADrzswKQrUCs9RPiPgJIa6m4RYy2DesLiLuQsdAoje/hgrlQ=
- secure: VTycFtwBoj8oQJoqCt/jjdT0GNoUROk2imK/V4k0is+6kFWNesc9q8JAoB9kxaGWU40mLz4TMot+zSbuUMUHXks+UtVOIpKkiocRVWXRWF0ROLHMeJVJj2UI2D7HzUio9mL+Omkx2aQsUff1yguhvbvarXQr7i3r6OqzCgQ+5fZXj3AHUrVGak+MurKgRnA7yKPlFaAi0WqMrB8Hsmr44T3f4NyZrRzzrhXaCi2VRodFQq0A7cXIbqmqd8wCrzgfERgPZQacYGSTNhXFhYbMCdgNHoZDLcFOvYCgrswOjSNIj+G+25SOXszedqtj2HSKjgvffXoTgCSojSGfpM4zk5vlxd9i4Y/+yhiB07zYeeWu+ejBGHj1wXDKuWXWO1WXR+kcCqzX3Z0bvA1f5gZByXHq7eOqYcR1oU3er8hli4HS8DA7Xmi//NdRxWf+Fzy5kT5wvuT1VjMjouPQiDP/uJ49RCEhLJplzj05PcwBhPg6pZT2WuTPi6CstBS9Yf/++WVru0mQ/JJJmJcOUf8UM1KzAnIFOuwGDjFnhBM+v2ZG+fBLMs2sGIZjDB9i8FFsWMfKzxzJ9hg+OYX11VC2rBI1z6M2RUSZcN+jAxJNv7gdw9KspdX3tw3QQzJieeGbirnO7ILaEauAuxHX986LKXGbKBmF+bUmuBPwl10DDnM=
- PROJECT_NAME=lindyndns
- RUST_BACKTRACE=full
- secure: dv+RBCrSypg/nlaahsb1aZDWM9cyjH4I4GrhJbLuJYWZ02R/yUBCzinz0Xq7Vczz1LAj7UobEbKi+P/IK6W2/mfDblYOvoHyDh2XrPZJ7qL47sTok/IuFLWfPNiYswKbbuEeFcq7SJWUdMtyEXoi88lNolLOQUZqzdzMYgpalCSG02tjzi9oG9XG5F7i3K75Hw/dFI53SeGvXqkcS+Qy43s1iV8QoU7rpnrNqSRMZUaClfPa9nPgurJ/u4l7E68fArPiKFaf7CGuEtfMYG8j8VW5Hjivy3+mLtocD+4ZamOjy+thZcmq5RX4bydLgmHmu8XuMJIsfeer1v6CtqXid61aSwiEnSc4PAuoalsjj+6iCJUEETvRS7Iqs0SUbag4ik4wgYwP3FZtpRK5Iw+t+cpI9SWagO/CYAAzBunet/OTrTH09cuvLuSf1j4tS0m2/I62wPXh+/JcMUY3UQOjDqKRsmbzo2PQSg+E6MeZfQXe7TncCW4I0J6MMFmfw2ZkIyK6xIvT3+i5dCi5ANZTuQQ/vqpcFRqvJjV3v9ahsH1TJ+iqg0qUfz4qengsR+hhQWrRnzpbvJE0/nbiuyaL5+DKrqunCTjL5ii+7fbPui6hnWFKStKYQPvvkrWVJE57TvGZ73Rf0oeFDWzghLXCp+AKbJ6cLipsANTwlR0ZMZI=
- secure: jZc4fOWYRr8w7hYZyqd4Q7TChcEe2Mh/xg7wH698ifwQm80IHLY6CtQBHi2fTyndAeNej+x7vFUz4bxzVj66BVI9576pvuOCWqAGWVHnnPezEPEcnB4cyByaQigIG16GQ/0XKcVK5pZebbUcDW1eE59h+hc9puKow9DPg4Jsedvv7r6F9ObNyOgR0r9vMRC/nHlUCm1LjO2PgsTg8Ae4bskiH92XGME6OI0Xh1c2e4gJaJyaR6vR8wAW6pCaRtLRYzO98EISn2LyD10rjfA4H5HbosQZ4YcyuYnZLAVVBW7Fx+nJ8DNVbxYYuBtbM9tSE8/BNJVAKSP/mcwCGczkydcmAfibcFGauypb4m+wUD4a1V84T5Y9xewgOGcUeN+wJkAt7t5PxkL3hcFc1oYXl+hv0GvUl60kmA7Nr1qzuCrWhZUR8sRzTlnVVkkF7bTmN2t1SuUol/Ygq2IQUp0QuIupA9nrHic753ieUXhjjdOicKVkt+AsM00kv18P3kEqrtgcXzu/1QKTKQgGkZe5oMSdERPAmlxHVkQjtavvUaUd3HHvLo+MPOIyMfWxgeKBeyB86U2hMU55bQwTPfUCblyoOV3bNVkX/isOZqWYu+gO8r5zErzhgFWSBaOeKoEoLHwFckGAmRrBM8y28yZU0ap79TAh9O4wpaPAbKLOPlo=
- secure: i8x/oSO7h4wSUuq0ZRsxzMe7PWtu4+BeCf10OS0TglGOxQJ78pYj6J4L1nR37aqoi9xDBB5dqarXsddXtQQX76fbSJ3K0BcNVEWlNm6K0nCPctOtH4hCVXZ603paqgV/vbv8R+RnvJVqogJM6WO3Xh/OAgUUi/aFIkZ1oV3gbhQhluFvAO0pO2WOSiT9q6RH7/AlXGGVqB3eVlF185FTsUBl3i5UqkPqWW1ZameJmKfgJhVQOQ7ONfrApyX8qV5SiR5shBi09bodcHLikP1JWHjOm1nFaDKSEf8nJ7UpueOCGodqltKiYzGG+OE/DDoFmQ7gmQ0g7IkwPfsOR5uXe0PlPCYfxLh3XpOD0tCfsY8gH5ilA0BB6Z4Pmc7DQCHSwNvXOEaFgA+S3TIXHKVjskuv3RGEJZ//BiRNWX8gJrFVqfiKhBJFGl9QvtCCVeYDUz69CNbkS0Fv7mpFKM6Cp39l8xCDt0IRZRQGV7+31ZL8zVv1a7/KqoN5IE1jxCSSTUkYjMedlZGosuobgFpkPlSgNu6dvaIPsD0/3BM7VVpQvwVhlJt0xKuVaYJUOfBNQKax/ZABmRcGCTv5gGuKrmGwomZ6MNN5gA9cbq8jkOUlOzAMAevV6/35KENKObEYGHDe23tT+1LOvFSeyqQscK29dgu+ItgD1qYufrcsR0k=
matrix:
include:
- os: linux
dist: xenial
rust: nightly
env: TARGET=x86_64-unknown-linux-gnu
- os: osx
rust: nightly
env: TARGET=x86_64-apple-darwin
sudo: required
- os: windows
rust: nightly
filter_secrets: false
env:
env:
- TARGET_ARCH=x86_64
- TARGET=x86_64-pc-windows-msvc
- PATH="/c/Program Files (x86)/NSIS/Bin:$PATH"
sudo: required
- os: windows
rust: nightly
filter_secrets: false
env:
env:
- TARGET_ARCH=i686
- TARGET=i686-pc-windows-msvc
- PATH="/c/Program Files (x86)/NSIS/Bin:$PATH"
sudo: required
- os: linux
dist: xenial
rust: nightly
env: TARGET=x86_64-unknown-linux-gnu
- os: osx
rust: nightly
env: TARGET=x86_64-apple-darwin
sudo: required
script:
- "ci/build.sh"
- "ci/test.sh"
- ci/build.sh
- ci/test.sh
before_deploy:
- "ci/package.sh"
- export TRAVIS_TAG="preview"
- ci/package.sh
cache:
directories:
- "${HOME}/.cargo"
Expand All @@ -51,7 +50,7 @@ deploy:
overwrite: true
draft: true
on:
all_branches: true
# branch: master
branch: master
tags: true
api_key:
secure: uaRr+l0vYNqTetNQ/1b5qROlXLYn9yeK1KZa6SEUqC3uId/4TVxhHfGrg/7QanX0YeMxBogaWj1r2+HzO5LAsAdViMTMcGSnsXVtpz7GQzPnOc5mX9LTvF9I6OThWXhtQrtc9WNSM1jOb3kRUyBzTya4R1xuajkdFamBC3fJjR+a+FmLqgdIvAIvjMGMzBwNaC0CLIisK8hOrjMacyL7mCZzYPIWAhzalrzqzhRoSj8usp2qkZhShfwa9cheMk0z2S+KdoQVY/IEidv93TiHlfPSuuvFX03QLRe1NBGwpP7OsAuvVQ6Lv+WEvknPU4lu9OWQvcKASUdm9Pft0RfZ+ANPEhSSKvBn0zUUXqa0+/54a1ClceXw694MtTEqeikgcbm5eAEqb08/IA1rmaW123xsDX8iTzhlnpzPuR3+zPZU8EBq6sw0FGmJ/3yvMmLjTK3uM6hph6quCayOXQrWXUMO1humlBCKryGqNQthfzljhZDAnZCoMiORCZXvfQIV2fjvMxgrZLMOb29DVj2o1xn8S+Rz3ddUs3xO8b+HsCBPyu0uCK0DUJHsDi6A2pgBEtYiFV4LRU1WgHav1rtEKk7b+DOZwMpB79P0hzBW5+fMVnqXPhMucCMAj8pOhg89jW5g2+ufoyhbJCrFYiZR6251iSkxN45uBMwt0qLXaTk=
secure: CpPhIAZD4yquhISO8VENFpyIUvvWM6UyO5tulPyezsDXr9aeD9QXTLOcDwLU2GnwoHOMeNjB6EsBT82oh/Zdr2246aNwVmCFSdmXzSUyK/k2485f4T0H3AyTJtPFcybynTBgnUSTzMoz7cRWCi2q6T7qKQTpVfv7R5NwQYrilNyrlQCEtL8BooSuMqUqdxVbdv5h006jxKRuayn+IvmvmjohLCmt279Tsa5Fl29TDWA3kwQCMbtswNPaNeA9V6LlHkAfmMq3/HLwTcZA+aCmGPd0qmGKB/ghwqUhKm0vU+2NjGyUFq8KDc/vxl9XDJtVYotB3PjPASKyUk4cAw4dwAbIAqMovfnB0RFDDQPBCgjyceO0+SpNjwn50P67Q9RXyRIi+W0I+qekontkIO/a1o5ZAV886W35sNBMtjUwjhDVmqYI9cvH3Tn0kb0Ia2we8fIhYRVzzHe09H2Nh+6BMIk9aziGegSuD8R3XqKCnazy1jhszcNBvRKmE7m7OkXl1hMnZMg7rtjTjGlL+NJ/pkumUkdCoKqaI02zuYqPECaSDeCrNLbU8XIdkW4huhcXE8ufxNgvxmFmzh0HQA09xSLOLNDTRRaiWW3rncv4zxI1KSUDudcOnF9rcSlcggJzKfu3uhAEVwhnwoKEb9izceFb7DKk8fzANexnkAm4aek=
2 changes: 1 addition & 1 deletion Cargo.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 1 addition & 1 deletion Cargo.toml
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
[package]
name = "lindyndns"
version = "0.0.0"
version = "0.1.0"
license = "MIT"
authors = ["John Ramsden <johnramsden@riseup.net>"]
edition = "2018"
Expand Down
27 changes: 26 additions & 1 deletion README.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
# lindyndns

[![Build Status](https://travis-ci.com/johnramsden/lindyndns.svg?token=4X1vWwTyHTHCUwBTudyN&branch=master)](https://travis-ci.com/johnramsden/lindyndns)
[![Build Status](https://travis-ci.com/johnramsden/lindyndns.svg?branch=master)](https://travis-ci.com/johnramsden/lindyndns)

Linode Dynamic DNS Client

Expand Down Expand Up @@ -49,6 +49,31 @@ Running `lindyndns` will create the specified domain if the user has permissions

If all permissions are correct, running `lindyndns` will update the specified domain, and print the IP address of the user.

### Scheduling

After creating configuration, start the service. The config should be system
wide if running the system service.

#### Linux

```
systemctl enable --now lindyndns.timer
```

#### MacOS

```
launchctl bootstrap system /Library/LaunchDaemons/ca.johnramsden.lindyndns.plist
```

Modify the update interval by editing `/Library/LaunchDaemons/ca.johnramsden.lindyndns.plist`.

Check it's running with `launchctl list | grep lindyndns`

#### Windows

If installed from the `.exe` installer, a schedule of job should have been created in the windows scheduler which will run every half hour.

## Installing

Several pre-built packages are available depending on the platform under the [releases page](https://github.com/johnramsden/lindyndns/releases).
Expand Down
8 changes: 4 additions & 4 deletions ci/package.sh
Original file line number Diff line number Diff line change
Expand Up @@ -6,9 +6,9 @@ set -e

tmpdir="$(mktemp -d)"

[ -n "${TRAVIS_TAG}" ] && tag="-${TRAVIS_TAG}" || tag="-0.0.0"
if [ -n "${TRAVIS_TAG}" ]; then version="${TRAVIS_TAG}"; else version="0.0.0"; fi

name="${PROJECT_NAME}${tag}-${TARGET}"
name="${PROJECT_NAME}-${version}-${TARGET}"
staging="${tmpdir}/${PROJECT_NAME}"

out_dir="$(pwd)/deployment"
Expand All @@ -32,6 +32,7 @@ osx() {
cd munkipkg

cp -r "${TRAVIS_BUILD_DIR}/packaging/macos/munkipkg/lindyndns" lindyndns
echo "version: '${version}'" >> lindyndns/build-info.yaml

payload="lindyndns/payload"
plist='ca.johnramsden.lindyndns.plist'
Expand All @@ -44,7 +45,6 @@ osx() {
cp "${staging}/lindyndns" "${bindir}"
cp "${TRAVIS_BUILD_DIR}/packaging/macos/${plist}" "${launch_daemons}"


(
python3 -m venv venv && . venv/bin/activate && \
pip install -r requirements.txt && \
Expand All @@ -70,7 +70,7 @@ windows() {

cd "nsis"
makensis.exe "installer_${TARGET_ARCH}.nsi"
cp "lindyndns_setup_${TARGET_ARCH}.exe" "${out_dir}"
cp "lindyndns_setup_${TARGET_ARCH}.exe" "${out_dir}/lindyndns-${version}_setup_${TARGET_ARCH}.exe"
)

}
Expand Down
15 changes: 7 additions & 8 deletions ci/test.sh
Original file line number Diff line number Diff line change
Expand Up @@ -3,8 +3,7 @@
set -o errexit

create_config() {
config="${1}"
cat << EOF > "${config}"
cat << EOF
api_token = "${API_KEY}"
domain = "${TRAVIS_OS_NAME}${TRAVIS_COMMIT}.${DOMAIN}"
soa_email = "${EMAIL}"
Expand All @@ -14,26 +13,26 @@ EOF
linux() {
config_prefix="${HOME}/.config/lindyndns"
mkdir -p "${config_prefix}"
create_config "${config_prefix}/config.toml"
create_config > "${config_prefix}/config.toml"
}

osx() {
plist='ca.johnramsden.lindyndns.plist'
launch_daemons='/Library/LaunchDaemons'

sudo cp "packaging/macos/${plist}" "${launch_daemons}"
sudo launchctl load "${launch_daemons}/${plist}"
sudo launchctl bootstrap system "${launch_daemons}/${plist}"

config_prefix="${HOME}/Library/Preferences/lindyndns"
mkdir -p "${config_prefix}"
config_prefix="/Library/Preferences/lindyndns"
sudo mkdir -p "${config_prefix}"

create_config "${config_prefix}/config.toml"
create_config | sudo tee "${config_prefix}/config.toml" > /dev/null
}

windows() {
config_prefix="${LOCALAPPDATA}"'\lindyndns'
mkdir -p "${config_prefix}"
create_config "${config_prefix}"'\config.toml'
create_config > "${config_prefix}"'\config.toml'
}

test() {
Expand Down
2 changes: 1 addition & 1 deletion packaging/macos/ca.johnramsden.lindyndns.plist
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,6 @@
<string>/usr/local/bin/lindyndns</string>
</array>
<key>StartInterval</key>
<integer>300</integer>
<integer>1800</integer>
</dict>
</plist>
1 change: 0 additions & 1 deletion packaging/macos/munkipkg/lindyndns/build-info.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -6,4 +6,3 @@ ownership: recommended
postinstall_action: none
preserve_xattr: false
suppress_bundle_relocation: true
version: '0.0.0'
2 changes: 1 addition & 1 deletion src/lib.rs
Original file line number Diff line number Diff line change
Expand Up @@ -38,7 +38,7 @@ pub fn expected_config_location() -> (String, String) {
} else if cfg!(target_os = "macos") {
(
String::from("/Library/Preferences/lindyndns/config.toml"),
String::from("~/Library/Preferences//lindyndns/config.toml")
String::from("~/Library/Preferences/lindyndns/config.toml")
)
} else {
(
Expand Down
2 changes: 1 addition & 1 deletion src/main.rs
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@ use lindyndns::{run, find_config, expected_config_location};

fn main() -> Result<(), Box<dyn Error>> {
let matches = App::new("lindyndns")
.version("0.0.0")
.version("0.1.0")
.author("John Ramsden <johnramsden@riseup.net>")
.about("Linode Dynamic DNS Client")
.arg(
Expand Down

0 comments on commit 5d14622

Please sign in to comment.