Forum: Ruby a problem with a cgi.

Announcement (2017-05-07): www.ruby-forum.com is now read-only since I unfortunately do not have the time to support and maintain the forum any more. Please see rubyonrails.org/community and ruby-lang.org/en/community for other Rails- und Ruby-related community platforms.
music (Guest)
on 2007-05-16 13:45
(Received via mailing list)
Hello.
I'm trying to know how to use cgi with ruby.
I have write this file to connect to a ldap server and to insert data:

proxy1LDAP.rb

require 'ldap'

class Proxy1LDAP

   def initialize
     @base = "ou=People,dc=mydomain,dc=it"
     @admin = "cn=admin,dc=mydomain,dc=it"
     @passwd = "xxx"
     @conn = LDAP::Conn.new("localhost")
     @conn.set_option(LDAP::LDAP_OPT_PROTOCOL_VERSION, 3)
     @dominio = "@mydomain.it"
   end

   def connetti
     @conn.bind(@admin, @passwd)
   end

   def inserisci(account)
     newentry = {
       "objectClass" =>
["top","person","organizationalPerson","inetOrgPerson","posixAccount"],
       "sn" => [account["cognome"]],
       "cn" => ["#{account["nome"]} #{account["cognome"]}"],
       "mail" => ["#{account["uid"]}#@dominio"],
       "homeDirectory" => ["/var/vmail/#{account["uid"]}"],
       "uid" => [account["uid"]],
       "userPassword" => ["{CRYPT}#{account['passwd']}"],
       "employeeNumber" => [account["codice"]]
     }
     @conn.add("uid=#{account['uid']},#@base", newentry)
   end

   def cerca

   end

   def elimina

   end

end

and then I have this cgi:

#!/usr/bin/ruby

require 'proxy1LDAP'
require 'cgi'

cgi = CGI.new
account = cgi.params

puts "Content-type: text/plain"
puts

#cgi.out("text/plain") {
acc=Proxy1LDAP.new
acc.connetti
acc.inserisci(account)

When I run this cgi the web server error is:

/usr/lib/cgi-bin/ruby/accMail1.rb:4:in `initialize': wrong argument type
Array (expected String) (TypeError), referer:
http://localhost/prove/mail1LDAP.html

What's the argumenti type error in the initialize method?
If I run proxyLDAP.rb standalone I have no errors and all works well
with ldap server.
Why it doesn't work if I use the cgi?
Doug P. (Guest)
on 2007-05-16 20:22
(Received via mailing list)
> puts
> http://localhost/prove/mail1LDAP.html
>
> What's the argumenti type error in the initialize method?
> If I run proxyLDAP.rb standalone I have no errors and all
> works well with ldap server.
> Why it doesn't work if I use the cgi?

CGI::params returns an array of the parameters posted to the cgi script.
You'll need to either (a) pass individual elements of the array
concatenated into a string, or (b) handle an array in your initialize
method.
This topic is locked and can not be replied to.