]>
git.proxmox.com Git - pve-access-control.git/blob - PVE/TokenConfig.pm
1 package PVE
::TokenConfig
;
8 use PVE
::AccessControl
;
11 my $parse_token_cfg = sub {
12 my ($filename, $raw) = @_;
15 return $parsed if !defined($raw);
17 my @lines = split(/\n/, $raw);
18 foreach my $line (@lines) {
19 next if $line =~ m/^\s*$/;
21 if ($line =~ m/^(\S+) (\S+)$/) {
22 if (PVE
::AccessControl
::pve_verify_tokenid
($1, 1)) {
28 warn "skipping invalid token.cfg entry\n";
34 my $write_token_cfg = sub {
35 my ($filename, $data) = @_;
38 foreach my $tokenid (sort keys %$data) {
39 $raw .= "$tokenid $data->{$tokenid}\n";
45 PVE
::Cluster
::cfs_register_file
('priv/token.cfg', $parse_token_cfg, $write_token_cfg);
50 PVE
::AccessControl
::pve_verify_tokenid
($tokenid);
52 my $token_value = PVE
::Cluster
::cfs_lock_file
('priv/token.cfg', 10, sub {
53 my $uuid = UUID
::uuid
();
54 my $token_cfg = PVE
::Cluster
::cfs_read_file
('priv/token.cfg');
56 $token_cfg->{$tokenid} = $uuid;
58 PVE
::Cluster
::cfs_write_file
('priv/token.cfg', $token_cfg);
63 die "$@\n" if defined($@);
71 PVE
::Cluster
::cfs_lock_file
('priv/token.cfg', 10, sub {
72 my $token_cfg = PVE
::Cluster
::cfs_read_file
('priv/token.cfg');
74 delete $token_cfg->{$tokenid};
76 PVE
::Cluster
::cfs_write_file
('priv/token.cfg', $token_cfg);
79 die "$@\n" if defined($@);