(self, to, key, value)
| 1169 | @flag.admin |
| 1170 | @flag.no_multiuser |
| 1171 | def actionConfigSet(self, to, key, value): |
| 1172 | import main |
| 1173 | if key not in config.keys_api_change_allowed: |
| 1174 | self.response(to, {"error": "Forbidden: You cannot set this config key"}) |
| 1175 | return |
| 1176 | |
| 1177 | if key == "open_browser": |
| 1178 | if value not in ["default_browser", "False"]: |
| 1179 | self.response(to, {"error": "Forbidden: Invalid value"}) |
| 1180 | return |
| 1181 | |
| 1182 | # Remove empty lines from lists |
| 1183 | if type(value) is list: |
| 1184 | value = [line for line in value if line] |
| 1185 | |
| 1186 | config.saveValue(key, value) |
| 1187 | |
| 1188 | if key not in config.keys_restart_need: |
| 1189 | if value is None: # Default value |
| 1190 | setattr(config, key, config.parser.get_default(key)) |
| 1191 | setattr(config.arguments, key, config.parser.get_default(key)) |
| 1192 | else: |
| 1193 | setattr(config, key, value) |
| 1194 | setattr(config.arguments, key, value) |
| 1195 | else: |
| 1196 | config.need_restart = True |
| 1197 | config.pending_changes[key] = value |
| 1198 | |
| 1199 | if key == "language": |
| 1200 | import Translate |
| 1201 | for translate in Translate.translates: |
| 1202 | translate.setLanguage(value) |
| 1203 | message = _["You have successfully changed the web interface's language!"] + "<br>" |
| 1204 | message += _["Due to the browser's caching, the full transformation could take some minute."] |
| 1205 | self.cmd("notification", ["done", message, 10000]) |
| 1206 | |
| 1207 | if key == "tor_use_bridges": |
| 1208 | if value is None: |
| 1209 | value = False |
| 1210 | else: |
| 1211 | value = True |
| 1212 | tor_manager = main.file_server.tor_manager |
| 1213 | tor_manager.request("SETCONF UseBridges=%i" % value) |
| 1214 | |
| 1215 | if key == "trackers_file": |
| 1216 | config.loadTrackersFile() |
| 1217 | |
| 1218 | if key == "log_level": |
| 1219 | logging.getLogger('').setLevel(logging.getLevelName(config.log_level)) |
| 1220 | |
| 1221 | if key == "ip_external": |
| 1222 | gevent.spawn(main.file_server.portCheck) |
| 1223 | |
| 1224 | if key == "offline": |
| 1225 | if value: |
| 1226 | main.file_server.closeConnections() |
| 1227 | else: |
| 1228 | gevent.spawn(main.file_server.checkSites, check_files=False, force_port_check=True) |
nothing calls this directly
no test coverage detected