echi-converter 0.0.1
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.
- data/History.txt +5 -0
 - data/License.txt +456 -0
 - data/Manifest.txt +29 -0
 - data/README.txt +33 -0
 - data/Rakefile +143 -0
 - data/bin/echi-converter-create +76 -0
 - data/config/application.yml +33 -0
 - data/config/database.yml +6 -0
 - data/config/extended_version12.yml +234 -0
 - data/db/migrate/001_create_echi_records.rb +25 -0
 - data/db/migrate/002_create_echi_logs.rb +15 -0
 - data/echi-converter +8 -0
 - data/examples/extended_version12/chr0003 +0 -0
 - data/examples/extended_version12/chr0003.txt +14619 -0
 - data/lib/database.rb +5 -0
 - data/lib/echi-converter.rb +214 -0
 - data/lib/echi-converter/version.rb +9 -0
 - data/lib/main.rb +56 -0
 - data/scripts/txt2html +67 -0
 - data/setup.rb +1585 -0
 - data/test/test_echi-converter.rb +11 -0
 - data/test/test_helper.rb +2 -0
 - data/website/index.html +217 -0
 - data/website/index.txt +118 -0
 - data/website/javascripts/rounded_corners_lite.inc.js +285 -0
 - data/website/stylesheets/screen.css +138 -0
 - data/website/template.rhtml +48 -0
 - metadata +79 -0
 
    
        data/Manifest.txt
    ADDED
    
    | 
         @@ -0,0 +1,29 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            History.txt
         
     | 
| 
      
 2 
     | 
    
         
            +
            License.txt
         
     | 
| 
      
 3 
     | 
    
         
            +
            Manifest.txt
         
     | 
| 
      
 4 
     | 
    
         
            +
            README.txt
         
     | 
| 
      
 5 
     | 
    
         
            +
            Rakefile
         
     | 
| 
      
 6 
     | 
    
         
            +
            echi-converter
         
     | 
| 
      
 7 
     | 
    
         
            +
            lib/main.rb
         
     | 
| 
      
 8 
     | 
    
         
            +
            lib/echi-converter/version.rb
         
     | 
| 
      
 9 
     | 
    
         
            +
            lib/database.rb
         
     | 
| 
      
 10 
     | 
    
         
            +
            lib/main.rb
         
     | 
| 
      
 11 
     | 
    
         
            +
            lib/echi-converter.rb
         
     | 
| 
      
 12 
     | 
    
         
            +
            scripts/txt2html
         
     | 
| 
      
 13 
     | 
    
         
            +
            setup.rb
         
     | 
| 
      
 14 
     | 
    
         
            +
            test/test_echi-converter.rb
         
     | 
| 
      
 15 
     | 
    
         
            +
            test/test_helper.rb
         
     | 
| 
      
 16 
     | 
    
         
            +
            website/index.html
         
     | 
| 
      
 17 
     | 
    
         
            +
            website/index.txt
         
     | 
| 
      
 18 
     | 
    
         
            +
            website/javascripts/rounded_corners_lite.inc.js
         
     | 
| 
      
 19 
     | 
    
         
            +
            website/stylesheets/screen.css
         
     | 
| 
      
 20 
     | 
    
         
            +
            website/template.rhtml
         
     | 
| 
      
 21 
     | 
    
         
            +
            config/application.yml
         
     | 
| 
      
 22 
     | 
    
         
            +
            config/database.yml
         
     | 
| 
      
 23 
     | 
    
         
            +
            config/extended_version12.yml
         
     | 
| 
      
 24 
     | 
    
         
            +
            db/migrate/001_create_echi_records.rb
         
     | 
| 
      
 25 
     | 
    
         
            +
            db/migrate/002_create_echi_logs.rb
         
     | 
| 
      
 26 
     | 
    
         
            +
            bin/echi-converter-create
         
     | 
| 
      
 27 
     | 
    
         
            +
            examples/extended_version12/chr0003
         
     | 
| 
      
 28 
     | 
    
         
            +
            examples/extended_version12/chr0003.txt
         
     | 
| 
      
 29 
     | 
    
         
            +
             
     | 
    
        data/README.txt
    ADDED
    
    | 
         @@ -0,0 +1,33 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            README for echi_converter
         
     | 
| 
      
 2 
     | 
    
         
            +
            ==========================
         
     | 
| 
      
 3 
     | 
    
         
            +
            ECHI Converter - The Binary to ASCII converter for Avaya CMS External Call History files
         
     | 
| 
      
 4 
     | 
    
         
            +
             
     | 
| 
      
 5 
     | 
    
         
            +
            --- background ---
         
     | 
| 
      
 6 
     | 
    
         
            +
             
     | 
| 
      
 7 
     | 
    
         
            +
            See more info on the Avaya ECHI format here (note, these overviews are version specific):
         
     | 
| 
      
 8 
     | 
    
         
            +
             
     | 
| 
      
 9 
     | 
    
         
            +
            http://support.avaya.com/elmodocs2/cms/R12/ECHI.pdf
         
     | 
| 
      
 10 
     | 
    
         
            +
             
     | 
| 
      
 11 
     | 
    
         
            +
            --- command ---
         
     | 
| 
      
 12 
     | 
    
         
            +
             
     | 
| 
      
 13 
     | 
    
         
            +
            Usage: ruby echi-converter-daemon.rb <command> <options> -- <application options>
         
     | 
| 
      
 14 
     | 
    
         
            +
             
     | 
| 
      
 15 
     | 
    
         
            +
            * where <command> is one of:
         
     | 
| 
      
 16 
     | 
    
         
            +
              start         start an instance of the application
         
     | 
| 
      
 17 
     | 
    
         
            +
              stop          stop all instances of the application
         
     | 
| 
      
 18 
     | 
    
         
            +
              restart       stop all instances and restart them afterwards
         
     | 
| 
      
 19 
     | 
    
         
            +
              run           start the application and stay on top
         
     | 
| 
      
 20 
     | 
    
         
            +
              zap           set the application to a stopped state
         
     | 
| 
      
 21 
     | 
    
         
            +
             
     | 
| 
      
 22 
     | 
    
         
            +
            * and where <options> may contain several of the following:
         
     | 
| 
      
 23 
     | 
    
         
            +
             
     | 
| 
      
 24 
     | 
    
         
            +
                -t, --ontop                      Stay on top (does not daemonize)
         
     | 
| 
      
 25 
     | 
    
         
            +
                -f, --force                      Force operation
         
     | 
| 
      
 26 
     | 
    
         
            +
             
     | 
| 
      
 27 
     | 
    
         
            +
            Common options:
         
     | 
