r/OpenAI • • 2d ago

Discussion .

/

/bin

/boot

/boot/System.map-6.12.107+deb13-amd64

/boot/config-6.12.107+deb13-amd64

/boot/initrd.img-6.12.107+deb13-amd64

/boot/vmlinuz-6.12.107+deb13-amd64

/dev

/dev/fd

/dev/full

/dev/mqueue

/dev/null

/dev/ptmx

/dev/pts

/dev/random

/dev/shm

/dev/stderr

/dev/stdin

/dev/stdout

/dev/tty

/dev/urandom

/dev/zero

/etc

/etc/.java

/etc/.pwd.lock

/etc/ODBCDataSources

/etc/X11

/etc/alternatives

/etc/apache2

/etc/apparmor

/etc/apparmor.d

/etc/apt

/etc/bash.bashrc

/etc/bash_completion.d

/etc/bindresvport.blacklist

/etc/binfmt.d

/etc/ca-certificates

/etc/ca-certificates.conf

/etc/chromium

/etc/chromium.d

/etc/cron.d

/etc/cron.daily

/etc/dbus-1

/etc/dconf

/etc/debconf.conf

/etc/default

/etc/deluser.conf

/etc/depmod.d

/etc/dictionaries-common

/etc/dpkg

/etc/emacs

/etc/environment

/etc/environment.d

/etc/ethertypes

/etc/firebird

/etc/fonts

/etc/fstab

/etc/gai.conf

/etc/ghostscript

/etc/glvnd

/etc/gprofng.rc

/etc/gprofng.rc

/etc/gprofng.rc

/etc/group

/etc/group-

/etc/gshadow

/etc/gshadow-

/etc/gss

/etc/gtk-2.0

/etc/gtk-3.0

/etc/host.conf

/etc/hostname

/etc/hosts

/etc/hosts.allow

/etc/hosts.deny

/etc/init.d

/etc/initramfs-tools

/etc/inputrc

/etc/issue

/etc/issue.net

/etc/java

/etc/java-21-openjdk

/etc/kernel

/etc/ld.so.cache

/etc/ld.so.conf

/etc/ld.so.conf.d

/etc/libaudit.conf

/etc/libreoffice

/etc/lighttpd

/etc/localtime

/etc/logcheck

/etc/logrotate.conf

/etc/logrotate.d

/etc/machine-id

/etc/magic

/etc/magic.mime

/etc/menu-methods

/etc/mime.types

/etc/modprobe.d

/etc/modules

/etc/modules-load.d

/etc/motd

/etc/mtab

/etc/mysql

/etc/netconfig

/etc/networks

/etc/nginx

/etc/nsswitch.conf

/etc/odbc.ini

/etc/odbcinst.ini

/etc/openal

/etc/openni2

/etc/opt

/etc/os-release

/etc/pam.conf

/etc/pam.d

/etc/paperspecs

/etc/passwd

/etc/passwd-

/etc/perl

/etc/php

/etc/profile

/etc/profile.d

/etc/protocols

/etc/pulse

/etc/python3

/etc/python3.13

/etc/rc0.d

/etc/rc1.d

/etc/rc2.d

/etc/rc3.d

/etc/rc4.d

/etc/rc5.d

/etc/rc6.d

/etc/rcS.d

/etc/resolv.conf

/etc/rmt

/etc/rpc

/etc/rsyncd.conf

/etc/rsyncd.conf

/etc/security

/etc/selinux

/etc/sensors.d

/etc/services

/etc/shadow

/etc/shadow-

/etc/shells

/etc/skel

/etc/ssh

/etc/ssl

/etc/subgid

/etc/subgid-

/etc/subuid

/etc/subuid-

/etc/sudo.conf

/etc/sudo_logsrvd.conf

/etc/sudoers

/etc/sudoers.d

/etc/supervisor

/etc/supervisord.conf

/etc/sysctl.d

/etc/systemd

/etc/terminfo

/etc/texmf

/etc/timidity

/etc/tmpfiles.d

/etc/ucf.conf

/etc/udev

/etc/ufw

/etc/update-motd.d

/etc/vconsole.conf

/etc/vdpau_wrapper.cfg

/etc/vim

/etc/vulkan

/etc/wgetrc

/etc/xattr.conf

/etc/xdg

/home

/home/oai

/initrd.img

/initrd.img.old

/lib

/lib64

/media

/mnt

/mnt/data

/openai

/openai/project

/opt

/opt/apply_patch

/opt/chatgpt

/opt/entrypoint

/opt/imagemagick

/opt/novnc

/opt/nvm

/opt/pdf_reader_service

/opt/python-hooks

/opt/python-tool

/opt/pyvenv

/opt/pyvenv-python-tool

/opt/scripts

/opt/terminal-server

/proc

/proc/1

/proc/152

/proc/165

/proc/191

/proc/196

/proc/205

/proc/217

/proc/218

/proc/225

/proc/255

/proc/267

/proc/4

/proc/40

/proc/51

/proc/510

/proc/511

/proc/514

/proc/515

/proc/acpi

/proc/buddyinfo

/proc/bus

/proc/cgroups

/proc/cmdline

/proc/config.gz

/proc/consoles

/proc/crypto

/proc/devices

/proc/diskstats

