Mercurial > crates > nonstick
annotate README.md @ 98:b87100c5eed4
Start on environment variables, and make pointers nicer.
This starts work on the PAM environment handling, and in so doing,
introduces the CHeapBox and CHeapString structs. These are analogous
to Box and CString, but they're located on the C heap rather than
being Rust-managed memory.
This is because environment variables deal with even more pointers
and it turns out we can lose a lot of manual freeing using homemade
smart pointers.
author | Paul Fisher <paul@pfish.zone> |
---|---|
date | Tue, 24 Jun 2025 04:25:25 -0400 |
parents | c9fc7e6257d3 |
children |
rev | line source |
---|---|
45
ce47901aab7a
Rename to “nonstick”, move to root, update docs and license.
Paul Fisher <paul@pfish.zone>
parents:
17
diff
changeset
|
1 # 🍳 nonstick |
16
f64ee7b6cdf1
Update metadata and README
Anthony Nowell <anthony@algorithmia.com>
parents:
diff
changeset
|
2 |
62
d83623951070
Further improve docs and put `conv` behind a feature gate.
Paul Fisher <paul@pfish.zone>
parents:
57
diff
changeset
|
3 Nonstick lets you use PAM (Pluggable Authentication Modules) from Rust without getting stuck in unsafe code. |
45
ce47901aab7a
Rename to “nonstick”, move to root, update docs and license.
Paul Fisher <paul@pfish.zone>
parents:
17
diff
changeset
|
4 |
ce47901aab7a
Rename to “nonstick”, move to root, update docs and license.
Paul Fisher <paul@pfish.zone>
parents:
17
diff
changeset
|
5 ## Status |
16
f64ee7b6cdf1
Update metadata and README
Anthony Nowell <anthony@algorithmia.com>
parents:
diff
changeset
|
6 |
88
c9fc7e6257d3
This is a v0.0.7 if I ever saw one.
Paul Fisher <paul@pfish.zone>
parents:
62
diff
changeset
|
7 This is currently somewhat incomplete. |
c9fc7e6257d3
This is a v0.0.7 if I ever saw one.
Paul Fisher <paul@pfish.zone>
parents:
62
diff
changeset
|
8 |
c9fc7e6257d3
This is a v0.0.7 if I ever saw one.
Paul Fisher <paul@pfish.zone>
parents:
62
diff
changeset
|
9 It provides fairly robust functionality for developing PAM modules (i.e., backends that PAM calls to authenticate users or do something similar). |
c9fc7e6257d3
This is a v0.0.7 if I ever saw one.
Paul Fisher <paul@pfish.zone>
parents:
62
diff
changeset
|
10 [Linux-PAM](https://github.com/linux-pam/linux-pam) is the only _tested_ PAM implementation, but it compiles against OpenPAM. |
16
f64ee7b6cdf1
Update metadata and README
Anthony Nowell <anthony@algorithmia.com>
parents:
diff
changeset
|
11 |
88
c9fc7e6257d3
This is a v0.0.7 if I ever saw one.
Paul Fisher <paul@pfish.zone>
parents:
62
diff
changeset
|
12 *If you’re looking for a library to implement a PAM client* (i.e., something that authenticates using PAM), consider the [`pam` crate](https://crates.io/crates/pam) for now. |
62
d83623951070
Further improve docs and put `conv` behind a feature gate.
Paul Fisher <paul@pfish.zone>
parents:
57
diff
changeset
|
13 |
88
c9fc7e6257d3
This is a v0.0.7 if I ever saw one.
Paul Fisher <paul@pfish.zone>
parents:
62
diff
changeset
|
14 APIs are likely to break before v0.1.0, but thereafter should stabilize to an eventual 1.0 release. |
c9fc7e6257d3
This is a v0.0.7 if I ever saw one.
Paul Fisher <paul@pfish.zone>
parents:
62
diff
changeset
|
15 After v0.1.0, the shape of the API should be mostly formed, and most of what happens will be adding new features. |
17 | 16 |
45
ce47901aab7a
Rename to “nonstick”, move to root, update docs and license.
Paul Fisher <paul@pfish.zone>
parents:
17
diff
changeset
|
17 Goals include: |
17 | 18 |
45
ce47901aab7a
Rename to “nonstick”, move to root, update docs and license.
Paul Fisher <paul@pfish.zone>
parents:
17
diff
changeset
|
19 - Bindings for PAM clients. |
88
c9fc7e6257d3
This is a v0.0.7 if I ever saw one.
Paul Fisher <paul@pfish.zone>
parents:
62
diff
changeset
|
20 - Additional PAM features, like environment variables. |
c9fc7e6257d3
This is a v0.0.7 if I ever saw one.
Paul Fisher <paul@pfish.zone>
parents:
62
diff
changeset
|
21 - Way more documentation. |
17 | 22 |
45
ce47901aab7a
Rename to “nonstick”, move to root, update docs and license.
Paul Fisher <paul@pfish.zone>
parents:
17
diff
changeset
|
23 ## Credits |
16
f64ee7b6cdf1
Update metadata and README
Anthony Nowell <anthony@algorithmia.com>
parents:
diff
changeset
|
24 |
45
ce47901aab7a
Rename to “nonstick”, move to root, update docs and license.
Paul Fisher <paul@pfish.zone>
parents:
17
diff
changeset
|
25 This is a direct fork of [Anthony Nowell](http://anowell.com/)’s [`pam-rs`/`pam-bindings` crate](https://crates.io/crates/pam-bindings). |
ce47901aab7a
Rename to “nonstick”, move to root, update docs and license.
Paul Fisher <paul@pfish.zone>
parents:
17
diff
changeset
|
26 `pam-rs` was in turn inspired by: |
16
f64ee7b6cdf1
Update metadata and README
Anthony Nowell <anthony@algorithmia.com>
parents:
diff
changeset
|
27 |
45
ce47901aab7a
Rename to “nonstick”, move to root, update docs and license.
Paul Fisher <paul@pfish.zone>
parents:
17
diff
changeset
|
28 - [`rust-pam` by tozny](https://github.com/tozny/rust-pam) |
ce47901aab7a
Rename to “nonstick”, move to root, update docs and license.
Paul Fisher <paul@pfish.zone>
parents:
17
diff
changeset
|
29 - [`pam_groupmap` by ndenev](https://github.com/ndenev/pam_groupmap) |
ce47901aab7a
Rename to “nonstick”, move to root, update docs and license.
Paul Fisher <paul@pfish.zone>
parents:
17
diff
changeset
|
30 - [`pam-http` by beatgammit](https://github.com/beatgammit/pam-http) |