ruby-shadow 2.3.3 → 2.5.1

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
- SHA1:
3
- metadata.gz: 00dc5e2fb7b9124c5e9489f228d5d35ed06487d3
4
- data.tar.gz: 18183d816f024a50f1bde785048d9476e4c893e7
2
+ SHA256:
3
+ metadata.gz: c76ae146558f0f3f822ab6482ce0c2de7050e91a77d02d565691f6a3d5a5d1c9
4
+ data.tar.gz: 10d1a37211ff98722dc3221b8320f3e79dd0686f9b4c3ed4f32a035fffb7df4e
5
5
  SHA512:
6
- metadata.gz: b3ad44e8ce154effe359199c0db55a90d88f9e8d57d6b5de84b96eca95eb20489604359288716f7062d2d53790e8994f57821401114b48f5bef3b3123ed41776
7
- data.tar.gz: d60ce3599b533e8a54664184a3918a64b8cd9785a0f45d7f80fd4cb65e0a930a549cf458e661be115bf77333aac4e55308637828126583d0cdc91c36f8c0b1cb
6
+ metadata.gz: 463621432a64c0cd422b72aa0a43f55053a2865774296c29a1c20b552cd5a70b2bdc4a6305a867c17f736a97b6803d9bb456482942da76e807b060218da08103
7
+ data.tar.gz: 1075b834c3e21e513d5ca615a5fab2ad84a35fe150de00e3c466e59780db534dc25d1e895fae6889dff13178162e5adcfd12f67bf9be12ab7596444248c67125
data/HISTORY CHANGED
@@ -1,6 +1,27 @@
1
+ [2021/12/01]
2
+ * Version 2.5.1
3
+ - fixes for compiling for Ruby 3
4
+
5
+ [2015/10/06]
6
+ * Version 2.5.0
7
+ - fixes for compiling for rubinius, at long last
8
+ - TESTS
9
+ - add a few method aliases
10
+
11
+ [2014/12/02]
12
+ * Version 2.4.1
13
+ - sp_loginclass support should NOT have been added to password implementation
14
+ [2014/12/01]
15
+ * Version 2.4.0
16
+ - Add support for sp_loginclass via pwd.h
17
+ [2014/04/28]
18
+ * Version 2.3.3
19
+ - Added support for more BSDs, thanks to https://github.com/bsiegert.
20
+ - Simplified compatibility check, removing check for function not actually used in pwd.h implementations.
21
+ [2014/02/25]
1
22
  [2013/12/18]
2
- * Version 2.3.2
3
- Fix up compilation issues causing problems with a non-GNU make.
23
+ * Version 2.3.3
24
+ Fix bug in shadow implementations (Linux, solaris) where sp_expired field was incorrectly set as nil. -1 is used to indicate not set. This was introduced 2.3.0.
4
25
  [2013/11/13]
5
26
  * Version 2.3.1
6
27
  - Caleb Land<caleb.land@gmail.com>
data/LICENSE CHANGED
@@ -3,3 +3,7 @@ License: Free for any use with your own risk!
3
3
  OR
4
4
 
