FreeBSD Bugzilla – Attachment 178559 Details for
Bug 215804
[NEW PORT] security/morphis: Peer-to-peer high-performance distributed datastore and mail
Home
|
New
|
Browse
|
Search
|
[?]
|
Reports
|
Help
|
New Account
|
Log In
Remember
[x]
|
Forgot Password
Login:
[x]
shar archive
morphis.shar (text/plain), 16.46 KB, created by
Yuri Victorovich
on 2017-01-05 20:43:40 UTC
(
hide
)
Description:
shar archive
Filename:
MIME Type:
Creator:
Yuri Victorovich
Created:
2017-01-05 20:43:40 UTC
Size:
16.46 KB
patch
obsolete
># This is a shell archive. Save it in a file, remove anything before ># this line, and then unpack it by entering "sh file". Note, it may ># create directories; files and directories will be owned by you and ># have default permissions. ># ># This archive contains: ># ># security/morphis ># security/morphis/Makefile ># security/morphis/distinfo ># security/morphis/pkg-descr ># security/morphis/pkg-plist ># security/morphis/files ># security/morphis/files/morphis-cmd.in ># security/morphis/files/morphis-service.in ># security/morphis/files/pkg-message.in ># >echo c - security/morphis >mkdir -p security/morphis > /dev/null 2>&1 >echo x - security/morphis/Makefile >sed 's/^X//' >security/morphis/Makefile << '9fc5bc5f5f561a7c2046d560db28d84e' >X# Created by: Yuri Victorovich <yuri@rawbw.com> >X# $FreeBSD$ >X >XPORTNAME= morphis >XPORTVERSION= 0.8.18.6 >XDISTVERSIONPREFIX= v >XCATEGORIES= security net-p2p >X >XMAINTAINER= yuri@rawbw.com >XCOMMENT= Peer-to-peer high-performance distributed datastore and mail >X >XLICENSE= GPLv2 >XLICENSE_FILE= ${WRKSRC}/LICENSE >X >XRUN_DEPENDS= ${PYTHON_PKGNAMEPREFIX}pycrypto>0:security/py-pycrypto \ >X ${PYTHON_PKGNAMEPREFIX}sqlalchemy11>0:databases/py-sqlalchemy11 >X >XUSE_GITHUB= yes >XGH_ACCOUNT= yurivict >X >XSUB_FILES= morphis-service morphis-cmd pkg-message >XSUB_LIST= LOCALBASE=${LOCALBASE} USER=${USER} GROUP=${GROUP} >XPLIST_SUB= USER=${USER} GROUP=${GROUP} >X >XUSES= python:3.4+ >XNO_ARCH= yes >X >X.include <bsd.port.pre.mk> >X >X.if defined(PACKAGE_BUILDING) && ${PYTHON_VER} != ${PYTHON_DEFAULT} >XIGNORE= you have python ${PYTHON_DEFAULT} set as the default, and this needs ${PYTHON_VER} >X.endif >X >XUSER= nobody >XGROUP= nobody >X >Xdo-build: >X @(cd ${WRKSRC} && \ >X ${PYTHON_CMD} ${PYTHON_LIBDIR}/compileall.py \ >X -d ${WRKSRC} -f ${WRKSRC} && \ >X ${PYTHON_CMD} -O ${PYTHON_LIBDIR}/compileall.py \ >X -d ${WRKSRC} -f ${WRKSRC}) >Xdo-install: >X @${MKDIR} ${STAGEDIR}${DATADIR} >X @${CP} -R ${WRKSRC}/* ${STAGEDIR}${DATADIR}/ >X @cd ${STAGEDIR}${DATADIR} && ${RM} Makefile LICENSE README RUNNING TODO-* >X @${MKDIR} ${STAGEDIR}/var/db/morphis >X @${LN} -s /var/db/morphis ${STAGEDIR}${DATADIR}/data >X ${INSTALL_SCRIPT} ${WRKDIR}/morphis-cmd ${STAGEDIR}${PREFIX}/bin/morphis >X ${INSTALL_SCRIPT} ${WRKDIR}/morphis-service ${STAGEDIR}${PREFIX}/etc/rc.d/morphis >X >X.include <bsd.port.post.mk> >9fc5bc5f5f561a7c2046d560db28d84e >echo x - security/morphis/distinfo >sed 's/^X//' >security/morphis/distinfo << '2e0dbc4ec274cf043bd6f2e6ccc5d580' >XTIMESTAMP = 1483641216 >XSHA256 (yurivict-morphis-v0.8.18.6_GH0.tar.gz) = 88fcf9d48a98e57e4ea5661ae2ad05c70998479918e8abade9c71eef281cf96e >XSIZE (yurivict-morphis-v0.8.18.6_GH0.tar.gz) = 184296 >2e0dbc4ec274cf043bd6f2e6ccc5d580 >echo x - security/morphis/pkg-descr >sed 's/^X//' >security/morphis/pkg-descr << '1c2cf425175a5ff668d73aee1a2e1a99' >XMORPHiS is a global encrypted distributed datastore intended to replace the >Xcloud for storage and far more. This first release also includes DMAIL >X(distributed mail), inherently spam resistant, inherently encrypted, >Xuncensorable, free distributed messaging. >X >XWWW: https://morph.is >1c2cf425175a5ff668d73aee1a2e1a99 >echo x - security/morphis/pkg-plist >sed 's/^X//' >security/morphis/pkg-plist << '31d3c8a8144c9228c588e629c0ebe905' >Xbin/morphis >Xetc/rc.d/morphis >X%%DATADIR%%/data >X%%DATADIR%%/CONTRIBUTORS >X%%DATADIR%%/CREDITS >X%%DATADIR%%/VERSION >X%%DATADIR%%/__pycache__/asymkey.cpython-35.opt-1.pyc >X%%DATADIR%%/__pycache__/asymkey.cpython-35.pyc >X%%DATADIR%%/__pycache__/base58.cpython-35.opt-1.pyc >X%%DATADIR%%/__pycache__/base58.cpython-35.pyc >X%%DATADIR%%/__pycache__/bittrie.cpython-35.opt-1.pyc >X%%DATADIR%%/__pycache__/bittrie.cpython-35.pyc >X%%DATADIR%%/__pycache__/brute.cpython-35.opt-1.pyc >X%%DATADIR%%/__pycache__/brute.cpython-35.pyc >X%%DATADIR%%/__pycache__/chord.cpython-35.opt-1.pyc >X%%DATADIR%%/__pycache__/chord.cpython-35.pyc >X%%DATADIR%%/__pycache__/chord_packet.cpython-35.opt-1.pyc >X%%DATADIR%%/__pycache__/chord_packet.cpython-35.pyc >X%%DATADIR%%/__pycache__/chord_tasks.cpython-35.opt-1.pyc >X%%DATADIR%%/__pycache__/chord_tasks.cpython-35.pyc >X%%DATADIR%%/__pycache__/chordexception.cpython-35.opt-1.pyc >X%%DATADIR%%/__pycache__/chordexception.cpython-35.pyc >X%%DATADIR%%/__pycache__/client.cpython-35.opt-1.pyc >X%%DATADIR%%/__pycache__/client.cpython-35.pyc >X%%DATADIR%%/__pycache__/client_engine.cpython-35.opt-1.pyc >X%%DATADIR%%/__pycache__/client_engine.cpython-35.pyc >X%%DATADIR%%/__pycache__/consts.cpython-35.opt-1.pyc >X%%DATADIR%%/__pycache__/consts.cpython-35.pyc >X%%DATADIR%%/__pycache__/db.cpython-35.opt-1.pyc >X%%DATADIR%%/__pycache__/db.cpython-35.pyc >X%%DATADIR%%/__pycache__/dhgroup14.cpython-35.opt-1.pyc >X%%DATADIR%%/__pycache__/dhgroup14.cpython-35.pyc >X%%DATADIR%%/__pycache__/dmail.cpython-35.opt-1.pyc >X%%DATADIR%%/__pycache__/dmail.cpython-35.pyc >X%%DATADIR%%/__pycache__/dsskey.cpython-35.opt-1.pyc >X%%DATADIR%%/__pycache__/dsskey.cpython-35.pyc >X%%DATADIR%%/__pycache__/enc.cpython-35.opt-1.pyc >X%%DATADIR%%/__pycache__/enc.cpython-35.pyc >X%%DATADIR%%/__pycache__/hashbench.cpython-35.opt-1.pyc >X%%DATADIR%%/__pycache__/hashbench.cpython-35.pyc >X%%DATADIR%%/__pycache__/kex.cpython-35.opt-1.pyc >X%%DATADIR%%/__pycache__/kex.cpython-35.pyc >X%%DATADIR%%/__pycache__/kexdhgroup14sha1.cpython-35.opt-1.pyc >X%%DATADIR%%/__pycache__/kexdhgroup14sha1.cpython-35.pyc >X%%DATADIR%%/__pycache__/llog.cpython-35.opt-1.pyc >X%%DATADIR%%/__pycache__/llog.cpython-35.pyc >X%%DATADIR%%/__pycache__/mbase32.cpython-35.opt-1.pyc >X%%DATADIR%%/__pycache__/mbase32.cpython-35.pyc >X%%DATADIR%%/__pycache__/mcc.cpython-35.opt-1.pyc >X%%DATADIR%%/__pycache__/mcc.cpython-35.pyc >X%%DATADIR%%/__pycache__/mn1.cpython-35.opt-1.pyc >X%%DATADIR%%/__pycache__/mn1.cpython-35.pyc >X%%DATADIR%%/__pycache__/multipart.cpython-35.opt-1.pyc >X%%DATADIR%%/__pycache__/multipart.cpython-35.pyc >X%%DATADIR%%/__pycache__/mutil.cpython-35.opt-1.pyc >X%%DATADIR%%/__pycache__/mutil.cpython-35.pyc >X%%DATADIR%%/__pycache__/node.cpython-35.opt-1.pyc >X%%DATADIR%%/__pycache__/node.cpython-35.pyc >X%%DATADIR%%/__pycache__/packet.cpython-35.opt-1.pyc >X%%DATADIR%%/__pycache__/packet.cpython-35.pyc >X%%DATADIR%%/__pycache__/peer.cpython-35.opt-1.pyc >X%%DATADIR%%/__pycache__/peer.cpython-35.pyc >X%%DATADIR%%/__pycache__/putil.cpython-35.opt-1.pyc >X%%DATADIR%%/__pycache__/putil.cpython-35.pyc >X%%DATADIR%%/__pycache__/rsakey.cpython-35.opt-1.pyc >X%%DATADIR%%/__pycache__/rsakey.cpython-35.pyc >X%%DATADIR%%/__pycache__/setup.cpython-35.opt-1.pyc >X%%DATADIR%%/__pycache__/setup.cpython-35.pyc >X%%DATADIR%%/__pycache__/setup_all.cpython-35.opt-1.pyc >X%%DATADIR%%/__pycache__/setup_all.cpython-35.pyc >X%%DATADIR%%/__pycache__/shell.cpython-35.opt-1.pyc >X%%DATADIR%%/__pycache__/shell.cpython-35.pyc >X%%DATADIR%%/__pycache__/sshexception.cpython-35.opt-1.pyc >X%%DATADIR%%/__pycache__/sshexception.cpython-35.pyc >X%%DATADIR%%/__pycache__/sshtype.cpython-35.opt-1.pyc >X%%DATADIR%%/__pycache__/sshtype.cpython-35.pyc >X%%DATADIR%%/asymkey.py >X%%DATADIR%%/base58.py >X%%DATADIR%%/bittrie.py >X%%DATADIR%%/brute.py >X%%DATADIR%%/build.sh >X%%DATADIR%%/chord.py >X%%DATADIR%%/chord_packet.py >X%%DATADIR%%/chord_tasks.py >X%%DATADIR%%/chordexception.py >X%%DATADIR%%/client.py >X%%DATADIR%%/client_engine.py >X%%DATADIR%%/consts.py >X%%DATADIR%%/contrib/morphisd/COPYING >X%%DATADIR%%/contrib/morphisd/README.md >X%%DATADIR%%/contrib/morphisd/etc/default/morphisd >X%%DATADIR%%/contrib/morphisd/opt/morphis/morphisd >X%%DATADIR%%/contrib/morphisd/opt/morphis/setargv >X%%DATADIR%%/contrib/morphisd/usr/lib/systemd/system/morphisd.service >X%%DATADIR%%/db.py >X%%DATADIR%%/dev_cluster.sh >X%%DATADIR%%/dev_node.sh >X%%DATADIR%%/dhgroup14.py >X%%DATADIR%%/dmail.py >X%%DATADIR%%/dsskey.py >X%%DATADIR%%/enc.py >X%%DATADIR%%/exceptions/20150716-01.txt >X%%DATADIR%%/favicon.ico >X%%DATADIR%%/hashbench.py >X%%DATADIR%%/kex.py >X%%DATADIR%%/kexdhgroup14sha1.py >X%%DATADIR%%/llog.py >X%%DATADIR%%/logging-debug.ini >X%%DATADIR%%/logging-info.ini >X%%DATADIR%%/logging-ms.ini >X%%DATADIR%%/logging-prod.ini >X%%DATADIR%%/logging-warn.ini >X%%DATADIR%%/logging.ini >X%%DATADIR%%/lots-bulk.sh >X%%DATADIR%%/lots.sh >X%%DATADIR%%/maalstroom/__init__.py >X%%DATADIR%%/maalstroom/__pycache__/__init__.cpython-35.opt-1.pyc >X%%DATADIR%%/maalstroom/__pycache__/__init__.cpython-35.pyc >X%%DATADIR%%/maalstroom/__pycache__/dispatcher.cpython-35.opt-1.pyc >X%%DATADIR%%/maalstroom/__pycache__/dispatcher.cpython-35.pyc >X%%DATADIR%%/maalstroom/__pycache__/dmail.cpython-35.opt-1.pyc >X%%DATADIR%%/maalstroom/__pycache__/dmail.cpython-35.pyc >X%%DATADIR%%/maalstroom/__pycache__/templates.cpython-35.opt-1.pyc >X%%DATADIR%%/maalstroom/__pycache__/templates.cpython-35.pyc >X%%DATADIR%%/maalstroom/dispatcher.py >X%%DATADIR%%/maalstroom/dmail.py >X%%DATADIR%%/maalstroom/resources/images/dmail/add_address.png >X%%DATADIR%%/maalstroom/resources/images/dmail/addressbook.png >X%%DATADIR%%/maalstroom/resources/images/dmail/addressbook_blue.png >X%%DATADIR%%/maalstroom/resources/images/dmail/addressbook_grey.png >X%%DATADIR%%/maalstroom/resources/images/dmail/bullet.png >X%%DATADIR%%/maalstroom/resources/images/dmail/bullet_white.png >X%%DATADIR%%/maalstroom/resources/images/dmail/compose_blue.png >X%%DATADIR%%/maalstroom/resources/images/dmail/compose_white.png >X%%DATADIR%%/maalstroom/resources/images/dmail/divider.gif >X%%DATADIR%%/maalstroom/resources/images/dmail/draft.png >X%%DATADIR%%/maalstroom/resources/images/dmail/draft_white.png >X%%DATADIR%%/maalstroom/resources/images/dmail/gradient.jpg >X%%DATADIR%%/maalstroom/resources/images/dmail/inbox.png >X%%DATADIR%%/maalstroom/resources/images/dmail/inbox_new.png >X%%DATADIR%%/maalstroom/resources/images/dmail/inbox_white.png >X%%DATADIR%%/maalstroom/resources/images/dmail/list_addresses.png >X%%DATADIR%%/maalstroom/resources/images/dmail/logo.png >X%%DATADIR%%/maalstroom/resources/images/dmail/mail_icon.png >X%%DATADIR%%/maalstroom/resources/images/dmail/mail_icon2.png >X%%DATADIR%%/maalstroom/resources/images/dmail/read.png >X%%DATADIR%%/maalstroom/resources/images/dmail/refresh.png >X%%DATADIR%%/maalstroom/resources/images/dmail/reply_blue.png >X%%DATADIR%%/maalstroom/resources/images/dmail/reply_dk.png >X%%DATADIR%%/maalstroom/resources/images/dmail/reply_icon.png >X%%DATADIR%%/maalstroom/resources/images/dmail/reply_icon_new.png >X%%DATADIR%%/maalstroom/resources/images/dmail/reply_purp.png >X%%DATADIR%%/maalstroom/resources/images/dmail/reply_white.png >X%%DATADIR%%/maalstroom/resources/images/dmail/save.png >X%%DATADIR%%/maalstroom/resources/images/dmail/save_blue.png >X%%DATADIR%%/maalstroom/resources/images/dmail/save_dk.png >X%%DATADIR%%/maalstroom/resources/images/dmail/save_purp.png >X%%DATADIR%%/maalstroom/resources/images/dmail/save_white.png >X%%DATADIR%%/maalstroom/resources/images/dmail/send.png >X%%DATADIR%%/maalstroom/resources/images/dmail/send_blue.png >X%%DATADIR%%/maalstroom/resources/images/dmail/send_dk.png >X%%DATADIR%%/maalstroom/resources/images/dmail/send_purp.png >X%%DATADIR%%/maalstroom/resources/images/dmail/send_white.png >X%%DATADIR%%/maalstroom/resources/images/dmail/sent.png >X%%DATADIR%%/maalstroom/resources/images/dmail/sent_white.png >X%%DATADIR%%/maalstroom/resources/images/dmail/settings.png >X%%DATADIR%%/maalstroom/resources/images/dmail/stripe.png >X%%DATADIR%%/maalstroom/resources/images/dmail/tags.png >X%%DATADIR%%/maalstroom/resources/images/dmail/tags_white.png >X%%DATADIR%%/maalstroom/resources/images/dmail/trash.png >X%%DATADIR%%/maalstroom/resources/images/dmail/trash_blue.png >X%%DATADIR%%/maalstroom/resources/images/dmail/trash_dk.png >X%%DATADIR%%/maalstroom/resources/images/dmail/trash_icon.png >X%%DATADIR%%/maalstroom/resources/images/dmail/trash_icon_new.png >X%%DATADIR%%/maalstroom/resources/images/dmail/trash_white.png >X%%DATADIR%%/maalstroom/resources/images/dmail/trash_white_in.png >X%%DATADIR%%/maalstroom/resources/images/dmail/unread.png >X%%DATADIR%%/maalstroom/resources/style.css >X%%DATADIR%%/maalstroom/templates.py >X%%DATADIR%%/maalstroom/templates/dmail/address_config.html >X%%DATADIR%%/maalstroom/templates/dmail/address_list.html >X%%DATADIR%%/maalstroom/templates/dmail/address_list_row.html >X%%DATADIR%%/maalstroom/templates/dmail/aside.html >X%%DATADIR%%/maalstroom/templates/dmail/compose.html >X%%DATADIR%%/maalstroom/templates/dmail/create_address.html >X%%DATADIR%%/maalstroom/templates/dmail/logo.html >X%%DATADIR%%/maalstroom/templates/dmail/msg_list.html >X%%DATADIR%%/maalstroom/templates/dmail/msg_list_list_end.html >X%%DATADIR%%/maalstroom/templates/dmail/msg_list_list_row.html >X%%DATADIR%%/maalstroom/templates/dmail/msg_list_list_start.html >X%%DATADIR%%/maalstroom/templates/dmail/nav.html >X%%DATADIR%%/maalstroom/templates/dmail/new_mail.html >X%%DATADIR%%/maalstroom/templates/dmail/page_wrapper.html >X%%DATADIR%%/maalstroom/templates/dmail/read.html >X%%DATADIR%%/maalstroom/templates/main/combined_upload.html >X%%DATADIR%%/mbase32.py >X%%DATADIR%%/mcc.py >X%%DATADIR%%/mn1.py >X%%DATADIR%%/multipart.py >X%%DATADIR%%/mutil.py >X%%DATADIR%%/node.py >X%%DATADIR%%/old/__pycache__/n1.cpython-35.opt-1.pyc >X%%DATADIR%%/old/__pycache__/n1.cpython-35.pyc >X%%DATADIR%%/old/__pycache__/node.cpython-35.opt-1.pyc >X%%DATADIR%%/old/__pycache__/node.cpython-35.pyc >X%%DATADIR%%/old/__pycache__/server_test.cpython-35.opt-1.pyc >X%%DATADIR%%/old/__pycache__/server_test.cpython-35.pyc >X%%DATADIR%%/old/n1.py >X%%DATADIR%%/old/node.py >X%%DATADIR%%/old/server_test.py >X%%DATADIR%%/packet.py >X%%DATADIR%%/peer.py >X%%DATADIR%%/putil.py >X%%DATADIR%%/rsakey.py >X%%DATADIR%%/run.sh >X%%DATADIR%%/setup.py >X%%DATADIR%%/setup_all.py >X%%DATADIR%%/shell.py >X%%DATADIR%%/sshexception.py >X%%DATADIR%%/sshtype.py >X%%DATADIR%%/test_100n.sh >X%%DATADIR%%/upload_page.html >X@owner %%USER%% >X@group %%GROUP%% >X@dir /var/db/morphis >31d3c8a8144c9228c588e629c0ebe905 >echo c - security/morphis/files >mkdir -p security/morphis/files > /dev/null 2>&1 >echo x - security/morphis/files/morphis-cmd.in >sed 's/^X//' >security/morphis/files/morphis-cmd.in << 'dc0709e370812992eb2be3572750b577' >X#!/bin/sh >X >Xcd %%LOCALBASE%%/share/morphis && su -m %%USER%% -c "./run.sh $@" >dc0709e370812992eb2be3572750b577 >echo x - security/morphis/files/morphis-service.in >sed 's/^X//' >security/morphis/files/morphis-service.in << 'b91e75e68df4a5721a484a9d493ef781' >X#!/bin/sh >X# >X# $FreeBSD$ >X# >X >X# Copyright (C) 2016 by Yuri Victorovich. All rights reserved. >X >X# PROVIDE: morphis >X# REQUIRE: NETWORKING SERVERS tor >X# KEYWORD: shutdown >X >X# morphis is disabled by default, if you have configuration file >X# >X# Add the following line to /etc/rc.conf to enable morphis: >X# >X#morphis_enable="YES" >X >X. /etc/rc.subr >X >X >Xname="morphis" >Xrcvar=morphis_enable >Xstart_cmd="morphis_start" >Xstop_cmd="morphis_stop" >Xstatus_cmd="morphis_status" >X >Xload_rc_config ${name} >X >X: ${morphis_enable="NO"} >X: ${morphis_args=""} >X >Xis_process_running() { >X local pidfile=$1 >X [ -f $pidfile ] && procstat `cat $pidfile` >/dev/null 2>&1 >X} >X >Xstop_daemon() { >X # assume PID is also PGID (daemon(8) PID is always PGID) >X [ -f "$1" ] && kill -- -$(cat $1) >X} >X >Xmorphis_start() { >X local logfile=/var/log/morphis.log >X local pidfile=/var/run/morphis.pid >X # already running? >X if is_process_running $pidfile; then >X echo "morphis is already running (pid=$(cat $pidfile))" >X return 1 >X fi >X # log file >X touch $logfile >X chmod 640 $logfile >X # user depends on the port option, so better force it on directories to avoid user confusion >X chown -R %%USER%%:%%GROUP%% /var/db/morphis >X # run >X cd %%LOCALBASE%%/share/morphis >X /usr/sbin/daemon -P $pidfile -u %%USER%% %%LOCALBASE%%/share/morphis/run.sh ${morphis_args} >>$logfile 2>&1 >X # make sure it runs >X if is_process_running $pidfile; then >X echo "started morphis (pid=$(cat $pidfile))" >X else >X echo "failed to start morphis" >X fi >X} >X >Xmorphis_stop() { >X local pidfile=/var/run/morphis.pid >X if is_process_running $pidfile; then >X echo "stopping morphis (pid=$(cat $pidfile))" >X stop_daemon $pidfile >X else >X echo "morphis isn't running" >X fi >X} >X >Xmorphis_status() { >X local pidfile=/var/run/morphis.pid >X if is_process_running $pidfile; then >X echo "morphis is running, pid=$(cat $pidfile)" >X else >X echo "morphis isn't running" >X fi >X} >X >Xcommand="/usr/bin/true" >X >Xrun_rc_command "$1" >b91e75e68df4a5721a484a9d493ef781 >echo x - security/morphis/files/pkg-message.in >sed 's/^X//' >security/morphis/files/pkg-message.in << '88dc946427131ea88c0ff3be5228770b' >X====================================================================== >XYou installed MORPHiS: Secure decentralized data store and mail. >X >XIt is recommended to run MORPHiS as a service: >X# sysrc morphis_enable="YES" >X# service morphis start >X >XTo access MORPHiS please navigate to: >Xhttp://localhost:4251 >X >XYou can also run MORPHiS manually (not recommended) with the command: >X# su -m %%USER%% -c morphis >X====================================================================== >88dc946427131ea88c0ff3be5228770b >exit >
You cannot view the attachment while viewing its details because your browser does not support IFRAMEs.
View the attachment on a separate page
.
View Attachment As Raw
Actions:
View
Attachments on
bug 215804
:
178551
|
178552
|
178559
|
178562