#!/usr/bin/env python3
"""
Usage:
python clean_protect.py remove_groups.txt p4.protect
This script will drop all lines in the protect table that have a group referenced from the file
groups.txt passed into the script. The list of groups to drop is passed in as the first parameter
and the protect table is passed in as the 2nd parameter.
remove_groups.txt is generated using protect_groups.py - See that script for details.
Run "p4 protect -o > p4.protect" to generate the protections table.
You can redirect the output of this script to a file called new.p4.protect and then you can compare
the original p4.protect and the new.p4.protect. If everything looks okay, you can update the protections
table by running:
p4 protect -i < new.p4.protect
"""
import re
import sys
def main():
if len(sys.argv) < 3:
print("Usage: python clean_protect.py remove_groups.txt p4.protect")
sys.exit(1)
p4groups = []
with open(sys.argv[1], "r") as groups:
for group in groups.readlines():
group = group.rstrip()
group = group.lower()
p4groups.append(group)
with open(sys.argv[2], "r") as protect:
for line in protect.readlines():
line = line.rstrip()
origline = line
line = line.lower()
match = re.match(".*group (.*) \\* .*", line)
if match:
if match.group(1).lower() in p4groups:
continue
else:
print(origline)
else:
print(origline)
###############################################################################
# main
if __name__ == "__main__":
main()
| # | Change | User | Description | Committed | |
|---|---|---|---|---|---|
| #4 | 32423 | Russell C. Jackson (Rusty) |
Modernize SDP maintenance scripts: security, correctness, and Python 3 - Replace all os.system() and os.popen() calls with subprocess.run() using argument lists to eliminate shell injection vulnerabilities - Fix critical bugs: broken indentation in convert_label_to_autoreload.py, malformed print() in p4lock/p4unlock, wrong variable in isitalabel, format string typo in maintain_user_from_groups - Add p4 property alias and shared SKIP_USERS constant to sdputils.py - Add try/finally with p4.disconnect() to all P4Python scripts - Replace bare except: with specific exception types throughout - Update all shebangs to python3, remove unnecessary __future__ imports - Use context managers for all file handle operations - Replace from subprocess import * with explicit imports |
||
| #3 | 32388 | Russell C. Jackson (Rusty) | Updates using Claude.ai to clean up the code, reduce duplication, enhanace security, and use current standards. | ||
| #2 | 24675 | Russell C. Jackson (Rusty) |
Fixed bugs in sdputils.py and scripts using it. Converted to standard 2 space spacing, removed copyright stuff. |
||
| #1 | 22693 | Russell C. Jackson (Rusty) |
Branched a Unix only version of the SDP. Removed extra items to create a cleaner tree. Moved a few items around to make more sense without Windows in the mix. |
||
| //guest/perforce_software/sdp/dev/Maintenance/clean_protect.py | |||||
| #5 | 16638 | C. Thomas Tyler |
Routine merge down to dev from main using: p4 merge -b perforce_software-sdp-dev |
||
| #4 | 16029 | C. Thomas Tyler |
Routine merge to dev from main using: p4 merge -b perforce_software-sdp-dev |
||
| #3 | 11477 | Russell C. Jackson (Rusty) |
Updated to use /usr/bin/env python Added workshop header. Changed cfg to config. |
||
| #2 | 11464 | Russell C. Jackson (Rusty) | Current maintenance scripts. | ||
| #1 | 10638 | C. Thomas Tyler | Populate perforce_software-sdp-dev. | ||
| //guest/perforce_software/sdp/main/Maintenance/clean_protect.py | |||||
| #1 | 10148 | C. Thomas Tyler | Promoted the Perforce Server Deployment Package to The Workshop. | ||