Added timestap for update ip function
This commit is contained in:
parent
9c62773ed0
commit
cf4984afe8
27
ddns.py
27
ddns.py
@ -9,6 +9,7 @@ import argparse
|
|||||||
import requests
|
import requests
|
||||||
import os
|
import os
|
||||||
import time
|
import time
|
||||||
|
from datetime import datetime
|
||||||
from string import ascii_letters, digits
|
from string import ascii_letters, digits
|
||||||
from rich import print
|
from rich import print
|
||||||
from argparse import RawTextHelpFormatter
|
from argparse import RawTextHelpFormatter
|
||||||
@ -16,7 +17,7 @@ from argparse import RawTextHelpFormatter
|
|||||||
homefilepath = Path.home()
|
homefilepath = Path.home()
|
||||||
filepath = homefilepath.joinpath('.config/ddns')
|
filepath = homefilepath.joinpath('.config/ddns')
|
||||||
database = filepath.joinpath('ddns.db')
|
database = filepath.joinpath('ddns.db')
|
||||||
app_version = '0.1'
|
app_version = '0.2'
|
||||||
|
|
||||||
|
|
||||||
def get_ip():
|
def get_ip():
|
||||||
@ -53,7 +54,7 @@ def connect_database():
|
|||||||
api text NOT NULL)''')
|
api text NOT NULL)''')
|
||||||
c.execute('''CREATE TABLE IF NOT EXISTS ipservers
|
c.execute('''CREATE TABLE IF NOT EXISTS ipservers
|
||||||
(id integer NOT NULL PRIMARY KEY,
|
(id integer NOT NULL PRIMARY KEY,
|
||||||
ip4_server text,
|
ip4_server text NOT NULL,
|
||||||
ip6_server text)''')
|
ip6_server text)''')
|
||||||
c.execute('''CREATE TABLE IF NOT EXISTS domains
|
c.execute('''CREATE TABLE IF NOT EXISTS domains
|
||||||
(id integer PRIMARY KEY,
|
(id integer PRIMARY KEY,
|
||||||
@ -61,7 +62,7 @@ def connect_database():
|
|||||||
c.execute('''CREATE TABLE IF NOT EXISTS subdomains
|
c.execute('''CREATE TABLE IF NOT EXISTS subdomains
|
||||||
(id integer PRIMARY KEY,
|
(id integer PRIMARY KEY,
|
||||||
main_id integer NOT NULL,
|
main_id integer NOT NULL,
|
||||||
name text,
|
name text NOT NULL,
|
||||||
current_ip4 text NOT NULL,
|
current_ip4 text NOT NULL,
|
||||||
current_ip6 text NULL)''')
|
current_ip6 text NULL)''')
|
||||||
|
|
||||||
@ -358,6 +359,7 @@ def updateip():
|
|||||||
cursor = conn.cursor()
|
cursor = conn.cursor()
|
||||||
cursor.execute('SELECT COUNT(*) FROM subdomains')
|
cursor.execute('SELECT COUNT(*) FROM subdomains')
|
||||||
count = cursor.fetchone()[0]
|
count = cursor.fetchone()[0]
|
||||||
|
now = datetime.now()
|
||||||
if count == 0:
|
if count == 0:
|
||||||
print('[red]Error: [/red]There are no dynamic domains active.'\
|
print('[red]Error: [/red]There are no dynamic domains active.'\
|
||||||
' Start by adding a new domain with [i]ddns -s test.example.com[/i]')
|
' Start by adding a new domain with [i]ddns -s test.example.com[/i]')
|
||||||
@ -377,6 +379,7 @@ def updateip():
|
|||||||
print('[red]Error: ' + str(response.json))
|
print('[red]Error: ' + str(response.json))
|
||||||
else:
|
else:
|
||||||
cursor.execute('UPDATE subdomains SET current_ip4=? WHERE id = ?',(current_ip,subdomain_id,))
|
cursor.execute('UPDATE subdomains SET current_ip4=? WHERE id = ?',(current_ip,subdomain_id,))
|
||||||
|
cursor.execute('UPDATE subdomains SET last_updated=? WHERE id = ?',(now.strftime("%d/%m/%Y_%H:%M:%S"),subdomain_id,))
|
||||||
conn.commit()
|
conn.commit()
|
||||||
|
|
||||||
|
|
||||||
@ -416,9 +419,23 @@ def local_add_subdomain(domain,domainid):
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
def updatedb():
|
||||||
|
# Update DB with new column 20.03.23
|
||||||
|
# Add last updated field for subdomains
|
||||||
|
new_table = 'last_updated'
|
||||||
|
cursor = conn.cursor()
|
||||||
|
info = conn.execute("PRAGMA table_info('subdomains')").fetchall()
|
||||||
|
if not any(new_table in word for word in info):
|
||||||
|
add_column = "ALTER TABLE subdomains ADD COLUMN last_updated text"
|
||||||
|
conn.execute(add_column)
|
||||||
|
conn.commit()
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
# Commandline arguments
|
# Commandline arguments
|
||||||
conn = connect_database()
|
conn = connect_database()
|
||||||
|
updatedb()
|
||||||
parser = argparse.ArgumentParser(prog='ddns',
|
parser = argparse.ArgumentParser(prog='ddns',
|
||||||
description='Application to use domains from DigitalOcean account as dynamic '\
|
description='Application to use domains from DigitalOcean account as dynamic '\
|
||||||
'DNS domain(s).\nThe app only supports IP4. IPv6 is planned for a later release!'\
|
'DNS domain(s).\nThe app only supports IP4. IPv6 is planned for a later release!'\
|
||||||
@ -447,7 +464,7 @@ parser.add_argument('-t', '--top', help='Add a new domain from your DigitalOcean
|
|||||||
parser.add_argument('-s', '--sub', help='Add a new subdomain to your DigitalOcean account and use as dynamic DNS.\n',
|
parser.add_argument('-s', '--sub', help='Add a new subdomain to your DigitalOcean account and use as dynamic DNS.\n',
|
||||||
required=False, nargs=1, metavar=('domain'), action='append')
|
required=False, nargs=1, metavar=('domain'), action='append')
|
||||||
|
|
||||||
parser.add_argument('-k', '--local', help='Add an existing DigitalOcean domain to your ddns DB and use as dynamic DNS. Get ',
|
parser.add_argument('-k', '--local', help='Add an existing DigitalOcean domain to your ddns DB and use as dynamic DNS.',
|
||||||
required=False, nargs=2, metavar=('domain','domainid'), action='append')
|
required=False, nargs=2, metavar=('domain','domainid'), action='append')
|
||||||
|
|
||||||
parser.add_argument('-r', '--remove', help='Remove a subdomain from your DigitalOcean account and ddns.',
|
parser.add_argument('-r', '--remove', help='Remove a subdomain from your DigitalOcean account and ddns.',
|
||||||
|
Loading…
Reference in New Issue
Block a user