-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathcmsg.py
More file actions
executable file
·45 lines (37 loc) · 1.21 KB
/
cmsg.py
File metadata and controls
executable file
·45 lines (37 loc) · 1.21 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
#!/usr/bin/env python3
# Written by AI, just for fun.
# Sometimes we don't need a commit message, so, just a random one is fine.
import requests
import sys
import string
URL = "https://whatthecommit.com/index.txt"
def is_ascii(s):
try:
s.encode('ascii')
return True
except UnicodeEncodeError:
return False
def main():
try:
resp = requests.get(URL, timeout=5)
resp.raise_for_status()
content = resp.text.strip()
except Exception as e:
print(f"Error fetching content: {e}", file=sys.stderr)
sys.exit(1)
# Check ASCII
if not is_ascii(content):
print("Error: Content is not pure ASCII.", file=sys.stderr)
sys.exit(2)
# Check for forbidden characters
forbidden = {'$', '`','\\'}
if any(c in content for c in forbidden):
print("Error: Content contains forbidden characters ($ or `).", file=sys.stderr)
sys.exit(3)
# Additional shell safety: check for newlines and control chars
if any(ord(c) < 32 and c not in '\t\n\r' for c in content):
print("Error: Content contains control characters.", file=sys.stderr)
sys.exit(4)
print(content)
if __name__ == "__main__":
main()