| 
      
 28 
     | 
    
         
            +
                -h, --help                       Show this message
         
     | 
| 
      
 29 
     | 
    
         
            +
                    --version                    Show version
         
     | 
| 
      
 30 
     | 
    
         
            +
             
     | 
| 
      
 31 
     | 
    
         
            +
            --- overview ---
         
     | 
| 
      
 32 
     | 
    
         
            +
             
     | 
| 
      
 33 
     | 
    
         
            +
            Blah, blah here
         
     | 
    
        data/Rakefile
    ADDED
    
    | 
         @@ -0,0 +1,143 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            require 'rubygems'
         
     | 
| 
      
 2 
     | 
    
         
            +
            require 'rake'
         
     | 
| 
      
 3 
     | 
    
         
            +
            require 'rake/clean'
         
     | 
| 
      
 4 
     | 
    
         
            +
            require 'rake/testtask'
         
     | 
| 
      
 5 
     | 
    
         
            +
            require 'rake/packagetask'
         
     | 
| 
      
 6 
     | 
    
         
            +
            require 'rake/gempackagetask'
         
     | 
| 
      
 7 
     | 
    
         
            +
            require 'rake/rdoctask'
         
     | 
| 
      
 8 
     | 
    
         
            +
            require 'rake/contrib/rubyforgepublisher'
         
     | 
| 
      
 9 
     | 
    
         
            +
            require 'fileutils'
         
     | 
| 
      
 10 
     | 
    
         
            +
            require 'hoe'
         
     | 
| 
      
 11 
     | 
    
         
            +
            require 'active_record'  
         
     | 
| 
      
 12 
     | 
    
         
            +
            require 'yaml'
         
     | 
| 
      
 13 
     | 
    
         
            +
             
     | 
| 
      
 14 
     | 
    
         
            +
            include FileUtils
         
     | 
| 
      
 15 
     | 
    
         
            +
            require File.join(File.dirname(__FILE__), 'lib', 'echi-converter', 'version')
         
     | 
| 
      
 16 
     | 
    
         
            +
             
     | 
| 
      
 17 
     | 
    
         
            +
            AUTHOR = 'Jason Goecke'  # can also be an array of Authors
         
     | 
| 
      
 18 
     | 
    
         
            +
            EMAIL = "jason [at] goecke.net"
         
     | 
| 
      
 19 
     | 
    
         
            +
            DESCRIPTION = "ECHI Conversion Utility - Provides a utility to fetch Avaya CMS / ECHI binary files, convert them and insert into a database table via ActiveRecord"
         
     | 
| 
      
 20 
     | 
    
         
            +
            GEM_NAME = 'echi-converter' # what ppl will type to install your gem
         
     | 
| 
      
 21 
     | 
    
         
            +
             
     | 
| 
      
 22 
     | 
    
         
            +
            @config_file = "~/.rubyforge/user-config.yml"
         
     | 
| 
      
 23 
     | 
    
         
            +
            @config = nil
         
     | 
| 
      
 24 
     | 
    
         
            +
            def rubyforge_username
         
     | 
| 
      
 25 
     | 
    
         
            +
              unless @config
         
     | 
| 
      
 26 
     | 
    
         
            +
                begin
         
     | 
| 
      
 27 
     | 
    
         
            +
                  @config = YAML.load(File.read(File.expand_path(@config_file)))
         
     | 
| 
      
 28 
     | 
    
         
            +
                rescue
         
     | 
| 
      
 29 
     | 
    
         
            +
                  puts <<-EOS
         
     | 
| 
      
 30 
     | 
    
         
            +
            ERROR: No rubyforge config file found: #{@config_file}"
         
     | 
| 
      
 31 
     | 
    
         
            +
            Run 'rubyforge setup' to prepare your env for access to Rubyforge
         
     | 
| 
      
 32 
     | 
    
         
            +
             - See http://newgem.rubyforge.org/rubyforge.html for more details
         
     | 
| 
      
 33 
     | 
    
         
            +
                  EOS
         
     | 
| 
      
 34 
     | 
    
         
            +
                  exit
         
     | 
| 
      
 35 
     | 
    
         
            +
                end
         
     | 
| 
      
 36 
     | 
    
         
            +
              end
         
     | 
| 
      
 37 
     | 
    
         
            +
              @rubyforge_username ||= @config["username"]
         
     | 
| 
      
 38 
     | 
    
         
            +
            end
         
     | 
| 
      
 39 
     | 
    
         
            +
             
     | 
| 
      
 40 
     | 
    
         
            +
            RUBYFORGE_PROJECT = 'echi-converter' # The unix name for your project
         
     | 
| 
      
 41 
     | 
    
         
            +
            HOMEPATH = "http://#{RUBYFORGE_PROJECT}.rubyforge.org"
         
     | 
| 
      
 42 
     | 
    
         
            +
            DOWNLOAD_PATH = "http://rubyforge.org/projects/#{RUBYFORGE_PROJECT}"
         
     | 
| 
      
 43 
     | 
    
         
            +
             
     | 
| 
      
 44 
     | 
    
         
            +
            NAME = "echi-converter"
         
     | 
| 
      
 45 
     | 
    
         
            +
            REV = nil 
         
     | 
| 
      
 46 
     | 
    
         
            +
            # UNCOMMENT IF REQUIRED: 
         
     | 
| 
      
 47 
     | 
    
         
            +
            # REV = `svn info`.each {|line| if line =~ /^Revision:/ then k,v = line.split(': '); break v.chomp; else next; end} rescue nil
         
     | 
| 
      
 48 
     | 
    
         
            +
            VERS = EchiConverter::VERSION::STRING + (REV ? ".#{REV}" : "")
         
     | 
| 
      
 49 
     | 
    
         
            +
            CLEAN.include ['**/.*.sw?', '*.gem', '.config', '**/.DS_Store']
         
     | 
| 
      
 50 
     | 
    
         
            +
            RDOC_OPTS = ['--quiet', '--title', 'echi-converter documentation',
         
     | 
| 
      
 51 
     | 
    
         
            +
                "--opname", "index.html",
         
     | 
| 
      
 52 
     | 
    
         
            +
                "--line-numbers", 
         
     | 
| 
      
 53 
     | 
    
         
            +
                "--main", "README",
         
     | 
| 
      
 54 
     | 
    
         
            +
                "--inline-source"]
         
     | 
| 
      
 55 
     | 
    
         
            +
             
     | 
| 
      
 56 
     | 
    
         
            +
            class Hoe
         
     | 
| 
      
 57 
     | 
    
         
            +
              def extra_deps 
         
     | 
