summarylogtreecommitdiffstats
path: root/yandex-browser.install
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
}