Crota 0.1.2

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.
Files changed (3) hide show
  1. checksums.yaml +7 -0
  2. data/exe/crota +98 -0
  3. metadata +48 -0
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: 8608afe4e6ea7fbb8d3f591ad8b183f447235c5a
4
+ data.tar.gz: a04b06c513c775b62961d9afad208eb38e50689e
5
+ SHA512:
6
+ metadata.gz: 528dd10a72933460dd8fce0aa8fd6f51bb9b1b4667397c587f9c009c80e8a7e383a6375cb96c199b37d131d2bbf7f6acfcc0c239ee79f4ac9dd2523914b2025d
7
+ data.tar.gz: 8b86dbb7eb5b4f78a29c582da07d794125fc21afbcf3a6cea3dd1d74f7a7786fa04f5d75b2ea1adcbb9b4bd6863b0338363e94d5776aee08c7d145db12d8fa38
@@ -0,0 +1,98 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ require 'em/pure_ruby'
4
+ require 'smpp'
5
+ require 'escort'
6
+ require 'crota/server'
7
+ require 'crota/config'
8
+
9
+ def main
10
+ Escort::App.create do |app|
11
+ app.version Crota::VERSION
12
+ app.description "SMPP server"
13
+ app.summary <<-SUMMARY
14
+ Crota is an SMPP server that will connect to
15
+ any SMPP capable aggregator to send and receive messages.
16
+ A list of aggregators are retrieved from Dispatch.
17
+ A list of messages is then retrieved for each of these aggregators for a given number of queues.
18
+ All of these values are specified in the config.yml
19
+ SUMMARY
20
+
21
+ app.options do |opts|
22
+ opts.opt :daemonize, 'Run SMPP server in the background',
23
+ short: '-d', long: '--daemonize', type: :boolean, default: false
24
+ opts.opt :console, 'Open a console',
25
+ short: '-k', long: '--console', type: :boolean, default: false
26
+ opts.opt :verbosity, 'Verbosity level of output (DEBUG, INFO, WARN, ERROR, FATAL)',
27
+ short: '-v', long: '--verbose', type: :string, default: 'INFO'
28
+ opts.opt :log, 'Set default log file',
29
+ short: '-l', long: '--log', type: :string, default: 'STDOUT'
30
+ opts.opt :config, 'Pass your own config.yml. Must follow the same convention as detailed in repo',
31
+ short: '-c', long: '--config', type: :string, default: Crota::DEFAULT_CONFIG_FILE
32
+ end
33
+
34
+ app.action do |options, arguments|
35
+ run_crota options, arguments
36
+ end
37
+ end
38
+ end
39
+
40
+ def run_crota options, arguments
41
+ opts = options[:global][:options]
42
+ logger = Logger.new(opts[:log] == 'STDOUT' ? STDOUT : opts[:log])
43
+ logger.level = opts[:verbosity].downcase.to_sym
44
+ Smpp::Base.logger = logger
45
+
46
+ Crota.config_file = opts[:config]
47
+ Crota.config.validate!
48
+
49
+ server = Crota::Server.new
50
+
51
+ puts "Welcome to Crota's Realm. Your light is mine."
52
+
53
+ if opts[:console]
54
+ start_console logger
55
+ elsif opts[:daemonize]
56
+ fork do
57
+ logger.info("Running in BACKGROUND. You have entered Crota's realm. Beware the blight")
58
+ server.start
59
+ end
60
+ else
61
+ logger.info("Running in FOREGROUND. You have entered Crota's realm. Beware the blight")
62
+ server.start
63
+ end
64
+ end
65
+
66
+ def start_console logger
67
+ require 'irb'
68
+ require 'irb/completion'
69
+ require 'irb/ext/save-history'
70
+
71
+ lib_dir = File.expand_path(File.join(File.dirname(__FILE__), "../lib"))
72
+ files = Dir[File.join(lib_dir, "/**/*.rb")]
73
+ files.each { |f| require f }
74
+
75
+ irbrc = File.join(ENV['HOME'], '.irbrc')
76
+ unless File.exists?(irbrc)
77
+ File.open(irbrc, 'w') do |f|
78
+ f.write("IRB.conf[:SAVE_HISTORY] = 100\r\n")
79
+ end
80
+ end
81
+
82
+ ARGV.clear
83
+ ARGV.concat [ "--readline", "--prompt-mode", "simple" ]
84
+ logger.info("Starting Crota in console mode")
85
+ IRB.start
86
+ end
87
+
88
+ def reload!
89
+ warn_level = $VERBOSE
90
+ $VERBOSE = nil
91
+ lib_dir = File.expand_path(File.join(File.dirname(__FILE__), "../lib"))
92
+ files = Dir[File.join(lib_dir, "/**/*.rb")]
93
+ files.each { |f| load f }
94
+ $VERBOSE = warn_level
95
+ "reloaded #{files.count} files"
96
+ end
97
+
98
+ main
metadata ADDED
@@ -0,0 +1,48 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: Crota
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.1.2
5
+ platform: ruby
6
+ authors:
7
+ - Josh Etsenake
8
+ autorequire:
9
+ bindir: exe
10
+ cert_chain: []
11
+ date: 2019-09-19 00:00:00.000000000 Z
12
+ dependencies: []
13
+ description: Creates and runs SMPP transceiver server based on configs to receive
14
+ and send messages to a specified SMPP agregator.
15
+ email:
16
+ - etsenake@gmail.com
17
+ executables:
18
+ - crota
19
+ extensions: []
20
+ extra_rdoc_files: []
21
+ files:
22
+ - exe/crota
23
+ homepage:
24
+ licenses:
25
+ - MIT
26
+ metadata:
27
+ allowed_push_host: https://rubygems.org
28
+ post_install_message:
29
+ rdoc_options: []
30
+ require_paths:
31
+ - lib
32
+ required_ruby_version: !ruby/object:Gem::Requirement
33
+ requirements:
34
+ - - ">="
35
+ - !ruby/object:Gem::Version
36
+ version: '0'
37
+ required_rubygems_version: !ruby/object:Gem::Requirement
38
+ requirements:
39
+ - - ">="
40
+ - !ruby/object:Gem::Version
41
+ version: '0'
42
+ requirements: []
43
+ rubyforge_project:
44
+ rubygems_version: 2.6.14
45
+ signing_key:
46
+ specification_version: 4
47
+ summary: Creates SMPP transceiver server
48
+ test_files: []