blob: 7762ea7f0b8a710cc1374d3b5709a7eb5b5c0309 (
plain)
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
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
|
# Remove partners data
remove_partner_storage() {
local partner_storage_dir="/var/lib/yandex/browser"
if [ -d "${partner_storage_dir}" ]; then
rm -rf "${partner_storage_dir}"
fi
}
# Universal partner data processing
process_partner_data() {
local source="$1"
local destination="$2"
local pattern="$3"
if [ -d "$source" ]; then
if find "$source" -maxdepth 1 -type f -name "$pattern" | grep -q .; then
mkdir -p "$destination"
find "$source" -maxdepth 1 -type f -name "$pattern" -exec cp -f {} "$destination/" \;
fi
fi
if [ -f "$source" ]; then
mkdir -p "$(dirname "$destination")"
cp -f "$source" "$destination"
fi
}
# Manage partner data
store_partner_data() {
local base_source="/opt/yandex/browser"
local base_destination="/var/lib/yandex/browser"
# Check for partner settings is present
if [ -f "${base_source}/partner_config" ]; then
# Clear old data
remove_partner_storage
# Directories and files for processing
declare -A partner_items=(
["partner_config"]=""
["distrib_info"]=""
["master_preferences"]=""
["Extensions"]="*.*"
["resources"]="clids*.xml tablo* *.png *.svg"
["resources/wallpapers"]="*"
)
for key in "${!partner_items[@]}"; do
local patterns=${partner_items[$key]}
for pattern in $patterns; do
process_partner_data "$base_source/$key" "$base_destination/$key" "$pattern"
done
done
fi
}
# Manage nss and udev symlinks
manage_symlinks() {
local action="$1"
local files=("libnspr4.so.0d" "libplds4.so.0d" "libplc4.so.0d"
"libssl3.so.1d" "libnss3.so.1d" "libsmime3.so.1d"
"libnssutil3.so.1d")
local libdir="/usr/lib"
for f in "${files[@]}"; do
local target="${libdir}/$(echo $f | sed -e 's/\.[01]d$//')"
local link="/opt/yandex/browser/$f"
if [ "$action" == "create" ]; then
if [ -f "$target" ]; then
ln -snf "$target" "$link"
else
echo "Error: $target not found." >&2
fi
elif [ "$action" == "remove" ]; then
rm -f "$link"
fi
done
}
# Setup chrome-management-service
setup_chrome_management_service() {
local defaults_file="/etc/default/yandex-browser"
local service_path="/opt/yandex/browser/chrome-management-service"
local policies_dir="/etc/opt/yandex/browser/policies/enrollment"
local signing_key_file="${policies_dir}/DeviceTrustSigningKey"
if ! grep -q "install_device_trust_key_management_command=true" "$defaults_file" 2>/dev/null; then
return
fi
if ! getent group chromemgmt >/dev/null; then
groupadd chromemgmt
fi
chgrp chromemgmt "$service_path"
chmod 2755 "$service_path"
mkdir -p "$policies_dir"
if [ ! -f "$signing_key_file" ]; then
touch "$signing_key_file"
fi
chgrp chromemgmt "$signing_key_file"
chmod 664 "$signing_key_file"
}
remove_legacy_files() {
local files=(
"/opt/yandex/browser/partner_config_static"
"/opt/yandex/browser/libffmpeg.so"
"/opt/yandex/browser/libudev.so.0"
)
for file in "${files[@]}"; do
if [ -f "${file}" ]; then
rm -f "${file}"
echo "Removed ${file}"
fi
done
}
post_install() {
#Cleanup
remove_legacy_files
# Setup partner data (if present)
store_partner_data
# Setup chrome-management-service (if activated)
setup_chrome_management_service
# Create nss symlinks
manage_symlinks create
# Install icons
local icons=(16 24 32 48 64 128 256 512)
for size in "${icons[@]}"; do
xdg-icon-resource install --size "$size" "/opt/yandex/browser/product_logo_${size}.png" "yandex-browser"
done
update-desktop-database -q
#Install external ffmpeg library for more compatability
/opt/yandex/browser/update_codecs /opt/yandex/browser || true
}
post_remove() {
# Remove partners data storage
remove_partner_storage
# Remove nss symlinks
manage_symlinks remove
# Remove icons
local icons=(16 24 32 48 64 128 256 512)
for size in "${icons[@]}"; do
xdg-icon-resource uninstall --size "$size" "yandex-browser"
done
update-desktop-database -q
# remove legacy files
remove_legacy_files
}
pre_install() {
:
}
pre_remove() {
:
}
post_upgrade() {
post_install
}
|