5
5
  The terms of the Public Domain License (http://creativecommons.org/licenses/publicdomain/)
6
+
7
+ OR
8
+
9
+ The terms of the Unlicense, https://spdx.org/licenses/Unlicense.html
data/README CHANGED
@@ -26,20 +26,23 @@ make # use gmake on FreeBSD
26
26
  still present, but no promises about earlier versions of Ruby.
27
27
 
28
28
  3. Shadow::Passwd module's methods
29
- ______________________________________________________________________
30
- Method | Linux | Solaris | OS X | FreeBSD | OpenBSD
31
- ______________________________________________________________________
32
- getspent | * | * | * | * | *
33
- getspnam(name) | * | * | * | * | *
34
- setspent | * | * | * | * | *
35
- endspent | * | * | * | * | *
36
- fgetspent(file) | * | * | N | N | N
37
- sgetspent(str) | * | N | N | N | N
38
- putspent(entry,file) | * | * | N | N | N
39
- lckpwdf,lock | * | * | N | N | N
40
- ulckpwdf,unlock | * | * | N | N | N
41
- lock? | * | * | N | N | N
42
-
29
+ ________________________________________________________________________
30
+ Method | Linux | Solaris | OS X | *BSD
31
+ ________________________________________________________________________
32
+ getspent | * | * | * | *
33
+ getspnam(name) | * | * | * | *
34
+ from_user_name(name) (alias of above) | * | * | * | *
35
+ setspent | * | * | * | *
36
+ endspent | * | * | * | *
37
+ fgetspent(file) | * | * | N | N
38
+ sgetspent(str) | * | N | N | N
39
+ putspent(entry,file) | * | * | N | N
40
+ add_password_entry (alias of above ) | * | * | N | N
41
+ lckpwdf,lock | * | * | N | N
42
+ ulckpwdf,unlock | * | * | N | N
43
+ lock? | * | * | N | N
44
+
45
+ Check the implementation in use via Shadow::IMPLEMENTATION.
43
46
 
44
47
  4. Structure
45
48
 
@@ -56,6 +59,7 @@ Shadow::Passwd::Entry (Struct::PasswdEntry)
56
59
  considered inactive and disabled.
57
60
  sp_expire - days since Jan 1, 1970 when account will be
58
61
  disabled
62
+ sp_loginclass - pointer to null-terminated user login class.
59
63
 
60
64
 
61
65
  5. Description
@@ -82,7 +86,7 @@ when you exit the iterator block.
82
86
 
83
87
  * man shadow
84
88
  * /usr/include/shadow.h
85
- * Code at https://github.com/shadow-maint/shadow
89
+ * Code at https://github.com/apalmblad/ruby-shadow
86
90
 
87
91
 
88
92
  Original Author:
data/extconf.rb CHANGED
@@ -10,16 +10,17 @@ require 'rbconfig'
10
10
  $CFLAGS = case RUBY_VERSION
11
11
  when /^1\.9/; '-DRUBY19'
12
12
  when /^2\./; '-DRUBY19'
13
+ when /^3\./; '-DRUBY19'
13
14
  else; ''
14
15
  end
15
16
 
16
17
  implementation = case CONFIG['host_os']
17
18
  when /linux/i; 'shadow'
18
19
  when /sunos|solaris/i; 'shadow'
19
- when /freebsd|openbsd/i; 'pwd'
20
+ when /freebsd|mirbsd|netbsd|openbsd/i; 'pwd'
20
21
  when /darwin/i; 'pwd'
21
22
  else; nil
22
- "This library works on OS X, FreeBSD, OpenBSD, Solaris and Linux."
23
+ "This library works on OS X, FreeBSD, MirBSD, NetBSD, OpenBSD, Solaris and Linux."
23
24
  end
24
25
 
25
26
  ok = true
@@ -48,7 +49,6 @@ when 'pwd'
48
49
  ok &= have_func("endpwent")
49
50
  ok &= have_func("getpwent")
50
51
  ok &= have_func("getpwnam")
51
- ok &= have_func("getpwnam_r")
52
52
  ok &= have_func("getpwuid")
53
53
  ok &= have_func("setpassent")
54
54
  ok &= have_func("setpwent")
@@ -65,5 +65,5 @@ if ok
65
65
 
66
66
  create_makefile("shadow", implementation)
67
67
  else
68
- raise "You are missing some of the required functions from either shadow.h on Linux/Solaris, or pwd.h on FreeBSD/OpenBSD/OS X."
68
+ raise "You are missing some of the required functions from either shadow.h on Linux/Solaris, or pwd.h on FreeBSD/MirBSD/NetBSD/OpenBSD/OS X."
69
69
  end
data/pwd/shadow.c CHANGED
@@ -66,6 +66,7 @@ static VALUE convert_pw_struct( struct passwd *entry )
66
66
  INT2FIX(difftime(entry->pw_change, 0) / (24*60*60)), /* pw_change */
67
67
  INT2FIX(difftime(entry->pw_expire, 0) / (24*60*60)), /* sp_expire */
68
68
  Qnil, /* sp_flag */
69
+ rb_tainted_str_new2(entry->pw_class), /* sp_loginclass, user access class */
69
70
  NULL);
70
71
  }
71
72
 
@@ -107,12 +108,14 @@ Init_shadow()
107
108
  "sp_namp","sp_pwdp","sp_lstchg",
