morhekil-ipcauthpipe 0.2 → 0.2.1

Sign up to get free protection for your applications and to get access to all the features.
data/ipcauthpipe.gemspec CHANGED
@@ -1,14 +1,14 @@
1
1
  Gem::Specification.new do |s|
2
2
  s.name = "ipcauthpipe"
3
- s.version = "0.2"
4
- s.date = "2008-09-18"
3
+ s.version = "0.2.1"
4
+ s.date = "2009-06-11"
5
5
  s.summary = "Implementation of Courier's authpipe protocol over Invision Power Board / Converge."
6
6
  s.description = "ipcauthpipe gem implements Courier's authpipe protocol to interface Courier POP/IMAP server with Invision Power Board / Converge members database."
7
7
  s.has_rdoc = false
8
8
 
9
9
  s.author = "Oleg Ivanov"
10
10
  s.email = "morhekil@morhekil.net"
11
- s.homepage = "http://twitter.com/morhekil"
11
+ s.homepage = "http://morhekil.net"
12
12
 
13
13
  s.files = ['lib/ipcauthpipe/handler/auth.rb',
14
14
  'lib/ipcauthpipe/handler/enumerate.rb',
@@ -71,7 +71,9 @@ module IpcAuthpipe
71
71
  # LOGIN type authentication handler
72
72
  def validate_with_login(authdata)
73
73
  Log.debug "Authenticating through type LOGIN with #{authdata.inspect}"
74
- Member.find_by_name_and_password(authdata[:username], authdata[:password]).to_authpipe
74
+ member = Member.find_by_name_and_password(authdata[:username], authdata[:password])
75
+ member.create_homedir # make sure that homedir is created
76
+ member.to_authpipe # and return the details
75
77
  end
76
78
  end
77
79
 
@@ -21,6 +21,7 @@ module IpcAuthpipe
21
21
  # Finds member by his username and dumps his details, returns FAIL if not member were found
22
22
  def user_details(request)
23
23
  member = Member.find_by_name(request[:username])
24
+ member.create_homedir unless member.nil? # make sure the homedir exists
24
25
 
25
26
  member.nil? ? "FAIL\n" : member.to_authpipe
26
27
  end
data/lib/models/member.rb CHANGED
@@ -11,14 +11,23 @@ class Member < ActiveRecord::Base
11
11
 
12
12
  member
13
13
  end
14
+
15
+ def homedir
16
+ IpcAuthpipe::config.mail['home_dir'] % "#{name[0..0]}/#{name}"
17
+ end
18
+
19
+ # Create user's home dir if it's not present
20
+ def create_homedir
21
+ FileUtils.mkdir(member.homedir, :mode => '0755') unless File.exists?(member.homedir)
22
+ end
14
23
 
15
24
  def to_authpipe
16
25
  IpcAuthpipe::Log.debug "Dumping authpipe string for member data #{inspect}"
17
26
  stringdump = [
18
27
  "UID=#{IpcAuthpipe::config.mail['owner_uid']}",
19
28
  "GID=#{IpcAuthpipe::config.mail['owner_gid']}",
20
- "HOME=#{IpcAuthpipe::config.mail['home_dir'] % name}/",
21
- "MAILDIR=#{IpcAuthpipe::config.mail['home_dir'] % name}/",
29
+ "HOME=#{homedir}/",
30
+ "MAILDIR=#{homedir}/",
22
31
  "ADDRESS=#{IpcAuthpipe::config.mail['address_format'] % name}",
23
32
  "."
24
33
  ].join("\n")+"\n"
data/test/config.yml CHANGED
@@ -1,9 +1,9 @@
1
1
  database:
2
2
  adapter: mysql
3
3
  database: pokerru_mail_test
4
- username: root
4
+ username: toor
5
5
  password: Awycehe2iS
6
- socket: /var/run/mysqld/mysqld.sock
6
+ socket: /tmp/mysql.sock
7
7
 
8
8
  log:
9
9
  level: debug
@@ -47,8 +47,8 @@ describe 'Member' do
47
47
  member.to_authpipe.should == [
48
48
  "UID=#{IpcAuthpipe::config.mail['owner_uid']}",
49
49
  "GID=#{IpcAuthpipe::config.mail['owner_gid']}",
50
- "HOME=/home/vmail/tester/",
51
- "MAILDIR=/home/vmail/tester/",
50
+ "HOME=/home/vmail/t/tester/",
51
+ "MAILDIR=/home/vmail/t/tester/",
52
52
  "ADDRESS=tester@poker.ru",
53
53
  "."
54
54
  ].join("\n") + "\n"
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: morhekil-ipcauthpipe
3
3
  version: !ruby/object:Gem::Version
4
- version: "0.2"
4
+ version: 0.2.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Oleg Ivanov
@@ -9,11 +9,12 @@ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
11
 
12
- date: 2008-09-18 00:00:00 -07:00
12
+ date: 2009-06-11 00:00:00 -07:00
13
13
  default_executable:
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
16
16
  name: activerecord
17
+ type: :runtime
17
18
  version_requirement:
18
19
  version_requirements: !ruby/object:Gem::Requirement
19
20
  requirements:
@@ -46,7 +47,7 @@ files:
46
47
  - README
47
48
  - config.yml
48
49
  has_rdoc: false
49
- homepage: http://twitter.com/morhekil
50
+ homepage: http://morhekil.net
50
51
  post_install_message:
51
52
  rdoc_options: []
52
53