cdmon_updater 0.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,17 @@
1
+ *.gem
2
+ *.rbc
3
+ .bundle
4
+ .config
5
+ .yardoc
6
+ Gemfile.lock
7
+ InstalledFiles
8
+ _yardoc
9
+ coverage
10
+ doc/
11
+ lib/bundler/man
12
+ pkg
13
+ rdoc
14
+ spec/reports
15
+ test/tmp
16
+ test/version_tmp
17
+ tmp
data/.rvmrc ADDED
@@ -0,0 +1 @@
1
+ rvm 1.9.3@cdmon_updater --create
data/Gemfile ADDED
@@ -0,0 +1,4 @@
1
+ source 'https://rubygems.org'
2
+
3
+ # Specify your gem's dependencies in cdmon_updater.gemspec
4
+ gemspec
data/LICENSE ADDED
@@ -0,0 +1,22 @@
1
+ Copyright (c) 2012 Leonardo Mateo
2
+
3
+ MIT License
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining
6
+ a copy of this software and associated documentation files (the
7
+ "Software"), to deal in the Software without restriction, including
8
+ without limitation the rights to use, copy, modify, merge, publish,
9
+ distribute, sublicense, and/or sell copies of the Software, and to
10
+ permit persons to whom the Software is furnished to do so, subject to
11
+ the following conditions:
12
+
13
+ The above copyright notice and this permission notice shall be
14
+ included in all copies or substantial portions of the Software.
15
+
16
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
17
+ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
18
+ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
19
+ NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
20
+ LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
21
+ OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
22
+ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
@@ -0,0 +1,76 @@
1
+ # CdmonUpdater
2
+
3
+ TODO: Write a gem description
4
+
5
+ ## Installation
6
+
7
+ Add this line to your application's Gemfile:
8
+
9
+ gem 'cdmon_updater'
10
+
11
+ And then execute:
12
+
13
+ $ bundle
14
+
15
+ Or install it yourself as:
16
+
17
+ $ gem install cdmon_updater
18
+
19
+ ## Usage
20
+ After installation you'll have the command cdmon_config.
21
+ Use it with -g or --generate to help you generate your config file.
22
+
23
+ It will ask your user data and generate the file /etc/cdmon.yml.
24
+ If you need to change the settings you can modify the config file
25
+ later with any text editor.
26
+ The config file has the following structure:
27
+
28
+ general:
29
+ dns: dinamic1.cdmon.net
30
+ email: root@server
31
+ log_level: DEBUG
32
+ service_url: https://dinamico.cdmon.org/onlineService.php
33
+ send_mail_on_error: no
34
+
35
+ users:
36
+ cdmon_user:
37
+ hosts: kandalf.com.ar blog.kandalf.com.ar
38
+ md5pass: 1278323gfb37875f2749ju6cabd8io89
39
+
40
+ mailer:
41
+ address: relay.someserver.com.ar
42
+ port: 25
43
+ domain: kandalf.com.ar
44
+ user_name: someuser #without @domain
45
+ password: plain_password
46
+
47
+ The cdmon_user is the user you have associated in your CDMon control panel with your domains.
48
+ As you can have multiple users in CDMon, you can add as many user sections as you need here.
49
+
50
+ The md5pass should be the user's password crypted as an MD5 hash.
51
+ The cdmon_config script comes will encode your password for you
52
+ when generating the config file. If you later change your password
53
+ on the cdmon control panel, you can encode it using cdmon_config -e or --encode
54
+ and then copy/paste the encoded string into the /etc/cdmon.yml config file.
55
+
56
+ For mail notification you must activate the the send_mail_on_error feature on
57
+ the general section and properly configure your mail server.
58
+ Also, you have to define a valid email address for the email feature on the general section.
59
+
60
+ When these things are set up, an email will be sent to the email address defined on
61
+ the general section with the message of the error and the time it was raised and
62
+ the subject of "CDMon Updater ERROR".
63
+
64
+ After you have your settings, you can run the client manually or you can add the following line to your crontab
65
+
66
+ 0/3 * * * * /usr/bin/cdmon_updater
67
+
68
+ For it to run every 3 minutes.
69
+
70
+ ## Contributing
71
+
72
+ 1. Fork it
73
+ 2. Create your feature branch (`git checkout -b my-new-feature`)
74
+ 3. Commit your changes (`git commit -am 'Added some feature'`)
75
+ 4. Push to the branch (`git push origin my-new-feature`)
76
+ 5. Create new Pull Request
@@ -0,0 +1,8 @@
1
+ #!/usr/bin/env rake
2
+ require "bundler/gem_tasks"
3
+ require "rspec/core/rake_task"
4
+
5
+ RSpec::Core::RakeTask.new
6
+
7
+ task :default => :spec
8
+ task :test => :spec
data/VERSION ADDED
@@ -0,0 +1 @@
1
+ 0.1.6
@@ -0,0 +1,129 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ require 'optparse'
4
+
5
+ options = {}
6
+ @config_options = {}
7
+
8
+ optparse = OptionParser.new do |opts|
9
+ opts.banner = "Usage cdmon_config [options]
10
+ If no options are given, current configuration will be shown."
11
+
12
+ opts.on('-g', '--generate', 'Generates configuration') do
13
+ options[:generate] = true
14
+ end
15
+
16
+ opts.on('-e', '--encode', 'Encode password with MD5') do
17
+ options[:encode] = true
18
+ end
19
+
20
+ opts.on( "-h", "--help", "Display this screen") do |opt|
21
+ puts opts
22
+ exit
23
+ end
24
+ end
25
+
26
+ optparse.parse!
27
+
28
+ def show_config
29
+ puts File.read("/etc/cdmon.yml")
30
+ end
31
+
32
+ def encode_password
33
+ require 'digest/md5'
34
+
35
+ puts 'Enter your password. (Your input will not be shown)'
36
+ `stty -echo`
37
+ password = gets.strip
38
+ @config_options[:password] = Digest::MD5.hexdigest password
39
+ puts
40
+ `stty echo`
41
+ puts @config_options[:password]
42
+ end
43
+
44
+ def generate_config_file
45
+ raise 'Empty config options' if @config_options.empty?
46
+
47
+ config = <<-EOS
48
+ general:
49
+ dns: dinamic1.cdmon.net
50
+ email: root@server
51
+ log_level: DEBUG
52
+ service_url: https://dinamico.cdmon.org/onlineService.php
53
+ send_mail_on_error: #{@config_options[:send_mail]}
54
+ users:
55
+ #{@config_options[:username]}:
56
+ hosts: #{@config_options[:hosts]}
57
+ md5pass: #{@config_options[:password]}
58
+
59
+ mailer:
60
+ address: #{@config_options[:mailer_address]}
61
+ port: #{@config_options[:mailer_port]}
62
+ domain: #{@config_options[:mailer_domain]}
63
+ user_name: #{@config_options[:mailer_username]} #without @domain
64
+ password: #{@config_options[:mailer_password]}
65
+ EOS
66
+
67
+ begin
68
+ File.open("/etc/cdmon.yml", "w") do |f|
69
+ f.puts config.strip
70
+ end
71
+ show_config
72
+ rescue Errno::EACCES
73
+ puts "Can't open /etc/cdmon.yml for writing. Copy and paste this into /etc/cdmon.yml as root"
74
+ puts config
75
+ end
76
+
77
+ end
78
+
79
+ if options.empty?
80
+ show_config
81
+ exit
82
+ end
83
+
84
+ if options[:encode]
85
+ encode_password
86
+ exit
87
+ end
88
+
89
+ if options[:generate]
90
+ puts 'Enter your CDMON username'
91
+ @config_options[:username] = gets.strip
92
+ encode_password
93
+
94
+ puts 'Enter your hosts (white space separated)'
95
+ @config_options[:hosts] = gets.strip
96
+
97
+ puts 'Send mail on error? (yes/no)'
98
+ send_mail = gets.strip
99
+ @config_options[:send_mail] = (send_mail.downcase == 'yes') ? 'yes' : 'no'
100
+
101
+ if @config_options[:send_mail] == 'yes'
102
+ puts 'Enter your mail server address'
103
+ @config_options[:mailer_address] = gets.strip
104
+
105
+ puts 'Enter your mail server port (25)'
106
+ port = gets.strip
107
+ @config_options[:mailer_port] = (port.empty?) ? '25' : port
108
+
109
+ puts 'Enter your domain'
110
+ @config_options[:mailer_domain] = gets.strip
111
+
112
+ puts 'Enter your mailer user name (without the domain)'
113
+ @config_options[:mailer_username] = gets.strip
114
+
115
+ puts 'Enter your mailer password (input will not be shown)'
116
+ `stty -echo`
117
+ @config_options[:mailer_password] = gets.strip
118
+ `stty echo`
119
+ else
120
+ @config_options[:mailer_address] = 'relay.someserver.com.ar'
121
+ @config_options[:mailer_port] = '25'
122
+ @config_options[:mailer_domain] = 'example.com'
123
+ @config_options[:mailer_username] = 'someuser'
124
+ @config_options[:mailer_password] = 'secret'
125
+ end
126
+ generate_config_file
127
+ end
128
+
129
+
@@ -0,0 +1,14 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ require_relative '../lib/ip_updater'
4
+ require 'rubygems'
5
+
6
+ if File.exists?("/etc/cdmon.yml")
7
+ config_file = "/etc/cdmon.yml"
8
+ else
9
+ config_file = "#{Gem.dir}/gems/cdmon_updater-#{CDMonUpdater::VERSION}/config/cdmon.yml"
10
+ end
11
+
12
+ updater = CDMonUpdater::IPUpdater.new(config_file)
13
+
14
+ updater.update
@@ -0,0 +1,20 @@
1
+ # -*- encoding: utf-8 -*-
2
+ require File.expand_path('../lib/cdmon_updater/version', __FILE__)
3
+
4
+ Gem::Specification.new do |gem|
5
+ gem.authors = ["Leonardo Mateo"]
6
+ gem.email = ["leonardomateo@gmail.com"]
7
+ gem.description = %q{Just another client for CDMon (http://www.cdmon.com) dynamic DNS.}
8
+ gem.summary = %q{CDMon dynamic DNS client}
9
+ gem.homepage = ""
10
+
11
+ gem.executables = `git ls-files -- bin/*`.split("\n").map{ |f| File.basename(f) }
12
+ gem.files = `git ls-files`.split("\n")
13
+ gem.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
14
+ gem.name = "cdmon_updater"
15
+ gem.require_paths = ["lib"]
16
+ gem.version = CDMonUpdater::VERSION
17
+
18
+ gem.add_development_dependency 'rake'
19
+ gem.add_development_dependency 'rspec'
20
+ end
@@ -0,0 +1,19 @@
1
+ general:
2
+ dns: dinamic1.cdmon.net
3
+ email: root@server
4
+ log_level: DEBUG
5
+ service_url: https://dinamico.cdmon.org/onlineService.php
6
+ send_mail_on_error: no
7
+
8
+ users:
9
+ cdmon_user:
10
+ hosts: kandalf.com.ar blog.kandalf.com.ar
11
+ md5pass: 1278323gfb37875f2749ju6cabd8io89
12
+
13
+ mailer:
14
+ address: relay.someserver.com.ar
15
+ port: 25
16
+ domain: kandalf.com.ar
17
+ user_name: someuser #without @domain
18
+ password: plain_password
19
+
@@ -0,0 +1,22 @@
1
+ # Use this file to easily define all of your cron jobs.
2
+ #
3
+ # It's helpful, but not entirely necessary to understand cron before proceeding.
4
+ # http://en.wikipedia.org/wiki/Cron
5
+
6
+ # Example:
7
+ #
8
+ # set :cron_log, "/path/to/my/cron_log.log"
9
+ #
10
+ # every 2.hours do
11
+ # command "/usr/bin/some_great_command"
12
+ # runner "MyModel.some_method"
13
+ # rake "some:great:rake:task"
14
+ # end
15
+ #
16
+ # every 4.days do
17
+ # runner "AnotherModel.prune_old_records"
18
+ # end
19
+ every 3.minutes do
20
+ command "/usr/bin/cdmon_updater"
21
+ end
22
+ # Learn more: http://github.com/javan/whenever
@@ -0,0 +1,5 @@
1
+ require 'logger'
2
+ require 'mailer'
3
+
4
+ module CDMon
5
+ end
@@ -0,0 +1,52 @@
1
+ require File.dirname(__FILE__) + "/cdmon_updater/version"
2
+ require File.dirname(__FILE__) + "/cdmon_updater/config"
3
+ require File.dirname(__FILE__) + "/cdmon_updater/mailer"
4
+ require "logger"
5
+
6
+ module CDMonUpdater
7
+ def self.logger
8
+ @@logger ||=
9
+ begin
10
+ @@logger = Logger.new("/var/log/cdmon.log", 10, 1024000)
11
+ rescue Errno::EACCES
12
+ @@logger = Logger.new("#{ENV["HOME"]}/.cdmon.log")
13
+ end
14
+ @@logger
15
+ end
16
+
17
+ def self.log_level=(level)
18
+ case level
19
+ when "WARN"
20
+ logger.level = Logger::WARN
21
+ when "INFO"
22
+ logger.level = Logger::INFO
23
+ when "ERROR"
24
+ logger.level = Logger::ERROR
25
+ when "FATAL"
26
+ logger.level = Logger::FATAL
27
+ when "DEBUG"
28
+ logger.level = Logger::DEBUG
29
+ end
30
+ end
31
+
32
+ def self.log_all(message)
33
+ logger.info(message)
34
+ logger.debug(message)
35
+ logger.warn(message)
36
+ logger.error(message)
37
+ self.send_error_mail(message) if Config.mail_on_error?
38
+ end
39
+
40
+ protected
41
+ def self.send_error_mail(message)
42
+ mailer = Mailer.new({"server" => Config.mailer})
43
+ mailer.from = "cdmon_updater@#{Mailer.domain}"
44
+ mailer.to = Config.mail_to
45
+ mailer.subject = "CDMon Updater ERROR"
46
+ mailer.message = message
47
+ unless mailer.send_mail
48
+ logger.debug("Cannot send mail")
49
+ logger.info("Cannot send mail")
50
+ end
51
+ end
52
+ end
@@ -0,0 +1,69 @@
1
+ require 'yaml'
2
+
3
+ module CDMonUpdater
4
+ module Config
5
+ USER = "cdmon_host_user"
6
+ MD5PASS = "cdmon_crypted_user_pass"
7
+ EMAIL = "root@server"
8
+ HOSTS = %w"kandalf.com.ar blog.kandalf.com.ar"
9
+ DNS_NAMES = ["dinamic1.cdmon.net"]
10
+
11
+ CDMON_OK_IP = "customok"
12
+ CDMON_BAD_IP = "badip"
13
+ CDMON_ERROR_LOGIN = "errorlogin"
14
+
15
+ @@config = {}
16
+
17
+ def self.load(config_file)
18
+ @@config = YAML::load_file(config_file)
19
+ end
20
+
21
+ def self.log_level
22
+ @@config["general"]["log_level"] if @@config
23
+ end
24
+
25
+ def self.users
26
+ @@config["users"]
27
+ end
28
+
29
+ def self.mailer
30
+ @@config["mailer"]
31
+ end
32
+
33
+ def self.mail_to
34
+ @@config["general"]["email"] if @@config
35
+ end
36
+
37
+ def self.md5_password_for(user)
38
+ @@config["users"][user.to_s]["md5pass"] if @@config
39
+ end
40
+
41
+ def self.hosts_for(user)
42
+ @@config["users"][user.to_s]["hosts"].split(" ") if @@config
43
+ end
44
+
45
+ def self.dns
46
+ @@config["general"]["dns"] if @@config
47
+ end
48
+
49
+ def self.mail_on_error?
50
+ @@config["general"]["send_mail_on_error"]
51
+ end
52
+
53
+ def self.hosts
54
+ HOSTS
55
+ end
56
+
57
+ def self.service_url
58
+ @@config["general"]["service_url"] if @@config
59
+ end
60
+
61
+ def self.get_cdmon_ip_path_for(user)
62
+ "/onlineService.php?enctype=MD5&n=#{user.to_s}&p=#{self.md5_password_for(user)}"
63
+ end
64
+
65
+ def self.cdmon_ip_path_for(user, address)
66
+ "/onlineService.php?enctype=MD5&n=#{user.to_s}&p=#{self.md5_password_for(user)}&cip=#{address}"
67
+ end
68
+ end
69
+ end
@@ -0,0 +1,93 @@
1
+ require 'net/smtp'
2
+ require File.dirname(__FILE__) + '/config'
3
+
4
+ module CDMonUpdater
5
+ class Mailer < Net::SMTP
6
+ attr_accessor :subject, :message, :from, :to
7
+
8
+ if CDMonUpdater::Config.mailer
9
+ @@address = CDMonUpdater::Config.mailer["address"]
10
+ @@port = CDMonUpdater::Config.mailer["port"]
11
+ @@domain = CDMonUpdater::Config.mailer["domain"]
12
+ @@credentials[:user_name] = CDMonUpdater::Config.mailer["user_name"]
13
+ @@credentials[:password] = CDMonUpdater::Config.mailer["password"]
14
+ else
15
+ @@address = nil
16
+ @@port = nil
17
+ @@credentials = {:user_name => nil, :password => nil}
18
+ end
19
+
20
+ def initialize(options = {})
21
+ if options.has_key?("server") && options["server"].is_a?(Hash) && options["server"].keys.any?
22
+ server_options = options.delete("server")
23
+
24
+ @@address = server_options["address"]
25
+ @@port = server_options["port"]
26
+ @@domain = server_options["domain"]
27
+ @@credentials[:user_name] = server_options["user_name"]
28
+ @@credentials[:password] = server_options["password"]
29
+ end
30
+ end
31
+
32
+ #class methods
33
+ def self.address
34
+ @@address
35
+ end
36
+ def self.address=(address)
37
+ @@address = address
38
+ end
39
+
40
+ def self.port
41
+ @@port
42
+ end
43
+ def self.port=(port)
44
+ @@port = port
45
+ end
46
+
47
+ def self.domain
48
+ @@domain
49
+ end
50
+ def self.domain=(domain)
51
+ @@domain = domain
52
+ end
53
+ def self.credentials
54
+ @@credentials
55
+ end
56
+ def self.credentials=(data = {:user_name => nil, :password => nil})
57
+ @@credentials = data
58
+ end
59
+
60
+ #instance methods
61
+ def send_mail
62
+ body = mail_headers
63
+ body << "#{Time.now.to_s} - #{@message}"
64
+
65
+ begin
66
+ @to.split(",").each do | to |
67
+
68
+ Net::SMTP.start(@@address, @@port, @from, @@credentials[:user_name], @@credentials[:password], :login) do |smtp|
69
+
70
+ smtp.send_message(body, @from, to.strip)
71
+
72
+ end
73
+ end
74
+ true
75
+ rescue
76
+ CDMon.log_all("Cannot send email")
77
+ false
78
+ end
79
+ end
80
+
81
+ private
82
+ def mail_headers
83
+ body = "From: #{@from} <#{@from}>\n"
84
+ body << "To: #{@to}<#{@to}>\n"
85
+ body << "Subject: #{@subject}\n"
86
+ body << "Date: #{Time.now}\n"
87
+ body << "Importance:high\n"
88
+ body << "MIME-Version:1.0\n"
89
+ body << "\n\n\n"
90
+ body
91
+ end
92
+ end
93
+ end
@@ -0,0 +1,3 @@
1
+ module CDMonUpdater
2
+ VERSION = "0.2.0"
3
+ end
@@ -0,0 +1,64 @@
1
+ require 'socket'
2
+ require 'net/http'
3
+ require 'net/https'
4
+ require 'resolv'
5
+ require_relative 'cdmon_updater/config'
6
+ require_relative 'cdmon_updater'
7
+
8
+ module CDMonUpdater
9
+ class IPUpdater
10
+ def initialize(config_file = "../config/cdmon.yml")
11
+ Config.load(config_file)
12
+ @resolver = Resolv::DNS.new(:nameserver => Config.dns, :search => ["localhost"], :dots => 1)
13
+ CDMonUpdater.log_level = Config.log_level
14
+ end
15
+
16
+ def update
17
+ url = URI.parse(Config.service_url)
18
+ http = Net::HTTP.new(url.host, url.port)
19
+ http.use_ssl = (url.scheme == 'https')
20
+ http.verify_mode = OpenSSL::SSL::VERIFY_NONE
21
+
22
+ #require 'debug'
23
+ begin
24
+ Config.users.keys.each do |usr|
25
+ request = Net::HTTP::Get.new(Config.get_cdmon_ip_path_for(usr))
26
+ Config.hosts_for(usr).each do |host|
27
+ host_ip_by_cdmon = @resolver.getaddress(host).to_s
28
+ values = parse_response(http.request(request).body)
29
+ current_cdmon_ip = values["newip"] if values.has_key?("newip")
30
+ unless host_ip_by_cdmon == current_cdmon_ip
31
+ request = Net::HTTP::Get.new(Config.cdmon_ip_path_for(usr, current_cdmon_ip))
32
+ response = parse_response(http.request(request).body)
33
+ case response["resultat"]
34
+ when Config::CDMON_OK_IP
35
+ CDMonUpdater.log_all("IP Succesfully updated")
36
+ when Config::CDMON_BAD_IP
37
+ CDMonUpdater.log_all("Bad IP Provided")
38
+ when Config::CDMON_ERROR_LOGIN
39
+ CDMonUpdater.log_all("Login Error")
40
+ end
41
+ end
42
+ end
43
+ end
44
+ rescue SocketError
45
+ CDMonUpdater.log_all("SocketError: Probably the internet connection is broken")
46
+ rescue Resolv::ResolvError
47
+ CDMonUpdater.log_all("ResolvError: Cannot get DNS results")
48
+ end
49
+
50
+ end
51
+
52
+ private
53
+ def parse_response(response)
54
+ values = response.split("&")
55
+ pairs = {}
56
+ values.each do |val|
57
+ key_val = val.split("=")
58
+ pairs[key_val[0]] = key_val[1]
59
+ end
60
+ pairs
61
+ end
62
+ end
63
+
64
+ end
@@ -0,0 +1,15 @@
1
+ require 'spec_helper'
2
+ require 'ip_updater'
3
+
4
+ describe CDMonUpdater::IPUpdater do
5
+
6
+ before(:all) do
7
+ @updater = CDMonUpdater::IPUpdater.new(File.dirname(__FILE__) + "/../config/cdmon.yml")
8
+
9
+ end
10
+
11
+ it "should update the IP" do
12
+ "you should have your settings on /etc/cdmon.yml".should_not be_nil
13
+ #@updater.update
14
+ end
15
+ end
@@ -0,0 +1,40 @@
1
+ require 'spec_helper'
2
+ require File.dirname(__FILE__) + '/../lib/cdmon_updater/mailer'
3
+
4
+ describe CDMonUpdater::Mailer do
5
+
6
+ before(:all) do
7
+ server_options = {"server" => {"address" => "some.smtp.server", "port" => 25, "user_name" => "user", "password" => "smtp_password"}}
8
+
9
+ @mailer = CDMonUpdater::Mailer.new(server_options)
10
+ end
11
+
12
+ it "should have class options set" do
13
+ CDMonUpdater::Mailer.address.should == "some.smtp.server"
14
+ CDMonUpdater::Mailer.port.should == 25
15
+ CDMonUpdater::Mailer.credentials[:user_name].should == "user"
16
+ CDMonUpdater::Mailer.credentials[:password].should == "smtp_password"
17
+ end
18
+
19
+ it "should have instance attributes" do
20
+ @mailer.subject = "Test Mail"
21
+ @mailer.message = "This is the body of the message"
22
+ @mailer.from = "someuser@someserver.com"
23
+ @mailer.to = "someotheruser@someserver.com"
24
+ @mailer.stub!(:send_mail).and_return(true)
25
+ @mailer.send_mail.should be_true
26
+ end
27
+
28
+ it "should send mail" do
29
+ "This is a stub left in blank since I can't publish my smtp access data".should_not be_nil
30
+ "You should fill your own data on ../config/cdmon.yml".should_not be_nil
31
+ #Config.load("../config/cdmon.yml")
32
+
33
+ #@mailer = CDMon::Mailer.new({"server" => Config.mailer})
34
+ #@mailer.subject = "Test Mail"
35
+ #@mailer.message = "This is the body of the message"
36
+ #@mailer.from = "cdmon_updater@kandalf.com.ar"
37
+ #@mailer.to = "some_real_address@some_server.com"
38
+ #@mailer.send_mail.should be_true
39
+ end
40
+ end
@@ -0,0 +1 @@
1
+ $: << "../lib" << "lib"
metadata ADDED
@@ -0,0 +1,93 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: cdmon_updater
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.2.0
5
+ prerelease:
6
+ platform: ruby
7
+ authors:
8
+ - Leonardo Mateo
9
+ autorequire:
10
+ bindir: bin
11
+ cert_chain: []
12
+ date: 2012-03-18 00:00:00.000000000 Z
13
+ dependencies:
14
+ - !ruby/object:Gem::Dependency
15
+ name: rake
16
+ requirement: &15282360 !ruby/object:Gem::Requirement
17
+ none: false
18
+ requirements:
19
+ - - ! '>='
20
+ - !ruby/object:Gem::Version
21
+ version: '0'
22
+ type: :development
23
+ prerelease: false
24
+ version_requirements: *15282360
25
+ - !ruby/object:Gem::Dependency
26
+ name: rspec
27
+ requirement: &15281800 !ruby/object:Gem::Requirement
28
+ none: false
29
+ requirements:
30
+ - - ! '>='
31
+ - !ruby/object:Gem::Version
32
+ version: '0'
33
+ type: :development
34
+ prerelease: false
35
+ version_requirements: *15281800
36
+ description: Just another client for CDMon (http://www.cdmon.com) dynamic DNS.
37
+ email:
38
+ - leonardomateo@gmail.com
39
+ executables:
40
+ - cdmon_config
41
+ - cdmon_updater
42
+ extensions: []
43
+ extra_rdoc_files: []
44
+ files:
45
+ - .gitignore
46
+ - .rvmrc
47
+ - Gemfile
48
+ - LICENSE
49
+ - README.md
50
+ - Rakefile
51
+ - VERSION
52
+ - bin/cdmon_config
53
+ - bin/cdmon_updater
54
+ - cdmon_updater.gemspec
55
+ - config/cdmon.yml
56
+ - config/schedule.rb
57
+ - lib/cdmon.rb
58
+ - lib/cdmon_updater.rb
59
+ - lib/cdmon_updater/config.rb
60
+ - lib/cdmon_updater/mailer.rb
61
+ - lib/cdmon_updater/version.rb
62
+ - lib/ip_updater.rb
63
+ - spec/ip_updater_spec.rb
64
+ - spec/mailer_spec.rb
65
+ - spec/spec_helper.rb
66
+ homepage: ''
67
+ licenses: []
68
+ post_install_message:
69
+ rdoc_options: []
70
+ require_paths:
71
+ - lib
72
+ required_ruby_version: !ruby/object:Gem::Requirement
73
+ none: false
74
+ requirements:
75
+ - - ! '>='
76
+ - !ruby/object:Gem::Version
77
+ version: '0'
78
+ required_rubygems_version: !ruby/object:Gem::Requirement
79
+ none: false
80
+ requirements:
81
+ - - ! '>='
82
+ - !ruby/object:Gem::Version
83
+ version: '0'
84
+ requirements: []
85
+ rubyforge_project:
86
+ rubygems_version: 1.8.17
87
+ signing_key:
88
+ specification_version: 3
89
+ summary: CDMon dynamic DNS client
90
+ test_files:
91
+ - spec/ip_updater_spec.rb
92
+ - spec/mailer_spec.rb
93
+ - spec/spec_helper.rb