Workflow: HTTP Cron Automation

Workflow Details

Download Workflow
{
    "id": 3,
    "name": "NameCheap Dynamic DNS (DDNS)",
    "nodes": [
        {
            "name": "Cron",
            "type": "n8n-nodes-base.cron",
            "position": [
                380,
                300
            ],
            "parameters": {
                "triggerTimes": {
                    "item": [
                        {
                            "mode": "everyX",
                            "unit": "minutes",
                            "value": 15
                        }
                    ]
                }
            },
            "typeVersion": 1
        },
        {
            "name": "Checks IP if new",
            "type": "n8n-nodes-base.function",
            "position": [
                740,
                300
            ],
            "parameters": {
                "functionCode": "const staticData = getWorkflowStaticData('global');\nconst newItem = items.map(item => item.json[\"ip\"]);\nconst ildItem = staticData.ildItem; \n\nif (!ildItem) {\n  staticData.ildItem = newItem;\n  return items;\n}\n\n\nconst actualnewItem = newItem.filter((id) => !ildItem.includes(id));\nconst actualItem = items.filter((data) => actualnewItem.includes(data.json['ip']));\nstaticData.ildItem = [...actualnewItem, ...ildItem];\n\nreturn actualItem;"
            },
            "typeVersion": 1
        },
        {
            "name": "subdomains",
            "type": "n8n-nodes-base.function",
            "position": [
                1100,
                300
            ],
            "parameters": {
                "functionCode": "items[0].json = {\n    value: [\n        {id: \"subdomain1\"},\n        {id: \"subdomain2\"},\n        {id: \"subdomain3\"}\n    ]\n};\nreturn items;"
            },
            "typeVersion": 1
        },
        {
            "name": "Loops trough Subdomain list",
            "type": "n8n-nodes-base.function",
            "position": [
                1280,
                300
            ],
            "parameters": {
                "functionCode": "const newItems = [];\n\nfor (const item of items[0].json.value) {\n  newItems.push({json: item});\n}\n\nreturn newItems;"
            },
            "typeVersion": 1
        },
        {
            "name": "Send data to Namecheap",
            "type": "n8n-nodes-base.httpRequest",
            "position": [
                1460,
                300
            ],
            "parameters": {
                "url": "=https:\/\/dynamicdns.park-your-domain.com\/update?host={{$node[\"Loops trough Subdomain list\"].parameter[\"functionCode\"]}}test&domain={{$node[\"yourdomain.com\"].parameter[\"values\"][\"string\"][0][\"value\"]}}&password={{$node[\"yourdomain.com\"].parameter[\"values\"][\"string\"][1][\"value\"]}}&ip={{$node[\"Get Public IP address\"].json[\"ip\"]}}",
                "options": [],
                "responseFormat": "string"
            },
            "typeVersion": 1
        },
        {
            "name": "Get Public IP address",
            "type": "n8n-nodes-base.httpRequest",
            "position": [
                560,
                300
            ],
            "parameters": {
                "url": "https:\/\/api.ipify.org?format=json",
                "options": [],
                "jsonParameters": true,
                "allowUnauthorizedCerts": true
            },
            "retryOnFail": true,
            "typeVersion": 1,
            "continueOnFail": true
        },
        {
            "name": "yourdomain.com",
            "type": "n8n-nodes-base.set",
            "position": [
                920,
                300
            ],
            "parameters": {
                "values": {
                    "string": [
                        {
                            "name": "domain",
                            "value": "yourdomain.com"
                        },
                        {
                            "name": "password",
                            "value": "your-namecheap-ddns-password"
                        }
                    ]
                },
                "options": [],
                "keepOnlySet": true
            },
            "typeVersion": 1
        }
    ],
    "active": false,
    "settings": [],
    "connections": {
        "Cron": {
            "main": [
                [
                    {
                        "node": "Get Public IP address",
                        "type": "main",
                        "index": 0
                    }
                ]
            ]
        },
        "subdomains": {
            "main": [
                [
                    {
                        "node": "Loops trough Subdomain list",
                        "type": "main",
                        "index": 0
                    }
                ]
            ]
        },
        "yourdomain.com": {
            "main": [
                [
                    {
                        "node": "subdomains",
                        "type": "main",
                        "index": 0
                    }
                ]
            ]
        },
        "Checks IP if new": {
            "main": [
                [
                    {
                        "node": "yourdomain.com",
                        "type": "main",
                        "index": 0
                    }
                ]
            ]
        },
        "Get Public IP address": {
            "main": [
                [
                    {
                        "node": "Checks IP if new",
                        "type": "main",
                        "index": 0
                    }
                ]
            ]
        },
        "Loops trough Subdomain list": {
            "main": [
                [
                    {
                        "node": "Send data to Namecheap",
                        "type": "main",
                        "index": 0
                    }
                ]
            ]
        }
    }
}
Back to Workflows

Related Workflows

Airtable Mindee Automate Webhook
View
Create entry in Mailchimp from Airtable
View
GitHub Slack Create Triggered
View
Limit Code Create Scheduled
View
Save new Files received on Telegram to Google Drive
View
Functionitem Telegram Create Webhook
View
Create a new list, add a new contact to the list, update the contact, and get all contacts in the list
View
Elasticsearch Cron Create Webhook
View
comentarios automaticos
View
HTTP Stickynote Create Webhook
View