posit-dev / posit-dev/rsconnect-python
`rsconnect add server` with --cacert doesn't work with `.der` certs
Personne n'a encore pris cette issue.
- Langage dominant
- Python
- Étoiles
- 37
- Forks
- 28
- Merge moyen
- 1 j 3 h
- PR mergées (30 j)
- 7
Description
Found while testing the --cacert fix, the .der cert never worked right with rsconnect add. We can run deploy and details with the .der certs but cannot rsconnect add.
We added .der support here: https://github.com/rstudio/rsconnect-python/pull/336
> rsconnect add -s https://alwayssecure.rsc:3443 -k {API_KEY} --cacert ~/Downloads/alwayssecure.rsc.der -n alwayssecureder
Detected the following inputs:
name: COMMANDLINE
server: COMMANDLINE
api_key: COMMANDLINE
insecure: DEFAULT
cacert: COMMANDLINE
Checking https://alwayssecure.rsc:3443... [OK]
Checking API key... [OK]
Traceback (most recent call last):
File "/Users/kgartland/.pyenv/versions/rsconnect-tag/bin/rsconnect", line 8, in <module>
sys.exit(cli())
File "/Users/kgartland/.pyenv/versions/3.8.2/envs/rsconnect-tag/lib/python3.8/site-packages/click/core.py", line 1130, in __call__
return self.main(*args, **kwargs)
File "/Users/kgartland/.pyenv/versions/3.8.2/envs/rsconnect-tag/lib/python3.8/site-packages/click/core.py", line 1055, in main
rv = self.invoke(ctx)
File "/Users/kgartland/.pyenv/versions/3.8.2/envs/rsconnect-tag/lib/python3.8/site-packages/click/core.py", line 1657, in invoke
return _process_result(sub_ctx.command.invoke(sub_ctx))
File "/Users/kgartland/.pyenv/versions/3.8.2/envs/rsconnect-tag/lib/python3.8/site-packages/click/core.py", line 1404, in invoke
return ctx.invoke(self.callback, **ctx.params)
File "/Users/kgartland/.pyenv/versions/3.8.2/envs/rsconnect-tag/lib/python3.8/site-packages/click/core.py", line 760, in invoke
return __callback(*args, **kwargs)
File "/Users/kgartland/.pyenv/versions/3.8.2/envs/rsconnect-tag/lib/python3.8/site-packages/rsconnect/main.py", line 169, in wrapper
return func(*args, **kwargs)
File "/Users/kgartland/.pyenv/versions/3.8.2/envs/rsconnect-tag/lib/python3.8/site-packages/click/decorators.py", line 26, in new_func
return f(get_current_context(), *args, **kwargs)
File "/Users/kgartland/.pyenv/versions/3.8.2/envs/rsconnect-tag/lib/python3.8/site-packages/rsconnect/main.py", line 463, in add
server_store.set(
File "/Users/kgartland/.pyenv/versions/3.8.2/envs/rsconnect-tag/lib/python3.8/site-packages/rsconnect/metadata.py", line 303, in set
self._set(name, {**common_data, **target_data})
File "/Users/kgartland/.pyenv/versions/3.8.2/envs/rsconnect-tag/lib/python3.8/site-packages/rsconnect/metadata.py", line 155, in _set
self.save()
File "/Users/kgartland/.pyenv/versions/3.8.2/envs/rsconnect-tag/lib/python3.8/site-packages/rsconnect/metadata.py", line 207, in save
data = json.dumps(self._data, indent=4).encode("utf-8")
File "/Users/kgartland/.pyenv/versions/3.8.2/lib/python3.8/json/__init__.py", line 234, in dumps
return cls(
File "/Users/kgartland/.pyenv/versions/3.8.2/lib/python3.8/json/encoder.py", line 201, in encode
chunks = list(chunks)
File "/Users/kgartland/.pyenv/versions/3.8.2/lib/python3.8/json/encoder.py", line 431, in _iterencode
yield from _iterencode_dict(o, _current_indent_level)
File "/Users/kgartland/.pyenv/versions/3.8.2/lib/python3.8/json/encoder.py", line 405, in _iterencode_dict
yield from chunks
File "/Users/kgartland/.pyenv/versions/3.8.2/lib/python3.8/json/encoder.py", line 405, in _iterencode_dict
yield from chunks
File "/Users/kgartland/.pyenv/versions/3.8.2/lib/python3.8/json/encoder.py", line 438, in _iterencode
o = _default(o)
File "/Users/kgartland/.pyenv/versions/3.8.2/lib/python3.8/json/encoder.py", line 179, in default
raise TypeError(f'Object of type {o.__class__.__name__} '
TypeError: Object of type bytes is not JSON serializable
Guide de contribution
Ouvrir le guide de contribution
Par où commencer
- Lisez l'issue en entier, puis le guide de contribution du projet.
- Signalez en commentaire que vous la prenez — cela évite que deux personnes fassent le même travail.
- Forkez le dépôt et travaillez sur une branche.
- Ouvrez une pull request qui référence le numéro de l'issue.
Piste de recherche
Commencez par la commande add dans rsconnect/main.py, puis suivez server_store.set dans rsconnect/metadata.py, en particulier _set et save. Reproduisez la commande avec un certificat .der et examinez comment la valeur du certificat est stockée. C’est terminé lorsque rsconnect add s’exécute sans l’erreur de sérialisation JSON et que le serveur enregistré peut être utilisé par deploy et details.
Rédigé par le modèle d'indexation à partir du texte de l'issue.
Évaluation
- Stack technique
- python
- Domaine
- cli
- Type d'issue
- Bug
- Difficulté
- 2/5
- Temps estimé
- 1-3 heures
- Activité
- À l'abandon
- Clarté
- Clairement spécifiée
- Accessibilité débutants
- 38/100