108
109
  "sp_min","sp_max","sp_warn",
109
110
  "sp_inact","pw_change",
110
- "sp_expire","sp_flag", NULL);
111
+ "sp_expire","sp_flag",
112
+ "sp_loginclass", NULL);
111
113
  rb_sGroupEntry = rb_struct_define("GroupEntry",
112
114
  "sg_name","sg_passwd",
113
115
  "sg_adm","sg_mem",NULL);
114
116
 
115
117
  rb_mShadow = rb_define_module("Shadow");
118
+ rb_define_const( rb_mShadow, "IMPLEMENTATION", rb_str_new_cstr( "PWD" ) );
116
119
  rb_eFileLock = rb_define_class_under(rb_mShadow,"FileLock",rb_eException);
117
120
  rb_mPasswd = rb_define_module_under(rb_mShadow,"Passwd");
118
121
  rb_define_const(rb_mPasswd,"Entry",rb_sPasswdEntry);
@@ -123,4 +126,5 @@ Init_shadow()
123
126
  rb_define_module_function(rb_mPasswd,"endspent",rb_shadow_endspent,0);
124
127
  rb_define_module_function(rb_mPasswd,"getspent",rb_shadow_getspent,0);
125
128
  rb_define_module_function(rb_mPasswd,"getspnam",rb_shadow_getspnam,1);
129
+ rb_define_module_function(rb_mPasswd,"from_user_name",rb_shadow_getspnam,1);
126
130
  }
data/ruby-shadow.gemspec CHANGED
@@ -19,6 +19,6 @@ Gem::Specification.new do |spec|
19
19
  spec.name = 'ruby-shadow'
20
20
  spec.required_ruby_version = ['>= 1.8']
21
21
  spec.summary = '*nix Shadow Password Module'
22
- spec.version = '2.3.3'
23
- spec.license = "Public Domain License"
22
+ spec.version = '2.5.1'
23
+ spec.license = "Unlicense"
24
24
  end
data/shadow/shadow.c CHANGED
@@ -44,6 +44,7 @@ static VALUE convert_pw_struct( struct spwd *entry )
44
44
  Qnil, /* used by BSD, pw_change, date when the password expires, in days since Jan 1, 1970 */
45
45
  INT2FIX(entry->sp_expire),
46
46
  INT2FIX(entry->sp_flag),
47
+ Qnil,
47
48
  NULL);
48
49
  };
49
50
  static VALUE
@@ -143,21 +144,27 @@ rb_shadow_putspent(VALUE self, VALUE entry, VALUE file)
143
144
 
144
145
  if( TYPE(file) != T_FILE )
145
146
  rb_raise(rb_eTypeError,"argument must be a File.");
146
-
147
+ /*
147
148
  for(i=0; i<NUM_FIELDS; i++)
148
- val[i] = RSTRUCT_PTR( entry )[i]; //val[i] = RSTRUCT(entry)->ptr[i];
149
+ {
150
+ val[i] = rb_ary_entry( entry, i ); //val[i] = RSTRUCT(entry)->ptr[i];
151
+ i//val[i] = rb_struct_aref( entry, i );
152
+ }
153
+ */
149
154
  cfile = file_ptr( RFILE(file)->fptr );
150
155
 
151
-
152
- centry.sp_namp = StringValuePtr(val[0]);
153
- centry.sp_pwdp = StringValuePtr(val[1]);
154
- centry.sp_lstchg = FIX2INT(val[2]);
155
- centry.sp_min = FIX2INT(val[3]);
156
- centry.sp_max = FIX2INT(val[4]);
157
- centry.sp_warn = FIX2INT(val[5]);
158
- centry.sp_inact = FIX2INT(val[6]);
159
- centry.sp_expire = FIX2INT(val[8]);
160
- centry.sp_flag = FIX2INT(val[9]);
156
+ VALUE x = rb_ary_entry( entry, 0 );
157
+ centry.sp_namp = StringValuePtr( x );
158
+ x = rb_ary_entry( entry, 1 );
159
+ centry.sp_pwdp = StringValuePtr( x );
160
+ centry.sp_lstchg = FIX2INT( rb_ary_entry( entry, 2) );
161
+ centry.sp_min = FIX2INT( rb_ary_entry( entry, 3 ) );
162
+ centry.sp_max = FIX2INT( rb_ary_entry( entry, 4 ) );
163
+ centry.sp_warn = FIX2INT( rb_ary_entry( entry, 5 ));
164
+ centry.sp_inact = FIX2INT( rb_ary_entry( entry, 6 ) );
165
+ // missing 7 I think is put in to deal with beign similar to BSD returns, for the value pw_change.
166
+ centry.sp_expire = FIX2INT( rb_ary_entry( entry, 8 ) );
167
+ centry.sp_flag = FIX2INT( rb_ary_entry( entry, 9 ) );
161
168
 