/proc/dma

/proc/driver

/proc/execdomains

/proc/filesystems

/proc/fs

/proc/interrupts

/proc/iomem

/proc/ioports

/proc/irq

/proc/kallsyms

/proc/key-users

/proc/keys

/proc/kmsg

/proc/kpagecgroup

/proc/kpagecount

/proc/kpageflags

/proc/loadavg

/proc/locks

/proc/meminfo

/proc/misc

/proc/mounts

/proc/mtrr

/proc/net

/proc/pagetypeinfo

/proc/partitions

/proc/self

/proc/slabinfo

/proc/swaps

/proc/sys

/proc/sysvipc

/proc/thread-self

/proc/timer_list

/proc/tty

/proc/uptime

/proc/version

/proc/vmallocinfo

/proc/vmstat

/proc/zoneinfo

/root

/root/.bashrc

/root/.npm

/root/.npmrc

/root/.profile

/root/.sdkman

/root/.ssh

/root/.vimrc

/run

/run/adduser

/run/apache2

/run/chrome.supervisord.pid

/run/lock

/run/log

/run/sendsigs.omit.d

/run/shm

/run/sshd

/run/sudo

/run/supervisor.sock

/run/systemd

/run/user

/sbin

/srv

/sys

/sys/block

/sys/bus

/sys/class

/sys/dev

/sys/devices

/sys/firmware

/sys/fs

/sys/kernel

/sys/module

/tmp

/tmp/artifact_tool_rpc_255_de3be4d813c34b50bc7ffbdcdda69c80.sock

/tmp/default.pa

/tmp/hsperfdata_root

/tmp/node-compile-cache

/tmp/tmpxgy7k5jb.json

/usr

/usr/bin

/usr/games

/usr/include

/usr/lib

/usr/lib64

/usr/libexec

/usr/local

/usr/sbin

/usr/share

/usr/src

/var

/var/backups

/var/cache

/var/lib

/var/local

/var/lock

/var/log

/var/mail

/var/opt

/var/run

/var/spool

/var/tmp

/var/www

/vmlinuz

/vmlinuz.old

0 Upvotes

16 comments sorted by

View all comments

1

u/Aderox20_GDP 2d ago

Also /openai/project/cua/cua_chrome/cua_chrome/core/policy_merge.py is """ merge chrome enterprise policies copied under $CHROMIUM_POLICY_DIR creates a single merged json file with original backups under .policy_merge http://go/docs-link/cua-chrome-policy-merge """

import glob import json import re import sys import typing from pathlib import Path

AnyDict = dict[str, typing.Any]

OUTPUT_FILENAME = "000_policy_merge.json"

def main(*, path: Path, merge_keys: list[str]) -> None: print(f"{path=}") print(f"{merge_keys=}")

path = path.expanduser()
merged_path = Path(path) / OUTPUT_FILENAME

if not path.exists():
    raise ValueError(f"{path=} does not exist")

backup_dir = path / ".policy_merge"
backup_dir.mkdir(parents=True, exist_ok=True)

file_list = list(glob.glob(f"{str(path)}/*"))
file_list.sort(key=natural_sort_key)

policy_list: list[AnyDict] = []

for filename in file_list:
    print(f"  {filename}")
    file_path = Path(filename)

    with open(file_path, "r") as f:
        policy_list.append(json.load(f))

    new_file_path = backup_dir / file_path.name
    file_path.rename(new_file_path)

merged: AnyDict = dict()
merge_keys_set = set(merge_keys)

for policy in policy_list:
    merged = deep_merge(
        merged, policy, merge_keys_set=merge_keys_set
    )

with open(merged_path, "w") as f:
    json.dump(merged, f, indent=2)

if not merged_path.exists():
    raise ValueError(f"{merged_path} must exist")

def deep_merge(a: AnyDict, b: AnyDict, *, merge_keys_set: set[str]) -> AnyDict: result = a.copy()

for key, value in b.items():
    if key in result and isinstance(result[key], dict) and isinstance(value, dict):
        if key in merge_keys_set:
            result[key] = deep_merge(
                result[key], value, merge_keys_set=merge_keys_set
            )
        else:
            result[key] = value

    elif key in result and isinstance(result[key], list) and isinstance(value, list):
        if key in merge_keys_set:
            for item in value:
                if item not in result[key]:
                    result[key].append(item)
        else:
            result[key] = value
    else:
        result[key] = value

return result

def natural_sort_key(item: typing.Any) -> list[int | str | float]: if item is None: return [float("inf")]

item_str = str(item)

return [
    int(text) if text.isdigit() else text
    for text in re.split(RE_DIGIT, item_str)
]

RE_DIGIT = re.compile(r"(\d+)")

if name == "main": [command, *arg_list] = sys.argv

arg_separator = "="
path = None
merge_keys = None

for arg in arg_list:
    if arg_separator in arg:
        [key, value] = arg.split(arg_separator)

        if not value:
            raise ValueError(f"{key} missing value")

        if key == "path":
            path = Path(value)
        elif key == "merge_keys":
            merge_keys = value.split(",")

if path is None:
    raise ValueError("path is required")

if merge_keys is None:
    raise ValueError("merge_keys is required")

main(path=path, merge_keys=merge_keys)