ruby-shadow 2.3.3 → 2.5.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.
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"