162
169
  result = putspent(&centry,cfile);
163
170
 
@@ -243,12 +250,15 @@ Init_shadow()
243
250
  rb_sPasswdEntry = rb_struct_define("PasswdEntry",
244
251
  "sp_namp","sp_pwdp","sp_lstchg",
245
252
  "sp_min","sp_max","sp_warn",
246
- "sp_inact", "pw_change", "sp_expire","sp_flag", NULL);
253
+ "sp_inact", "pw_change",
254
+ "sp_expire","sp_flag",
255
+ "sp_loginclass", NULL);
247
256
  rb_sGroupEntry = rb_struct_define("GroupEntry",
248
257
  "sg_name","sg_passwd",
249
258
  "sg_adm","sg_mem",NULL);
250
259
 
251
260
  rb_mShadow = rb_define_module("Shadow");
261
+ rb_define_const( rb_mShadow, "IMPLEMENTATION", rb_str_new_cstr( "SHADOW" ) );
252
262
  rb_eFileLock = rb_define_class_under(rb_mShadow,"FileLock",rb_eException);
253
263
  rb_mPasswd = rb_define_module_under(rb_mShadow,"Passwd");
254
264
  rb_define_const(rb_mPasswd,"Entry",rb_sPasswdEntry);
@@ -263,7 +273,9 @@ Init_shadow()
263
273
  rb_define_module_function(rb_mPasswd,"fgetspent",rb_shadow_fgetspent,1);
264
274
  rb_define_module_function(rb_mPasswd,"getspent",rb_shadow_getspent,0);
265
275
  rb_define_module_function(rb_mPasswd,"getspnam",rb_shadow_getspnam,1);
276
+ rb_define_module_function(rb_mPasswd,"from_user_name",rb_shadow_getspnam,1);
266
277
  rb_define_module_function(rb_mPasswd,"putspent",rb_shadow_putspent,2);
278
+ rb_define_module_function(rb_mPasswd,"add_password_entry",rb_shadow_putspent,2);
267
279
  rb_define_module_function(rb_mPasswd,"lckpwdf",rb_shadow_lckpwdf,0);
268
280
  rb_define_module_function(rb_mPasswd,"lock",rb_shadow_lock,0);
269
281
  rb_define_module_function(rb_mPasswd,"ulckpwdf",rb_shadow_ulckpwdf,0);
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: ruby-shadow
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.3.3
4
+ version: 2.5.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Adam Palmblad
@@ -13,7 +13,7 @@ authors:
13
13
  autorequire:
14
14
  bindir: bin
15
15
  cert_chain: []
16
- date: 2014-02-25 00:00:00.000000000 Z
16
+ date: 2021-12-02 00:00:00.000000000 Z
17
17
  dependencies: []
18
18
  description: This module provides access to shadow passwords on Linux, OSX, FreeBSD,
19
19
  OpenBSD, and Solaris
@@ -37,7 +37,7 @@ files:
37
37
  - shadow/shadow.c
38
38
  homepage: https://github.com/apalmblad/ruby-shadow
39
39
  licenses:
40
- - Public Domain License
40
+ - Unlicense
41
41
  metadata: {}
42
42
  post_install_message:
43
43
  rdoc_options: []
@@ -54,8 +54,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
54
54
  - !ruby/object:Gem::Version
55
55
  version: '0'
56
56
  requirements: []
57
- rubyforge_project:
58
- rubygems_version: 2.2.1
57
+ rubygems_version: 3.1.4
59
58
  signing_key:
60
59
  specification_version: 4
61
60
  summary: "*nix Shadow Password Module"