| 
      
 58 
     | 
    
         
            +
                @extra_deps.reject { |x| Array(x).first == 'hoe' } 
         
     | 
| 
      
 59 
     | 
    
         
            +
              end 
         
     | 
| 
      
 60 
     | 
    
         
            +
            end
         
     | 
| 
      
 61 
     | 
    
         
            +
             
     | 
| 
      
 62 
     | 
    
         
            +
            # Generate all the Rake tasks
         
     | 
| 
      
 63 
     | 
    
         
            +
            # Run 'rake -T' to see list of generated tasks (from gem root directory)
         
     | 
| 
      
 64 
     | 
    
         
            +
            hoe = Hoe.new(GEM_NAME, VERS) do |p|
         
     | 
| 
      
 65 
     | 
    
         
            +
              p.author = AUTHOR 
         
     | 
| 
      
 66 
     | 
    
         
            +
              p.description = DESCRIPTION
         
     | 
| 
      
 67 
     | 
    
         
            +
              p.email = EMAIL
         
     | 
| 
      
 68 
     | 
    
         
            +
              p.summary = DESCRIPTION
         
     | 
| 
      
 69 
     | 
    
         
            +
              p.url = HOMEPATH
         
     | 
| 
      
 70 
     | 
    
         
            +
              p.rubyforge_name = RUBYFORGE_PROJECT if RUBYFORGE_PROJECT
         
     | 
| 
      
 71 
     | 
    
         
            +
              p.test_globs = ["test/**/test_*.rb"]
         
     | 
| 
      
 72 
     | 
    
         
            +
              p.clean_globs |= CLEAN  #An array of file patterns to delete on clean.
         
     | 
| 
      
 73 
     | 
    
         
            +
              
         
     | 
| 
      
 74 
     | 
    
         
            +
              # == Optional
         
     | 
| 
      
 75 
     | 
    
         
            +
              p.changes = p.paragraphs_of("History.txt", 0..1).join("\n\n")
         
     | 
| 
      
 76 
     | 
    
         
            +
              #p.extra_deps = []     # An array of rubygem dependencies [name, version], e.g. [ ['active_support', '>= 1.3.1'] ]
         
     | 
| 
      
 77 
     | 
    
         
            +
              #p.spec_extras = {}    # A hash of extra values to set in the gemspec.
         
     | 
| 
      
 78 
     | 
    
         
            +
            end
         
     | 
| 
      
 79 
     | 
    
         
            +
             
     | 
| 
      
 80 
     | 
    
         
            +
            CHANGES = hoe.paragraphs_of('History.txt', 0..1).join("\n\n")
         
     | 
| 
      
 81 
     | 
    
         
            +
            PATH    = (RUBYFORGE_PROJECT == GEM_NAME) ? RUBYFORGE_PROJECT : "#{RUBYFORGE_PROJECT}/#{GEM_NAME}"
         
     | 
