1
0
mirror of https://github.com/cmur2/dyndnsd.git synced 2025-07-04 09:11:17 +02:00

wip: add steep and RBS

This commit is contained in:
cn
2021-01-21 12:15:35 +01:00
parent 3af42e4c20
commit 6fd26a4908
19 changed files with 271 additions and 9 deletions

21
sig/dyndnsd/database.rbs Normal file
View File

@ -0,0 +1,21 @@
module Dyndnsd
class Database
extend Forwardable
def initialize: (string db_file) -> void
def load: () -> void
def save: () -> void
def changed?: () -> bool
def []: (string key) -> untyped
def []=: (string key, untyped value) -> void
def each: () { (string key, untyped value) -> void } -> void
def has_key?: (string key) -> bool
end
end

View File

@ -0,0 +1,9 @@
module Dyndnsd
module Generator
class Bind
def initialize: (String domain, Hash[String, untyped] updater_params) -> void
def generate: (Dyndnsd::Database db) -> string
end
end
end

32
sig/dyndnsd/helper.rbs Normal file
View File

@ -0,0 +1,32 @@
module Dyndnsd
type users = Hash[String, Hash[String, String]]
type hosts = Hash[String, Array[String]]
class Helper
# @param hostname [String]
# @param domain [String]
# @return [Boolean]
def self.fqdn_valid?: (String hostname, String domain) -> bool
# @param ip [String]
# @return [Boolean]
def self.ip_valid?: (String ip) -> bool
# @param username [String]
# @param password [String]
# @param users [Hash]
# @return [Boolean]
def self.user_allowed?: (String username, String password, users users) -> bool
# @param hostname [String]
# @param myips [Array]
# @param hosts [Hash]
# @return [Boolean]
def self.changed?: (String hostname, Array[String] myips, hosts hosts) -> bool
# @param operation [String]
# @param block [Proc]
# @return [void]
def self.span: (String operation) { (untyped) -> untyped } -> untyped
end
end

View File

@ -0,0 +1,19 @@
module Dyndnsd
module Responder
class DynDNSStyle
def initialize: (_App app) -> void
def call: (env env) -> response?
private
def decorate_dyndnsd_response: (int status_code, headers headers, Array[untyped] body) -> response?
def decorate_other_response: (int status_code, headers headers, Array[untyped] _body) -> response?
def get_success_body: (Array[Symbol] changes, Array[string] myips) -> string
def error_response_map: () -> Hash[string, response]
end
end
end

View File

@ -0,0 +1,19 @@
module Dyndnsd
module Responder
class RestStyle
def initialize: (_App app) -> void
def call: (env env) -> response?
private
def decorate_dyndnsd_response: (int status_code, headers headers, Array[untyped] body) -> response?
def decorate_other_response: (int status_code, headers headers, Array[untyped] _body) -> response?
def get_success_body: (Array[Symbol] changes, Array[string] myips) -> string
def error_response_map: () -> Hash[string, response]
end
end
end

View File

@ -0,0 +1,17 @@
module Dyndnsd
class TextfileReporter
attr_reader file: String
def initialize: (String file, ?Hash[Symbol, untyped] options) -> void
def start: () -> void
def stop: () -> void
def restart: () -> void
def write: () -> void
def write_metric: (File file, String base_name, untyped metric, Array[Symbol] keys, Array[Symbol] snapshot_keys) -> void
end
end

View File

@ -0,0 +1,9 @@
module Dyndnsd
module Updater
class CommandWithBindZone
def initialize: (String domain, Hash[String, untyped] updater_params) -> void
def update: (Dyndnsd::Database db) -> void
end
end
end

View File

@ -0,0 +1,39 @@
module Dyndnsd
module Updater
class ZoneTransferServer
DEFAULT_SERVER_LISTENS: Array[String]
def initialize: (String domain, Hash[String, untyped] updater_params) -> void
def update: (Dyndnsd::Database db) -> void
# converts into suitable parameter form for Async::DNS::Resolver or Async::DNS::Server
#
# @param endpoint_list [Array<String>]
# @return [Array{Array{Object}}]
def self.parse_endpoints: (Array[String] endpoint_list) -> Array[Array[untyped]]
private
# creates correct Resolv::DNS::Resource object for IP address type
#
# @param ip_string [String]
# @return [Resolv::DNS::Resource::IN::A,Resolv::DNS::Resource::IN::AAAA]
def create_addr_rr_for_ip: (String ip_string) -> untyped
def send_dns_notify: () -> void
end
class ZoneTransferServerHelper #< Async::DNS::Server
attr_accessor axfr_rrs: untyped
def initialize: (untyped endpoints, String domain) -> void
# @param name [String]
# @param resource_class [Resolv::DNS::Resource]
# Since solargraph cannot parse this: param transaction [Async::DNS::Transaction]
# @return [void]
def process: (String name, untyped resource_class, untyped transaction) -> void
end
end
end

3
sig/dyndnsd/version.rbs Normal file
View File

@ -0,0 +1,3 @@
module Dyndnsd
VERSION: ::String
end