| 
      
 82 
     | 
    
         
            +
            hoe.remote_rdoc_dir = File.join(PATH.gsub(/^#{RUBYFORGE_PROJECT}\/?/,''), 'rdoc')
         
     | 
| 
      
 83 
     | 
    
         
            +
             
     | 
| 
      
 84 
     | 
    
         
            +
            desc 'Generate website files'
         
     | 
| 
      
 85 
     | 
    
         
            +
            task :website_generate do
         
     | 
| 
      
 86 
     | 
    
         
            +
              Dir['website/**/*.txt'].each do |txt|
         
     | 
| 
      
 87 
     | 
    
         
            +
                sh %{ ruby scripts/txt2html #{txt} > #{txt.gsub(/txt$/,'html')} }
         
     | 
| 
      
 88 
     | 
    
         
            +
              end
         
     | 
| 
      
 89 
     | 
    
         
            +
            end
         
     | 
| 
      
 90 
     | 
    
         
            +
             
     | 
| 
      
 91 
     | 
    
         
            +
            desc 'Upload website files to rubyforge'
         
     | 
| 
      
 92 
     | 
    
         
            +
            task :website_upload do
         
     | 
| 
      
 93 
     | 
    
         
            +
              host = "#{rubyforge_username}@rubyforge.org"
         
     | 
| 
      
 94 
     | 
    
         
            +
              remote_dir = "/var/www/gforge-projects/#{PATH}/"
         
     | 
| 
      
 95 
     | 
    
         
            +
              local_dir = 'website'
         
     | 
| 
      
 96 
     | 
    
         
            +
              sh %{rsync -aCv #{local_dir}/ #{host}:#{remote_dir}}
         
     | 
| 
      
 97 
     | 
    
         
            +
            end
         
     | 
| 
      
 98 
     | 
    
         
            +
             
     | 
| 
      
 99 
     | 
    
         
            +
            desc 'Generate and upload website files'
         
     | 
| 
      
 100 
     | 
    
         
            +
            task :website => [:website_generate, :website_upload, :publish_docs]
         
     | 
| 
      
 101 
     | 
    
         
            +
             
     | 
| 
      
 102 
     | 
    
         
            +
            desc 'Release the website and new gem version'
         
     | 
| 
      
 103 
     | 
    
         
            +
            task :deploy => [:check_version, :website, :release] do
         
     | 
| 
      
 104 
     | 
    
         
            +
              puts "Remember to create SVN tag:"
         
     | 
| 
      
 105 
     | 
    
         
            +
              puts "svn copy svn+ssh://#{rubyforge_username}@rubyforge.org/var/svn/#{PATH}/trunk " +
         
     | 
| 
      
 106 
     | 
    
         
            +
                "svn+ssh://#{rubyforge_username}@rubyforge.org/var/svn/#{PATH}/tags/REL-#{VERS} "
         
     | 
| 
      
 107 
     | 
    
         
            +
              puts "Suggested comment:"
         
     | 
| 
      
 108 
     | 
    
         
            +
              puts "Tagging release #{CHANGES}"
         
     | 
| 
      
 109 
     | 
    
         
            +
            end
         
     | 
| 
      
 110 
     | 
    
         
            +
             
     | 
| 
      
 111 
     | 
    
         
            +
            desc 'Runs tasks website_generate and install_gem as a local deployment of the gem'
         
     | 
| 
      
 112 
     | 
    
         
            +
            task :local_deploy => [:website_generate, :install_gem]
         
     | 
| 
      
 113 
     | 
    
         
            +
             
     | 
| 
      
 114 
     | 
    
         
            +
            task :check_version do
         
     | 
| 
      
 115 
     | 
    
         
            +
              unless ENV['VERSION']
         
     | 
| 
      
 116 
     | 
    
         
            +
                puts 'Must pass a VERSION=x.y.z release version'
         
     | 
| 
      
 117 
     | 
    
         
            +
                exit
         
     | 
| 
      
 118 
     | 
    
         
            +
              end
         
     | 
| 
      
 119 
     | 
    
         
            +
              unless ENV['VERSION'] == VERS
         
     | 
| 
      
 120 
     | 
    
         
            +
                puts "Please update your version.rb to match the release version, currently #{VERS}"
         
     | 
| 
      
 121 
     | 
    
         
            +
                exit
         
     | 
| 
      
 122 
     | 
    
         
            +
              end
         
     | 
| 
      
 123 
     | 
    
         
            +
            end
         
     | 
| 
      
 124 
     | 
    
         
            +
             
     | 
| 
      
 125 
     | 
    
         
            +
            ##Add the ability to use ActiveRecord Migrations to create the database
         
     | 
| 
      
 126 
     | 
    
         
            +
            desc "Migrate the database through scripts in db/migrate. Target specific version with VERSION=x"  
         
     | 
| 
      
 127 
     | 
    
         
            +
              task :migrate => :environment do  
         
     | 
| 
      
 128 
     | 
    
         
            +
                #Load the working directoy and configuration file
         
     | 
| 
      
 129 
     | 
    
         
            +
                workingdirectory = File.expand_path(File.dirname(__FILE__))
         
     | 
| 
      
 130 
     | 
    
         
            +
                configfile = workingdirectory + '/config/application.yml'
         
     | 
| 
      
 131 
     | 
    
         
            +
                config = YAML::load(File.open(configfile))
         
     | 
| 
      
 132 
     | 
    
         
            +
             
     | 
| 
      
 133 
     | 
    
         
            +
                #Load the configured schema
         
     | 
| 
      
 134 
     | 
    
         
            +
                schemafile = workingdirectory + "/config/" + config["echi_schema"]
         
     | 
| 
      
 135 
     | 
    
         
            +
                @@echi_schema = YAML::load(File.open(schemafile))
         
     | 
| 
      
 136 
     | 
    
         
            +
                
         
     | 
| 
      
 137 
     | 
    
         
            +
                ActiveRecord::Migrator.migrate('db/migrate', ENV["VERSION"] ? ENV["VERSION"].to_i : nil )  
         
     | 
| 
      
 138 
     | 
    
         
            +
            end  
         
     | 
| 
      
 139 
     | 
    
         
            +
               
         
     | 
| 
      
 140 
     | 
    
         
            +
            task :environment do  
         
     | 
| 
      
 141 
     | 
    
         
            +
              ActiveRecord::Base.establish_connection(YAML::load(File.open('config/database.yml')))  
         
     | 
| 
      
 142 
     | 
    
         
            +
              ActiveRecord::Base.logger = Logger.new(File.open('log/database.log', 'a'))  
         
     | 
| 
      
 143 
     | 
    
         
            +
            end
         
     | 
| 
         @@ -0,0 +1,76 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            #!/usr/bin/env ruby
         
     | 
| 
      
 2 
     | 
    
         
            +
            require 'rubygems'
         
     | 
| 
      
 3 
     | 
    
         
            +
            require 'yaml'
         
     | 
| 
      
 4 
     | 
    
         
            +
            require 'fileutils'
         
     | 
| 
      
 5 
     | 
    
         
            +
            include FileUtils
         
     | 
| 
      
 6 
     | 
    
         
            +
             
     | 
| 
      
 7 
     | 
    
         
            +
            usage = "Usage: echi-converter-create /path/to/directory"
         
     | 
| 
      
 8 
     | 
    
         
            +
                 
         
     | 
| 
      
 9 
     | 
    
         
            +
            if ARGV[0] == nil
         
     | 
| 
      
 10 
     | 
    
         
            +
              puts usage
         
     | 
| 
      
 11 
     | 
    
         
            +
              puts "You must specify a directory name"
         
     | 
| 
      
 12 
     | 
    
         
            +
              exit
         
     | 
| 
      
 13 
     | 
    
         
            +
            end
         
     | 
| 
      
 14 
     | 
    
         
            +
             
     | 
| 
      
 15 
     | 
    
         
            +
            dest_dir_relative = ARGV[0] || Dir.pwd
         
     | 
| 
      
 16 
     | 
    
         
            +
            dest_dir = File.expand_path dest_dir_relative
         
     | 
| 
      
 17 
     | 
    
         
            +
            base_dir = File.expand_path File.dirname(__FILE__)
         
     | 
| 
      
 18 
     | 
    
         
            +
             
     | 
| 
      
 19 
     | 
    
         
            +
            if RUBY_PLATFORM =~ /mswin32/
         
     | 
| 
      
 20 
     | 
    
         
            +
              slash = "\ ".rstrip!
         
     | 
| 
      
 21 
     | 
    
         
            +
              puts 'Windows'
         
     | 
| 
      
 22 
     | 
    
         
            +
            else
         
     | 
| 
      
 23 
     | 
    
         
            +
              puts 'Linux/OSX'
         
     | 
| 
      
 24 
     | 
    
         
            +
              slash = "/"
         
     | 
| 
      
 25 
     | 
    
         
            +
            end
         
     | 
| 
      
 26 
     | 
    
         
            +
             
     | 
| 
      
 27 
     | 
    
         
            +
            #Obtain the details of which Gem is installed
         
     | 
| 
      
 28 
     | 
    
         
            +
            gem_details = base_dir.split(slash)
         
     | 
| 
      
 29 
     | 
    
         
            +
            location = gem_details.length - 2
         
     | 
| 
      
 30 
     | 
    
         
            +
            puts 'Creating new ' + gem_details[location] + ' directory tree in ' + dest_dir
         
     | 
| 
      
 31 
     | 
    
         
            +
            puts ' '
         
     | 
| 
      
 32 
     | 
    
         
            +
             
     | 
| 
      
 33 
     | 
    
         
            +
            #Now, create the directory, must be a new 'fresh' one
         
     | 
| 
      
 34 
     | 
    
         
            +
            begin
         
     | 
| 
      
 35 
     | 
    
         
            +
              result = FileUtils.mkdir dest_dir_relative
         
     | 
| 
      
 36 
     | 
    
         
            +
              puts 'Created diretory "' + result.to_s + '"'
         
     | 
| 
      
 37 
     | 
    
         
            +
            rescue => err
         
     | 
| 
      
 38 
     | 
    
         
            +
              puts 'ERROR: ' + err
         
     | 
| 
      
 39 
     | 
    
         
            +
              puts 'Failed, exiting...'
         
     | 
| 
      
 40 
     | 
    
         
            +
              exit
         
     | 
| 
      
 41 
     | 
    
         
            +
            end
         
     | 
| 
      
 42 
     | 
    
         
            +
             
     | 
| 
      
 43 
     | 
    
         
            +
            #Now create various directories
         
     | 
| 
      
 44 
     | 
    
         
            +
            logdir = dest_dir + slash +'log'
         
     | 
| 
      
 45 
     | 
    
         
            +
            filesdir = dest_dir + slash + 'files'
         
     | 
| 
      
 46 
     | 
    
         
            +
            csvdir = filesdir + slash + 'csv'
         
     | 
| 
      
 47 
     | 
    
         
            +
            processeddir = filesdir + slash + 'processed'
         
     | 
| 
      
 48 
     | 
    
         
            +
            toprocessdir = filesdir + slash + 'to_process'
         
     | 
| 
      
 49 
     | 
    
         
            +
            begin
         
     | 
| 
      
 50 
     | 
    
         
            +
              FileUtils.mkdir logdir
         
     | 
| 
      
 51 
     | 
    
         
            +
              FileUtils.mkdir filesdir
         
     | 
| 
      
 52 
     | 
    
         
            +
              FileUtils.mkdir csvdir
         
     | 
| 
      
 53 
     | 
    
         
            +
              FileUtils.mkdir processeddir
         
     | 
| 
      
 54 
     | 
    
         
            +
              FileUtils.mkdir toprocessdir
         
     | 
| 
      
 55 
     | 
    
         
            +
            rescue => err
         
     | 
| 
      
 56 
     | 
    
         
            +
              puts 'ERROR: ' + err
         
     | 
| 
      
 57 
     | 
    
         
            +
              puts 'Failed, exiting...'
         
     | 
| 
      
 58 
     | 
    
         
            +
              exit
         
     | 
| 
      
 59 
     | 
    
         
            +
            end
         
     | 
| 
      
 60 
     | 
    
         
            +
             
     | 
| 
      
 61 
     | 
    
         
            +
            #Now, start copying project files files
         
     | 
| 
      
 62 
     | 
    
         
            +
            substitute = slash + '.'
         
     | 
| 
      
 63 
     | 
    
         
            +
            base_dir = base_dir.sub('/bin', substitute)
         
     | 
| 
      
 64 
     | 
    
         
            +
            new_dest_dir = dest_dir + slash + '.'
         
     | 
| 
      
 65 
     | 
    
         
            +
            exe_file = dest_dir + slash + 'echi-converter'
         
     | 
| 
      
 66 
     | 
    
         
            +
            begin
         
     | 
| 
      
 67 
     | 
    
         
            +
              FileUtils.cp_r base_dir, new_dest_dir
         
     | 
| 
      
 68 
     | 
    
         
            +
              FileUtils.chmod 0755, exe_file
         
     | 
| 
      
 69 
     | 
    
         
            +
            rescue => err
         
     | 
| 
      
 70 
     | 
    
         
            +
              puts 'ERROR: ' + err
         
     | 
| 
      
 71 
     | 
    
         
            +
              puts 'Failed, exiting...'
         
     | 
| 
      
 72 
     | 
    
         
            +
              exit
         
     | 
| 
      
 73 
     | 
    
         
            +
            end
         
     | 
| 
      
 74 
     | 
    
         
            +
             
     | 
| 
      
 75 
     | 
    
         
            +
            puts ' '
         
     | 
| 
      
 76 
     | 
    
         
            +
            puts 'ECHI Conveter directory created! Now ready for use.'
         
     | 
| 
         @@ -0,0 +1,33 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            #Configuration details for the application
         
     | 
| 
      
 2 
     | 
    
         
            +
             
     | 
| 
      
 3 
     | 
    
         
            +
            #Connection details for the Avaya CMS/ECHI host
         
     | 
| 
      
 4 
     | 
    
         
            +
            echi_host:      localhost
         
     | 
| 
      
 5 
     | 
    
         
            +
            echi_port:      22
         
     | 
| 
      
 6 
     | 
    
         
            +
            echi_username:  jsgoecke
         
     | 
| 
      
 7 
     | 
    
         
            +
            echi_password:  sanfran2007!
         
     | 
| 
      
 8 
     | 
    
         
            +
            echi_connect_type:  ftp #only ftp supported now, possible for ssh in the future
         
     | 
| 
      
 9 
     | 
    
         
            +
            echi_ftp_directory:  /Users/ftp/anonymous
         
     | 
| 
      
 10 
     | 
    
         
            +
            echi_ftp_retry: 3
         
     | 
| 
      
 11 
     | 
    
         
            +
            echi_schema: extended_version12.yml
         
     | 
| 
      
 12 
     | 
    
         
            +
             
     | 
| 
      
 13 
     | 
    
         
            +
            #Currently only ftp supported, but may want to add UUCP/Serial later
         
     | 
| 
      
 14 
     | 
    
         
            +
            echi_xfer_type: ftp
         
     | 
| 
      
 15 
     | 
    
         
            +
             
     | 
| 
      
 16 
     | 
    
         
            +
            #How frequently to fetch records off of the Avaya CMS ftp server
         
     | 
| 
      
 17 
     | 
    
         
            +
            fetch_interval: 60  #in seconds
         
     | 
| 
      
 18 
     | 
    
         
            +
             
     | 
| 
      
 19 
     | 
    
         
            +
            #Whether or not to insert into a database, into a csv file or both
         
     | 
| 
      
 20 
     | 
    
         
            +
            export_type:    database
         
     | 
| 
      
 21 
     | 
    
         
            +
             
     | 
| 
      
 22 
     | 
    
         
            +
            #Options are:
         
     | 
| 
      
 23 
     | 
    
         
            +
                #FATAL:	an unhandleable error that results in a program crash
         
     | 
| 
      
 24 
     | 
    
         
            +
                #ERROR:	a handleable error condition
         
     | 
| 
      
 25 
     | 
    
         
            +
                #WARN:	a warning
         
     | 
| 
      
 26 
     | 
    
         
            +
                #INFO:	generic (useful) information about system operation
         
     | 
| 
      
 27 
     | 
    
         
            +
                #DEBUG:	low-level information for developers
         
     | 
| 
      
 28 
     | 
    
         
            +
                #NONE:  turn off logging
         
     | 
| 
      
 29 
     | 
    
         
            +
            log_level:  DEBUG
         
     | 
| 
      
 30 
     | 
    
         
            +
            #How many log files to create and the length before cycling through
         
     | 
| 
      
 31 
     | 
    
         
            +
            log_number: 10
         
     | 
| 
      
 32 
     | 
    
         
            +
            #The size of each individual log file
         
     | 
| 
      
 33 
     | 
    
         
            +
            log_length: 10240000
         
     | 
    
        data/config/database.yml
    ADDED
    
    
| 
         @@ -0,0 +1,234 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            #ECH File construct, order is important, as the application sequentially reads the file
         
     | 
| 
      
 2 
     | 
    
         
            +
            #Version 12 - Extended Schema
         
     | 
| 
      
 3 
     | 
    
         
            +
            fields:
         
     | 
| 
      
 4 
     | 
    
         
            +
                - name: callid
         
     | 
| 
      
 5 
     | 
    
         
            +
                  type: int
         
     | 
| 
      
 6 
     | 
    
         
            +
                  length: 4
         
     | 
| 
      
 7 
     | 
    
         
            +
                - name: acwtime
         
     | 
| 
      
 8 
     | 
    
         
            +
                  type: int
         
     | 
| 
      
 9 
     | 
    
         
            +
                  length: 4
         
     | 
| 
      
 10 
     | 
    
         
            +
                - name: onholdtime
         
     | 
| 
      
 11 
     | 
    
         
            +
                  type: int
         
     | 
| 
      
 12 
     | 
    
         
            +
                  length: 4
         
     | 
| 
      
 13 
     | 
    
         
            +
                - name: consulttime
         
     | 
| 
      
 14 
     | 
    
         
            +
                  type: int
         
     | 
| 
      
 15 
     | 
    
         
            +
                  length: 4
         
     | 
| 
      
 16 
     | 
    
         
            +
                - name: disptime
         
     | 
| 
      
 17 
     | 
    
         
            +
                  type: int
         
     | 
| 
      
 18 
     | 
    
         
            +
                  length: 4
         
     | 
| 
      
 19 
     | 
    
         
            +
                - name: duration
         
     | 
| 
      
 20 
     | 
    
         
            +
                  type: int
         
     | 
| 
      
 21 
     | 
    
         
            +
                  length: 4
         
     | 
| 
      
 22 
     | 
    
         
            +
                - name: segstart
         
     | 
| 
      
 23 
     | 
    
         
            +
                  type: datetime
         
     | 
| 
      
 24 
     | 
    
         
            +
                  length: 4
         
     | 
| 
      
 25 
     | 
    
         
            +
                - name: segstop
         
     | 
| 
      
 26 
     | 
    
         
            +
                  type: datetime
         
     | 
| 
      
 27 
     | 
    
         
            +
                  length: 4
         
     | 
| 
      
 28 
     | 
    
         
            +
                - name: talktime
         
     | 
| 
      
 29 
     | 
    
         
            +
                  type: int
         
     | 
| 
      
 30 
     | 
    
         
            +
                  length: 4
         
     | 
| 
      
 31 
     | 
    
         
            +
                - name: netintime
         
     | 
| 
      
 32 
     | 
    
         
            +
                  type: int
         
     | 
| 
      
 33 
     | 
    
         
            +
                  length: 4
         
     | 
| 
      
 34 
     | 
    
         
            +
                - name: origholdtime
         
     | 
| 
      
 35 
     | 
    
         
            +
                  type: int
         
     | 
| 
      
 36 
     | 
    
         
            +
                  length: 4
         
     | 
| 
      
 37 
     | 
    
         
            +
                - name: queuetime
         
     | 
| 
      
 38 
     | 
    
         
            +
                  type: int
         
     | 
| 
      
 39 
     | 
    
         
            +
                  length: 4
         
     | 
| 
      
 40 
     | 
    
         
            +
                - name: ringtime
         
     | 
| 
      
 41 
     | 
    
         
            +
                  type: int
         
     | 
| 
      
 42 
     | 
    
         
            +
                  length: 4
         
     | 
| 
      
 43 
     | 
    
         
            +
                - name: dispivector
         
     | 
| 
      
 44 
     | 
    
         
            +
                  type: int
         
     | 
| 
      
 45 
     | 
    
         
            +
                  length: 2
         
     | 
| 
      
 46 
     | 
    
         
            +
                - name: dispsplit
         
     | 
| 
      
 47 
     | 
    
         
            +
                  type: int
         
     | 
| 
      
 48 
     | 
    
         
            +
                  length: 2
         
     | 
| 
      
 49 
     | 
    
         
            +
                - name: firstivector
         
     | 
| 
      
 50 
     | 
    
         
            +
                  type: int
         
     | 
| 
      
 51 
     | 
    
         
            +
                  length: 2
         
     | 
| 
      
 52 
     | 
    
         
            +
                - name: split1
         
     | 
| 
      
 53 
     | 
    
         
            +
                  type: int
         
     | 
| 
      
 54 
     | 
    
         
            +
                  length: 2
         
     | 
| 
      
 55 
     | 
    
         
            +
                - name: split2
         
     | 
| 
      
 56 
     | 
    
         
            +
                  type: int
         
     | 
| 
      
 57 
     | 
    
         
            +
                  length: 2
         
     | 
| 
      
 58 
     | 
    
         
            +
                - name: split3
         
     | 
| 
      
 59 
     | 
    
         
            +
                  type: int
         
     | 
| 
      
 60 
     | 
    
         
            +
                  length: 2
         
     | 
| 
      
 61 
     | 
    
         
            +
                - name: trunkgroup
         
     | 
| 
      
 62 
     | 
    
         
            +
                  type: int
         
     | 
| 
      
 63 
     | 
    
         
            +
                  length: 2
         
     | 
| 
      
 64 
     | 
    
         
            +
                - name: tk_locid
         
     | 
| 
      
 65 
     | 
    
         
            +
                  type: int
         
     | 
| 
      
 66 
     | 
    
         
            +
                  length: 2
         
     | 
| 
      
 67 
     | 
    
         
            +
                - name: orig_locid
         
     | 
| 
      
 68 
     | 
    
         
            +
                  type: int
         
     | 
| 
      
 69 
     | 
    
         
            +
                  length: 2
         
     | 
| 
      
 70 
     | 
    
         
            +
                - name: answer_locid
         
     | 
| 
      
 71 
     | 
    
         
            +
                  type: int
         
     | 
| 
      
 72 
     | 
    
         
            +
                  length: 2
         
     | 
| 
      
 73 
     | 
    
         
            +
                - name: obs_locid
         
     | 
| 
      
 74 
     | 
    
         
            +
                  type: int
         
     | 
| 
      
 75 
     | 
    
         
            +
                  length: 2
         
     | 
| 
      
 76 
     | 
    
         
            +
                - name: uui_len
         
     | 
| 
      
 77 
     | 
    
         
            +
                  type: int
         
     | 
| 
      
 78 
     | 
    
         
            +
                  length: 2
         
     | 
| 
      
 79 
     | 
    
         
            +
                - name: assist
         
     | 
| 
      
 80 
     | 
    
         
            +
                  type: bool
         
     | 
| 
      
 81 
     | 
    
         
            +
                  length: 1
         
     | 
| 
      
 82 
     | 
    
         
            +
                - name: audio_difficulty
         
     | 
| 
      
 83 
     | 
    
         
            +
                  type: bool
         
     | 
| 
      
 84 
     | 
    
         
            +
                  length: 1
         
     | 
| 
      
 85 
     | 
    
         
            +
                - name: conference
         
     | 
| 
      
 86 
     | 
    
         
            +
                  type: bool
         
     | 
| 
      
 87 
     | 
    
         
            +
                  length: 1
         
     | 
| 
      
 88 
     | 
    
         
            +
                - name: da_queued
         
     | 
| 
      
 89 
     | 
    
         
            +
                  type: bool
         
     | 
| 
      
 90 
     | 
    
         
            +
                  length: 1
         
     | 
| 
      
 91 
     | 
    
         
            +
                - name: hold_abn
         
     | 
| 
      
 92 
     | 
    
         
            +
                  type: bool
         
     | 
| 
      
 93 
     | 
    
         
            +
                  length: 1
         
     | 
| 
      
 94 
     | 
    
         
            +
                - name: malicious
         
     | 
| 
      
 95 
     | 
    
         
            +
                  type: bool
         
     | 
| 
      
 96 
     | 
    
         
            +
                  length: 1
         
     | 
| 
      
 97 
     | 
    
         
            +
                - name: observing_call
         
     | 
| 
      
 98 
     | 
    
         
            +
                  type: bool
         
     | 
| 
      
 99 
     | 
    
         
            +
                  length: 1
         
     | 
| 
      
 100 
     | 
    
         
            +
                - name: transferred
         
     | 
| 
      
 101 
     | 
    
         
            +
                  type: bool
         
     | 
| 
      
 102 
     | 
    
         
            +
                  length: 1
         
     | 
| 
      
 103 
     | 
    
         
            +
                - name: agent_released
         
     | 
| 
      
 104 
     | 
    
         
            +
                  type: bool_int
         
     | 
| 
      
 105 
     | 
    
         
            +
                  length: 1
         
     | 
| 
      
 106 
     | 
    
         
            +
                - name: acdnum
         
     | 
| 
      
 107 
     | 
    
         
            +
                  type: int
         
     | 
| 
      
 108 
     | 
    
         
            +
                  length: 1
         
     | 
| 
      
 109 
     | 
    
         
            +
                - name: call_disp
         
     | 
| 
      
 110 
     | 
    
         
            +
                  type: int
         
     | 
| 
      
 111 
     | 
    
         
            +
                  length: 1
         
     | 
| 
      
 112 
     | 
    
         
            +
                - name: disppriority
         
     | 
| 
      
 113 
     | 
    
         
            +
                  type: int
         
     | 
| 
      
 114 
     | 
    
         
            +
                  length: 1
         
     | 
| 
      
 115 
     | 
    
         
            +
                - name: holds
         
     | 
| 
      
 116 
     | 
    
         
            +
                  type: int
         
     | 
| 
      
 117 
     | 
    
         
            +
                  length: 1
         
     | 
| 
      
 118 
     | 
    
         
            +
                - name: segment
         
     | 
| 
      
 119 
     | 
    
         
            +
                  type: int
         
     | 
| 
      
 120 
     | 
    
         
            +
                  length: 1
         
     | 
| 
      
 121 
     | 
    
         
            +
                - name: ansreason
         
     | 
| 
      
 122 
     | 
    
         
            +
                  type: int
         
     | 
| 
      
 123 
     | 
    
         
            +
                  length: 1
         
     | 
| 
      
 124 
     | 
    
         
            +
                - name: origreason
         
     | 
| 
      
 125 
     | 
    
         
            +
                  type: int
         
     | 
| 
      
 126 
     | 
    
         
            +
                  length: 1
         
     | 
| 
      
 127 
     | 
    
         
            +
                - name: dispsklevel
         
     | 
| 
      
 128 
     | 
    
         
            +
                  type: int
         
     | 
| 
      
 129 
     | 
    
         
            +
                  length: 1
         
     | 
| 
      
 130 
     | 
    
         
            +
                - name: events0
         
     | 
| 
      
 131 
     | 
    
         
            +
                  type: int
         
     | 
| 
      
 132 
     | 
    
         
            +
                  length: 1
         
     | 
| 
      
 133 
     | 
    
         
            +
                - name: events1
         
     | 
| 
      
 134 
     | 
    
         
            +
                  type: int
         
     | 
| 
      
 135 
     | 
    
         
            +
                  length: 1
         
     | 
| 
      
 136 
     | 
    
         
            +
                - name: events2
         
     | 
| 
      
 137 
     | 
    
         
            +
                  type: int
         
     | 
| 
      
 138 
     | 
    
         
            +
                  length: 1
         
     | 
| 
      
 139 
     | 
    
         
            +
                - name: events3
         
     | 
| 
      
 140 
     | 
    
         
            +
                  type: int
         
     | 
| 
      
 141 
     | 
    
         
            +
                  length: 1
         
     | 
| 
      
 142 
     | 
    
         
            +
                - name: events4
         
     | 
| 
      
 143 
     | 
    
         
            +
                  type: int
         
     | 
| 
      
 144 
     | 
    
         
            +
                  length: 1
         
     | 
| 
      
 145 
     | 
    
         
            +
                - name: events5
         
     | 
| 
      
 146 
     | 
    
         
            +
                  type: int
         
     | 
| 
      
 147 
     | 
    
         
            +
                  length: 1
         
     | 
| 
      
 148 
     | 
    
         
            +
                - name: events6
         
     | 
| 
      
 149 
     | 
    
         
            +
                  type: int
         
     | 
| 
      
 150 
     | 
    
         
            +
                  length: 1
         
     | 
| 
      
 151 
     | 
    
         
            +
                - name: events7
         
     | 
| 
      
 152 
     | 
    
         
            +
                  type: int
         
     | 
| 
      
 153 
     | 
    
         
            +
                  length: 1
         
     | 
| 
      
 154 
     | 
    
         
            +
                - name: events8
         
     | 
| 
      
 155 
     | 
    
         
            +
                  type: int
         
     | 
| 
      
 156 
     | 
    
         
            +
                  length: 1
         
     | 
| 
      
 157 
     | 
    
         
            +
                - name: ucid
         
     | 
| 
      
 158 
     | 
    
         
            +
                  type: str
         
     | 
| 
      
 159 
     | 
    
         
            +
                  length: 21
         
     | 
| 
      
 160 
     | 
    
         
            +
                - name: dispvdn
         
     | 
| 
      
 161 
     | 
    
         
            +
                  type: str
         
     | 
| 
      
 162 
     | 
    
         
            +
                  length: 8
         
     | 
| 
      
 163 
     | 
    
         
            +
                - name: eqloc
         
     | 
| 
      
 164 
     | 
    
         
            +
                  type: str
         
     | 
| 
      
 165 
     | 
    
         
            +
                  length: 10
         
     | 
| 
      
 166 
     | 
    
         
            +
                - name: firstvdn 
         
     | 
| 
      
 167 
     | 
    
         
            +
                  type: str
         
     | 
| 
      
 168 
     | 
    
         
            +
                  length: 8
         
     | 
| 
      
 169 
     | 
    
         
            +
                - name: orig_logid
         
     | 
| 
      
 170 
     | 
    
         
            +
                  type: str
         
     | 
| 
      
 171 
     | 
    
         
            +
                  length: 10
         
     | 
| 
      
 172 
     | 
    
         
            +
                - name: ans_logid
         
     | 
| 
      
 173 
     | 
    
         
            +
                  type: str
         
     | 
| 
      
 174 
     | 
    
         
            +
                  length: 10
         
     | 
| 
      
 175 
     | 
    
         
            +
                - name: last_observer
         
     | 
| 
      
 176 
     | 
    
         
            +
                  type: str
         
     | 
| 
      
 177 
     | 
    
         
            +
                  length: 10
         
     | 
| 
      
 178 
     | 
    
         
            +
                - name: dialed_number
         
     | 
| 
      
 179 
     | 
    
         
            +
                  type: str
         
     | 
| 
      
 180 
     | 
    
         
            +
                  length: 25
         
     | 
| 
      
 181 
     | 
    
         
            +
                - name: calling_party
         
     | 
| 
      
 182 
     | 
    
         
            +
                  type: str
         
     | 
| 
      
 183 
     | 
    
         
            +
                  length: 13
         
     | 
| 
      
 184 
     | 
    
         
            +
                - name: collect_digits
         
     | 
| 
      
 185 
     | 
    
         
            +
                  type: str
         
     | 
| 
      
 186 
     | 
    
         
            +
                  length: 17
         
     | 
| 
      
 187 
     | 
    
         
            +
                - name: cwc_digits
         
     | 
| 
      
 188 
     | 
    
         
            +
                  type: str
         
     | 
| 
      
 189 
     | 
    
         
            +
                  length: 17
         
     | 
| 
      
 190 
     | 
    
         
            +
                - name: calling_II
         
     | 
| 
      
 191 
     | 
    
         
            +
                  type: str
         
     | 
| 
      
 192 
     | 
    
         
            +
                  length: 3
         
     | 
| 
      
 193 
     | 
    
         
            +
                - name: cwcs0
         
     | 
| 
      
 194 
     | 
    
         
            +
                  type: str
         
     | 
| 
      
 195 
     | 
    
         
            +
                  length: 17
         
     | 
| 
      
 196 
     | 
    
         
            +
                - name: cwcs1
         
     | 
| 
      
 197 
     | 
    
         
            +
                  type: str
         
     | 
| 
      
 198 
     | 
    
         
            +
                  length: 17
         
     | 
| 
      
 199 
     | 
    
         
            +
                - name: cwcs2
         
     | 
| 
      
 200 
     | 
    
         
            +
                  type: str
         
     | 
| 
      
 201 
     | 
    
         
            +
                  length: 17
         
     | 
| 
      
 202 
     | 
    
         
            +
                - name: cwcs3
         
     | 
| 
      
 203 
     | 
    
         
            +
                  type: str
         
     | 
| 
      
 204 
     | 
    
         
            +
                  length: 17
         
     | 
| 
      
 205 
     | 
    
         
            +
                - name: cwcs4
         
     | 
| 
      
 206 
     | 
    
         
            +
                  type: str
         
     | 
| 
      
 207 
     | 
    
         
            +
                  length: 17
         
     | 
| 
      
 208 
     | 
    
         
            +
                - name: vdn2
         
     | 
| 
      
 209 
     | 
    
         
            +
                  type: str
         
     | 
| 
      
 210 
     | 
    
         
            +
                  length: 8
         
     | 
| 
      
 211 
     | 
    
         
            +
                - name: vdn3
         
     | 
| 
      
 212 
     | 
    
         
            +
                  type: str
         
     | 
| 
      
 213 
     | 
    
         
            +
                  length: 8
         
     | 
| 
      
 214 
     | 
    
         
            +
                - name: vdn4
         
     | 
| 
      
 215 
     | 
    
         
            +
                  type: str
         
     | 
| 
      
 216 
     | 
    
         
            +
                  length: 8
         
     | 
| 
      
 217 
     | 
    
         
            +
                - name: vdn5
         
     | 
| 
      
 218 
     | 
    
         
            +
                  type: str
         
     | 
| 
      
 219 
     | 
    
         
            +
                  length: 8
         
     | 
| 
      
 220 
     | 
    
         
            +
                - name: vdn6
         
     | 
| 
      
 221 
     | 
    
         
            +
                  type: str
         
     | 
| 
      
 222 
     | 
    
         
            +
                  length: 8
         
     | 
| 
      
 223 
     | 
    
         
            +
                - name: vdn7
         
     | 
| 
      
 224 
     | 
    
         
            +
                  type: str
         
     | 
| 
      
 225 
     | 
    
         
            +
                  length: 8
         
     | 
| 
      
 226 
     | 
    
         
            +
                - name: vdn8
         
     | 
| 
      
 227 
     | 
    
         
            +
                  type: str
         
     | 
| 
      
 228 
     | 
    
         
            +
                  length: 8
         
     | 
| 
      
 229 
     | 
    
         
            +
                - name: vdn9
         
     | 
| 
      
 230 
     | 
    
         
            +
                  type: str
         
     | 
| 
      
 231 
     | 
    
         
            +
                  length: 8
         
     | 
| 
      
 232 
     | 
    
         
            +
                - name: asaiuui
         
     | 
| 
      
 233 
     | 
    
         
            +
                  type: str
         
     | 
| 
      
 234 
     | 
    
         
            +
                  length: 96
         
     |